La respuesta de @DavidKetcheson llega a los puntos importantes: siempre se pueden construir métodos de orden suficientemente alto mediante extrapolación, es un límite muy pesimista y siempre se puede hacer mucho mejor, todos los buenos se obtienen a mano (con la ayuda de alguna computadora herramientas de álgebra), no se conoce un límite inferior, y los métodos de mayor orden se deben a Feagin. Teniendo en cuenta algunos de los comentarios, quise completar la respuesta con una discusión de los cuadros actuales en el campo.
Si desea un compendio de cuadros RK, puede encontrar uno en este código de Julia . Las citas del papel del que provienen se encuentran en las cadenas de documentos para los constructores de cuadros. La documentación del desarrollador para DifferentialEquations.jl enumera todos estos cuadros como disponibles para su uso , y puede ver aquí que todos estos se prueban usando Travis y AppVeyor suites de integración continua para asegurarse de que no solo se cumplan las condiciones del pedido, sino que realmente lograr la convergencia solicitada (prueba de verificación). De estos, puede ver que hay:
- 5 orden 9 métodos
- 6 orden 10 métodos
- 2 orden 12 métodos
- 1 orden 14 método
(que pude encontrar que fueron publicados). De nuevo, todo derivado a mano.
Las pruebas de convergencia muestran que algunas de las derivaciones no se llevaron a cabo con la precisión suficiente para trabajar con números de más de 64 bits (se comentan así ). Entonces, es una peculiaridad interesante a tener en cuenta: en estos pedidos altos, generalmente solo se obtienen coeficientes que "ante un error x
" satisfacen las condiciones del pedido, pero cuando se usa la aritmética de precisión arbitraria, en realidad se pueden detectar estos límites. Por lo tanto, la precisión con la que lleva a cabo los coeficientes es importante, y debe elegirla para cubrir la precisión que desea probar (/ usar, por supuesto).
Si quieres un montón de gráficos de estabilidad, puedes plot(tableau)
usar la receta Plots.jl. Un conjunto bien de notas que tiene una gran cantidad de este escrito se puede encontrar en la página web de Peter Stone (ir a continuación y haga clic en especificar el orden de 10 esquemas y obtendrá un montón de archivos PDF). Al desarrollar DifferentialEquations.jl, creé ese conjunto de cuadros para analizarlos sistemáticamente en los problemas de prueba / mirar los indicadores analíticos para ver cuáles deberían incluirse en la biblioteca principal. Tomé algunas notas rápidas aquí . Como puede ver en los algoritmos incluidos en la biblioteca principal, los que encontré valiosos fueron los métodos de Verner y Feagin. El método de noveno orden de Verner es el método de orden más alto con un interpolante que también coincide con el orden. Eso es algo que hay que reconocer: los métodos Feagin no tienen un interpolante a juego (aunque puedes arrancar Hermite, pero eso es realmente ineficiente).
Dado que todos se implementan con implementaciones muy eficientes, puede jugar con ellos usted mismo y ver cuánto importan realmente las diferentes características. Aquí hay un cuaderno Jupyter que muestra los métodos Feagin en uso . Tenga en cuenta que la trama de convergencia realmente va a 1e-48
error. Los métodos de orden superior son solo más eficientes que los de orden inferior cuando realmente se necesita una tolerancia muy muy baja. Puede encontrar algunos puntos de referencia que usan algunos de ellos en DiffEqBenchmarks.jl , aunque cuando se usan generalmente es el método Verner de noveno orden, y generalmente muestra que el punto de referencia no está en el régimen donde este alto orden es eficiente.
Entonces, si desea jugar y trabajar con algunos métodos de alto orden, RK-Opt es lo que encontré es una buena herramienta para obtener algunos (como mencionó @DavidKetcheson), y DifferentialEquations.jl tiene todos los métodos publicados (¿creo? ) implementado para que pueda probar / comparar fácilmente con ellos. Sin embargo, a menos que encuentre una suposición que pueda descartarse, de mis pruebas no he podido encontrar algo que supere los métodos de Verner (órdenes 6-9) y Feagin (órdenes 10+). Sin embargo, YMMV, y me encantaría ver más investigaciones sobre esto.