Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase Integración ODE 2016
Clase Integración ODE 2016
Integración de
Ecuaciones Diferenciales Ordinarias
Índice
Introducción
Integración numérica de ecuaciones diferenciales ordinarias
(ODEs)
Método de Euler
Mejoras en el método de Euler
Método de Taylor
Métodos de Runge-Kutta
Métodos implícitos y problemas stiff
3/57
Introducción
Una ecuación diferencial en su forma más simple se define de forma explícita así:
dy
D y 0 D f .t; y/; siendo y.0/ D y0:
dt
Su solución Z x
y.x/ D y0 C f .t; y/ dt:
0
y 0 D cy.1 y/
Para poder integrar una ecuación diferencial es necesario definir las condiciones
de contorno.
5/57
1,2 1,2
1 1
En el lado derecho se
0,8 0,8
han dibujado, en el mis-
y
0,6
y
0,6
mo campo de fuerzas, las
dos soluciones que corres-
0,4 0,4
0,2 0,2
0 0
ponden a y.0/ D 0;2 y
-0,2 -0,2
y.0/ D 1;26.
-0,4 -0,4
0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 2,2 0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 2,2
t t
6/57
yi C1 D yi C h;
yi C1 D yi C f .ti ; yi /h:
Método de Euler
Desde el punto de arranque hay que moverse una pequeña distancia, siguiendo
una pendiente, llegándose a un nuevo punto .t1; y1/ en el que se revalúa la
pendiente, luego hay que moverse con esa nueva pendiente otro poco, etc.
8
0 3
< y D ty C t
ˆ
ˆ
y.0/ D y 0
ˆ
ˆ
: t 2 Œ0; 1;
1,8
1,6
1,4
1,2
y 1
0,8
0,6
0,4
0,2
0
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
t
12/57
yiC1 D yi C f .ti ; yi /h
1,8
1,6
1,4
1,2
y 1
0,8
0,6
0,4
0,2
0
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
t
Es muy fácil de aplicar aunque no muy preciso, pues la derivada en
LaInterpretación
geométrica:
interpretación geométrica de lo que sucede es esta:
YDORUH[DFWR
HUURU
YDORUDSUR[LPDGR
yi h
ti ti+1
% Gráficos
plot(t,yx,’b--’,t,y,’r-’,t1,yx1,’k--’);
legend(’Aproximación h=0,1’,’Exacto y’,’aproximación h=0,01’);
title(’Paso de Euler, h=0,1 y h=0,01’);
xlabel(’t’);
ylabel(’y*(t), y(t)’); axis([0 1 0.95 2]);
% Tabla
for i=1:length(t)
disp(sprintf(’t=%5.3f, y(t)=%6.4f, y*(t)=%6.4f’,t(i),y(i),yx(i)));
end
15/57
1.8
1.7
>> Euler_2_S
t=0.000, y(t)=1.0000, y*(t)=1.0000
t=0.100, y(t)=1.0050, y*(t)=1.0000 1.6
t=0.200, y(t)=1.0206, y*(t)=1.0101
y*(t), y(t)
t=0.300, y(t)=1.0481, y*(t)=1.0311
t=0.400, y(t)=1.0899, y*(t)=1.0647 1.5
t=0.500, y(t)=1.1494, y*(t)=1.1137
t=0.600, y(t)=1.2317, y*(t)=1.1819
1.4
t=0.700, y(t)=1.3429, y*(t)=1.2744
t=0.800, y(t)=1.4914, y*(t)=1.3979
t=0.900, y(t)=1.6879, y*(t)=1.5610
1.3
t=1.000, y(t)=1.9462, y*(t)=1.7744
1.2
1.1
Método de Heun
El resultado es este.
Solución de y'=4e(0.8t)-0.5y
90
Exacto
Euler
Heun
80 Heun con it.
70
60
20
10
0
0 0.5 1 1.5 2 2.5 3 3.5 4
t
20/57
Método de Taylor
Si f es derivable,
y 0 D f .t; y/
y 00 D f 0 D f t C fy y 0 D f t C fy f
y 000 D f 00 D f t t C 2f ty f C fyy f 2 C f t fy C fy2 f
::
:
1
El original parece se debe al escocés James Gregory, 1638-1675.
22/57
Su gran inconveniente es que las derivadas de orden superior a uno –en este
caso sería el método de Euler– pueden ser muy complicadas de calcular.
23/57
Métodos de Runge-Kutta
Son una familia de métodos desarrollados a partir del trabajo de los alemanes
Carl David Tolmé Runge, 1856-1927, y Martin Wilhelm Kutta 1867-1944.
Son yiC1 D yi C a1k1 Ca2k2 h, donde k1 D f .ti ; yi / fi
k2 D f .ti Cp1h; yi Cq11k1h/:
Comparando las dos expresiones se llega a estas tres ecuaciones con cuatro
incógnitas:
1 1
a1 C a2 D 1; a2p1 D y a2q11 D :
2 2
Dando valores a a2 se obtienen distintas fórmulas de Runge-Kutta de orden 2 26/57
k1 D f .ti ; yi /
k2 D f .ti C h; yi C k1 h/:
Anthony Rals-
3.- a2 D 2=3 ! p1 D q11 D 3=4: Método de Ralston ton, EE.UU.
1930-.
yiC1 D y1 C h2 13 k1 C 23 k2
k1 D f .ti ; yi /
k2 D f .ti C 34 h; yi C 34 k1 h/:
Fórmulas de Runge-Kutta de orden superior a 2 27/57
k1 D f .ti ; yi /
k2 D f ti C 21 h; yi C 21 hk1
1 1
k3 D f ti C 2 h; yi C 2 hk2
k4 D f .ti C h; yi C k3h/ :
Kutta de orden 4 (clásico, error local O(h5))
l método de integración de EDOs más utilizado. 28/57
Interpretación
de la fórmulageométrica
k4
La interpretación geométrica de orden 4 es la esta.
k2
k1 k3 yi+1
yi k4
Para aumentar en una unidad el orden del Runge-Kutta clásico de orden cuatro
hacen falta dos evaluaciones de función adicionales.
Ejemplo de recapitulación
0 1
Vamos a integrar la ODE y D y t
2t , empleando Euler, Heun,
Runge-Kutta y la rutina de Matlab ode45, que usa Runge-Kutta.
function test_ode45_1(relerr,abserr)
% Comparación de métodos explícitos para igual evaluaciones de f
clear all, close all
ecdif=@ec04; % ecuación diferencial a integrar: en ec04.m function [T,Y]=heun(f,tspan,y0,h) % Método de Heun
tspan=[0,2]; y0=0; h=.25; n=(tspan(2)-tspan(1))/h+1;
% Diversos métodos con mismas llamadas a f T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
[T1,Y1]=eulere(ecdif,tspan,y0,h/4); % Euler y=y0; t=tspan(1);
[T2,Y2]=heun(ecdif,tspan,y0,h/2); % Heun for i=2:n
[T3,Y3]=rk4(ecdif,tspan,y0,h); % Runge-Kutta orden 4 t1=t+h;
options = odeset(’RelTol’,1.e-9,’AbsTol’,1.e-12); yp=f(t,y); % predictor con Euler explícito
[T4,Y4]=ode45(ecdif,tspan,y0,options); % Exacto: R-K de Matlab y1=y+h*yp;
% y1n=y+h*(yp+f(t1,y1))/2; % corrector con la regla trapezoidal
plot(T1,Y1,’:r’); T(i,:)=t1; Y(i,:)=y1n; % tiempo valor de la función
axis([tspan(1), tspan(2), 0, .6]); % intervalos de ejes t=t1; y=y1; % se actualizan t e y
xlabel(’tiempo’); ylabel(’y’); end
hold on; grid end
plot(T2,Y2,’--g’); plot(T3,Y3,’-.b’); plot(T4,Y4,’-k’);
end function [T,Y]=rk4(f,tspan,y0,h) % Runge-Kutta orden 4
%%% ---------- n=fix((tspan(2)-tspan(1))/h+1);
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
function yprima=ec04(t,y) y=y0; t=tspan(1);
% solución exacta desconocida for i=2:n
if t==0, yprima=1; else yprima=y*(-2*t+1/t); end t1=t+h;
end k1=h*f(t,y); % cálculo de los coeficientes k
k2=h*f(t+h/2,y+k1/2);
function [T,Y]=eulere(f,tspan,y0,h) % Método de Euler k3=h*f(t+h/2,y+k2/2);
n=fix((tspan(2)-tspan(1))/h+1); k4=h*f(t+h,y+k3);
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0)); y1=y+(k1+2*k2+2*k3+k4)/6;
y=y0; t=tspan(1); T(i,:)=t1; Y(i,:)=y1; % tiempo valor de la función
for i=2:n t=t1; y=y1; % se actualizan t e y
y1=y+h*f(t,y); t1=t+h; % Fórmula de Euler end
T(i,:)=t1; Y(i,:)=y1’; % tiempo valor de la función end
t=t1; y=y1; % se actualizan t e y
end
end
32/57
Este es el resultado:
Solución de y'=y(1/t-2t)
Euler
Heun
rk4
ode45
0.5
0.4
0.3
y
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo
33/57
k3 D hf ti C 38 h; y1 C 3 9
k
32 1
C k
32 2
12 1932 7200 7296
k4 D hf ti C 32
h; y1 C k
2197 1
k
2197 2
C k
2197 3
439 3680 845
k5 D hf ti C h; y1 C k
216 1
8k2 C 513 3
k k
4104 4
k6 D hf ti C 21 h; y1 8 3544 1859 11
k
27 1
C 2k2 k
2565 3
C k
4104 4
k
40 5
25 1408 2197 1
yi C1 D yi C k
216 1
C k
2565 3
C k
4104 4
k
5 5
16 6656 28561 9 2
zi C1 D yi C k
135 1
C k
12825 3
C k
56430 4
k
50 5
C k
55 6
:
35/57
Para una tolerancia del error, T ol y un paso inicial h, se calculan para empezar
y1, z1 y e1. Si se cumple que
ei
< T ol;
jyi j
en este caso para i D 1, el valor de z1 sustituye a y1 y se procede al siguiente
paso. Si no se cumple esa relación, se ensaya con
15
T oljyi j
h D 0;8 hi
ei
y se vuelven a calcular los parámetros del paso.
36/57
3 3 9
k3 D hf ti C 10
h; y1 C k
40 1
C k
40 2
k4 D hf ti C 45 h; y1 C 44 56 32
k
45 1
k
15 2
C 9 3
k
k5 D hf ti C 89 h; y1 C 19372 25360 64448 212
k
6561 1
k
2187 2
C 6561 3
k k
729 4
9017 355 46732 49 5103
k6 D hf ti C h; y1 C k
3168 1
k
33 2
C k
5247 3
C k
176 4
k
18656 5
35 500 125 2187 11
zi C1 D yi C k
384 1
C k
1113 3
C k
192 4
k
6784 5
C k
84 6
k7 D hf .ti C h; zi C1 /
5179 7571 393 92097 187
C 14 k7 :
yi C1 D yi C k
57600 1
C k
16695 3
C k
640 4
k
339200 5
C k
2100 6
37/57
Si se cumplen las tolerancias, zi C1 será el nuevo punto y k1 será k7, por lo que
no se desperdician cálculos.
38/57
Hay un tipo de problemas, denominados stiff –rígidos–, para los que los métodos
explícitos evolucionan mal hacia la solución.
Son aquellos que convergen relativamente rápido hacia una solución estable pero
que tienen componentes transitorios importantes con un decaimiento o
amortiguación mucho más rápido.
Suelen modelizar procesos físicos con varios componentes con escalas de tiempo
dispares. El intervalo de tiempo con el que se les estudia puede ser bueno para
uno de ellos pero no para todos.
39/57
0.9
1.2
0.8
1
0.7
0.6
0.8
y
0.5
y
0.6
0.4
0.4 0.3
0.2
0.2
0.1
0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t t
Stiness not only depends on the dierential equation under consideration, but the in-
Si se introduce una pequeña perturbaciónterval ofdel
interest,componente t 2of absolute
the accuracy criteria, and the region t Dof a numerical
en stability 0;4, la
method. For nonlinear systems
solución exacta se restablece enseguida. En cambio, ely método = f ( y)
de Euler 0
t
These eigenvalues may have vastly dierent sizes that vary as a function of . Thus,
restableciendo después. detecting stiness can be a signicant problem in itself.
t
In order to solve sti problems we'll need a numerical method with a weaker stability
41/57
El método de Euler hacía atrás
La información que se considera en cada paso tiene en cuenta los dos lados del
intervalo Œti ; ti C h.
Al final
2
yi C h ˛t C 2t
yi C1 D :
1 C ˛h
y
x0 = w0;
0.4
x01 = x01+h*beuler_1(t0,x01);
t0 = t0 + h; ti(i+1) = t0;
wi(i+1) = x0’; win(i+1) = x01; 0.2
y(i+1) = y(1)*exp(-10*t0)+t0^2;
end 0
plot(ti,wi,ti,win,ti,y), xlabel(’Tiempo’); ylabel(’y’)
legend(’Back. Euler’, ’Euler’, ’Exacto’)
-0.2
end
-0.4
function f = beuler_1(t, p) 0 0.2 0.4 0.6 0.8 1 1.2 1.4
f = -10*(p-t^2)+2*t; Tiempo
end
function df = dbeuler_1(t, p)
df = -10;
end
44/57
Métodos multipaso
Los métodos que hemos analizado hasta ahora son monopaso, o de paso
sencillo. El valor de yiC1 se calcula a partir de la información de un único punto.
Necesitan la ayuda de otros para dar los primeros pasos y no se adaptan bien a
discontinuidades en la solución: discontinuidades en las fuerzas aplicadas,
impactos, enlaces que aparecen o desaparecen, etc.
Tienen la forma general 45/57
m
X m
X
yiC1 D ˛j yiC1 j Ch ˇj f ti C1 j ; yi C1 j :
j D1 j D0
Para calcular ˛1, ˇ1 y ˇ2 se interpola forzando a que la fórmula sea exacta para
los primeros tres monomios: 1, t y t 2.
h 0 0
yi C1 D yi C 3yi yi 1 ;
2
que se conoce como la fórmula del Método Adams-Bashforth de segundo orden.
Debe el nombre a John Couch Adams, Reino Unido, 1819-1892, Francis
Bashforth, Reino Unido, 1819-1912 y Forest Ray Moulton, EE.UU., 1872-1952.
Para calcular ˛1, ˇ0 y ˇ1 forzaremos como antes a que la fórmula resultante sea
exacta para los primeros tres monomios: 1, t y t 2. Se obtienen estas tres
ecuaciones
1 D ˛1 1 C h ˇ0 0 C ˇ1 0
tiC1 D ˛1ti C h ˇ0 1 C ˇ1 1
2
D ˛1ti2 C h ˇ0 2ti C1 C ˇ1 2ti :
tiC1
Haciendo ti D 0 y h D 1 (por lo que tiC1 D 1), y resolviendo el sistema 3 3 48/57
Métodos predictor-corrector
Vencen así la dificultad de contar con un buen punto de partida para comenzar
el proceso de integración.
50/57
h
yiC1 D yi C 55fi 59fi 1 C 37fi 2 9fi 3 :
24
ti C1; yiC1
Evalúa la función en el nuevo punto
El método de Milne-Simpson:
Utiliza como predictor
4h
yiC1 D yi
3C 2fi fi 1 C 2fi 2 :
3
Como corrector
h
yi C1 D yi 1C fiC1 C 4fi C fi 1 :
3
También se usa como corrector el de Hamming:
fiC1
9yi yi 2 C 3h C 2fi 2fi 1
yi C1 D :
8
0
Utilicemos y D 4 t t y 2 para probar el método predictor–corrector de
3
52/57
Adams-Bashforth-Moulton de segundo orden con las condiciones iniciales
y.0/ D 0;5 y en el intervalo de tiempo Œ0; 2.
1,
Adams-Bash.-Moul.
ode45
0,9
0,8
0,7
0,6
0,5
y
0,4
0,3
0,2
0,1
0,
0, 0,5 1, 1,5 2, 2,5
Tiempo
54/57
Al aplicar los métodos vistos hasta ahora hay que tener en cuenta que la
variable dependiente y, la función f —y los coeficientes ki si se usa
Runge-Kutta— son vectores.
y 0 D f .t; y/ ! y i C1 D y i C hf .ti ; y i /:
56/57
y1 D y; y2 D y 0; y3 D y 00; : : : ; yn D y .n 1/
se tendrá que
9
y10 D y2 >
>
>
y20 D y3
>
>
>
>
y30
>
D y4
=
::: y 0 D f .t; y/;
>
>
>
yn0 1 D yn
>
>
>
>
yn0 D
>
f .x; y1; y2; : : : ; yn/ ;
obteniéndose así un sistema de n ecuaciones diferenciales de primer orden con n
incógnitas, al que habría que añadirle las condiciones iniciales y.t0/ D y 0.