Wenn Sie dieBC-MathematikbibliothekSie erhalten die trigonometrischen Funktionen s()
und , c()
nämlich a()
Sinus, Cosinus und Arkustangens. Warum diese drei Funktionen?
Ich weiß, warum es aus mathematischer Sicht diese drei sind: weil das die drei sind, die man braucht, um direkt zwischen kartesischen und polaren Koordinaten zu übersetzen. Ich bin Mathematiklehrer, und dies ist leider der einzige Ort, an dem ich Sinus/Cosinus/Arkustangens als Satz vonPrimitivetrigonometrische Funktionen, also hoffte ich, jemand könnte mir sagenWarumin einem eher historischen Kontext. Ich weiß nicht, ich brauche vor allem Munition, wenn ich mit Mathematiklehrern darüber spreche, warum es keine blasphemische Idee ist, den Schülern den Arkustangens vor dem Tangens beizubringen.
Antwort1
Keine vollständige Antwort, aber vielleicht einigermaßen nützlich.
Eher eine Liste mit Beispielen für die Verwendung trigonometrischer Funktionen in frühen Anpassungen. Außerdem ein Blick in die UNIX-Welt.
ALGOL
Interessanter Artikel zur Geschichte:
ALGOL wurde bereits in den 1950er Jahren entwickelt. Bei einem gemeinsamen Treffen europäischer und amerikanischer Informatiker im Jahr 1958 - bei dem man auchVorläufiger Bericht zur Internationalen Algorithmischen Spracheauch bekannt als „Der Züricher Bericht“. Damals ging es darum, die Notation und die Art und Weise, wie Algorithmen für Computer geschrieben werden, zu vereinheitlichen.Auszug aus dem 58er-Berichtum einige derDiskussionin jener Hinsicht:
„Bezeichner, die Funktionen bezeichnen, können, genau wie bei Variablen, nach Belieben gewählt werden. Bestimmte Bezeichner sollten jedoch den Standardfunktionen der Analyse vorbehalten bleiben.
Diese reservierte Liste sollte enthalten:
abs (E) für den Modul (Absolutwert) des Wertes des Ausdrucks E sign (E) für das Vorzeichen des Wertes von E ganzzahlig (E) für die größte Ganzzahl, die nicht größer als der Wert von E ist sqrt (E) für die Quadratwurzel des Wertes von E sin (E) für den Sinus des Wertes von Eund so weiter gemäß der üblichen mathematischen Notation.“
Aus ALGOL 58 wurde ALGOL 60, wo man vielleicht sagen kann, dass die Arbeit auch konkreter ist, was die Grundlagen betrifft (in Bezug auf trigonometrische Funktionen:
Bericht über die algorithmische Sprache ALGOL 60
Kurz gesagt sin
, es empfiehlt sich cos
und arctan
als Standardfunktionen.
ALGO
Wenn man sich Installationen ansieht, die im digitalen Zeitalter mathematische Berechnungen durchführten, war eine frühe Maschine der Bendix G-15-Computer (Ende der 1950er Jahre). Er verwendet ALGO, das von ALGOL 58 beeinflusst wurde. Er verfügt über eine Bibliothek, die nicht Teil des Algo-Systems ist. Die Routinen in der Bibliothek sind wie folgt, SIN
, COS
, ARCTN
:
- Handbuch für ALGO–Bedienungsanleitung
- Referenzhandbuch für Programmierer(G15D - Randbemerkung: enthält einige interessante Abschnitte zur Erklärung verschiedener Aspekte, beispielsweise wie Bits, Bytes, Wörter gruppiert werden und die Verwendung derMagnettrommelals RAM)
- Programme und UnterprogrammeEnthält beispielsweise Routinen zum Berechnen
arcsine
undarccosine
Verwenden vonarctan
. (Die Routinekarten sind auf 1957 datiert, daher bin ich nicht sicher, ob es Teil einiger vorläufiger Experimente war:?)
Zur Verwendung dieser Routinen wurden Codewörter verwendet:
SIN 0101000
COS 0168000
ARCTN 0164000
Geladen beispielsweise wie folgt:
LIBRAry SIN{0101000}
Wie es heißt
„Maschinensprachenroutinen können der Bibliothek hinzugefügt werden.“, aber diese drei waren diejenigen, die in der Bibliothek enthalten waren. (Es verwendet auch Sexadezimalzahlen für Hex – aber das ist hier nicht relevant, sondern macht Spaß.)
UNIX
Version 1von UNIX inklusivebas
, ein Dialekt von Basic (im Besitz von Thompson). Es enthielt die folgenden integrierten Funktionen: arg
, exp
, log
, sin
, cos
, atn
, rnd
, expr
und int
.
Version 2hatte auch bas
und zusätzlich findet man eine Liste von Unterprogrammen, wo es unter anderem auflistet: atan
, hypot
, log
, sin
(Sinus / Cosinus). Es wurde auch mit gebündelt dc
.
Es gibt auch bc
, aber das war zum Kompilieren des B-Programms.
Ebenfalls erwähnenswert: ttt
(Tick-Tack-Toe), bj
(Black Jack), moo
(das Spiel MOO).
Version 5Wenn man sich den Quellcode für usw. ansehen möchte sin/cos
, atan
kann man beispielsweiseschau dir diesen Code an:
- Unterprogramme:
usr/source/s3/{atan.s,sin.s}
- BASIC-Einbaufunktionen:
usr/source/s1/bas4.s
Achtung!Archive in zum Beispiel 1972-Stuff (S2) hatabsolute Pfade!
Die in V7 enthaltene Mathlib wurde um tan
usw. erweitert.
Enthält auch Fortran77.
vor Christus
BC erblickte 1975 das Licht der Welt und enthält, wie in der Frage erwähnt, auch diese drei grundlegenden Methoden. Entwickelt von Robert Morris und Lorinda Cherry. Aus /usr/doc/bc/bc
der V6-Version (1975):
3.Es gibt eine Bibliothek von mathematischen Funktionen, die durch Eingabe auf Befehlsebene abgerufen werden können
bc –l
Dieser Befehl lädt eine Reihe von Bibliotheksfunktionen, die zum Zeitpunkt des Schreibens aus Sinus (genannt „s“), Cosinus („c“), Arkustangens („a“), natürlichem Logarithmus („l“), Exponential („e“) und Bessel-Funktionen ganzzahliger Ordnung („j(n,x)“) bestehen. Zweifellos werden mit der Zeit weitere Funktionen hinzugefügt. Die Bibliothek setzt den Maßstab auf 20. Sie können ihn bei Bedarf auf einen anderen Wert zurücksetzen. Das Design dieser mathematischen Bibliotheksroutinen wird an anderer Stelle erläutert
[4]
.
[4]
Robert Morris,Eine Bibliothek mit Referenzstandard-Unterprogrammen für die Mathematik,
Dieses Papierscheint jedoch ziemlich schwer zu finden zu sein.
Aus den Auflistungen geht hervor, dass die grundlegenden trigonometrischen Funktionen bereits in V1 Teil des Systems waren. bc
Diese wurden in der Laderoutine verwendet.
Notizen aus dem Unix Heritage Wiki(cc)
Das Leben mit Unix sagt: Habe dc geschrieben und bin mit Lorinda Cherry zusammen.
Ein Research Unix Reader sagt: Bob (Robert) Morris kam überall zum Einsatz, wo es um Mathematik ging, sei es um numerische Analyse oder Zahlentheorie. Bob erfand die unverwechselbar originellen Dienstprogramme typo
und dc
( bc
mit Lorinda Cherry)schrieb den größten Teil der Mathematik-Bibliothekund schrieb Primzahlen und Faktoren (mit Thompson). Seine Reihe von Kryptoprogrammen förderte das anhaltende Interesse des Zentrums an Kryptographie.
Das Leben mit Unix sagt: Autor von Writer's Workbench (Aussprache, Stil usw.), be und dc. Schrieb eqn
mit bwk
.
Ein Research Unix Reader sagt: Lorinda L. Cherry hat mit Morris an dc
- bc
und zusammengearbeitet typo
. Lorinda war schon immer von der Textverarbeitung fasziniert und initiierte eqn
und erfand parts, einen ungefähren Parser, der in der berühmten Writer's Workbench®, ww6(v8), eingesetzt wurde.
Elliott 803
Es liegt natürlich nicht daran, dass man nicht Systeme hatte, die mehr Funktionen implementierten, oder vielleicht diese nicht als Kernfunktionen hatten. Aber das ist Geschichte... :P
arccos
, arcsin
, tan
- welche sindErgänzungen zu sin
, cos
,arctan
.
FORTRAN
77 1977:
sin
,cos
,tan
,asin
,acos
,atan
, ...II 1958:
SIN
,COS
,ATAN
,TANH
alsBandfunktionen der Bibliothek.
BASIC
BASIC Jahrgang 1964 hat SIN
, COS
,TAN
Und ATN
.
Laut Kommentar von@roaima.
Die meisten auf Heimcomputern verwendeten BASIC-Dialekte (ab etwa 1975) hatten auch SIN, COS, TAN, ATN (arctan). Keine anderen Inversen. Ich gehe davon aus, dass TAN aufgenommen wurde, um die Fehlergrenze bei der sonstigen Verwendung von SIN/COS zu minimieren, da alle diese trigonometrischen Funktionen über eine ziemlich kleine Nachschlagetabelle generiert wurden.
APOLLO 11
DerQuellcode für das Kommando- und Mondmodul von APOLLO 11zeigen, dass sie zumindest eine Subroutine fürARCTAN
Annäherung an
TAN(-20)
vonSIN(-20)
(Grad)
Man könnte argumentieren, dass sie es geschafft haben, auf dem Mond zu landen, ohne ein Unterprogramm dafür zu haben TAN
;)
CORDIC
CORDIC (Volder-Algorithmus)ist eine erwähnenswerte Sache, wenn es um die Trigonometrie-Implementierung geht.
Statistiken
Eine interessante Ergänzung von@Stephen Kitt, aus Kommentaren:
Ein weiteres interessantes Papier istStatistik zur Nutzung mathematischer Unterprogramme aus einer Rechenzentrumsbibliothek, veröffentlicht im Jahr 1973, was darauf hinweist, dass an der Purdue University Anfang 1973 sin / cos / atan die am häufigsten verwendeten trigonometrischen Funktionen waren, weit vor tan / asin / acos / tanh:
sin / cos 39,462
atan 27,248
tan 4,707
asin / acos 4,139
tanh 2,546
Tauchen
KeinTieftauchgang, aber zumindest ein bisschen mehr zum Thema. Das Papier von ALGOL trifft es vielleicht am besten.
Was BC betrifft, war esohne ein direktes Zitat zu findeneine Entscheidung von Morris/Cherry, diese spezifischen Grundfunktionen -l
optional durch Laden aus der Bibliothek einzubinden.
Kurz gesagt, es ist nicht so, dass man nichtwollenbeispielsweise tan
, aber die Geschichte zeigt, welche trigonometrischen Funktionen zur Implementierung als Grundlage gewählt wurden – im Lichte der Ressourcen und der Verwendung.