Click here to load reader
Upload
marcela-moreno
View
56
Download
8
Embed Size (px)
Citation preview
Método de Runge-Kutta
Los métodos de Runge-Kutta son un conjunto de métodos iterativos (implícitos y explícitos) para la aproximación de soluciones de ecuaciones diferenciales ordinarias, concretamente, del problema de valor inicial.
Estas técnicas fueron desarrolladas alrededor de 1900 por los matemáticos alemanes Carl David Tolmé Runge y Martin Wilhelm Kutta.
Uno de los métodos más utilizados es el método de Runge-Kutta de cuarto orden, el cual proporciona un pequeño margen de error con respecto a la solución real del problema, es fácilmente programable en un software para realizar las iteraciones necesarias y es sumamente útil para casos en los que la solución no puede hallarse por los métodos convencionales (como separación de variables).
El método se utiliza para resolver ecuaciones diferenciales de la forma explícita:
O en su forma implícita:
Hay variaciones en el método de Runge-Kutta de cuarto orden pero el más utilizado es el método en el cual se elige un tamaño de paso h y un número máximo de iteraciones n.
El método esta dado por la siguiente ecuación:
Donde:
Así, el siguiente valor (yi+1) es determinado por el presente valor (yi) más el producto del tamaño del intervalo (h) por una pendiente estimada. La pendiente es un promedio ponderado de pendientes:
k1 = Pendiente al principio del intervalo
k2 = Pendiente en el punto medio del intervalo, usando k1 para determinar el valor de y en el punto xi + h/2.
k3 = Pendiente en el punto medio del intervalo, usando k2 para determinar el valor de y.
k4 = Pendiente al final del intervalo, con el valor de y determinado por k3
Promediando las cuatro pendientes, se le asigna mayor peso a las pendientes en el punto medio:
Ejemplo
Usar el método de Runge-Kutta con h = 0.1 para aproximar y(2.2) tomando como numero de pasos n=2 dada la ecuación diferencial:
Solución
Primero, identificamos las condiciones iníciales, el intervalo y la función:
Para poder calcular el valor de y1, debemos calcular primeros los valores de k1, k2, k3, k4 Tenemos entonces que para la primera iteración:
Segunda iteración:
Resumimos los resultados en la siguiente tabla:
n Xn Yn0 0 11 0,1 4,63622 0,2 5,34982
Concluimos que el valor obtenido con el método de Runge-Kutta es:
Ecuación diferencial de segundo orden
Para aplicar el procedimiento de Runge Kutta a una ecuación diferencial de segundo orden
Con las condiciones iníciales
Debemos saber que una ecuación diferencial de segundo orden es equivalente a un sistema de dos ecuaciones diferenciales de primer orden, por lo que aplicaremos el mismo esquema.
En la primera columna, las variables k1, k2, k3, k4 pueden calcularse directamente sin efectuar llamadas a una función.
Ejemplo
Las leyes de newton nos llevan a obtener la ecuación diferencial que describe el movimiento del péndulo. Generalmente esta se resuelve de manera analítica teniendo en cuenta la aproximación de ángulos pequeños, pero en este caso utilizaremos el método numérico llamado Runge Kutta cuatro para resolver la ecuación de movimiento sin ninguna restricción del ángulo de oscilación.
La ecuación diferencial a resolver se obtiene a partir de la descomposición de fuerzas en el sistema como se muestra en el siguiente dibujo.
Para el problema no tendremos en cuenta los efectos de fricción, por consiguiente tenemos:
Para
Que corresponde a un péndulo cuya masa se suelta partiendo del reposo con un ángulo inicial a.
Podemos reescribir esta ecuación diferencial de segundo orden como un sistema de ecuaciones de primer orden.
Se tendrá el sistema de ecuaciones diferenciales de primer orden en forma canónica
Los pasos de Runge Kutta serán:
Las ecuaciones que describen la posición angular y su velocidad serán
Programa de Runge-Kutta de orden cuatro
Este programa aproxima la solución del problema de valor inicial
fprintf('\n \t RESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO DE RUNGE-KUTTA DE ORDEN 4\n')f=input('\n Ingrese la ecuacion diferencial\n','s');x0=input('\n Ingrese el primer punto x0:\n');x1=input('\n Ingrese el segundo punto x1:\n');y0=input('\n Ingrese la condicion inicial y(x0):\n');n=input('\n Ingrese el numero de pasos n:\n');h=(x1-x0)/n;xs=x0:h:x1;fprintf('\n''it x0 y(x1)');for i=1:nit=i-1;x0=xs(i);x=x0;
y=y0;k1=h*eval(f);x=x0+h/2;y=y0+k1/2;k2=h*eval(f);x=x0+h/2;y=y0+k2/2;k3=h*eval(f);x=x0+h;y=y0+k3;k4=h*eval(f);y0=y0+(k1+2*k2+2*k3+k4)/6;fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0);endfprintf('\n El punto aproximado y(x1) es = %8.6f\n',y0);
Ejemplo
Dada la ecuacion diferencial y'=-2x^3+12x^2-20x+8.5, usando el metodo de Runge-Kutta de orden cuarto hallar la aproximacion de y(0.5) tomando como numero de pasos n=5, si la condicion inicial es y(0)=1
Respuesta y(0.5) = 3.218750