Está en la página 1de 29

V

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. EXISTENCIA DE SOLUCIONES

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,

con soluciones y(t) = (t/2)2 y y(t) = 1 t.

V.3

M
etodo de Euler

Consideramos un PVI de la forma


y 0 = f (t, y) en [t0 , t0 + T ] con y(t0 ) = C0
y para su solucion numerica usamos la discretizacion del tiempo: tk = t0 +kh para k = 0, 1, 2, . . . , M
donde h = T /M . As que tM = t0 + T (se ha dividido el intervalo de tiempo de longitud T en M
subintervalos de longitud h).
La aproximacion de Euler se obtiene del desarrollo de Taylor
y(t) = y(tk ) + y 0 (tk )(t tk ) +

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

E = euler (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
- E = [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
Y(j+1) = Y(j) + h * feval(f, T(j), Y(j));
end
E = [T, Y];

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

que tiene la solucion


wk = (1 + hR)k y0 .
Esto es una buena aproximacion si hR es suficientemente peque
no: Note que 1 + hR es la aproxihR
k
macion de primer orden de e y entonces (1 + hR) es una aproximacion de ehRk = eRt .

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

y as sucesivamente. A continuacion completamos el ejercicio con MATLAB para M = 10 y


M = 20. Las columnas del resultado muestran ti , wi , yi = y(ti ) y |wi yi |.
>> f=inline(y-t^2+1,t,y);
>> g=inline((t+1).^2-0.5*exp(t));
>> A10=euler(f,0,2,0.5,10);
>> E10=g(A10(:,1));
>> ERR10=abs(E10-A10(:,2));
>> [A10 E10 ERR10]
ans =
0
0.5000
0.5000
0
0.2000
0.8000
0.8293
0.0293
0.4000
1.1520
1.2141
0.0621
0.6000
1.5504
1.6489
0.0985
0.8000
1.9885
2.1272
0.1387
1.0000
2.4582
2.6409
0.1827
1.2000
2.9498
3.1799
0.2301
1.4000
3.4518
3.7324
0.2806
1.6000
3.9501
4.2835
0.3334
1.8000
4.4282
4.8152
0.3870
2.0000
4.8658
5.3055
0.4397


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.2: Error de la solucion para M = 5, 10, 20, 40, 80.

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

discretizacion ek en tk (acumulado en los pasos 1 a k) como


ek = yk wk
(recuerde que yk = y(tk )). Para el analisis resulta conveniente definir el error local de truncaci
on
en el paso k + 1 como
yk+1 (yk + h(tk , yk ))
,
k+1 =
h
es decir, la diferencia entre la solucion exacta en tk+1 y el valor predecido por el metodo utilizando
la solucion exacta en tk como punto de partida, dividida por h.
En general es posible probar una cota de la forma
|k | ChN ,
donde C > 0 es una constante, y se escribe entonces |k | = O(hN ). El error total acumulado
E(h) = eM en las aproximaciones de t0 a tM es en general una funcion de f , h y el metodo.
En el caso del metodo de Euler, con (t, y) = f (t, y), tenemos de la ecuacion al comienzo de la
seccion que
y 00 (ck )
yk+1 (yk + hf (tk , yk ))
=
h.
k+1 =
h
2
As que |k+1 | Ch donde C = maxk y 00 (ck )/2. Es decir, para el metodo de Euler tenemos N = 1.
A continuacion hacemos un analisis mas detallado del error total bajo ciertas condiciones.
Teorema V.3 Supongamos que se tiene una cota |k | ChN para el error local de truncaci
on, y
que la funcion incremental (t, y) satisface la condicion de Lipschitz con constante L con respecto
a y. Entonces existe una constante C 0 que depende de C y L tal que
|eM | C 0 hN
Prueba. Para acotar el error global en terminos de los errores locales, tenemos la siguiente derivacion:
ek+1

= yk+1 wk+1
= yk+1 (wk + h(tk , wk ))
=

(yk+1 (yk + h(tk , yk )) + (yk wk ) + h ((tk , yk ) (tk , wk ))

= hk+1 + ek + h ((tk , yk ) (tk , wk )).


Tomando valor absoluto, entonces,
|ek+1 |

h|k+1 | + |ek | + h |(tk , yk ) (tk , wk )|.

Suponiendo que (t, y) es Lipschitz en la segunda variable con constante L, es decir


|(t, y) (t, y 0 )| L |y y 0 |,
obtenemos
|ek+1 |

h|k+1 | + |ek | + hL |yk wk | = h|k+1 | + |ek | (1 + hL).

Expandiendo esta relaci


on de recurrencia, obtenemos
|ek+1 |

k
X
j=0

|k+1j |(1 + hL)j + |e0 |(1 + hL)k+1 .


V.5. METODO
DE TAYLOR

V.9

Ahora usando |k+1j | ChN , la suma 1 + x + x2 + + xk = (xk+1 1)/(x 1) para x 6= 1, e0 = 0 y la desigualdad


1 + x ex , v
alida para x > 0 (se obtiene truncando la serie de Taylor ex = 1 + x + x2 + + xn + ), obtenemos

|ek+1 | ChN +1 1 + (1 + hL) + (1 + hL)2 + + (1 + hL)k
=

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

En particular, para el error final |EM | en tM se tiene


|eM |

C LT N
e h
L

donde T = tM t0 = M h es el tiempo total de la solucion. Entonces


|eM | C 0 hN
donde C 0 = (C/L)eLT .

Como ejemplo, en el metodo de Euler, si f (t, y) es Lipschitz en la segunda varible entonces el


error total es O(h). Esto se observo en el ejemplo de la seccion anterior (el error se reduce a la
mitad al doblar M ).

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 )

Ejemplo. Consideremos de nuevo el PVI y 0 = Ry con y(0) = C0 . Entonces


y 0 (t) = Ry(t)
y 00 (t) = Ry 0 (t) = R2 y(t)
y 000 (t) = Ry 00 (t) = R3 y(t)
..
.
(j)
y (t) = Ry (j1) (t) = Rj y(t)
..
.
Entonces el metodo de Taylor de orden N aplicado a este PVI resulta en la formula

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 .

Ejemplo. Consideremos de nuevo el PVI


dy
= y t2 + 1;
dt

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

El metodo de Taylor de segundo, tercero y cuarto orden resulta en las formulas


h2
(wk t2k 2tk + 1)
2
h2
= wk + h(wk t2k + 1) + (wk t2k 2tk + 1) +
2
h2
= wk + h(wk t2k + 1) + (wk t2k 2tk + 1) +
2

wk+1 = wk + h(wk t2k + 1) +


wk+1
wk+1

h3
(wk (tk + 1)2 )
6
h3
h
((wk (tk + 1)2 )(1 + )
6
4

respectivamente. Por ejemplo, usando el metodo de cuarto orden obtenemos


h2
h3
h
(w0 t20 2t0 + 1) + ((w0 (t0 + 1)2 )(1 + )
2
6
4
0.22
0.23
0.2
0.5 + 0.2(0.5 0 + 1) +
(0.5 0 + 1) +
(0.5 (0 + 1)2 )(1 +
)
2
6
4
0.004
0.5 + 0.2(1.5) + 0.02(1.5) +
(0.5)(1.05)
3
0.8293
h2
h3
h
w1 + h(w1 t21 + 1) + (w1 t21 2t1 + 1) + ((w1 (t1 + 1)2 )(1 + )
2
6
4
0.22
0.8293 + 0.2(0.8293 0.04 + 1) +
(0.8293 0.04 0.4 + 1) +
2
0.2
0.23
(0.8293 (0.2 + 1)2 )(1 +
)
6
4
0.22
0.23
0.8293 + 0.2(1.7893) +
(1.3893) +
(0.6107)(1.05)
2
6
1.214091,

w1 = w0 + h(w0 t20 + 1) +
=
=
=
w2 =
=

=
=

etc. Usando Matlab tenemos, comparando con la solucion exacta


y(t) = (t + 1)2 0.5et

DE ECUACIONES
V. SOLUCION

V.12

DIFERENCIALES ORDINARIAS

>> df = @(t,y) [y-t^2+1,y-t^2-2*t+1,y-t^2-2*t-1,y-t^2-2*t-1];


>> T4=taylor(df,0,2,0.5,10);
>> y=@(t) (t+1).^2 -0.5*exp(t);
>> yy=y(T4(:,1));
>> [T4, abs(T4(:,2)-yy)]
ans =
0
0.500000000000000
0
0.200000000000000
0.829300000000000
0.000001379080085
0.400000000000000
1.214091020000000
0.000003368820636
0.600000000000000
1.648946771828000
0.000006172023254
0.800000000000000
2.127239587110719
0.000010051356953
1.000000000000000
2.640874431697033
0.000015345926556
1.200000000000000
3.179964030874756
0.000022492243029
1.400000000000000
3.732432067310427
0.000032050732765
1.600000000000000
4.283528527012956
0.000044739210512
1.800000000000000
4.815237742893624
0.000061475100098
2.000000000000000
5.305555379170272
0.000083428635597

Comparamos los errores de los cuatro ordenes:


>> df1 = @(t,y) [y-t^2+1,0,0,0];
>> df2 = @(t,y) [y-t^2+1,y-t^2-2*t+1,0,0];
>> df3 = @(t,y) [y-t^2+1,y-t^2-2*t+1,y-t^2-2*t-1,0];
>> T1=taylor(df1,0,2,0.5,10);
>> T2=taylor(df2,0,2,0.5,10);
>> T3=taylor(df3,0,2,0.5,10);
>> err1=abs(T1(:,2)-yy);
>> err2=abs(T2(:,2)-yy);
>> err3=abs(T3(:,2)-yy);
>> err4=abs(T4(:,2)-yy);
>> [err1 err2 err3 err4]
ans =
0
0
0
0.029298620919915
0.000701379080085
0.000034712413418
0.062087651179364
0.001712348820636
0.000084793265080
0.098540599804746
0.003135400195254
0.000155345676735
0.138749535753766
0.005103184246233
0.000252978994283
0.182683085770477
0.007786832629523
0.000386225575140
0.230130338631727
0.011406481816273
0.000566068291720
0.280626576577662
0.016244568368897
0.000806607344841
0.333355659802442
0.022662605832360
0.001125902214908
0.387022514193524
0.031122332440934
0.001547033614333
0.439687446214673
0.042212341751366
0.002099441584789

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

T4 = taylor (df, a, b, ya, M)

% Entrada - df = [y, y, y, y] como cadena de caracteres


%
donde y = f(t, y)
%
- a y b son los extremos izquierdo y derecho
%
- ya es la condicion inicial y(a)
%
- M es el numero de pasos
% Salida
- T4 = [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
D = feval(df, T(j), Y(j));

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

Continuamos considerando el mismo PVI de primer orden


y 0 (t) = f (t, y(t)),

y(t0 ) = y0

para t [t0 , t0 + T ]. El metodo se basa en eliminar la derivada mediante integracion en ambos


lados de la ecuacion en el intervalo [tk , tk+1 ]
Z tk+1
Z tk+1
0
f (t, y(t))dt
y (t)dt =
tk

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 .

El metodo de Euler modificado resulta en la ecuacion de recurrencia


h
wk+1 = wk + (Rwk + R(wk + hRwk ))
2


1
2
=
1 + hR + (hR) wk
2
que tiene solucion

wk =

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

Reemplazando h = 2/10 = 0.2 y tk = hk = 0.2h, se obtiene


wk+1 = wk + 0.2(wk 0.04k 2 + 1)
h
wk+1 = wk + ((wk 0.04k 2 + 1) + (wk+1 0.04(k + 1)2 + 1))
2
Entonces, comenzando con y0 = 0.5, obtenemos los valores numericos
w1 = w0 + 0.2(w0 0.04 02 + 1) = 0.5 + 0.2(0.5 + 1) = 0.8
w1 = w0 + 0.1((w0 0.04 02 + 1) + (w1 0.04 12 + 1))
= 0.5 + 0.1((0.5 0.04 02 + 1) + (0.8 0.04 12 + 1)) = 0.826
w2 = w1 + 0.2(w1 0.04 12 + 1) = 0.826 + 0.2(0.826 0.04 + 1) = 1.1832
w2 = w1 + 0.1((w1 0.04 12 + 1) + (w2 0.04 22 + 1))
= 0.826 + 0.1((0.826 0.04 12 + 1) + (1.1832 0.04 22 + 1)) = 1.20692
..
.
Ahora completamos el ejercicio con Matlab; la tabla compara el error del metodo de Euler
modificado con el metodo de Euler. Y tambien para M = 20.
>> H10=eulerMod(f,0,2,0.5,10);
>> ERRH10=abs(E10-H10(:,2));
>> [H10 E10 ERRH10 ERR10]
ans =
0
0.5000
0.5000
0.2000
0.8260
0.8293
0.4000
1.2069
1.2141
0.6000
1.6372
1.6489
0.8000
2.1102
2.1272
1.0000
2.6177
2.6409
1.2000
3.1496
3.1799
1.4000
3.6937
3.7324
1.6000
4.2351
4.2835
1.8000
4.7556
4.8152
2.0000
5.2331
5.3055

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

La forma general de los metodos de Heun y del punto medio es


y(tk+1 ) y(tk ) + Ahf0 + Bhf1
donde
f0 = f (tk , y(tk )),

f1 = f (tk + P h, y(tk ) + Qhf0 )

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

y(tk + h) = y(tk ) + hy 0 (tk ) +

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

Dos posibles soluciones son (i) A = B = 1/2, P = Q = 1, (ii) A = 0, B = 1, P = Q = 1/2,


que corresponde a los dos metodos ya discutidos. Otra posibilidad es (iii) A = 1/4, B = 3/4,
P = Q = 2/3 que corresponde a



h
2
2
y(tk + h) y(tk ) +
f (tk , y(tk )) + 3f tk + h, y(tk ) + hf (tk , y(tk )
.
4
3
3
La formula de diferencias correspondiente es



2
2
h
f (tk , wk ) + 3f tk + h, wk + hf (tk , wk
wk+1 = wk +
4
3
3
y su error local es tambien O(h2 ).

V.7.2

Runge-Kutta de orden 4

En forma similar se pueden derivar metodos de cuarto orden:


yk+1 yk + w1 k1 + w2 k2 + w3 k3 + w4 k4 ()
donde w1 , w2 , w3 , w4 son constantes y
k1
k2
k3
k4

=
=
=
=

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 )

donde A1 , A2 , A3 , P1 , Q1 , Q2 , R1 , R2 , R3 son constantes. Comparando la aproximacion de Taylor de


cuarto orden con la formula () reemplazando los fi con aproximaciones de Taylor de orden tres en
dos variables se encuentran condiciones para las constantes. La solucion que usualmente se conoce
como el metodo de Runge-Kutta de orden 4 es
1
yk+1 yk + (k1 + 2k2 + 2k3 + k4 )
6
donde
k1 = hf (tk , y(tk ))


h
1
k2 = hf tk + , yk + k1
2
2


h
1
k3 = hf tk + , yk + k2
2
2
k4 = hf (tk + h, yk + k3 )

Finalmente, reemplazando yk con la aproximacion wk , la ecuacion de diferencias del metodo de


Runge-Kutta, es
1
wk+1 = wk + (K1 + 2K2 + 2K3 + K4 )
6


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 )

Calculemos el primer valor como ejemplo:


1
w1 = w0 + (K1 + 2K2 + 2K3 + K4 )
6
donde

K1 = 0.2 w0 t20 + 1

K2 = 0.2 w0 + 21 K1 t0 +


K3 = 0.2 w0 + 12 K2 t0 +

 = 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

>> f=@(t,y) y-t^2+1;


>> R=rk4(f,0,2,0.5,10);
>> erk=abs(R(:,2)-yy);
>> [R erk err4]
ans =
0
0.500000000000000
0.200000000000000
0.829293333333333
0.400000000000000
1.214076210666667
0.600000000000000
1.648922017041600
0.800000000000000
2.127202684947944
1.000000000000000
2.640822692728752
1.200000000000000
3.179894170232231
1.400000000000000
3.732340072854980
1.600000000000000
4.283409498318406
1.800000000000000
4.815085694579434
2.000000000000000
5.305363000692654

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.8. SISTEMAS DE ECUACIONES

V.21

el cual es equivalente al sistema de ecuaciones


y10 (t) = f1 (t; y1 (t), y2 (t), . . . , yn (t))
y20 (t) = f2 (t; y1 (t), y2 (t), . . . , yn (t))
..
.
0
yn (t) = fn (t; y1 (t), y2 (t), . . . , yn (t))
con
yk (t0 ) = y0,k i = 1, . . . , n.

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

En general, los wk se determinan por medio de una formula de diferencias para, k 0,


wk+1 = wk + h(tk , wk ).
A continuacion describimos algunas de las extensiones para sistemas.
Euler. El metodo de Euler es
wk+1 = wk + hf (tk , wk )
Euler modificado. El metodo del punto medio es


h
h
h
wk+1 = wk + f tk + , wk + f (tk , wk )
2
2
2
Taylor. El metodo de Taylor, de segundo orden como ejemplo, es
wk+1 = wk + hf (tk , wk ) +

h2 0
f (tk , wk )
2

Runge-Kutta. El metodo de Runge-Kutta de cuarto orden es (escribimos las ecuaciones con


Ki s en lugar de fi s para evitar confusion con las funciones componentes fi cuando se escriben las
ecuaciones escalares):
1
wk+1 = wk + (K1 + 2K2 + 2K3 + K4 )
6

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 )

Ejemplo. En la proxima seccion.


Implementaci
on Matlab. La siguiente funcion Matlab implementa el metodo de Runge-Kutta
para sistemas.
function [T, Z] = rks4 (F, a, b, Za, M)
% Entrada
- F es el sistema introducido como cadena de caracteres F
%
- a y b los extremos del intervalo
%
- Za = [x(a), y(a)] las condiciones iniciales
%
- M es el numero de pasos
% Salida
- T es el vector de pasos
%
- Z = [x1(t), . . ., xn(t)] donde xk(t) es la aproximacion a la
%
k-esima variable dependiente
h = (b - a) / M;
T = zeros(1, M+1);
Z = zeros(M+1, length(Za));
T = a:h:b;
Z(1, :) = Za;
for j = 1:M
k1 = h * feval(F, T(j), Z(j, :));
k2 = h * feval(F, T(j) + h/2, Z(j, :) + k1/2);
k3 = h * feval(F, T(j) + h/2, Z(j, :) + k2/2);
k4 = h * feval(F, T(j) + h, Z(j, :) + k3);
Z(j+1, :) = Z(j, :) + (k1 + 2 * k2 + 2 * k3 + k4) / 6;
end

V.9. ECUACIONES DE ORDEN SUPERIOR

V.9

V.23

Ecuaciones de Orden Superior

Una ecuacion diferencial de orden superior de la forma


y (m) (t) = f (t, y, y 0 (t), y 00 (t), . . . , y (m1) (t)),
con condiciones iniciales
y(t0 ) = C0 , y 0 (t0 ) = C1 , . . . , y (m1) (t0 ) = Cm1
se puede resolver introduciendo funciones yk (t), k = 1, . . . , m tal que
yk (t) = y (k1) (t).
En particular
y1 (t) = y (0) (t) = y(t).
Con esto se obtiene un sistema de ecuaciones diferenciales de primer orden
y10 (t) = y2 (t)
y20 (t) = y3 (t)
..
.
0
ym1 (t) = ym (t)
0
ym
(t) = f (t, y1 (t), y2 (t), . . . , ym (t))
con condiciones iniciales
y1 (t0 ) = C0 , y2 (t0 ) = C1 , . . . , ym (t0 ) = Cm1 .
Ejemplo. Para la ecuacion del pendulo
g
d2
+ sin = 0 con (0) = 0 , 0 (0) = 00
2
dt
L
definimos
y1 (t) = (t)

y2 (t) = 0 (t)

y se obtienen las ecuaciones


y10 = y2 ,
g
y20 = sin y1 ,
L

y1 (0) = 0
y2 (0) = 00

En forma vectorial, esto es


y0 = f (t; y), y(0) = y0
donde


y=

y1
y2


, f (t, y) =

y2
g
L sin y1


, y0 =

0
00

V.24

DE ECUACIONES
V. SOLUCION

DIFERENCIALES ORDINARIAS

Ejemplo. Consideramos la ecuacion diferencial de segundo orden


y 00 2y 0 + y = tet t,
y(0) = 0, y 0 (0) = 1

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

se tiene la ecuacion vectorial




y (t) = f (t, y(t)), y(0) = y0

0
1

Solucion Euler: La formula de diferencias es



wk+1 = wk + hf (tk , wk ), con w0 =

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.9. ECUACIONES DE ORDEN SUPERIOR

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)

Solucion Taylor 2do. orden: La formula de diferencias es


wk+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

obtenemos la formula de diferencias



0
f (tk , wk ) =

2w2,k wk,1 + tk etk tk


3w2,k 2w1,k + 3tk etk + etk 2tk 1

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.10. PROBLEMAS DE CONTORNO

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

Consideramos problemas de contorno o con valores en la frontera (PVF) de la forma


()

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)

u00 (x) = p(x)u0 (x) + q(x)u(x) + r(x), a t b


u(a) = , u0 (a) = 0 condiciones iniciales

V.28

DE ECUACIONES
V. SOLUCION

DIFERENCIALES ORDINARIAS

y
(PVI II)

v 00 (x) = p(x)v 0 (t) + q(x)v(x), a t b


v(a) = 0, v 0 (a) = 1 condiciones de frontera

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

y por la unicidad de la solucion se tendra v 0, lo cual esta en contradiccion con la condicion


v 0 (a) = 1.
0
00
Para la solucion numerica, se obtienen aproximaciones discretas w00 , w10 , . . . , wM
y w000 , w100 , . . . , wM
para u(x) y v(x) en [a, b] usando alguno de los metodos ya discutidos para problemas con valor
inicial, y luego se determina c como
0
wM
.
c=
00
wM

Con este valor, entonces la aproximacion discreta w0 , w1 , . . . , wM de y(x) esta dada por
wk = wk0 + cwk00

k = 0, 1, . . . , M .

V.10. PROBLEMAS DE CONTORNO

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];

También podría gustarte