をロードすると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 が生まれ、そこでは三角関数に関して何を基本とすべきかがより具体的になっていると言えるかもしれません。
つまり、 、 を標準機能として推奨sin
しcos
ますarctan
。
アルゴ
デジタル時代に数学を実行する設備を見ると、初期のマシンの 1 つに Bendix G-15 コンピュータ (1950 年代後半) があります。これは ALGOL 58 の影響を受けた ALGO を使用しています。このコンピュータには、Algo システムの一部ではないライブラリがあります。ライブラリ内のルーチンは次のとおりです。SIN
、、COS
:ARCTN
- ALGO マニュアル–取扱説明書
- プログラマー向けリファレンスマニュアル(G15D - 補足:ビット、バイト、ワードがどのようにグループ化されるか、そして磁気ドラムRAMとして)
- プログラムとサブルーチンたとえば、を使用して
arcsine
と を計算するルーチンがあります。(ルーチン カードの日付は 1957 年なので、何らかの予備実験の一部であったかどうかはわかりません。)arccosine
arctan
これらのルーチンを使用するには、コード ワードを使用してロードします。
SIN 0101000
COS 0168000
ARCTN 0164000
たとえば次のようにロードされます:
LIBRAry SIN{0101000}
書かれているように
「マシン言語ルーチンをライブラリに追加できます。」ですが、この 3 つがライブラリに含まれていました。(16 進数には 6 進数も使用しますが、ここでは重要ではありませんが、面白いです。)
ユニックス
バージョン 1UNIXを含むbas
、basicの方言 (Thompson 所有)。次の組み込み関数が含まれていました: arg
、、、、、、、、、および。exp
log
sin
cos
atn
rnd
expr
int
バージョン2もありましたが、bas
さらに、、、(正弦/余弦)などのサブルーチンのリストも見つかりましたatan
。また、 にもバンドルされていましhypot
た。log
sin
dc
もありますbc
が、それは B プログラムをコンパイルするためのものでした。
他に言及する価値があるのは、ttt
(三目並べ)、bj
(ブラックジャック)、moo
(MOO ゲーム) です。
バージョン 5などのソースコードを見たい場合はsin/cos
、atan
例えばこのコードを見てください:
- サブルーチン:
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
そしてdc
、bc
(ロリンダ チェリーと)数学ライブラリの大部分を執筆した、素数と因数(トンプソンと共著)を執筆しました。彼の一連の暗号プログラムは、センターの暗号学への継続的な関心を育みました。
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
arccos
、、arcsin
-tan
これらはsin
、、cos
への追加arctan
。
フォートラン
77 1977 :
sin
、、、、、、、...cos
tan
asin
acos
atan
II 1958年:
SIN
、、、COS
としてATAN
TANH
ライブラリ テープの機能。
ベーシック
1964年生まれのBASICにはSIN
、、COS
TAN
そして ATN
。
コメントによるとロイマ。
家庭用コンピュータで使用されている 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
、履歴を見ると、リソースと使用を考慮して、どの三角関数がベースとして実装するために選択されたかがわかります。