如果您加載BC數學圖書館你得到三角函數s()
和c()
,a()
它們分別是正弦、餘弦和反正切。為什麼有這三個功能呢?
我從數學角度知道為什麼這三個:因為這是您需要在笛卡爾座標和極座標之間直接轉換的三個。我是一名數學老師,不幸的是,這是我見過的唯一將正弦/餘弦/反正切建立為集合的地方原始三角函數,所以我希望有人能告訴我為什麼在更歷史的背景下。我不知道當我與數學教育者談論為什麼在正切之前向學生介紹反正切不是褻瀆的想法時,我最需要彈藥。
答案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
作為標準函數。
演算法
如果看一下數位時代執行數學的裝置,就會發現早期的一台機器是 Bendix G-15 電腦(1950 年代末期)。它使用受 ALGOL 58 影響的 ALGO。庫中的例程如下SIN
、、、COS
:ARCTN
- 演算法手冊–操作說明
- 程式設計師參考手冊(G15D - 附註:有一些有趣的部分解釋各個方面,例如位元、位元組、字如何分組以及使用磁鼓作為記憶體)
- 程序和子程序例如,具有用於計算
arcsine
和arccosine
使用的例程arctan
。(常規卡片的日期為 1957 年,所以不確定這是否是一些初步實驗的一部分:?)
若要使用這些例程,請使用代碼字載入:
SIN 0101000
COS 0168000
ARCTN 0164000
載入例如:
LIBRAry SIN{0101000}
正如它所說
“機器語言例程可以添加到庫中。”,但這三個是庫中包含的。(它也使用十六進製表示十六進制 - 但這不是重點,但很有趣。)
UNIX系統
版本1包括 UNIX 的bas
,basic 的一種方言(Thompson 所有)。它包括以下內建函數:arg
、exp
、log
、sin
、cos
、atn
、rnd
和expr
。int
版本2另外還可以bas
找到一個子程式列表,其中列出了其他子程式:atan
, hypot
, log
, sin
(sine / cosine)。它還與dc
.
還有bc
,不過那是編譯B程式的。
另外值得一提的還有:ttt
(tick-tack-toe)、bj
(black-jack)、moo
(MOO 遊戲)。
版本5。如果想查看 等的源代碼sin/cos
,atan
可以例如看看這段程式碼:
- 子程式:
usr/source/s3/{atan.s,sin.s}
- 基本內建:
usr/source/s1/bas4.s
注意!例如 1972-stuff (s2) 中的檔案有絕對路徑!
V7 中的 mathlib 已擴展為包含tan
等。
還包括 Fortran77。
西元前
BC 早在 1975 年就出現了,正如問題中所指出的,它也包括這三種基本方法。由羅伯特·莫里斯和洛琳達·切裡開發。從/usr/doc/bc/bc
V6 版本 (1975)開始:
3.有一個數學函數庫,可以透過在命令層級鍵入來獲得
bc –l
這個指令將載入一組函式庫函數,在撰寫本文時,這些函數包括正弦(名為“s”)、餘弦(“c”)、反正切(“a”)、自然對數(“l”)、指數(`e') 與整數階貝塞爾函數 (`j(n,x)')。毫無疑問,更多的功能將會及時添加。庫將比例設為 20。這些數學函式庫例程的設計將在別處討論
[4]
。
[4]
羅伯特·莫里斯,參考標準數學子程式庫,
那張紙不過看起來很難找到。
因此,從清單來看,基本的三角函數早在 V1 就已經是系統的一部分。bc
在載入例程中使用了這些。
來自 Unix Heritage Wiki 的註釋(抄送)
Life with Unix 說:寫了 dc 並與 Lorinda Cherry 在一起。
一位研究 Unix 讀者說: 鮑伯 (羅伯特) 莫里斯介入了所有涉及數學的領域,無論是數值分析還是數論。鮑勃發明了獨特的原創實用程序typo
,並且dc
- bc
(與洛琳達·櫻桃),編寫了大部分數學庫,並寫出了素數和因數(與湯普森一起)。他的一系列密碼計畫培養了該中心對密碼學的持續興趣。
Life with Unix 說:作家工作台的作家(措詞、風格等)、be 和 dc。寫eqn
與bwk
.
一位研究 Unix 讀者說:Lorinda L. Cherry 與 Morris 合作開發了dc
-bc
和typo
。 Lorinda 始終對文字處理著迷,她發起eqn
並發明了零件,這是一種近似解析器,在著名的 Writer's Workbench®、ww6(v8) 中得到了利用。
艾略特 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
。
根據評論@roaima。
家用電腦上使用的大多數 BASIC 方言(大約 1975 年以後)也有 SIN、COS、TAN、ATN (arctan)。沒有其他的逆。我假設包含 TAN 是為了最大限度地減少使用 SIN/COS 時的誤差範圍,因為所有這些三角函數都是透過相當小的查找表產生的。
阿波羅11號
這APOLLO 11 指令艙和登月艙的源代碼表明他們至少有一個子程序ARCTAN
你可以說他們在沒有子程式的情況下成功登陸月球TAN
;)
科迪克
CORDIC(沃爾德演算法)在三角函數實現方面值得注意的是。
統計數據
一個有趣的補充@史蒂芬·基特,來自評論:
另一篇有趣的論文是電腦中心圖書館數學子程式使用統計,發表於 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
,但歷史顯示根據資源和使用選擇哪些三角函數作為基礎來實現。