Ich habe selbst Orbitalmechanik studiert, und beim Lösen des Lambert-Problems ist es üblich, den universellen Variablenansatz zu verwenden. Ich verstehe den Algorithmus, aber ich habe kein Buch gefunden, das die physikalische Bedeutung der universellen Anomalie gut erklärt und die dimensionslose Variable .
Was wäre die physikalische Bedeutung dieser beiden Variablen?
de la Torre Sangra & Fantino's Review of Lambert's Problem sowie Izzo's Revisiting Lambert's problem (auch ArXiv ) zitieren Bate 1971 als Fundamentals of Astrodynamics von Roger R. Bate, Donald D. Mueller, Jerry E. White (Dover, 1971) (in google books , pdfs gibt es auch), die einführt und :
und später:
Folgende Seite von 204 der Grundlagen der Astrodynamik :
Dies sind nur praktische Variablen, die von der Änderung der exzentrischen Anomalie vom Anfangs- zum Endpunkt der analysierten (oder vorhergesagten) Bewegung abhängen.
Für elliptische Umlaufbahn:
oder für negativ (hyperbolische Umlaufbahn),
Für eine parabolische Umlaufbahn
Für elliptische Umlaufbahn:
Für hyperbolische Umlaufbahn:
Für eine parabolische Umlaufbahn (Auch wenn sich die exzentrische Anomalie nicht ändert.)
wo ist die exzentrische Anomalie (Seite 183):
ist "parabolische exzentrische Anomalie" und - "hyperbolische exzentrische Anomalie" (immer ein imaginärer Wert) - Gegenstücke zu für parabolische und hyperbolische Trajektorien. Auf den folgenden Seiten wird deren Ableitung erläutert.
Als Randbemerkung denke ich, dass die exzentrische Anomalie eine bessere Rechtfertigung und Erklärung verdient als das, was sie bekommt, mit der Erweiterung willkürlicher Linien auf zufällig ausgewählte Kreise für unbekannte Zwecke.
Wie die Standard-Ellipsengleichung ist (Das ist eine karthesische Koordinate , nicht die universelle Variable ) ist die typische Parametrisierung:
Die Antwort von @SF. sieht sehr gut aus! xSF=xOP und zSF = zOP.
Ich habe einige Gleichungen aus dieser Antwort verwendet .
Ich bin mir nicht sicher, ob es die Frage des OP vollständig beantwortet, aber da es mathematisch überprüft wird, werde ich dieses spezielle Kopfgeld vergeben.
Wie Meatloaf sagt, alles funktioniert, wenn man es zulässt.
def deriv(X, t):
x, v = X.reshape(2, -1)
acc = -x * mu * ((x**2).sum())**-1.5
return np.hstack((v, acc))
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint
from scipy.integrate import cumtrapz as CTrapz
# https://space.stackexchange.com/questions/31032/what-exactly-means-universal-variable-x-and-z
halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
mu = 1.0
a = 1.0
peri = 0.5
apo = 2.*a - peri
vperi = np.sqrt(mu*(2./peri - 1./a))
vapo = np.sqrt(mu*(2./apo - 1./a))
X0 = np.array([peri, 0, 0, vperi])
time = np.linspace(0, twopi, 201)
answer, info = ODEint(deriv, X0, time, full_output=True)
x, y, vx, vy = answer.T
theta = np.arctan2(y, x)
half_theta = 0.5 * theta
r = np.sqrt(x**2 + y**2)
xdot = np.sqrt(mu)/r
xOP = CTrapz(xdot, time, initial=0)
zOP = xOP**2/a
# https://space.stackexchange.com/questions/27602/what-is-hyperbolic-eccentric-anomaly-f/27604#27604
ecc = (apo-peri)/(apo+peri)
term = np.sqrt((1. - ecc)/(1. + ecc))
tanEover2 = term * np.tan(half_theta)
E = 2. * np.arctan(tanEover2)
E0 = E[0]
E[E<0] += twopi # keep it positive
xSF = np.sqrt(a)*(E - E0)
zSF = (E - E0)**2
things = ( r, theta, xOP, zOP, xdot, E, xSF, zSF )
names = ('r', 'theta', 'xOP', 'zOP', 'xdot', 'E', 'xSF', 'zSF')
if True:
plt.figure()
for i, (thing, name) in enumerate(zip(things, names)):
plt.subplot(2, 4, i+1)
plt.plot(time, thing)
plt.title(name, fontsize=16)
plt.show()
if True:
plt.figure()
plt.subplot(1, 2, 1)
plt.title('x and xSF versus time')
plt.plot(time, xOP, '-r', linewidth=4)
plt.plot(time, xSF, '--k', linewidth=2)
plt.subplot(1, 2, 2)
plt.title('z and zSF versus time')
plt.plot(time, zOP, '-r', linewidth=4)
plt.plot(time, zSF, '--k', linewidth=2)
plt.show()
if True:
x, y, vx, vy = answer.T
plt.subplot(1, 2, 1)
plt.title('y versus x')
plt.plot(x, y)
plt.plot([0], [0], 'ok')
plt.subplot(2, 2, 2)
plt.title('x and y versus time')
plt.plot(time, x)
plt.plot(time, y)
plt.subplot(2, 2, 4)
plt.title('vx and vy versus time')
plt.plot(time, vx)
plt.plot(time, vy)
plt.show()
äh
Paul
Alberto de Celís Romero
Alberto de Celís Romero
äh
äh
Polygnom