M¶etodos numericos en ecuaciones diferenciales

10
Tema 4 etodos Num´ ericos en Ecuaciones Diferenciales Ordinarias 4.1 Introducci´on Estudiaremos en este Tema algunos m´ etodos num´ ericos para resolver problemas de valor inicial en ecuaciones diferenciales ordinarias y en sistemas de e.d.o. 4.2 etodo de Euler El M´ etodo de Euler o de las Tangentes constituye el primer y m´as sencillo ejemplo de etodo num´ erico para la resoluci´on de un problema de valor inicial: y 0 = f (x, y) , y(x 0 )= y 0 donde suponemos adem´as que se verifican las hip´otesis del Teorema de Picard 1 , y en consecuencia existe soluci´on ´ unica para el problema. Interpretando la e.d.o. y 0 = f (x, y) como un campo de direcciones en el plano x - y y la condici´on inicial y(x 0 )= y 0 como un punto (x 0 ,y 0 ) de dicho plano, podemos aproximarlafunci´onsoluci´on y(x) por medio de la recta tangente a la misma que pasa por ese punto: y(x) = y 0 + f (x 0 ,y 0 )(x - x 0 ) 1 Consideraremos en general que la funci´on f (x, y) es diferenciable en un entorno del punto (x 0 ,y 0 ). Si bien es cierto que se trata de una condici´on m´as restrictiva de lo estrictamente necesario, en la pr´actica trabajaremos siempre con funciones de ese tipo. 59

Transcript of M¶etodos numericos en ecuaciones diferenciales

Page 1: M¶etodos numericos en ecuaciones diferenciales

Tema 4

Metodos Numericos en

Ecuaciones Diferenciales

Ordinarias

4.1 Introduccion

Estudiaremos en este Tema algunos metodos numericos para resolver problemas de valorinicial en ecuaciones diferenciales ordinarias y en sistemas de e.d.o.

4.2 Metodo de Euler

El Metodo de Euler o de las Tangentes constituye el primer y mas sencillo ejemplo demetodo numerico para la resolucion de un problema de valor inicial:

y′ = f(x, y) , y(x0) = y0

donde suponemos ademas que se verifican las hipotesis del Teorema de Picard1, y enconsecuencia existe solucion unica para el problema.

Interpretando la e.d.o. y′ = f(x, y) como un campo de direcciones en el planox− y y la condicion inicial y(x0) = y0 como un punto (x0, y0) de dicho plano, podemosaproximar la funcion solucion y(x) por medio de la recta tangente a la misma que pasapor ese punto:

y(x) ∼= y0 + f(x0, y0)(x− x0)

1Consideraremos en general que la funcion f(x, y) es diferenciable en un entorno del punto (x0, y0). Si

bien es cierto que se trata de una condicion mas restrictiva de lo estrictamente necesario, en la practica

trabajaremos siempre con funciones de ese tipo.

59

Page 2: M¶etodos numericos en ecuaciones diferenciales

60 TEMA 4

donde se ha utilizado que la pendiente de dicha tangente es: m = y′(x0) y, en conse-cuencia: m = f(x0, y0).Calculamos ası de manera aproximada el valor de la solucion y en el punto de abscisax1 como:

y(x1) ∼= y1 = y0 + f(x0, y0)(x1 − x0)

y con este punto (aproximado) ya calculado, podemos repetir el metodo para obtenerotro punto aproximado (x2, y2) de la forma:

y(x2) ∼= y2 = y1 + f(x1, y1)(x2 − x1)

y ası sucesivamente.Es habitual en este metodo tomar abscisas equiespaciadas, es decir, calcular la

solucion aproximada en puntos de la forma: xn = xn−1 + h = x0 + nh, siendo h elpaso del metodo. De esta forma se obtienen las formulas que nos determinan la solucionaproximada en la forma:

xn = xn−1 + h; yn = yn−1 + f(xn−1, yn−1) h

Desde el punto de vista geometrico, tenemos en definitiva que el Metodo de Euleraproxima a la funcion solucion por medio de una lınea poligonal, la aproximacion seratanto peor cuanto mayor sea en numero de pasos, es decir, cuanto mas “lejos” nosencontremos del punto inicial (x0, y0). Por otro lado, el error sera evidentemente tantomayor cuanto mas grande sea el “paso” del metodo, h.

Ejemplo: Resolveremos el problema de valor inicial{

y′ = x√

y

y(1) = 4

por el metodo de Euler con h = 0.1 para los puntos x = 1.1, 1.2, 1.3, 1.4 y 1.5.En este problema tenemos h = 0.1, (x0, y0) = (1, 4) y la funcion f(x, y) es: f(x, y) = x

√y.

Por tanto:yn = yn−1 + xn−1

√yn−1 h

Dado que el problema se puede resolver tambien de forma exacta, presentamos en la tabla y

grafica siguientes los resultados:

i xi yi Sol. Exacta0 1 4 41 1.1 4.2 4.212762 1.2 4.42543 4.452103 1.3 4.67787 4.719764 1.4 4.95904 5.017605 1.5 5.27081 5.34766 1.1 1.2 1.3 1.4 1.5

4.2

4.4

4.6

4.8

5

5.2

Page 3: M¶etodos numericos en ecuaciones diferenciales

METODOS NUMERICOS EN EDO 61

4.3 Metodos de Taylor

El Metodo de Euler que acabamos de describir no es mas que un caso particular de losmetodos de Taylor, que consisten de manera general en aproximar la solucion por supolinomio de Taylor de un orden determinado. Partiendo por tanto del P.V.I.:

y′ = f(x, y)y(x0) = y0

}

tal que presenta solucion unica y(x) en un entorno de x0 (solucion que suponemos ademasderivable n veces en dicho entorno), aproximaremos dicha funcion por su polinomio deTaylor de orden N :

y(x) ' y(x0)+y′(x0)(x−x0)+12y′′(x0)(x−x0)2+

13!

y′′′(x0)(x−x0)3+. . .+y(N)

N !(x−x0)N

y el error de aproximacion viene determinado por el resto de orden N + 1, de maneraque el error es proporcional a (x− x0)N+1.

Si fijamos una sucesion de puntos equiespaciados : x0, x1, x2, . . ., con xn+1 = xn + h,y denominamos (de manera similar a lo hecho en la seccion anterior) y0, y1, . . . a losvalores paroximados correspondientes de y(x), tendremos que:

yn+1 = yn + y′(xn)h +12y′′(xn)h2 + . . . +

1N !

y(N)(xn)hN

con un error en cada paso (error local2) proporcional a hN+1.Para poder aplicar el metodo necesitamos conocer las derivadas de la solucion (recorde-

mos que desconocida), pero teniendo en cuenta la propia ecuacion diferencial:

y′(xn) = f(xn, yn)

mientras que y′′(xn) puede ser calculada derivando:

y′′ =d

dxf(x, y) =

∂f

∂x+

∂f

∂y

dy

dx=

∂f

∂x+

∂f

∂yf(x, y)

y ası sucesivamente.Es evidente que el metodo de Taylor de orden uno no es mas que el Metodo de Euler

antes descrito. Analicemos con un ejemplo el Metodo de Taylor de orden dos:

Ejemplo: Apliquemos el metodo de Taylor de orden dos a la ecuacion y′ = cos(xy), con lacondicion inicial: y(0) = 1. La expresion a considerar sera:

y(xn+1) ' yn+1 = yn + y′(xn)h +12y′′(xn)h2

2En general se llama “error local” al cometido en cada uno de los pasos de un metodo numerico.

El error acumulado tras n pasos recibe el nombre de “error global” y si el local es proporcional a hp,

entonces el global sera proporcional a hp−1.

Page 4: M¶etodos numericos en ecuaciones diferenciales

62 TEMA 4

tendremos entonces:y′(xn) = f(x,yn) = cos(xnyn)

y′′ =d cos(xy)

dx= − sen(xy) y − sen(xy) y′ = − sen(xy)(y + cos(xy))

Y ası los primeros pasos de la resolucion seran (tomaremos h = 0.5):

x1 = x0 + h = 0.5

y1 = y0 + h cos(x0y0) +h2

2(− sen(x0y0)(y0 + cos(x0y0))) =

= 1 + 0.5 cos 0 +0.52

2(− sen 0(1 + cos(0))) = 1.5

x2 = x1 + h = 1

y2 = y1 + h cos(x1y1) +h2

2(− sen(x1y1)(y1 + cos(x1y1))) =

= 1.5 + 0.5 cos(0.5 1.5) +0.52

2(− sen(0.5 1.5)(1.5 + cos(0.5 1.5))) = 1.67569

y ası sucesivamente. El error local en esta aproximacion sera proporcional a h3 y por tanto elerror global lo sera a h2.

4.4 Metodos de Runge-Kutta

La idea general de los Metodos de Runge-Kutta es sustituir el Problema de Valor Inicial:

y′ = f(x, y)y(x0) = y0

}

por la ecuacion integral equivalente:∫ y

y0

dy =∫ x

x0

f(x, y(x)) dx ⇒ y = y0 +∫ x

x0

f(x, y(x)) dx

para proceder a aproximar esta ultima integral mediante un metodo numerico adecuado(recordemos que y(x) es desconocida). Si nuevamente planteamos el problema “paso apaso” tendremos:

yn+1 = yn +∫ xn+1

xn

f(x, y(x)) dx

4.4.1 Metodo de Runge-Kutta de segundo orden

La primera opcion que podemos aplicar es integrar mediante el metodo de los trapecios,es decir tomando:

∫ xn+1

xn

f(x, y(x)) dx ' 12

h (f(xn, yn) + f(xn+1, yn+1))

Page 5: M¶etodos numericos en ecuaciones diferenciales

METODOS NUMERICOS EN EDO 63

Al ser desconocida yn+1 en la expresion anterior, lo aproximaremos por yn+1, dondeyn+1 es la estimacion de yn+1 que resultarıa aplicando el metodo de Euler. Tendremosası: ∫ xn+1

xn

f(x, y(x)) dx ' 12

h (f(xn, yn) + f(xn+1, yn+1))

conyn+1 = yn + h f(xn, yn)

y llegaremos a la expresion del metodo:

yn+1 = yn +h

2(f(xn, yn) + f(xn+1, yn+1))

Lo normal es presentar el metodo con las expresiones siguientes:

k1 = h f(xn, yn) ; k2 = h f(xn+1, yn + k1)

yn+1 = yn +12

(k1 + k2)

Comparando este metodo con el metodo de Taylor de segundo orden, es posibledemostrar que el error local es tambien proporcional a h3 y, por tanto, el global lo es ah2.

4.4.2 Metodo de Runge-Kutta de tercer orden

Se trata de la misma idea pero integrando por el Metodo de Simpson, entonces:

∫ xn+1

xn

f(x, y(x)) dx 'h2

3

(f(xn, yn) + 4f(xn+ 1

2, yn+ 1

2) + f(xn+1, yn+1)

)

donde yn+1 e yn+ 12

son estimaciones, puesto que yn+1 e yn+ 12

no son conocidos.La estimacion de yn+ 1

2se hace por el metodo de Euler:

yn+ 12

= yn +h

2f(xn, yn)

mientras que la estimacion de yn+1 se pueden considerar varias opciones, por ejemplo:

yn+1 = yn + h f(xn, yn)

es decir el Metodo de Euler de nuevo, o por ejemplo:

yn+1 = yn + h f(xn+ 12, yn+ 1

2)

que consiste en variar el Metodo de Euler tomando la pendiente de la recta tangente enel punto medio en vez de la tangente en el punto propiamente dicha. Finalmente, lo mas

Page 6: M¶etodos numericos en ecuaciones diferenciales

64 TEMA 4

usual es tomar una combinacion de las dos opciones3:

yn+1 = yn + h(2 f(xn+ 1

2, yn+ 1

2)− f(xn, yn)

)

Podemos entonces resumir el Metodo de Runge-Kutta de tercer orden en la forma:

k1 = h f(xn, yn)

k2 = h f(xn +h

2, yn +

12

k1)

k3 = h f(xn + h, yn − k1 + 2k2)

yn+1 = yn +16

(k1 + 4k2 + k3)

Finalmente, anadir que el error local en el Metodo de tercer orden es proporcional ah4 y en consecuencia el global lo es a h3.

4.4.3 Metodo de Runge-Kutta de cuarto orden

Los Metodos de Runge-Kutta de cuarto orden se deducen de una manera similar a laexpuesta en la seccion anterior para el caso de tercer orden. Ahora se introduce unnuevo paso intermedio en la evaluacion de la derivada. Una vez mas se presentan variasopciones en la evaluacion y es posible ajustar de tal manera que se garantice el errorlocal de manera proporcional a h5 (es decir garantizando exactitud en el cuarto ordenen el polinomio de Taylor), lo cual lleva a un error global proporcional a h4. El Metodode cuarto orden mas habital es el determinado por las formulas siguientes

k1 = h f(xn, yn)

k2 = h f(xn +h

2, yn +

k1

2)

k3 = h f(xn +h

2, yn +

k2

2)

k4 = h f(xn + h, yn + k3)

yn+1 = yn +16

(k1 + 2k2 + 2k3 + k4)

que al igual que el metodo de tercer orden esta basado en el metodo de interacion deSimpson. Los errores local y global son en este caso proporcionales a h5 y h4 respecti-vamente.

3El razonamiento que lleva a tomar esta combinacion concreta, que no reproduciremos aquı, se basa

en tomar una combinacion generica:

yn+1 = yn + h(θ f(xn, yn) + (1− θ)f(xn+ 1

2, yn+ 1

2))

y optimizar el valor de θ imponiendo exactitud en la formula de Taylor al tercer orden, ello lleva a que

necesariamente θ = −1.

Page 7: M¶etodos numericos en ecuaciones diferenciales

METODOS NUMERICOS EN EDO 65

Ejemplo: Resolver por un metodo de Runge-Kutta de cuarto orden el problema de valor inicial:

y′ = x2 − 3y ; y(0) = 1

en el intervalo 0 ≤ x ≤ 0.4, con h = 0.1.

Tenemos que x0 = 0, y0 = 1, y f(x, y) = x2 − 3y. Para x1 = 0.1 l ordenada correspondientesera:

y1 = 1 +0.16

(k1 + 2k2 + 2k3 + k4)

conk1 = f(x0, y0) = 02 − 3 1 = −3

k2 = f(x0 +h

2, y0 +

h

2k1) = (0 +

0.12

)2 − 3(1 +0.12

(−3)) = −2.5475

k3 = f(x0 +h

2, y0 +

h

2k2) = (0 +

0.12

)2 − 3(1 +0.12

(−2.5475)) = −2.61538

k4 = f(x0 + h, y0 + h k3) = (0 + 0.1)2 − 3(1 + 0.1(−2.61538)) = −2.20539

y ası:y1 = 0.741148

De manera analoga se determinan los puntos:

(x2, y2) = (0.2, 0.551151) ; (x3, y3) = (0.3, 0.413894) ; (x4, y4) = (0.4, 0.317435)

La solucion exacta es:

y =2527

e−3x +13

(x2 − 2

3x +

29

)

de manera que:

y(0.1) = 0.741127 ; y(0.2) = 0.551121 ; y(0.3) = 0.413860 ; y(0.4) = 0.317402

4.5 Estabilidad

Para finalizar esta seccion, analizaremos el comportamiento de Metodo de Euler enalgunas situaciones, que motivaran la necesidad de introducir metodos mas precisos.

Ademas del error propio del metodo (local en h2 y global en h), lo cual no es enprincipio excesivamente grave si es posible reducir h a voluntad (aunque ello conllevaerrores considerables de redondeo y una sobrecarga en el tiempo de computacion), existeun problema serio asociado al metodo y es su inestabilidad. Veamos el siguiente ejemplo:

Consideremos la ecuacion de Malthus con constante negativa:

y′ = −α y ; y(0) = y0

Page 8: M¶etodos numericos en ecuaciones diferenciales

66 TEMA 4

con α e y0 ambas positivas. La solucion exacta es sencilla:

y(t) = y0 e−αt

El Metodo de Euler para este caso conduce a la expresion:

yn+1 = yn − α yn h = (1− αh) yn

Es facil comprobar que si αh < 1, entonces la solucion numerica es decreciente y positiva,como ocurre en la solucion real exacta, pero si αh > 1, entonces el signo de la solucionse va alternando y, mas aun, si αh > 2, entonces la magnitud de la solucion se vaincrementando en cada paso (o sea resulta creciente en valor absoluto), y la solucionoscila. Este es un comportamiento tıpico de lo que se conoce en Matematicas comoinestabilidad del metodo.

4.5.1 Metodo de Euler Modificado

Veremos a continuacion una variante del Metodo de euler, llamado habitualmente Metodode Euler Modificado. Se trata de un metodo mas preciso que el de Euler y ademas masestable.

La idea fundamental del metodo modificado es usar el metodo de los trapecios paraintegrar la ecuacion y′ = f(x, y). Tomaremos ası, en el intervalo [x0, x− 1]:

y′ = f(x, y(x)) ⇔∫ y1

y0

dy =∫ x1

x0

f(x, y(x))dx ' (x1 − x0)2

(f(x0, y0) + f(x1, y1))

Repitiendo el razonamiento, tendremos

yn+1 = yn +h

2(f(xn+1, yn+1) + f(xn, yn))

Si la funcion f es lineal en la variable y, entonces es posible despejar facilmente yn+1

en la ecuacion anterior. Si no es lineal, entonces necesitamos un metodo numerico paracalcular la correspondiente yn+1, tıpicamente se utiliza el metodo de las sustitucionessucesivas.

Veamos un par de ejemplos para aclarar estas ideas:

Ejemplo 1: Si consideramos la ecuacion lineal:

y′ = ay + cos x

entonces:

yn+1 = yn+h

2(ayn+1 + cos xn+1 + ayn + cos xn) ⇒ yn+1 =

1 + ah2

1− ah2

+h2

1− ah2

(cosxn+1 + cos xn))

Page 9: M¶etodos numericos en ecuaciones diferenciales

METODOS NUMERICOS EN EDO 67

Ejemplo 2: Tomemos ahora el siguiente problema de valor inicial basado en una ecuacion nolineal:

y′ = −y32 + 1 ; y(0) = 10

El metodo requerira ahora la resolucion de:

yn+1 = yn +h

2

(−(yn+1)

32 − (yn)

32 + 2

)

4.6 Metodo Numericos para Sistemas

Los metodos de Euler y de Runge-Kutta que hemos planteado se aplican de manerasencilla a sistemas de ecuaciones de primer orden, y, en consecuencia, a ecuaciones deorden superior al primero.

Comencemos con el Metodo de Euler aplicado a un sistema de dos ecuaciones deprimer orden:

dxdt = f(t, x, y)dydt = g(t, x, y)

x(0) = x0

y(0) = y0

la extension natural del metodo ya expuesto nos conduce a las expresiones:

tn+1 = tn + h

xn+1 = xn + h f(tn, xn, yn)yn+1 = yn + h g(tn, xn, yn)

Ejemplo: Dado el problema de valor inicial:

y′′ − 0.05 y′ + 0.15 y = 0, y′(0) = 0, y(0) = 1

calcular y(1) e y′(1) utilizando el Metodo de Euler con h = 0.5.Si introducimos una nueva variable dependiente: z = y′, y pasamos por tanto de un problema

de segundo orden en variables (t, y) a uno con tres variables (t; y, z) tendremos el sistema deecuaciones de primer orden:

y′ = z

z′ = 0.05z − 0.15y

y(0) = 1z(0) = 0

Las expresiones del metodo seran entonces:

yn+1 = yn +h f(tn, yn, zn) = yn +h zn , zn+1 = zn +h g(tn, yn, zn) = yn +h (0.05zn−0.15yn)

Y ası, para t1 = t0 + h = 0 + 0.5 = 0.5:

y1 = y0 + h z0 = 1 , z1 = z0 + h (0.05z0 − 0.15y0) = −0.075

Page 10: M¶etodos numericos en ecuaciones diferenciales

68 TEMA 4

y para t2 = 1:

y2 = y1 + h z1 = 0.96250 , z2 = z1 + h (0.05z1 − 0.15y1) = −0.15187

Finalmente, plantearemos en un ejemplo la aplicacion de un metodo de Runge-Kuttade cuarto orden a un sistema de ecuaciones, siendo extensible dicho planteamiento a otrosmetodos y por supuesto a otro tipo de sistemas.

Ejemplo: Planteemos la resolucion del sistema:

dxdt = −4x + 3y + 6dydx = −2x + y + 3

}

con las condiciones iniciales: x(0) = y(0) = 0 por un metodo de Runge-Kutta de cuarto orden:

t0 = 0 , x0 = y0 = 0

x1 = x0 +h

6(k1 + 2k2 + 2k3 + k4) ; y1 = y0 +

h

6(l1 + 2l2 + 2l3 + l4)

k1 = f(t0, x0, y0) = −4x0 + 3y0 + 6

l1 = g(t0, x0, y0) = −2x0 + y0 + 3

k2 = f(t0 +h

2, x0 +

h

2k1, y0 +

h

2l1)

l2 = g(t0 +h

2, x0 +

h

2k1, y0 +

h

2l1)

k3 = f(t0 +h

2, x0 +

h

2k2, y0 +

h

2l2)

l3 = g(t0 +h

2, x0 +

h

2k2, y0 +

h

2l2)

k4 = f(t0 + h, x0 + hk3, y0 + hl3)

l4 = g(t0 + h, x0 + hk3, y0 + hl3)