martes, 7 de junio de 2016

Metodo de Runge Kutta

Los métodos de Runge-Kutta son una serie de metodos numéricos usados para encontrar aproximaciones de las soluciones de ecuaciones diferenciales y sistemas de ecuaciones diferenciales, lineales y no lineales.

Veremos los métodos de Runge-Kutta en detalle y sus principales variantes en las siguientes secciones.

Métodos lineales a un paso


Son métodos numéricos que para avanzar un paso, sólo dependen del paso anterior, es decir el paso n+1 solo depende del paso n o, con mas precisión, son métodos de la forma

xn+1 = xn + F(xn, tn, h)
x0 = x(0)

donde xn is a Rn vector, tn es la variable independiente, h el tamaño del paso, y F es una función vectorial (posiblemente no lineal) xn, tn, h, ie

F : Rn+2 → Rn

Nótese que lo que tenemos es en realidad un sistema de n equaciones.

Existen otros métodos llamados multipaso, en los que para avanzar un paso se requiere una función de dos o más pasos anteriores, así como existen métodos no lineales, no trataremos de ellos aquí.

Teoría en extensión

Los métodos de Runge-Kutta son una especialización de los métodos numéricos a un paso. Fundamentalmente, lo que caracteriza al los métodos de Runge-Kutta es que el error en cada paso i es de la forma

Ei = Chk

Siendo C una constante real positiva, al número k se le llama orden del método y h ya sabemos que es el tamño del paso en cada nodo.

En los métodos de Runge-Kutta se llama etapas a las sucesivas evaluaciones de la función f en cada paso. El número de etapas de un método de Runge-Kutta es el número de veces que la función es evaluada en cada paso i, Este concepto es importante porque evaluar la función requiere un coste computacional (a veces alto) por tanto se prefieren métodos con el menor número posible de etapas.

Un primer ejemplo es el método de Euler que es de la forma

El método de Euler (Runge-Kutta de orden 1)

xn+1 = xn + h f(xn, tn)

En dicho método el error es de la forma e ≤ Ch y por tanto el método de Euler es de orden 1

Observacion: La función se evalúa 1 vez en cada paso, número de etapas: 1.


Un ejemplo de un método de orden 2 es el método del punto medio o tambien regla del punto medio, que es de la forma

El método del punto medio (Runge-Kutta de orden 2)


xn+1 = xn + h f ( xn + h/2 f (xn, tn), tn + h/2)

En dicho método el error es de la forma e ≤ Ch2 y por tanto el método del punto medio es de orden 2

Observacion: El número de veces que se evalúa la función en cada paso del método es 2, número de etapas: 2.


Runge-kutta estándar de orden 4 (Runge-Kutta de orden 4)


xn+1 = xn + h/6 (k1 +2 k2 +2 k3 + k4)

donde

k1 = f(xn, tn)
k2 = f(xn + hk1/2, tn + h/2)
k3 = f(xn + hk2/2, tn + h/2)
k4 = f(xn + hk3, tn + h)

Ahora el error es de la forma e ≤ Ch4 y por tanto el método es de orden 4

Observacion: El número de veces que se evalúa la función en cada paso del método es 4, número de etapas: 4.


Gráficas del error para estos métodos

Gráfica en escala Logarítmica error frente al tamaño de paso de los 3 métodos que veremos aquí:
     - En rojo el método de Euler
     - En verde el método del Punto medio de orden 2
     - En negro el R/k Clásico de orden 4
Observese la diferencia de pendiente, que aumenta en función del orden del método.


Podemos adoptar la siguiente definición como métodos Runge-Kutta:
Un método Runge-Kutta de s etapas y de orden p es un método numérico de la forma:
xn+1 = xn + h(∑si=1 biki) Con
ki = f( xn + ∑sj=1aijkk, tn + hci)
Y el error cumple la condición
Max | X( tt) - xi| ≤ Ch tp


Es decir para dar un método de Runge-Kutta, tenemos que dar los números

bi, ci,aij,

Es decir s2 + 2s números

Una particularidad interesante de los métodos Runge-Kutta es que no necesitan calcular derivadas de la función f para avanzar. El precio a pagar por ello es el de evaluar más veces la propia función f con el consiguiente coste de operaciones.
Teorema de Convergencia de los métodos de Runge-Kutta
Si F es Lipschitz en x 
Entonces
      Max | x(ti) - xi | ≤ K (eLb - 1) / L
Donde L es la constante de Lipschitz de F y k es el error de Truncación local del método.


Un método será más eficiente en la medida que podamos reducir el número de etapas, manteniendo el orden, por ejemplo entre un método de 3-Etapas con orden 3 y otro de 4-etapas con orden 3, es mucho más interesante el primero que el segundo ya que si tomamos un paso h, el número de cálculos a realizar será menor para el primero de los métodos.
Tableros de Butcher
Dado un método de Runge-kutta, construimos un tablero de la forma


O bien, se puede escribir el tablero de Butcher como

Donde A ∈ Msxs, b ∈ Rs, C ∈ Rs

Por ejemplo, el tablero de Butcher para el método de Euler es

Para la regla del punto medio de orden 2

Y para el Runge-Kutta standar de orden 4

Un método de Runge-Kutta se dice que es consistente si el error de truncación gloval tiende a cero cuando el tamaño del paso tiende a cero.
Se puede demostrar que una condicion necesaria y suficiente para la consistencia de un método de Runge-Kutta es que la suma de los bi's sea igual a 1, es decir si se cumple

1 = ∑si=1 bi

Además el método será de orden 2 si cumple que 1 = 2 ∑sj=1si=1 ai bj

Se pueden dar condiciones análogas para métodos con orden 3, 4, ...
Métodos de Runge-Kutta explícitos 
En un método de Runge-Kutta explícito, los ki dados en la definición no aparecen como función de ellos mismos, aparecen despejados. De modo más un poco más preciso, en un método de Runge-Kutta explícito, la matriz A del tablero de Butcher es "casi 'triangular inferior'", con lo que queremos decir que es triangular inferior y además su diagonal también está formada por ceros, o sea, es de la forma


Teorema
Un método de Runge-Kutta explícito de s etapas no puede tener un orden mayor que s.


Se sabe que no que hay métodos de Runge-Kutta explícitos de s etapas con orden s, para s mayor o igual que 5.
Además se sabe que no hay métodos de Runge-Kutta explícitos de s etapas con orden s-1, para s mayor o igual que 7.

Con más generalidad se tiene la siguiente tabla



Que tamaño de paso es necesario? La respuesta a esta pregunta es que depende del problema concreto y del grado de precisión deseado.

Un detalle a tener en cuenta en los métodos de Runge-Kutta es que pierden bastante precisión cuando la derivada de la función a analizar es muy grande o cambia muchas veces de signo, En tales casos es necesario un tamaño de paso bien pequeño para obtener un grado de precisión aceptable.

En la Siguiente sección pares encajados , que son métodos en los cuales el tamaño de paso va variando automáticamente en función (entre otras cosas) de los cambios en la derivada de la función

Si lo que deseas es ver un ejemplo del funcionamiento de estos métodos, accede a RungeKutta Calculator donde podrás ejecutar el problema

y' = f(x, y)
y(x0)=y0

Cuya solución exacta es, obviamente y(x)=ex


No hay comentarios:

Publicar un comentario