Ich versuche, eine Grafik in Orbital Mechanics von Curtis zu replizieren, aber ich kann es nicht ganz bekommen. Ich habe jedoch den Weg frei gemacht, indem ich von np.arctan2
von np.arctan
wechselte.mit arctan/arctan2 zum plotten a von 0 bis 2π
Vielleicht implementiere ich arctan2
falsch?
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()
In der Abbildung unten tauchen Diskontinuitäten auf. Die Funktion soll glatt sein und bei 0 und 2 Pi im y-Bereich von (0, 2pi) verbinden und 0 und 2pi nicht berühren.
Lehrbuch Handlung und Gleichung:
Auf Antrag des Saullo Castro, wurde mir gesagt, dass:
„Das Problem liegt in kann die Arctan-Funktion, die "Hauptwerte" als Ausgabe angibt.
Somit ergibt arctan (tan (x)) nicht x, wenn x ein Winkel im zweiten oder dritten Quadranten ist. Wenn Sie arctan (tan (x)) von x = 0 bis x = Pi zeichnen, werden Sie feststellen, dass es einen diskontinuierlichen Sprung bei x = Pi/2 hat.
Für Ihren Fall, anstatt arctan (arg) zu schreiben, glaube ich, dass Sie arctan2 (1, 1/arg) schreiben würden, wo arg das Argument Ihrer arctan Funktion ist. Auf diese Weise, wenn arg negativ wird, arctan2 einen Winkel im zweiten Quadranten ergibt eher als die vierten.“
Um korrekt arctan2 zu verwenden, benötigen Sie eine Gleichung für x und eine Gleichung für y. Der ganze Punkt von arctan2 ist, dass das Verhältnis y/x um den Quadranten mehrdeutig ist: -/- == +/+ und -/+ == +/-. Wenn Sie y als Konstante eingeben, können Sie im Ergebnis immer nur zwei Quadranten belegen. Was du sagst, ergibt keinen Sinn: Das kann nicht die Gleichung sein und die Quadranten füllen, die du sagst. (Da alles, was Sie jetzt sagen, ist "Ich habe diese Gleichung und es funktioniert nicht", haben wir nicht genug Informationen, um dies zu beantworten und es ist keine Frage, die beantwortet werden kann.) – tom10
@ tom10 es sehr nah an funktioniert, wenn wir .6 - .9 herausnehmen, ist die Lösung richtig. Es ist oberhalb von .6 aber vielleicht niedriger, da der Bereich von .15 ist. – dustin
Dennoch gibst du den Leuten nicht genug Informationen, ich würde gerne wissen wohin du gehst, nicht wo du angefangen hast. "In der Nähe zu korrigieren" ist nicht besonders hilfreich. Dies scheint keine Frage zu sein, sondern eine Frage zu dem, was in deinem Lehrbuch steht. – tom10