Diferencias entre propagadores numéricos

Soy un aprendiz que está trabajando en un propagador orbital numérico desarrollado en la empresa. No puedo mostrarte el código, pero puedo decirte que el propagador fue desarrollado para funcionar en Simulink. Mi trabajo consistía en extraer el propagador para usarlo como script de Matlab. Para evaluar el funcionamiento de mi script, estoy comparando los resultados obtenidos con los de otro propagador numérico (GMAT). Los elementos orbitales iniciales son de una órbita SSO de seguimiento terrestre repetido. Por el momento, estoy considerando las perturbaciones debidas solo a J2 y estoy usando un integrador tipo Runge Kutta de cuarto orden. Los análisis con los dos propagadores durante un período de 52 días con un tamaño de paso fijo de 60 segundos tienen las diferentes tendencias que se muestran en la figura (la izquierda muestra los elementos orbitales mientras que la derecha muestra el vector de estado).

ingrese la descripción de la imagen aquí

No puedo explicar esta diferencia, particularmente en el vector de estado del que se derivan los elementos orbitales. Al principio pensé que se debía a los sistemas de referencia, ya que los datos del GMAT están en el ICRF mientras que los datos de mi propagador están en el GCRS. Así que usé las mismas funciones de conversión en los datos del GMAT y comparando (estos nuevos resultados) con los originales no hubo errores, excepto los debidos a los numéricos. Así que pensé que era la función geopotencial la que estaba mal. Pero incluso en este caso, pasando el mismo vector de estado de GMAT, las aceleraciones calculadas por la función fueron las mismas que las proporcionadas por el software. Así que creo que puede ser culpa del integrador, ya que existe la deriva periódica del error que se muestra en la siguiente figura.ingrese la descripción de la imagen aquí

El Runge-Kutta, sin embargo, también en comparación con lo que he encontrado en la web parece estar bien configurado. ¿Puedes pensar en una razón que explique estas discrepancias?

Agrego más gráficos para mostrarle la tendencia de los elementos orbitales y el vector de estado en 24 horas. Con el tiempo, las diferencias tienden a aumentar. En particular, mi propagador parece acelerado en comparación con el de GMAT.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

¡Pregunta interesante y directamente sobre el tema aquí en Space SE!
Crucial para saber sería: ¿esos datos de referencia GMAT se calculan exactamente con la misma configuración, potencial gravitacional, etc., o simplemente con una configuración que cree que debería ser la misma?
Sí, configuré el mismo grado y orden para el geopotencial, que es la única perturbación que estoy considerando, también los mismos elementos orbitales, época e integrador (RK4 con 60 segundos de tamaño de paso fijo). La única diferencia es que GMAT considera el modelo EGM-96 mientras que mi propagador considera el EGM-2008 y se basa en las convenciones IERS Tech Note 36. También los resultados del GMAT están en el ICRF mientras que los míos están en el GCRS. Esa fue la razón por la que esperaba resultados diferentes pero no un error tan alto.
...bueno, eso ya es un montón de cosas que podrían salir mal. Es casi seguro que estas discrepancias provienen de estos detalles, y el solucionador de ODE no tiene nada que ver con ellos. ¿Diferentes índices/convenciones complejas, etc. para los coeficientes de geopotencial? ¿Algo en las transformaciones de coordenadas? Y, ¿solo estás usando cuadrupolo pero GMAT usa todo?

Respuestas (3)

Debería verificar qué propagador GMAT está usando. Un método RK4 de tamaño de paso constante se alejará de la verdadera solución de la ODE con el tiempo, por lo que si GMAT está usando un método de tamaño de paso adaptativo que en algunos puntos va del orden de milisegundos a decenas de segundos, es probable que sea más cerca de la solución que RK4.

En esencia, esto es lo que está haciendo el tamaño de paso constante de RK4: ingrese la descripción de la imagen aquítoma múltiples evaluaciones de la derivada entre ahora y el próximo paso de tiempo para obtener una mejor estimación de cómo está cambiando la función (a diferencia de decir un método de Euler de primer orden ). Luego toma una media ponderada de esas estimaciones para determinar qué derivada utilizará para dar este paso. Entonces, como se puede ver en la gráfica, en algunos puntos subestima el área bajo la curva y en otros lo sobreestima, lo que generará un error con el tiempo.

Aquí hay una versión alejada (y un paso de tiempo de 500 segundos) para mostrar el efecto.ingrese la descripción de la imagen aquí

Dado que está utilizando 60 segundos, el error crecerá menos rápidamente pero, sin embargo, se desviará con el tiempo.

Un solucionador de tamaño de paso adaptativo cambiará su tamaño de paso en función de la rapidez con la que cambia la derivada (la segunda derivada):ingrese la descripción de la imagen aquí

Entonces, si la derivada está más cerca de la constante, significa que la solución está cerca de la lineal, por lo que el solucionador puede tomar pasos de tiempo más grandes. Pero si la derivada está cambiando, la solución no es lineal, el solucionador debe tomar pasos de tiempo más pequeños.

El más común de estos métodos es RK4-5, que compara la solución de los métodos RK4 y RK5 y, en función de cuán diferentes sean, cambiará el paso de tiempo en consecuencia.

Entonces, en general, es posible que no haya ningún problema con la implementación de su modelo / RK4, puede depender del propagador GMAT que esté usando con el que esté comparando su solución

Además, si tiene curiosidad, estas capturas de pantalla provienen de un video que hice sobre los solucionadores de ODE:

@ChrisR ¿No publiqué la pregunta? Tampoco uso Simulink, Matlab o GMAT
Hola @AlfonsoGonzalez, gracias por tu respuesta. En GMAT (para tener resultados consistentes) he usado un Runge Kutta 4 y forcé el tamaño del paso a permanecer constante configurando 60 segundos como tamaño de paso mínimo y máximo. Por esta razón esperaba obtener los mismos resultados. En cualquier caso, ya estaba pensando en implementar un tamaño de paso adaptativo. Intentaré solucionarlo así. Gracias de nuevo por la respuesta.
Retiro mi comentario anterior. Creo que me llamó la atención el autor de "Última modificación" y pensé que Alfonso había escrito la pregunta y la había respondido. Mis disculpas.
@ChrisR ¡No te preocupes!
+1Al mirar el primer gráfico del OP y el gráfico de diferencias, lo primero que noté es que el azul siempre es "borroso" en comparación con el rojo; las excursiones de error dentro de una órbita parecen ser grandes. Eso ciertamente es consistente con que el tamaño del paso es demasiado grande para el método utilizado; promediados sobre cualquier órbita completa, los errores pueden tender a cancelarse, pero las desviaciones simétricas dentro de la órbita pueden hacer que parezca más ruidoso.
@uhoh gracias por tu respuesta. Tal vez el "borroso" del blu se deba a la especificación de línea '--' establecida en Matlab Plot. A pesar de esto, ¿cómo lo resolverías? Probé un integrador de tipo Runge-Kutta-Fehlberg como se recomienda, pero nada ha cambiado.
@Frank podemos reemplazar "borroso" con "grueso" o "ancho". Bueno, dado que hay desacuerdo, podemos saber que uno o ambos están simplemente equivocados. Lo que recomiendo es aislar la integración de cualquier otra cosa. Obtenga su vector de estado inicial e inicie un programa simple en Matlab o, mejor aún, Python de código abierto e integre para una y luego algunas órbitas y compare directamente. Agregaré una respuesta sobre cómo hacerlo en unas pocas horas.
Agregando al comentario de @uhoh, también podría intentar probar la diferencia entre este propagador GMAT y el ode45 de Matlab (así como su propagador). Por lo general, también alentaría a Python, pero creo que la compañía de OP está buscando esto en Matlab

Las respuestas anteriores contienen buena información general, pero TBH no me parece muy útil para la pregunta.

La verificación de cordura más fundamental con un solucionador numérico es: ¿cómo cambia el resultado cuando varía el tamaño del paso? Mantenlo lo más simple posible. Simule durante un solo día y pruebe diferentes tamaños de pasos. Como, prueba un paso de 6 segundos, 30 segundos, 200 segundos, 600 segundos. ¿Cómo se diferencian?

Los 600 segundos probablemente se comporten de manera muy extraña, pero los otros, no sé, deberías intentarlo. Si la solución de h = 6 segundos es esencialmente la misma que la de h = 60 s, en particular si tiene consistentemente las mismas desviaciones del GMAT, entonces evidentemente tiene un problema que es más fundamental y no tiene que ver con el integrador en absoluto. Esto podría ser muchas cosas diferentes.

Solo si ha establecido que definitivamente ha configurado todo como debe ser, debe concentrarse en obtener lo mejor de su solucionador numérico.

¡Gracias por tu respuesta! Tienes razón, de hecho ya he notado que cambiar el tamaño del paso no afecta la solución o las desviaciones con GMAT. Lo mismo sucede con diferentes integradores. El problema es que ya he validado la función que calcula la derivada del vector de estado, porque los resultados son los mismos de GMATS. Por lo tanto, si el integrador funciona bien y también hace la función que calcula las aceleraciones debidas a las perturbaciones... ¿qué causa este problema? Además, con menor altitud e inclinación, el error parece menor, aunque no despreciable.

Su integrador numérico, RK4, no es apropiado para la tarea. El orden es demasiado bajo para la precisión que desea. También es un tamaño de paso fijo. No has hecho tu investigación sobre esto. Las tasas de propagación de errores para los integradores RK de paso fijo son tan malas como parece. Investigue integradores predictores-correctores de alto orden... orden 8 con (al menos) operaciones de coma flotante de 64 bits (incluso si son de paso fijo).

Puede buscar integradores RK incorporados que usen un integrador RK de orden inferior como predictor dentro de un integrador RK de orden superior. Mire RK78 como un reemplazo para su RK4. En el pasado, ese integrador ha sido un caballo de batalla para los mecánicos orbitales. Este le brindará acuerdos de datos mucho mejores y una buena precisión en intervalos de tiempo más largos.

Adams-Moulton, o mejor aún, Adams-Bashforth-Moulton, son predictores-correctores que se pueden codificar fácilmente en cualquier orden que desee. Sus tasas de propagación de errores son menores que cualquier método RK del mismo orden. Los integradores de Gauss-Radau también son muy precisos y se adaptan bien a las integraciones de mecánica orbital. No los codifique usted mismo. Descargar.

Hay muchos métodos predictores-correctores de paso variable que darán la mejor precisión y las tasas de propagación de errores más pequeñas durante intervalos de tiempo más largos. Con estos métodos, sus integraciones numéricas producirán la mejor precisión que puede esperar... pero tienen que ser de alto orden. El pedido 8 es bueno.

Antes de saltar a su proyecto con cualquier integrador mencionado aquí o en otro lugar, pruebe sus selecciones de integrador contra la solución al problema de 2 cuerpos expresado en coordenadas cartesianas. Esa es la peor manera de escribir las ecuaciones de 2 cuerpos, y esa forma de las ecuaciones estresará mejor a sus integradores. Dado que la solución del problema de 2 cuerpos es de forma cerrada en cualquier sistema de coordenadas, verá cómo los integradores seleccionados son justos con respecto a la propagación de errores y la precisión en intervalos de tiempo cortos y largos.

Tu proyecto no es trivial de ninguna manera, y necesitarás un integrador que esté a la altura. Obtendrá una buena idea del integrador a utilizar mediante integraciones numéricas del problema de 2 cuerpos. Asegúrese de que sus condiciones iniciales le den una órbita de 2 cuerpos con una excentricidad decentemente alta: e >= 0.3. No te vuelvas loco con una e muy alta (0,8). Los integradores de paso fijo morirán rápidamente con órbitas de alta excentricidad (e = 0,8). Su tasa de muerte es inversamente proporcional a la orden del integrador.

Buena suerte.

Excelente respuesta! Es bueno ver a otro fanático de los métodos de Adams. ¿Tiene algún consejo sobre cuándo elegir Adams-Bashforth-Moulton versus Gauss-Radau? He oído hablar de estos últimos, pero nunca los usé, mientras que ABM los uso casi todo el tiempo.
Gracias por tu respuesta, ya probé un RK89 con paso fijo pero los resultados son los mismos. Además nada cambia con un RK45 con paso adaptativo. Pero tienes razón en que tengo que investigar más sobre los métodos de este integrador y elegir el más adecuado para resolver el problema. Lo que no puedo explicar es por qué el mismo propagador funciona bien en su forma de Simulink mientras muestra problemas como script de Matlab.
Esta respuesta ciertamente contiene algunos puntos válidos, pero están redactados de manera demasiado general. Aumentar el orden del solucionador porque está pasando algo extraño que no entiendo es en realidad una idea bastante horrible. Sí, un orden más alto, por supuesto, puede brindar una mayor precisión, pero no resuelve los problemas fundamentales de estabilidad y, definitivamente, tampoco los errores de configuración. RK4 es lo suficientemente bueno para explorar estas cosas, y el orden inferior en realidad lo hace más adecuado para tener una idea de cómo se comportan los integradores numéricos con diferentes ODE y diferentes tamaños de paso constantes o adaptables.
Estoy de acuerdo con @leftaroundabout 1000%, diría que para problemas tan suaves como una órbita casi circular con solo un término de cuadrupolo de 1 parte por mil, puede obtener resultados perfectamente buenos con RK4 o incluso menos, siempre que su tamaño de paso sea apropiado (punta de sombrero para DavidHammen ). Para este tipo de problema, lo que obtiene un integrador de orden superior es la misma precisión con un tamaño de paso más grande y, por lo tanto, potencialmente un tiempo de cálculo más corto, que para esto será fracciones de segundo o menos.
@uhoh sí. Aunque no diría que "casi circular" y "solo 1‰ cuadrupolo" son razones por las que un solucionador de orden bajo está bien. Son más bien razones por las que no se gana nada con el tamaño de paso adaptativo. Y este es también el escenario en el que los métodos de varios pasos de alto orden realmente pueden brillar, lo que permite un gran tamaño de paso y un bajo esfuerzo computacional para calcular millones de órbitas en el futuro. ...solo, eso no tiene sentido si los resultados ya son falsos después de solo un puñado de órbitas... Para calcular mucho en el futuro en situaciones menos regulares, un método simpléctico de orden inferior puede ser mejor.
@leftaroundabout ambos pueden ser ciertos, no son exclusivos; pero sí, ciertamente el tamaño de paso adaptativo no ayuda mucho en este caso. Si la excentricidad fuera 0,9 o la magnitud de la aceleración del cuadrupolo fuera similar a la del monopolo, y el tamaño del paso fuera fijo en 30 segundos, RK4 sería pésimo y un orden superior exótico funcionaría mejor, pero sí, tiene razón, RK45 cavaría y reduciría eso. tamaño de paso cuando sea necesario. Estoy trabajando en una publicación de respuesta ahora ...
Aquí, una vez más, tenemos opiniones, no hechos, sobre integraciones numéricas de trayectorias de mecánica orbital. Siento que nadie tiene experiencia con la propagación de errores de varios métodos de integración. RK4 NUNCA se usa en ninguna investigación numérica seria de un problema mecánico orbital. La propagación de errores de truncamiento es el principal culpable. De lo que debe preocuparse es de la propagación del error de redondeo, y si esa es su preocupación, se trata de lo mejor (la menor preocupación) que pueda obtener.
Además, e = 0.9 no es de interés real o académico. Un tamaño de paso de 30 segundos felizmente destruirá su salida RK4 gracias a la rápida acumulación de errores de truncamiento. El principal problema con los integradores de bajo orden es la propagación de errores de truncamiento. El error de redondeo nunca será una preocupación. Desea utilizar un integrador en el que su única preocupación sea la propagación de errores de redondeo. ¿Por qué usar punto flotante de 64 bits y un integrador de bajo orden? Los tamaños de paso pequeños para compensar los integradores de bajo orden y paso fijo nunca son una solución viable debido a la rápida acumulación de errores de truncamiento.
Algunos integradores de paso variable excelentes para problemas de órbitas usan tasas de cambio de curvaturas de trayectoria 3-D para determinar alteraciones en el tamaño del paso. Agregar tales consideraciones al código del integrador implica unas pocas líneas de código adicionales mediante el uso de los valores de las variables de estado obtenidas en el paso anterior. El paso variable ayuda a minimizar la propagación de errores. ¿Por qué no usarlo? No cuesta mucho en tiempo de ejecución.
Ryan C: Personalmente, no me gusta Gauss-Radau por su complejidad. Es un código difícil de seguir (al menos para mí). Me gusta agregar funciones al código enlatado, y eso es difícil de hacer con Gauss-Radau. ABM es fácil de codificar usted mismo. Puede crear un código ABM con una entrada que especifique el orden del método. He experimentado con esto hasta el orden 25 (¡demasiado alto!) y punto flotante de 128 bits. ABM es muy eficiente y puede ajustar el orden para aprovechar el error de redondeo de la máquina en cada paso. Con más ajustes, puede cambiar el orden durante la integración a medida que avanza.
Más uno solo para "No los codifique usted mismo. Descargue".
@AngePurs El problema con ABM es que integra una ODE de primer orden. Si bien una ODE de segundo orden se puede convertir a primer orden, al hacerlo se desecha la geometría. Hay variaciones de ABM que tratan la posición y la velocidad por separado, como Störmer-Cowell y Gauss-Jackson. Nota al margen: un orden demasiado alto en el integrador (que no debe confundirse con el orden de la ODE) puede provocar una pérdida de precisión y estabilidad. El orden 25 es demasiado alto a menos que se use una aritmética de precisión extremadamente extendida, y entonces está pagando un alto precio computacional por usar una aritmética de precisión extremadamente extendida.