¿Por qué el método Runge-Kutta es mejor que el método de Euler?

Los métodos Runge-Kutta (RK) son una familia de métodos numéricos para la aproximación numérica de soluciones a problemas de EDO de valor inicial.

Es decir, si [math] \ dot {z} = f (z) [/ math] es el campo vectorial, una solución con la condición inicial [math] z_0 [/ math] puede aproximarse usando solo [math] z_0 [/ matemática] y el campo vectorial [matemática] f (z) [/ matemática].

El método de Euler (con la regla de actualización [matemáticas] z_ {n + 1} = z_n + f (z_n) \ Delta t [/ matemáticas]) es el método más simple, y es un miembro de la familia RK.

Los métodos numéricos como este generalmente se comparan en dos criterios básicos, aunque otras consideraciones también pueden ser importantes, por varias razones (como cuando el sistema tiene ciertas invariantes o una estructura subyacente distintiva, puede ser beneficioso tomar ciertas medidas para respetar estos factores)

La primera consideración principal es la eficiencia. Cada algoritmo que se ejecuta en una computadora requiere tiempo para ejecutarse, a menudo contado en términos de operaciones de punto flotante (donde la unidad de moneda en la computadora es el número de operaciones de punto flotante por segundo (FLOPS) que puede realizar), aunque para fines de análisis básicos es suficiente simplemente considerar cuántas veces se debe evaluar la función [matemática] f (z) [/ matemática] para pasar de [matemática] z_n [/ matemática] a [matemática] z_ {n + 1} [/ matemática]. El método de Euler requiere solo una de esas llamadas y, siendo ese el caso, es tan eficiente como puede ser mientras sigue haciendo lo correcto.

La segunda consideración es la precisión, que es exactamente donde el método de Euler se cae y muere. Lo único peor que el método de Euler (que en cierto sentido aún es correcto ) es una aproximación constante: [matemática] z_ {n + 1} = z_n [/ matemática]. Esta aproximación constante es válida exactamente para la condición inicial y en ningún otro lugar a menos que esté en un punto de equilibrio del sistema. Un método numérico solo es realmente un método si converge al campo de vector verdadero en el límite como el paso de tiempo [matemático] \ Delta t \ a 0 [/ matemático]. El método de Euler al menos hace esto. Con solo un poco de reorganización, observamos la diferencia finita [matemáticas] \ frac {z_ {n + 1} – z_n} {\ Delta t} = f (z_n) [/ matemáticas]. Pero el lado izquierdo es en realidad solo una aproximación del lado derecho (el campo vectorial evaluado en algún momento [math] t [/ math], en la trayectoria que pasa por el punto [math] z_n [/ math]), y vemos que en el límite como [math] \ Delta t \ to 0 [/ math] esta es exactamente la derivada evaluada en [math] z_n [/ math].

La unidad de moneda de los cálculos de error es el error de paso de tiempo , de la forma [math] c \ Delta t ^ p [/ math], donde [math] p [/ math] se llama el orden del método, y [math ] c [/ math] es el coeficiente de error. El método de Euler es preciso para el primer orden, lo que significa [matemáticas] p = 1 [/ matemáticas]. La mayoría de los otros métodos funcionan un poco mejor, con un método conocido como RK4 que es un método de orden 4. Runge-Kutta. Una posible implementación de cuarto orden es, de hecho, a menudo conocida como método Runge-Kutta. Puede haber más de un método RK posible para cada orden, y se distinguen por sus coeficientes de error.

Una vez que haya establecido algunos métodos numéricos, puede compararlos prácticamente (para campos vectoriales específicos) utilizando un diagrama de precisión de trabajo . Esto suele ser un diagrama de registro-registro donde un eje representa el registro de la cantidad de trabajo realizado para integrar durante un cierto período de tiempo en el sistema dinámico, y el otro eje es el registro del error acumulado durante ese tiempo (muchos sistemas puede tener alguna forma de extraer dicha información; por ejemplo, si sabe que hay una cantidad conservada, pero su esquema no se creó para conservarla específicamente). Usaría su método numérico con una variedad de tamaños de paso (que luego indicará la cantidad de trabajo realizado en la integración durante un período de tiempo fijo) y trazará un punto para ese trabajo y el error resultante. Cada integrador dará como resultado una curva que debería (¡al menos para un rango de tamaños de pasos!) Ser una línea recta, con su pendiente que indica el orden del método.

Verá rápidamente la diferencia en las pendientes, pero notará que incluso los diferentes métodos del mismo orden tienen diferentes alturas. Esta es la manifestación del coeficiente de error. Obviamente, de los métodos del mismo orden, elegiría el que tenga la curva más baja en el diagrama de precisión de trabajo.

Otra característica que notará (especialmente si tiene métodos de orden superior y experimenta con tamaños de paso lo suficientemente pequeños) es que algunas de las curvas de salida tienen un “codo”, donde el error deja de disminuir y, de hecho, ¡comienza a aumentar al disminuir el tamaño del paso! Esto se debe al hecho de que las computadoras en realidad no calculan con números: calculan con voltajes y corrientes organizadas en objetos físicos ligeramente más abstractos que simplemente se aproximan a números, y lo hacen con un grado finito de precisión. Los únicos números no enteros (hasta cierto número de dígitos de precisión) que se pueden representar exactamente en este esquema son potencias negativas de [math] 2 [/ math]. Todo lo demás se va a truncar y, por lo tanto, cada cálculo introduce un pequeño error de truncamiento (o error de redondeo). Esto suele ser pequeño: para un número de coma flotante de doble precisión se trata de [matemáticas] 2 \ veces10 ^ {- 16} [/ matemáticas]. Entonces, cuando el tamaño de su paso hace que los números en la evaluación de [matemática] f (z) [/ matemática] se acerquen incluso a la escala de [matemática] 10 ^ {- 8} [/ matemática] en relación con otros, la acumulación de error comienza a ser significativo. Si te vuelves más pequeño, comienzas a causar problemas activamente.

Entonces, el paso de tiempo óptimo para cualquier método estará alrededor del codo de la curva de precisión de trabajo para ese método, y esto también es específico del problema, por lo que el integrador numérico exacto que elija puede ser diferente para cada problema que integre numéricamente . A veces, elegirá un método de orden inferior porque su coeficiente de error es lo suficientemente pequeño como para que llegue a su codo antes (con menos trabajo) que uno con un orden superior. Para pedidos pequeños (-ish) (alrededor de 1 a 6), generalmente es una decisión obvia: ir con un orden más alto.

Y si es superior al primer orden, como lo son la mayoría de los métodos RK, es mejor que el método de Euler.

El método de Euler es la forma más sencilla de resolver una EDO del tipo de valor inicial. La solución numérica que produce tiene un error proporcional al tamaño del paso (h en la fórmula). Con el método Runge Kutta, se utiliza un mayor número de evaluaciones de funciones para garantizar que su error sea proporcional a la cuarta potencia de su tamaño de paso.