Sei sulla pagina 1di 5

SISTEMAS DE ECUACIONES DIFERENCIALES ORDINARIAS NUMÉRICAS

Curso: Métodos Numéricos para Ingeniería, Autor: Cristian Loli Prudencio

INTRODUCCIÓN Solución:

Muchos problemas prácticos en la ingeniería y en  dy1


la ciencia requieren la solución de un sistema de
 dt  0.5 y1 , w1  y1 (0)  4

ecuaciones diferenciales ordinarias simultáneas  dy2  4  0.1y  0.3 y ,   y (0)  6
más que de una sola ecuación.  dt 1 2 1 2

Tales sistemas en general se representan como: Con el método de Euler la resolvemos para cada
variable dependiente, en [0,2], con tamaño de
𝑑𝑦1
= 𝑓1 (𝑡, 𝑦1 , 𝑦2 , … , 𝑦𝑛 ) paso h = 0.5.
𝑑𝑡
𝑑𝑦2 Comenzamos el cálculo para el instante 0.5 seg.
= 𝑓2 (𝑡, 𝑦1 , 𝑦2 , … , 𝑦𝑛 )
𝑑𝑡
𝑦1 (0.5) ≅ 𝑤2 = 4 + [−0.5(4)]0.5 = 3

𝑦2 (0.5) ≅ 𝜂2 = 6 + [4 − 0.1(4) − 0.3(6)]0.5
𝑑𝑦𝑛 = 6.9
= 𝑓𝑛 (𝑡, 𝑦1 , 𝑦2 , … , 𝑦𝑛 )
𝑑𝑡
Repetimos el proceso para hallar 𝑦1 y 𝑦2 en el
La solución de este sistema requiere que se instante 1 seg.
conozcan 𝑛 condiciones iniciales en el valor inicial
de 𝑡. y1 1  w3  3  0.5  3  0.5  2.25
y2 1  3  6.9  4  0.1 3  0.3  6.9  0.5  7.715
MÉTODO DE EULER
Procediendo de manera similar se tiene las
Todos los métodos analizados en el módulo aproximaciones:
anterior, para ecuaciones solas, pueden
extenderse al sistema que se mostró antes. Las 𝑡 𝑦1 𝑦2
aplicaciones en la ingeniería llegan a considerar 0 4 6
0.5 3 6.9
miles de ecuaciones simultáneas. En todo caso, el
1.0 2.25 7.715
procedimiento para resolver un sistema de 1.5 1.6875 8.44525
ecuaciones consiste únicamente en aplicar la 2.0 1.265625 9.094087
técnica simple por ecuación en cada paso, antes de
proceder con el siguiente. Lo anterior se ilustra MÉTODOS DE RUNGE KUTTA
mejor con el siguiente ejemplo para el método de
Euler. Observe que cualquiera de los métodos RK de
orden superior expuestos en el módulo anterior se
Ejemplo 1: Resuelva el siguiente sistema de puede aplicar a los sistemas de ecuaciones. Sin
ecuaciones diferenciales utilizando el método de embargo, debe tenerse cuidado al determinar las
Euler, suponiendo que en 𝑡 = 0, 𝑦1 = 4 y 𝑦2 = 6. pendientes. La figura 1 es útil para visualizar la
Integre hasta 𝑡 = 2 con un tamaño de paso igual a forma adecuada de hacer esto con el método de
0.5. cuarto orden. Es decir, desarrollaremos primero
 dy1 las pendientes para todas las variables en el valor
  0.5 y1 , y1 (0)  4
 dt inicial. Esas pendientes (un conjunto de las 𝑘1 ) se

 dy2  4  0.1y  0.3 y , y2 (0)  6
utilizarán después para realizar predicciones de la

 dt
1 2
variable dependiente en el punto medio del

Cristian Amador Loli Prudencio Página 1 Métodos Numéricos para Ing.


intervalo. Tales valores del punto medio se utilizan, Donde 𝑘𝑖,𝑗 es el 𝑖 − ésimo valor de 𝑘 para la
a su vez, para calcular un conjunto de pendientes 𝑗 −ésima variable dependiente.
en el punto medio (las 𝑘2 ). Esas nuevas pendientes
se vuelven a usar en el punto de inicio para Con ello, calculamos los valores de 𝑘2,𝑗 en el punto
efectuar otro conjunto de predicciones del punto medio,
medio que lleven a nuevas predicciones de la
k11h k12 h
pendiente en el punto medio (las 𝑘3 ). Éstas 4 6
2 2
después se emplearán para realizar predicciones al
final del intervalo que se usarán para desarrollar
k21  f1  0.25,3.5, 6.45   1.75
pendientes al final del intervalo (las 𝑘4 ). Por
último, las 𝑘 se combinan en un conjunto de k22  f 2  0.25,3.5, 6.45   1.715
funciones incrementadas y se llevan de nuevo al
Éstas sirven para determinar el segundo conjunto
inicio para hacer la predicción final. El siguiente
de pendientes en el punto medio,
ejemplo ilustra el procedimiento.
k 21h k 22 h
4 6
2 2

k31  f1  0.25,3.5625, 6.42875   1.78125


k32  f 2  0.25,3.5625, 6.42875   1.715125

Éstas se utilizarán para determinar las pendientes


al final del intervalo,

4  k31h 6  k32 h

k41  f1  0.5,3.109375, 6.857563  1.554688


k42  f 2  0.5,3.109375, 6.857563  1.631794
Figura 1. Representación gráfica de las
pendientes estimadas empleadas en el método Los valores de 𝑘 se utilizan después para calcular:
RK de cuarto orden
1
Ejemplo 2: Con el método de RK de cuarto orden y1  0.5   w2  4   k11  2k21  2k31  k41  0.5
6
resuelva las EDO del ejemplo 1.
 3.115234
Solución: 1
y2  0.5   2  6   k12  2k22  2k32  k42  0.5
6
 dy1
  0.5 y1  f1  t , y1 , y2   6.857670
 dt

 dy2  4  0.1y  0.3 y  f  t , y , y  Procediendo de la misma forma con los pasos

 dt
1 2 2 1 2
restantes se obtiene

Primero debemos encontrar todas las pendientes 𝑡 𝑦1 𝑦2


al inicio del intervalo: 0 4 6
0.5 3.115234 6.857670
k11  f1  0, 4, 6   0.5  4   2 1.0 2.426171 7.632106
1.5 1.889523 8.326886
k12  f 2  0, 4, 6   4  0.1 4   0.3  6   1.8 2.0 1.471577 8.946865

Cristian Amador Loli Prudencio Página 2 Métodos Numéricos para Ing.


Ejemplo 3: ¿Cómo plantearía las ecuaciones 1
wi 1  wi  [k11  k21 ]h
discretas por Heun y por RK de cuarto orden 4 2
clásica que resuelvan un sistema de 3 ecuaciones 1
diferenciales mostrado? i 1  i  [k12  k22 ]h
2
1
 dy1 i 1  i  [k13  k23 ]h
 dt  f1  t , y1 , y2 , y3  , y1  a   1 2

 dy2 Para cada i  1, 2,
  f 2  t , y1 , y2 , y3  , y2  a   1 ,n
 dt
 dy3 Método de RK4:
 dt  f 2  t , y1 , y2 , y3  , y3  a   1
 Primero calculamos las pendientes:
Solución: k11  f1 (ti , wi , i , i )

 dy1 k12  f 2 (ti , wi , i , i )


 dt  f1  t , y1 , y2 , y3  , w1  y1  a   1 k13  f3 (ti , wi , i , i )

 dy2 h k h k h k h
  f 2  t , y1 , y2 , y3  , 1  y2  a   1 k21  f1 (ti  , wi  11 , i  12 , i  13 )
 dt 2 2 2 2
 dy3 h k h k h k h
 dt  f 2  t , y1 , y2 , y3  , 1  y3  a   1 k22  f 2 (ti  , wi  11 , i  12 , i  13 )
 2 2 2 2
h k h k h k h
Nuestro objetivo es aproximar las 3 funciones k23  f3 (ti  , wi  11 , i  12 , i  13 )
2 2 2 2
incógnita h k h k h k h
k31  f1 (ti  , wi  21 , i  22 , i  23 )
2 2 2 2
h k 21 h k22 h k23 h
k32  f 2 (ti  , wi  , i  , i  )
2 2 2 2
h k h k h k h
k33  f3 (ti  , wi  21 , i  22 , i  23 )
2 2 2 2
k41  f1 (ti  h, wi  k31h, i  k32 h, i  k33h)
k42  f 2 (ti  h, wi  k31h, i  k32 h, i  k33h)
k43  f3 (ti  h, wi  k31h, i  k32 h, i  k33h)

Con lo cual se tiene las aproximaciones:


Para ello procedemos con:
1
wi 1  wi   k11  2k21  2k31  k41  h
Método de Heun: 6
1
Primero calculamos las pendientes: i 1  i   k12  2k22  2k32  k42  h
6
k11  f1 (ti , wi , i , i ) 1
i 1  i   k13  2k23  2k33  k43  h
k12  f 2 (ti , wi , i , i ) 6
k13  f 3 (ti , wi , i , i ) Para cada i  1, 2, ,n
k21  f1 (ti  h, wi  k11h, i  k12 h, i  k13h)
k22  f 2 (ti  h, wi  k11h, i  k12 h, i  k13h) Ejemplo 4: Calcular con el método de Heun la
solución numérica en el intervalo [0,0.3] de y, z, u
k23  f 3 (ti  h, wi  k11h, i  k12 h, i  k13 h)
con tamaño de paso h  0.1 seg en cada paso del
proceso iterativo
Con lo cual se tiene las aproximaciones:

Cristian Amador Loli Prudencio Página 3 Métodos Numéricos para Ing.


 dy 1
y  0.2   w3  0.945  [k11  k21 ]0.1  1.47525
 dt = t  3y  5z +u, y  0  = 1 2

 dz 1
z  0.2   3  1.08  [k12  k22 ]0.1  0.109375
 = t  4y  z  u,z  0  = 2
 dt 2
 du 1
u  0.2   3  4.68  [k13  k23 ]0.1  5.3789
 dt  2t  y  z  u , u (0)  4
 2
Solución: Para el instante t = 0.3 seg. tenemos:
 dy k11  f1 (0.2, w3 , 3 , 3 )  9.457775
 dt = t  3y  5z +u  f1  t , y, z , u  ,w1  y  0  = 1 k12  f 2 (0.2, w3 , 3 , 3 )  11.189275

 dz k13  f3 (0.2, w3 , 3 , 3 )  7.363525
 = t  4y  z  u  f 2  t , y , z , u  ,1  z  0  = 2
 dt k21  f1 (0.3, w3  k11h, 3  k12 h, 3  k13h)
 du
 dt  2t  y  z  u  f 3  t , y , z , u  , 1  u (0)  4  18.7260975
 k22  f 2 (0.3, w3  k11h, 3  k12 h, 3  k13h)
Primero calculamos las pendientes por el Método  14.48981
de Heun: k23  f3 (0.3, w3  k11h, 3  k12 h, 3  k13 h)
k11  f1 (0,1, 2, 4)  3  8.1267275
k12  f 2 (0,1, 2, 4)  10
k13  f3 (0,1, 2, 4)  7 Con lo cual se tiene las aproximaciones:
1
k21  f1 (0.1,1  k11h, 2  k12 h, 4  k13h)  1.9 y  0.3  w4  w3  [k11  k21 ]0.1  2.884443625
2
k22  f 2 (0.1,1  k11h, 2  k12 h, 4  k13h)  8.4 1
k23  f3 (0.1,1  k11h, 2  k12 h, 4  k13h)  6.6 z  0.3  4  3  [k12  k22 ]0.1  1.17457925
2
1
Con lo cual se tiene las aproximaciones: u  0.3   4  3  [k13  k23 ]0.1  6.153412625
2
1
y  0.1  w2  1  [k11  k21 ]0.1  0.945
2 Así tenemos el resultado resumido en la tabla:
1
z  0.1  2  2  [k12  k22 ]0.1  1.08 𝑡 𝑦 𝑧 𝑢
2
0 1 2 4
1
u  0.1   2  4  [k13  k23 ]0.1  4.68 0.1 0.945 1.08 4.68
2 0.2 1.47525 0.109375 5.3789
0.3 2.88444436 -1.1745793 6.1534126
Para el instante t = 0.2 seg. tenemos:
Sus graficas de las soluciones numéricas son:
k11  f1 (0.1, 0.945,1.08, 4.68)  2.215
k12  f 2 (0.1, 0.945,1.08, 4.68)  9.44
k13  f3 (0.1, 0.945,1.08, 4.68)  6.905
k21  f1 (0.2, 0.945  k11h,1.08  k12 h, 4.68  k13h)
 8.39
k22  f 2 (0.2, 0.945  k11h,1.08  k12 h, 4.68  k13h)
 9.9725
k23  f3 (0.2, 0.945  k11h,1.08  k12 h, 4.68  k13 h)
 7.073

Con lo cual se tiene las aproximaciones:

Cristian Amador Loli Prudencio Página 4 Métodos Numéricos para Ing.


IMPLEMENTACIÓN COMPUTACIONAL RECOMENDACIÓN

Método de RK4 para un sistema de dos EDO Se recomienda:


Programa  rk4dos.m 1. Ver estos videos para comprender mejor los
% Sistema de 2 EDO por RK4
% Autor: Cristian Loli Prudencio
métodos de Runge Kutta.
a=input('Ingrese a='); https://www.youtube.com/watch?v=pOTwV3kCxdw
b=input('Ingrese b=');
n=input('Ingrese num. intervalos,n=');
https://www.youtube.com/watch?v=H0ArPd5NE2Q
y1=input('Ingrese valor inicial, y1='); 2. Usar los programas en Matlab/Octave para
z1=input('Ingrese valor inicial, z1=');
h = (b-a)/n; agilizar los cálculos de las soluciones de EDO.
y(1)=y1;
z(1)=z1;
fun1=input('Ingrese f1(t,y,z)=','s'); FUENTES BIBLIOGRÁFICAS
fun2=input('Ingrese f2(t,y,z)=','s');
f=inline(fun1,'t','y','z');
g=inline(fun2,'t','y','z');
for i=1:n [1] Burden, Richard – Faires, Douglas – Burden,
t(i)=a+(i-1)*h; Annete (2017). Análisis Numérico. México.
k1(i)=f(t(i),y(i),z(i));
T1(i)=g(t(i),y(i),z(i)); Cengage Learning.
k2(i)=f(t(i)+h/2,y(i)+k1(i)*h/2,z(i)+T1(i)*h/2);
T2(i)=g(t(i)+h/2,y(i)+k1(i)*h/2,z(i)+T1(i)*h/2); [2] Chapra S, Canale R. (2015). Métodos
k3(i)=f(t(i)+h/2,y(i)+k2(i)*h/2,z(i)+T2(i)*h/2);
T3(i)=g(t(i)+h/2,y(i)+k2(i)*h/2,z(i)+T2(i)*h/2);
Numéricos para Ingenieros. México. McGraw-
k4(i)=f(t(i)+h,y(i)+k3(i)*h,z(i)+T3(i)*h); Hill.
T4(i)=g(t(i)+h,y(i)+k3(i)*h,z(i)+T3(i)*h);
y(i+1)=y(i)+1/6*(k1(i)+2*k2(i)+2*k3(i)+k4(i))*h; [3] Fink K, Mathews J. (2004). Métodos Numéricos
z(i+1)=z(i)+1/6*(T1(i)+2*T2(i)+2*T3(i)+T4(i))*h;
fprintf('Iteracion %d\n',i);
con Matlab. Madrid, España. Prentice Hall.
fprintf('k11=%.9f k12=%.9f\n',k1(i),T1(i));
fprintf('k21=%.9f k22=%.9f\n',k2(i),T2(i));
fprintf('k31=%.9f k32=%.9f\n',k3(i),T3(i));
fprintf('k41=%.9f k42=%.9f\n',k4(i),T4(i));
fprintf('y%d=%.9f z%d=%.9f\n',i,y(i+1),i,z(i+1));
end
t(n+1)=b;
plot(t,y,'o-',t,z,'s-')
xlabel('Eje t')
legend('y(t)','z(t)')
title('Método de RK4')
grid on

Método de RK4 para un sistema de tres EDO


Programa  rk4tres.m
% Sistema de 3 EDO por RK4
% Autor: Cristian Loli Prudencio
a=input('Ingrese a=');
b=input('Ingrese b=');
n=input('Ingrese num. intervalos,n=');
y1=input('Ingrese valor inicial, y1=');
z1=input('Ingrese valor inicial, z1=');
u1=input('Ingrese valor inicial, u1=');
h = (b-a)/n;
y(1)=y1;
z(1)=z1;
u(1)=u1;
fun1=input('Ingrese f1(t,y,z,u)=','s');
fun2=input('Ingrese f2(t,y,z,u)=','s');
fun3=input('Ingrese f3(t,y,z,u)=','s');
f=inline(fun1,'t','y','z','u');
g=inline(fun2,'t','y','z','u');
p=inline(fun3,'t','y','z','u');
t=a:h:b;
for i=1:n
k1(i)=f(t(i),y(i),z(i),u(i));
t1(i)=g(t(i),y(i),z(i),u(i));
m1(i)=p(t(i),y(i),z(i),u(i));
k2(i)=f(t(i)+h/2,y(i)+k1(i)*h/2,z(i)+t1(i)*h/2,u(i)+m1(i)*h/2);
t2(i)=g(t(i)+h/2,y(i)+k1(i)*h/2,z(i)+t1(i)*h/2,u(i)+m1(i)*h/2);
m2(i)=p(t(i)+h/2,y(i)+k1(i)*h/2,z(i)+t1(i)*h/2,u(i)+m1(i)*h/2);
k3(i)=f(t(i)+h/2,y(i)+k2(i)*h/2,z(i)+t2(i)*h/2,u(i)+m2(i)*h/2);
t3(i)=g(t(i)+h/2,y(i)+k2(i)*h/2,z(i)+t2(i)*h/2,u(i)+m2(i)*h/2);
m3(i)=p(t(i)+h/2,y(i)+k2(i)*h/2,z(i)+t2(i)*h/2,u(i)+m2(i)*h/2);
k4(i)=f(t(i)+h,y(i)+k3(i)*h,z(i)+t3(i)*h,u(i)+m3(i)*h);
t4(i)=g(t(i)+h,y(i)+k3(i)*h,z(i)+t3(i)*h,u(i)+m3(i)*h);
m4(i)=p(t(i)+h,y(i)+k3(i)*h,z(i)+t3(i)*h,u(i)+m3(i)*h);
y(i+1)=y(i)+1/6*(k1(i)+2*k2(i)+2*k3(i)+k4(i))*h;
z(i+1)=z(i)+1/6*(t1(i)+2*t2(i)+2*t3(i)+t4(i))*h;
u(i+1)=u(i)+1/6*(m1(i)+2*m2(i)+2*m3(i)+m4(i))*h;
fprintf('k11=%.9f k12=%.9f k13=%.9f\n',k1(i),t1(i),m1(i));
fprintf('k21=%.9f k22=%.9f k23=%.9f\n',k2(i),t2(i),m2(i));
fprintf('k31=%.9f k32=%.9f k33=%.9f\n',k3(i),t3(i),m3(i));
fprintf('k41=%.9f k42=%.9f k43=%.9f\n',k4(i),t4(i),m4(i));
fprintf('y(%.2f)=%.9f\n',t(i+1),y(i+1));
fprintf('z(%.2f)=%.9f\n',t(i+1),z(i+1));
fprintf('u(%.2f)=%.9f\n',t(i+1),u(i+1));
end
t(n+1)=b;
plot(t,y,'o-',t,z,'s-',t,u,'p-')
xlabel('Eje t')
legend('y(t)','z(t)','u(t)')
title('Método de RK4')
grid on

Cristian Amador Loli Prudencio Página 5 Métodos Numéricos para Ing.

Potrebbero piacerti anche