à 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.
Manuel de l'intrigue et de l'équation:
À 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."
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
Vous devez vous connecter pour publier un commentaire.
La pratique courante est de faire la somme de 2*pi dans les résultats négatifs de
arctan()
, ce qui peut être fait de manière efficace. L'OP est de la suggestion de remplacer arctan(x) par arctan2(1,1/x), également proposée par Maple 15 de la documentation comme l'a souligné @Yay295, produit les mêmes résultats sans avoir besoin de la somme de 2*pi. Les deux sont indiqués ci-dessous:J'ai mis à jour pendant que vous éditiez... hésitez pas à le mettre à jour maintenant
J'ai ajouté le nouveau fichier png et changé les limites et arctan2. Merci.
À l'aide de arctan2(1, 1/x) au lieu de arctan(x) ici est tout simplement ridicule.
Je comprends votre point, à l'origine, j'ai suggéré d'utiliser
arctan
de -pi à pi, mais avecarctan2(1,1/x)
il a donné le même graphique que le livre de texte. S'il vous plaît, n'hésitez pas à appliquer des corrections à l'aide de arctan et d'obtenir les mêmes résultatsOriginalL'auteur Saullo G. P. Castro