Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Arcustangens mit 2 Argumenten (https://www.delphipraxis.net/172737-arcustangens-mit-2-argumenten.html)

Helmi 19. Jan 2013 17:58

Arcustangens mit 2 Argumenten
 
Hallo,

ich programmiere gerade für eine SPS die mathematische Funktion "Arcustangens mit 2 Argumenten", ATAN2, nach.
Bezüglich der Definition halte ich mich hieran.

Bei meinen SPS-Tests vergleiche ich die Ergebnisse mit ATAN2 online und einem Delphi-Programm.

Bei X-Werten >0 bzw. =0 stimmen alle 3 Ergebnisse überein (also SPS, Delphi und "ATAN2 online").

Nur bei Werten <0 rechnen Delphi und "ATAN2 online" gleich, meine SPS aber nicht. Wenn ich die Werte manuell nachrechne, komm ich (laut Definition) auf das gleiche Ergebnis wie die SPS. Laut dieser Gegenrechnung stimmt meine SPS-Logik/-Berechnung.

Nur warum ermittelt Delphi andere Werte?

Zum Testen:
Delphi-Quellcode:
Uses
  Math;

procedure TForm1.Button1Click(Sender: TObject);
var
  X, Y, Result: Extended;

begin
  Y := -44.2;
  X := -23;

  Result := arctan2(Y, X);

  Label1.Caption := FloatToStr(Result);
end;

Helmi 19. Jan 2013 18:37

AW: Arcustangens mit 2 Argumenten
 
*ganz böse Wörter sage, die um die Uhrzeit nicht jugendfrei sind*

Hätte Wikipedia Klammern gesetzt, wäre es eindeutiger gewesen

Es muss heissen "atan(y/x)+Pi", bzw "atan(y/x)-Pi"

Nachdem ich den Math-Code rauskopiert hab und in meine Unit übernommen hab, konnt ich den Code debuggen und bin so drauf gekommen

Medium 20. Jan 2013 02:47

AW: Arcustangens mit 2 Argumenten
 
Man muss zur Verteidigung Wikipedias aber sagen, dass wenn ein Argument einer Funktion nicht geklammert ist, stets nur das erste Argument bis zum nächsten Operator/Funktion zählt. Das ist gar nicht so unüblich :) (Und du hast uns leider nicht den SPS Code gezeigt, sondern nur den funktionieren Delphi-Code, so dass wir diesen Fehler niemals hätten finden können.)

Helmi 20. Jan 2013 09:35

AW: Arcustangens mit 2 Argumenten
 
Zitat:

Zitat von Medium (Beitrag 1199835)
Man muss zur Verteidigung Wikipedias aber sagen, dass wenn ein Argument einer Funktion nicht geklammert ist, stets nur das erste Argument bis zum nächsten Operator/Funktion zählt. Das ist gar nicht so unüblich :)

Dummerweise hast du recht! - Ich hab das echt nicht gesehen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.

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