mit arctan / arctan2 zu plot a von 0 bis 2π

Ich versuche zu replizieren von einem Grundstück in der Mechanik der Umlaufbahn von Curtis, aber ich kann es nicht ganz verstanden. Allerdings, habe ich den Kopf durch die Umstellung auf np.arctan2 aus np.arctan.

Vielleicht bin ich die Umsetzung 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 dem Bild unten, gibt es Unstetigkeiten auftauchen. Die Funktion soll glatt sein und die Verbindung bei 0 und 2 pi, die in der y-Bereich von (0, 2pi) nicht berühren 0 und 2pi.

mit arctan /arctan2 zu plot a von 0 bis 2π

Lehrbuch und plot Gleichung:

mit arctan /arctan2 zu plot a von 0 bis 2π

mit arctan /arctan2 zu plot a von 0 bis 2π

Auf Wunsch von Saullo Castro, wurde mir gesagt, dass:

"Das problem liegt wohl in der arctan-Funktion gibt, die "Grundwerte" als Ausgabe.

Also arctan(tan(x)) nicht nachgibt x, wenn x ein Winkel im zweiten oder Dritten Quadranten. Wenn Sie die plot-arctan(tan(x)) von x = 0 bis x = Pi, finden Sie, dass es einen diskontinuierlichen Sprung bei x = Pi/2.

Für Ihren Fall, statt zu schreiben arctan(arg), ich glaube, Sie würden schreiben arctan2(1, 1/arg), wobei arg ist das argument Ihrer arctan-Funktion. So, wenn arg negativ wird, arctan2, erzielen Sie einen Winkel im zweiten Quadranten eher als das vierte."

  • Verwenden arctan2 korrekt funktioniert, müssen Sie eine Gleichung für x, und die Gleichung für y ein. Der springende Punkt bei der arctan2 ist, dass das Verhältnis y/x ist mehrdeutig über die Quadranten -: - / - = = + / + und -/+ == +/-. Wenn du in y als konstant ist, kann man immer noch belegen nur zwei Quadranten im Ergebnis. Also, was Sie sagen, ist nicht sinnvoll: diese können nicht zugleich die Formel und füllen Sie die Quadranten, werden Sie sagen. (Da alles, was Sie jetzt sagen wird "ich habe diese Gleichung und es funktioniert nicht", wir haben nicht genug Informationen, um diese beantworten und es ist nicht eine Frage, die beantwortet werden können.)
  • sehr nah zu arbeiten, wenn wir .6 - .9, die Lösung ist korrekt. Es bricht oben .6 aber vielleicht geringer, da der Bereich ist durch .15
  • Noch bist du nicht, dass die Menschen genug Informationen, ich würde gerne wissen, wo Sie gehen, nicht, wo Sie gestartet. "Close to correct" ist nicht besonders hilfreich. Dies scheint nicht zu sein, eine Frage zu acrtan2, sondern eine Frage über das, was in Ihrem lehrbuch.
  • hinzufügen von Fotos der Gleichung und plot dann.
  • Super!!! beachten Sie, dass in der Formel aus dem lehrbuch, der arctan ist nur über den ersten Begriff, nicht die ganze Gleichung.
  • was meinst du damit?
  • Blick auf die Klammer direkt rechts neben der tan^-1, aber wo ist die passende Klammer. Es ist nach der tan(theta/2), nicht am Ende die ganze Gleichung. In deiner Gleichung, die du tust den arctan von der ganzen Sache.
  • Ich Stimme mit @tom10, es scheint wie ein Fall von einer verstellten schließende Klammer. Oder zwei.
  • Diese Frage sollte nur geschlossen werden, imho. Es ist nur eine Klammer ein Tippfehler seitens des OP, und wirft kein Licht auf etwas anderes (vor allem nicht arctan vs arctan2 aufgrund der Irreführung). Daher geschlossen als "zu lokalisierten".
  • nun, ich habe erfahren, wie verschoben die Legende von es so es war hilfreich.
  • Die Frage sollte nicht geschlossen werden. Es bringt ein sehr häufiges problem in der Diskussion suggeriert die Verwendung arctan2() zu vermeiden, addieren 2*pi der negative, die mit arctan()
  • es bringt nur, dass in tangential (ha ha). Wenn Sie möchten, dass zu sein, was diese Frage geht, dann empfehle ich dir beantworten, mit Bildern von den Domänen, erklären, warum arctan2(1,1/x) funktioniert, was ist besser, etc. Stattdessen sind Sie einfach nur, andere zu Fragen, zu Antworten, dass, während Sie haben tatsächlich geantwortet, was die Frage ist wirklich über... die machen eine Figur genau entspricht, die man in den OP ' s text-book (dh, es ist viel zu lokalisiert). (btw, ich bin outa hier... das war eine völlige Verschwendung von Zeit.)
  • Dies ist auch lokalisiert als das eigentliche problem (und die richtige Antwort) beinhaltet weder python, numpy noch matplotlib.

InformationsquelleAutor dustin | 2013-05-17
Schreibe einen Kommentar