Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Jcl Unit test: Mathefrage (https://www.delphipraxis.net/205162-jcl-unit-test-mathefrage.html)

Andreas13 7. Aug 2020 15:49

AW: Jcl Unit test: Mathefrage
 
Hallo TurboMagic,
in der Jedi Code Library wird
Delphi-Quellcode:
ArcCsc(X):= ArcSec(X / Sqrt(X * X -1));
verwendet. System.Math benutzt dagegen
Delphi-Quellcode:
 ArcCsc(X):= ArcSin(1 / X);
, während AMath einen komplexeren Algorithmus unter Verwendung von
Delphi-Quellcode:
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

TurboMagic 7. Aug 2020 16:53

AW: Jcl Unit test: Mathefrage
 
Danke für die Antwort.
Habe den Test so umgebaut, dass die FUnktionsaufrufe jetzt in abs Aufrufe eingefügt wurden. Dann klappt's natürlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz