You are on page 1of 4

Informe de Laboratorio N°02-02

Del alumno

:

Helbert Justo Luque Zevallos

Al profesor

:

Angel Sangiacomo

Asunto

:

Método de AdamsBashForth de 3 pasos de RK4

Fecha

:

09-09-2015

Tengo a bien informar a usted sobre la práctica en el laboratorio sobre el
método de de AdamsBashForth de 3 pasos de RK4.
¿Qué es?
Es un algoritmo que implementa el método de AdamsBashForth de 3 pasos de
RK4 para la solución de una E.D.O. con valor inicial.
¿Cómo es?
Los métodos de euler, Heun, Taylor y Runge-Kutta se llaman método de un
paso porque en el cálculo de cada punto sólo se usa la información del último
punto. Los métodos multipaso utiliza la información de los puntos previos, a
saber, yi, yi-1,..., yi-m+1 para calcular yi+1. Por ejemplo, en un método de tres pasos
para calcular yi+1 , se necesita conocer yi, yi-1, yi-2. El principio que subyace en un
método multipaso es utilizar los valores previos para contruir un polinomio
interpolante que aproxime a la función f(t,y(t)). El número de valores previos
considerados para determinar el polinomio interpolante nos determina el grado
del polinomio. Por ejemplo, si se consideran tres puntos previos, el polinomio
de aproximación es cuadrático; si se usan cuatro puntos previos, el polinomio
es cúbico
La idea fundamental del método de Adams-Bashforth de n pasos es usar un
polinomio de interpolación de f(t,y(t)) que pasa por los n puntos: (ti,fi), (ti-1,fi1),..., (ti-n+1,fi-n+1).
Los métodos de Adams-Bashforth(A-B) de n pasos tienen la forma general:

¿Qué hace?
Obtiene una aproximación al problema de valor inicial bien planteado.
a≤t ≤b

∂y
=f ( t , y )
∂t

Obtener

f i , f i−1 , f i−2

por medio de método de runge Kutta 4 (se puede utilizar

otros métodos)
f ( t i , y i ) =f i

f ( t i−1 , y i−1 )=f i−1

f ( t i−2 , y i−2 )=f i−2

f ( t i+1 , y i+1 )= y i +

h
[ 23∗f i −16∗f i−1 +5∗f i−2 ]
12

Variables:
fu: Función f(t,y) en formato texto debe contener variables “t” y “y”
vi: Valor de Valor Inicial
a: Valor de a
b: Valor de b
n: Numero de iteraciones
h: Tamaño de paso
t: Vector con los datos obtenidos pata la variable t
RungeKutta4: Vector con los datos obtenidos por rk4
AdamsBasforth03: Vector con los datos obtenidos por AdamsBasforth de tres
pasos

Algoritmo
f=f(z,t,y): función en formato texto debe contener variables “t” y “y”
function f=f(z,t,y)
f=eval(z);
RungeKutta4(z,a,b,vi,n) : Funcion que devuelve un vector con los valores de Rk4
function mRungeKutta4=RungeKutta4(z,a,b,vi,n)
mRungeKutta4=[];
h=(b-a)/n;
ti=a;
yrk4=vi;
mRungeKutta4(1)=vi;
for r=2:n+1
k1=h*f(z,ti,yrk4);
k2=h*f(z,ti+h/2,yrk4+k1/2);
k3=h*f(z,ti+h/2,yrk4+k2/2);
k4=h*f(z,ti+h,yrk4+k3);
yrk4=yrk4+1/6*(k1+2*k2+2*k3+k4);
mRungeKutta4(r)=yrk4;
ti=ti+h;
end
Basforth03 (z,a,b,vi,n) : Funcion que devuelve un vector con los valores de Rk4
function mBasforth=Basforth03(z,a,b,vi,n)
mBasforth03=[];
h=(b-a)/n;
ti=a;
yBasforth03=vi;
mBasforth03=RungeKutta4(z,a,b,vi,n);
ti=ti+(3)*h;
r=4;
yBasforth03=mBasforth03 (r-1)+h/12*(23*f(z,ti-1*h,mBasforth03 (r-1))-16*f(z,ti-2*h,mBasforth03
(r-2))+5*f(z,ti-3*h,mBasforth03 (r-3)));
ti=ti+h;
mBasforth03 (r)=yBasforth03;
AdamsBashForth03.m
%------Metodos de AdamsBashForth de 3 pasos-----clc;
disp(' Metodos de AdamsBashForth de 3 pasos ');
fu=input('ingrese funcion f(t,y) = ');
vi=input('ingrese Valor de Valor Inicial = ');
a=input('ingrese Valor de A = ');
b=input('ingrese Valor de B = ');
n=input('ingrese iteraciones = ');
h=(b-a)/n;
fprintf ('\n ti
yi \n ');
AdamsBasforth03=Basforth03(fu,a,b,vi,n);
for i=1:n+1
t(i)= (i-1)*h;
fprintf ('%5.5f %5.5f \n ',t(i),AdamsBasforth03(i));
end
hold off;
plot(t,AdamsBasforth03,'+');
xlabel('Pasos');
ylabel('Valor aproximado');
legend('Metodo AdamsBashForth de 3 pasos');
hold on;
disp('________________');

Metodos de AdamsBashForth de 3 pasos
ingrese funcion f(t,y) = 'y+t'
ingrese Valor de Valor Inicial = 0
ingrese Valor de A = 0
ingrese Valor de B = 1
ingrese iteraciones = 10
ti
yi
0.00000 0.00000
0.10000 0.00517
0.20000 0.02140
0.30000 0.04982
0.40000 0.09182
0.50000 0.14872
0.60000 0.22212
0.70000 0.31375
0.80000 0.42554
0.90000 0.55960
1.00000 0.71828
________________