Está en la página 1de 18

Matemticas Especiales

Daniel H. Cortes C

Mtodos Numricos para Ecuaciones Diferenciales Ordinarias

Introduccin
Muchos fenmenos fsicos se pueden describir mediante ecuaciones diferenciales ordinarias. Por ejemplo la cada libre de un cuerpo en un medio viscoso, el movimiento de un sistema masa resorte, la oscilacin de un pndulo, entre muchos otros. En algunos casos la ecuacin o el sistema de ecuaciones diferenciales es lineal y su solucin analtica puede encontrarse fcilmente mediante varios mtodos matemticos. Sin embargo, existen fenmenos que son descritos por ecuaciones diferenciales no son lineales, por ejemplo, la oscilacin del pndulo. Una alternativa para solucionar ecuaciones diferenciales lineales o no lineales son los mtodos numricos. Los mtodos Runge-Kutta estn entre los ms utilizados para la solucin de estos problemas. Aunque existen otros mtodos numricos para la solucin de ecuaciones diferenciales ordinarias como el mtodo de los residuos ponderados y las diferencias finitas, estos mtodos utilizan algoritmos complicados y algunos estn restringidos a ecuaciones diferenciales lineales. Debido a que los mtodos Runge-Kutta son ms sencillos y se pueden aplicar a una gran variedad de problemas, en este curso no se incluirn otros mtodos. Los mtodos Runge-Kutta tienen muchas variaciones. Por ejemplo, estn los mtodos de paso fijo, de paso variable, de orden superior, etc. Debido a las limitaciones de tiempo, en este curso se dictarn los mtodos ms comunes y bsicos y queda por parte de los estudiantes estudiar las alternativas restantes.

Ecuaciones Diferenciales Ordinarias


La ecuacin que describe las vibraciones libres de un sistema masa resorte con amortiguamiento es: m dx d 2x + c + kx = 0 , 2 dt dt (5.1)

Matemticas Especiales

Daniel H. Cortes C

donde m es masa y c es el coeficiente de amortiguamiento y k es la constantes del resorte. Esta ecuacin, la cual se compone de una funcin no conocida y sus derivadas, se denomina ecuacin diferencial. La cantidad a la cual x es derivada, t, se llama Variable Independiente. Cuando la funcin slo involucra una variable dependiente, la ecuacin es llamada Ecuacin Diferencial Ordinaria. Esto contrasta con las Ecuaciones Diferenciales Parciales en las que la funcin desconocida es funcin de varias variables. Las ecuaciones diferenciales tambin se clasifican segn su orden, el cual est determinado por la derivada de ms alto orden presente en la ecuacin. Por ejemplo, la ecuacin (5.1) es d 2x una ecuacin diferencial ordinaria de segundo orden, debido al trmino 2 . dt Las ecuaciones diferenciales ordinarias de orden superior se pueden descomponer en un sistema de ecuaciones diferenciales de primer orden. Para mostrar este procedimiento se utilizar el siguiente ejemplo.

Ejemplo 1 Descomponga la siguiente ecuacin diferencial ordinaria en un sistema de ecuaciones de primer orden.
y ' ' '+5 y ' '+6 y '+10 y = 0

Solucin La ecuacin anterior es una ecuacin diferencial ordinaria de orden 3. Si se define:


y ' = g y y ' ' = g ' = q , la ecuacin diferencial se puede escribir mediante el siguiente sistema de ecuaciones:

q '+5q + 6 g + 10 y = 0 g'= q y' = g

El sistema anterior se compone de tres ecuaciones cada una de primer orden.

Ecuaciones diferenciales ordinarias lineales y no lineales Se dice que una ecuacin diferencial ordinaria es lineal cuando la funcin o sus derivadas estn multiplicadas solamente por funciones de la variable independiente. Cuando en la ecuacin diferencial se encuentran potencias de la funcin o sus derivadas y/o multiplicaciones entre las derivadas la ecuacin es no lineal.

Matemticas Especiales

Daniel H. Cortes C

Un ejemplo de una ecuacin diferencial ordinaria no lineal se observa en la ecuacin de movimiento del pndulo (figura 5.1).

Figura 5.1. Pndulo Simple La ecuacin de movimiento del pndulo est dada por la ecuacin (5.2). En la cual el trmino sen( ) hace que la ecuacin sea no lineal. d 2 g + sen( ) = 0 dt 2 L (5.2)

Si se considera que el ngulo slo toma valores pequeos, el trmino sen( ) puede aproximarse a . Por lo tanto la ecuacin diferencial no lineal (5.2) se convierte en una lineal, as: d 2 g + = 0. dt 2 L (5.3)

Aunque la linearizacin es una herramienta muy valiosa para resolver problemas en ingeniera, no es adecuada en algunas situaciones. Por ejemplo, cuando se quiere analizar el movimiento del pndulo para grandes desplazamientos. En estos casos los mtodos numricos ofrecen una alternativa fcil para obtener la solucin aproximada de este problema.

Matemticas Especiales

Daniel H. Cortes C

Mtodos Runge-Kutta
Todos los mtodos que se vern en esta seccin se aplicarn a la solucin se ecuaciones diferenciales ordinarias de primer orden, ya que todas la ecuaciones diferenciales ordinarias se pueden descomponer en sistema de ecuaciones diferenciales de primer orden. En general las ecuaciones diferenciales de primer orden se puede expresar de la forma:
dy = f ( x, y ) , dx

(5.4)

con condiciones de borde y ( x0 ) = y 0 . La base de los mtodos Runge Kutta son las series de Taylor, la cual nos permite encontrar el valor de una funcin en punto x si se conocen los valores de la funcin y sus derivadas en un punto a. La serie de Taylor se expresa de la siguiente manera:
y ( x) = y (a ) + y ' ( x)( x a ) + 1 1 y ' ' (a )( x a ) 2 + K + y n (a )( x a ) n . 2! n!

(5.5)

El mtodo Runge-Kutta ms simple es el mtodo de Euler, el cual toma solamente los dos primeros trminos de la serie de Taylor. Mtodo de Euler En el mtodo de Euler se divide el rango en el cual se quiere conocer la solucin en intervalos de longitud h y se halla el valor de la funcin al final de cada uno de los intervalos (Figura 5.2). Si se consideran los dos primeros trminos de la serie de Taylor, el valor de la funcin en los puntos x1 y x2 se puede obtener de forma aproximada de la siguiente manera: y1 = y ( x1 ) = y 0 + f ( x 0 , y 0 )h ,

y 2 = y1 + f ( x1 , y1 )h ,
y para el trmino i simo se tiene: y i = y i 1 + f ( xi 1 , y i 1 )h . (5.6)

El mtodo de Euler se puede ilustrar grficamente mediante la figura 5.3. El error que se induce en la solucin mediante el mtodo de Euler se debe a que slo se toman los dos primeros trminos de la serie de Taylor, por lo tanto el error de truncamiento es proporcional a h 2 (figura 5.4), es decir: (5.7) y i = y i 1 + f i 1 h + Oh 2 .

Matemticas Especiales

Daniel H. Cortes C

Figura 5.2 Divisin del rango en que se desea conocer la solucin

Figura 5.2 Mtodo de Euler

Figura 5.3 Error en el mtodo de Euler

Matemticas Especiales

Daniel H. Cortes C

Este mtodo puede ser fcilmente programado para obtener la solucin a cualquier problema. A continuacin se observa un programa hecho en Matlab que soluciona ecuaciones diferenciales ordinarias de primer orden utilizando el mtodo de Euler:
function y = euler(x0,y0,xf,h) x = x0:h:xf; % arreglo con los valores de x y = zeros(1,length(x)); % arreglo que va a contener los valores de y y(1) = y0; % se asigna la condicin inicial en la posicin 1 for i = 2:length(x) y(i)=y(i-1) + pendiente(x(i-1),y(i-1))*h; end plot(x,y,'r-*')

donde en la lnea 6 la funcin pendiente es un programa con el cual se obtiene el valor de la funcin f i 1 de la ecuacin (5.6).

Ejemplo 2 Solucionar de forma numrica y analtica la ecuacin diferencial ordinaria:


dy = 2 x 3 + 12 x 2 20 x + 8.5 dx

con condiciones de iniciales y(0) = 1 y donde x vara de 0 a 4. Solucin La solucin analtica en este caso puede ser fcilmente hallada mediante integracin directa, as: y = 0.5 x 4 + 4 x 3 10 x 2 + 8.5 x + 1 . La funcin pendiente se puede programar de la siguiente manera:
function f = pendiente(x,y) f = -2*x^3 + 12*x^2 - 20*x + 8.5;

Para h = 0.5 y h = 0.1 se realiz la siguiente comparacin:

Matemticas Especiales

Daniel H. Cortes C

En donde se puede observar el efecto que tiene el paso sobre la aproximacin de la solucin.

Mtodo de Hen El mtodo de Euler se conoce como un mtodo predictor solamente, ya que no realiza una correccin de los valores encontrados. El mtodo de Hen es una mejora al mtodo de Euler, el cual incluye correcciones del valor yi encontrado en cada paso. El mtodo de Hen se puede resumir en los siguientes pasos: 1. 2. 3. 4. 5. realizar una prediccin inicial del valor yi usando el mtodo de Euler calcular la pendiente (fi) en el punto xi calcular el promedio de las pendientes fi-1 y fi Predecir nuevamente el valor de yi usando esta nueva pendiente Repetir los pasos 2, 3 y 4 las veces que se desee

El valor de la funcin en el punto x1 se puede obtener de forma aproximada de la mediante el mtodo de Hen as:
y10 = y 0 + f ( x 0 , y 0 ) h , (Prediccin inicial)

(5.8) (5.9) (5.10)

f ( x0 , y 0 ) + f ( x1 , y10 ) h , (Primera correccin) 2 1 f ( x0 , y 0 ) + f ( x1 , y1 ) y12 = y 0 + h , (Segunda correccin) 2


1 y1 = y 0 +

Matemticas Especiales

Daniel H. Cortes C

donde el superndice indica el nmero de correcciones realizadas. En forma general, el mtodo de Hen se puede formular de la siguiente manera:
y i0 = y i 1 + f ( xi 1 , y i 1 ) h , (Prediccin)

(5.11) (5.12)

y in = y i 1 +

f ( xi 1 , y i 1 ) + f ( xi , y 2

n 1 i

h . (n-sima correccin)

Aunque el valor exacto de la funcin en punto xi se alcanza cuando las correcciones son infinitas1, en la prctica no es posible realizar ese nmero de correcciones, por lo tanto se debe definir un criterio el cual nos indique cuando se ha obtenido una valor suficientemente exacto. Un criterio comnmente usado es el siguiente:

yin y in 1 > 100% . y in

(5.13)

Este criterio nos indica que las correcciones se realizarn hasta que la diferencia porcentual entre las dos ltimas correcciones sean menores que un valor definido por el usuario. Un programa hecho en Matlab que soluciona ecuaciones diferenciales ordinarias de primer orden utilizando el mtodo de Hen puede ser:
function y = heun(x0,y0,xf,h,e) x = x0:h:xf; y = zeros(1,length(x)); y(1) = y0; for i = 2:length(x) er = 100; y0 = y(i-1) + pendiente(x(i-1),y(i-1))*h; while er > e y(i) = y(i-1) + (pendiente(x(i-1),y(i-1)) + pendiente(x(i),y0))*h/2; er = abs((y(i) - y0)/y(i))*100 y0 = y(i); end end plot(x,y,'+-')

Una comparacin del mtodo de Hen con el mtodo de Euler usando la ecuacin diferencial del ejemplo 2 se muestra en la Figura 5.4.

Esto ocurrira siempre que y dependa de y. En caso contrario, las correcciones no tendran ningn efecto sobre la precisin de la solucin.

Matemticas Especiales

Daniel H. Cortes C

Figura 5.4. Comparacin entre los mtodos de Euler y Hen Mediante esta comparacin se puede observar que el mtodo de Hen es ms preciso an cuando se utiliza el mismo paso (h = 0.5).

Mtodo General

Los mtodos Runge-Kutta se pueden escribir de forma general de la siguiente manera: y i = y i 1 + ( xi 1 , y i 1 , h)h , (5.14)

donde ( xi 1 , yi 1 , h) se conoce como funcin de incremento, la cual puede interpretarse como una pendiente equivalente sobre el intervalo. La funcin de incremento se puede escribir as:

= a1 k1 + a 2 k 2 + L + a n k n ,

(5.15)

donde n representa el orden mtodo, los ai son constantes y los ki se definen de la siguiente manera:
k1 = f ( xi 1 , y i 1 ) k 2 = f ( xi 1 + p1 h , y i 1 + q11 k1 h) k 3 = f ( xi 1 + p 2 h , y i 1 + q 21 k1 h + q 22 k 2 h) k n = f ( xi 1 + p n 1 h , y i 1 + q n 1,1 k1 h + L + q n 1,n 1 k n 1 h),

(5.16)

Matemticas Especiales

Daniel H. Cortes C

donde, p y q son constantes. El mtodo de Euler (5.6) es un mtodo Runge-Kutta de primer orden donde, es decir = a1 k1 , donde a1 = 1 . Por lo tanto: y i = y i 1 + ( xi 1 , y i 1 , h)h = y i 1 + a1 k1 h = y i 1 + f ( xi 1 , y i 1 )h . (5.17)

El mtodo de Hen (5.11)-(5.12), cuando usa una sola correccin (n = 1), se puede considerar como un mtodo Runge-Kutta de segundo orden. En este caso a1 = a2 = 1/2 y p1 = q11 = 1. Por lo tanto la ecuacin (5.14) se puede escribir de la siguiente manera:
y i = y i 1 + (a1 k1 + a 2 k 2 )h = y i 1 + ( 1 2 f ( xi 1 , y i 1 ) + 1 2 f ( xi 1 + h , y i 1 + f ( xi 1 , y i 1 )h) )h = y i 1 + f ( xi 1 , y i 1 ) + f ( xi , y i0 ) h 2

(5.18)

El orden de los mtodos Runge-Kutta est relacionado con el error de truncamiento. Por ejemplo, para los mtodos de segundo orden el error de truncamiento es Oh 3 , en general se puede decir que un mtodo Runge-Kutta es orden n tiene un error de truncamiento igual a Oh n +1 .

Mtodos Runge-Kutta de Cuarto Orden

El mtodo Runge-Kutta ms popular de cuarto orden se conoce como mtodo RK clsico de cuarto orden. Este mtodo se define de la siguiente manera:
1 y i = y i 1 + (k1 + 2k 2 + 2k 3 + k 4 )h , 6

(5.19)

donde,

k1 = f ( xi 1 , y i 1 ) k 2 = f ( xi 1 + h 2 , y i 1 + k1 h 2) k 3 = f ( xi 1 + h 2 , y i 1 + k 2 h 2) k 4 = f ( xi , y i 1 + k 3 h) Un programa en Matlab que implementa el mtodo de Runge-Kutta clsico de cuarto orden se muestra a contiuacin:
function y = RK4(x0,y0,xf,h) x=x0:h:xf; y = zeros(1,length(x)); y(1)=y0;

(5.20)

10

Matemticas Especiales
for j = 2:length(x) k1 = pendiente(x(j-1),y(j-1)); k2 = pendiente(x(j-1)+h/2,y(j-1)+h*k1/2); k3 = pendiente(x(j-1)+h/2,y(j-1)+h*k2/2); k4 = pendiente(x(j),y(j-1)+k3*h); y(j) = y(j-1) + (k1 + 2*k2 + 2*k3 + k4)*h/6; end plot(x,y,'o-')

Daniel H. Cortes C

Una comparacin entre este mtodo y el de Euler y Hen utilizando el problema del ejemplo 2 se puede observar en la Figura 5.4.

Figura 5.5. Comparacin entre los mtodos Euler, Hen y Runge- Kutta 4 orden clsico

En la grfica anterior puede observarse la gran precisin del mtodo RK4, lo que justifica su popularidad.

Mtodos Adaptativos de Runge-Kutta

Todos los mtodos observados hasta el momento utilizan paso constante. Esta caracterstica puede ser una desventaja en algunas ocasiones. Por ejemplo cuando la solucin de la ecuacin sufre un cambio brusco (Figura 5.6), donde los mtodos de paso constantes pueden generar errores importantes. Otra desventaja de los mtodos de paso constante se presenta cuando la solucin se caracteriza por tener tramos con pendiente casi constante (Figura 5.6); en estos tramos podra usarse un paso ms grande reduciendo el tiempo de clculo sin prdida de precisin.

11

Matemticas Especiales

Daniel H. Cortes C

Figura 5.6. Funcin con cambios sbitos de pendiente

Un mtodo que implementa el cambio adaptativo del tamao del paso es el mtodo RungeKutta Fehlberg, el cual realiza dos predicciones con mtodos quinto y cuarto orden y de acuerdo a la diferencia entre las predicciones actualiza el paso. Aunque alguien podra pensar que se esta duplicando el trabajo cuando se realizan dos predicciones para el mismo punto, el mtodo RK Fehlberg utiliza las constantes ki halladas en la prediccin de quinto orden para realizar la prediccin de cuarto orden, reduciendo considerablemente los clculos necesarios. El mtodo RK de quinto orden utilizado es el siguiente:
18575 13525 277 1 2825 y i = y i 1 + k1 + k3 + k4 + k 5 + k 6 h , 48384 55296 14336 4 27648

(5.21)

donde, k1 = f ( xi 1 , yi 1 )

k 2 = f ( xi 1 + h 5 , yi 1 + k1h 5) k 3 = f ( xi 1 + 3h 10 , y i 1 + 3k1 h 40 + 9k 2 h 40) k 4 = f ( xi 1 + 3h 5 , yi 1 + 3k1h 10 9k 2 h 10 + 6k 3 h 5) k 5 = f ( xi 1 + h , yi 1 11k1 h 54 + 5k 2 h 2 70k 3 h 27 + 35k 4 h 27)


k 6 = f ( xi 1 + 7h 8 , yi 1 + 1631k1 h 55296 + 175k 2 h 512 + 575k 3 h 13824 + 44275k 4 h 110592 + 253k 5 h 4096)

12

Matemticas Especiales El mtodo de cuarto orden est dado por la siguiente expresin:

Daniel H. Cortes C

250 125 512 37 y i = y i 1 + k1 + k3 + k4 + k 6 h , 621 594 1771 378

(5.22)

donde las constantes ki son las mismas que las del mtodo de quinto orden. Una estrategia para disminuir el paso si es muy grande o aumentarlo si es muy pequeo es la siguiente:
h nuevo = hactual nuevo actual

(5.23)

donde
= y i( qu int o ) y i( cuarto ) .

(5.24)

La constante de la ecuacin (5.24) se toma igual a 0.2 cuando se quiere aumentar el tamao del paso y se toma como 0.25 para disminuirlo. Un programa en Matlab que implementa este mtodo se presenta a continuacin:
function y = RKadapt(x0,y0,xf,hi,dd) x(1) = x0; y(1) = y0; i = 1; while x(i) < xf k(1) = pend(x(i),y(i)); k(2) = pend(x(i)+hi/5,y(i)+k(1)*hi/5); k(3) = pend(x(i)+3*hi/10,y(i) + 3*k(1)*hi/40 + 9/40*k(2)*hi); k(4) = pend(x(i)+3*hi/5,y(i) + 3*k(1)*hi/10 - 9/10*k(2)*hi + 6/5*k(3)*hi); k(5) = pend(x(i)+hi,y(i) - 11*k(1)*hi/54 + 5/2*k(2)*hi - 70/27*k(3)*hi + 35/27*k(4)*hi); k(6) = pend(x(i)+7/8*hi,y(i) + 1631*k(1)*hi/55296 + 175/512*k(2)*hi + 575/13824*k(3)*hi + 44275/110592*k(4)*hi + 253/4096*k(5)*hi); y4 = y(i) + hi*k*[37/378;0;250/621;125/594;0;512/1771]; y5 = y(i) + hi*k*[2825/27648;0;18575/48348;13525/55296;277/14336;1/4]; err = abs(y4-y5); if err > dd hi = hi*(dd/err)^0.25; else y(i+1)=y5; hi = hi*(dd/err)^0.2; x(i+1)=x(i)+hi; i = i + 1; end end plot(x,y) grid on xlabel('x') ylabel('y')

13

Matemticas Especiales

Daniel H. Cortes C

Una comparacin donde se ve el efecto de la variacin del paso se puede observar mediante la solucin de la siguiente ecuacin diferencial:
2 2 dy + 0.6 y = 10e ( x 2 ) /[ 2 ( 0.075 ) ] , dx

con y (0) = 0.5 . Para h = 0.5 y dd = 0.00005 (ver programa) la comparacin entre este mtodo y el mtodo clsico de RK de cuarto orden se puede observar en la figura 5.7.

Figura 5.7. Comparacin entre RK4 clsico y adaptativo.

Simulink
El programa Matlab tiene una poderosa herramienta para la solucin de ecuaciones diferenciales ordinarias llamada Simulink. Para acceder a esta herramienta slo es necesario escribir la palabra simulink en la lnea de comando y el men principal aparecer en una nueva ventana (Figura 5.8). La solucin de problemas en Simulink consta de dos pasos. Primero se crea un modelo usando bloques mediante el editor y luego se ajustan los parmetros de la solucin.

14

Matemticas Especiales

Daniel H. Cortes C

Figura 5.8. Men principal de Simulink

La solucin de problemas usando Simulink se ilustrar mediante un ejemplo, el cual consiste en solucionar una ecuacin diferencial de segundo orden no homognea. La ecuacin diferencial a solucionar es:
& m&& + cy + ky = sen (t ) . y & y ( 0) = y ( 0) = 1

(5.25)

El primer paso en la solucin es despejar la derivada de ms alto orden, as:


&& = ( sen(t ) cy ky ) * 1 . & y m

(5.26)

En el men principal se abre un nuevo modelo y en la librera simulink -> coninuous se encuentra un bloque con el cual se puede integrar dos veces la funcin && . Este bloque se y arrastra dos veces hasta el editor y se conectan como se ve en la Figura 5.9.
& Luego de la primera integracin (primer bloque) se tiene la funcin y y luego de la segunda integracin se tiene la funcin y . El siguiente paso es armar la funcin && y & & (ecuacin 5.26) mediante las funciones y y y . Primero se multiplican la funciones y y y por las constantes (ganancias) c y k, respectivamente (Figura 5.10). Las ganancias se encuentran en la librera Math Operations. Luego se adiciona un bloque, el cual tenga como salida la funcin sen (t ) , este bloque se puede encontrar en la librera sources -> sine wave (figura 5.11).

15

Matemticas Especiales

Daniel H. Cortes C

Figura 5.9. Bloques que realizan la integracin de la funcin.

Figura 5.10. Bloques de Ganancias

16

Matemticas Especiales

Daniel H. Cortes C

Figura 5.11. Bloque que genera la funcin seno.

El ltimo paso en la creacin del modelo es realizar las operaciones necesarias para completar la ecuacin 5.26 (Figura 5.12). El bloque de suma se encuentra nuevamente en el men Math Operations. La ganancia -K- del modelo es igual a 1/m.

Figura 5.12. Modelo para la solucin del problema.

17

Matemticas Especiales

Daniel H. Cortes C

Para visualizar la solucin es necesario adicionar un bloque llamado scope (Figura 5.13) el cual grafica la seal que tome como entrada. Este bloque se encuentra ubicado en la librera sinks -> scope.

Figura 5.13. Modelo completo del problema.

Las condiciones iniciales se definen para cada integrador mediante un men que resulta de dar doble clic en el icono. Las constantes k, m y c se definen como variables desde la lnea de comando. La solucin (doble clic en scope) se muestra en la figura 5.14.

Figura 5.14. Solucin del problema 18

También podría gustarte