Solo tenía curiosidad por saber por qué los métodos Runge – Kutta de alto orden (es decir, mayores de 4) casi nunca se discuten / emplean (al menos que yo sepa). Entiendo que requiere un mayor tiempo de cómputo por paso (por ejemplo, RK14 con paso incorporado de 12 ° orden ), pero ¿hay alguna otra desventaja de usar métodos Runge-Kutta de orden superior (por ejemplo, problemas de estabilidad)? Cuando se aplica a ecuaciones con soluciones altamente oscilantes en escalas de tiempo extremas, ¿no se preferirían tales métodos de orden superior?
ode
runge-kutta
Mathews24
fuente
fuente
Respuestas:
Existen miles de documentos y cientos de códigos que utilizan métodos Runge-Kutta de quinto orden o más. Tenga en cuenta que el integrador explícito más utilizado en MATLAB es ODE45, que avanza la solución utilizando un método Runge-Kutta de quinto orden.
Ejemplos de métodos de Runge-Kutta de alto orden ampliamente utilizados
El documento de Dormand & Prince que da un método de quinto orden tiene más de 1700 citas según Google Scholar . La mayoría de ellos son documentos que utilizan su método para resolver algún problema. El documento del método Cash-Karp tiene más de 400 citas . Quizás el método de orden superior a 5 más utilizado es el método de octavo orden de Prince-Dormand, que tiene más de 400 citas en Google Scholar . Podría dar muchos otros ejemplos; y tenga en cuenta que muchas (si no la mayoría) de las personas que usan estos métodos nunca citan los documentos.
Tenga en cuenta también que los métodos de extrapolación de alto orden y corrección diferida son métodos Runge-Kutta .
Métodos de alto orden y error de redondeo
Si su precisión está limitada por errores de redondeo, entonces debe usar un método de orden superior . Esto se debe a que los métodos de orden superior requieren menos pasos (y menos evaluaciones de funciones, aunque haya más evaluaciones por paso), por lo que cometen menos errores de redondeo. Puede verificar esto fácilmente con experimentos simples; Es un buen problema de tarea para un primer curso de análisis numérico.
Los métodos de décimo orden son extremadamente útiles en la aritmética de doble precisión. Por el contrario, si todo lo que tuviéramos fuera el método de Euler, entonces el error de redondeo sería un problema importante y necesitaríamos números de punto flotante de muy alta precisión para muchos problemas donde los solucionadores de alto orden funcionan bien.
Los métodos de alto orden pueden ser igual de estables
Métodos de alto orden en mecánica celeste
Usted pregunta
Tienes toda la razón! Un excelente ejemplo de esto es la mecánica celeste. No soy un experto en esa área. Pero este documento , por ejemplo, compara métodos para la mecánica celeste y ni siquiera considera un orden inferior a 5. Concluye que los métodos de orden 11 o 12 son a menudo los más eficientes (con el método Prince-Dormand de orden 8 también a menudo muy eficiente).
fuente
Mientras utilice la aritmética de coma flotante de precisión doble estándar, no se necesitan métodos de orden muy alto para obtener una solución con alta precisión en un número razonable de pasos. En la práctica, encuentro que la precisión de la solución normalmente está limitada a un error relativo de 1.0e-16 por la representación de coma flotante de doble precisión en lugar del número / longitud de los pasos que se toman con RKF45.
Si cambia a un esquema aritmético de coma flotante de precisión superior a la doble, vale la pena usar un método de décimo orden.
fuente
Solo para agregar a la excelente respuesta de Brian Borcher, muchas aplicaciones de la vida real admiten ODE o DAE muy rígidos. Intuitivamente, estos problemas experimentan cambios abruptos no suaves a lo largo del tiempo, por lo que se modelan mejor utilizando polinomios de bajo orden distribuidos finamente en pasos cortos, a diferencia de los polinomios de alto orden estirados en pasos largos. Además, la estabilidad a menudo requiere el uso de métodos implícitos. métodos , para los cuales la penalización computacional de los métodos de orden superior es mucho más pronunciada.
Más rigurosamente, los métodos de orden superior son menos estables que los métodos de orden inferior para problemas rígidos. Tenemos, por ejemplo, las barreras de Dahlquist para métodos lineales de varios pasos.
Se pueden hacer declaraciones similares (pero mucho más complicadas) para la estabilidad de L en las fórmulas RK. En todos los casos, el aumento del orden a menudo no siempre conduce a soluciones más precisas. Lo siguiente es un extracto del artículo seminal de 1974 de Prothero y Robinson:
Para tratamientos aún más rigurosos de este tema, vea el texto clásico de Hairer & Wanner, "Resolviendo ecuaciones diferenciales ordinarias II: Rigidez y diferencia - Problemas algebraicos", 1991.
En la práctica, las ecuaciones rígidas casi siempre se resuelven utilizando la regla trapezoidal o la fórmula TR-BDF2 (funciones ode23t y ode23tb en MATLAB). Ambos son métodos implícitos de segundo orden. Por supuesto, donde la estabilidad no es un problema (es decir, en ecuaciones no rígidas) somos libres de elegir entre varias opciones; RK45 es la opción más común.
fuente
La configuración de referencia
En el software Julia DifferentialEquations.jl implementamos muchos métodos de orden superior, incluidos los métodos Feagin. Puede verlo en nuestra lista de métodos , y luego hay toneladas de otros que puede usar como cuadros suministrados . Debido a que todos estos métodos se combinan, puede compararlos fácilmente. Puede ver los puntos de referencia que tengo en línea aquí , y ver que es muy simple comparar muchos algoritmos diferentes. Entonces, si desea tomarse unos minutos para ejecutar los puntos de referencia, hágalo. Aquí hay un resumen de lo que sale.
En primer lugar, es importante tener en cuenta que, si observa cada uno de los puntos de referencia, verá que nuestra
DP5
(Orden 5 de Dormand-Prince) y losDP8
métodos son más rápidos que los códigos Hairer Fortran (dopri5
ydop853
), por lo que estas implementaciones están muy bien optimizadas . Estos muestran que, como se señaló en otro hilo, el uso excesivo de los métodos de Dormand-Prince se debe a que los métodos ya están escritos, no porque sigan siendo los mejores. Entonces, la comparación real entre las implementaciones más optimizadas es entre los métodos Tsitorous, los métodos Verner y los métodos Feagin de DifferentialEquations.jl.Los resultados
En general, los métodos de un orden superior a 7 tienen un costo computacional adicional que generalmente no se ve superado por el orden, dadas las tolerancias elegidas. Una razón para esto es que las opciones de coeficientes para los métodos de orden inferior están más optimizadas (tienen pequeños "coeficientes de error de truncamiento principales", que son más importantes cuando no es asimétricamente pequeño). Puede ver que en muchos problemas como aquí, los métodos Verner Efficient 6 y 7 funcionan extremadamente bien, pero métodos como el Verner Efficient 8 pueden tener una pendiente más baja. Esto se debe a que las "ganancias" de orden superior se combinan con tolerancias más bajas, por lo que siempre hay una tolerancia donde los métodos de orden superior serán más eficientes.
Sin embargo, la pregunta es entonces, ¿qué tan bajo? En una implementación bien optimizada, eso se vuelve bastante bajo por dos razones. La primera razón es porque los métodos de orden inferior implementan algo llamado FSAL (primero igual que el último). Esta propiedad significa que los métodos de orden inferior reutilizan una evaluación de función del paso anterior en el siguiente paso y, por lo tanto, tienen efectivamente una evaluación de función menos. Si esto se usa correctamente, entonces algo como un método de quinto orden (Tsitorous o Dormand-Prince) en realidad está tomando 5 evaluaciones de funciones en lugar de las 6 que sugieren los cuadros. Esto también es cierto para el método Verner 6.
La otra razón se debe a las interpolaciones. Una razón para usar un método de orden muy alto es tomar menos pasos y simplemente interpolar valores intermedios. Sin embargo, para obtener los valores intermedios, la función de interpolación puede necesitar más evaluaciones de funciones de las que se usaron para dar el paso.Si nos fijamos en los métodos de Verner, se necesitan 8 evaluaciones de funciones adicionales para el método de Orden 8 para obtener un interpolante de Orden 8. Muchas veces, los métodos de bajo orden proporcionan un interpolante "libre", por ejemplo, la mayoría de los métodos de quinto orden tienen una interpolación libre de cuarto orden (sin evaluaciones de funciones adicionales). Esto significa que si necesita valores intermedios (que necesitará para una buena gráfica si está utilizando un método de orden superior), hay algunos costos adicionales ocultos. Tenga en cuenta el hecho de que estos valores interpolados son realmente importantes para el manejo de eventos y la resolución de ecuaciones diferenciales de retardo y verá por qué el costo adicional de interpolación tiene en cuenta.
Entonces, ¿qué pasa con los métodos de Feagin?
Entonces verá que los métodos Feagin faltan sospechosamente en los puntos de referencia. Están bien, las pruebas de convergencia funcionan con números de precisión arbitrarios, etc., pero para que realmente funcionen bien, debes pedir algunas tolerancias bastante absurdamente bajas. Por ejemplo, encontré en puntos de referencia inéditos que el
Feagin14
rendimiento superiorVern9
(el método eficiente Verner de noveno orden) en tolerancias como1e-30
. Para aplicaciones con dinámica caótica (como en los problemas de Astrofísica de 3 cuerpos o Pleides), es posible que desee esta cantidad de precisión debido a la dependencia sensible (los errores en los sistemas caóticos se componen rápidamente). Sin embargo, la mayoría de las personas probablemente están calculando con números de coma flotante de doble precisión, y no he encontrado un punto de referencia donde superen en este dominio de tolerancia.Además, no hay interpolante para acompañar los métodos de Feagin. Entonces, lo que hago es simplemente ponerles una interpolación de Hermite de tercer orden para que exista uno (y funciona sorprendentemente bien). Sin embargo, si no hay una función de interpolación estándar, puede hacer el método recursivo de Hermite (use esta interpolación para obtener el punto medio, luego haga una interpolación de quinto orden, etc.) para obtener una interpolación de alto orden, pero esto es muy costoso y el resultado es la interpolación no necesariamente tiene un término de error de truncamiento de principio bajo (por lo que solo es bueno cuando
dt
es realmente pequeño, ¡exactamente lo opuesto al caso que queremos!). Entonces, si alguna vez necesita una interpolación realmente buena para que coincida con su precisión, necesita al menos volver a algo asíVern9
.Nota sobre extrapolación
Tenga en cuenta que los métodos de extrapolación son simplemente algoritmos para generar métodos arbitrarios de Runge-Kutta. Sin embargo, para su orden toman más pasos de los necesarios y tienen altos coeficientes de error de truncamiento de principio, por lo que no son tan eficientes como un método RK bien optimizado en un orden dado. Pero dado el análisis anterior, esto significa que existe un dominio de tolerancia extremadamente baja en el que estos métodos funcionarán mejor que los métodos RK "conocidos". Pero en cada punto de referencia que he ejecutado, parece que no he llegado tan bajo.
Nota sobre estabilidad
La elección realmente no tiene nada que ver con problemas de estabilidad. De hecho, si pasa por los cuadros DifferentialEquations.jl (puede hacerlo solo
plot(tab)
para las regiones de estabilidad) verá que la mayoría de los métodos tienen regiones de estabilidad sospechosamente similares. Esto es realmente una elección. Por lo general, al derivar los métodos, el autor generalmente hace lo siguiente:¿Por qué la última condición? Bueno, debido a que ese método tiende a ser siempre estable con la forma en que se realizan las elecciones de tamaño de paso adaptativo controlado por PI, por lo que es una buena barra para regiones de estabilidad "suficientemente buenas". Por lo tanto, no es casualidad que todas las regiones de estabilidad sean similares.
Conclusión
Hay compensaciones en cada elección de método. Los métodos de RK de orden superior simplemente no son tan eficientes con tolerancias más bajas, ya que es más difícil optimizar la elección de los coeficientes y porque el número de compuestos de evaluación de funciones (y crece aún más rápido cuando intervienen las interpolaciones). Sin embargo, si la tolerancia es lo suficientemente baja, ganan, pero las tolerancias que se requieren pueden estar muy por debajo de las aplicaciones "estándar" (es decir, solo se aplican a sistemas caóticos).
fuente