You are on page 1of 62

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales

Matemticas de Especialidad
Ingeniera Elctrica

Integracin de
Ecuaciones Diferenciales Ordinarias

ODE
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_integracin ODE_2014.pdf
1/62

ndice
 Introduccin
 Integracin numrica de EDOs (ODEs)
 Mtodo

de Euler
 Mejoras en el mtodo de Euler
 Mtodo de Taylor
 Mtodos de Runge-Kutta
 Mtodos implcitos y problemas stiff

2/62

Introduccin
4

Una ecuacin diferencial se define en la forma explcita

dy
D y 0 D f .t; y/;
dt

siendo y.0/ D y0:

El orden de una ecuacin diferencial es el de su mxima derivada.

Las ecuaciones diferenciales relacionan las variables de un problema a escala


diferencial, por lo que son independientes de las condiciones de contorno
(geometra, condiciones iniciales; : : :)

3/62

Son el denominador comn de una amplia familia de problemas de ingeniera en


los que se estudia cmo y por qu varia el comportamiento de sistemas fsicos,
econmicos, sociales, etc.

Para resolver un problema concreto es necesario definir las condiciones de


contorno y proceder a la integracin de la ecuacin diferencial.

Por ejemplo, la ecuacin logstica, o funcin logstica,


y 0 D cy.1

y/

modeliza el crecimiento del tamao de una poblacin, que es proporcional al


tamao actual, y, y a la capacidad remanente (funcin de los recursos
disponibles).

4/62

Esta ecuacin diferencial en tpica en el sentido de que tiene infinitas soluciones.


Si se le especifica una condicin de partida, inmediatamente se identifica qu
solucin de esas infinitas se tiene.

Un problema de valor inicial es el que define la ecuacin diferencial y una


condicin, o valor inicial, en un intervalo a  t  b:
8
0

< y D f .t; y/

y.a/ D y

: t 2 a; b:

5/62

Resulta til pensar en una ecuacin diferencial dentro de un campo de fuerzas o


de pendientes (como el de la figura, referida a la ecuacin logstica).
y = 5*y*(1-y)

y = 5*y*(1-y)

1,2

1,2

0,8

0,8

0,6

0,6
y

y
0,4

0,4

0,2

0,2

-0,2

-0,2

-0,4

-0,4
0

0,2

0,4

0,6

0,8

1,2
t

1,4

1,6

1,8

2,2

0,2

0,4

0,6

0,8

1,2

1,4

1,6

1,8

2,2

En el lado derecho se han dibujado, en el mismo campo de fuerzas, las dos


soluciones que corresponden a y.0/ D 0;2 y y.0/ D 1;26.
6/62

Tipos de ecuaciones diferenciales:


Ecuaciones diferenciales ordinarias De primer orden: una variable
dependiente y una variable independiente. Problemas de valor inicial y
problemas de contorno.
Sistemas de ecuaciones diferenciales N variables dependientes
relacionadas por N ecuaciones diferenciales.
Ecuaciones en derivadas parciales Una variable dependiente y varias
variables independientes. Problemas elpticos, parablicos e hiperblicos.

7/62

Integracin numrica de EDOs


(ODEs)
4

Slo algunas ecuaciones diferenciales pueden ser integradas analticamente.

La integracin numrica permite resolver con precisin y rapidez un gran


nmero de problemas prcticos.

La integracin numrica no obtiene una funcin analtica y.t / que satisface la


ecuacin diferencial anterior, sino un conjunto de valores discretos yk que se
corresponden con valores discretos, tk , de la variable independiente t.

8/62

Si se desean resultados para otros valores de t se pueden utilizar los mtodos de


interpolacin vistos previamente.

Conocida la funcin yi en el instante ti los integradores numricos calculan el


valor yi C1 en ti C1 D ti C h mediante una expresin del tipo
yiC1 D yi C h;
donde  es un trmino que incorpora informacin de la derivada y 0.

9/62

Los mtodos que veremos se clasifican en:


De paso simple y paso mltiple Los de paso simple calculan la solucin
yi C1 en el instante ti C1 a partir del valor de la funcin yi en el instante ti .
Por ejemplo, en el mtodo de Euler
yi C1 D yi C f .ti ; yi /h:
 Los mtodos de paso mltiple (de n pasos) calculan la solucin yi C1 en tiC1

a partir del valor de la funcin y en los instantes ti , ti 1; : : : ; ti nC1. Por


ejemplo, en el mtodo de Heun

h
yiC1 D yi C f .ti ; yi / C f ti C1; yi C hf .ti ; yi / :
2

10/62

Mtodos explcitos e implcitos Los mtodos explcitos permiten hallar


yi C1 directamente sin tener que resolver un sistema de ecuaciones no
lineales. Por ejemplo, Runge-Kutta de orden dos
yiC1 D yi C .a1k1 C a2k2/ h;
donde
k1 D f .ti ; yi /
k2 D f .ti C p1h; yi C q11k1h/:
 Los mtodos implcitos necesitan resolver un sistema de ecuaciones no

lineales pues yi C1 aparece a ambos lados de la ecuacin; por ejemplo, la


regla trapezoidal
yi C1


1
D yi C f .ti ; yi / C f .ti C1; yiC1/ h:
2
11/62

Mtodo de Euler
4

Formulado por Leonhard Euler, Basilea 1707San Petersburgo 1783.

La geometra de los grficos de los campos de fuerzas o pendientes sugiere


resolver una ecuacin diferencial siguiendo las flechas, partiendo de un punto
inicial.

Desde el punto de arranque hay que moverse una pequea distancia, llegndose
a un nuevo punto .t1; y1/ en el que se revala la pendiente, luego hay que
moverse con esa nueva pendiente otro poco, etc.

Esta aproximacin ser buena en tanto y cuanto la pendiente no cambie


sbitamente.

12/62

Si por ejemplo se trata de resolver


8
0
3

< y D ty C t

y.0/ D y

: t 2 0; 1;

en la figura se ve el campo de fuerzas de este problema y la solucin exacta


partiendo de y.0/ D 1.
y = t*y+t
2

1,8

1,6

1,4

1,2

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

t
13/62

La relacin general de recurrencia del mtodo de Euler la define


yiC1 D yi C f .ti ; yi /h
en la que f .ti ; yi / es la pendiente en cada punto su derivada y h el paso que
se da con esa inclinacin.

Si usamos Euler en el ejemplo, con h D 0;1, resulta la lnea en rojo.


y = t*y+t

1,8

1,6

1,4

1,2

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

t
14/62

yi) no es suficientemente representativa del paso h.


nterpretacin
geomtrica:
4 La interpretacin geomtrica de lo que sucede es esta:

i,

HUURU

YDORUH[DFWR
YDORUDSUR[LPDGR

yi+1= yi+f(ti ,yi)h


h

yi
ti
4

ti+1

Se producen errores de truncamiento en cada punto, por retener slo dos


trminos en el desarrollo de Taylor, y en el total, as como de redondeo en los
clculos del proceso. El global es O.h/.
15/62

Si ensayamos todo esto con este script de Matlab.


% Script del mtodo de Euler con Matlab, Euler_2_S.m
% y(t)=t*y+t^3; solucin analtica exacta y(t)=3*exp^(t^2/2)-t^2-2
h = 0.1; h1 = 0.01
t = 0:h:1; t1 = 0:h1:1;
yx(1)=1.0; yx1(1)=1.0

% Pasos de integracin h=0,1 y h=0,01


% Punto de partida

for i=1:length(t)-1
k1 = t(i)*yx(i)+t(i)^3;
yx(i+1) = yx(i)+h*k1;
end
for i=1:length(t1)-1
k11 = t1(i)*yx1(i)+t1(i)^3;
yx1(i+1) = yx1(i)+h1*k11;
end
y=3*exp(t.^2/2)-t.^2-2;

% Bucle del proceso de integracin


% Nuevo punto: valor de y
% Bucle del proceso de integracin
% Nuevo punto: valor de y

% Solucin exacta

% Grficos
plot(t,yx,b--,t,y,r-,t1,yx1,k--);
legend(Aproximacin h=0,1,Exacto y,aproximacin 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,
end

y(t)=%6.4f,

y*(t)=%6.4f,t(i),y(i),yx(i)));

16/62

Con pasos h D 0;1 y h D 0;01 se obtiene lo que sigue.


Paso de Euler, h=0,1 y h=0,01
2
1.9

y*(t)=1.0000
y*(t)=1.0000
y*(t)=1.0101
y*(t)=1.0311
y*(t)=1.0647
y*(t)=1.1137
y*(t)=1.1819
y*(t)=1.2744
y*(t)=1.3979
y*(t)=1.5610
y*(t)=1.7744

1.8
1.7
1.6
y*(t), y(t)

>> Euler_2_S
t=0.000, y(t)=1.0000,
t=0.100, y(t)=1.0050,
t=0.200, y(t)=1.0206,
t=0.300, y(t)=1.0481,
t=0.400, y(t)=1.0899,
t=0.500, y(t)=1.1494,
t=0.600, y(t)=1.2317,
t=0.700, y(t)=1.3429,
t=0.800, y(t)=1.4914,
t=0.900, y(t)=1.6879,
t=1.000, y(t)=1.9462,
>>

Aproximacin h=0,1
Exacto y
aproximacin h=0,01

1.5
1.4
1.3
1.2
1.1
1
0

0.1

0.2

0.3

0.4

0.5
t

0.6

0.7

0.8

0.9

Con el paso de integracin h D 0;1 los errores son apreciables.

17/62

Mejoras del mtodo de Euler


Mtodo de Heun
4

Formulado por Karl Heun, Alemania (Wiesbaden 1859Karlsruhe 1929).


Su idea fue utilizar en .ti ; yi / un valor promedio de la derivada en ese punto y
en .tiC1; yi C1/.

Como no se conoce el valor yiC1, se calcula con el mtodo de Euler,


yiC1 D yi C hf .ti ; yi /.

El nuevo valor de yi C1 ser


yi C1


h

D yi C f .ti ; yi / C f .tiC1; yi C1/ :
2

El mtodo se conoce como predictor-corrector. El error es O.h3/.


18/62

Una variante de este mismo mtodo, denominada mtodo del trapezoide,


consiste en hacer iterar el yi C1, en cada nuevo paso, de acuerdo con la frmula

h
j
j 1
yi C1 D yi C f .ti ; yi / C f tiC1; yi C1
2

j
j 1
hasta que se cumpla una tolerancia de yi C1 yi C1 .

Ejemplo
4

Integremos la ecuacin y 0 D 4e 0;8t 0;5y en el intervalo t D 0; 4 de tal


forma que en t D 0, y D 2. El paso ha de ser h D 1. Lo haremos con el
mtodo de Euler y con el de Heun, sin y con iteracin (trapezoide).

19/62

Utilizaremos esta function de Matlab.


function [t,yx,y,y_h,y_hi] = Heun_4(dydt,tspan,y0,h,es,maxit)
% Mtodo de Heun para integrar una ODE
% dydt: funcin que evala la ODE; tspan: intervalos de clculo
% y0: punto de partida; h: paso; es: tolerancia de iteracin corrector
% maxit: mximo de iteraciones; yx: valor exacto; y: valor con Euler
% y_h: valor con Heun sin itera.; y_hi: con iteracin
if nargin<6, maxit = 50; end; if nargin<5, es = 0.0001; end
ti = tspan(1); tf = tspan(2); t = (ti:h:tf); n = length(t);
if t(n)<tf, t(n+1)=tf; n=n+1; end
% Por si acaso, un intervalo ms en t
y = y0*ones(n,1); y_h = y; y_hi = y;
% Inicializar valores
yx = 4/1.3*(exp(0.8*t)-exp(-0.5*t))+2*exp(-0.5*t); % Valor exacto
for i = 1:n-1
hh = t(i+1) - t(i); iter = 0;
k1 = dydt(t(i),y(i)); k2 = dydt(t(i),y_h(i)); k3 = dydt(t(i),y_hi(i));
y(i+1)
= y(i)
+ k1*hh;
y_h(i+1) = y_h(i) + hh/2*(k2+dydt(t(i+1),y_h(i)+hh*k2));
y_hi(i+1) = y_hi(i)+ k3*hh;
while 1
yold= y_hi(i+1); k2 = dydt(t(i+1),y_hi(i+1));
y_hi(i+1) = y_hi(i) + (k3+k2)*hh/2;
iter = iter + 1;
if y_hi(i+1)~=0, ea = abs((y_hi(i+1)-yold)/y_hi(i+1))*100; end
if ea<=es || iter>=maxit, break, end
end
end

% Derivadas
% Euler
% Heun sin iteracin

% Heun con iteracin

plot(t,yx,b--,t,y,r-,t,y_h,k--,t,y_hi,:); xlabel(t); ylabel(y);


title(Solucin de y=4e^{(0.8t)}-0.5y); grid on
legend(Exacto,Euler,Heun,Heun con it.,Location,NorthWest);
function dp = dpdt_Heun_c(t, p)
dp = 4*exp(0.8*t)-0.5*p;

20/62

El resultado es este.
>> [t,yx,y,y_h,y_hi]=Heun_4(@dpdt_Heun_c,[0 4],2,1);
>> [t,yx,y,y_h,y_hi]
ans =
0
2.0000
2.0000
2.0000
2.0000
1.0000
6.1946
5.0000
6.7011
6.3609
2.0000
14.8439
11.4022
16.3198
15.3022
3.0000
33.6772
25.5132
37.1992
34.7433
4.0000
75.3390
56.8493
83.3378
77.7351
Solucin de y'=4e(0.8t)-0.5y
90
Exacto
Euler
Heun
Heun con it.

80

70

60

50
y

40

30

20

10

0.5

1.5

2
t

2.5

3.5

21/62

Mtodo del punto medio


4

En vez de utilizar el promedio de las derivadas en los puntos .ti ; yi / y


.ti C1; yiC1/, se utiliza una aproximacin de la derivada en el punto medio:


h
h
yi0 C 1 D f ti C ; yi C1=2 ;
yi C1=2 D yi C f .ti ; yi /;
2
2
2
por lo que


yi C1 D yi C hf ti C1=2; yi C1=2 :
4

Este procedimiento se conoce tambin como Euler corregido. Est relacionado


con el mtodo de integracin de Newton-Cotes.

El error que produce es O.h2/.

22/62

Mtodo de Taylor
4

Formulado por Brook Taylor, Edmonton, Inglaterra, 1685Londres, 1731.

Si se desarrolla en serie de Taylor y.t / en el punto ti , suponiendo que y.t / tiene


derivadas continuas hasta orden n C 1, se tiene que
2

y.ti C1/ D y.ti / C hy 0.ti / C h2 y 00.ti / C h3 y 000.ti / C    C hn y .n/.ti / C O.hnC1/:


4

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
:::
23/62

Sustituyendo estas expresiones en el desarrollo en serie se obtiene el mtodo de


Taylor del orden de precisin que se desee.

Su gran inconveniente es que las derivadas de orden superior a uno en este


caso sera el mtodo de Euler pueden ser muy complicadas de calcular.

24/62

Mtodos de Runge-Kutta
4

Son una familia de mtodos desarrollados a partir del trabajo de los alemanes
Carl David Tolm Runge (1856-1927) y Martin Wilhelm Kutta (1867-1944).

Consiguen la precisin del mtodo de Taylor sin necesidad de calcular derivadas


de orden elevado.

El avance se realiza mediante una expresin general


yi C1 D yi C h;

con  D a1k1 C a2k2 C    C ankn;

y donde los coeficientes ai son unos pesos de aproximaciones ki de las distintas


derivadas por medio de la funcin f .t; y/ evaluada en distintos puntos.

25/62

Los valores de las ki se obtienen mediante las frmulas


k1 D f .ti ; yi /

k2 D f ti Cp1h; yi Cq11k1h

k3 D f ti Cp2h; yi Cq21k1hCq22k2h
:::
kn D f ti Cpnh; yi Cqn 1;1k1hCqn 1;2k2hC   C qn

1;n


1 kn 1 h :

Cada valor de ki depende de los ks ya calculados, por lo que la evaluacin de


estas frmulas es sencilla si se conocen los coeficientes.

Los ps y qs son coeficientes numricos que se calculan imponiendo la condicin


de que el error sea del mismo orden que en el mtodo de Taylor de orden similar.

26/62

Deduccin de las frmulas de Runge-Kutta de orden 2


4

Son

yi C1 D yi C a1k1 Ca2k2 h;
donde
k1 D f .ti ; yi /  fi
k2 D f .ti Cp1h; yi Cq11k1h/:

El mtodo de Taylor, reteniendo trminos hasta orden dos, establece que


0

yiC1 D yi C hy .ti / C

h2 00
y .ti /
2

D yi C hfi C

h2
2

f ti C fyi  fi :

27/62

Desarrollando en serie las frmulas de Runge-Kutta se tiene que



yiC1 D yi C.a1k1 Ca2k2/h D yi C a1f .ti ; yi /Ca2f .ti Cp1h; yi Cq11k1h/ h

D yi Ca1fi h C a2 fi Cf ti p1hCfyi fi q11k1h h:

Comparando las dos expresiones se llega a estas tres ecuaciones con cuatro
incgnitas:
1
1
y a2q11 D :
a1 C a2 D 1;
a2p1 D
2
2

28/62

Dando valores a a2 se obtienen distintas frmulas de Runge-Kutta de orden 2


(con error local de truncamiento O.h3/).
1.- a2 D

1
2

! p1 D q11 D 1: Mtodo de Heun



yi C1 D y1 C h2 k1 C k2
k1 D f .ti ; yi /
k2 D f .ti C h; yi C k1h/:

2.- a2 D 1 ! p1 D q11 D 1=2: Mtodo del Punto Medio


yi C1 D y1 C k2h
k1 D f .ti ; yi /
k2 D f .ti C h=2; yi C k1h=2/:
3.- a2 D 2=3 ! p1 D q11 D 3=4: Mtodo de Ralston

yi C1 D y1 C h2 13 k1 C 23 k2
k1 D f .ti ; yi /
k2 D f .ti C 43 h; yi C 43 k1h/:
29/62

Frmulas de Runge-Kutta de orden superior a 2


4

Orden 3, con error O.h4/:


D
D
D
D

yi C1
k1
k2
k3


y1 C h6 k1 C 4k2 C k3
f .ti ; yi /

f ti C 12 h; yi C 21 hk1
f .ti C h; yi k1h C 2k2h/ :

Orden 4, con error O.h5/:


h
6

yiC1 D y1 C k1 C 2k2 C 2k3 C k4


k1 D f .ti ; yi /

1
1
k2 D f ti C 2 h; yi C 2 hk1

k3 D f ti C 12 h; yi C 21 hk2
k4

D f .ti C h; yi C k3h/ :
30/62

de orden 4 (clsico, error local O(h ))

odo
de integracin de EDOs ms utilizado.
4

La interpretacin geomtrica de la frmula de orden 4, la ms utilizada y


referenciada, es la de la figura.

Interpretacin geomtrica
k2
k1
yi

k3

yi+1
k4

Cada una de las ks representa una pendiente. El resultado es una media


ponderada de esas pendientes.
31/62

Orden 5, Butcher, con error O.h6/:


h
.7k1 C 32k3 C 12k4 C 32k5 C 7k6/
yi C1 D y1 C 90
k1 D f .ti ; yi /

k2 D f ti C 41 h; yi C 41 hk1

1
1
1
k3 D f ti C 4 h; yi C 8 hk1 C 8 hk2

k4 D f ti C 12 h; yi 12 hk2 C hk3

3
9
3
k5 D f ti C 4 h; yi C 16 hk1 C 16 hk4

k6

D f ti C h; yi

3
hk1
7

C 27 hk2 C 12
hk3
7

12
hk4
7


C 87 hk5 :

Para aumentar en una unidad el orden del Runge-Kutta clsico de orden cuatro
hacen falta dos evaluaciones de funcin adicionales.

En general no se suelen utilizar frmulas de Runge-Kutta de orden muy elevado


porque el aumento de precisin no compensa el trabajo adicional.
32/62

Ejemplo de recapitulacin
4


Vamos a integrar la ODE y 0 D y 1t 2t , empleando Euler, Heun,
Runge-Kutta y la rutina de Matlab ode45 muy habitual para estos
problemas, que usa Runge-Kutta con una precisin alta.

La condicin de partida es que y 0 D 0, en t D 0.

La frmula analtica de este problema no se conoce, por lo que se suple con la


integracin numrica.

33/62

Este es el programa que lleva a cabo este objetivo.


function test_ode45_1(relerr,abserr)
% Comparacin de mtodos explcitos para igual evaluaciones de f
clear all, close all
ecdif=@ec04;
tspan=[0,2];

% ecuacin diferencial a integrar: en ec04.m


y0=0;
h=.25;

% Diversos mtodos con mismas llamadas a f


[T1,Y1]=eulere(ecdif,tspan,y0,h/4);
% Euler
[T2,Y2]=heun(ecdif,tspan,y0,h/2);
% Heun
[T3,Y3]=rk4(ecdif,tspan,y0,h);
% Runge-Kutta orden 4
options = odeset(RelTol,1.e-9,AbsTol,1.e-12);
[T4,Y4]=ode45(ecdif,tspan,y0,options); % Exacto: R-K de Matlab
plot(T1,Y1,:r);
axis([tspan(1), tspan(2), 0, .6]);
xlabel(tiempo); ylabel(y);
hold on;
grid
plot(T2,Y2,--g);
plot(T3,Y3,-.b);

% intervalos de ejes

plot(T4,Y4,-k);

function yprima=ec04(t,y)
% solucin exacta desconocida
if t==0, yprima=1; else yprima=y*(-2*t+1/t);
end

end

function [T,Y]=eulere(f,tspan,y0,h) % Mtodo de Euler


n=fix((tspan(2)-tspan(1))/h+1);
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
y=y0; t=tspan(1);
for i=2:n
y1=y+h*f(t,y); t1=t+h;
% Frmula de Euler
T(i,:)=t1; Y(i,:)=y1;
% tiempo valor de la funcin
t=t1; y=y1;
% se actualizan t e y
end, end

function [T,Y]=heun(f,tspan,y0,h)
% Mtodo de Heun
n=(tspan(2)-tspan(1))/h+1;
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
y=y0; t=tspan(1);
for i=2:n
t1=t+h;
yp=f(t,y);
% predictor con Euler explcito
y1=y+h*yp;
y1n=y+h*(yp+f(t1,y1))/2; % corrector con la regla trapezoidal
T(i,:)=t1; Y(i,:)=y1n;
% tiempo valor de la funcin
t=t1; y=y1;
% se actualizan t e y
end, 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));
y=y0; t=tspan(1);
for i=2:n
t1=t+h;
k1=h*f(t,y);
% clculo de los coeficientes k
k2=h*f(t+h/2,y+k1/2);
k3=h*f(t+h/2,y+k2/2);
k4=h*f(t+h,y+k3);
y1=y+(k1+2*k2+2*k3+k4)/6;
T(i,:)=t1; Y(i,:)=y1;
% tiempo valor de la funcin
t=t1; y=y1;
% se actualizan t e y
end, end
end

34/62

Este es el resultado:
Solucin de y'=y(1/t-2t)
Euler
Heun
rk4
ode45

0.5

0.4

0.3

0.2

0.1

0.2

0.4

0.6

0.8

1
tiempo

1.2

1.4

1.6

1.8

35/62

Mtodos Runge-Kutta de paso variable


4

Hasta ahora hemos supuesto que el paso h era fijo. En un intervalo de


integracin 0; T , sin embargo, puede haber subintervalos de mayor o menor
variacin de la funcin y.t / que conviene particularizar con detalle o integrar
con un paso mayor o ms pequeo, segn que la dificultad (o el error) sea
menor o mayor.

Para cambiar el paso, con un coste razonable de tiempo de clculo, es necesario


estimar la magnitud del error local de truncamiento, lo cual puede hacerse con
dos frmulas de distinto orden o utilizando dos pasos diferentes: h y h=2,
habitualmente.

Los mtodos de Runge-Kutta de paso variable, tambin denominados


embebidos, o encajados, resuelven el problema dos veces usando los pasos h y
h=2, y comparan los resultados
36/62

Mtodo Runge-Kutta-Fehlberg
4

Usa frmulas Runge-Kutta de orden 4 y 5 respectivamente, concretamente,


k1 D hf .ti ; yi /
k2 D hf ti C 14 h; y1 C 14 k1

3
9
k3 D hf ti C 38 h; y1 C 32
k1 C 32
k2
12
k4 D hf ti C 32
h; y1 C 1932
k
2197 1

k5 D hf ti C h; y1 C 439
k
216 1
k6 D hf ti C 12 h; y1

8
k
27 1

7200
k
2197 2

7296
C 2197
k3

8k2 C 3680
k
513 3

845
k
4104 4

3544
k
2565 3

C 1859
k
4104 4

C 2k2

yi C1 D yi C

25
k
216 1

2197
C 1408
k
C
k
3
2565
4104 4

zi C1 D yi C

16
k
135 1

6656
28561
C 12825
k3 C 56430
k4

1
k
5 5


11
k
40 5

9
k
50 5


2
C 55
k6 :

37/62

La estimacin del error que se comete en el paso es

1
128
2197
1
2
k1 4275
k3 75240
k4 C 50
k5 C 55
k6.
ei C1 D jzi C1 yi C1j D h 360

Si se establece una tolerancia para el error, T ol, y un paso inicial h, se calculan


inicialmente 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 con esa tolerancia, se ensaya con


T oljyi j
h D 0;8
ei

 15
hi

y se vuelven a calcular los parmetros del paso.


38/62

La rutina de Matlab ode45 usa una variante de este mtodo denominada


Dormand-Prince cuyas frmulas son
k1 D hf .ti ; yi /
k2 D hf ti C

1
h; y1
5

k3 D hf ti C

3
h; y1
10

k4 D hf ti C

4
h; y1
5

k5 D hf ti C

8
h; y1
9

1
k
5 1

3
k
40 1

44
k
45 1

19372
k
6561 1

k6 D hf ti C h; y1 C 9017
k
3168 1
zi C1 D yi C

35
k
384 1

9
k
40 2

56
k
15 2

32
k
9 3

25360
k
2187 2
355
k
33 2

500
125
C 1113
k3 C 192
k4

64448
k
6561 3

212
k
729 4

49
C 46732
k C 176
k4
5247 3

2187
11
k
C
k
6784 5
84 6

5103
k
18656 5

k7 D hf .ti C h; ziC1/
yi C1 D yi C

5179
k
57600 1

7571
C 16695
k3 C 393
k
640 4

92097
k
339200 5


187
C 2100
k6 C 14 k7 :
39/62

La estimacin del error que se comete en el paso es


71
71
71
ei C1 D jzi C1 yi C1j D h 57600 k1 16695
k3 C 1920
k4

17253
k
339200 5

22
k
525 6

1
k .
40 7

No es necesario calcular yiC1, slo ei C1.


4

Si se cumplen las tolerancias, ziC1 ser el nuevo punto y k1 ser k7, por lo que
no se desperdician clculos.

40/62

Mtodos implcitos y problemas rgidos o stiff


4

Los mtodos que hemos considerado hasta ahora son explcitos: una frmula
determina explcitamente una nueva aproximacin yi C1 a partir de datos de h,
t i y yi .

Hay un tipo de problemas, denominados stiff rgidos, para los que los mtodos
explcitos evolucionan mal hacia la solucin.

Los problemas stiff son aquellos que convergen relativamente rpido hacia una
solucin estable, pero que tienen componentes transitorios importantes con un
decaimiento mucho ms rpido.

Suelen modelizar procesos fsicos con varios componentes con escalas de tiempo
muy dispares. El intervalo de tiempo con el que se les estudia puede ser bueno
para uno de ellos pero no para todos.
41/62

Estudiemos por ejemplo la ecuacin diferencial



0
2
y D y t C 2t;
t > 0;

y0 D y.0/;

cuya solucin analtica es


y.t / D y0e

C t 2:

Si es un nmero real grande, la solucin vara rpidamente hasta que el


componente exponencial se desvanece o amortigua.

A partir de entonces prevalece el componente polinmico de variacin lenta.

42/62

En la figura se observa lo apuntado. La lnea continua azul es la solucin de la


ecuacin, la discontinua verde el componente exponencial es la que se
desvanece antes. La roja corresponde al componente polinmico de variacin en
el tiempo mucho ms lenta.
1

1.4

0.9
1.2
0.8
1

0.7

0.6

0.8
0.5

0.6
0.4

0.3

0.4

0.2
0.2
0.1

0.1

0.2

0.3

0.4

0.5
t

0.6

0.7

0.8

0.9

Figure 2.2.1: Solution of = ; ( ; 2)+2 (solid) illustrating inner (dashed) and outer
(dash-dot) solutions.
y

0.1

0.2

0.3

0.4

0.5
t

0.6

0.7

0.8

0.9

Figure 2.2.2: Euler solution (dash-dot) due to a perturbation (dashed) of =


introduced at time = 0 4.
y

(solid)

2 under consideration, but the inshown, a small perturbation


to the outer
solution is introducedperturbacin
at = 0 4. As noted,
Stiness
not only
depends on the dierential equation
Si seAstheintroduce
una
pequea
del
componente
t
en t D 0;4, la
exact solution to this perturbed solution quickly decays to the outer solution. The
terval of interest, the accuracy criteria, and the region of absolute stability of a numerical
solution by exacta
Euler's method follows
steep initial slope of the perturbed
solution and
method.
nonlinear systems el mtodo de Euler
solucin
setherestablece
enseguida.
EnForcambio,
overshoots the outer solution. These overshoots and undershoots will continue in subsey = f ( y)
quent time steps ascon
illustratedun
by Example
2.1.4
producira,
h
D
2,
una
perturbacin
importante
que se ira
Problems of this type are called \sti." They arise in applications where phenomena
stiness will be related to the magnitudes of the eigenvalues of the Jacobian f ( y).
occur on vastly dierent timedespus.
scales. Typical examples involve chemical kinetics, optimal
restableciendo
These eigenvalues may have vastly dierent sizes that vary as a function of . Thus,
control, and electrical circuits. There are many mathematical denitions of stiness and
t

the one that we will use follows.

detecting stiness can be a signicant problem in itself.

In order to solve sti problems we'll need a numerical method with a weaker stability

43/62

El mtodo de Euler haca atrs


4

El mtodo de Euler hacia atrs acta de la siguiente manera:


y0 D y.0/
yi C1 D yi C hf .ti C1; yiC1/ :
La segunda expresin se obtiene al considerar la aproximacin atrasada de la
derivada en ti C1, y 0.ti C1/, en vez de la avanzada en ti que haca el mtodo de
Euler.

La informacin que se considera en cada paso tiene en cuenta los dos lados del
intervalo ti ; ti C h.

El mtodo de Euler hacia atrs es implcito, lo que significa que no da


directamente una frmula para la nueva aproximacin yi C1 sino que sta se
obtiene mediante un proceso ms elaborado.
44/62

Ese proceso, para la ecuacin diferencial anterior:





yiC1 D yi C h
yi C1 t 2 C 2t

2
D yi hyiC1 C h t C 2t :
Al final
yi C1


yi C h t 2 C 2t
:
D
1 C h

Si aplicamos a esta frmula de recurrencia un mtodo iterativo de punto fijo el


de Newton por ejemplo

y C h t 2 C 2t
y ! g.y/ D
;
1 C h
como g 0.y/ D 1=.1 C h/ < 1, para cualquier positivo, el proceso
converger a un punto estacionario.
45/62

Apliquemos estas ideas y analicmoslas con Matlab.


function [wi, win, y, ti] = back_euler_1 ( t0, x0, tf, N, TOL, Nmax )
%
% Backward Euler con y=-alpha(y-t^2)+2t
%
Punto de arranque, t0, x0; final, tf; puntos N
if nargin<6, Nmax=100; end, if nargin<5, TOL=0.00001; end, close all
ti = [t0 zeros( 1,N )]; wi = zeros(1,N+1); win = zeros(1,N+1);
wi(1) = x0; win(1) = x0; x01 = x0; y(1) = x0;
h = ( tf-t0)/N;
function f = beuler_1(t, p)
for i = 1:N
f = -10*(p-t^2)+2*t;
w0 = x0;
end
for j = 1:Nmax
top = (w0 - x0) - h*beuler_1(t0+h,w0);
function df = dbeuler_1(t, p)
bot = 1 - h*dbeuler_1(t0+h,w0);
df = -10;
dw = top/bot;
end
w0 = w0-dw;
if abs(dw)<TOL, break; end;
end
end;
x0 = w0;
x01 = x01+h*beuler_1(t0,x01);
t0 = t0 + h; ti(i+1) = t0;
wi(i+1) = x0; win(i+1) = x01; y(i+1) = y(1)*exp(-10*t0)+t0^2;
end
plot(ti,wi,ti,win,ti,y), xlabel(Tiempo); ylabel(y)
legend(Back. Euler, Euler, Exacto)

46/62

El resultado de >> back_euler_1(0,1,1.1,8); es este.


1.4
Back. Euler
Euler
Exacto

1.2

0.8

0.6
y

0.4

0.2

-0.2

-0.4

0.2

0.4

0.6

0.8

1.2

1.4

Tiempo

47/62

Mtodos multipaso
4

Los mtodos que hemos analizado hasta ahora son monopaso, o de paso
sencillo. El valor de yiC1 se calcula a partir de la informacin de un nico punto.

Los mtodos multipaso, o de paso mltiple, utilizan la informacin de ms


puntos obtenidos en pasos anteriores.

Persiguen como objetivo necesitar menos evaluaciones de la funcin para el


mismo orden de error que los de paso sencillo.

El mtodo de Adams-Bashforth-Moulton de orden cuatro, por ejemplo, slo


necesita dos evaluaciones de funcin por etapa, frente a las cuatro del mtodo
clsico de Runge-Kutta.

48/62

Los mtodos multipaso necesitan la ayuda de otros para dar los primeros pasos
y no se adaptan bien a discontinuidades en la solucin: discontinuidades en las
fuerzas aplicadas, impactos, enlaces que aparecen o desaparecen, etc.

Tienen la forma general


yiC1 D

m
i
j D1

j yiC1

Ch

m
i

j f tiC1 j ; yiC1

j D0

Si 0 D 0, el mtodo es explcito; si 0 0, implcito.


4

Los parmetros i y i se calculan mediante interpolacin polinmica.

Un mtodo de dos pasos explcito, o abierto, por ejemplo, sera



0
0
yi C1 D 1yi C h 1yi C 2yi 1
(se indica y 0 D f .; /):
49/62

Para calcular 1, 1 y 2 se interpola forzando a que la frmula sea exacta para


los primeros tres monomios: 1, t y t 2.

Si y.t/ D 1, entonces y 0.t / D 0 y se consigue as la primera ecuacin


1 D 1  1 C h .1  0 C 2  0/ :

Si y.t/ D t , entonces y 0.t / D 1 y tenemos la segunda



tiC1 D 1ti C h 1  1 C 2  1 :

Si y.t/ D t 2, entonces y 0.t / D 2t y tenemos la tercera


ti2C1 D 1ti2 C h 1  2ti C 2  2ti

50/62

Estas tres ecuaciones se deben cumplir para cualesquiera valores de ti , por lo


que podemos hacer ti 1 D 0, h D 1 (entonces ti D 1 y tiC1 D 2) y resolvemos
el sistema lineal resultante 3  3 dando 1 D 1, 1 D 32 , 2 D 21 .

La frmula resultante del mtodo explcito de dos pasos es


yi C1

h
D yi C 3yi0
2

yi0 1


;

que se conoce como la frmula del Mtodo Adams-Bashforth de segundo orden.

51/62

De forma similar se puede desarrollar la frmula implcita, o cerrada, de dos


pasos de la forma

0
0
yi C1 D 1yi C h 0yi C1 C 1yi :

Para calcular 1, 0 y 1 forzaremos como antes a que la frmula 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
2
tiC1 D 1ti C h 0  2ti C1 C 1  2ti :

Haciendo ti D 0 y h D 1 (por lo que ti C1 D 1), y resolviendo el sistema 3  3


resultante se llega a que 1 D 1, 0 D 12 y 1 D 12 . La frmula resultante es

h 0
yiC1 C yi0 ;
2
que da lugar al mtodo implcito conocido como el mtodo del trapezoide, o
Mtodo de Adams-Moulton de un paso.
yi C1 D yi C

52/62

Estas son algunas de las frmulas ms utilizadas.


Frmulas de multipaso explcitas de Adams-Bashforth

Error

2 yi C1 D yi C

h
2

3 yi C1 D yi C

h
12

23fi

16fi

C 5fi

4 yi C1 D yi C

h
24

55fi

59fi

C 37fi

5 yi C1 D yi C

h
720

3fi

fi

1901fi

5 3 00
h f ./
12

2744fi

3 4 000
h f ./
8

251 5 .4/
h f ./
720

9fi

C 2616fi

1274fi

C 251fi

95 6 .5/
h f ./
288

Frmulas de multipaso implcitas de Adams-Moulton

Error

2 yi C1 D yi C

h
2

3 yi C1 D yi C

h
12

5fi C1 C 8fi

4 yi C1 D yi C

h
24

9fi C1 C 19fi

5 yi C1 D yi C

h
720

3fi C1

fi

1 3 00
h f ./
12


fi

5fi

251fiC1 C 646fi

1 4 000
h f ./
24


C fi

264fi

19 5 .4/
h f ./
720


C 106fi

19fi

27 6 .5/
h f ./
1440

53/62

Mtodos predictor-corrector
4

Combinan mtodos explcitos e implcitos en cada intervalo mediante un paso


predictor, que estima la solucin en el nuevo punto, y otro corrector, que la
mejora.

Vencen as la dificultad de contar con un buen punto de partida para comenzar


el proceso de integracin.

54/62

El mtodo de Adams-Bashforth-Moulton de cuarto orden, por ejemplo:


1. Utiliza Adams-Bashforth de cuarto orden como predictor:

yiC1

h
D yi C
55fi
24

2. Evala la funcin en el nuevo punto


fiC1

Df

59fi

C 37fi

ti C1; yiC1

9fi

ti C1; yiC1

3. Utiliza Adams-Moulton de cuarto orden como corrector:


yi C1 D yi C

h
9fiC1 C 19fi
24

5fi

1 C fi


2 :

4. Finalmente evala de nuevo la funcin en el punto ti C1; yiC1



fi C1 D f ti C1; yi C1 :

Se conoce como mtodo PECE (predice, evala, corrige, evala).


55/62

El mtodo de Milne-Simpson:
1. Utiliza como predictor
yiC1 D yi

3C

4h
2fi
3

fi

1 C 2fi


2 :

2. Como corrector
yi C1 D yi

1C


h 
fiC1 C 4fi C fi 1 :
3

Tambin se usa como corrector el de Hamming:


yiC1 D

9yi

yi


2 C 3h fiC1 C 2fi

2fi


:

56/62

Utilicemos y D 4 t t y 2 para probar el mtodo predictorcorrector de


Adams-Bashforth-Moulton de segundo orden con las condiciones iniciales
y.0/ D 0;5 y en el intervalo de tiempo 0; 2.

El siguiente programa hace el trabajo.

function [t,y]=Adams_Bas_Moul(inter,ic,n)
% Mtodo predictor-corrector de orden 2 de Adams-Bashforth-Moulton
h=(inter(2)-inter(1))/n; y(1)=ic; t(1)=inter(1); s=2;
for i=1:s-1
% Trapezoide de un paso para
t(i+1)=t(i)+h;
%
inicializacin
y(i+1)=trapstep(t(i),y(i),h);
function z=ab2step(t,i,y,f,h) % Paso Adams-Bashforth de orden 2
f(i)=ydot(t(i),y(i));
z=y(i)+h*(3*f(i)-f(i-1))/2;
end
end
for i=s:n
% Mtodo multipaso
f(i)=ydot(t(i),y(i));
function z=am1step(t,i,y,f,h) % Paso Adams-Moulton de orden 2
t(i+1)=t(i)+h;
z=y(i)+h*(f(i+1)+f(i))/2;
y(i+1)=ab2step(t(i),i,y,f,h);
end
f(i+1)=ydot(t(i+1),y(i+1));
y(i+1)=am1step(t(i),i,y,f,h);
function z=ydot(t,y)
% Funcin que se integra
end
z=4*(t-t^3)*y^2;
[T4,Y4]=ode45(@ydot,inter,ic); close all, plot(t,y,T4,Y4) end
xlabel(Tiempo); ylabel(y)
end
legend(Adams-Bash.-Moul., ode45)
function y=trapstep(t,x,h)
% Un paso con trapezoide
z1=ydot(t,x); g=x+h*z1; z2=ydot(t+h,g);
y=x+h*(z1+z2)/2;
end

57/62

El resultado de >> Adams_Bas_Moul([0 2],0.5,20); es este.


1,
Adams-Bash.-Moul.
ode45

0,9
0,8
0,7
0,6

0,5
0,4
0,3
0,2
0,1
0,
0,

0,5

1,

1,5

2,

2,5

Tiempo

58/62

Sistemas de ecuaciones diferenciales


ordinarias
4

Muchos sistemas de la vida diaria en ingeniera, economa y ciencias sociales se


modelizan y simulan mediante la solucin de sistemas de ecuaciones
diferenciales: Basta para ello que el sistema tenga ms de un grado de libertad o
que haya que integrar una ecuacin diferencial de orden superior.

Ejemplos son los puntos movindose en el plano o en el espacio, el movimiento


de un slido rgido sin restricciones, mecanismos, vehculos, etc.

59/62

En general, un sistema de ecuaciones diferenciales ordinarias tiene la forma


9
0
y1 D f1 t; y1; y2; : : : ; yn >
>
>
=
0
y2 D f2 t; y1; y2; : : : ; yn
y 0 D f .t; y/:
:::
>
>

>
0
yn D fn t; y1; y2; : : : ; yn ;

Al aplicar los mtodos vistos hasta ahora hay que tener en cuenta que la
variable dependiente y, la funcin f y los coeficientes ki , del mtodo de
Runge-Kutta por ejemplo, son vectores.

El mtodo de Euler se aplicara en la forma vectorial

y 0 D f .t; y/

y iC1 D y i C hf .ti ; y i /:
60/62

Ecuaciones diferenciales de orden


superior
4

Una ecuacin diferencial de orden n se puede expresar como:


d ny
.n/
0
00
000
.n
D
y
D
f
t;
y;
y
;
y
;
y
;
:
:
:
y
dt n

1/

y.t0/ D y0
y 0.t0/ D y00
y 00.t0/ D y000

.n
y .n 1/.t0/ D y0
4

1/

Esta ecuacin se puede transformar en un sistema de n ecuaciones diferenciales


de orden uno.
61/62

Si se introducen las nuevas variables


y1 D y; y2 D y 0; y3 D y 00; : : : ; yn D y .n

1/

se tendr que
y10
y20
y30

D
D
D
:::
yn0 1 D
yn0 D

y2
y3
y4

9
>
>
>
>
>
>
>
>
=

y 0 D f .t; y/;

>
>
>
>
>
yn
>
>
>
f .x; y1; y2; : : : ; yn/ ;

obtenindose as un sistema de n ecuaciones diferenciales de primer orden con n


incgnitas, al que habra que aadirle las condiciones iniciales y.t0/ D y 0.

62/62

You might also like