Documentos de Académico
Documentos de Profesional
Documentos de Cultura
http://matematicas.uclm.es/ind-cr/metnum/index.html
Captulo 5
Metodos multipaso
Contenidos del captulo
5.1 Introducci on y generalidades. . . . . . . . . . . . . . . . . . . 87
5.2 Metodo de Adams-Bashforth. . . . . . . . . . . . . . . . . . . 88
5.3 Metodo de Adams-Moulton y Adams-Bashforth-Moulton . 90
5.4 Ejemplo de aplicacion de los metodos multipaso . . . . . . . 92
5.5 Metodos multipaso en Matlab. . . . . . . . . . . . . . . . . . 93
5.1 Introduccion y generalidades.
Hasta ahora hemos utilizado la informaci on de la funcion f(t, u(t)) en un intervalo
contenido entre el dato del que partimos t
k
, y el punto al que queremos llegar t
k+1
.
Sin embargo, al ir resolviendo la ecuaci on diferencial normalmente disponemos de la
informaci on del valor de la soluci on en muchos puntos anteriores, en los que esta ya se
ha calculado. Los metodos multipaso se basan precisamente en utilizar esta informaci on,
reduciendo a cambio el n umero de evaluaciones de la funcion f en el paso actual. Este
hecho suele hacerlos m as ecientes en tiempo de calculo que los metodos de paso jo
Los metodos de varios pasos no pueden iniciar la soluci on por s s olos ya que necesi-
tan conocer la soluci on en varios puntos anteriores. Normalmente se conocer an s olo los
valores en t
0
, por lo que el c alculo del resto de la informaci on necesaria debe realizarse
de otra forma, por ejemplo usando un metodo de un s olo paso auxiliar como puede ser
un Runge-Kutta de orden sucientemente alto.
Vamos a empezar presentando en general como funcionan estos metodos de manera
general. Consideremos la ecuaci on diferencial u
i=0
f(t
ki
, u(t
ki
))L
i
(t) +
f
(q+1)
(z, u(z))
(q + 1)!
(t t
k
) . . . (t t
kq
),
siendo
L
i
(t) =
q
l=0,l=i
t t
kl
t
ki
t
kl
,
y z (t
kq
, t
k
). Introduciendo esta expresi on en la integral obtenemos
u(t
k+p
) u(t
kj
) =
q
i=0
f(t
ki
, u(t
ki
))
_
t
k+p
t
kj
L
i
(t)dt +
_
t
k+p
t
kj
f
(q+1)
(z, u(z))
(q + 1)!
(t t
k
) . . . (t t
kq
)dt.
Supondremos a partir de ahora que los puntos est an equiespaciados: t
k+1
t
k
= h.
Para calcular las integrales es conveniente realizar el cambio de variable t = (s + k)h.
Entonces
_
t
k+p
t
kj
L
i
(t)dt = h
_
p
j
q
l=0,l=i
s + l
i + l
ds c
qi
,
_
t
k+p
t
kj
f
(q+1)
(z, u(z))
(q + 1)!
(t t
k
) . . . (t t
kq
)dt =
h
q+2
(q + 1)!
f
(q+1)
(, u())
_
p
j
q
l=0
(s + l)ds.
(5.1)
En la ultima integral se ha hecho uso del teorema del valor medio para integrales y
es un n umero desconocido del intervalo [t
kj
, t
p+k
]. Este termino nos ser a util para
deducir el error de truncacion de los metodos multipaso.
Sustituyendo ahora f(t
ki
, u(t
ki
)) por f
ki
= f(t
ki
, U
ki
) y despreciando el termino
de error, que es de orden O(h
q+2
) llegamos a la formula
U
k+p
= U
kj
+ h
q
i=0
f
ki
c
qi
,
que conocido U
kj
y f
ki
nos permite calcular U
k+p
(las c
qi
son coecientes). Las dife-
rentes elecciones de p, j, y q nos llevan a distintos metodos multipaso.
5.2 Metodo de Adams-Bashforth.
Eligiendo p = 1, j = 0 y q entero positivo en la formula general se llega a las ecuaciones
U
k+1
= U
k
+ h
q
i=0
c
qi
f
ki
,
que se denominan formulas de Adams-Bashforth. Dependiendo del n umero de puntos
anteriores q que se utilicen para calcular la soluci on en el paso k + 1 los coecientes c
toman distintos valores. En particular, los primeros se presentan en la siguiente tabla
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 89
i 0 1 2 3 4
c
0i
1
2c
1i
3 -1
12c
2i
23 -16 5
24c
3i
55 -59 37 -9
720c
4i
1901 -2774 2616 -1274 251
Por otro lado, para cada valor de q es posible calcular el termino de error. Para ello
usaremos el hecho de que f
(q+1)
(, u()) = u
(q+2)
() y entonces
E
q
=
h
q+2
u
(q+2)
()
(q + 1)!
_
1
0
q
l=0
(s + l) ds.
Con este resultado podemos calcular el error de truncacion, que al igual que antes es
la cantidad por la que el esquema numerico no satisface la ecuaci on diferencial, en este
caso
(h) =
u(t
k+1
) u(t
k
)
h
q
i=0
f (t
ki
, u(t
ki
)) c
qi
=
h
q+1
u
(q+2)
()
(q + 1)!
_
1
0
q
l=0
(s + l) ds.
Un metodo de Adams-Bashforth construido con q + 1 puntos (t
k
, ..., t
kq
) tiene un
error de truncacion de orden O(h
q+1
). En la siguiente tabla se presentan algunos de los
metodos de Adams-Bashforth junto con sus errores de truncacion.
Pasos Formula del metodo (h)
2 U
k+1
= U
k
+
h
2
(3f
k
f
k1
)
5
12
u
(3)
()h
2
3 U
k+1
= U
k
+
h
12
(23f
k
16f
k1
+ 5f
k2
)
3
8
u
(4)
()h
3
4 U
k+1
= U
k
+
h
24
(55f
k
59f
k1
+ 37f
k2
9f
k3
)
251
720
u
(5)
()h
4
5 U
k+1
= U
k
+
h
720
(1901f
k
2774f
k1
+ 2616f
k2
1274f
k3
+ 251f
k4
)
95
288
u
(6)
()h
5
En todos los casos est a en el intervalo [U
kq
, U
k+1
].
Observese que el metodo de Adams-Bashforth requiere una unica evaluaci on de la
funcion f por cada paso. Este comportamiento le proporciona a priori una ventaja
computacional sobre los metodos de Runge-Kutta de orden comparable, que requieren
muchas m as evaluaciones de f en cada paso. Por supuesto habra que valorar tambien
otras cuestiones como la precision comparada de ambos metodos pero este es un primer
dato interesante.
El metodo de Adams-Bashforth puede programarse en Matlab como sigue
function [t,U] = ab4(fun,t0,tf,n,U0);
%
% [t,U] = ab4(fun,t0,tf,n,U0)
%
% Calcula la solucion de la ecuacion diferencial
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 90
% u = fun(t,u) usando el metodo de Adams-Bashforth
% de cuarto orden inicializado con un Runge-Kutta de cuarto orden
%
% Variables de entrada:
% fun: nombre de la funcion
% t0, U0: Datos iniciales
% tf: tiempo de parada
% n: numero de subintervalos
%
% Variables de salida:
% t, U: vector con las soluciones en t=t0+k
*
h, k=1,...,n+1
%
U = zeros(1,n+1); f=zeros(1,n+1); U(1) = U0; h=(tf-t0)/n;
t=t0:h:tf;
% Aplica tres pasos del Runge-Kutta
for k=1:3
k1 = h
*
feval(fun,t(k),U(k));
f(k) = k1;
k2 = h
*
feval(fun,t(k)+0.5
*
h,U(k)+ 0.5
*
k1);
k3 = h
*
feval(fun,t(k)+0.5
*
h,U(k)+ 0.5
*
k2);
k4 = h
*
feval(fun,t(k)+h,U(k)+k3);
U(k+1) = U(k) + (k1+2
*
k2+2
*
k3+k4)/6;
end;
f(4) = h
*
feval(fun,t(4),U(4));
% Inicio del metodo predictor de Adams-Bashforth
for k=4:n
U(k+1) = U(k) + (55
*
f(k)-59
*
f(k-1)+37
*
f(k-2)-9
*
f(k-3))/24;
f(k+1) = h
*
feval(fun,t(k+1),U(k+1));
end;
Un inconveniente de estos metodos es que si el valor del paso h no es sucientemente
peque no pueden aparecer inestabilidades porque se extrapola el valor de f
k+1
(se obtiene
un valor fuera del rango de valores utilizado para construir el polinomio de interpolacion).
5.3 Metodo de Adams-Moulton y Adams-Bashforth-Moulton
Eligiendo p = 0, j = 1 y q entero positivo en la expresi on de denicion de los metodos
multipaso se llega a los denominados metodos de Adams-Moulton, que vienen denidos
por las formulas
U
k
= U
k1
+ h
q
i=0
c
qi
f
ki
.
El error de truncacion tambien puede obtenerse facilmente a partir de nuestro an alisis
general. Las formulas de Adams-Moulton de ordenes m as bajos son
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 91
Pasos Formula del metodo (h)
2 U
k+1
= U
k
+
h
2
(f
k+1
+ f
k
)
1
6
u
(3)
()h
2
3 U
k+1
= U
k
+
h
12
(5f
k+1
+ 8f
k
f
k1
)
1
24
u
(4)
()h
3
4 U
k+1
= U
k
+
h
24
(9f
k+1
+ 19f
k
5f
k1
+ f
k2
)
19
720
u
(5)
()h
4
5 U
k+1
= U
k
+
h
720
(251f
k+1
+ 646f
k
264f
k1
+
106f
k2
19f
k3
)
3
160
u
(6)
()h
5
En todos los casos est a en el intervalo [U
k+1
, U
kq
].
Los metodos de Adams-Moulton utilizan la informaci on de la funcion f(t, u(t)) en
t = t
k+1
para calcular la soluci on en ese punto y por ello se llaman metodos implcitos
a diferencia de los metodos que no necesitan que se resuelva una ecuaci on no lineal en
cada paso, como los de Adams-Bashforth o Runge-Kutta, y que se denominan explcitos.
Esta forma de proceder puede resultar m as precisa pero plantea un problema evidente.
Como calcular f
k+1
sin conocer U
k+1
? La forma m as habitual de proceder en la pr actica
es estimar el valor de U
k+1
mediante un metodo explcito como el de Adams-Bashforth
y despues aplicar una o varias iteraciones del metodo de Adams-Moulton para corregir
el valor obtenido mediante el metodo de Adams-Bashforth. Por esta raz on los metodos
implcitos se llaman a veces correctores mientras que los explcitos se denominan predic-
tores. A la conjunci on de ambos se les denomina metodos de tipo predictor-corrector.
Un ejemplo tpico de metodo predictor-corrector es el formado por la combinaci on
de los dos metodos de Adams de cuarto orden:
Metodo predictor-corrector de Adams-Bashforth-Moulton
(ABM) de cuarto orden
U
k+1
= U
k
+
h
24
(55f
k
59f
k1
+ 37f
k2
9f
k3
) ,
f
k+1
= f
_
t
k+1
,
U
k+1
_
,
U
k+1
= U
k
+
h
24
_
9
f
k+1
+ 19f
k
5f
k1
+ f
k2
_
.
Este metodo es totalmente explcito. Primero se emplea el metodo de Adams-Bashforth
para predecir el valor de U
k+1
, y este valor se emplea para aproximar f
k+1
en el metodo
de Adams-Moulton que nos devuelve un valor corregidopara U
k+1
.
Del mismo modo pueden desarrollarse metodos de tipo predictor-corrector utilizando
formulas de orden m as alto (por ejemplo quinto) inicializadas con metodos de un paso
de orden sucientemente alto. El siguiente codigo Matlab implementa un metodo de
tipo predictor-corrector de cuarto orden. Observese que el uso del corrector hace pasar
el n umero de evaluaciones de f por paso temporal de una a dos.
function [t,U] = abm4(fun,t0,tf,n,U0);
%
% [t,U] = abm4(fun,t0,tf,n,U0)
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 92
%
% Calcula la solucion de la ecuacion diferencial
% u = fun(t,u) usando el metodo de Adams-Bashforth-Moulton
% de cuarto orden inicializado con un Runge-Kutta de cuarto orden
%
% Variables de entrada:
% fun: nombre de la funcion
% t0, U0: Datos iniciales
% tf: tiempo de parada
% n: numero de subintervalos
%
% Variables de salida:
% [t,U]: Valores de tiempos y soluciones en t=t0+k
*
h, k=0,...,n
%
U = zeros(1,n+1); f=zeros(1,n+1); U(1) = U0; h=(tf-t0)/n; t=t0;
t=t0:h:tf;
% Aplica tres pasos del Runge-Kutta
for k=1:3
k1 = h
*
feval(fun,t(k),U(k));
f(k) = k1;
k2 = h
*
feval(fun,t(k)+0.5
*
h,U(k)+ 0.5
*
k1);
k3 = h
*
feval(fun,t(k)+0.5
*
h,U(k)+ 0.5
*
k2);
k4 = h
*
feval(fun,t(k)+h,U(k)+k3);
U(k+1) = U(k) + (k1+2
*
k2+2
*
k3+k4)/6;
end;
f(4) = h
*
feval(fun,t(4),U(4));
% Inicio del metodo predictor-corrector de Adams-Bashforth-Moulton
for k=4:n
U(k+1) = U(k) + (55
*
f(k)-59
*
f(k-1)+37
*
f(k-2)-9
*
f(k-3))/24;
f(k+1) = h
*
feval(fun,t(k+1),U(k+1));
U(k+1) = U(k) + (9
*
f(k+1)+19
*
f(k)-5
*
f(k-1)+f(k-2))/24;
f(k+1) = h
*
feval(fun,t(k+1),U(k+1));
end;
5.4 Ejemplo de aplicacion de los metodos multipaso
Vamos a comparar el rendimiento de los metodos multipaso con el de Runge-Kutta de
cuarto orden aplicado a la resolucion del problema u
2 2 +
_
2
_
2 + 0.25
2 2
_
_
= 2.529508
y f
1
=
2U
1
= 2.249226. Con estos valores ya podemos aplicar sucesivamente el
metodo AB2 (mostramos s olo las primeras siete cifras signicativas, aunque los
calculos han sido realizados con 16 dgitos de precision).
U
2
= U
1
+
h
2
(3f
1
f
0
) = 3.122968
f
2
=
_
U
2
= 2.499187
U
3
= U
2
+
h
2
(3f
2
f
1
) = 3.779010
f
3
=
_
U
3
= 2.749185
U
4
= U
3
+
h
2
(3f
3
f
2
) = 4.497556
Que tiene un error de E 0.003 no est a nada mal dado lo grueso de la malla
elegida para realizar el calculo.
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 95
Ejercicios propuestos
5.3 Escribir una funcion Matlab ab3 que resuelva sistemas de ecuaciones diferencia-
les mediante el metodo de Adams-Bashforth de tercer orden. Utilizar el metodo
de Runge-Kutta de cuarto orden para calcular los dos primeros pasos.
5.4 Comparar la velocidad de ejecucion y precision del metodo de Adams-Bashforth
de quinto orden con la del metodo de Runge-Kutta-Fehlberg al resolver la ecua-
cion diferencial u
= C cos t u
2
con dato inicial u(0) = 1. La soluci on exacta en
este caso es u(t) =
1
1C sen t
. Aplicar al caso C = 0.8.
5.5 Repetir el ejercicio 5.4 para C = 1. Que observas en la soluci on numerica?
Que ocurre con el metodo de medio paso?
5.6 Comparar el funcionamiento del metodo de Adams-Bashforth-Moulton con los
metodos de Adams-Bashforth para el problema u
= (u + 1)(u + 3) en [0,1]
usando como dato inicial u(0) = 2. La soluci on exacta es u(t) = 3 + 2/(1 +
e
2t
).
5.7 Considerar el problema u
=
u puede reducirse a una s ola ecuaci on que englobe el predictor y el corrector.
Es posible realizar esta simplicacion para el problema u
= u
2
? Y para el
problema u