Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Jcl Unit test: Mathefrage

  Alt 7. Aug 2020, 16:49
Hallo TurboMagic,
in der Jedi Code Library wird ArcCsc(X):= ArcSec(X / Sqrt(X * X -1)); verwendet. System.Math benutzt dagegen  ArcCsc(X):= ArcSin(1 / X); , während AMath einen komplexeren Algorithmus unter Verwendung von ArcTan(1/Sqrt(x^2-1))} favorisiert.

Der Vorzeichenfehler rührt von folgendem Sachverhalte her: Die trigonometrischen Funktionen wie Sekans, Kosekans etc. sind periodische Funktionen: d. h. für unendlich viele Argumente x erhalten wir unendlich oft denselben Funktionswert: z.B. für den Kosekans Csc(x) = Csc(x + 2*Pi).

Ihre Umkehrfunktionen ArkusSekans, ArkusKosekans etc. sind jedoch nicht periodisch. Um eine exakte Zuordnung vornehmen zu können, müßten wir die beiden Terme (= diverse Längen am Einheitskreis) aus denen diese Quotienten bestimmt worden sind, vorzeichengerecht kennen. Ansonsten ist eine Umkehrung der Funktion nur auf den Definitionsbereich der umzukehrenden Funktion beschränkt möglich.

Es ist also nicht gleich – um bei Deinem Beispiel zu bleiben – ob x:= -3.98 z.B. so entstanden ist: -3.98/1 = -3.98 oder +3.98/(-1) = = -3.98 etc. Im ersten Fall liegt der 3. Quadrant vor, im zweiten der 4. Quadrant. Je nach dem, über welche Funktion ArcSec(..), ArcSin(..) oder ArcTan(..) die Umkehrfunktion berechnet wird, landen wir mal im 1., mal im 4. Quadranten. Aber ist es kein Problem, schließlich ist z.B. der Arkuskosekans eine sogenannte ungerade Funktion mit der Eigenschaft ArcCsc(+x) = -ArcCsc(-x). Bilde also einfach den Betrag Abs(..) davon, wenn das Minus stört!
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 ( 7. Aug 2020 um 16:57 Uhr)
  Mit Zitat antworten Zitat