アルゴル

アルゴル

をロードするとbc数学ライブラリ三角関数s()とが得られc()a()それぞれ正弦、余弦、逆正接です。なぜこの 3 つの関数が必要なのでしょうか?

数学的な観点から、なぜこの3つなのかはわかっています。それは、直交座標と極座標を直接変換する必要があるからです。私は数学の教師ですが、残念ながら、正弦/余弦/逆正接が次の3つとして確立されているのを見たのはここだけです。原生的三角関数について誰か教えてほしいですなぜもっと歴史的な文脈で。よく分からないが、数学の教育者と、なぜ学生に正接よりも先に逆正接を紹介することが冒涜的な考えではないのかについて話すときに、私は主に弾薬を必要とする。

答え1

完全な答えではありませんが、多少は役に立つかもしれません。

初期の適応における三角関数の使用例のリストです。また、UNIX の世界についても紹介します。


アルゴル

歴史に関する興味深い論文:

ALGOLは1950年代に開発されました。1958年にヨーロッパとアメリカのコンピュータ科学者の合同会議で、国際アルゴリズム言語に関する予備報告書別名チューリッヒ報告。当時の作業は、コンピューターの表記法とアルゴリズムの記述方法を統一することでした。58年の報告書からの抜粋いくつかの議論その点に関しては:

「関数を指定する識別子は、変数の場合と同様に、好みに応じて選択できます。ただし、特定の識別子は分析の標準関数用に予約する必要があります。

この予約リストには次の内容が含まれている必要があります。

abs (E) は式 E の値の絶対値です。
Eの値の符号を表す符号(E)
全体(E)はEの値を超えない最大の整数である
sqrt (E) は E の値の平方根です
sin (E) は E の値の正弦
一般的な数学表記に従って、以下同様に記述します。」


ALGOL 58 から ALGOL 60 が生まれ、そこでは三角関数に関して何を基本とすべきかがより具体的になっていると言えるかもしれません。

http://web.eecs.umich.edu/~bchandra/courses/papers/Naure_Algol60.pdf より

アルゴリズム言語ALGOL 60に関するレポート

つまり、 、 を標準機能として推奨sincosますarctan


アルゴ

デジタル時代に数学を実行する設備を見ると、初期のマシンの 1 つに Bendix G-15 コンピュータ (1950 年代後半) があります。これは ALGOL 58 の影響を受けた ALGO を使用しています。このコンピュータには、Algo システムの一部ではないライブラリがあります。ライブラリ内のルーチンは次のとおりです。SIN、、COS:ARCTN

ALGO ライブラリルーチン

これらのルーチンを使用するには、コード ワードを使用してロードします。

SIN    0101000
COS    0168000
ARCTN  0164000

たとえば次のようにロードされます:

LIBRAry SIN{0101000}

書かれているように

「マシン言語ルーチンをライブラリに追加できます。」ですが、この 3 つがライブラリに含まれていました。(16 進数には 6 進数も使用しますが、ここでは重要ではありませんが、面白いです。)


ユニックス

バージョン 1UNIXを含むbas、basicの方言 (Thompson 所有)。次の組み込み関数が含まれていました: arg、、、、、、、、、および。explogsincosatnrndexprint

バージョン2もありましたが、basさらに、、、(正弦/余弦)などのサブルーチンのリストも見つかりましたatan。また、 にもバンドルされていましhypotた。logsindc

もありますbcが、それは B プログラムをコンパイルするためのものでした。

他に言及する価値があるのは、ttt(三目並べ)、bj(ブラックジャック)、moo(MOO ゲーム) です。

バージョン 5などのソースコードを見たい場合はsin/cosatan例えばこのコードを見てください:

  • サブルーチン:usr/source/s3/{atan.s,sin.s}
  • BASIC 組み込み:usr/source/s1/bas4.s

注意!例えば1972-stuff(s2)のアーカイブには絶対パス!


V7 にある mathlib が拡張され、tanなどが含まれるようになりました。

Fortran77も含まれます。


紀元前

BC は 1975 年に誕生し、質問で指摘されているように、これら 3 つの基本的なメソッドも含まれています。Robert Morris と Lorinda Cherry によって開発されました。V6/usr/doc/bc/bcリリース (1975) より:

3.コマンドレベルで入力することで取得できる数学関数のライブラリがあります。

bc –l

このコマンドは、執筆時点では正弦 (`s')、余弦 (`c')、逆正接 (`a')、自然対数 (`l')、指数 (`e')、および整数次ベッセル関数 (`j(n,x)') で構成されるライブラリ関数のセットをロードします。今後さらに多くの関数が追加されるでしょう。ライブラリはスケールを 20 に設定します。必要に応じて、別の値にリセットできます。これらの数学ライブラリ ルーチンの設計については、別の場所で説明されています[4]

  • [4]ロバート・モリス参照標準数学サブルーチンのライブラリ、

その論文しかし、見つけるのはかなり難しいようです。

したがって、リストからは、基本的な三角関数はバージョン 1 の時点ですでにシステムの一部であったことがわかります。bcロード ルーチンでこれらを利用しました。


Unix Heritage Wiki からのメモ(cc)

ロバート・モリス

Life with Unix はこう言っています: Lorinda Cherry と一緒に dc and be を書きました。

Research Unix の読者はこう言っています。「ボブ (ロバート) モリスは、数値解析や数論など、数学が関わるあらゆるところに参入しました。ボブは、非常に独創的なユーティリティを発明しました。typoそしてdcbc(ロリンダ チェリーと)数学ライブラリの大部分を執筆した、素数と因数(トンプソンと共著)を執筆しました。彼の一連の暗号プログラムは、センターの暗号学への継続的な関心を育みました。

ロリンダ・チェリー

Life with Unix によると: Writer's Workbench の Writer (語彙、スタイルなど)、be、dc。eqnで書きましたbwk

Research Unix Reader のコメント: Lorinda L. Cherry は、Morris とdc-bcおよびで共同作業を行いましたtypo。テキスト処理に常に興味を持っていた Lorinda はeqn、有名な Writer's Workbench®、ww6(v8) で利用された近似パーサーである parts を考案し、発明しました。


エリオット 803

もちろん、より多くの機能を実装したシステムがないわけではなく、あるいは、これらの機能をコア機能として持っていなかったのかもしれません。しかし、それは過去の話です... :P

エリオット 803 追加

エリオット 803 追加:

arccos、、arcsin-tanこれらはsin、、cosへの追加arctan


フォートラン

フォートラン1958


ベーシック

1964年生まれのBASICにはSIN、、COSTANそして ATN

基本的な三角関数

BASICマニュアル(1964年)

コメントによるとロイマ

家庭用コンピュータで使用されている BASIC のほとんどの方言 (1975 年頃以降) にも、SIN、COS、TAN、ATN (逆正接) がありました。他の逆関数はありません。これらの三角関数はすべて、かなり小さなルックアップ テーブルを介して生成されたため、SIN/COS を使用する場合の誤差範囲を最小限に抑えるために TAN が含まれていたと考えられます。

アポロ11号

アポロ11号の司令船および月着陸船のソースコード少なくともサブルーチンがあったことを示すARCTAN

彼らはサブルーチンなしで月面着陸に成功したと主張することもできますTAN;)

コーディック

CORDIC (Volder のアルゴリズム)三角関数の実装に関しては、注目すべき点です。


統計

興味深い追加@スティーブン・キットコメントより:

もう一つの興味深い論文はコンピュータセンターライブラリの数学サブルーチンの使用に関する統計1973年に出版された論文によると、1973年初頭のパーデュー大学では、三角関数として sin / cos / atan が最もよく使われており、tan / asin / acos / tanh よりかなり上位であった。:

sin  / cos    39,462
atan          27,248

tan            4,707
asin / acos    4,139
tanh           2,546

ダイビング

ではないディープダイブ、しかし、少なくともこの主題についてもう少し詳しく述べられています。ALGOL の論文はおそらく最も的を射ています。

BCに関しては直接引用が見つからないMorris / Cherry は、オプションでライブラリからロードしてこれらの特定の基本関数を含めることを決定しました-l


つまり、それは欲しいたとえばtan、履歴を見ると、リソースと使用を考慮して、どの三角関数がベースとして実装するために選択されたかがわかります。

関連情報