Anda di halaman 1dari 6

Algoritmos bsicos para la resolucin de ecuaciones diferenciales ordinarias

A la hora de establecer algoritmos para la resolucin de ecuaciones diferenciales ordinarias es preciso tener en cuenta la casustica de cada problema. As se establece la divisin entre los problemas con condiciones iniciales y los problemas con condiciones de contorno. En los primeros los valores de la funcin solucin se van construyendo sucesivamente a partir de valores previamente calculados, comenzando en las condiciones iniciales. Los problemas con condiciones de contorno pueden resolverse, en su mayora, seleccionando la solucin correcta de entre todas las obtenidas con el apoyo de los algoritmos de condiciones iniciales. a) Problemas de condiciones iniciales. En lo que sigue se describen los fundamentos de los algoritmos ms sencillos para resolver una ecuacin diferencial ordinaria de primer orden sujeta a cierta condicin inicial. La generalizacin a sistemas de ecuaciones de primer orden y/o ecuaciones diferenciales de orden superior es inmediata. Consideremos una ecuacin diferencial del tipo:

y'(t) =

dy(t) = f[t, y(t)] dt

tattb

y(ta)=ya

Conocido el valor de la funcin en un punto yiy(ti), podemos calcular el valor yi+1 a partir del desarrollo en serie de Taylor alrededor de yi. Llamando hti+1-ti (en lo que sigue asumiremos que h es constante) se tiene:

h2 hn y(t ) = y(t ) + hy'(t ) + y''(t ) + L + y(n) (t ) + O(hn+1 ) i i i i i+1 2 n!


La aproximacin ms simple consiste en cortar el desarrollo en primer orden:

y(t ) = y(t ) + hy'(t ) + O(h2 ) i i i+1


de este modo se obtienen los valores de y(t) por propagacin a partir de y(ta). Este es el Mtodo de Euler que, utilizando la notacin ms habitual, puede reescribirse como:

wo ya

wi + 1 = wi + hf(ti, wi )

i = 0,L, N - 1

t t h b a N

El mtodo de Euler requiere muchos valores {es decir muchas evaluaciones de f[t,y(t)]} de h pequeos para obtener una precisin aceptable. Desgraciadamente el error aumenta linealmente con N y, por tanto, salvo para tanteos iniciales el mtodo de Euler es de poca utilidad. La solucin ms obvia consiste en retener trminos de orden superior en el desarrollo de Taylor mencionado.

wo ya

wi + 1 = wi + hT (n) (ti, wi )
donde:

i = 0,L, N - 1

h h2 hn - 1 (n - 1) T (n) (t , w ) f(t , w ) + f'(t , w ) + f''(t , w ) + L + f (t , w ) + O(hn ) i i i i 2 i i i i i i 2 n!


Sin embargo, el algoritmo directo requiere evaluaciones de la funcin f[t,y(t)] y de sus derivadas. Los algoritmos conocidos como Runge-Kutta simplifican en gran medida el clculo de T(n)(ti,wi), sin perder precisin, encontrando la respuesta a la siguiente pregunta: Es posible aproximar el valor de T(n)(ti,wi) a partir del clculo de la funcin derivada, f[tRK,yRK(tRK)], en varios puntos dentro del intervalo [ti,ti+1]?. Para explicar la idea consideremos T(2). Por definicin:
h f(t, y) f(t, y) T (2) (t, y) f(t, y) + + f(t, y) 2 t y

Por otra parte es fcil ver que dadas las constantes desconocidas a1, 1 y 1 se tiene:

a1f(t + 1, y + 1 ) a1 f(t, y) +

f(t, y) f(t, y) + 1 1 t y

Y, por comparacin, si a1=1, 1=

h h y 1= f(t, y): 2 2

h h T (2) (t, y) f[t + , y + f(t, y)] 2 2


Como consecuencia se obtiene el algoritmo de Runge-Kutta de orden 2 del punto medio:

wo ya

h h wi + 1 = wi + hf[ti + , wi + f(ti, wi )] 2 2

i = 0,L, N - 1

Es vlida esta tcnica para rdenes superiores?. La respuesta es (afortunadamente) s. Por ejemplo si pasamos a cuarto orden [T(4)(x,y)] puede repetirse un proceso similar (aunque bastante ms largo) al efectuado con T(2)(x,y) y as obtener el algoritmo de Runge-Kutta de orden 4 que es frecuentemente utilizado y que, de manera compacta se muestra a continuacin:

k h k2 hf(ti + , wi + 1 ) 2 2 k h k3 hf(ti + , wi + 2 ) 2 2 k4 hf(ti + 1, wi + k3 )

k1 hf(ti, wi )

wo ya

1 wi + 1 = wi + (k1 + 2k2 + 2k3 + k4 ) 6

i = 0,L, N - 1

El mtodo de Runge-Kutta mejora si se utilizan algoritmos ms refinados como el control de paso (h) adaptativo (que pueden estudiarse en algunos de los libros recomendados en la bibliografa). Aunque no es el mtodo definitivo puede usarse siempre que no se requiera una gran eficiencia computacional, algn mtodo ms sofisticado falle o no se conozca nada mejor. Los algoritmos de resolucin de una ecuacin diferencial ordinaria de primer orden con condiciones iniciales, pueden generalizarse directamente a un sistema de ecuaciones:

du (t) dt du (t) dt
2 1

=f [t, u1 (t), u2(t),Lum (t)] 1 =f [t, u1 (t), u2(t),Lum (t)] 2


M

=f [t, u1 (t), u2(t),Lum (t)] m dt u1 (ta ) = u1a , u2 (ta ) = u2a ,L, um (ta ) = uma ; ta < t < tb
resolviendo secuencialmente cada una de ellas. En particular debe tenerse en cuenta que las ecuaciones diferenciales de orden superior:
y(m) (t) dm y(t) dt
m

du (t)
m

= f[t, y(t), y'(t),L y(m - 1) (t)]

(m - 1) ; t <t<t y(ta ) = ya, y'(ta ) = y'a ,L, y(m - 1) (ta ) = ya a b

pueden ser convertidas en sistemas de ecuaciones de primer orden como sigue:

dy(t) = u2(t) dt dt du (t) dy'(t) 2 = = u3(t) dt dt


1

du (t)

du

dt du (t) dt
m

m -1

(t)

dy

(m - 2)

(t)

dy

(m - 1)

dt (t)

= um (t)

(m - 1) u1 (ta ) = y(ta ) = ya, u2(ta ) = y'(ta ) = y'a ,L, um (ta ) = y(m - 1) (ta ) = ya ; t <t<t a b

dt

= ym (t) = f[t, y(t), y'(t),L y(m - 1) (t)] = f[t, u1 (t), u2(t),Lum - 1 (t)]

Siendo:

u1 (t) y(t); u2 (t) y'(t); L ;um (t) y(m - 1) (t)


b) Problemas con condiciones de contorno. Para resolver este tipo de problemas pueden emplearse diferentes mtodos. El que va a esbozarse aqu es conceptualmente simple y de aplicacin general. Es el denominado mtodo del disparo. Considrese una ecuacin diferencial elemental como y(x)=6x cuya solucin debe satisfacer como condiciones y(0)=0 e y(1)=2. Los mtodos de condiciones iniciales basados en desarrollos de Taylor, propagan

los valores de la funcin y(x) a partir de la condicin inicial y(0). Es decir 2 nos permiten obtener funciones que satisfacen una de las y''(x)=6x condiciones de contorno aunque 3 y(x)=x +ax y(0)=0 y(1)=2 sin garanta de que la otra sea tambin satisfecha. En el caso simple que nos ocupa, el mtodo de Runge-Kutta nos proporcionara una familia de funciones y(x)=x3+ax de las que slo una (la que corresponde a a=1) satisfara la condicin y(1)=2. En la figura se representa esta situacin. La solucin podramos obtenerla 0 disparando desde y(0) con 0 1 diferente valores de a [es decir y(0)] hasta dar en el blanco alcanzando el valor requerido por la condicin de contorno en x=1. Obviamente esto puede hacerse manualmente por tanteo, pero tambin puede automatizarse. Analicemos paso a paso el algoritmo: 1) Dado que la ecuacin es de 2 orden, obtengamos el sistema asociado de ecuaciones de primer orden. Definiendo u1y(x) y u2y(x), las ecuaciones buscadas son: u1(x)=u2(x) u2(x)=6x con u1(0)=y(0)=0 y u2(0)=y(0)=ap. 2) Resolvamos el sistema para un cierto de valor de a (ap) utilizando un algoritmo de condiciones iniciales (por simplicidad de notacin el mtodo de Euler, aunque sea poco recomendable): u1(xi+1;ap)=u1(xi;ap)+hu2(xi;ap) u2(xi+1;ap)=u2(xi;ap)+6hx

hxi+1-xi; i=0,,N-1

3) Si u1(xN=1;ap)=y(1) hemos resuelto el problema. Normalmente este no ser el caso y deberemos cambiar el valor del parmetro a. Este

cambio puede hacerse muy fcilmente si se tiene en cuenta que el valor correcto del parmetro de disparo es una raz de la ecuacin u1(xN=1;a)-y(1)=0. As podemos obtener un nuevo valor ap+1 utilizando el mtodo de Newton-Raphson:

u x = 1; ap y( 1 ) ap+1 = ap 1 N du1 a da p
El problema puede ser calcular 1 ap , pero puede obtenerse con da relativa facilidad resolviendo un sistema de ecuaciones diferenciales ordinarias adicionales. 4) Con el nuevo valor se repiten los pasos 1) a 3) hasta que alcanza la convergencia deseada. Por supuesto el mtodo funcionar con una buena primera aproximacin para a1. El algoritmo general se esquematiza en el siguiente diagrama.

) ( )

du

( )