Solución de Ecuaciones Diferenciales Ordinarias

29 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

V

Soluci´

on de Ecuaciones

Diferenciales Ordinarias

V.1

Introducci´

on

V.1.1

Problema

Una ecuaci´on diferencial es una ecuaci´on que involucra una funci´on indeterminada y(t) y sus derivadasy0(t), y00(t), . . .junto concondiciones inicialeso defrontera. Una soluci´on para la ecuaci´on diferencial es una funci´on que satisface la ecuaci´on y las condiciones iniciales. Estas ecuaciones aparecen en el modelamiento matem´atico de todo tipo de sistemas. Por ejemplo, el ´angulo θ que un p´endulo forma con la vertical satisface la ecuaci´on diferencial

d2θ

dt2 +

g

Lsinθ = 0 con las condiciones iniciales

θ(0) =θ0, θ0(0) =θ00.

Aunque para algunas clases particulares de ecuaciones existen m´etodos para determinar soluciones, este no es el caso en general. Por lo tanto es importante la posibilidad de obtener soluciones num´ericas. El objetivo aqu´ı es estudiar algunos m´etodos para la soluci´on num´erica 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 y0(t) = dy(t)

dt =f(t, y(t)) con y(t0) =y0 (∗)

donde f es una funci´on definida sobre un subcojunto apropiado de R×R y con valor en R. Una soluci´on para (∗) en el intervalo [t0, t0+T] es una funci´ony: [t0, t0+T]→Rtal quey0(t) = f(t, y(t))

para t ∈[t0, t0+T] y y(t0) = y0. Geom´etricamente, f(t, y) especifica para cada (t, y) en el plano

t-y la pendiente que debe tener una soluci´on que pasa por ese punto. Ejemplo. Consideremos la ecuaci´on

dy

dt = 1−e

−t con y(0) = y

0.

(2)

Como la parte derecha de la ecuaci´on depende s´olo de t, se puede integrar y se obtiene y(t) = t+e−t +C donde C es una constante a determinar. Reemplazando t = 0, la condici´on inicial

implica que 1 +C=y0 y entonces la soluci´on es

y(t) = t+e−t+y0−1.

La siguiente figura, producida por el segmento de Matlab a continuaci´on, muestra la curva soluci´on y(t) para diferentes valores de la condici´on inicial y0. Bajo ciertas condiciones a ser

discutidas m´as adelante, para cada punto (t0, y0) existe una curva soluci´on ´unica que pasa por este.

Dos de estas curvas soluci´on son disyuntas o la misma.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 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 instrucci´on f=@(t,y0) t+exp(-t)+y0-1 define la funci´on f de dos variables t y y0 como se desea. Por otra parte, el primer par´ametro defplot, es la funci´on@(t) f(t,.1*i)de una s´ola variablet, la cual es la funci´onf con la segunda variable igual a.1*i. Alternativamente, se podr´ıa haber empleado la instrucci´oninline.

V.1.2

Soluci´

on Num´

erica

Los m´etodos que consideramos producen una aproximaci´on discreta de la soluci´on: pares (ti, wi)

donde t0, t1, t2, . . . , tM con tM = t0 +T, es una discretizaci´on del intervalo de tiempo [t0, t0 +T]

y w0, w1, . . . , wM es una aproximaci´on de y0 = y(t0), y1 = y(t1), . . . , yM = y(tM). Usualmente

todos los subintervalos [tk, tk+1] tienen la misma longitud. M´as precisamente, tk = t0+kh para

k = 0, . . . , M y donde h =T /M. En general estudiaremos m´etodos de diferenciade primer orden en que wk+1 est´a dado expl´ıcitamente en t´erminos de wk, k = 1,2, . . . , M, de la siguiente forma

(m´etodos expl´ıcitos de un paso)

wk+1 =wk+hΦ(tk, wk) (∗)

con condici´on inicial w0 = C0. La ecuaci´on (∗) es llamada ecuaci´on de diferencias ´o tambi´en f´ormula de avance. La funci´on Φ es llamada la funci´on incremental.

(3)

V.2. EXISTENCIA DE SOLUCIONES V.3

V.2

Existencia de Soluciones

Definici´on. Sea f(t, y) una funci´on definida en el rect´angulo R={(t, y)|a≤t≤b, c≤y≤d}.

Se dice quef satisface unacondici´on de Lipschitzcon respecto a la segunda variable si existeL >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|.

Sif satisface una condici´on de Lipschitz enR 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)∈Rcon|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 def con respecto a y.

Teorema V.1 Sea f(t, y) definida en un rect´angulo R como antes. Si existe L > 0 tal que para todo (t, y)∈R se tiene

|fy(t, y)| ≤L,

entonces f satisface la condici´on 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 ≤dy 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, ξ)| ≤Lentonces

|f(t, y1)−f(t, y2)| ≤L· |y1−y2|,

lo cual es la condici´on de Lipschitz. Ejemplo. Verifiquemos que

f(t, y) = 2 ty+t

2

et

satisface la condici´on de Lipschitz con respecto a la segunda variable para t ∈ [1,2]. Primero directamente, usando 2/t≤2 para t≥1,

|f(t, y1)−f(t, y2)|= 2 ty1+t 2et 2 ty2−t 2et = 2 t|y1−y2| ≤2|y1−y2|

Alterativamentefy(t, y) = 2/ty entonces|fy(t, y)| ≤2 parat≥[1,2]. As´ı, por el teorema anterior,

(4)

Ejemplo. Consideremosf(t, y) =|y|2/3. Esta funci´on no satisface la condici´on de Lipschitz con

respecto a y en regiones que contengan puntos cony= 0 porque, con y2 = 0 yy1 >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 implicar´ıa 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 selecci´on dey1, y2).

La importancia de la condici´on de Lipschitz condici´on radica en el siguiente teorema (y tambi´en se usa en el an´alisis del error de los m´etodos num´ericos).

Teorema V.2 Sea f(t, y)continua en un rect´anguloR (como antes), que satisface la condici´on de Lipschitz con respecto a la segunda variable en R, y sea (t0, y0)∈R. Entonces el PVI y0 =f(t, y),

y(t0) =y0, tiene una soluci´on ´unica en un subintervalo [t0, t0+δ] para alg´un δ >0.

Ejemplo. Si la condici´on de Lipschitz no se satisface, es posible que la soluci´on al PVI no sea ´

unica. Considere por ejemplo

y0(t) =y2/3, y(0) = 0.

Este PVI tiene las soluciones y(t) = 0 y y(t) = (t/3)3 lo cual se puede verificar f´acilmente. Otro ejemplo en que ninguna soluci´on es trivial (zero) es

y0(t) = 1 2 np t2+ 4yto, y(2) =1, con soluciones y(t) =−(t/2)2 y y(t) = 1t.

V.3

etodo de Euler

Consideramos un PVI de la forma

y0 =f(t, y) en [t0, t0+T] con y(t0) =C0

y para su soluci´on num´erica usamos la discretizaci´on del tiempo: tk =t0+khparak = 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 aproximaci´on de Euler se obtiene del desarrollo de Taylor y(t) = y(tk) +y0(tk)(t−tk) +

y00(ck)(t−tk)2

2 ,

donde ck ∈[tk, t], tomando t =tk+1, usando y0(tk) = f(tk, y(tk)), y despreciando el t´ermino de de

segundo orden; resulta entonces la aproximaci´on

(5)

V.3. M ´ETODO DE EULER V.5 Excepto ent0, en realidad no se conocey(tk) sino la aproximaci´on previa, as´ı que esta aproximaci´on

se traduce en la siguiente regla para calcular la aproximaci´on wk+1 de y(tk) en t´erminos de la

aproximaci´onwk de y(tk):

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

par k = 0,1,2, . . . , M −1, con la condici´on inicial w0 = C0. Geom´etricamente, la soluci´on entre

tk y tk+1 es aproximada por la l´ınea con pendientef(tk, wk), es decir, tangente a la curva soluci´on

que pasa por (tk, wk).

tk tk+1 y yk+1k y t0 0 t y 1 1

V.1: El segmento que conecta (tk, wk) con (tk+1, wk+1) es tangente a la curva soluci´on que pasa

por (tk, wk).

A continuaci´on se tiene la funci´on Matlab euler que implementa el m´etodo 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 ’f’

% - 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

y0 =Ry, y(0) =y0.

La soluci´on exacta es y(t) = y0eRt y nos interesa conocer la aproximaci´on que resulta de aplicar el

m´etodo de Euler. Este da la recurrencia

(6)

que tiene la soluci´on

wk = (1 +hR)ky0.

Esto es una buena aproximaci´on si hR es suficientemente peque˜no: Note que 1 +hR es la aproxi-maci´on de primer orden de ehR y entonces (1 +hR)k es una aproximaci´on de ehRk =eRt.

Ejemplo 1 Usamos el m´etodo de Euler para obtener una aproximaci´on para la soluci´on del PVI: dy

dt =y−t

2+ 1; y(0) = 0.5.

en [0,2], con M = 10. Note que aqu´ıf(t, y) = y−t2+ 1. Para la discretizaci´on del tiempo, los subintervalos son de longitud h = 2/10. Entonces el m´etodo de Euler resulta en la ecuaci´on 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 = 0.5 w1 = 1.2w0−0.2t20+ 0.2 = 1.2×0.5−0.2×0 2 + 0.2 = 0.6 + 0.2 = 0.8 w2 = 1.2w1−0.2t21+ 0.2 = 1.2×0.8−0.2×0.22+ 0.2 = 0.96−0.008 + 0.2 = 1.1520 w3 = 1.2w2−0.2t22+ 0.2 = 1.2×1.1520−0.2×0.4 2+ 0.2 = 1.38240.032 + 0.2 = 1.5504 .. .

y as´ı sucesivamente. A continuaci´on 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

(7)

V.4. AN ´ALISIS 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 0.1000 0.6500 0.6574 0.0074 0.2000 0.8140 0.8293 0.0153 0.3000 0.9914 1.0151 0.0237 0.4000 1.1815 1.2141 0.0325 0.5000 1.3837 1.4256 0.0419 0.6000 1.5971 1.6489 0.0519 0.7000 1.8208 1.8831 0.0624 0.8000 2.0538 2.1272 0.0734 0.9000 2.2952 2.3802 0.0850 1.0000 2.5438 2.6409 0.0971 1.1000 2.7981 2.9079 0.1098 1.2000 3.0569 3.1799 0.1230 1.3000 3.3186 3.4554 0.1367 1.4000 3.5815 3.7324 0.1509 1.5000 3.8437 4.0092 0.1655 1.6000 4.1030 4.2835 0.1805 1.7000 4.3573 4.5530 0.1957 1.8000 4.6040 4.8152 0.2111 1.9000 4.8405 5.0671 0.2266 2.0000 5.0635 5.3055 0.2420

La figura a continuaci´on 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 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 5 10 20 40 80

V.2: Error de la soluci´on para M = 5,10,20,40,80.

V.4

An´

alisis del Error

Se espera que el valor yk sea una buena aproximaci´on de la soluci´on exacta y(tk), as´ı que nos

(8)

discretizaci´on ek en tk (acumulado en los pasos 1 a k) como

ek=yk−wk

(recuerde que yk =y(tk)). Para el an´alisis resulta conveniente definir el error local de truncaci´on

en el paso k+ 1 como

εk+1 =

yk+1−(yk+hΦ(tk, yk))

h ,

es decir, la diferencia entre la soluci´on exacta entk+1 y el valor predecido por el m´etodo utilizando

la soluci´on exacta entk 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 funci´on de f, h y el m´etodo.

En el caso del m´etodo de Euler, con Φ(t, y) = f(t, y), tenemos de la ecuaci´on al comienzo de la secci´on que εk+1 = yk+1−(yk+hf(tk, yk)) h = y00(ck) 2 h.

As´ı que |εk+1| ≤Ch dondeC = maxky00(ck)/2. Es decir, para el m´etodo de Euler tenemos N = 1.

A continuaci´on hacemos un an´alisis m´as 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 funci´on incremental Φ(t, y)satisface la condici´on de Lipschitz con constante L con respecto a y. Entonces existe una constante C0 que depende de C y L tal que

|eM| ≤C0hN

Prueba. Para acotar el error global en t´erminos de los errores locales, tenemos la siguiente derivaci´on:

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)) = hεk+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, y0)| ≤L|y−y0|,

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| ≤ h k

X

j=0

(9)

V.5. M ´ETODO DE TAYLOR V.9 Ahora usando|εk+1−j| ≤ChN, la suma 1 +x+x2+· · ·+xk = (xk+1−1)/(x−1) parax6= 1,e0= 0 y la desigualdad 1 +x≤ex, v´alida parax >0 (se obtiene truncando la serie de Taylorex= 1 +x+x2+· · ·+xn+· · ·), obtenemos

|ek+1| ≤ ChN+1 1 + (1 +hL) + (1 +hL)2+· · ·+ (1 +hL)k = ChN+1(1 +hL) k+11 (1 +hL)−1 = C Lh N((1 +hL)k+11) ≤ C Lh N(1 +hL)k+1 C Lh NehL(k+1). En particular, para el error final|EM|entM se tiene

|eM| ≤

C Le

LThN dondeT =tM −t0=M hes el tiempo total de la soluci´on. Entonces

|eM| ≤C0hN dondeC0= (C/L)eLT.

Como ejemplo, en el m´etodo de Euler, si f(t, y) es Lipschitz en la segunda varible entonces el error total es O(h). Esto se observ´o en el ejemplo de la secci´on anterior (el error se reduce a la mitad al doblar M).

V.5

etodo de Taylor

El m´etodo de Euler usa la aproximaci´on de Taylor de primer orden. En general, es posible obtener mejores aproximaciones con aproximaciones de Taylor de ordenes m´as altos. La expansi´on de Taylor de orden N alrededor de t=tk se puede escribir como

y(tk+h) = y(tk) + N X j=1 y(j)(tk) j! h j + y (j)(t k) j! h N+1

Las derivadas y(j)(t) que aparecen en la expansi´on se pueden expresar en t´erminos de f(t, y) y sus

derivadas parciales partiendo de la ecuaci´on del PVI y0(t) =f(t, y) y en general y(j)(t) = d j−1 dtj−1f(t, y(t)). Por ejemplo, y00(t) = d 2 dt2y 0 (t) = d dtf(t, y(t)) = ∂f ∂t + ∂f ∂y dy dt =ft+f fy donde ft =∂f /∂t y fy =∂f /∂y, y(3)(t) = d dt(ft+f fy) = d dt ∂ ∂t(ft+f fy) +f ∂f ∂y(ft+fyf) = ftt+ftfy+f fty+f fyt+f fyyf +f fyfy = ftt+ftfy+ 2f fty+f2fyy+f fy2

(10)

Y as´ı sucesivamente. Es posible escribir una ecuaci´on general, pero no lo hacemos porque el c´alculo es m´as f´acil directamente para una funci´onf(t, y) concreta, como se ver´a en los ejemplos. Entonces podemos escribir y(tk+h)≈y(tk) +h TN(tk, yk) donde TN(t, y) = N X j=1 y(j)(t) j! h j−1 = N X j=1 f(j−1)(t, y) j! h j−1

Con esto, podemos escribir la ecuaci´on de diferencias del m´etodo de Taylor para las aproximaciones wk como

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

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

y0(t) = Ry(t) y00(t) = Ry0(t) =R2y(t) y000(t) = Ry00(t) = R3y(t) .. . y(j)(t) = Ry(j−1)(t) = Rjy(t) .. .

Entonces el m´etodo de Taylor de orden N aplicado a este PVI resulta en la f´ormula

wk+1 = wk+h N X j=1 Rjw k j! h j−1 = wk N X j=0 (Rh)j j! = w0 N X j=0 (Rh)j j! !k+1

La suma entre par´entesis es la aproximaci´on de Taylor de orden N para eRh y (eRh)k+1 = eRtk+1 mientras que la soluci´on exacta del PVI da y(tk+1) =y0eRtk+1.

Ejemplo. Consideremos de nuevo el PVI dy

dt =y−t

(11)

V.5. M ´ETODO DE TAYLOR V.11 con t∈[0,2] y M = 10. Como antes h = 0.2 y tk = 0.2k. Obtenemos las derivadas

y0(t) = y−t2+ 1 y00(t) = y0−2t=y−t2+ 1−2t=y−t2−2t+ 1 y000(t) = y0−2t−2 =y−t2+ 1−2t−2 = y−t2−2t−1 y(4)(t) = y0−2t−2 =y−t2−2t−1 .. . y(j)(t) = y−(t+ 1)2 para j ≥3

El m´etodo de Taylor de segundo, tercero y cuarto orden resulta en las f´ormulas

wk+1 = wk+h(wk−t2k+ 1) + h2 2 (wk−t 2 k−2tk+ 1) wk+1 = wk+h(wk−t2k+ 1) + h2 2 (wk−t 2 k−2tk+ 1) + h3 6(wk−(tk+ 1) 2) wk+1 = wk+h(wk−t2k+ 1) + h2 2 (wk−t 2 k−2tk+ 1) + h3 6((wk−(tk+ 1) 2)(1 + h 4)

respectivamente. Por ejemplo, usando el m´etodo de cuarto orden obtenemos

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

etc. Usando Matlab tenemos, comparando con la soluci´on exacta

(12)

>> 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 0.029298620919915 0.000701379080085 0.000034712413418 0.000001379080085 0.062087651179364 0.001712348820636 0.000084793265080 0.000003368820636 0.098540599804746 0.003135400195254 0.000155345676735 0.000006172023254 0.138749535753766 0.005103184246233 0.000252978994283 0.000010051356953 0.182683085770477 0.007786832629523 0.000386225575140 0.000015345926556 0.230130338631727 0.011406481816273 0.000566068291720 0.000022492243029 0.280626576577662 0.016244568368897 0.000806607344841 0.000032050732765 0.333355659802442 0.022662605832360 0.001125902214908 0.000044739210512 0.387022514193524 0.031122332440934 0.001547033614333 0.000061475100098 0.439687446214673 0.042212341751366 0.002099441584789 0.000083428635597

Implementaci´on Matlab. Note que la funci´on fija la longitud de df en 4; pero se puede modi-ficar f´acilmente para permitir m´as altos ordenes.

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

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

% 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));

(13)

V.6. M ´ETODO 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

etodo de Euler Modificado

Continuamos considerando el mismo PVI de primer orden y0(t) = f(t, y(t)), y(t0) =y0

para t ∈ [t0, t0 +T]. El m´etodo se basa en eliminar la derivada mediante integraci´on en ambos

lados de la ecuaci´on en el intervalo [tk, tk+1]

Z tk+1 tk y0(t)dt= Z tk+1 tk f(t, y(t))dt y entonces y(tk+1) = y(tk) + Z tk+1 tk f(t, y(t))dt.

Como no es posible evaluar la integral en la derecha, la idea aqu´ı es reemplazarla por una aprox-imaci´on. La aproximaci´on m´as directamente obtenible es simplemente hf(tk, y(tk)), lo cual nos

llevar´ıa de nuevo a la recurrencia del m´etodo de Euler. El m´etodo de Euler modificado emplea la regla del trapecio y entonces se obtiene

y(tk+1)≈y(tk) +

h

2(f(tk, y(tk)) +f(tk+1, y(tk+1))). Esto conduce a la ecuaci´on

wk+1 =wk+

h

2(f(tk, wk) +f(tk+1, wk+1)). (∗)

Esta ecuaci´on no da en forma expl´ıcitawk+1 en t´erminos de wk porquewk+1 aparece a la izquierda

de tal forma que puede no ser f´acil despejar y obtener una ecuaci´on expl´ıcita para wk+1. Para

corregir esto se emplea en la derecha la predicci´onw˜k+1 obtenida por el m´etodo de Euler

˜ wk+1 =wk+hf(tk, wk). Entonces se obtiene wk+1 =wk+ h 2(f(tk, wk) +f(tk+1, wk+hf(tk, wk))).

An´alisis del Error. Para el m´etodo del trapecio el (valor absoluto del) error est´a acotado por |y(2)(c

k)|

12 h

3

donde ck ∈ [tk, tk+1]. La otra fuente de error (predicci´on) es menor y por lo tanto se tiene que

|εk| =O(h2) (m´as adelante cuando veamos los m´etodos de Runge-Kutta confirmaremos esto). Si

el teorema sobre el error acumulado aplica, se tiene que el error total es E(h) =O(h2).

(14)

Implementaci´on Matlab. A continuaci´on est´a la funci´on Matlabque implementa el m´etodo de Euler modificado.

function H = eulerMod (f, a, b, ya, M)

% Entrada - f es la funcion introducida como una 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 - 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

y0 =Ry, y(0) =y0.

El m´etodo de Euler modificado resulta en la ecuaci´on de recurrencia wk+1 = wk+ h 2(Rwk+R(wk+hRwk)) = 1 +hR+1 2(hR) 2 wk

que tiene soluci´on

wk = 1 +hR+ 1 2(hR) 2 k w0.

Note que en este caso 1 +hR+ 12(hR)2 es una aproximaci´on de segundo orden de ehR. As´ı, es de

esperar que en general el error del m´etodo de Euler modificado sea menor que el error del m´etodo de Euler.

Ejemplo 1 Consideremos de nuevo el PVI dy

dt =y−t

2+ 1; y(0) = 0.5

con t ∈ [0,2] y M = 10. El m´etodo de Euler modificado resulta en las ecuaciones siguientes de predicci´on y correcci´on ˜ wk+1 = wk+h(wk−t2k+ 1) wk+1 = wk+ h 2((wk−t 2 k+ 1) + ( ˜wk+1−t2k+1+ 1))

(15)

V.6. M ´ETODO 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.04k2+ 1) wk+1 = wk+ h 2((wk−0.04k 2+ 1) + ( ˜w k+1−0.04(k+ 1)2+ 1))

Entonces, comenzando cony0 = 0.5, obtenemos los valores num´ericos

˜ 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 m´etodo de Euler modificado con el m´etodo de Euler. Y tambi´en paraM = 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 0 0.2000 0.8260 0.8293 0.0033 0.0293 0.4000 1.2069 1.2141 0.0072 0.0621 0.6000 1.6372 1.6489 0.0117 0.0985 0.8000 2.1102 2.1272 0.0170 0.1387 1.0000 2.6177 2.6409 0.0232 0.1827 1.2000 3.1496 3.1799 0.0304 0.2301 1.4000 3.6937 3.7324 0.0387 0.2806 1.6000 4.2351 4.2835 0.0484 0.3334 1.8000 4.7556 4.8152 0.0596 0.3870 2.0000 5.2331 5.3055 0.0724 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 0 0.1000 0.6570 0.6574 0.0004 0.0074 0.2000 0.8284 0.8293 0.0009 0.0153 0.3000 1.0137 1.0151 0.0013 0.0237 0.4000 1.2122 1.2141 0.0019 0.0325 0.5000 1.4232 1.4256 0.0024 0.0419 0.6000 1.6459 1.6489 0.0031 0.0519 0.7000 1.8794 1.8831 0.0037 0.0624 0.8000 2.1228 2.1272 0.0044 0.0734 0.9000 2.3750 2.3802 0.0052 0.0850 1.0000 2.6348 2.6409 0.0061 0.0971 1.1000 2.9010 2.9079 0.0070 0.1098 1.2000 3.1720 3.1799 0.0079 0.1230 1.3000 3.4464 3.4554 0.0090 0.1367 1.4000 3.7223 3.7324 0.0101 0.1509 1.5000 3.9978 4.0092 0.0113 0.1655 1.6000 4.2708 4.2835 0.0126 0.1805

(16)

1.7000 4.5390 4.5530 0.0140 0.1957

1.8000 4.7996 4.8152 0.0156 0.2111

1.9000 5.0499 5.0671 0.0172 0.2266

2.0000 5.2866 5.3055 0.0189 0.2420

Ejemplo: Soluci´on de la forma impl´ıcita. Regresemos a la ecuaci´on (∗), obtenida antes de reemplazar la predicci´on ˜yk+1:

wk+1 =wk+

h

2(f(tk, wk) +f(tk+1, wk+1)).

Esta es una relaci´on impl´ıcita parawk+1, la cual es posible en principio resolver para obtenerwk+1.

Dependiendo de la funci´on f, es posible que esto se pueda hacer anal´ıticamente en forma f´acil o no. En el caso negativo, se podr´ıa usar un m´etodo num´erico para determinar la soluci´on wk+1.

Consideremos por ejemplo el PVI del Ejemplo 0 arriba. En este caso f(t, y) =Ry y obtenemos wk+1=wk+ h 2(Rwk+Rwk+1) 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 m´etodo expl´ıcito de Euler modificado, el t´ermino que aparece aqu´ı

1 +hR/2 1−hR/2

tambi´en es una aproximaci´on de segundo orden para ehR, cuando hR es suficientemente peque˜no: Se puede probar que parahR ≤1,

1 +hR+1 2(hR) 2+1 8(hR) 3 1 +hR/2 1−hR/2 ≤1 +hR+ 1 2(hR) 2+1 2(hR) 3.

V.7

etodo de Runge-Kutta

Ahora estudiamos un m´etodo que permite obtener aproximaciones de ´ordenes m´as altos, al igual que el m´etodo de Taylor, pero evitando calcular derivadas. El m´etodo de Euler modificado ilustra que esto es posible en el caso de orden 2: tiene el mismo orden de aproximaci´on que el m´etodo de Taylor de segundo orden pero sin usar y00(t) = df(t, y)/dt. Integrando la ecuaci´on del PVI, como en la derivaci´on del m´etodo de Euler modificado, podemos utilizar otras f´ormulas de cuadratura, por ejemplo usando la regla del punto medio,

y(tk+1)≈y(tk) +hf tk+ h 2, y tk+ h 2 .

(17)

V.7. M ´ETODO DE RUNGE-KUTTA V.17 Para obtener una f´ormula expl´ıcita, empleamos una predicci´on ˜pk+1 paray tk+ h2

de la siguiente manera wk+1 = wk+hf tk+ h 2,p˜k+1 con ˜pk+1 = wk+ h 2f(tk, wk), ´ o simplemente wk+1 =wk+hf tk+ h 2, wk+ h 2f(tk, wk)

Este se denomina elm´etodo del punto medio. Al igual que el m´etodo de Euler modificado, el error de aproximaci´on local es O(h2).

V.7.1

Runge-Kutta de orden 2

La forma general de los m´etodos 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 aproximaci´on coincide con la aproximaci´on de Taylor de segundo orden. Usando la expansi´on 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)) +Qhf0fy(tk, y(tk)) +C1h2

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)) +Qhf0fy(tk, y(tk))) +O(h3)

= y(tk) + (A+B)hf(tk, y(tk)) +BP h2ft(tk, y(tk)) +BQh2f0fy(tk, y(tk)) +O(h3).

En comparaci´on, la aproximaci´on de Taylor de primer orden de y(tk+h) es

y(tk+h) = y(tk) +hy0(tk) + h2 2 y 00 (tk) +O(h3) = y(tk) +hf(tk, y(tk)) + h2 2 (ft(tk, y(tk)) +f(tk, y(tk))fy(tk, y(tk))) +O(h 3 ) = y(tk) +hf(tk, y(tk)) + h2 2 ft(tk, y(tk) + h2 2 f0fy(tk, y(tk))) +O(h 3)

Comparando con el resultado anterior, se observa que ambos son iguales hasta orden 2 si A+B = 1, BP = 1/2, BQ= 1/2.

(18)

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 m´etodos ya discutidos. Otra posibilidad es (iii) A = 1/4, B = 3/4, P =Q= 2/3 que corresponde a y(tk+h)≈y(tk) + h 4 f(tk, y(tk)) + 3f tk+ 2 3h, y(tk) + 2 3hf(tk, y(tk) . La f´ormula de diferencias correspondiente es

wk+1 =wk+ h 4 f(tk, wk) + 3f tk+ 2 3h, wk+ 2 3hf(tk, wk

y su error local es tambi´enO(h2).

V.7.2

Runge-Kutta de orden 4

En forma similar se pueden derivar m´etodos de cuarto orden:

yk+1 ≈yk+w1k1 +w2k2+w3k3 +w4k4 (∗)

donde w1, w2, w3, w4 son constantes y

k1 = hf(tk, yk)

k2 = hf(tk+A1h, yk+P1k1)

k3 = hf(tk+A2h, yk+Q1k1+Q2k2)

k4 = hf(tk+A3h, yk+R1k1+R2k2+R3k3)

dondeA1, A2, A3, P1, Q1, Q2, R1, R2, R3 son constantes. Comparando la aproximaci´on de Taylor de

cuarto orden con la f´ormula (∗) reemplazando losfi con aproximaciones de Taylor de orden tres en

dos variables se encuentran condiciones para las constantes. La soluci´on que usualmente se conoce como el m´etodo de Runge-Kutta de orden 4 es

yk+1 ≈yk+ 1 6(k1+ 2k2+ 2k3+k4) donde k1 = hf(tk, y(tk)) k2 = hf tk+ h 2, yk+ 1 2k1 k3 = hf tk+ h 2, yk+ 1 2k2 k4 = hf(tk+h, yk+k3)

Finalmente, reemplazando yk con la aproximaci´onwk, la ecuaci´on de diferencias del m´etodo de

Runge-Kutta, es

wk+1 =wk+

1

(19)

V.7. M ´ETODO DE RUNGE-KUTTA V.19 donde K1 = h·f(tk, wk) K2 = h·f tk+ h 2, wk+ 1 2K1 K3 = h·f tk+ h 2, wk+ 1 2K2 K4 = h·f(tk+h, wk+K3)

Una forma alternativa de interpretar esta f´ormula es como una aplicaci´on de la regla de Simpson en la integraci´on del PVI:

y(tk+1)−y(tk) = Z tk+1 tk f(t, y(t))dt = h 6 f(tk, y(tk)) + 4f tk+ h 2, y tk+ h 2 +f(tk+1, y(tk+1)) +O(h5) El t´ermino con coeficiente 4 se divide en dos mitades con coeficiente 2, y luego se usan predicciones adecuadas para y(tk+h2) yy(tk+1).

Ejemplo. Consideremos de nuevo el PVI y0 = y−t2 + 1 en [0,2] con y

0 = 0.5 y h = 0.2. La

f´ormula de diferencias de Runge-Kutta para este PVI es wk+1 =wk+ 1 6(K1+ 2K2+ 2K3+K4) donde K1 = 0.2·f(tk, wk) = 0.2 (wk−t2k+ 1) K2 = 0.2·f tk+02.2, wk+ 12K1 = 0.2 wk+ 12K1 − tk+ 02.2 2 + 1 K3 = 0.2·f tk+02.2, wk+ 12K2 = 0.2 wk+ 12K2 − tk+ 02.2 2 + 1 K4 = 0.2·f(tk+ 0.2, wk+K3) = 0.2 ((wk+K3)−(tk+ 0.2)2+ 1)

Calculemos el primer valor como ejemplo: w1 =w0+ 1 6(K1+ 2K2+ 2K3+K4) donde K1 = 0.2 w0−t20+ 1 = 0.2 (0.5 + 1) = 0.2·1.5 K2 = 0.2 w0+12K1 − t0+02.2 2 + 1 = 0.2 (0.5 + 0.1·1.5)−(0.1)2+ 1 = 0.2·1.64 K3 = 0.2 w0+12K2 − t0+02.2 2 + 1 = 0.2 (0.5 + 0.1·1.64)−(0.1)2+ 1 = 0.2·1.654 K4 = 0.2 (w0+K3)−(t0+ 0.2)2+ 1 = 0.2 (0.5 + 0.2·1.654)−(0.02)2+ 1 = 0.2·1.7908 y entonces w1 = 0.5 + 0.2 6 (1.5 + 2·1.64 + 2·1.654 + 1.7908) = 0.8292933

Usando Matlab se obtiene lo siguiente (en las columnas 3 y 4 aparecen los errores para los m´etodos de Runge-Kutta y Taylor de orden 4)

(20)

>> 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 0 0.200000000000000 0.829293333333333 0.000005287586582 0.000001379080085 0.400000000000000 1.214076210666667 0.000011440512698 0.000003368820636 0.600000000000000 1.648922017041600 0.000018582763146 0.000006172023254 0.800000000000000 2.127202684947944 0.000026850805823 0.000010051356953 1.000000000000000 2.640822692728752 0.000036393041726 0.000015345926556 1.200000000000000 3.179894170232231 0.000047368399497 0.000022492243029 1.400000000000000 3.732340072854980 0.000059943722683 0.000032050732765 1.600000000000000 4.283409498318406 0.000074289484037 0.000044739210512 1.800000000000000 4.815085694579434 0.000090573214091 0.000061475100098 2.000000000000000 5.305363000692654 0.000108949842021 0.000083428635597

Implementaci´on Matlab. La siguiente es la implementaci´on Matlab del m´etodo de Runge-Kutta 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 m´etodos 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

y=      y1 y2 .. . yn      y f(t,y) =      f1 f2 .. . fn      :R×Rn Rn

y el PVI y0 =f(t, y) por el PVI vectorial

(21)

V.8. SISTEMAS DE ECUACIONES V.21 el cual es equivalente al sistema de ecuaciones

y01(t) = f1(t;y1(t), y2(t), . . . , yn(t)) y02(t) = f2(t;y1(t), y2(t), . . . , yn(t)) .. . yn0(t) = fn(t;y1(t), y2(t), . . . , yn(t)) con yk(t0) = y0,k i= 1, . . . , n.

Soluci´

on Num´

erica

Los m´etodos de soluci´on 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 .. . yn,k      =yk≈wk=      w1,k w2,k .. . wn,k     

En general, loswk se determinan por medio de una f´ormula de diferencias para, k≥0,

wk+1 =wk+hΦ(tk,wk).

A continuaci´on describimos algunas de las extensiones para sistemas. Euler. El m´etodo de Euler es

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

Euler modificado. El m´etodo del punto medio es wk+1 =wk+ h 2f tk+ h 2, wk+ h 2f(tk,wk)

Taylor. El m´etodo de Taylor, de segundo orden como ejemplo, es wk+1 =wk+hf(tk,wk) +

h2

2f 0

(tk,wk)

Runge-Kutta. El m´etodo de Runge-Kutta de cuarto orden es (escribimos las ecuaciones con Ki’s en lugar defi’s para evitar confusi´on con las funciones componentes fi cuando se escriben las

ecuaciones escalares):

wk+1 =wk+

1

(22)

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) K2 = hf tk+ h 2, wk+ 1 2K1 K3 = hf tk+ h 2, wk+ 1 2K2 K4 = hf(tk+h, wk+K3)

Estas son ecuaciones vectoriales con n componentes. Para clarificaci´on escribimos la forma escalar de las ecuaciones: con i= 1,2, . . . , n,

wi,k+1 =wi,k + 1 6(K1,i+ 2K2,i+ 2K3,i+K4,i) donde K1,i = hfi(tk;w1,k, w2,k, . . . , wn,k) K2,i = hfi tk+ h 2;w1,k + 1 2k1,1, w2,k+ 1 2K1,2, . . . , wn,k+ 1 2K1,n K3,i = hfi tk+ h 2;w1,k + 1 2K2,1, w2,k + 1 2K2,2, . . . , wn,k+ 1 2K2,n K4,i = hfi(tk+h;w1,k+K3,1, w2,k+K3,2, . . . , wn,k+K3,n)

Ejemplo. En la pr´oxima secci´on.

Implementaci´on Matlab. La siguiente funci´on Matlab implementa el m´etodo 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

(23)

V.9. ECUACIONES DE ORDEN SUPERIOR V.23

V.9

Ecuaciones de Orden Superior

Una ecuaci´on diferencial de orden superior de la forma

y(m)(t) =f(t, y, y0(t), y00(t), . . . , y(m−1)(t)),

con condiciones iniciales

y(t0) =C0, y0(t0) = C1, . . . , y(m−1)(t0) = Cm−1

se puede resolver introduciendo funciones yk(t), k= 1, . . . , mtal que

yk(t) =y(k−1)(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) .. . ym0 1(t) = ym(t) ym0 (t) = f(t, y1(t), y2(t), . . . , ym(t))

con condiciones iniciales

y1(t0) =C0, y2(t0) =C1, . . . , ym(t0) =Cm−1.

Ejemplo. Para la ecuaci´on del p´endulo d2θ dt2 + g Lsinθ = 0 conθ(0) =θ0, θ 0(0) =θ0 0 definimos y1(t) = θ(t) y2(t) =θ0(t)

y se obtienen las ecuaciones

y01 = y2, y1(0) =θ0

y02 = −g

Lsiny1, y2(0) =θ 0

0

En forma vectorial, esto es

y0 =f(t;y), y(0) =y0 donde y= y1 y2 , f(t,y) = y2 −Lg siny1 , y0 = θ0 θ00

(24)

Ejemplo. Consideramos la ecuaci´on diferencial de segundo orden y00−2y0+y =tett, 0t1

y(0) = 0, y0(0) = 1

Se desea una aproximaci´on de y(0.1) con h = 0.1 usando diferentes m´etodos. Para comparaci´on, la soluci´on exacta es

y(t) = 1 6t

3ettet+ 2et2

de donde y(0.1) = 0.10000894

Sistema de primer orden equivalente: Introducimos y1, y2 con

y1(t) = y(t), y2(t) =y0(t).

Con esto tenemos el sistema, para t∈[0,1],

y01 =y2, y1(0) = 0

y02 = 2y2(t)−y1(t) +tet−t, y2(0) = 1

Forma vectorial: Con

y: RR2 t 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 ecuaci´on vectorial

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

0 1

Soluci´on – Euler: La f´ormula de diferencias es

wk+1 =wk+hf(tk,wk), conw0 = w1,0 w2,0 = 0 1 donde f(tk,wk) = w2,k 2w2,k −w1,k +tketk −tk . Para k= 0 w1 = w0+ 0.1f(t0,w0) = 0 1 + 0.1 w2,0 2w2,0−w1,0+ 0e0−0 = 0 1 + 0.1 1 2 = 0 1 + 0.1 0.2 = 0.1 1.2

(25)

V.9. ECUACIONES DE ORDEN SUPERIOR V.25 Entonces y(0.1) y0(0.1) = y1(0.1) y2(0.1) ≈y1 = 0.1 1.2 y y(0.1)≈0.1.

Soluci´on – Punto medio: La f´ormula de diferencias es wk+1 =wk+ h 2f tk+ h 2,wk+ h 2f(tk,wk) , conw0 = w1,0 w2,0 = 0 1 Para k= 0, w1 = w0+ 0.1 2 f t0 + 0.1 2 , w0+ 0.1 2 f(t0,w0) = 0 1 + 0.05f 0.05, 0 1 + 0.05 1 2 = 0 1 + 0.05f 0.05, 0.05 1.1 = 0 1 + 0.05 1.1 2(1.1)−0.05 + 0.05e0.05−0.05 = 0 1 + 0.05 1.1 2.1526 = 0 1 + 0.055 0.1076 = 0.055 1.1076 ≈ y(0.1) y0(0.1)

Soluci´on – Taylor 2do. orden: La f´ormula de diferencias es wk+1 =wk+hf(tk,wk) + h2 2 f 0 (tk,wk), conw0 = w1,0 w2,0 = 0 1 Calculando la derivada f0(t,y(t)) = d dt y2(t) 2y2(t)−y1(t) +tet−t = y20(t) 2y20(t)−y10(t) +et+tet1 = 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

obtenemos la f´ormula de diferencias f0(tk,wk) =

2w2,k −wk,1 +tketk −tk

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

(26)

Entonces w1 = = 0 1 + 0.1f(t0,w0) + 0.12 2 f 0 (t0,w0) = 0 1 + 0.1 w2,0 2w2,0−w1,0+ 0e0−0 + 0.005 2w2,0 −w1,0+t0et0 −t0 3w2,0−2w1,0+ 3t0et0 +et0−2t0−1 = 0.1 1.2 + 0.005 2 3 = 0.11 1.215 ≈ y(0.1) y0(0.1)

Soluci´on – Runge-Kutta. La f´ormula para w1 es (usando la notaci´on con fi’s en lugar deKi’s)

w1 =w0+ 1 6(K1+ 2K2+ 2K3+K4), con w0 = w1,0 w2,0 = 0 1 donde K1 = 0.1·f(t0,w0) = 0.1· 1 2 K2 = 0.1·f t0+ 0.1 2 , w0+ 1 2K1 = 0.1·f 0.05, 0 1 + 0.05 1 2 = 0.1· 1.1 2.1526 K3 = 0.1·f t0+ 0.1 2 , w0+ 1 2K2 = 0.1·f 0.05, 0 1 + 0.05 1.1 2.1526 = 0.1·f 0.05, 0.055 1.1076 = 0.1· 1.1076 2(1.1076)−0.055 + 0.05e0.050.05 = 0.1· 1.1076 2.1628 K4 = 0.1·f(t0+ 0.1, w0+ 1K3) = 0.1·f 0.1, 0 1 + 0.1 1.1076 2.1628 = 0.1·f 0.1, 0.1108 1.2163 = 0.1· 1.2163 2(1.2163)−0.1108 + 0.1e0.1 −0.1 = 0.1· 1.2163 2.3323

(27)

V.10. PROBLEMAS DE CONTORNO V.27 Entonces w1 = 0 1 + 0.1 6 1 2 + 2 1.1 2.1526 + 2 1.1076 2.1628 + 1.2163 2.3323 = 0.1105 1.2161 ≈ y(0.1) y0(0.1)

V.10

Problemas de Contorno

Consideramos problemas de contorno ocon valores en la frontera (PVF) de la forma (∗) y00=f(x, y, y0), a≤x≤b

y(a) =α, y(b) =β condiciones de frontera

Una soluci´on del PVF (∗) es una funci´on y(x) que satisface la ecuaci´on diferencial en [a, b] y las condiciones de frontera. El siguiente teorema establece condiciones de existencia y unicidad para la soluci´on del PVF (∗).

Teorema V.4 Sea R = {(x, y, y0) : a ≤ x ≤ b,−∞ < y, y0 < ∞} y f(x, y, y0) una funci´on continua en R y con derivadas fy y fy0 continuas en R. Si

fy(x, y, y0)>0 para todo (x, y, y0)∈R

y existe M >0 tal que

|fy0(x, y, y0)| ≤M para todo(x, y, y0)∈R,

entonces el PVF (∗) tiene una soluci´on ´unica 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, y0) =p(x)y0+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 soluci´on ´unica 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, y0)| ≤M en [a, b]).

V.10.1

etodo del Disparo para un PVF Lineal

Dado el PVF lineal con f(x, y, y0) como en (∗∗), consideramos los siguientes PVIs (PVI I) u00(x) = p(x)u0(x) +q(x)u(x) +r(x), a≤t≤b

(28)

y

(PVI II) v00(x) = p(x)v0(t) +q(x)v(x), a≤t≤b v(a) = 0, v0(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 soluci´on de y00(x) = p(x)y0(x) +q(x)y(x) +r(x): y00(x) = (u(x) +cv(x))00 = u00(x) +cv00(x) = (p(x)u0(x) +q(x)u(x) +r(x)) +c(p(x)v0(x) +q(x)v(x)) = p(x)(u0(x) +cv0(x)) +q(x)(u(x) +cv(x)) +r(x) = p(x)y0(x) +q(x)y(x) +r(x)

Ahora veamos que es posible determinarctal que las condiciones de frontera se satisfacen. Primero, enx=a cualquier cfunciona:

x(a) = u(a) +cv(a) =α+c·0 =α. En x=b, se tiene que para quey(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 ser´ıa una soluci´on del PVF

v00(x) = p(x)v0(x) +q(x)v(x), a≤t ≤b v(a) = 0, v(b) = 0

y por la unicidad de la soluci´on se tendr´ıa v ≡ 0, lo cual est´a en contradicci´on con la condici´on v0(a) = 1.

Para la soluci´on num´erica, se obtienen aproximaciones discretasw00, w01, . . . , wM0 yw000, w001, . . . , w00M para u(x) y v(x) en [a, b] usando alguno de los m´etodos ya discutidos para problemas con valor inicial, y luego se determina c como

c= β−w 0 M w00 M .

Con este valor, entonces la aproximaci´on discreta w0, w1, . . . , wM dey(x) est´a dada por

wk =w0k+cw

00

(29)

V.10. PROBLEMAS DE CONTORNO V.29 Implementaci´on Matlab. La funci´onlinshtrequiere que se pasen los sistemas de primer orden equivalentes a los dos PVIs I y II (por supuesto ser´ıa m´as f´acil pasar p(t), q(t), r(t), pero as´ı no es como la implementaci´on 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);

Figure

Actualización...

Referencias

Actualización...

Related subjects :