¿Qué variables se necesitan para calcular tiempos de órbita de herradura simple?

EDITAR Esto NO fue un duplicado de los tiempos de ciclo de la órbita de Horseshoe .

Pero esa otra pregunta ha sido eliminada, independientemente . Mi pregunta original pedía la respuesta a la(s) ecuación(es) y proporciona muchas de las variables. Pero dado que aparentemente nadie estaba dispuesto/capaz de responderla, esta nueva pregunta solo solicita la forma de la(s) ecuación(es) en sí y una lista de variables involucradas, de modo que pueda proporcionar más información en una pregunta futura, o intentar y resolver las ecuaciones yo mismo (aunque dudo de mi habilidad matemática para hacer eso, de ahí la pregunta original, si sé qué ecuaciones y variables están involucradas, al menos puedo intentarlo yo mismo).

¿Qué variables deben conocerse para calcular el tiempo de ciclo de una órbita de herradura?

En otras palabras: ¿Cuál es la ecuación y qué representan las variables en esa ecuación (velocidad, masa, semiejes mayores, etc.) para calcular el tiempo que le toma a un objeto ir desde el Punto A en esa imagen, a través de ¿Puntos B, C, D y E y de regreso a A, a lo largo de la línea azul claro en la imagen de arriba (imagen también disponible aquí )?

Por ejemplo, la Tierra y Cruithne completan su ciclo en 770 años, mientras que Jano y Epimeteo completan el suyo en 8 años. Estoy seguro de que los semiejes principales son factores clave en la ecuación, pero no sé qué otras variables se incluyen o cómo se relacionan entre sí en el cálculo.

Además, entiendo que estas órbitas no son estables, a largo plazo, y que mi ejemplo de Cruithne es especialmente complejo, ya que en realidad cambiará los tipos de órbita periódicamente y probablemente será expulsado por completo del sistema solar o impactará el Sol. o Júpiter, en algún momento. Pero esas complejidades son para otro momento. Para esta pregunta, solo quiero saber la ecuación en su forma más simple.

Eso no es realmente un gráfico de una órbita de herradura, es una línea equipotencial para un pseudopotencial en un marco giratorio para un objeto con velocidad cero en ese marco. Si el objeto estuviera en una órbita de herradura real, esas líneas potenciales cambiarían. Me pregunto si puedes encontrar una imagen de una órbita de herradura real.
Consulte también los tiempos de ciclo de la órbita de herradura , que también usa incorrectamente esa imagen y actualmente no tiene respuesta. También está sin respuesta las órbitas de herradura y la integración en C
Espere, los tiempos de ciclo de la órbita de herradura son su pregunta, que también ha publicado en Physics SE . ¿En qué se diferencia esta pregunta de aquellas?
@uhoh Mi pregunta original pide la respuesta a la ecuación con muchas de las variables ya proporcionadas. Este solo pide la(s) ecuación(es) para asegurarme de que sé todo lo que necesito proporcionar en mi pregunta original, o tal vez intentar resolverla yo mismo (aunque dudo de mi habilidad matemática para completar el cálculo yo mismo, ya que no uno está dispuesto/capaz de responder a mi pregunta original, pensé que esta sería mi mejor oportunidad para acercarme a la respuesta yo mismo).
@uhoh Además, entiendo que la imagen no es (exactamente) una órbita de "herradura" específicamente, pero ES una representación perfecta de exactamente lo que realmente quiero saber. Quiero saber cómo calcular el tiempo para el ciclo completo ilustrado, cuánto tiempo le toma a uno de los objetos en órbita hacer dos acercamientos (uno de cada lado) al otro objeto en órbita, cuánto tiempo le toma completar uno de esos ciclos
eso tiene sentido. Creo que el tema del tiempo de ciclo de las órbitas en herradura es realmente interesante. Me gustaría proponer un curso de acción. ¿Por qué no elimina temporalmente su otra pregunta para abordar cualquier problema de duplicación y déjeme reescribir un poco esta pregunta? Entonces votaré para reabrirlo. Planeo visitar la biblioteca mañana y puedo hacer una búsqueda sobre esto y ver qué modelos analíticos se han publicado.
Cuando eliminas una publicación, en realidad nunca se elimina. Durante los primeros meses todavía aparece en su lista de preguntas. Aquí está el mío, y puede ver el enlace en la parte inferior para los eliminados recientemente i.stack.imgur.com/G3Wh9.png Puede recuperarlos en cualquier momento. Si copia el enlace a su pregunta y lo guarda en algún lugar, podrá acceder a él en cualquier momento en el futuro.
Todas estas son órbitas inestables...
@uhoh Eliminado. No me preocupa perder esa otra pregunta, tengo notas para poder hacerla nuevamente, si es necesario.
@peterh Si / cuando descubra cómo hacer estos cálculos, usaré esa información de una manera que no requiera estabilidad a largo plazo en escalas de tiempo geológicas. Soy consciente de su inestabilidad inherente y lo he tenido en cuenta para mis objetivos finales. Pero gracias por la preocupación y señalarlo.
@Dalila Ya casi termino, lo publicaré más tarde hoy. ¡Esto resulta ser un problema realmente interesante!
Respuesta de @Dalila publicada, avíseme si tiene más preguntas.

Respuestas (2)

Eso depende de la precisión con la que quieras trabajar. En orden cero, como se describe en Murray & Dermott, "Dinámica del sistema solar", Capítulo 3, puede hacer lo siguiente:

  • Los contornos de velocidad cero que se trazan en su imagen no coincidirán con las órbitas de las partículas con una precisión infinita, pero son una buena aproximación de orden cero para objetos con baja excentricidad respecto a la estrella ( v r / v θ 1 )
  • Una partícula en esas órbitas está en una órbita Kepleriana regular de radio r H , fuera del alcance de la influencia gravitatoria del planeta en r PAG . Por lo tanto, para obtener el "trozo" más grande de tiempo de viaje de una parte de la órbita de herradura, ya sea la parte interna o externa, puede trabajar con velocidades relativas y la suposición de velocidades keplerianas.
  • Se requiere precaución en cuanto a qué tiempo orbital le interesa: si a es la distancia de la Tierra al sol, y la herradura es d lejos de una órbita perfectamente circular, alternando así entre distancias a ± d , entonces el tiempo orbital en el marco de reposo del sol será v = GRAMO METRO a d , para un gran número de órbitas hasta el encuentro cercano, y después de eso v + = GRAMO METRO a + d .
  • Por lo tanto, el caso simplificado de que el satélite está en su propia órbita kepleriana es cierto la mayor parte del tiempo. Armados con este conocimiento, podemos aproximar el tiempo de recurrencia planetocéntrica como t r mi C = 2 π a v k v como un simple tiempo de recuperación entre objetos en diferentes órbitas.
  • La velocidad relativa v r mi yo = v k v = GRAMO METRO a GRAMO METRO a d puede expandirse en el límite de d / a 1 en v r mi yo 1 2 GRAMO METRO a d a y así derivo de esto t r mi C 4 π GRAMO METRO a 5 / 2 d . Como era de esperar, el tiempo de ciclo diverge para d = 0 , como en el caso de la coorbita con la Tierra este tiempo debe ser infinito. Un límite superior en d no se puede derivar de esto, uno tendría que buscar la solución completa para eso.

Solo por curiosidad, ingresé algunos valores en esta fórmula y escribí algo rápido en python:

import numpy as np

#Basic physics quantities
G      = 6.678e-8 #cgs units
pi     = 3.141592
navo   = 6e23 # particles per mole
sigma  = 5.67e-5   #erg cm-2 s-1 K-4
kb     = 1.38e-16  #erg/K
km     = 1e5 #kilometers in cm
mearth = 5.98e27  #g
msun   = 2.0e33   #g
au     = 1.49e13  #cm
yr   = 365*24*3600
rearth   = 6370e5
rjupiter = 74000*km

#
# Returns the approximate horseshoe-cycle time in the reduced 3body problem
# Masses of bodies: m0>>m1>>m2
# Semimajor axis distance is from m0 to m1, radial distance is a(m0->m1)-a(m0->m2)
#
def hs_cycle(mcentral, semimajor_axis, radial_distance):
    return 4*pi/np.sqrt(G*mcentral)*semimajor_axis**(5./2.)/radial_distance/yr

#
# https://en.wikipedia.org/wiki/(419624)_2010_SO16 around the Sun
#
# Quoted cycle time ~350 years, with d=0.004 AU
#
print("Predicted 2010_SO16 cycletime [years] = ", hs_cycle(msun, 1*au,0.004*au), " predicted = 350 yrs")

#
# Janus/Epimetheus around Saturn
#
# a = 151410 km, d = 25 km, as stated in https://en.wikipedia.org/wiki/Epimetheus_(moon)
# Quoted cycle time = 8 years (from comments)
#
print("Predicted Janus/Epimetheus cycletime [years] = ", hs_cycle(95*mearth, 151410*km,50*km), " predicted = 4 yrs")


#
# 3753 Cruithne
#
# a = 1 AU and semimajor axis difference from https://en.wikipedia.org/wiki/3753_Cruithne
# Quoted cycle time = 770 years
#
print("Predicted 3753 Cruithne cycletime [years] = ",hs_cycle(msun, 1*au, (1.0-0.99774)*au), " predicted = 770 yrs")

y los resultados que obtengo son

Predicted 2010_SO16 cycletime [years] =  495.7747141830971  predicted = 350 yrs
Predicted Janus/Epimetheus cycletime [years] =  11.542076781209305  predicted = 8 yrs
Predicted 3753 Cruithne cycletime [years] =  877.4773702355546  predicted = 770 yrs

Por lo tanto, la fórmula puede tener un error de hasta un factor de ~2. Esto es seguro simplemente porque la realidad es más compleja que una simple aproximación de órbita circular, pero también debido a la calidad de los valores utilizados. Wikipedia no es muy conocida por investigar bien valores particulares. Tomé los que encontré allí. Para SO16, eso fue particularmente confuso de seleccionar, así que tomé los dos que se mencionaron en la misma línea de texto, con la esperanza de que vinieran de la misma fuente.

Cualquiera que encuentre valores más consistentes, es libre de comentar.

Si bien entiendo que la precisión es un problema, hasta cierto punto, tengo problemas para conciliar esta ecuación con los ejemplos que proporcioné de Earth+Cruithne y Janus+Epimetheus. Comprendería una desviación de algunas décadas en un ciclo de 770 años, o varios meses o un año en un ciclo de 8 años. Pero obtengo valores de cientos de miles de años en uno y un par de semanas en el otro. ¿Que me estoy perdiendo aqui?
@Dalila: no obtengo esos valores. El mío parece mucho más razonable, pero sigue siendo una aproximación. Debe tener cuidado con cuál es el semieje mayor y el valor d, que es la diferencia del semieje mayor y el segundo cuerpo masivo. El objeto central es el Sol para Cruithne y Saturno para JEpi. Pero agregué mi código, para que pueda verificarlo usted mismo y, por supuesto, profundizar en la literatura si lo desea.
Creo que aquí es donde me encontré con problemas: "Tienes que tener cuidado con lo que es el semieje mayor y el valor d, que es la diferencia del semieje mayor y el segundo cuerpo masivo". ¿Puedes aclarar ese valor? ¿Quiso decir que es la diferencia entre los ejes semi-mayores de los dos cuerpos coorbitales? Solo quiero asegurarme de que entendí bien el último comentario.
@Dalila: si denotamos los cuerpos por 0,1,2, y las masas son metro 2 metro 1   gramo gramo metro 0 , entonces d es la diferencia de semiejes mayores a 01 a 02 . Tenga en cuenta que esto no debería excluir a Janus y Epimetheus, ya que obedecen a la misma física que una órbita de herradura normal: cada luna orbita individualmente a Saturno sin perturbaciones, la mayor parte del tiempo. Entonces, no estoy seguro de qué está mal con el valor que obtengo para JEpi.
Gracias por esa aclaración. Entendí que el ciclo JEpi era de 8 años, en total, no de 4. 4 años fue el tiempo entre los dos enfoques del ciclo, por lo que 11 contra 8 es en realidad un margen de error razonable, al menos para mis propósitos, en ese cálculo. ¿Entendí mal algo más en eso?
@Dalila: No creo que hayas entendido mal eso. No sé cuál es el tiempo real del ciclo, simplemente busqué rápidamente los valores que parecían estar correctamente ubicados en wiki;) Entonces, probablemente sea mi error si en realidad son 8 años.

Ernest W. Brown's On a New Family of Periodic Orbits in the Problem of Three Bodies: (Plates 6, 7.) en MNRAS, 71, (5), pp 438–454 publicado el 10 de marzo de 1911 parece ser donde las órbitas de herradura estaban primero propuesto. (Disponible aquí también). Comienza:

Hay cuatro asteroides conocidos que parecen oscilar alrededor de uno u otro de los vértices de los dos triángulos equiláteros que tienen como base la línea que une a Júpiter y al Sol. Estos vértices son las conocidas posiciones de equilibrio relativo. El vector heliocéntrico de uno de estos asteroides aparentemente puede alejarse hasta 17° de su posición de equilibrio.* Por lo tanto, las oscilaciones no pueden considerarse muy pequeñas. Naturalmente, uno se pregunta si son posibles oscilaciones de este tipo en arcos de extensión aún mayor; y si es así, de qué manera se pueden obtener las órbitas más convenientemente.

*LJ Linders, Arhivfor Mat., Ast. och Fys., So. Veterinario. Alaska. yo Estocolmo, Bd. 4, núm. 20.



Haré algunas órbitas de herradura en el formalismo del problema circular restringido de tres cuerpos y las trazaré en Python, luego las compararé con la estimación del período sinódico descrita en la respuesta de @AtmosphericPrisonEscape .

tl;dr: Hay un buen acuerdo cualitativo, ¡sin sorpresas!


Un breve resumen de las matemáticas CR3BP en unidades adimensionales. La distancia entre los dos cuerpos es igual a 1, al igual que la constante gravitatoria. Orbitan alrededor de un centro de masa común en órbitas circulares, con un período de 2 π . Es más fácil de visualizar y calcular si lo haces en un marco giratorio, por lo que las dos masas están fijas. El tercer cuerpo en la posición X , y , z se considera que no tiene efecto gravitatorio sobre los dos primeros,

m = metro 2 metro 1 + metro 2

X 1 = m
X 2 = 1 m

r 1 = ( X X 1 ) 2 + y 2 + z 2
r 2 = ( X X 2 ) 2 + y 2 + z 2

La Energía de Jacobi C es una cantidad conservada en este marco giratorio:

C = X 2 + y 2 + 2 1 m r 1 + 2 m r 2 ( X ˙ 2 + y ˙ 2 + z ˙ 2 )

donde el X 2 + y 2 es el pseudopotencial. Si establece los términos dependientes de la velocidad ( X ˙ 2 + y ˙ 2 + z ˙ 2 ) a cero, obtienes una superficie de velocidad cero , esa superficie que se pega en muchas/la mayoría de las preguntas sobre tres órbitas corporales. Estos gráficos no se aplican cuando un objeto se está moviendo, por lo que no puede superponer órbitas encima de ellos.

curva aleatoria de velocidad cero

La aceleración que siente el tercer cuerpo en este marco giratorio tiene tanto la esperada 1 / r 2 fuerzas y una pseudofuerza dependiente de la velocidad que no es real, pero explica el hecho de que el marco gira y no es inercial.

X ¨ = X + 2 y ˙ ( 1 m ) ( X + m ) r 1 3 m ( X 1 + m ) r 2 3
y ¨ = y 2 X ˙ ( 1 m ) y r 1 3 m y r 2 3
z ¨ = ( 1 m ) z r 1 3 m z r 2 3


Aquí hay algunos cálculos. Elegí m = 0.001 que está bastante cerca de la situación de Júpiter y el Sol. Elegí una matriz de puntos de partida en el punto opuesto de metro 2 a aproximadamente X = 1 pero eso no es lo que realmente hice. Lo que realmente hice fue elegir un montón de velocidades iniciales 0.08 < y ˙ < 0.08 y para cada uno calculé la posición en el X eje cerca X = 1 donde la aceleración en el X dirección era cero.

Eso le da a las soluciones un poco de simetría inicial, pero las órbitas de halo son irregulares y onduladas y no siempre tan estables, por lo que este esfuerzo no es realmente necesario.

Propagué cada órbita hasta que volvió a la misma área y la detuve cuando cruzó el eje x, produciendo una familia de semiciclos.

Para abreviar, el método que se muestra en la respuesta de @AtmosphericPrisonEscape de estimar el tiempo del ciclo calculando el período sinódico en el marco inercial está bastante de acuerdo con estas órbitas de halo, ¡y eso no debería ser muy sorprendente!

ingrese la descripción de la imagen aquí

arriba: semiciclos de algunas órbitas de herradura tambaleantes

ingrese la descripción de la imagen aquí

arriba: tiempos hasta los primeros cruces del eje x de las mismas órbitas de herradura tambaleantes, utilizadas para calcular tiempos de medio ciclo.

ingrese la descripción de la imagen aquí

arriba: tiempos de ciclo de este cálculo (puntos negros) frente al método de estimación del período sinódico (puntos rojos). Buen acuerdo cualitativo. También las velocidades iniciales y en cada punto inicial en x.

a continuación: secuencia de comandos de Python para estas parcelas.

def x_acc(x, ydot):
    r1    = np.abs(x-x1)
    r2    = np.abs(x-x2)
    xddot = x + 2*ydot  -  ((1-mu)/r1**3)*(x+mu) - (mu/r2**3)*(x-(1-mu))
    return xddot

def C_calc(x, y, z, xdot, ydot, zdot):
    r1 = np.sqrt((x-x1)**2 + y**2 + z**2)
    r2 = np.sqrt((x-x2)**2 + y**2 + z**2)
    C = (x**2 + y**2 + 2.*(1-mu)/r1 + 2.*mu/r2 - (xdot**2 + ydot**2 + zdot**2))
    return C

def deriv(X, t): 
    x, y, z, xdot, ydot, zdot = X
    r1 = np.sqrt((x-x1)**2 + y**2 + z**2)
    r2 = np.sqrt((x-x2)**2 + y**2 + z**2)
    xddot = x + 2*ydot  -  ((1-mu)/r1**3)*(x+mu) - (mu/r2**3)*(x-(1-mu))
    yddot = y - 2*xdot  -  ((1-mu)/r1**3)*y      - (mu/r2**3)*y
    zddot =             -  ((1-mu)/r1**3)*z      - (mu/r2**3)*z
    return np.hstack((xdot, ydot, zdot, xddot, yddot, zddot))

# http://cosweb1.fau.edu/~jmirelesjames/hw4Notes.pdf

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

halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]

mu = 0.001

x1 = -mu
x2 = 1. - mu

x = np.linspace(-1.4, 1.4, 1201)
y = np.linspace(-1.4, 1.4, 1201)

Y, X = np.meshgrid(y, x, indexing='ij')
Z    = np.zeros_like(X)

xdot, ydot, zdot = [np.zeros_like(X) for i in range(3)]

C = C_calc(X, Y, Z, xdot, ydot, zdot)
C[C>8] = np.nan

if True:
    plt.figure()
    plt.imshow(C)
    plt.colorbar()
    levels = np.arange(2.9, 3.2, 0.04) 
    CS = plt.contour(C, levels,
                 origin='lower',
                 linewidths=2) 
    plt.show()

ydot0s   = np.linspace(-0.08, 0.08, 20)
x0ydot0s = []
for ydot0 in ydot0s:
    x0, infob =  brentq(x_acc, -1.5, -0.5, args=(ydot0), xtol=1E-11, rtol=1E-11,
                           maxiter=100, full_output=True, disp=True)
    x0ydot0s.append((x0, ydot0))

states = [np.array([x0, 0, 0, 0, ydot0, 0]) for (x0, ydot0) in x0ydot0s]

times  = np.arange(0, 150, 0.01)

results = []
for X0 in states:
    answer, info = ODEint(deriv, X0, times, atol = 1E-11, full_output=True)
    results.append(answer.T.copy())

resultz = []
for x0ydot0, thing in zip(x0ydot0s, results):
    y     = thing[1]
    check = y[2:]*y[1:-1] < 0
    zc    = np.argmax(y[2:]*y[1:-1] < 0) + 1
    if zc > 10:
        resultz.append((thing, zc, x0ydot0))

if True:
    plt.figure()
    hw = 1.6
    for j, (thing, zc, x0ydot0) in enumerate(resultz):
        x, y = thing[:2,:zc]
        plt.plot(x, y)
    plt.xlim(-hw, hw)
    plt.ylim(-hw, hw)
    plt.plot([x1], [0], 'ok')
    plt.plot([x2], [0], 'ok')
    plt.show()

if True:
    plt.figure()
    for j, (thing, zc, x0ydot0) in enumerate(resultz):
        x, y = thing[:2]
        plt.plot(times[:zc], y[:zc])
    plt.show()

if True:
    plt.figure()
    for j, (thing, zc, x0ydot0) in enumerate(resultz):
        x0, ydot0 = x0ydot0
        cycle_time = 2. * times[zc] / twopi
        ratio = abs(x0/x2)
        T_simple_model = twopi * abs(x0/x2)**1.5
        T_synodic_simple_model = 1. / (1. - twopi/T_simple_model) # https://astronomy.stackexchange.com/a/25002/7982
        plt.subplot(2, 1, 1)
        plt.plot(x0, cycle_time, 'ok')
        plt.plot(x0, abs(T_synodic_simple_model), 'or')
        plt.subplot(2, 1, 2)
        plt.plot(x0, ydot0, 'ok')
    plt.subplot(2, 1, 1)
    plt.xlabel('x0', fontsize=16)
    plt.ylabel('cycle times (periods)', fontsize=16)
    plt.subplot(2, 1, 2)
    plt.xlabel('x0', fontsize=16)
    plt.ylabel('ydot0', fontsize=16)
    plt.show()
Ja, eso es bueno. Ayer también estaba trabajando en mi propio solucionador de tres cuerpos para probar la fórmula, pero se me adelantó.
@AtmosphericPrisonEscape He estado incursionando en esto durante mucho tiempo , pero tengo un largo camino por recorrer.