You are on page 1of 10

EDO-RUNGE KUTTA

METODOS NUMERICOS

EL deber tiene 4 partes:

Realizar cdigos para cada uno de los mtodos y grafica comparando mtodos (en Matlab) y
comparar todos los mtodos (obteniendo todos los errores correspondientes) para el siguiente
ejemplo:

f ( x , y ) =4e0.8x 0.5y
Utilizando h=0.5 y y(0)=2 desde x=0 hasta 5.

Mtodo de Euler.
RK2 (a2= ) o Heun.

Heun con iteraciones

Heun con iteraciones


Mtodo de Pasos Mltiples

Los mtodos para resolver una EDO a) de un solo paso. b) de mltiples pasos.

El mtodo de Heun de no autoinicio

Recordemos que el procedimiento de Heun usa el mtodo de Euler como un predictor:

Y la regla trapezoidal como un corrector:

ec.1

As, el predictor y el corrector tienen errores de truncamiento local de 0(h 2) y 0(h3) ,


respectivamente. Esto sugiere que el predictor es el enlace dbil en el mtodo, pues
tiene el error ms grande. Esta debilidad es significativa debido a que la eficiencia del
paso corrector iterativo depende de la exactitud de la prediccin inicial. En
consecuencia, una forma para mejorar el mtodo de Heun es mediante el desarrollo de
un predictor que tenga un error local de 0(h 3). Esto se puede cumplir al usar el mtodo
de Euler y la pendiente en YI , y una informacin extra del punto anterior como en:

ec.2

Observe la ecuacin ec. 2 alcanza 0(h 3) a expensas de emplear un tamao de paso


mas grande, 2h. Adems, observe que la ecuacin ec. 1 no es de autoinicio, ya que
involucra un valor previo de la variable dependiente yi-1. Tal valor podria no estar
disponible en un problema comn de valor inicial. A causa de ello, las ecuaciones 26.11
y 26.12 son llamadas mtodo de Heun de no autoinicio.
Como se ilustra en la figura 26.4, la derivada estimada de la ecuacin 26.12 se localiza
ahora en el punto medio ms que al inicio del intervalo sobre el cual se hace la
prediccin. Como se demostrara despus, esta ubicacin centrada mejora el error del
predictor a 0(h3). Sin embargo, antes de proceder a una deduccin formal del mtodo
de Heun de no autoinicio, resumiremos el mtodo y lo expresaremos usando una
nomenclatura ligeramente modificada:

Predictor:

Corrector:

Donde los superndices se agregaron para denotar que el corrector se aplica


iterativamente de j=1 a m para obtener soluciones refinadas. Observe que ymsubindicei y
ymsubindicei-1 t son los resultados finales de las iteraciones del corrector en los pasos de
tiempo anteriores. Las iteraciones son terminadas en cualquier paso de tiempo con
base en el criterio de paro:

ec. 3

Cuando Ea es menor que una tolerancia de error Es preestablecida, se terminan las


iteraciones. En este punto

RK2 (a2=1) o Punto medio.

RK2 (a2= 3/2) o Ralston.


Ralston (1962) y Ralston y Rabinowitz (1978) determinaron que al seleccionar a2= 3/2
se obtiene un mnimo en el error de truncamiento para los algoritmos RK de segundo
orden. Con esta versin se tiene a1= y p1= q11= y da:

RK3 (Rugen-Kutta de 3er orden)

Para n=3, es posible efectuar un desarrollo similar al del mtodo de segundo orden. El
resultado de tal desarrollo genera seis ecuaciones con ocho incgnitas. Esto nos obliga
a dar 2 valores de incgnitas para establecer los parmetros restantes. Una versin
comn es:
RK4 (Rugen-Kutta de 4to orden)

El ms popular de los mtodos de RK es el de cuarto orden. Como en el caso de los


procedimientos de segundo orden, hay un nmero infinito de versiones. La siguiente, es la
forma comnmente usada y por lo tanto, le llamamos mtodo clsico RK de cuarto orden:
ANEXOS:

Mtodo de Euler.
clc
clear all
close all
syms('x');
f=input('Ingrese Ecuacin = ');
xo1=input('ingrese lmite inferior de x=');
xf=input('ingrese lmite superior de x=');
Xo=input('ingrese Xo=');
Yo=input('ingrese Yo=');
h=input('Rango= ');
y=int(f,x);
x=Xo;
y1=eval(y)
C=Yo-y1
disp ('dy/dx');
f
disp ('Funcion integrada aplicada las condiciones');
Y=y+C
x=xo1;
Y1=eval(Y);
%Pendientes=verd
n=abs((xf-xo1)/h)+1;
m=zeros(1,n);
for i=1:n;
j(1)=xo1;
j(i+1)=j(i)+h;
x=j(i);
m(i)=eval(f);
end
%Y de euler
Yeu=zeros(1,n);
Yeu(1)=Y1;
for j=2:n;
Yeu(j)=Yeu(j-1)+(m(j-1)*h);
end
%Y verd
j=zeros(1,n);
G=zeros(1,n);
for i=1:n;
j(1)=xo1;
j(i+1)=j(i)+h;
x=j(i);
G(i)=eval(Y);
end
%grafica
hold on
grid on
title('Yeuler,Yverdadero vs intervalo X');
Graf=plot(j(1:n),G(1:n),'b-','linewidth',2);
graf=plot(j(1:n),Yeu(1:n),'g-','linewidth',3);
xlabel('intervalo de anlisis')
ylabel('Valores de Y de euler y Y verdadero')
hold off

RK2 (a2= ) o Heun.


RK2 (a2=1) o Punto medio.

RK2 (a2= 3/2) o Ralston.


clc
clear all
close all

%RK2(Mtodo de Rugen-Kutta de 2do orden)

xo=0;
y= 2;
x=0;
xf=5;
h=0.5;
n=(xf-xo)/h; %nmero de puntos necesarios
vectory=y;
vectorx=x;
for i=1:n

%calculo de las constantes de runge kutta

k1=4*exp(0.8*x)-0.5*y;
k2=4*exp(0.8*(x+(3/4)*h))-0.5*(y+(3/4)*k1*h);

y=y+h*((1/3)*k1+(2/3)*k2);
x=x+h;
vectory=[vectory y];
vectorx=[vectorx x];
end
vectory;
vectorx;
plot(vectorx,vectory,'*')
title('Mtodo de Runge-Kutta de 2do orden')

RK3 (Rugen-Kutta de 3er orden)


clc
clear all
close all

%RK3(Mtodo de Rugen-Kutta de 3er orden)

xo=0;
y= 2;
x=0;
xf=5;
h=0.5;
n=(xf-xo)/h; %nmero de puntos necesarios
vectory=y;
vectorx=x;
for i=1:n
%calculo de las constantes de runge kutta

k1=4*exp(0.8*x)-0.5*y;
k2=4*exp(0.8*(x+(1/2)*h))-0.5*(y+(1/2)*k1*h);
k3=4*exp(0.8*(x+h))-0.5*(y-k1*h+2*k2*h);

y=y+((1/6)*(k1+4*k2+k3)*h);
x=x+h;
vectory=[vectory,y];
vectorx=[vectorx,x];
end

disp('y=')
disp(vectory')

plot(vectorx,vectory,'b-*')
title('Mtodo rugen-kutta 3er orden')

RK4 (Rugen-Kutta de 4to orden)

clc
clear all
close all

%RK4(Mtodo de Rugen-Kutta de 4to orden)

xo=0;
y= 2;
x=0;
xf=5;
h=0.5;
n=(xf-xo)/h; %nmero de puntos necesarios
vectory=y;
vectorx=x;
for i=1:n

%calculo de las constantes de runge kutta

k1=4*exp(0.8*x)-0.5*y;
k2=4*exp(0.8*(x+(1/2)*h))-0.5*(y+(1/2)*k1*h);
k3=4*exp(0.8*(x+(1/2)*h))-0.5*(y+(1/2)*k2*h);
k4=4*exp(0.8*(x+h))-0.5*(y+k3*h);
y=y+((1/6)*(k1+2*k2+2*k3+k4)*h);
x=x+h;
vectory=[vectory,y];
vectorx=[vectorx,x];

end

disp('y=')
disp(vectory')

plot(vectorx,vectory,'b-o')
title('Mtodo rugen-kutta 4to orden')

You might also like