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).
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.
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.
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: 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.
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):
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:
+1
Al 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.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.
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.
UH oh
a la izquierda
Franco
a la izquierda