Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Metodos Numericos para Ecuaciones Diferenciales Ordinarias PDF
Metodos Numericos para Ecuaciones Diferenciales Ordinarias PDF
Cortes C
Introduccin
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.
La ecuacin que describe las vibraciones libres de un sistema masa resorte con
amortiguamiento es:
d 2x dx
m 2
+ c + kx = 0 , (5.1)
dt dt
1
Matemticas Especiales Daniel H. Cortes C
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
Ejemplo 1
Solucin
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
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.
2
Matemticas Especiales Daniel H. Cortes C
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 (5.2)
dt 2 L
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. (5.3)
dt 2 L
3
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 ) , (5.4)
dx
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:
1 1
y ( x) = y (a ) + y ' ( x)( x a ) + y ' ' (a )( x a ) 2 + K + y n (a )( x a ) n . (5.5)
2! n!
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
y1 = y ( x1 ) = y 0 + f ( x 0 , y 0 )h ,
y 2 = y1 + f ( x1 , y1 )h ,
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:
y i = y i 1 + f i 1 h + Oh 2 . (5.7)
4
Matemticas Especiales Daniel H. Cortes C
5
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-*')
Ejemplo 2
dy
= 2 x 3 + 12 x 2 20 x + 8.5
dx
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 .
function f = pendiente(x,y)
f = -2*x^3 + 12*x^2 - 20*x + 8.5;
6
Matemticas Especiales Daniel H. Cortes C
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.
7
Matemticas Especiales Daniel H. Cortes C
y i0 = y i 1 + f ( xi 1 , y i 1 ) h , (Prediccin) (5.11)
n 1
f ( xi 1 , y i 1 ) + f ( xi , y )
y in = y i 1 + i
h . (n-sima correccin) (5.12)
2
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% . (5.13)
y in
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.
1
Esto ocurrira siempre que y dependa de y. En caso contrario, las correcciones no tendran ningn efecto
sobre la precisin de la solucin.
8
Matemticas Especiales Daniel H. Cortes C
Mtodo General
y i = y i 1 + ( xi 1 , y i 1 , h)h , (5.14)
= 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)
(5.16)
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),
9
Matemticas Especiales Daniel H. Cortes C
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 (5.18)
f ( xi 1 , y i 1 ) + f ( xi , y i0 )
= y i 1 + h
2
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 .
1
y i = y i 1 + (k1 + 2k 2 + 2k 3 + k 4 )h , (5.19)
6
donde,
k1 = f ( xi 1 , y i 1 )
k 2 = f ( xi 1 + h 2 , y i 1 + k1 h 2)
. (5.20)
k 3 = f ( xi 1 + h 2 , y i 1 + k 2 h 2)
k 4 = f ( xi , y i 1 + k 3 h)
function y = RK4(x0,y0,xf,h)
x=x0:h:xf;
y = zeros(1,length(x));
y(1)=y0;
10
Matemticas Especiales Daniel H. Cortes C
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-')
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.
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
Un mtodo que implementa el cambio adaptativo del tamao del paso es el mtodo Runge-
Kutta 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:
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 Daniel H. Cortes C
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:
nuevo
h nuevo = hactual , (5.23)
actual
donde
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:
dy
+ 0.6 y = 10e ( x 2 ) /[ 2 ( 0.075 ) ] ,
2 2
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.
Simulink
14
Matemticas Especiales Daniel H. Cortes C
15
Matemticas Especiales Daniel H. Cortes C
16
Matemticas Especiales Daniel H. Cortes C
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.
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.
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.
18