Está en la página 1de 10

Version 30/1/2008

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

= f(t, u) sobre el intervalo [t


k+p
, t
kj
]
y reescribamosla en forma integral
u(t
k+p
) u(t
kj
) =
_
t
k+p
t
kj
f(t, u(t))dt
Calculemos la integral usando del polinomio de Lagrange de grado igual (o menor) que
87
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 88
q que aproxima la funcion f en los puntos t
k
, t
k1
, ..., t
kq
. Esto es, reescribamos
f(t, u(t)) =
q

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

= u + 2 cos t con u(0) = 2 que


utilizamos como modelo en los captulos anteriores.
Uex = exp(-5)+sin(5)+cos(5); Usal=zeros(1,1001);
tic; [t,Uab] = ab4(funt11,0,5,1000,2);
tab=toc; eab=abs(Uex-Uab(1001));
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 93
tic; [t,Uabm] = abm4(funt11,0,5,1000,2);
tabm=toc; eabm=abs(Uex-Uabm(1001));
tic; [t,Urk4] = rk4(funt11,0,5,1000,2);
trk4=toc; erk4=abs(Uex-Urk4(1001));
fprintf( Metodo Tiempo de Calculo Error \n);
fprintf(Adams-Bashforth 4%f%e \n,tab,eab);
fprintf(Adams-Bashforth-Moulton 4%f%e \n,tabm,eabm);
fprintf(Runge-Kutta 4%f%e \n,trk4,erk4);
Metodo Tiempo de Calculo Error
Adams-Bashforth 4 0.080000 5.131340e-011
Adams-Bashforth-Moulton 4 0.151000 4.051204e-012
Runge-Kutta 4 0.200000 4.854894e-012
En este ejemplo se comprueba como el metodo de Adams-Bashforth es el m as r apido
de todos pero tambien el menos preciso. De hecho incrementando el paso el metodo de
Adams-Bashforth se hace inestable y el resultado muy malo. El metodo de Runge-Kutta
en este caso es tan preciso como el de Adams-Bashforth-Moulton, pero este ultimo es me-
nos costoso computacionalmente. En otros casos los metodos de tipo predictor-corrector
pueden ser menos precisos y presentar problemas de estabilidad, hecho que discutiremos
a continuaci on. La relaci on entre los errores del metodo de Adams-Bashforth y Adams-
Bashforth-Moulton es del orden de 1/10, que corresponde a las estimaciones del error
de truncacion de las tablas.
5.5 Metodos multipaso en Matlab.
Al igual que ocurra en el caso de los metodos de un s olo paso podemos encontrarnos
con problemas si el paso h que utilizamos es demasiado grande para estudiar zonas con
irregularidades y demasiado peque no para estudiar zonas en las que la funcion es muy
simple. En estos casos resulta interesante cambiar el paso de integraci on. Sin embargo,
esta tarea, que resultaba sencilla en el caso de los metodos de un s olo paso resulta ahora
m as complicada por el hecho de tener que recalcular los pasos iniciales con un metodo
de un s olo paso. As pues estos metodos no son triviales de implementar.
Por contra la estimaci on del error puede hacerse de manera muy sencilla ya que
usando un predictor corrector disponemos de dos aproximaciones del mismo orden para
la soluci on o bien usando dos metodos de ordenes consecutivos que requieren el mismo
coste computacional. No entraremos en detalle a desarrollar los metodos de paso variable
de este tipo.
Otros metodos m as sosticados a un son los de paso variable y orden variable en los
que el orden del metodo multipaso utilizado se cambia din amicamente seg un procede la
integraci on. Matlab incorpora una funcion llamada ode113 que incorpora un metodo
de paso variable y orden variable, usando formulas de Adams-Bashforth-Moulton de
ordenes 1-12.
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Metodos multipaso 94
Ejercicios resueltos
5.1 Al resolver una ecuaci on diferencial ordinaria mediante los metodos de Adams-
Moulton y de Adams-Bashforth-Moulton Cual de ellos ser a de implementacion
computacional m as costosa en general?
Soluci on. El metodo de Adams-Moulton requiere resolver un sistema de ecuacio-
nes no lineales en cada paso por lo que ser a en general m as costoso.
5.2 Dada la ecuaci on diferencial u

2u con dato inicial u(0) = 2, se pide aproximar


la soluci on de la misma mediante un metodo de Adams-Bashforth de segundo
orden en t = 1 usando h = 0.25. Comparar la soluci on encontrada numericamente
con la soluci on exacta, que es u(1) = 9/2.
Soluci on. El metodo de Adams-Bashforth de segundo orden es
U
k+1
= U
k
+
h
2
(3f
k
f
k1
)
Como se trata de un metodo de dos pasos necesitamos calcular la soluci on en
el primer paso mediante alg un otro metodo. Utilizaremos el metodo de Euler
modicado que es tambien de segundo orden y por lo tanto consistente con el de
Adams-Bashforth. Tendremos entonces
U
1
= U
0
+
0.25
2
_

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, u(0) = 1. Cuya soluci on es u(t) = e


t
. Iniciali-
zar el metodo de Adams-Bashforth-Moulton con valores calculados mediante: el
metodo de Euler, el metodo de medio paso y los valores exactos de la soluci on y
discutir las diferencias que se observan en las soluciones. Como depende el error
de h en los distintos casos?
5.8 Demostrar que la iteraci on de Adams-Bashforth-Moulton para 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

= sen u? Estudiar en ambos casos si es posible aplicar el metodo de


Adams-Moulton directamente.
5.9 El metodo de Milne-Simpson es un metodo de tipo predictor-corrector denido
por
P : U
k+1
= U
k3
+
4h
3
(2f
k
f
k1
+ 2f
k2
)
C : U
k+1
= U
k1
+
h
3
(f
k+1
+ 4f
k
+ f
k1
)
Comparar el funcionamiento del metodo de Milne-Simpson con el de Adams-
Bashforth- Moulton para el problema del ejercicio 5.6.
Version 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html

También podría gustarte