Rechnerisches Lösen des Zwei-Körper-Problems für Patched-Conics-Approximation

Ich habe versucht, eine Orbitalsimulation mit der Patched-Conics-Approximation wie dem Kerbal Space Program zu erstellen. Ich habe zunächst versucht, die Kepler-Gleichung mit der Newton-Methode zu lösen, dies ließ jedoch zu wünschen übrig, da viele Anfangsvariablen wie die große Halbachse und die Exzentrizität im Voraus bereitgestellt werden müssen, während ich nur einen Radiusvektor und einen Geschwindigkeitsvektor habe. Auch dieser Ansatz scheint bei parabolischen oder hyperbolischen (oder geradlinigen) Umlaufbahnen auseinanderzufallen, ganz zu schweigen davon, dass er ziemlich rechenintensiv ist. Dies führte mich zur Goodyear-Methode aus Lamonts Antwort auf diese Frage.

Bestimmung der Orbitalposition zu einem zukünftigen Zeitpunkt

Es ist mir jedoch nicht gelungen, gültige Ergebnisse zu erzielen. Alle Radiusvektoren, die ich daraus bekomme, bilden gerade Linien. Soweit ich weiß, ist alles, was erforderlich ist, der anfängliche Radiusvektor, der Geschwindigkeitsvektor, der Gravitationsparameter und das Zeitintervall. Ich habe diese Werte in SI-Einheiten angegeben, also Meter und Sekunden. Erwartet es unterschiedliche Einheiten?

Wenn all dies fehlschlägt, gibt es andere allgemeine Lösungen für das Zwei-Körper-Problem, die nur den anfänglichen Radiusvektor und den Geschwindigkeitsvektor erfordern und zu einem späteren Zeitpunkt "t" einen Radiusvektor und einen Geschwindigkeitsvektor zurückgeben können? Und welche davon eignen sich am besten für eine gepatchte Kegelschnittnäherung?

Nur eine Vermutung: Sie erwähnen den Gravitationsparameter und dann Kilogramm. Gravitationsparameter ( G M ) enthält keine Masse in seiner Dimension, seine Dimension ist L 3 T 2 . Wenn der Code den Gravitationsparameter in m3/s2 erwarten würde und Sie die Masse in kg angeben würden, wäre das um viele Größenordnungen daneben.
Das ist mein Fehler. Ich habe die Frage bearbeitet, um Kilogramm zu entfernen. Ich habe nie Kilogramm in der Berechnung verwendet. Ich habe den Gravitationsparameter der Erde in m^3/s^2 verwendet, was ungefähr 3,986E14 m^3/s^2 war. Die richtigen Einheiten müssen mir beim Schreiben der Frage entfallen sein.
Wenn Sie einen Gravitationsparameter, einen radialen Abstandsvektor und einen Geschwindigkeitsvektor haben, haben Sie eine große Halbachse über die spezifische Orbitalenergie und eine Orbitalexzentrizität über den Exzentrizitätsvektor . Die hyperbolischen Versionen von Keplers Gleichungen kehren Vorzeichen um und ersetzen hyperbolische Triggerfunktionen, und die Parabel kann mit einem eigenen speziellen Satz von Gleichungen behandelt oder höflich ignoriert werden.
Ich würde Shepperds Methode von diesem Link in meiner Antwort auf diese andere Frage empfehlen. Sie können auch Danbys Methode zum Lösen der Kepler-Gleichung aus der Matlab-Implementierung von David Eagle implementieren: mathworks.com/matlabcentral/fileexchange/… Diese Antwort sollte Ihnen beim Testen dieser Algorithmen helfen: space.stackexchange.com/questions/20669/… - Sie können Generieren Sie eine Reihe von Kepler-Lösungen und verwenden Sie diese, um alle drei Arten von Lösern zu testen.
Das Repo von David Eagle hat auch eci2orb1- und orb2eci-Funktionen, die in/von Zustandsvektoren und keplerschen Elementen konvertieren , z Also. Seine eci2orb1, orb2eci, glambert, kepler1 (Danby) und twobody2 (Shepperd) bilden eine gute Toolbox für keplersche Solver. IMO, implementieren Sie alle.

Antworten (1)

Sie haben wahrscheinlich bereits eine Antwort gefunden, als Sie diese Frage gestellt haben, aber ich gebe trotzdem eine Antwort, falls es hilft.

Die Verwendung der Orbitalelemente ist der "richtige Weg", dies zu tun. Es gibt 6 davon, die in diesem Wikipedia-Artikel beschrieben werden :

  • Exzentrizität e
  • große Halbachse A
  • Neigung ich
  • Längengrad des aufsteigenden Knotens Ω
  • Argument der Periapsis ω
  • wahre Anomalie θ (was zeitabhängig ist)

Die ersten fünf von ihnen beschreiben die Geometrie einer Umlaufbahn vollständig in 3D. Die wahre Anomalie ist ein Winkel, der sich auf die Position des Körpers/Raumfahrzeugs auf dieser Umlaufbahn bezieht. Sie können alle diese Parameter aus Anfangszustandsvektoren (Position und Geschwindigkeit) berechnen, wenn Sie die Standard-Gravitationsparameter des Attraktorkörpers kennen. Die Mathematik wird in diesem PDF von René Schwarz beschrieben , wie man kartesische Orbitalzustandsvektoren in Orbitalelemente umwandelt.

Sobald Sie die Elemente einer Umlaufbahn haben, können Sie sie verwenden, um die Zustandsvektoren (Positions-/Radiusvektor und Geschwindigkeitsvektor) zu jedem beliebigen Zeitpunkt zu berechnen, indem Sie diesem anderen PDF folgen, in dem beschrieben wird, wie man Umlaufbahnelemente in kartesische Zustandsvektoren umwandelt. Einige im Dokument beschriebene Formeln funktionieren jedoch nur für elliptische Umlaufbahnen. Für hyperbolische Bahnen (wann e > 1 ) müssen Sie andere Formeln für die exzentrische und wahre Anomalie verwenden (siehe diesen Wikipedia-Artikel und die zweite Antwort auf diesen Beitrag ) sowie die Formel für den Geschwindigkeitsvektor aus dem Dokument anpassen (siehe diesen Beitrag ).

Die "kompliziert" aussehenden Rotationsmatrizen, die die Position und Geschwindigkeit des Raumfahrzeugs/Körpers im 3D-Raum festlegen, können in diesen Schritten entwickelt werden:

  • Wählen Sie die Referenzvektoren für "rechts" und "oben", zB die x-Richtung (1, 0, 0) und die y-Richtung (0, 1, 0), ich nenne sie u X Und u j .
  • Berechnen Sie den aufsteigenden Knotenvektor u A S C : es ist u X herum gedreht u j um einen Winkel Ω ;
  • Stellen Sie die Position ein R = Ö und die Geschwindigkeit v = Ö ˙ wie im Dokument beschrieben (mit der modifizierten Formel ggf e > 1 );
  • Drehen R Und v um u j eines Winkels Ω + ω ;
  • Erneut drehen R Und v um u A S C eines Winkels ich .

(Beachten Sie, dass er in den Dokumenten von René Schwarz die z-Achse als die "oben" -Achse betrachtet, anstelle der y-Achse.)

Der Fall einer parabelförmigen Umlaufbahn ( e = 1 ) kann, wie notovny in einem Kommentar sagte, höflich ignoriert werden (wende den Straußenalgorithmus an ).

Beachten Sie jedoch, dass Sie möglicherweise Extremfälle berücksichtigen müssen. dh wenn Sie es mit Umlaufbahnen zu tun haben, die Kreisbahnen sehr nahe kommen oder eine Nullneigung haben. In diesen Fällen funktionieren die Formeln für Winkel, wie die wahre Anomalie im ersten Dokument, nicht (sie geben NaN-Werte wegen der Fließkommagenauigkeit und Rundungen). Für diese speziellen Fälle müssen Sie also Standardvektoren setzen, zB den exzentrischen Vektor, und daraus die Winkel berechnen.

Was die Einheiten betrifft, erwarten die Formeln tatsächlich SI-Einheiten. (Sie können jedoch ein beliebiges Vielfaches dieser Einheiten verwenden, solange Sie dies in den Gleichungen berücksichtigen).