Professional Documents
Culture Documents
Cortes C
Introducción
Una alternativa para solucionar ecuaciones diferenciales lineales o no lineales son los
métodos numéricos. Los métodos Runge-Kutta están entre los más utilizados para la
solución de estos problemas. Aunque existen otros métodos numéricos para la solución de
ecuaciones diferenciales ordinarias como el método de los residuos ponderados y las
diferencias finitas, estos métodos utilizan algoritmos complicados y algunos están
restringidos a ecuaciones diferenciales lineales. Debido a que los métodos Runge-Kutta
son más sencillos y se pueden aplicar a una gran variedad de problemas, en este curso no se
incluirán otros métodos.
Los métodos Runge-Kutta tienen muchas variaciones. Por ejemplo, están los métodos de
paso fijo, de paso variable, de orden superior, etc. Debido a las limitaciones de tiempo, en
este curso se dictarán los métodos más comunes y básicos y queda por parte de los
estudiantes estudiar las alternativas restantes.
La ecuación 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
Matemáticas Especiales Daniel H. Cortes C
Las ecuaciones diferenciales también se clasifican según su orden, el cual está determinado
por la derivada de más alto orden presente en la ecuación. Por ejemplo, la ecuación (5.1) es
d 2x
una ecuación diferencial ordinaria de segundo orden, debido al término 2 .
dt
Ejemplo 1
Solución
y ' = g y y ' ' = g ' = q , la ecuación 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 ecuación diferencial ordinaria es lineal cuando la función o sus derivadas
están multiplicadas solamente por funciones de la variable independiente. Cuando en la
ecuación diferencial se encuentran potencias de la función o sus derivadas y/o
multiplicaciones entre las derivadas la ecuación es no lineal.
2
Matemáticas Especiales Daniel H. Cortes C
La ecuación de movimiento del péndulo está dada por la ecuación (5.2). En la cual el
término sen(θ ) hace que la ecuación sea no lineal.
d 2θ g
+ sen(θ ) = 0 (5.2)
dt 2 L
Si se considera que el ángulo θ sólo toma valores pequeños, el término sen(θ ) puede
aproximarse a θ. Por lo tanto la ecuación diferencial no lineal (5.2) se convierte en una
lineal, así:
d 2θ g
+ θ = 0. (5.3)
dt 2 L
3
Matemáticas Especiales Daniel H. Cortes C
Métodos Runge-Kutta
Todos los métodos que se verán en esta sección se aplicarán a la solución 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 métodos Runge – Kutta son las series de Taylor, la cual nos permite
encontrar el valor de una función en punto x si se conocen los valores de la función 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 método Runge-Kutta más simple es el método de Euler, el cual toma solamente los dos
primeros términos de la serie de Taylor.
Método 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 método de Euler se puede ilustrar gráficamente mediante la figura 5.3. El error que se
induce en la solución mediante el método de Euler se debe a que sólo se toman los dos
primeros términos 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
Matemáticas Especiales Daniel H. Cortes C
5
Matemáticas Especiales Daniel H. Cortes C
Este método puede ser fácilmente programado para obtener la solución a cualquier
problema. A continuación se observa un programa hecho en Matlab que soluciona
ecuaciones diferenciales ordinarias de primer orden utilizando el método 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 condición inicial en la posición 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
Solución
La solución analítica en este caso puede ser fácilmente hallada mediante integración
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
Matemáticas Especiales Daniel H. Cortes C
Método de Heún
El método de Euler se conoce como un método predictor solamente, ya que no realiza una
corrección de los valores encontrados. El método de Heún es una mejora al método de
Euler, el cual incluye correcciones del valor yi encontrado en cada paso.
7
Matemáticas Especiales Daniel H. Cortes C
y i0 = y i −1 + f ( xi −1 , y i −1 ) h , (Predicción) (5.11)
n −1
f ( xi −1 , y i −1 ) + f ( xi , y )
y in = y i −1 + i
h . (n-ésima corrección) (5.12)
2
Aunque el valor exacto de la función en punto xi se alcanza cuando las correcciones son
infinitas1, en la práctica no es posible realizar ese número de correcciones, por lo tanto se
debe definir un criterio el cual nos indique cuando se ha obtenido una valor suficientemente
exacto. Un criterio comúnmente usado es el siguiente:
yin − y in −1
ε> 100% . (5.13)
y in
Este criterio nos indica que las correcciones se realizarán 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 método de Heún 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 comparación del método de Heún con el método de Euler usando la ecuación
diferencial del ejemplo 2 se muestra en la Figura 5.4.
1
Esto ocurriría siempre que y’ dependa de y. En caso contrario, las correcciones no tendrían ningún efecto
sobre la precisión de la solución.
8
Matemáticas Especiales Daniel H. Cortes C
Mediante esta comparación se puede observar que el método de Heún es más preciso aún
cuando se utiliza el mismo paso (h = 0.5).
Método 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 método, 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
Matemáticas 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 método de Heún (5.11)-(5.12), cuando usa una sola corrección (n = 1), se puede
considerar como un método Runge-Kutta de segundo orden. En este caso a1 = a2 = 1/2 y
p1 = q11 = 1. Por lo tanto la ecuación (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 métodos Runge-Kutta está relacionado con el error de truncamiento. Por
ejemplo, para los métodos de segundo orden el error de truncamiento es Oh 3 , en general se
puede decir que un método Runge-Kutta es orden n tiene un error de truncamiento igual a
Oh n +1 .
El método Runge-Kutta más popular de cuarto orden se conoce como método RK clásico de
cuarto orden. Este método se define de la siguiente manera:
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
Matemáticas 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 comparación entre este método y el de Euler y Heún utilizando el problema del
ejemplo 2 se puede observar en la Figura 5.4.
Figura 5.5. Comparación entre los métodos Euler, Heún y Runge- Kutta 4° orden clásico
En la gráfica anterior puede observarse la gran precisión del método RK4, lo que justifica
su popularidad.
Todos los métodos observados hasta el momento utilizan paso constante. Esta
característica puede ser una desventaja en algunas ocasiones. Por ejemplo cuando la
solución de la ecuación sufre un cambio brusco (Figura 5.6), donde los métodos de paso
constantes pueden generar errores importantes. Otra desventaja de los métodos de paso
constante se presenta cuando la solución se caracteriza por tener tramos con pendiente casi
constante (Figura 5.6); en estos tramos podría usarse un paso más grande reduciendo el
tiempo de cálculo sin pérdida de precisión.
11
Matemáticas Especiales Daniel H. Cortes C
Un método que implementa el cambio adaptativo del tamaño del paso es el método Runge-
Kutta Fehlberg, el cual realiza dos predicciones con métodos quinto y cuarto orden y de
acuerdo a la diferencia entre las predicciones actualiza el paso. Aunque alguien podría
pensar que se esta duplicando el trabajo cuando se realizan dos predicciones para el mismo
punto, el método RK Fehlberg utiliza las constantes ki halladas en la predicción de quinto
orden para realizar la predicción de cuarto orden, reduciendo considerablemente los
cálculos necesarios. El método 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
Matemáticas Especiales Daniel H. Cortes C
donde las constantes ki son las mismas que las del método de quinto orden.
Una estrategia para disminuir el paso si es muy grande o aumentarlo si es muy pequeño 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
Matemáticas Especiales Daniel H. Cortes C
Una comparación donde se ve el efecto de la variación del paso se puede observar mediante
la solución de la siguiente ecuación 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 comparación entre este
método y el método clásico de RK de cuarto orden se puede observar en la figura 5.7.
Simulink
14
Matemáticas Especiales Daniel H. Cortes C
15
Matemáticas Especiales Daniel H. Cortes C
16
Matemáticas Especiales Daniel H. Cortes C
El último paso en la creación del modelo es realizar las operaciones necesarias para
completar la ecuación 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
Matemáticas Especiales Daniel H. Cortes C
Para visualizar la solución es necesario adicionar un bloque llamado ‘scope’ (Figura 5.13)
el cual grafica la señal que tome como entrada. Este bloque se encuentra ubicado en la
librería 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 línea
de comando. La solución (doble clic en scope) se muestra en la figura 5.14.
18