à l'aide de arctan / arctan2 de la parcelle a (de 0 à 2π

Je suis en train de reproduire une parcelle de terrain dans la Mécanique Orbitale par Curtis mais je ne peux pas tout à fait le faire. Cependant, j'ai fait façon la tête en passant à np.arctan2 de np.arctan.

Peut-être que je suis la mise en œuvre de arctan2 mal?

import pylab
import numpy as np
e = np.arange(0.0, 1.0, 0.15).reshape(-1, 1)
nu = np.linspace(0.001, 2 * np.pi - 0.001, 50000)
M2evals = (2 * np.arctan2(1, 1 / (((1 - e) / (1 + e)) ** 0.5 * np.tan(nu / 2) -
e * (1 - e ** 2) ** 0.5 * np.sin(nu) / (1 + e * np.cos(nu)))))
fig2 = pylab.figure()
ax2 = fig2.add_subplot(111)
for Me2, _e in zip(M2evals, e.ravel()):
ax2.plot(nu.ravel(), Me2, label = str(_e))
pylab.legend()
pylab.xlim((0, 7.75))
pylab.ylim((0, 2 * np.pi))
pylab.show()

Dans l'image ci-dessous, il y a des discontinuités popping up. La fonction est censé être lisse et se connecter à 0 et 2 pi dans l'axe de la gamme de (0, 2pi) de ne pas toucher à 0 et 2pi.

à l'aide de arctan /arctan2 de la parcelle a (de 0 à 2π

Manuel de l'intrigue et de l'équation:

à l'aide de arctan /arctan2 de la parcelle a (de 0 à 2π

à l'aide de arctan /arctan2 de la parcelle a (de 0 à 2π

À la demande de Saullo Castro, on m'a dit que:

"Le problème réside peut-être dans la fonction arctan qui donne le "principe" valeurs en sortie.

Ainsi, arctan(tan(x)) ne donne pas de x si x est un angle dans la deuxième ou la troisième quadrant. Si vous intrigue arctan(tan(x)) à partir de x = 0 à x = Pi, vous trouverez qu'il a un discontinu saut en x = Pi/2.

Pour votre cas, au lieu d'écrire arctan(arg), je crois que vous écrivez arctan2(1, 1/arg) où l'argument est l'argument de votre fonction arctan. De cette façon, lorsque arg devient négatif, arctan2 permettra d'obtenir un angle dans le deuxième quadrant, plutôt que de le quatrième."

Pour utiliser arctan2 correctement, vous avez besoin d'une équation en x, et une équation pour y. Le point de l'ensemble de arctan2 est que le rapport y/x est ambigu dans le quadrant: -/- == +/+ et -/+ == +/-. Si vous vous mettez en y comme une constante, vous pouvez toujours occuper deux quadrants dans le résultat. Donc ce que vous dites n'a pas de sens: cela ne peut pas à la fois être de l'équation et de remplir les quadrants de vous dire. (Car tous vous êtes en train de dire, c'est que j'ai cette équation et ça ne fonctionne pas", nous n'avons pas assez d'informations pour répondre à cela, et ce n'est pas une question qui peut être répondu.)
super! noter que dans l'équation du manuel, le arctan est que sur le premier terme, et non pas l'ensemble de l'équation.
Regardez la parenthèse directement à droite de tan^-1, où est la correspondance entre parenthèses. C'est après la tan(theta/2), non pas à la fin de l'ensemble de l'équation. Dans votre équation, vous êtes en train de faire la arctan de l'ensemble de la chose.
Je suis d'accord avec @tom10, il semble comme un cas de mal la parenthèse fermante. Ou deux.
Cette question devrait être fermé, à mon humble avis. C'est juste une parenthèse faute de frappe de la part de l'OP, et jette aucune lumière sur autre chose (et surtout pas arctan vs arctan2 en raison de la mauvaise conduite). Par conséquent, fermé comme trop "localisée".

OriginalL'auteur dustin | 2013-05-17