Resolviendo computacionalmente el problema de dos cuerpos para la aproximación de cónicas parcheadas

He estado tratando de crear una simulación orbital utilizando la aproximación de cónicas parcheadas como el Programa espacial Kerbal. Inicialmente intenté resolver la ecuación de Kepler usando el método de Newton, sin embargo, esto dejaba mucho que desear, ya que requiere que se proporcionen muchas variables iniciales, como el semieje mayor y la excentricidad, mientras que solo tengo un vector de radio y un vector de velocidad. Además, este enfoque parece desmoronarse con órbitas que son parabólicas o hiperbólicas (o rectilíneas), sin mencionar que es bastante computacionalmente intensivo. Esto me lleva al método Goodyear de la respuesta de lamont a esta pregunta.

Determinación de la posición orbital en un punto futuro en el tiempo

Sin embargo, no he podido conseguir que produzca resultados válidos. Todos los vectores de radio que obtengo forman líneas rectas. Por lo que entiendo, todo lo que se requiere es el vector de radio inicial, el vector de velocidad, el parámetro gravitatorio y el intervalo de tiempo. He estado dando estos valores en unidades SI, metros y segundos. ¿Espera unidades diferentes?

Si todo lo anterior falla, ¿existen otras soluciones generales para el problema de los dos cuerpos que solo requieran el vector de radio y el vector de velocidad iniciales, y que puedan devolver un vector de radio y un vector de velocidad en algún momento 't' en el futuro? ¿Y cuál de estos se presta mejor a una aproximación cónica parcheada?

Solo una suposición: mencionas el parámetro gravitacional y luego los kilogramos. Parámetro gravitacional ( GRAMO METRO ) no contiene masa en su dimensión, su dimensión es L 3 T 2 . Si el código esperara el parámetro gravitatorio en m3/s2, y usted diera la masa en kg, eso estaría mal por muchos órdenes de magnitud.
Ese es mi error. Edité la pregunta para eliminar kilogramos. Nunca usé kilogramos en el cálculo. Usé el parámetro gravitatorio de la Tierra en m^3/s^2, que era aproximadamente 3,986E14 m^3/s^2. Las unidades correctas deben haberme pasado por alto al escribir la pregunta.
si tiene un parámetro gravitacional, un vector de distancia radial y un vector de velocidad, tiene un eje semimayor a través de la energía orbital específica y la excentricidad orbital a través del vector de excentricidad . Las versiones hiperbólicas de las ecuaciones de Kepler cambian los signos y sustituyen las funciones trigonométricas hiperbólicas, y la parábola puede tratarse con su propio conjunto especial de ecuaciones o ignorarse cortésmente.
Recomendaría el método de Shepperd de ese enlace en mi respuesta a esa otra pregunta. También puede implementar el método de Danby para resolver la ecuación de Kepler a partir de la implementación de Matlab de David Eagle: mathworks.com/matlabcentral/fileexchange/… Esta respuesta debería ayudarlo a probar estos algoritmos: space.stackexchange.com/questions/20669/… -- puede genere un montón de soluciones de Kepler y utilícelas para probar los tres tipos de solucionadores.
El repositorio de David Eagle también tiene funciones eci2orb1 y orb2eci que convierten a/desde vectores de estado y elementos keplerianos, por ejemplo, en este repositorio: mathworks.com/matlabcentral/fileexchange/… y tiene un archivo glambert.m que es un solucionador de Gooding Lambert como Bueno. Su eci2orb1, orb2eci, glambert, kepler1 (Danby) y twobody2 (Shepperd) forman una buena caja de herramientas para resolver keplerianos. En mi opinión, implementarlos todos.

Respuestas (1)

Probablemente ya encontraste una respuesta cuando publicaste esta pregunta, pero todavía doy una respuesta en caso de que te ayude.

Usar los elementos orbitales es la "manera correcta" de hacerlo. Hay 6 de ellos, descritos en este artículo de Wikipedia :

  • excentricidad mi
  • semieje mayor a
  • inclinación i
  • longitud del nodo ascendente Ω
  • argumento del periapsis ω
  • verdadera anomalía θ (que depende del tiempo)

Los primeros cinco describen completamente la geometría de una órbita en 3D. La verdadera anomalía es un ángulo que se refiere a la posición del cuerpo/nave espacial en esa órbita. Puede calcular todos estos parámetros a partir de vectores de estado inicial (posición y velocidad), conociendo el parámetro gravitatorio estándar del cuerpo atractor. René Schwarz describe las matemáticas en este PDF sobre cómo convertir vectores de estado orbitales cartesianos en elementos orbitales.

Una vez que tenga los elementos de una órbita, puede usarlos para calcular los vectores de estado (vector de posición/radio y vector de velocidad) en cualquier momento siguiendo este otro PDF sobre cómo convertir elementos orbitales en vectores de estado cartesianos. Sin embargo, algunas fórmulas descritas en el documento solo funcionan para órbitas elípticas. Para órbitas hiperbólicas (cuando mi > 1 ) tendrás que usar otras fórmulas para la anomalía excéntrica y verdadera (ver este artículo de Wikipedia y la segunda respuesta en esta publicación ), así como adaptar la fórmula para el vector de velocidad del documento (ver esta publicación ).

Las matrices de rotación de aspecto "complicado" que establecen la posición y la velocidad de la nave espacial/cuerpo en el espacio 3D se pueden desarrollar en estos pasos:

  • Elija los vectores de referencia para "derecha" y "arriba", por ejemplo, la dirección x (1, 0, 0) y la dirección y (0, 1, 0), los llamo tu X y tu y .
  • Calcule el vector de nodo ascendente tu a s C : es tu X girado alrededor tu y por un ángulo Ω ;
  • Establecer la posición r = o y la velocidad v = o ˙ como se describe en el documento (con la fórmula modificada en caso mi > 1 );
  • Girar r y v alrededor tu y de un ángulo Ω + ω ;
  • Girar de nuevo r y v alrededor tu a s C de un ángulo i .

(Tenga en cuenta que en los documentos de René Schwarz, considera el eje z como el eje "arriba", en lugar del eje y)

El caso de una órbita parabólica ( mi = 1 ) puede ser, como dijo notovny en un comentario, cortésmente ignorado (aplicar el algoritmo de avestruz ).

Sin embargo, tenga en cuenta que es posible que deba tener en cuenta los casos extremos. es decir, cuando se trata de órbitas que son muy cercanas a las circulares o tienen una inclinación nula. En estos casos, las fórmulas para ángulos, como la anomalía verdadera en el primer documento, no funcionarán (darán valores de NaN debido a la precisión del punto flotante y los redondeos). Por lo tanto, para estos casos particulares, deberá establecer vectores predeterminados, por ejemplo, el vector excéntrico, y calcular los ángulos a partir de él.

En cuanto a las unidades, las fórmulas de hecho esperan unidades SI. (Sin embargo, puede usar cualquier múltiplo de estas unidades siempre que lo tenga en cuenta en las ecuaciones).