Ma formule F = arctan (ImZ/ReZ)
Il y a deux options:
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
Pourquoi ces deux résultats sont-ils différents?
Atan prend un seul argument et Atan2 prend deux arguments. Le but d'utiliser deux arguments au lieu d'un, est de recueillir des informations sur les signes des entrées afin de renvoyer le quadrant approprié de l'angle calculé, ce qui n'est pas possible pour un seul argument Un bronzage
Le résultat Atan2 est toujours compris entre -pi et pi.
Référence: https://en.wikipedia.org/wiki/Atan2
docstring pour math.atan:
atan (x) Renvoie l'arc tangente (mesurée en radians) de x.
docstring pour math.atan2:
atan2 (y, x) Renvoie l'arc tangente (mesurée en radians) de y/x. Contrairement à atan (y/x), les signes de x et de y sont pris en compte.
Pour être très complet, voici ce que dit la doc sur atan2:
math.atan2 (y, x) Renvoie atan (y/x), en radians. Le résultat est compris entre -pi et pi. Le vecteur dans le plan de l'origine au point (x, y) fait cet angle avec l'axe des X positif. Le point atan2 () est que les signes des deux entrées lui sont connus, ainsi il peut calculer le quadrant correct pour l'angle. Par exemple, atan (1) et atan2 (1, 1) sont tous les deux pi/4, mais atan2 (-1, -1) est égal à -3 * pi/4.
C'est donc assez clair: les sorties sont différentes en raison des signes ImZ
et ImR
. atan2
renvoie le quadrant approprié, contrairement à atan
.
Une formule pour avoir un angle dans le sens anti-horaire à partir de 0, c'est-à-dire l'axe positif de x,
à 2pi pour toute valeur de x et y. Pour x = y = 0, le résultat est indéfini.
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)))