Los mtodos de Runge-Kutta son una serie de mtodos numricos usados para
encontrar aproximaciones de las soluciones de ecuaciones diferenciales y
sistemas de ecuaciones diferenciales, lineales y no lineales.
Son mtodos numricos que para avanzar un paso, slo dependen del paso
anterior, es decir el paso n+1 solo depende del paso n o, con ms precisin, son
mtodos de la forma
x n+1=x n + F ( x n , t n , h )
x 0=x (0)
Dnde:
x n = un vector R
n
t n = es la variable independiente
xn tn
F es una funcin vectorial (posiblemente no lineal) : , , h , ie.
F: Rn+2 Rn
Existen otros mtodos llamados multipaso, en los que para avanzar un paso se
requiere una funcin de dos o ms pasos anteriores, as como existen mtodos no
lineales, no trataremos de ellos aqu.
TEORA EN EXTENSIN
Siendo C una constante real positiva, al nmero k se le llama orden del mtodo y h
ya sabemos que es el tamao del paso en cada nodo.
x n+1=x n +h f ( x n , t n)
h h
x n+1=x n +h f ( x n+ f ( x n ,t n ) , t n + )
2 2
2
En dicho mtodo el error es de la forma e Ch y por tanto el mtodo del
punto
medio es de orden 2.
h
x n+1=x n + (k 1 +2 k 2 +2 k 3 +k 4)
6
Dnde:
k 1=f ( x n , t n )
hk 1 h
k 2=f ( x n + , t n+ )
2 2
hk 2 h
k 3 =f ( x n + , t n+ )
2 2
k 4=f (x n+ hk 3 ,t n +h)
s
k i=f ( x n + a ij k k , t n+ hci )
j=1
ti x i 0
Max |x ( )- ch t
Es decir para dar un mtodo de Runge-Kutta, tenemos que dar los nmeros:
bi , c i , aij .
Es decir s 2 +2 s nmeros.
Si F es Lipschitz en x
Entonces:
ti xi Lb
Max |x ( )- | k ( e 1 /L
TABLEROS DE BUTCHER
ci aij
bi
C B
M sxs Rs , C RS
Donde A , b
1 0
1
0 0
0 1
1 0 0 1
1= bi
i=1
s s
TEOREMA
EJERCICIO EXPICATIVO
y`= x + y
y (2) = 4
Solucin:
x 0=2
y 0=4
h=0.1
f ( x , y ) =x+ y
PRIMERA INTERACCIN:
x 1=x 0+ h=2+0.1=2.1
1 1
( )
k 2=hf x 0 + h , y 0+ k 1 =0.1 ( 2.05+ 4.3 )=0.635
2 2
1 1
( )
k 3 =hf x 0 + h , y 0+ k 2 =0.1 ( 2.05+ 4.3 175 )=0.6367 5
2 2
1
y 1 = y 0+ ( k 1 +2 k 2 +2 k 3 +k 4 ) =4.636 2
6
SEGUNDA INTERACCION:
1 1
( )
k 2=hf x 1+ h , y 1 + k 1 =0.1 ( 2.15+ 4.97301 )=0.7123
2 2
1 1
( )
k 3 =hf x 1+ h , y 1 + k 2 =0.1 ( 2.1 5+4.9923 5 )=0.71424
2 2
1
y 2 = y 1+ ( k 1 +2 k 2 +2 k 3 +k 4 )=5.34982
6
MATLAB
Esto se crea en otra pestaa con el nombre de f1
function ye=f1(x,y)
ye=x*y+1;
clear x,y;
x0=0;
y0=21;
xf=10;
n=20;
h=(xf-x0)/n;
i=1;
x(i)=x0;
y(i)=y0;
while i<=n
k1=h*f1(x0,y0);
k2=h*f1(x0+h/2,y0+k1/2);
k3=h*f1(x0+h/2,y0+k2/2);
k4=h*f1(x0+h,y0+k3);
km=(k1+2*k2+2*k3+k4)/6;
y1=y0+km;
x1=x0+h;
i=i+1;
x(i)=x1;
y(i)=y1;
x0=x1;
y0=y1;
disp([y1])
end
plot(x,y)
grid on
%disp([x1])
%disp([y1])
title('Mtodo de Runge Kutta de cuarto orden')