Estoy resolviendo un sistema de ecuaciones lineales, , numéricamente. He hecho esto usando los métodos populares de Euler y Runge-Kutta (RK). He notado una gran diferencia entre los dos en precisión a la solución analítica. ¿Cuál es la razón para esto?
time-integration
Peter Mortensen
fuente
fuente
Respuestas:
Lo primero, podría haber mencionado, qué método RK ha utilizado. Aquí hay una breve introducción a los métodos RK y al método Euler, trabajando, sus ventajas y desventajas.
Método de Euler
El método de Euler es el método de primer orden. Es un método sencillo que estima el siguiente punto en función de la tasa de cambio en el punto actual y es fácil de codificar. Es un método de un solo paso. En particular, el método de Forward Euler es incondicionalmente inestable para sistemas oscilantes sin amortiguación (como un sistema de masa de resorte o ecuaciones de onda) en la desctretización del espacio. Para problemas complejos y / o condiciones de contorno, puede fallar. Se puede utilizar para el análisis numérico básico. Este método no se usa comúnmente para la discretización espacial, pero algunas veces se usa en la discretización del tiempo. Este esquema no se recomienda para la ecuación diferencial hiperbólica porque es más difusiva. El orden de convergencia de este esquema con el refinamiento de la red es muy pobre. Ampliar el método de Euler al método de orden superior es fácil y directo.
Métodos RK:
Los métodos Runge-Kutta son en realidad una familia de esquemas derivados de un estilo específico. Puede consultar este enlace para obtener una idea básica de los métodos RK: http://web.mit.edu/10.001/Web/Course_Notes/Differential_Equations_Notes/node5.html
El método de Euler directo es en realidad el método RK más simple (1 etapa, primer orden). Los métodos RK precisos de orden superior son de varias etapas porque implican cálculos de pendiente en múltiples pasos en o entre los valores de tiempo discretos actuales y siguientes. El siguiente valor de la variable dependiente se calcula tomando un promedio ponderado de estas etapas múltiples en base a una aproximación de la serie de la solución de Taylor. Los pesos en este promedio ponderado se obtienen resolviendo ecuaciones algebraicas no lineales que se forman al requerir la cancelación de términos de error en la serie de Taylor. Desarrollar métodos RK de orden superior es tedioso y difícil sin usar herramientas simbólicas para el cálculo.
El método RK más popular es el RK4, ya que ofrece un buen equilibrio entre el orden de precisión y el costo del cálculo. RK4 es la explícita método de Runge-Kutta orden más alto que requiere el mismo número de pasos que el orden de precisión (es decir, RK1 = 1 etapa, RK2 = 2 etapas, RK3 = 3 etapas, RK4 = 4 etapas, RK5 = 6 etapas ,. ..). Más allá del cuarto orden, los métodos RK se vuelven relativamente más caros de calcular.
Responder
Por lo general, el error en el método de Euler es mayor que el método RK de orden superior (RK2, RK3, etc.), porque el error de truncamiento en los métodos de orden superior es menor en comparación con el método de Euler.
En parte de la literatura de nivel principiante en métodos numéricos, se menciona libremente que los métodos de orden superior (digamos, RK4) dan menos error que el método de orden inferior (digamos, método de Euler). La mayoría de las veces esto es cierto, pero no todo el tiempo. Esta propiedad depende de la malla y la condición inicial y las ecuaciones diferenciales que haya considerado.
El "error de diferencia máxima absoluta" inicial en el método RK4 es igual (o) mayor que el método de Euler para la cuadrícula gruesa y se reduce con la cuadrícula de refinación para problemas con ondas más cortas en relación con la cuadrícula . Porque la tasa de convergencia del método RK4 es más que Euler. Tenga en cuenta que la aspereza o la finura de la cuadrícula se basa completamente en la ecuación diferencial, la condición inicial y el esquema numérico. Consulte el siguiente enlace para obtener más detalles. Aunque eso se basa en la diferenciación, podemos hacer una comparación relativa entre la integración numérica del tiempo y la diferenciación siempre que la "integración numérica" sea estable.
fuente
@Dou...
y debería ofrecerle autocompletar. He publicado una respuesta en su otra pregunta .El método de Euler no tiene en cuenta la curvatura de la solución, por lo que tiende a dar resultados diferentes según el tamaño del paso. RK, dependiendo del orden, tiene en cuenta la curvatura. Y esto hace que el "próximo paso" estimado sea más preciso. Básicamente, si finge que una línea recta es una buena aproximación de una curva (Euler), siempre superará su solución. Pero si tiene en cuenta la curvatura (RK) puede seguir la curva.
Compárese con la famosa cita de hockey (Gretzky): Euler patina hacia donde está el disco; Runge-Kutta patina hacia donde va a estar el disco.
Te recomiendo que leas sobre estos algoritmos. Puede comenzar con artículos de Wikipedia aquí y aquí .
fuente
Perdóname por agregar una respuesta "yo también", pero no pude resistirme a incluir esta página de Press, et al: "Recetas numéricas en C":
fuente
Básicamente, la razón por la que tienen diferentes niveles de precisión es la forma en que se derivan. El método de Euler (supongo que hacia adelante) es de primer orden y puede derivarse de varias maneras. Más fácilmente del teorema de Taylor. En ese método, solo se retiene el término de segundo orden, por lo que el error es de primer orden.
Los métodos de Runge kutta, por otro lado, están organizados y tienen coeficientes elegidos muy específicamente para "cancelar" varios órdenes de términos de error. Rk4 es de cuarto orden ya que los términos de error cero, primero, segundo y tercer orden se cancelan mediante la elección de coeficientes de etapa. La derivación de estos coeficientes no es muy difícil y probablemente se puede encontrar en Wikipedia si está interesado en verlo.
fuente