Académique Documents
Professionnel Documents
Culture Documents
Prcticas
Captulo 2. Ecuaciones diferenciales ordinarias (EDOs.
2.1 Resolucin de una ecuacin diferencial ordinaria.
Vamos a resolver numricamente la siguiente ecuacin diferencial:
dy
dt
=y1y
con condicin inicial y(0) = 0.2. Para empezar vamos a utilizar el mtodo de Euler explcito. Este algoritmo,
que estudiaris en teora con ms detalle, se basa en la aproximacin:
yt dt yt dt y' t =yt dt yt 1yt
para un valor de dt pequeo. Para empezar, tomamos un conjunto de instantes de tiempo t
n
=t
0
n dt y
definimos y
0
=y 0 . A continuacin, definimos el valor de los puntos y
n
de forma recursiva,
mediante el esquema numrico:
y
n1
=y
n
dt y
n
1y
n
dx
dt
dy
dt
=
1 0
0 10
3
x
y
dv
dt
=M v
y aplicamos el mtodo de Euler explcito:
tsteps=1000; % Subdivisiones del intervalo
t_f=10; % valor final de tiempo
dt=t_f/tsteps; % el paso de tiempo
t=0:dt:t_f; % definimos los diferentes tiempos
v=zeros(2,tsteps+1);
v(:,1)=[1;1]; % definimos el dato inicial
M=[-1 0 ; 0 -10^3];
A=eye(2)+dt*M;
for n=1:tsteps
v(:,n+1)=A*v(:,n);
end %metodo de Euler
plot(t,v) %dibuja la posicion y la velocidad
Repitiendo lo anterior para distintos valores de tsteps observamos comportamientos muy distintos. Para
obtener resultados razonables, es necesario que tsteps valga al menos 10000, un valor excesivamente
grande para una ecuacin tan sencilla. Para valores de tsteps menores que 5000, el resultado es
catastrfico. Sin embargo, la ecuacin es tan sencilla que se puede integrar de forma exacta:
xt =e
t
yt =e
10
3
t
Es claro que la ecuacin debera converger a (0,0), y bastante deprisa. Tambin es fcil calcular la solucin
exacta del mtodo de Euler explcito:
x
n
=1dt
n
x
0
y
n
=110
3
dt
n
y
0
Ahora podemos explicar el comportamiento observado: para dt>210
-3
: y
n
tiende a infinito en n.
Probamos ahora el mtodo de Euler implcito, que se comporta mucho mejor que los mtodos explcitos con
ecuaciones de tipo stiff. Este mtodo se basa en la aproximacin:
vt dt vt dt v' t dt
para un valor de dt pequeo. Para empezar, tomamos un conjunto de instantes de tiempo t
n
=t
0
n dt y
definimos v
0
=v0 . A continuacin, definimos el valor de los puntos v
n
de forma recursiva, mediante
el esquema numrico:
v
n1
=v
n
dt M v
n1
v
n1
= I dt M
1
v
n
Adaptamos el cdigo del esquema de Euler explcito para que utilice el mtodo implcito:
tsteps=1000; % Subdivisiones del intervalo
t_f=10; % valor final de tiempo
dt=t_f/tsteps; % el paso de tiempo
t=0:dt:t_f; % definimos los diferentes tiempos
v=zeros(2,tsteps+1);
v(:,1)=[1;1]; % definimos el dato inicial
M=[-1 0 ; 0 -10^3];
A=(eye(2)-dt*M)^(-1);
for n=1:tsteps
v(:,n+1)=A*v(:,n);
end %metodo de Euler implicito
plot(t,v) %dibuja la posicion y la velocidad
Ahora los resultados son ms razonables, incluso para valores de tsteps tan pequeos como 10.
Observemos la solucin exacta del mtodo numrico:
v
n
= I dt M
n
v
0
x
n
=
1
1dt
n
x
0
y
n
=
1
110
3
dt
n
y
0
En este caso para cualquier valor de dt la solucin converge al vector (0,0) de forma exponencial, al igual que
la solucin exacta. En general, los mtodos implcitos son ms estables que los explcitos. Incluso mtodos
numricos ms sofisticados como los de ode23 u ode45 no dan buen resultado con ecuaciones de tipo
stiff. Al ser mtodos adaptativos, reducen su paso de tiempo lo suficiente como para dar un buen resultado,
pero a costa de necesitar muchas ms operaciones que un mtodo implcito. Por contra, los mtodos
implcitos tienen en su contra que no son fciles de aplicar a problemas no lineales. Adems, cuando se
aplican a problemas lineales pero con un vector de dimensin muy grande, requieren mucho tiempo de
cmputo, pues hay que o bien invertir una matriz grande, o al menos resolver un sistema lineal de ecuaciones
en cada paso. Para implementar esta ltima opcin en el cdigo anterior, cambiaramos el cdigo del bucle
principal de este modo:
A=(eye(2)-dt*M);
for n=1:tsteps
v(:,n+1)=A\v(:,n);
end %metodo de Euler implicito
Aunque en este caso no vamos a percibir la diferencia, sta puede ser importante en sistemas de dimensin
alta. Veremos en el siguiente captulo de las prcticas que este problema surge de forma natural al resolver
ecuaciones en derivadas parciales.