0% encontró este documento útil (0 votos)
18 vistas27 páginas

07 - Problemas de Valor Inicial II

Métodos numéricos aplicados I. UNIR

Cargado por

Carlos Harim
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas27 páginas

07 - Problemas de Valor Inicial II

Métodos numéricos aplicados I. UNIR

Cargado por

Carlos Harim
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 27

Tema 7

Métodos Numéricos Aplicados I

Problemas de valor inicial II


Índice
Esquema. . . . . . . . . . . . . . . . . . . . . . . 2

Ideas clave . . . . . . . . . . . . . . . . . . . . . . 3

7.1 Introducción y objetivos . . . . . . . . . . . . . 3

7.2 Métodos numéricos explícitos para resolver PVIs . . . 4

7.3 Métodos numéricos implícitos para resolver PVIs . . . 12

7.4 Métodos predictor-corrector . . . . . . . . . . . 20

7.5 Métodos numéricos para problemas rígidos . . . . . 22


Esquema

P RO B L E M A S D E VA LO R I N I C I A L

Ecuación Condición
diferencial inicial

S i st e m a s d e e c u a c i o n e s
Ec u a c i ó n d i fe re n c i a l Ec u a c i ó n d i fe re n c i a l
d i fe re n c i a l e s d e p r i m e r
d e p r i m e r o rd e n d e o rd e n s u p e r i o r
o rd e n

𝑦 " 𝑡 = 𝑓 𝑡, 𝑦(𝑡) 𝑦-" 𝑡 = 𝑓- 𝑡, 𝑦- 𝑡 , … , 𝑦/ 𝑡 , 𝑦 /


𝑡 = 𝑓 𝑡, 𝑦 𝑡 , … , 𝑦 /1-
(𝑡) ,

𝑡 ∈ 𝑎, 𝑏 , 𝑦 𝑎 = 𝑦, " 𝑡 ∈ 𝑎, 𝑏 ,
𝑦/ 𝑡 = 𝑓/ 𝑡, 𝑦- 𝑡 , … , 𝑦/ (𝑡 ,
𝑡 ∈ 𝑎, 𝑏 , 𝑦 𝑎 = 𝑦-,, , … , 𝑦 (/1-) 𝑎 = 𝑦/,,

𝑦- 𝑎 = 𝑦-,, , … , 𝑦/ 𝑎 = 𝑦/,,

MÉTODOS

Un paso Multipaso

Euler Explícitos: Adams-Bashforth


Heun Implícitos: Adams-Moulton
Runge-Kutta Predictor-corrector

Métodos Numéricos Aplicados I


2
Tema 7. Esquema
Ideas clave

7.1 Introducción y objetivos

En el tema anterior estudiamos distintos métodos numéricos de un paso para resolver


problemas de valor inicial. Estos métodos se denominan así porque la aproximación
en el punto tk+1 solo implica conocer la información del punto anterior tk . Asimismo,
aunque estos métodos generalmente utilizan información de las evaluaciones funcio-
nales entre los puntos tk y tk+1 , no almacenan dicha información de forma directa
para ser utilizada en futuras aproximaciones. Por tanto, la solución en un subintervalo
está basada exclusivamente en la información disponible en dicho subintervalo.

Dado que para obtener la aproximación de la solución en el nodo tk+1 disponemos


de la solución aproximada en cada uno de los nodos t0 , t1 , . . . , tk , parece razonable
desarrollar métodos que, en lugar de utilizar solo la información del subintervalo, uti-
licen de forma más precisa toda la información que se dispone hasta este nodo. Los
métodos que utilizan la aproximación en más de un nodo previo para determinar la
solución aproximada en el siguiente nodo se denominan métodos multipaso. A lo lar-
go de este tema vamos a definir de forma precisa algunos de estos métodos, así como
los tipos de métodos multipaso existentes.

Tras distinguir entre métodos explícitos y métodos implícitos, presentaremos los es-
quemas multipaso fundamentales y los esquemas predictor-corrector como combina-
ción de éstos. Por último, presentaremos un tipo de problemas de valor inicial, deno-
minados problemas rígidos, para los cuales determinados métodos funcionan mejor
que otros debido al comportamiento de la función que define el problema. Por tanto,
los objetivos que trataremos de alcanzar son:

Métodos Numéricos Aplicados I


3
Tema 7. Ideas clave
I Comprender la diferencia entre método numérico explícito o implícito.

I Estudiar los métodos explícitos e implícitos fundamentales.

I Estudiar el diseño de métodos predictor-corrector.

I Conocer las ecuaciones rígidas y los problemas de resolución numérica relaciona-


dos con estas ecuaciones.

I Analizar y comparar la estabilidad en problemas rígidos de los métodos implícitos


frente a los explícitos.

Algunas funciones Matlab utilizadas en este tema

I ode23, ode45: resuelven EDO’s y sistemas de EDO’s

I ode15s: resuelven EDO’s y sistemas de EDO’s en problemas rígidos

7.2 Métodos numéricos explícitos para resolver


PVIs

Consideremos la expresión general de un PVI definido por medio de una ecuación


diferencial de primer orden

y 0 (t) = f (t, y(t)), t ∈ [a, b], y(a) = ya .

En el tema anterior vimos que, como aproximación a la solución analítica del proble-
ma, calculamos de forma numérica la solución en los nodos equiespaciados tk en [a, b],
k = 0, 1, . . . , N , a una distancia o paso h. Entonces, integrando directamente la ecua-
ción diferencial en cada subintervalo [tk , tk+1 ] obtenemos
Z tk+1
y(tk+1 ) = y(tk ) + f (τ, y(τ ))dτ. (1)
tk

Métodos Numéricos Aplicados I


4
Tema 7. Ideas clave
Para aproximar la integral obtenida, sustituiremos el integrando por un polinomio in-
terpolador. Dependiendo de los puntos utilizados para definir el polinomio de interpo-
lación, tendremos métodos explícitos o métodos implícitos. Dedicaremos esta sección
al diseño de métodos explícitos, mientras que en la siguiente sección estudiaremos al-
gunos métodos implícitos.

Para diseñar los métodos explícitos, aproximaremos la función por medio de un poli-
nomio de interpolación que pasa por los puntos

{(tk−n , f (tk−n , yk−n )) , . . . , (tk−1 , f (tk−1 , yk−1 )), (tk , f (tk , yk ))}.

Dependiendo de los puntos que consideremos para definir el polinomio, obtendremos


un método numérico explícito distinto.

Método de Adams-Bashforth de dos pasos

Partiendo de los puntos (tk−1 , f (tk−1 , yk−1 )) y (tk , f (tk , yk )), el único polinomio de
interpolación que pasa por estos puntos es

f (tk , yk ) − f (tk−1 , yk−1 )


p(τ ) = f (tk , yk ) + (τ − tk )
tk − tk−1
τ − tk−1 tk − τ
= f (tk , yk ) + f (tk−1 , yk−1 ).
h h

Aproximando la función por el polinomio de interpolación, obtenemos en (1):


Z tk+1
yk+1 = yk + p(τ )dτ
t
Z ktk+1  
τ − tk−1 tk − τ
= yk + f (tk , yk ) + f (tk−1 , yk−1 ) dτ.
tk h h

Métodos Numéricos Aplicados I


5
Tema 7. Ideas clave
Calculando la integral polinómica y desarrollando la expresión:
Z tk+1
1
yk+1 = yk + [τ (f (tk , yk ) − f (tk−1 , yk−1 )) + tk f (tk−1 , yk−1 ) − tk−1 f (tk , yk )] dτ
h tk
 2
tk+1 − t2k

1
= yk + (f (tk , yk ) − f (tk−1 , yk−1 ))
h 2
+(tk+1 − tk )(tk f (tk−1 , yk−1 ) − tk−1 f (tk , yk ))]
 
1 h(2tk + h)
= yk + (f (tk , yk ) − f (tk−1 , yk−1 )) + h(tk f (tk−1 , yk−1 ) − tk−1 f (tk , yk ))
h 2
   
2tk + h 2tk + h
= yk + − tk−1 f (tk , yk ) + tk − f (tk−1 , yk−1 )
2 2
3h h
= yk + f (tk , yk ) − f (tk−1 , yk−1 ).
2 2

Con este desarrollo, obtenemos el método Adams-Bashforth de dos pasos, que deno-
taremos AB2, con expresión:

h
yk+1 = yk + (3f (tk , yk ) − f (tk−1 , yk−1 )) .
2

Se trata de un método explícito de segundo orden con error global O(h2 ).

Recordemos que el objetivo de utilizar el método AB2 es aproximar la solución ana-


lítica de un PVI por medio de la solución en cada nodo del intervalo [a, b]. Por tanto,
pretendemos calcular las soluciones y0 , y1 , . . . , yN , donde y0 es un valor conocido da-
do por la condición inicial del PVI. Sin embargo, para calcular la solución en el segundo
nodo, sustituimos k = 0 en el método de AB2 y obtenemos

h
y1 = y0 + (3f (t0 , y0 ) − f (t−1 , y−1 )) .
2

Como la componente (t−1 , y−1 ) no existe, calcularemos y1 utilizando otro método nu-
mérico. Es razonable utilizar un método del mismo orden que AB2, por lo que utiliza-
remos el método de Heun para calcular y1 , y a partir de este punto calcularemos la
solución en los demás puntos con AB2.

Mostramos a continuación el código de la función de Matlab que implemeta el método


de Adams-Bashforth de dos pasos.

Métodos Numéricos Aplicados I


6
Tema 7. Ideas clave
AB2.m

function [t,y] = AB2 (f,a,b,N,ya)


% Código para resolver un PVI con el metodo de ...
Adams - Bashfort de dos pasos
h=(b-a)/N;
t=a:h:b;
t=t (:) ;
y= zeros (N +1 ,1) ;
y (1) =ya;
% Primer paso con el metodo de Heun
k1 = h* feval (f,t (1) ,y (1) );
k2 = h* feval (f,t (2) ,y (1) +k1);
y (2) = y (1) +( k1+k2) /2;
% Siguientes pasos con el metodo AB2
for k =2: N
k1 = feval (f,t(k),y(k));
k2 = feval (f,t(k -1) ,y(k -1) );
y(k +1) = y(k)+h /2*(3* k1 -k2);
end
end

Ejemplo 1.
Utiliza el método de Adams-Bashforth de dos pasos para calcular la solución nu-
mérica del PVI obtenido con el modelo poblacional de Verhulst

y 0 (t) = (k − py(t))y(t), t ∈ [0, 2], y(0) = 10,

Métodos Numéricos Aplicados I


7
Tema 7. Ideas clave
y una estimación del orden del método sabiendo que la solución analítica es

10k
y(t) = .
10p + (k − 10p)e−kt

Consideremos k = 3 y p = 0.1, y N = {2, 4, 8, 16, 32, 64} subintervalos en [0, 2].

En primer lugar, implementamos la función que define la ecuación diferencial del


modelo de Verhulst:

function dy = VerhulstPVI (t,y)


k = 3;
p = 0.1;
dy = (k-p*y).*y;
end

Apliquemos el método AB2 para los diferentes subintervalos así como la solución
analítica (para N = 2 y N = 4):

>> [t2 ,y2 ]= AB2 (' VerhulstPVI ' ,0 ,2 ,2 ,10);


>> sol2 =3*10 . /(0 .1 *10+(3 -0 .1 *10) .* exp ( -3* t2));

>> [t4 ,y4 ]= AB2 (' VerhulstPVI ' ,0 ,2 ,4 ,10);


>> sol4 =3*10 . /(0 .1 *10+(3 -0 .1 *10) .* exp ( -3* t4));

Calculamos el error máximo obtenido en cada uno de los subintervalos:

>> E2= max ( abs (sol2 -y2));


>> E4= max ( abs (sol4 -y4));

Y la sucesión de los cocientes entre los errores máximos:

Métodos Numéricos Aplicados I


8
Tema 7. Ideas clave
>> E=[ E2 E4 E8 E16 E32 E64 ];
>> orden = log2 (E(1 :end -1)./E(2 :end));


N EN log2 EN /2 /EN
2 10.1480 –
4 4.5230 1.1658
8 0.6324 2.8384
16 0.1938 1.7064
32 0.0543 1.8365
64 0.0144 1.9178

Tabla 1: Estimación del orden del método AB2

En la Tabla 1 observamos cómo el orden del método tiende a 2 si aumentamos el


número de puntos de la discretización.

Métodos de Adams-Bashforth de más de dos pasos

Siguiendo un procedimiento similar al método de Adams-Bashforth de dos pasos, se


pueden obtener métodos de mayor orden considerando polinomios interpoladores
que pasen por más de dos puntos. Por ejemplo, podemos seguir los pasos descritos
anteriormente para aproximar el integrando por un polinomio interpolador que pasa
por los puntos

{(tk−2 , f (tk−2 , yk−2 )), (tk−1 , f (tk−1 , yk−1 )), (tk , f (tk , yk ))},

en cuyo caso obtendríamos el método de Adams-Bashforth de tres pasos:

h
yk+1 = yk + (23f (tk , yk ) − 16f (tk−1 , yk−1 ) + 5f (tk−2 , yk−2 )) ,
12

Métodos Numéricos Aplicados I


9
Tema 7. Ideas clave
que denotaremos método AB3, y cuyo error global es O(h3 ). Para obtener los valores
de k = 0 y k = 1, podemos utilizar el método de Runge-Kutta.

Análogamente, considerando el polinomio de interpolación que pasa por los siguien-


tes cuatro puntos

{(tk−3 , f (tk−3 , yk−3 )), (tk−2 , f (tk−2 , yk−2 )), (tk−1 , f (tk−1 , yk−1 )), (tk , f (tk , yk ))},

obtendríamos el método de Adams-Bashforth de cuatro pasos, denotado AB4, cuya


expresión es

h
yk+1 = yk + (55f (tk , yk ) − 59f (tk−1 , yk−1 ) + 37f (tk−2 , yk−2 ) − 9f (tk−3 , yk−3 )) .
24

El error global de AB4 es O(h4 ). Sin embargo, para poder iniciar el proceso iterativo
que define el método, necesitamos calcular previamente y1 , y2 e y3 . Utilizaremos el
método de Runge-Kutta para obtener el valor de la solución en los primeros puntos.

Mostramos a continuación el algoritmo para implementar el método AB4, donde se


observa el uso del método de Runge-Kutta en los puntos iniciales:

I Entrada: f , a, b, N , ya

I Proceso:

• Obtención de la variable independiente discretizada t

• Inicialización del vector solución y en a

• Para k desde 0 hasta 2 aplicar el método de Runge-Kutta:

◦ Cálculo de k1 , k2 , k3 y k4 :
 
h h
k1 = f (tk , yk ), k2 = f tk + , yk + k1 ,
2 2
 
h h
k3 = tk + , yk + k2 , k4 = (tk+1 , yk + hk3 ) .
2 2

◦ yk+1 = yk + h6 (k1 + 2k2 + 2k3 + k4 )

Métodos Numéricos Aplicados I


10
Tema 7. Ideas clave
• Fin para k

• Para k desde 4 hasta N :

h
yk+1 = yk + (55f (tk , yk ) − 59f (tk−1 , yk−1 ) + 37f (tk−2 , yk−2 ) − 9f (tk−3 , yk−3 ))
24

• Fin para k

I Salida: t, y

Ejemplo 2.
Obtén la solución del PVI dado por un caso particular del modelo de Verhulst

y 0 (t) = (3 − 0.1y(t))y(t), t ∈ [0, 2], y(0) = 10.

Utiliza el método de Adams-Bashforth de 4 pasos y N = {8, 16, 32, 64, 128}


subintervalos. Obtén una estimación del orden numérico sin conocer la solución
analítica.

Siendo AB4.m la función de Matlab que implementa este método, para los dife-
rentes subintervalos ejecutamos el método en Matlab como (para los dos prime-
ros valores de N ):

>> [t8 ,y8 ]= AB4 (' VerhulstPVI ' ,0 ,2 ,8 ,10);


>> [t16 , y16 ]= AB4 (' VerhulstPVI ' ,0 ,2 ,16 ,10) ;

Aproximaremos numéricamente el orden del método duplicando el número de


subintervalos como  
N /2
log2 lím
N →∞ N

(N ) (2N )
donde N = yk − y1+2k , k = 0, 1, . . . , N . Por tanto, ejecutamos de forma
sucesiva las instrucciones:

Métodos Numéricos Aplicados I


11
Tema 7. Ideas clave
>> eps16 = norm (y8 - y16 (1:2 :end));
>> eps32 = norm (y16 - y32 (1:2 :end));

Y por último, siguiendo los mismos pasos para todos los valores de N :

>> epsilon =[ eps16 eps32 eps64 eps128 ];


>> orden = log2 ( epsilon (1 :end -1)./ epsilon (2 :end));

En la Tabla 2 vemos cómo la columna del orden va tendiendo a valores ligeramen-


te inferiores a 4, por lo que el método no alcanza el orden 4 para este problema.

N N log2 N /2 /N
8 – –
16 1.2721 –
32 0.0377 5.0768
64 0.0051 2.8849
128 0.0005 3.2667

Tabla 2: Estimación del orden del método AB4

Al igual que en el tema anterior, podemos adaptar de forma directa el código de los
métodos explícitos para la resolución de PVI obtenidos a partir de sistemas de ecua-
ciones diferenciales. Recordemos que debemos tener en cuenta las dimensiones de
vectores y matrices para definir y evaluar las funciones del sistema.

7.3 Métodos numéricos implícitos para resolver


PVIs

Si bien los métodos explícitos para aproximar el integrando en (1) utilizan puntos desde
yk−n hasta yk , en los métodos implícitos también se utiliza yk+1 . Por tanto, para definir

Métodos Numéricos Aplicados I


12
Tema 7. Ideas clave
el polinomio de interpolación utilizaremos puntos que no conocemos todavía .

Los métodos implícitos son más complejos que los métodos explícitos. Sin embargo,
gozan de una mayor estabilidad. Los puntos sobre los que se obtiene el polinomio
interpolador en los métodos implícitos son, en general, los siguientes:

{(tk−n , f (tk−n , yk−n )), . . . , (tk , f (tk , yk )), (tk+1 , f (tk+1 , yk+1 ))}.

A continuación tomaremos distinos puntos de este conjunto para definir polinomios


de interpolación y, a partir de éstos, diferentes métodos implícitos.

Método de Adams-Moulton de un paso

Partiendo de los puntos (tk , f (tk , yk )) y (tk+1 , f (tk+1 , yk+1 )), el polinomio interpola-
dor que pasa por estos dos puntos es

f (tk+1 , yk+1 ) − f (tk , yk )


p(τ ) = f (tk+1 , yk+1 ) + (τ − tk+1 )
tk+1 − tk
τ − tk tk+1 − τ
= f (tk+1 , yk+1 ) + f (tk , yk ).
h h

Utilizando el polinomio de interpolación como aproximación al integrando y realizan-


do un desarrollo análogo al presentado en la sección anterior con el método AB2, se
obtiene
Z tk+1
y(tk+1 ) = y(tk ) + f (τ, y(τ ))dτ
tk
Z tk+1
h h
≈ yk + p(τ )dτ = yk + f (tk+1 , yk+1 ) + f (tk , yk ).
tk 2 2

De este modo, el método de Adams-Moulton de un paso, que denotaremos como


AM2, tiene la expresión:

h
yk+1 = yk + (f (tk+1 , yk+1 ) + f (tk , yk ))
2

y presenta un error global de O(h2 ).

Métodos Numéricos Aplicados I


13
Tema 7. Ideas clave
En la expresión de AM2 podemos observar que, por tratarse de un método implícito,
para calcular el valor de la solución en el nodo tk+1 es necesario el uso de este va-
lor. Como consecuencia, para obtener yk+1 debemos resolver para cada k la siguiente
ecuación no lineal:

h
g(yk+1 ) = yk+1 − yk − (f (tk+1 , yk+1 ) + f (tk , yk )) = 0. (2)
2

Como método de resolución de la ecuación no lineal (2) utilizaremos el método de


Newton. Aunque describiremos en los temas siguientes con más detalle las propieda-
des fundamentales de este método iterativo, debemos saber que el método de New-
ton se utiliza fundamentalmente para aproximar raíces de funciones no lineales. Par-
tiendo de una primera aproximación x0 de la raíz de una ecuación no lineal g(x) = 0,
el método de Newton, cuya expresión iterativa esta dada por

g(xn )
xn+1 = xn − , n = 0, 1, 2, . . . ,
g 0 (xn )

genera una secuencia {xn }n∈N de estimaciones cada vez más próximas a la solución
de la ecuación no lineal si se cumplen determinadas condiciones de convergencia.

Por tanto, para resolver la ecuación (2) es necesario calcular la derivada de la función,
de modo que:
dg(yk+1 ) h df (tk+1 , yk+1 )
g 0 (yk+1 ) = =1− .
yk+1 2 dyk+1
Este hecho implica que cuando implementemos en Matlab la función y 0 (t) = f (t, y(t))
que define el PVI, tendremos dos parámetros de salida: la función f (t, y(t)) y su deri-
df (t,y(t))
vada dy(t)
.

La implementación en Matlab del método de Adams-Moulton de un paso se muestra


en el siguiente código.

AM2.m

function [t,y] = AM2 (f,a,b,N,ya)

Métodos Numéricos Aplicados I


14
Tema 7. Ideas clave
% Código para resolver un PVI con el metodo de ...
Adams - Moulton de un paso
h=(b-a)/N;
t=a:h:b;
t=t (:) ;
y= zeros (N +1 ,1) ;
y (1) =ya;
maxiter =10;
tol =1e -6;
% Primer paso con el metodo de Heun
k1=h* feval (f,t (1) ,y (1) );
k2=h* feval (f,t (2) ,y (1) +k1);
y (2) =y (1) +k1 /2+ k2 /2;
% Siguientes pasos con el metodo AM2
for k =2: N
ff= feval (f,t(k),y(k));
% Metodo de Newton
iter =1; dif = tol +1;
x0=y(k);
while and (iter < maxiter ,dif > tol )
[fx0 , dfx0 ]= feval (f,t(k +1) ,x0);
g=x0 -y(k)-h /2*( fx0 +ff);
dg =1 -h /2* dfx0 ;
x1=x0 -g/dg;
dif = abs (x1 -x0);
iter = iter +1;
x0=x1;
end
y(k +1) =y(k)+h /2*( feval (f,t(k +1) ,x0)+ff);
end
end

Métodos Numéricos Aplicados I


15
Tema 7. Ideas clave
Notemos que en la implementación de AM2 se utiliza el método de Newton el cual,
por tratarse de un algoritmo iterativo, requiere de unas condiciones para detener el
proceso. En AM2.m se han utilizado como criterios de parada las variables maxiter
y tol, que indican el máximo de iteraciones y la mínima diferencia entre dos puntos
consecutivos, respectivamente, para detener el proceso de aproximación a la raíz de la
ecuación no lineal. En este código, se han fijado los valores maxiter=10 y tol=1e-6.

Ejemplo 3.
Otén y representa la solución del PVI

y 0 (t) = (3 − 0.1y(t))y(t), t ∈ [0, 2], y(0) = 10,

utilizando el método de Adams-Moulton de un paso y tomando h = 0.2.

La función que define el PVI se mostró en el Ejemplo 1. Sin embargo, para utilizar
este método implícito se requiere resolver una ecuación no lineal con el método
de Newton y por tanto necesitamos conocer la función y su derivada:

df (t, y(t))
f (t, y(t)) = (3 − 0.1y(t))y(t), = 3 − 0.2y(t).
dy(t)

Redefinimos la función VerhulstPVI.m del Ejemplo 1 para que también muestre


como dato de salida la derivada de la función:

function [fun , dfun ] = Verhulst2PVI (t,y)


k = 3; p = 0.1;
fun = (k-p*y).*y;
dfun = k -2* p*y;
end

Aplicamos el método AM2 y representamos la solución ejecutando en Matlab:

Métodos Numéricos Aplicados I


16
Tema 7. Ideas clave
>> [t,y] = AM2 (' Verhulst2PVI ' ,0 ,2 ,9 ,10);
>> plot (t,y,'o-')

30

25

yk
20

15

10
0 0.5 1 1.5 2
tk

Figura 1: Solución del PVI con AM2 y 10 puntos

Método de Adams-Moulton de más de un paso

Podemos obtener expresiones del método de Adams-Moulton de mayor precisión uti-


lizando más puntos en el polinomio de interpolación de forma similar a como hicimos
en la sección anterior. Por ejemplo, utilizando tres puntos en el polinomio de interpo-
lación, tendríamos el método de Adams-Moulton de dos pasos

h
yk+1 = yk + (−f (tk−1 , yk−1 ) + 8f (tk , yk ) + 5f (tk+1 , yk+1 )) ,
12

que denotamos AM3 y tiene orden 3. En cambio, si definimos el polinomio interpo-


lador utilizando cuatro puntos, obtenemos el método de Adams-Moulton de 3 pasos,
denotado AM4, con expresión

h
yk+1 = yk + (f (tk−2 , yk−2 ) − 5f (tk−1 , yk−1 ) + 19f (tk , yk ) + 9f (tk+1 , yk+1 ))
24

y con un error global O(h4 ).

En general, un método implícito de Adams-Moulton de n pasos, tendrá orden n + 1.


Asimismo, será necesario utilizar otros métodos para inicializar la solución y se deberá
resolver una ecuación no lineal para aplicar el método y calcular yk+1 .

Métodos Numéricos Aplicados I


17
Tema 7. Ideas clave
Concretamente, en el método AM3 utilizaremos un método distinto para inicializar
y1 , y con AM4, deberemos inicializar y1 e y2 . Podemos utilizar el método de Runge-
Kutta para calcular la solución en los primeros puntos. Por tanto, el algoritmo para
implementar el método de AM4 es el siguiente:

I Entrada: f , a, b, N , ya

I Proceso:

• Discretización de de la variable independiente: t0 , t1 , . . . , tN

• Inicialización del vector solución y en a: y0

• Aplicar el método de Runge-Kutta para calcular y1 e y2

• Para k desde 2 hasta N − 1, encontrar cada nuevo valor yk+1 con AM4 resol-
viendo la ecuación no lineal:

h
g(yk+1 ) = yk+1 − yk − (f (tk−2 , yk−2 ) − 5f (tk−1 , yk−1 )
24
+ 19f (tk , yk ) + 9f (tk+1 , yk+1 )) = 0,

utilizando el método de Newton con x0 = yk como estimación inicial:

g(xn )
xn+1 = xn − , n = 0, 1, 2, . . .
g 0 (xn )

I Salida: t, y

Ejemplo 4.
Obtén la solución del PVI

y 0 (t) = (3 − 0.1y(t))y(t), t ∈ [0, 2], y(0) = 10,

con el método de Adams-Moulton de tres pasos tomando N = {8, 16, 32, 64, 128}.
Calcula el error máximo cometido para cada número de subintervalos y una esti-
mación del orden de AM4 sabiendo que la solución exacta es:

30
y(t) = .
1 + 2e−3t

Métodos Numéricos Aplicados I


18
Tema 7. Ideas clave
Llamamos AM4.m a la función de Matlab que programa el método AM4. Ejecuta-
ríamos para cada N las siguientes instrucciones (mostramos N = 8):

>> [t8 ,y8] = AM4 (' Verhulst2PVI ' ,0 ,2 ,8 ,10);


>> sol8 =30 . /(1+2* exp ( -3* t8));
>> E8= max ( abs (sol8 -y8));

Finalmente, estimamos el orden del método con el cociente de los errores obte-
nidos duplicando el número de subintervalos:

>> E=[ E8 E16 E32 E64 E128 ];


>> log2 (E(1 :end -1)./E(2 :end));

En la Tabla 3 podemos observar que el error cometido disminuye cuando N au-


menta y también el orden se aproxima a 4.

N EN log2 EN /2 /EN
8 0.0130 –
16 0.0022 2.5818
32 1.8657e-04 3.5381
64 1.2851e-05 3.8597
128 8.3529e-07 3.9435

Tabla 3: Estimación del orden del método AM4

Partiendo de la función AM2.m implementada para PVI definidos por una ecuación
diferencial de primer orden, en el siguiente vídeo mostramos cómo adaptar el código
a sistemas de EDOs de primer orden.

 Accede al vídeo: Método de Adams-Moulton para sistemas.

Métodos Numéricos Aplicados I


19
Tema 7. Ideas clave
7.4 Métodos predictor-corrector

En general, los métodos implícitos no se utilizan como hemos visto en el apartado an-
terior. Se suelen utilizar para mejorar los resultados obtenidos con un método explíci-
to. La combinación de los métodos explícito e implícito dan lugar a lo que se conoce
como métodos predictor-corrector. En estos métodos la aproximación yk+1 sa calcu-
(p)
la como una predicción yk+1 utilizando un método explícito como los estudiados con
anterioridad y posteriormente se utiliza un método implícito del mismo orden para
mejorar o corregir esta predicción.

Por ejemplo, utilizando los métodos de Adams-Bashforth y Adams-Moulton de orden


dos presentados anteriormente, podemos obtener un método predictor-corrector,
que denotamos ABM2, de la forma:

(p) h
Predictor AB2: yk+1 = yk + (3f (tk , yk ) − f (tk−1 , yk−1 )),
2
h (p)
Corrector AM2: yk+1 = yk + (f (tk+1 , yk+1 ) + f (tk , yk )).
2

El código de Matlab completo de este método predictor-corrector, que llamamos mé-


todo de Adams-Bashforth-Moulton de dos pasos, se muestra a continuación.

ABM2.m

function [t,y] = ABM2 (f,a,b,N,ya)


% Código para resolver un PVI con el metodo de
% Adams - Bashfort - Moulton de dos pasos
h=(b-a)/N;
t=a:h:b;
t=t (:) ;
y= zeros (N +1 ,1) ;
y (1) =ya;
% Primer paso con el metodo de Heun

Métodos Numéricos Aplicados I


20
Tema 7. Ideas clave
k1 = h* feval (f,t (1) ,y (1) );
k2 = h* feval (f,t (2) ,y (1) +k1);
y (2) = y (1) +( k1+k2) /2;
for k =2: N
% predictor AB2
k1 = feval (f,t(k),y(k));
k2 = feval (f,t(k -1) ,y(k -1) );
yp = y(k)+h /2*(3* k1 -k2);
% corrector AM2
y(k +1) =y(k)+h /2*( feval (f,t(k +1) ,yp)+k1);
end
end

De la misma forma, si utilizamos los métodos de Adams-Bashforth y Adams-Moulton


de orden cuatro, obtenemos un método predictor-corrector que tiene la expresión

(p) h
yk+1 = yk + (55f (tk , yk ) − 59f (tk−1 , yk−1 ) + 37f (tk−2 , yk−2 ) − 9f (tk−3 , yk−3 )),
24
h
yk+1 = yk + (f (tk−2 , yk−2 ) − 5f (tk−1 , yk−1 ) + 19f (tk , yk ) + 9f (tk+1 , yk+1 )),
24

denominado método de Adams-Bashforth-Moulton de cuatro pasos y denotado ABM4.

En el siguiente ejemplo resolvemos el PVI obtenido con el modelo de Verhulst y reali-


zamos una comparativa entre los métodos explícitos y los métodos predictor-corrector
de dos y cuatro pasos.

Ejemplo 5.
Consideremos el problema de valor inicial

y 0 (t) = (3 − 0.1y(t))y(t), t ∈ [0, 2], y(0) = 10.

En la Tabla 4 mostramos la solución del PVI con los métodos explícitos de Adams-
Bashforth y los métodos predictor-corrector de Adams-Bashforth-Moulton de 2 y
4 pasos, para N = 30 y tk ∈ {0, 0.6, 1, 1.4, 2}.

Métodos Numéricos Aplicados I


21
Tema 7. Ideas clave
tk AB2 ABM2 AB4 ABM4
0 10 10 10 10
0.6 22.6066 22.5309 22.5434 22.5464
1 27.3014 27.2794 27.2832 27.2832
1.4 29.1204 29.1289 29.1267 29.1263
2 29.8465 29.8538 29.8519 29.8520

Tabla 4: Solución del PVI con AB2, ABM2, AB4 y ABM4

Podemos comparar la calidad de las aproximaciones con el error máximo come-


30
tido por cada método con respecto a la solución analítica y(t) = .
1 + 2e−3t

Método AB2 ABM2 AB4 ABM4


máx |y(tk ) − yk | 0.0613 0.0157 0.0029 2.5127e-04

Tabla 5: Error máximo cometido por los métodos

En la Tabla 5 podemos observar que en los métodos predictor-corrector el error


es inferior a los respectivos métodos explícitos de dos y cuatro pasos.

7.5 Métodos numéricos para problemas rígidos

A grandes rasgos, llamamos ecuaciones rígidas o stiff a las ecuaciones diferenciales


para las cuales determinados métodos numéricos son numéricamente inestables si
no se toma un número muy elevado de puntos en la discretización. Normalmente, es-
te mal funcionamiento se debe a que la ecuación presenta cambios muy bruscos en
un espacio reducido de tiempo. Como consecuencia, trabajar con pocos puntos pue-
de producir errores muy grandes en la solución discreta obtenida con determinados
métodos numéricos.

Métodos Numéricos Aplicados I


22
Tema 7. Ideas clave
En la Figura 2 podemos observar un ejemplo de función rígida. A pesar de que el in-
tervalo de la variable temporal en t ∈ [0, 0.1] es reducido, se trata de una función que
en unas pocas milésimas experimenta un gran crecimiento. Por el contrario, tras este
crecimiento la función tiene una tasa de cambio pequeña, siendo un comportamiento
muy estable.

0.8

0.6
y(t)

0.4

0.2

0
0 0.02 0.04 0.06 0.08 0.1
t

Figura 2: Gráfica de y(t) = 3 − 1.9980et − 1.002e−1000t

Para trabajar con este tipo de problemas, mantener el paso de integración constante
no suele ser una buena opción ya que todas las regiones de la solución no requieren
ser estudiadas con el mismo detalle. Como consecuencia, no todos los métodos numé-
ricos proporcionan buenos resultados. Una de las particularidades de las ecuaciones
rígidas es que los métodos numéricos funcionan mejor cuanto más bajo sea su orden
y suelen tener mejor funcionamiento los métodos implícitos frente a los explícitos.

No obstante, existen diversos métodos implementados en la librería de Matlab que


utilizan paso adaptativo, es decir, utilizan un mayor o menor número de puntos en
cada región del intervalo dependiendo del problema. Por tanto, no se definen nodos
equiespaciados y se concentra un mayor número de puntos en las regiones en las
cuales el comportamiento de la función cambia más rápidamente. De esta forma se
recoge más información sobre la función. Entre las funciones de Matlab más utilizadas
podemos encontrar ode23, ode45, ode113, y especialmente para problemas rígidos
ode15s y ode23s, entre otras. Todos los algoritmos, además de utilizar paso adapta-
tipo, pueden aproximar la solución en los nodos solicitados.

Métodos Numéricos Aplicados I


23
Tema 7. Ideas clave
Ejemplo 6.
Consideremos el siguiente PVI definido por medio de una ecuación rígida:

y 0 (t) = −1000y(t) + 3000 − 2000et , t ∈ [0, 0.1], y(0) = 0,

cuya solución exacta es:

y(t) = 3 − 1.9980et − 1.002e−1000t .

En la Tabla 6 se ha comparado el error máximo cometido en la resolución del PVI


con distintos métodos numéricos tanto explícitos como implícitos.

Método N EN
10 3.4938e+09
Euler
100 0.3686
10 0.0911
Euler implícito
100 0.1324
10 8.0190e+16
AB4
100 1.3998e+37
10 5.9765e+06
AM4
100 0.0071
10 3.0556e+20
ABM4
100 0.0240
10 0.0011
ode23
20 0.0016
10 1.8939e-04
ode45
20 6.4718e-04
10 2.4195e-05
ode15s
20 2.7014e-04

Tabla 6: Error máximo cometido por los métodos

Métodos Numéricos Aplicados I


24
Tema 7. Ideas clave
En general, los métodos explícitos no funcionan correctamente y requieren de
muchos puntos para tratar de reducir el error máximo. Aun así, en el método AB4
el error se dispara también con N = 100. En cambio, los métodos de paso adap-
tativo ya tienen un buen funcionamiento considerando únicamente 10 puntos en
la resolución.

Podemos analizar analíticamente el comportamiento de los métodos para saber a


priori si van a converger o cuántos subintrevalos van a necesitar para converger en
un problema rígido. Para ello se realiza un estudio de la estabilidad del método.

A continuación analizaremos la estabilidad de los esquemas de Euler explícito e im-


plícito. Para ello, tomaremos como punto de partida la ecuación rígida más sencilla:

y 0 (t) = −λy(t), λ > 0. (3)

Para estudiar la estabilidad de los métodos, consideraremos el PVI definido por la


ecuación diferencial (3) con condición inicial:

y 0 (t) = −λy(t), t ∈ [0, 0.1], y(0) = y0 ,

cuya solución exacta es y(t) = y0 e−λt . Si aplicamos el método de Euler al PVI, obte-
nemos
yk+1 = yk + hf (tk , yk ) = yk + h(−λyk ) = yk (1 − λh).

De forma recursiva, podemos escribir

yk+1 = y0 (1 − λh)k+1 .

Por tanto, la solución numérica estará acotada si se verifica

|1 − λh| < 1.

Por otro lado, si aplicamos al PVI el método de Euler implícito, se tiene

yk+1 = yk + hf (tk+1 , yk+1 ) = yk + h(−λyk+1 ) ⇔ yk+1 (1 + λh) = yk ,

Métodos Numéricos Aplicados I


25
Tema 7. Ideas clave
y de aquí,
 k+1
1
yk+1 = y0 .
1 + λh
Como siempre se verifica 1 < 1 + λh, entonces la solución numérica estará acotada,
ya que para todo valor de λ > 0 siempre se satisface

1
< 1.
1 + λh

Como consecuencia, el método de Euler implícito será estable para los problemas rí-
gidos de estas características, mientras que en el método de Euler explícito será nece-
sario tomar un gran número de puntos.

 Accede al vídeo: Estudio del comportamiento de métodos numéricos sobre un


problema rígido: modelo de propagación de una llama

Métodos Numéricos Aplicados I


26
Tema 7. Ideas clave

También podría gustarte