Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Soluci
on de Ecuaciones
Diferenciales Ordinarias
V.1
V.1.1
Introducci
on
Problema
Una ecuacion diferencial es una ecuacion que involucra una funcion indeterminada y(t) y sus
derivadas y 0 (t), y 00 (t), . . . junto con condiciones iniciales o de frontera. Una solucion para la ecuacion
diferencial es una funcion que satisface la ecuacion y las condiciones iniciales. Estas ecuaciones
aparecen en el modelamiento matematico de todo tipo de sistemas. Por ejemplo, el angulo que
un pendulo forma con la vertical satisface la ecuacion diferencial
d2
g
+ sin = 0
2
dt
L
con las condiciones iniciales
0 (0) = 00 .
(0) = 0 ,
Aunque para algunas clases particulares de ecuaciones existen metodos para determinar soluciones,
este no es el caso en general. Por lo tanto es importante la posibilidad de obtener soluciones
numericas. El objetivo aqu es estudiar algunos metodos para la solucion numerica de algunas
clases importantes de ecuaciones diferenciales.
Aqu inicialmente, y la mayor parte del tiempo, nos restringimos al problema de valor inicial
(PVI), de primer orden, de la forma
y 0 (t) =
dy(t)
= f (t, y(t))
dt
con
y(t0 ) = y0 ()
donde f es una funcion definida sobre un subcojunto apropiado de R R y con valor en R. Una
solucion para () en el intervalo [t0 , t0 +T ] es una funcion y : [t0 , t0 +T ] R tal que y 0 (t) = f (t, y(t))
para t [t0 , t0 + T ] y y(t0 ) = y0 . Geometricamente, f (t, y) especifica para cada (t, y) en el plano
t-y la pendiente que debe tener una solucion que pasa por ese punto.
Ejemplo. Consideremos la ecuacion
dy
= 1 et
dt
con
V.1
y(0) = y0 .
DE ECUACIONES
V. SOLUCION
V.2
DIFERENCIALES ORDINARIAS
Como la parte derecha de la ecuacion depende solo de t, se puede integrar y se obtiene y(t) =
t + et + C donde C es una constante a determinar. Reemplazando t = 0, la condicion inicial
implica que 1 + C = y0 y entonces la solucion es
y(t) = t + et + y0 1.
La siguiente figura, producida por el segmento de Matlab a continuacion, muestra la curva
solucion y(t) para diferentes valores de la condicion inicial y0 . Bajo ciertas condiciones a ser
discutidas mas adelante, para cada punto (t0 , y0 ) existe una curva solucion u
nica que pasa por este.
Dos de estas curvas solucion son disyuntas o la misma.
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
f=@(t,y0) t+exp(-t)+y0-1;
figure;
hold on;
for i=0:5
fplot(@(t) f(t,.1*i),[0,1]);
end
Note que la instruccion f=@(t,y0) t+exp(-t)+y0-1 define la funcion f de dos variables t y
y0 como se desea. Por otra parte, el primer parametro de fplot, es la funcion @(t) f(t,.1*i) de
una sola variable t, la cual es la funcion f con la segunda variable igual a .1*i. Alternativamente,
se podra haber empleado la instruccion inline.
V.1.2
Soluci
on Num
erica
Los metodos que consideramos producen una aproximacion discreta de la solucion: pares (ti , wi )
donde t0 , t1 , t2 , . . . , tM con tM = t0 + T , es una discretizacion del intervalo de tiempo [t0 , t0 + T ]
y w0 , w1 , . . . , wM es una aproximacion de y0 = y(t0 ), y1 = y(t1 ), . . . , yM = y(tM ). Usualmente
todos los subintervalos [tk , tk+1 ] tienen la misma longitud. Mas precisamente, tk = t0 + kh para
k = 0, . . . , M y donde h = T /M . En general estudiaremos metodos de diferencia de primer orden
en que wk+1 esta dado explcitamente en terminos de wk , k = 1, 2, . . . , M , de la siguiente forma
(metodos explcitos de un paso)
wk+1 = wk + h(tk , wk ) ()
con condicion inicial w0 = C0 . La ecuacion () es llamada ecuacion de diferencias o tambien
formula de avance. La funcion es llamada la funcion incremental.
V.2
V.3
Existencia de Soluciones
Definici
on. Sea f (t, y) una funcion definida en el rectangulo
R = {(t, y) | a t b, c y d}.
Se dice que f satisface una condicion de Lipschitz con respecto a la segunda variable si existe L > 0,
llamada la constante de Lipschitz, tal que para todo (t, y1 ), (t, y2 ) R se tiene que
|f (t, y1 ) f (t, y2 )| L |y1 y2 |.
Si f satisface una condicion de Lipschitz en R con respecto a la segunda variable con constante
de Lipschitz L, entonces f es continua en la segunda variable: dado > 0, si tomamos = /L,
entonces para todo (t, y1 ), (t, y2 ) R con |y1 y2 | se tiene que |f (t, y1 )f (t, y2 )| L|y1 y2 |
L . En lo que sigue, fy (t, y) denota la derivada parcial de f con respecto a y.
Teorema V.1 Sea f (t, y) definida en un rectangulo R como antes. Si existe L > 0 tal que para
todo (t, y) R se tiene
|fy (t, y)| L,
entonces f satisface la condicion de Lipschitz en la variable y con constante L en R.
Para verificar este teorema, note que utilizando el teorema del valor medio podemos escribir,
para y1 , y2 con c y1 < y2 d y alg
un [y1 , y2 ],
f (t, y1 ) f (t, y2 ) = fy (t, )(y1 y2 )
y de aqu
|f (t, y1 ) f (t, y2 )| = |f (t, )(y1 y2 )| |f y(t, )| |y1 y2 |.
Puesto que |f y(t, )| L entonces
|f (t, y1 ) f (t, y2 )| L |y1 y2 |,
lo cual es la condicion de Lipschitz.
Ejemplo. Verifiquemos que
2
f (t, y) = y + t2 et
t
satisface la condicion de Lipschitz con respecto a la segunda variable para t [1, 2]. Primero
directamente, usando 2/t 2 para t 1,
2
2
2
2
t
2
t
|f (t, y1 ) f (t, y2 )| = y1 + t e y2 t e = |y1 y2 | 2|y1 y2 |
t
t
t
Alterativamente fy (t, y) = 2/t y entonces |fy (t, y)| 2 para t [1, 2]. As, por el teorema anterior,
f (t, y) es Lipschitz con respecto a la segunda variable.
V.4
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
Ejemplo. Consideremos f (t, y) = |y|2/3 . Esta funcion no satisface la condicion de Lipschitz con
respecto a y en regiones que contengan puntos con y = 0 porque, con y2 = 0 y y1 > 0 tenemos que
|f (t, y1 ) f (t, y2 )| = |y1 |2/3 , |y1 y2 | = |y1 |
y entonces no existe constante C > 0 tal que
|y1 |2/3 = |f (t, y1 ) f (t, y2 )| C|y1 y2 | = C|y1 |,
porque esta desigualdad implicara C 1/|y1 |1/3 y 1/|y1 |1/3 tiende a infinito cuando y1 tiende a 0
(recuerde que C debe ser idependiente de la seleccion de y1 , y2 ).
La importancia de la condicion de Lipschitz condicion radica en el siguiente teorema (y tambien
se usa en el analisis del error de los metodos numericos).
Teorema V.2 Sea f (t, y) continua en un rectangulo R (como antes), que satisface la condici
on de
0
Lipschitz con respecto a la segunda variable en R, y sea (t0 , y0 ) R. Entonces el PVI y = f (t, y),
y(t0 ) = y0 , tiene una solucion u
nica en un subintervalo [t0 , t0 + ] para alg
un > 0.
Ejemplo. Si la condicion de Lipschitz no se satisface, es posible que la solucion al PVI no sea
u
nica. Considere por ejemplo
y 0 (t) = y 2/3 , y(0) = 0.
Este PVI tiene las soluciones y(t) = 0 y y(t) = (t/3)3 lo cual se puede verificar facilmente. Otro
ejemplo en que ninguna solucion es trivial (zero) es
o
1 np 2
t + 4y t ,
y (t) =
2
0
y(2) = 1,
V.3
M
etodo de Euler
y 00 (ck )(t tk )2
,
2
donde ck [tk , t], tomando t = tk+1 , usando y 0 (tk ) = f (tk , y(tk )), y despreciando el termino de de
segundo orden; resulta entonces la aproximacion
y(tk+1 ) y(tk ) + hf (tk , y(tk )).
V.3. METODO
DE EULER
V.5
Excepto en t0 , en realidad no se conoce y(tk ) sino la aproximacion previa, as que esta aproximacion
se traduce en la siguiente regla para calcular la aproximacion wk+1 de y(tk ) en terminos de la
aproximacion wk de y(tk ):
wk+1 = wk + hf (tk , wk )
par k = 0, 1, 2, . . . , M 1, con la condicion inicial w0 = C0 . Geometricamente, la solucion entre
tk y tk+1 es aproximada por la lnea con pendiente f (tk , wk ), es decir, tangente a la curva solucion
que pasa por (tk , wk ).
yk+1
yk
y1
t0
tk
t1
tk+1
V.1: El segmento que conecta (tk , wk ) con (tk+1 , wk+1 ) es tangente a la curva solucion que pasa
por (tk , wk ).
A continuacion se tiene la funcion Matlab euler que implementa el metodo de Euler. Note
que regresa una matriz con dos columnas que contienen los tk y wk respectivamente.
function
Ejemplos
Ejemplo 0 Considere el PVI
y 0 = Ry,
y(0) = y0 .
La solucion exacta es y(t) = y0 eRt y nos interesa conocer la aproximacion que resulta de aplicar el
metodo de Euler. Este da la recurrencia
wk+1 = wk + hRwk = (1 + hR)wk ,
DE ECUACIONES
V. SOLUCION
V.6
DIFERENCIALES ORDINARIAS
Ejemplo 1 Usamos el metodo de Euler para obtener una aproximacion para la solucion del PVI:
dy
= y t2 + 1;
dt
y(0) = 0.5.
en [0, 2], con M = 10. Note que aqu f (t, y) = y t2 + 1. Para la discretizacion del tiempo, los
subintervalos son de longitud h = 2/10. Entonces el metodo de Euler resulta en la ecuacion de
recurrencia
wk+1 = wk + h(wk t2k + 1)
= (1 + h)wk ht2k + 0.2
= 1.2wk 0.2t2k + 0.2
De aqu obtenemos los valores:
w0
w1
w2
w3
=
=
=
=
..
.
0.5
1.2w0 0.2t20 + 0.2 = 1.2 0.5 0.2 02 + 0.2 = 0.6 + 0.2 = 0.8
1.2w1 0.2t21 + 0.2 = 1.2 0.8 0.2 0.22 + 0.2 = 0.96 0.008 + 0.2 = 1.1520
1.2w2 0.2t22 + 0.2 = 1.2 1.1520 0.2 0.42 + 0.2 = 1.3824 0.032 + 0.2 = 1.5504
V.4. ANALISIS
DEL ERROR
V.7
>> A20=euler(f,0,2,0.5,20);
>> E20=g(A20(:,1));
>> ERR20=abs(E20-A20(:,2));
>> [A20 E20 ERR20]
ans =
0
0.5000
0.5000
0.1000
0.6500
0.6574
0.2000
0.8140
0.8293
0.3000
0.9914
1.0151
0.4000
1.1815
1.2141
0.5000
1.3837
1.4256
0.6000
1.5971
1.6489
0.7000
1.8208
1.8831
0.8000
2.0538
2.1272
0.9000
2.2952
2.3802
1.0000
2.5438
2.6409
1.1000
2.7981
2.9079
1.2000
3.0569
3.1799
1.3000
3.3186
3.4554
1.4000
3.5815
3.7324
1.5000
3.8437
4.0092
1.6000
4.1030
4.2835
1.7000
4.3573
4.5530
1.8000
4.6040
4.8152
1.9000
4.8405
5.0671
2.0000
5.0635
5.3055
0
0.0074
0.0153
0.0237
0.0325
0.0419
0.0519
0.0624
0.0734
0.0850
0.0971
0.1098
0.1230
0.1367
0.1509
0.1655
0.1805
0.1957
0.2111
0.2266
0.2420
La figura a continuacion muestra el (valor absoluto del) error para M = 5, 10, 20, 40, 80. Note
que, como se puede esperar, el error aumenta con el tiempo (se acumula) y disminuye con M
(aproximadamente se reduce a la mitad al doblar M ).
0.8
5
10
20
40
80
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
V.4
An
alisis del Error
Se espera que el valor yk sea una buena aproximacion de la solucion exacta y(tk ), as que nos
interesa acotar la diferencia y(tk ) yk . Dado esto, se define el error global de truncamiento o
V.8
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
= yk+1 wk+1
= yk+1 (wk + h(tk , wk ))
=
k
X
j=0
V.5. METODO
DE TAYLOR
V.9
C
(1 + hL)k+1 1
= hN ((1 + hL)k+1 1)
(1 + hL) 1
L
C N
C
h (1 + hL)k+1 hN ehL(k+1) .
L
L
ChN +1
C LT N
e h
L
V.5
M
etodo de Taylor
El metodo de Euler usa la aproximacion de Taylor de primer orden. En general, es posible obtener
mejores aproximaciones con aproximaciones de Taylor de ordenes mas altos. La expansion de
Taylor de orden N alrededor de t = tk se puede escribir como
y(tk + h) = y(tk ) +
N
X
y (j) (tk )
j=1
j!
hj +
y (j) (tk ) N +1
h
j!
Las derivadas y (j) (t) que aparecen en la expansion se pueden expresar en terminos de f (t, y) y sus
derivadas parciales partiendo de la ecuacion del PVI
y 0 (t) = f (t, y)
y en general
y (j) (t) =
dj1
f (t, y(t)).
dtj1
Por ejemplo,
d2 0
d
f
f dy
y (t) = f (t, y(t)) =
+
= ft + f fy
2
dt
dt
t
y dt
donde ft = f /t y fy = f /y,
y 00 (t) =
d
(ft + f fy )
dt
d
f
=
(ft + f fy ) + f (ft + fy f )
dt t
y
= ftt + ft fy + f fty + f fyt + f fyy f + f fy fy
= ftt + ft fy + 2f fty + f 2 fyy + f fy2
y (3) (t) =
V.10
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
Y as sucesivamente. Es posible escribir una ecuacion general, pero no lo hacemos porque el calculo
es mas facil directamente para una funcion f (t, y) concreta, como se vera en los ejemplos. Entonces
podemos escribir
y(tk + h) y(tk ) + h TN (tk , yk )
donde
TN (t, y) =
N
X
y (j) (t)
j=1
j!
j1
N
X
f (j1) (t, y)
j!
j=1
hj1
Con esto, podemos escribir la ecuacion de diferencias del metodo de Taylor para las aproximaciones
wk como
wk+1 = wk + h TN (tk , wk )
wk+1 = wk + h
N
X
R j wk
j!
j=1
= wk
N
X
j=0
= w0
hj1
(Rh)j
j!
N
X
(Rh)j
j=0
!k+1
j!
La suma entre parentesis es la aproximacion de Taylor de orden N para eRh y (eRh )k+1 = eRtk+1
mientras que la solucion exacta del PVI da y(tk+1 ) = y0 eRtk+1 .
y(0) = 0.5
V.5. METODO
DE TAYLOR
V.11
con t [0, 2] y M = 10. Como antes h = 0.2 y tk = 0.2k. Obtenemos las derivadas
y 0 (t)
y 00 (t)
y 000 (t)
y (4) (t)
=
=
=
=
..
.
y (j) (t) =
y t2 + 1
y 0 2t = y t2 + 1 2t = y t2 2t + 1
y 0 2t 2 = y t2 + 1 2t 2 = y t2 2t 1
y 0 2t 2 = y t2 2t 1
y (t + 1)2
para j 3
h3
(wk (tk + 1)2 )
6
h3
h
((wk (tk + 1)2 )(1 + )
6
4
w1 = w0 + h(w0 t20 + 1) +
=
=
=
w2 =
=
=
=
DE ECUACIONES
V. SOLUCION
V.12
DIFERENCIALES ORDINARIAS
0
0.000001379080085
0.000003368820636
0.000006172023254
0.000010051356953
0.000015345926556
0.000022492243029
0.000032050732765
0.000044739210512
0.000061475100098
0.000083428635597
Implementaci
on Matlab. Note que la funcion fija la longitud de df en 4; pero se puede modificar facilmente para permitir mas altos ordenes.
function
df
V.6. METODO
DE EULER MODIFICADO
V.13
Y(j+1)=Y(j)+h*(D(1)+h*(D(2)/2+h*(D(3)/6+h*D(4)/24)));
end
T4 = [T, Y];
V.6
M
etodo de Euler Modificado
y(t0 ) = y0
tk
y entonces
Z
tk+1
f (t, y(t))dt.
y(tk+1 ) = y(tk ) +
tk
Como no es posible evaluar la integral en la derecha, la idea aqu es reemplazarla por una aproximacion. La aproximacion mas directamente obtenible es simplemente hf (tk , y(tk )), lo cual nos
llevara de nuevo a la recurrencia del metodo de Euler. El metodo de Euler modificado emplea la
regla del trapecio y entonces se obtiene
h
y(tk+1 ) y(tk ) + (f (tk , y(tk )) + f (tk+1 , y(tk+1 ))).
2
Esto conduce a la ecuacion
h
wk+1 = wk + (f (tk , wk ) + f (tk+1 , wk+1 )). ()
2
Esta ecuacion no da en forma explcita wk+1 en terminos de wk porque wk+1 aparece a la izquierda
de tal forma que puede no ser facil despejar y obtener una ecuacion explcita para wk+1 . Para
corregir esto se emplea en la derecha la prediccion wk+1 obtenida por el metodo de Euler
wk+1 = wk + hf (tk , wk ).
Entonces se obtiene
h
wk+1 = wk + (f (tk , wk ) + f (tk+1 , wk + hf (tk , wk ))).
2
An
alisis del Error. Para el metodo del trapecio el (valor absoluto del) error esta acotado por
|y (2) (ck )| 3
h
12
donde ck [tk , tk+1 ]. La otra fuente de error (prediccion) es menor y por lo tanto se tiene que
|k | = O(h2 ) (mas adelante cuando veamos los metodos de Runge-Kutta confirmaremos esto). Si
el teorema sobre el error acumulado aplica, se tiene que el error total es
E(h) = O(h2 ).
As que podemos esperar que doblar M tiene el efecto de reducir por un factor de 4 el error.
DE ECUACIONES
V. SOLUCION
V.14
DIFERENCIALES ORDINARIAS
Implementaci
on Matlab. A continuacion esta la funcion Matlab que implementa el metodo
de Euler modificado.
function H = eulerMod (f, a, b, ya, M)
% Entrada
- f es la funcion introducida como una cadena de caracteres
%
- a y b son los extremos izquierdo y derecho
%
- ya es la condicion inicial y(a)
%
- M es el numero de pasos
% Salida
- H = [T, Y] donde T es el vector de abscisas y
%
Y es el vector de ordenadas
h = (b - a) / M;
T = zeros(1, M+1);
Y = zeros(1, M+1);
T = a:h:b;
Y(1) = ya;
for j = 1:M
k1 = feval(f, T(j), Y(j));
k2 = feval(f, T(j+1), Y(j)+h*k1);
Y(j+1) = Y(j) + (h / 2) * (k1 + k2);
end
H = [T, Y];
Ejemplos
Ejemplo 0 Consideremos de nuevo el PVI
y 0 = Ry,
y(0) = y0 .
1
1 + hR + (hR)2
2
k
w0 .
Note que en este caso 1 + hR + 21 (hR)2 es una aproximacion de segundo orden de ehR . As, es de
esperar que en general el error del metodo de Euler modificado sea menor que el error del metodo
de Euler.
Ejemplo 1 Consideremos de nuevo el PVI
dy
= y t2 + 1;
dt
y(0) = 0.5
con t [0, 2] y M = 10. El metodo de Euler modificado resulta en las ecuaciones siguientes de
prediccion y correccion
wk+1 = wk + h(wk t2k + 1)
h
wk+1 = wk + ((wk t2k + 1) + (wk+1 t2k+1 + 1))
2
V.6. METODO
DE EULER MODIFICADO
V.15
0
0.0033
0.0072
0.0117
0.0170
0.0232
0.0304
0.0387
0.0484
0.0596
0.0724
0
0.0293
0.0621
0.0985
0.1387
0.1827
0.2301
0.2806
0.3334
0.3870
0.4397
>> H20=eulerMod(f,0,2,0.5,20);
>> ERRH20=abs(E20-H20(:,2));
>> [H20 E20 ERRH20 ERR20]
ans =
0
0.5000
0.5000
0.1000
0.6570
0.6574
0.2000
0.8284
0.8293
0.3000
1.0137
1.0151
0.4000
1.2122
1.2141
0.5000
1.4232
1.4256
0.6000
1.6459
1.6489
0.7000
1.8794
1.8831
0.8000
2.1228
2.1272
0.9000
2.3750
2.3802
1.0000
2.6348
2.6409
1.1000
2.9010
2.9079
1.2000
3.1720
3.1799
1.3000
3.4464
3.4554
1.4000
3.7223
3.7324
1.5000
3.9978
4.0092
1.6000
4.2708
4.2835
0
0.0004
0.0009
0.0013
0.0019
0.0024
0.0031
0.0037
0.0044
0.0052
0.0061
0.0070
0.0079
0.0090
0.0101
0.0113
0.0126
0
0.0074
0.0153
0.0237
0.0325
0.0419
0.0519
0.0624
0.0734
0.0850
0.0971
0.1098
0.1230
0.1367
0.1509
0.1655
0.1805
DE ECUACIONES
V. SOLUCION
V.16
1.7000
1.8000
1.9000
2.0000
4.5390
4.7996
5.0499
5.2866
4.5530
4.8152
5.0671
5.3055
0.0140
0.0156
0.0172
0.0189
DIFERENCIALES ORDINARIAS
0.1957
0.2111
0.2266
0.2420
Ejemplo: Soluci
on de la forma implcita. Regresemos a la ecuacion (), obtenida antes de
reemplazar la prediccion yk+1 :
h
wk+1 = wk + (f (tk , wk ) + f (tk+1 , wk+1 )).
2
Esta es una relacion implcita para wk+1 , la cual es posible en principio resolver para obtener wk+1 .
Dependiendo de la funcion f , es posible que esto se pueda hacer analticamente en forma facil o
no. En el caso negativo, se podra usar un metodo numerico para determinar la solucion wk+1 .
Consideremos por ejemplo el PVI del Ejemplo 0 arriba. En este caso f (t, y) = Ry y obtenemos
h
wk+1 = wk + (Rwk + Rwk+1 )
2
de donde
wk+1 =
1 + hR/2
1 hR/2
wk
y por lo tanto
wk =
1 + hR/2
1 hR/2
k
w0
Al igual que 1 + hR + (hR)2 /2, el factor que se obtiene cuando se aplica el metodo explcito de
Euler modificado, el termino que aparece aqu
1 + hR/2
1 hR/2
tambien es una aproximacion de segundo orden para ehR , cuando hR es suficientemente peque
no:
Se puede probar que para hR 1,
1
1
1 + hR/2
1
1
1 + hR + (hR)2 + (hR)3
1 + hR + (hR)2 + (hR)3 .
2
8
1 hR/2
2
2
V.7
M
etodo de Runge-Kutta
Ahora estudiamos un metodo que permite obtener aproximaciones de ordenes mas altos, al igual
que el metodo de Taylor, pero evitando calcular derivadas. El metodo de Euler modificado ilustra
que esto es posible en el caso de orden 2: tiene el mismo orden de aproximacion que el metodo de
Taylor de segundo orden pero sin usar y 00 (t) = df (t, y)/dt. Integrando la ecuacion del PVI, como
en la derivacion del metodo de Euler modificado, podemos utilizar otras formulas de cuadratura,
por ejemplo usando la regla del punto medio,
h
h
y(tk+1 ) y(tk ) + hf tk + , y tk +
.
2
2
V.7. METODO
DE RUNGE-KUTTA
V.17
Para obtener una formula explcita, empleamos una prediccion pk+1 para y tk +
manera
h
wk+1 = wk + hf tk + , pk+1
2
h
con pk+1 = wk + f (tk , wk ),
2
h
2
de la siguiente
o simplemente
wk+1
h
h
= wk + hf tk + , wk + f (tk , wk )
2
2
Este se denomina el metodo del punto medio. Al igual que el metodo de Euler modificado, el error
de aproximacion local es O(h2 ).
V.7.1
Runge-Kutta de orden 2
Las constantes A, b y P, Q se determinan de tal forma que esta aproximacion coincide con la
aproximacion de Taylor de segundo orden. Usando la expansion de Taylor de primer orden en dos
variables para f1 alrededor de (tk , y(tk )), obtenemos
f1 = f (tk , y(tk )) + P hft (tk , y(tk )) + Qhf0 fy (tk , y(tk )) + C1 h2
para alguna constante C1 . As que
y(tk ) + Ahf0 + Bhf1
= y(tk ) + Ahf (tk , y(tk )) + Bh(f (tk , y(tk )) + P hft (tk , y(tk )) + Qhf0 fy (tk , y(tk ))) + O(h3 )
= y(tk ) + (A + B)hf (tk , y(tk )) + BP h2 ft (tk , y(tk )) + BQh2 f0 fy (tk , y(tk )) + O(h3 ).
En comparacion, la aproximacion de Taylor de primer orden de y(tk + h) es
h2 00
y (tk ) + O(h3 )
2
h2
= y(tk ) + hf (tk , y(tk )) + (ft (tk , y(tk )) + f (tk , y(tk ))fy (tk , y(tk ))) + O(h3 )
2
h2
h2
= y(tk ) + hf (tk , y(tk )) + ft (tk , y(tk ) + f0 fy (tk , y(tk ))) + O(h3 )
2
2
Comparando con el resultado anterior, se observa que ambos son iguales hasta orden 2 si
A + B = 1,
BP = 1/2,
BQ = 1/2.
V.18
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
V.7.2
Runge-Kutta de orden 4
=
=
=
=
hf (tk , yk )
hf (tk + A1 h, yk + P1 k1 )
hf (tk + A2 h, yk + Q1 k1 + Q2 k2 )
hf (tk + A3 h, yk + R1 k1 + R2 k2 + R3 k3 )
V.7. METODO
DE RUNGE-KUTTA
V.19
donde
K1 = h f (tk , wk )
1
h
K2 = h f tk + , wk + K1
2
2
h
1
K3 = h f tk + , wk + K2
2
2
K4 = h f (tk + h, wk + K3 )
Una forma alternativa de interpretar esta formula es como una aplicacion de la regla de Simpson
en la integracion del PVI:
Z tk+1
f (t, y(t))dt
y(tk+1 ) y(tk ) =
tk
h
h
h
=
f (tk , y(tk )) + 4f tk + , y tk +
+ f (tk+1 , y(tk+1 )) + O(h5 )
6
2
2
El termino con coeficiente 4 se divide en dos mitades con coeficiente 2, y luego se usan predicciones
adecuadas para y(tk + h2 ) y y(tk+1 ).
Ejemplo. Consideremos de nuevo el PVI y 0 = y t2 + 1 en [0, 2] con y0 = 0.5 y h = 0.2. La
formula de diferencias de Runge-Kutta para este PVI es
1
wk+1 = wk + (K1 + 2K2 + 2K3 + K4 )
6
donde
= 0.2
(wk t2k + 1)
1
1
0.2 2
K2 = 0.2 f tk + 0.2
,
w
+
K
=
0.2
w
+
K
t
+
+
1
k
k
k
2
2 1
2 1
2
1
0.2
0.2 2
1
K3 = 0.2 f tk + 2 , wk + 2 K2 = 0.2 wk + 2 K2 tk + 2 + 1
K4 = 0.2 f (tk + 0.2, wk + K3 )
= 0.2 ((wk + K3 ) (tk + 0.2)2 + 1)
K1 = 0.2 f (tk , wk )
= 0.2 (0.5 + 1)
2+1
+
1
=
0.2
(0.5
+
0.1
1.5)
(0.1)
2
0.2 2
+1
= 0.2 (0.5 + 0.1 1.64) (0.1)2 + 1
2
K4 = 0.2 (w0 + K3 ) (t0 + 0.2)2 + 1
= 0.2 (0.5 + 0.2 1.654) (0.02)2 + 1
0.2 2
= 0.2 1.5
= 0.2 1.64
= 0.2 1.654
= 0.2 1.7908
y entonces
0.2
(1.5 + 2 1.64 + 2 1.654 + 1.7908) = 0.8292933
6
Usando Matlab se obtiene lo siguiente (en las columnas 3 y 4 aparecen los errores para los
metodos de Runge-Kutta y Taylor de orden 4)
w1 = 0.5 +
V.20
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
0
0.000005287586582
0.000011440512698
0.000018582763146
0.000026850805823
0.000036393041726
0.000047368399497
0.000059943722683
0.000074289484037
0.000090573214091
0.000108949842021
0
0.000001379080085
0.000003368820636
0.000006172023254
0.000010051356953
0.000015345926556
0.000022492243029
0.000032050732765
0.000044739210512
0.000061475100098
0.000083428635597
Implementaci
on Matlab. La siguiente es la implementacion Matlab del metodo de RungeKutta de orden 4.
function R = rk4 (f, a, b, ya, M)
% Entrada
- f es la funcion como cadena de caracteres f
%
- a y b son los extremos izquierdo y derecho
%
- ya es la condicion inicial y(a)
%
- M es el numero de pasos
% Salida
- R = [T, Y] donde T es el vector de abscisas
%
y Y es el vector de ordenadas
h = (b - a) / M;
T = zeros(1, M+1);
Y = zeros(1, M+1);
T = a:h:b;
Y(1) = ya;
for j = 1:M
k1 = h * feval(f, T(j), Y(j));
k2 = h * feval(f, T(j) + h/2, Y(j) + k1/2);
k3 = h * feval(f, T(j) + h/2, Y(j) + k2/2);
k4 = h * feval(f, T(j) + h,
Y(j) + k3);
Y(j+1) = Y(j) + (k1 + 2 * k2 + 2 * k3 + k4) / 6;
end
R = [T, Y];
V.8
Sistemas de Ecuaciones
Los metodos desarrollados para el PVI de primer orden pueden ser extendidos a otras ecuaciones
diferenciales. Por ejemplo, sistemas de ecuaciones donde y y f se reemplazan por vectores
y1
f1
y2
f2
y = .. y f (t, y) = .. : R Rn Rn
.
.
yn
fn
y el PVI y 0 = f (t, y) por el PVI vectorial
y0 (t) = f (t, y), y(t0 ) = y0 ,
V.21
Soluci
on Num
erica
Los metodos de solucion para un PVI simple se pueden extender al caso de sistemas. Como antes
se discretiza el tiempo [t0 , t0 + T ] en una secuencia de tiempos tk = t0 + kh con h = T /M donde
M es el n
umero de subintervalos y se determinan aproximaciones wi,k para yi,k = yi (tk ):
y1,k
y2,k
..
.
=
y
w
=
k
k
yn,k
w1,k
w2,k
..
.
wn,k
h2 0
f (tk , wk )
2
V.22
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
donde cada Kj es un vector (columna) con n componentes Kj = [Kj,1 Kj,2 Kj,n ]T , definidos
por las ecuaciones vectoriales
K1 = hf (tk , wk )
1
h
K2 = hf tk + , wk + K1
2
2
h
1
K3 = hf tk + , wk + K2
2
2
K4 = hf (tk + h, wk + K3 )
Estas son ecuaciones vectoriales con n componentes. Para clarificacion escribimos la forma
escalar de las ecuaciones: con i = 1, 2, . . . , n,
1
wi,k+1 = wi,k + (K1,i + 2K2,i + 2K3,i + K4,i )
6
donde
K1,i = hfi (tk ; w1,k , w2,k , . . . , wn,k )
1
1
1
h
K2,i = hfi tk + ; w1,k + k1,1 , w2,k + K1,2 , . . . , wn,k + K1,n
2
2
2
2
1
1
1
h
K3,i = hfi tk + ; w1,k + K2,1 , w2,k + K2,2 , . . . , wn,k + K2,n
2
2
2
2
K4,i = hfi (tk + h; w1,k + K3,1 , w2,k + K3,2 , . . . , wn,k + K3,n )
V.9
V.23
y2 (t) = 0 (t)
y1 (0) = 0
y2 (0) = 00
y=
y1
y2
, f (t, y) =
y2
g
L sin y1
, y0 =
0
00
V.24
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
0t1
Se desea una aproximacion de y(0.1) con h = 0.1 usando diferentes metodos. Para comparacion,
la solucion exacta es
1
y(t) = t3 et tet + 2et 2
6
de donde y(0.1) = 0.10000894
Sistema de primer orden equivalente: Introducimos y1 , y2 con
y1 (t) = y(t), y2 (t) = y 0 (t).
Con esto tenemos el sistema, para t [0, 1],
y10 = y2 ,
y20 = 2y2 (t) y1 (t) + tet t,
Forma vectorial: Con
y1 (0) = 0
y2 (0) = 1
y : R R2
7 y(t) =
y1 (t)
y2 (t)
y
f : R R2 R2
(t, y)
7 f (t, y) =
y2 (t)
2y2 (t) y1 (t) + tet t
0
1
w1,0
w2,0
=
0
1
donde
f (tk , wk ) =
w2,k
2w2,k w1,k + tk etk tk
.
Para k = 0
w1 = w0 + 0.1 f (t0 , w0 )
0
w2,0
=
+ 0.1
1
2w2,0 w1,0 + 0e0 0
0
1
=
+ 0.1
1
2
0
0.1
=
+
1
0.2
0.1
=
1.2
V.25
Entonces
y(0.1)
y 0 (0.1)
=
y1 (0.1)
y2 (0.1)
y1 =
0.1
1.2
y
y(0.1) 0.1.
Solucion Punto medio: La formula de diferencias es
h
h
h
w1,0
0
wk+1 = wk + f tk + , wk + f (tk , wk ) , con w0 =
=
w
1
2
2
2
2,0
Para k = 0,
w1 =
=
=
=
=
=
0.1
0.1
0.1
f t0 +
, w0 +
f (t0 , w0 )
w0 +
2
2
2
0
0
1
+ 0.05 f 0.05,
+ 0.05
1
1
2
0
0.05
+ 0.05 f 0.05,
1
1.1
0
1.1
+ 0.05
1
2(1.1) 0.05 + 0.05e0.05 0.05
0
1.1
0
0.055
+ 0.05
=
+
1
2.1526
1
0.1076
0.055
1.1076
y(0.1)
y 0 (0.1)
h2
= wk + h f (tk , wk ) + f 0 (tk , wk ), con w0 =
2
w1,0
w2,0
=
0
1
Calculando la derivada
d
y2 (t)
f (t, y(t)) =
dt 2y2 (t) y1 (t) + tet t
y20 (t)
=
2y20 (t) y10 (t) + et + tet 1
2y2 (t) y1 (t) + tet t
=
2(2y2 (t) y1 (t) + tet t) y2 (t) + et + tet 1
2y2 (t) y1 (t) + tet t
=
3y2 (t) 2y1 (t) + 3tet + et 2t 1
0
V.26
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
Entonces w1 =
0.12 0
0
f (t0 , w0 )
=
+ 0.1 f (t0 , w0 ) +
1
2
0
w2,0
2w2,0 w1,0 + t0 et0 t0
=
+ 0.1
+ 0.005
3w2,0 2w1,0 + 3t0 et0 + et0 2t0 1
1
2w2,0 w1,0 + 0e0 0
0.1
2
=
+ 0.005
1.2
3
0.11
y(0.1)
=
1.215
y 0 (0.1)
Solucion Runge-Kutta. La formula para w1 es (usando la notacion con fi s en lugar de Ki s)
1
w1,0
0
=
w1 = w0 + (K1 + 2K2 + 2K3 + K4 ), con w0 =
w
1
6
2,0
donde
K1 =
K2 =
=
=
K3 =
=
=
=
=
K4 =
=
=
=
=
1
0.1 f (t0 , w0 ) = 0.1
2
0.1
1
0.1 f t0 +
, w0 + K1
2
2
0
1
0.1 f 0.05,
+ 0.05
1
2
1.1
0.1
2.1526
1
0.1
, w0 + K2
0.1 f t0 +
2
2
0
1.1
0.1 f 0.05,
+ 0.05
1
2.1526
0.055
0.1 f 0.05,
1.1076
1.1076
0.1
2(1.1076) 0.055 + 0.05e0.05 0.05
1.1076
0.1
2.1628
0.1 f (t0 + 0.1, w0 + 1K3 )
0
1.1076
0.1 f 0.1,
+ 0.1
1
2.1628
0.1108
0.1 f 0.1,
1.2163
1.2163
0.1
2(1.2163) 0.1108 + 0.1e0.1 0.1
1.2163
0.1
2.3323
V.27
Entonces
0.1
=
+
6
0.1105
=
1.2161
w1
V.10
0
1
1
2
+2
y(0.1)
y 0 (0.1)
1.1
2.1526
+2
1.1076
2.1628
+
1.2163
2.3323
Problemas de Contorno
y 00 = f (x, y, y 0 ), a x b
y(a) = , y(b) = condiciones de frontera
Una solucion del PVF () es una funcion y(x) que satisface la ecuacion diferencial en [a, b] y las
condiciones de frontera. El siguiente teorema establece condiciones de existencia y unicidad para
la solucion del PVF ().
Teorema V.4 Sea R = {(x, y, y 0 ) : a x b, < y, y 0 < } y f (x, y, y 0 ) una funci
on
continua en R y con derivadas fy y fy0 continuas en R. Si
fy (x, y, y 0 ) > 0 para todo (x, y, y 0 ) R
y existe M > 0 tal que
|fy0 (x, y, y 0 )| M para todo (x, y, y 0 ) R,
entonces el PVF () tiene una solucion u
nica y(x) en [a, b].
Ejemplo.
Ejemplo.
PVF Lienal. Se dice que el PVF () es lineal si existen funciones p(x), q(x), r(x) tal que
() f (x, y, y 0 ) = p(x)y 0 + q(x)y + r(x).
En este caso, el enunciado del teorema se simplifica de la siguiente manera: si p(x), q(x), r(x) son
continuas en [a, b] y q(x) > 0 en [a, b], entonces el PVF tiene una solucion u
nica en [a, b] (note
que la continuidad de p(x) en [a, b] implica que existe M > 0 tal que |p(x)| M y por lo tanto
|fy0 (x, y, y 0 )| M en [a, b]).
V.10.1
M
etodo del Disparo para un PVF Lineal
Dado el PVF lineal con f (x, y, y 0 ) como en (), consideramos los siguientes PVIs
(PVI I)
V.28
DE ECUACIONES
V. SOLUCION
DIFERENCIALES ORDINARIAS
y
(PVI II)
Veamos que si u(x) y v(x) son soluciones de (PVI I) y (PVI II) respectivamente entonces para
cualquier constante c,
y(x) = u(x) + cv(x)
es una solucion de y 00 (x) = p(x)y 0 (x) + q(x)y(x) + r(x):
y 00 (x) =
=
=
=
=
(u(x) + cv(x))00
u00 (x) + cv 00 (x)
(p(x)u0 (x) + q(x)u(x) + r(x)) + c(p(x)v 0 (x) + q(x)v(x))
p(x)(u0 (x) + cv 0 (x)) + q(x)(u(x) + cv(x)) + r(x)
p(x)y 0 (x) + q(x)y(x) + r(x)
Ahora veamos que es posible determinar c tal que las condiciones de frontera se satisfacen. Primero,
en x = a cualquier c funciona:
x(a) = u(a) + cv(a) = + c 0 = .
En x = b, se tiene que para que y(b) = se debe tener que
u(b) + cv(b) =
y por lo tanto, asumiendo v(b) 6= 0, entonces se debe escoger
c=
u(b)
v(b)
Pero v(b) 6= 0 debe ser el caso si se satisfacen las condiciones del teorema, porque de lo contrario,
si v(b) = 0 entonces v sera una solucion del PVF
v 00 (x) = p(x)v 0 (x) + q(x)v(x),
v(a) = 0, v(b) = 0
atb
Con este valor, entonces la aproximacion discreta w0 , w1 , . . . , wM de y(x) esta dada por
wk = wk0 + cwk00
k = 0, 1, . . . , M .
V.29
Implementaci
on Matlab. La funcion linsht requiere que se pasen los sistemas de primer orden
equivalentes a los dos PVIs I y II (por supuesto sera mas facil pasar p(t), q(t), r(t), pero as no es
como la implementacion funciona).
function L = linsht (F1, F2, a, b, alpha, beta, M)
% Entrada
- F1 y F2 son los sistemas de ecuaciones de primer orden
%
representando los Problemas de Valor Inicial (P.V.I.s)
%
- a y b son los extremos del intervalo
%
- alpha = x(a) y beta = x(b); las condiciones frontera
%
- M es el numero de pasos
% Salida
- L = [T, X]; donde T es el vector de abscisas (M+1)x1
%
y X es el vector de ordenadas (M+1) x 1
% Resolver el sistema F1
Za = [alpha, 0];
[T, Z] = rks4 (F1, a, b, Za, M);
U = Z(:, 1);
% Resolver el sistema F2
Za = [0, 1];
[T, Z] = rks4 (F2, a, b, Za, M);
V = Z(:, 1);
% Calcular la solucion al problema de valor frontera
X = U + (beta - U(M+1)) * V / V(M+1);
L = [T, X];