Órbitas hiper/parabólicas de Kepler y "anomalía media"

En una órbita elíptica de Kepler hay una receta fácil para describir el movimiento/posición de un satélite en el tiempo t . Uno solo sigue los siguientes pasos - un detalle importante para mi es que la parte numérica siempre tiene el mismo error, el error no aumenta con el tiempo, ni se basa en el timestep. (Lo que sucedería si uno resolviera una ecuación diferencial).

Calcular el movimiento medio norte (dado un semieje mayor a y masa central METRO , esto es básicamente el 2 pi dividido por el período):

norte = GRAMO METRO a 3

Ahora la definición de anomalía media:

METRO ( t ) = METRO 0 + norte t

Y uno puede (numéricamente) resolver la siguiente ecuación, para obtener la anomalía excéntrica mi :

METRO = mi ε pecado ( mi )

Y luego la geometría simple permite encontrar la verdadera anomalía. θ .


Ahora todo esto está bien y funciona bien. No sé cómo aplicar esto a órbitas no elípticas. Los principales problemas que tengo son que no existe la noción de semieje mayor (o cuando se usa un negativo para órbitas hiperbólicas, es infinito para parábolas, lo que daría como resultado un movimiento medio de 0).

Tampoco tiene significado la anomalía excéntrica, las órbitas no elípticas no tienen centro geométrico. (La verdadera anomalía todavía se definiría como el punto focal).

Respuestas (2)

Para el caso de la órbita hiperbólica, utiliza la función trigonométrica hiperbólica. Entonces su ecuación para la anomalía de la media hiperbólica se convierte en:

METRO h = mi pecado F F

dónde F es su anomalía excéntrica hiperbólica, que es análoga a la anomalía excéntrica para elipse y METRO h todavía está dada por la misma expresión. La medida del ángulo para las identidades trigonométricas hiperbólicas no es la misma sino análoga, por lo que al usar el centro de la hipérbola que existe entre la hipérbola real y su imagen, obtienes el valor de la función sinh. Suponiendo que el objeto está a distancia. r desde el foco primario y centro de hipérbola siendo el origen de referencia pecado F estará dado por:

pecado F = y b

dónde y es la distancia perpendicular desde el eje focal del objeto en la trayectoria, y b es el semieje menor de la cónica.

En cuanto al semieje mayor, se puede obtener mediante la ecuación de la órbita en el periapse para la hipérbola, que es a = h 2 m 1 mi 2 1 , que es positivo.

Para la órbita parabólica, no define la anomalía media, debido a la ausencia correctamente mencionada del centro geométrico, en su lugar, use la ecuación de Baker 2 m pag 3 ( t τ ) = broncearse θ 2 + 1 3 broncearse 3 θ 2 dónde τ es su tiempo de paso periapse y t es el tiempo transcurrido desde el periapsis, y pag es el recto semi-latus que está bien definido para una parábola. Hay soluciones disponibles para esta ecuación que dan la posición del objeto en un momento dado dados algunos parámetros de entrada.

Espero que esto ayude.

A partir de esta respuesta , aquí están las formas de los equivalentes elípticos, parabólicos e hiperbólicos solo para tener todo en un solo lugar. Transcribí de esta práctica tabla y agregué formas alternativas para mi y F de Wikipedia. Hice algunas comprobaciones puntuales con integración numérica solo para asegurarme de que los resultados coincidieran.

Elipse, Círculo ( 0 ϵ < 1 ) :

broncearse mi 2 = 1 mi 1 + mi broncearse θ 2
o
porque mi = mi + porque θ 1 + mi porque θ broncearse θ 2 ,
METRO = mi mi pecado mi ,
Δ METRO = METRO 2 METRO 1 ,
Δ t = a 3 m Δ METRO ,

hipérbola ( ϵ > 1 ) :

bronceado F 2 = mi 1 mi + 1 broncearse θ 2
o
aporrear F = mi + porque θ 1 + mi porque θ broncearse θ 2 ,
METRO = mi pecado F F ,
Δ METRO = METRO 2 METRO 1 ,
Δ t = ( a ) 3 m Δ METRO ,

Parábola( ϵ = 1 ) :

D = broncearse θ 2 ,
METRO = D + D 3 3 ,
Δ METRO = METRO 2 METRO 1 ,
Δ t = q 3 m Δ METRO ,


Para obtener el eje semi-mayor a o para conseguir q , use lo siguiente (no se preocupe de que a es negativo para la hipérbola):

Elipse, hipérbola:

a = r pag mi r i 1 mi

Elipse:

a = r pag mi r i + r a pag o 2

Círculo:

a = r

Parábola:

q = r pag mi r i

Una consulta rápida con m = 1 :

 e      theta      a     v_peri    E/D/F       M         t
1.5   90.000000  -2.0   1.581139  55.14281  40.94513  2.021271
1.0   90.000000   n/a   1.414214  57.29578  76.39437  1.885618
0.5   90.000000   2.0   1.224745  60.00000  35.19020  1.737177
0.0   90.000000   1.0   1.000000  90.00000  90.00000  1.570796

Si quieres probarlo en Python:

def deriv(X, t):
    x, v = X.reshape(2, -1)
    acc  = -mu * x * ((x**2).sum())**-1.5
    return np.hstack((v, acc))

def get_D(theta, e):
    if e == 1.0:
        D    = np.tan(0.5*theta)
    else:
        D    = np.nan
    return D

def get_E(theta, e):
    if e < 1.0:
        term = np.sqrt((1.-e)/(1.+e)) * np.tan(0.5*theta)
        E    = 2.*np.arctan(term)
    else:
        E    = np.nan
    return E

def get_E_alt(theta, e):
    if e < 1.0:
        term = (e + np.cos(theta)) / (1. + e*np.cos(theta))
        E    = np.arccos(term)
    else:
        E    = np.nan
    return E

def get_F(theta, e):
    if e > 1.0:
        term = np.sqrt((e-1.)/(e+1.)) * np.tan(0.5*theta)
        F    = 2.*np.arctanh(term)
    else:
        F    = np.nan
    return F

def get_F_alt(theta, e):
    if e > 1.0:
        term = (e + np.cos(theta)) / (1. + e*np.cos(theta))
        F    = np.arccosh(term)
    else:
        F    = np.nan
    return F

def get_M_from_E(E, e):
    if e < 1.0:
        M = E - e*np.sin(E)
    else: 
        M = np.nan
    return M

def get_M_from_F(F, e):
    if e > 1.0:
        M = e*np.sinh(F) - F
    else: 
        M = np.nan
    return M

def get_M_from_D(D, e):
    if e == 1.0:
        M = D + D**3/3.
    else: 
        M = np.nan
    return M

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

# http://www.bogan.ca/orbits/kepler/orbteqtn.html

quarterpi, halfpi, pi, twopi = [f*np.pi for f in [0.25, 0.5, 1, 2]]
rads, degs = pi/180, 180/pi

mu = 1.0

th0, th1 = 0.0, halfpi
print "th0, th1 (degs): ", degs*th0, degs*th1

eccs = [1.5, 1.0, 0.5, 0.0]

for e in eccs:

    print "e: ", e

    rp =  1.0  # periapsis

    if e < 1.0:
        print "     is ellipse!"

        ra = rp * (1+e)/(1-e)
        print "rp, ra: ", rp, ra

        a0 = 0.5*(rp + ra)
        v0 = np.sqrt(mu * (2./rp - 1./a0))
        print "a0, v0: ", a0, v0

        E0,  E1  = [get_E(th, e) for th in [th0, th1]]
        M0,  M1  = [get_M_from_E(E, e)  for E  in [E0,  E1 ]]
        print "E0, E1 (degs): ", degs*E0, degs*E1
        print "M0, M1 (degs): ", degs*M0, degs*M1

        print "E0, E1: ", E0, E1
        print "M0, M1: ", M0, M1

        dt = np.sqrt(a0**3/mu) * (M1-M0)

        print "dt (sec): ", dt

    elif e > 1.0:
        print "     is hyperbola!"

        ra = rp * (1+e)/(1-e)
        print "rp, ra: ", rp, ra

        a0 = 0.5*(rp + ra)
        v0 = np.sqrt(mu * (2./rp - 1./a0))
        print "a0, v0: ", a0, v0

        F0,  F1  = [get_F(th, e) for th in [th0, th1]]
        M0,  M1  = [get_M_from_F(F, e)  for F  in [F0,  F1 ]]
        print "F0, F1 (degs): ", degs*F0, degs*F1
        print "M0, M1 (degs): ", degs*M0, degs*M1

        print "F0, F1: ", F0, F1
        print "M0, M1: ", M0, M1

        dt = np.sqrt((-a0)**3/mu) * (M1-M0)

        print "dt (sec): ", dt

    elif e == 1.0:
        print "     is parabola!"

        print "rp: ", rp

        v0 = np.sqrt(mu * (2./rp))
        print "v0: ", v0

        D0,  D1  = [get_D(th, e) for th in [th0, th1]]
        M0,  M1  = [get_M_from_D(D, e)  for D  in [D0,  D1 ]]
        print "D0, D1 (degs): ", degs*D0, degs*D1
        print "M0, M1 (degs): ", degs*M0, degs*M1

        print "D0, D1: ", D0, D1
        print "M0, M1: ", M0, M1

        q = rp

        dt = np.sqrt(2.*q**3/mu) * (M1-M0)

        print "dt (sec): ", dt

    time = np.array([0, dt])
    X0   = np.array([rp, 0, 0, v0])

    answer, info = ODEint(deriv, X0, time, atol=1E-13, rtol=1E-13, full_output=True)

    x, y, vx, vy = answer.T
    theta = np.arctan2(y, x)

    print degs*theta[0], degs*theta[-1], " should be ", degs*th0, degs*th1
No entiendo la inclusión de tan(θ/2)en la ecuación coshde la anomalía excéntrica para una trayectoria hiperbólica. No puedo encontrar una referencia de por qué esto sería correcto y se ve mal cuando se grafica.
@PaulWheeler ¡sí, entiendo lo que quieres decir! A primera vista, parece que simplemente transcribí mal la tabla ; cuando copié/pegué algunas líneas de mathjax olvidé borrar ese término. debería ser simplemente
aporrear F = mi + porque θ 1 + mi porque θ ,
Por ejemplo. Una vez que mi café de la mañana comience, volveré a revisar esto y revisaré todo cuidadosamente y luego te enviaré un ping cuando se haya actualizado. ¡Gracias por su comentario!
@PaulWheeler, por cierto, lo arreglaré aquí también.