Actividad 3
Laboratorio #1: Métodos Runge-Kutta
Para la ejecución del presente laboratorio es necesario que los alumnos tengan
instalado en sus ordenadores:
» Matlab
Objetivos: se trata de cuatro ejercicios en los que deberás programar en Matlab las
funciones necesarias para la resolución, por medio de los métodos numéricos
mencionados, de problemas de valor inicial.
Desarrollo
Problema 1
Un sistema resonante de muelles sobre el que se ejerce una fuerza externa periódica se
modela mediante la ecuación
𝑥 ′′ (𝑡) + 25𝑥(𝑡) = 8 sin 5𝑡 , 𝑥(0) = 𝑥 ′ (0) = 0
Tabla 1
Aproximación de la solución de la ecuación diferencial en el intervalo [0, 2] usando el método
de Runge-Kutta de orden 2 con 40 subintervalos.
𝒊 ̅𝒊
𝒙 𝒕𝒊 𝒊 ̅𝒊
𝒙 𝒕𝒊
1 0,0000 0,0000 21 1,0256 -0,4439
2 0,0513 0,0000 22 1,0769 -0,6320
3 0,1026 0,0050 23 1,1282 -0,7964
4 0,1538 0,0196 24 1,1795 -0,9227
5 0,2051 0,0471 25 1,2308 -0,9985
6 0,2564 0,0891 26 1,2821 -1,0137
7 0,3077 0,1449 27 1,3333 -0,9622
8 0,3590 0,2121 28 1,3846 -0,8421
9 0,4103 0,2859 29 1,4359 -0,6562
10 0,4615 0,3598 30 1,4872 -0,4127
11 0,5128 0,4262 31 1,5385 -0,1241
Asignatura Datos del alumno Fecha
Métodos Numéricos Apellidos: Pozo Parra
Avanzados en 15/05/2018
Ingeniería Nombre: Fredin Fernando
Tabla 2
Aproximación de la solución de la ecuación diferencial en el intervalo [0, 2] usando el método
de Runge-Kutta de orden 4 con 40 subintervalos.
𝒊 ̅𝒊
𝒙 𝒕𝒊 𝒊 ̅𝒊
𝒙 𝒕𝒊
1 0,0000 0,0000 21 1,0256 -0,4210
2 0,0513 0,0008 22 1,0769 -0,6048
3 0,1026 0,0066 23 1,1282 -0,7664
4 0,1538 0,0215 24 1,1795 -0,8923
5 0,2051 0,0489 25 1,2308 -0,9703
6 0,2564 0,0901 26 1,2821 -0,9905
7 0,3077 0,1447 27 1,3333 -0,9467
8 0,3590 0,2100 28 1,3846 -0,8367
9 0,4103 0,2816 29 1,4359 -0,6629
10 0,4615 0,3532 30 1,4872 -0,4325
11 0,5128 0,4176 31 1,5385 -0,1572
12 0,5641 0,4669 32 1,5897 0,1475
13 0,6154 0,4934 33 1,6410 0,4626
14 0,6667 0,4906 34 1,6923 0,7677
15 0,7179 0,4536 35 1,7436 1,0412
16 0,7692 0,3799 36 1,7949 1,2629
17 0,8205 0,2698 37 1,8462 1,4148
18 0,8718 0,1268 38 1,8974 1,4826
19 0,9231 -0,0427 39 1,9487 1,4571
20 0,9744 -0,2292 40 2,0000 1,3348
Problema 2
El modelo matemático de un circuito eléctrico RCL (resistencia, condensador e
inductancia) es
𝑄 ′′ (𝑡) + 20𝑄 ′ (𝑡) + 125𝑄(𝑡) = 9 𝑠𝑒𝑛(5𝑡), 𝑄(0) = 𝑄 ′ (0) = 0.
El método de Runge-Kutta de orden 2 tiene un error por paso de 𝑂(ℎ3 ) y un error global
de 𝑂(ℎ4 ). Mientras que el método de Runge-Kutta de orden 4 tiene un error por paso de
𝑂(ℎ5 ) y un error acumulado de 𝑂(ℎ4 ).
Problema 3
En un instante t, un péndulo forma un ángulo 𝑥(𝑡) con el eje vertical. Suponiendo
despreciable la fricción, la ecuación del movimiento del péndulo es
𝑚 𝑙 𝑥 ′′ (𝑡) = −𝑚 𝑔 𝑠𝑒𝑛(𝑥(𝑡)),
donde 𝑚 es la masa y 𝑙 es la longitud de la cuerda.
a) Usa los métodos de Euler, Heun y Runge-Kutta de orden 4 para resolver el problema
de valor inicial en el intervalo [0,2] usando 10, 50 y 500 subintervalos, sabiendo que
𝑔 = 9.8 𝑚/𝑠 2 , para l = 1m, 𝑥(0) = 0.3, 𝑥 ′ (0) = 0.
Fácilmente podemos intuir que con menor número de pasos la solución es menos
inexacta y suave. Esto ocurre en cada método, pero es más notable en el método de Euler.
Las aproximaciones encontradas con los métodos de Runge-Kutta resultan mejores que
las encontradas por el método de Euler. La diferencia entre n = 50 y n = 500 en los
métodos de Runge-Kutta es menos notable.
Problema 4
Modelo predador-presa: en un cierto hábitat conviven conejos y linces, cuyas
poblaciones en un cierto instante t denotaremos por 𝑥(𝑡) e 𝑦(𝑡), respectivamente. El
modelo establece que la relación entre ambas poblaciones como
𝑥 ′ (𝑡) = 𝐴𝑥(𝑡) − 𝐵𝑥(𝑡)𝑦(𝑡)
𝑦 ′ (𝑡) = 𝐶𝑥(𝑡)𝑦(𝑡) − 𝐷𝑦(𝑡)
En la simulación usamos los coeficientes 𝐴 = 2, 𝐵 = 0.02, 𝐶 = 0.0002, 𝐷 = 0.8.
a) Utiliza Heun y RK4 para resolver el sistema en el intervalo [0,5] con 40 y 80 pasos
partiendo de 𝑥(0) = 3000 conejos y 𝑦(0) = 120 linces.
Figura 11: Gráfica de la aproximación de la solución del problema 4(a) en el intervalo [0, 5]
usando el método de Heun para 𝑛 = 40.
Asignatura Datos del alumno Fecha
Métodos Numéricos Apellidos: Pozo Parra
Avanzados en 15/05/2018
Ingeniería Nombre: Fredin Fernando
Figura 12: Gráfica de la aproximación de la solución del problema 4(a) en el intervalo [0, 5]
usando el método de Heun para 𝑛 = 80.
Figura 13: Gráfica de la aproximación de la solución del problema 4(a) en el intervalo [0, 5]
usando el método de Runga-Kutta de orden 4 para 𝑛 = 40.
Asignatura Datos del alumno Fecha
Métodos Numéricos Apellidos: Pozo Parra
Avanzados en 15/05/2018
Ingeniería Nombre: Fredin Fernando
Figura 14: Gráfica de la aproximación de la solución del problema 4(a) en el intervalo [0, 5]
usando el método de Runga-Kutta de orden 4 para 𝑛 = 80.
b) Utiliza Heun y RK4 para resolver el sistema en el intervalo [0,5] con 40 y 80 pasos
partiendo de 𝑥(0) = 5000 conejos y 𝑦(0) = 100 linces.
Figura 15: Gráfica de la aproximación de la solución del problema 4(b) en el intervalo [0, 5]
usando el método de Heun para 𝑛 = 40.
Asignatura Datos del alumno Fecha
Métodos Numéricos Apellidos: Pozo Parra
Avanzados en 15/05/2018
Ingeniería Nombre: Fredin Fernando
Figura 16: Gráfica de la aproximación de la solución del problema 4(b) en el intervalo [0, 5]
usando el método de Heun para 𝑛 = 80.
Figura 17: Gráfica de la aproximación de la solución del problema 4(b) en el intervalo [0, 5]
usando el método de Runge-Kutta de orden 4 para 𝑛 = 40.
Asignatura Datos del alumno Fecha
Métodos Numéricos Apellidos: Pozo Parra
Avanzados en 15/05/2018
Ingeniería Nombre: Fredin Fernando
Figura 18: Gráfica de la aproximación de la solución del problema 4(b) en el intervalo [0, 5]
usando el método de Runge-Kutta de orden 4 para 𝑛 = 80.
Apéndices
Para la resolución de los problemas anteriores se crearon tres funciones de MATLAB con
la implementación de los métodos de Euler (euler.m), Heun (Runge-Kutta de orden 2)
(RK2.m) y Runge-Kutta de orden 4 (RK4.m).
for k = 1:n-1
x(:,k+1) = x(:,k) + h*f(t(k), x(:,k));
end
end
for k = 1:n-1
k1 = h * fun(t(k),x(:,k));
k2 = h * fun(t(k)+h/2, x(:,k) + k1/2);
x(:,k+1) = x(:,k) + k2;
end
end
for k = 1:n-1
k1 = h*f(t(k), x(:,k));
k2 = h*f(t(k)+h/2, x(:,k) + 0.5*k1);
k3 = h*f(t(k)+h/2, x(:,k) + 0.5*k2);
k4 = h*f(t(k)+h, x(:,k) + k3);
x(:,k+1) = x(:,k) + (k1 + 2*k2 + 2*k3 + k4)/6;
end
end