Meine Formel F = arctan (ImZ/ReZ)
Es gibt zwei Möglichkeiten:
Option 1 (atan):
ImZ=-4.593172163003
ImR=-4.297336384845
>>> z=y/x
>>> f1=math.atan(z)
>>> f1
0.8186613519278327
Option 2 (atan2)
>>> f=math.atan2(y,x)
>>> f
-2.3229313016619604
Warum unterscheiden sich diese beiden Ergebnisse?
Atan akzeptiert ein einzelnes Argument, und Atan2 verwendet zwei Argumente. Der Zweck der Verwendung von zwei Argumenten anstelle von einem Argument besteht darin, Informationen über die Vorzeichen der Eingaben zu sammeln, um den entsprechenden Quadranten des berechneten Winkels zurückzugeben, was für das einzelne Argument nicht möglich ist Eine Lohe
Atan2-Ergebnis liegt immer zwischen -pi und pi.
Referenz: https://en.wikipedia.org/wiki/Atan2
docstring für math.atan:
atan (x) Gibt den Arkustangens (in Bogenmaß) von x zurück.
docstring für math.atan2:
atan2 (y, x) Gibt den Arkustangens (in Bogenmaß) von y/x zurück. Im Gegensatz zu atan (y/x) ist Die Vorzeichen von x und y werden berücksichtigt.
Um ganz vollständig zu sein, hier ist, was das Dokument über atan2 sagt:
math.atan2 (y, x) Gibt atan (y/x) im Bogenmaß zurück. Das Ergebnis liegt zwischen -pi und pi. Der Vektor in der Ebene vom Ursprung zum Punkt (x, y) macht diesen Winkel mit der positiven X-Achse. Der Punkt von atan2 () ist dass die Vorzeichen beider Eingänge ihm bekannt sind, so dass er die .__ berechnen kann. korrekter Quadrant für den Winkel. Zum Beispiel atan (1) und atan2 (1, 1) sind beide pi/4, aber atan2 (-1, -1) ist -3 * pi/4.
Es ist also ziemlich klar: Die Ausgaben unterscheiden sich aufgrund der Vorzeichen von ImZ
und ImR
. Im Gegensatz zu atan
gibt atan2
den entsprechenden Quadranten zurück.
Eine Formel, die einen Winkel von 0 gegen den Uhrzeigersinn hat, dh die positive Achse von x
auf 2pi für einen beliebigen Wert von x und y. Für x = y = 0 ist das Ergebnis undefiniert.
f(x,y)=pi()-pi()/2*(1+sign(x))* (1-sign(y^2))-pi()/4*(2+sign(x))*sign(y)
-sign(x*y)*atan((abs(x)-abs(y))/(abs(x)+abs(y)))