Upload
franraallis
View
271
Download
2
Embed Size (px)
Citation preview
Universidad Centroccidental
Lisandro Alvarado
Decanato de Agronomía
Programa de Ingeniería Agroindustrial
Computación aplicada
BACHILLERES:
Mendoza Francis C.I 18.546.207
Álvarez Francisco C.I. 18.690.005
Alvarado Rafael C.I. 17.354.316
Flores Luis C.I. 18.923.287
INTRODUCION
Es importante conocer que el método de runge kutta es un método genérico de resolución
numérica de ecuaciones diferenciales, Este conjunto de métodos fue inicialmente desarrollado
alrededor del año 1900 por los matemáticos C. Runge y M. W. Kutta. Este método surgió como
mejora del método de euler. El método de euler se puede considerar un método de runge
kutta de primer orden.
Método de Runge Kutta
Runge Kutta es un método numérico de resolución de ecuaciones diferenciales que
surge como una mejora del método de Euler. El método de Euler se puede considerar como
un método de Runge Kutta de primer orden, el de Heun, es un método de Runge Kutta de
orden dos.
La ventaja de los métodos de Runge-Kutta con respecto al uso de la serie de Taylor,
que es también un método de un paso, es decir, los métodos de Runge-Kutta requieren sólo
de la función f(x, y) y de ninguna derivada, mientras que la serie de Taylor sí requiere de la
evaluación de derivadas. Esto hace que, en la práctica, la aplicación de los métodos de
Runge-Kutta sean más simples que el uso de la serie de Taylor.
El método de Runge-Kutta se utiliza para resolver ecuaciones diferenciales de la
forma
Y es sumamente útil para casos en los que la solución no puede hallarse por los
métodos convencionales (como separación de variables).
El Propósito de los Métodos Numéricos para Ec. Diferenciales es obtener una
solución aproximada a la solución real del Problema de Valor Inicial planteado, como se
puede observar en la siguiente gráfica:
Ecuaciones:
Para resolver un sistema de ecuaciones diferenciales el esquema del método de
Runge Kutta de 2do orden es:
Por otra parte, para la resolución de ec. Diferenciales ordinarias a través del método
de Runge Kutta de 3er orden, las ecuaciones a emplear son:
Aplicaciones:
El método de Runge Kutta se emplea para resolver ecuaciones diferenciales
ordinarias. Dichas ecuaciones son las que modelan la mayoría de situaciones que se pueden
presentar en un estudio, entre ellos tenemos los siguientes casos:
1. Crecimiento poblacional.
2. Estudio de fluidos.
3. Fuerzas elásticas.
4. Sistemas de masa variable.
5. Preparación de soluciones.
6. Cambios de temperatura.
En la Agroindustria:
Éstos son sólo ejemplos de la aplicación, no obstante en la industria y más
específicamente la agroindustria dichos casos son cotidianos, pues en el caso de
microbiología pudiese modelarse el crecimiento o decrecimiento de una población
bacteriana, los cambios de temperatura de una solución así como la cantidad de reactivo
necesario para la concentración de una solución, el estudio de las leyes de Newton, fluidos
Newtonianos y no-Newtonianos, estudios de velocidad de una máquina en un proceso,
entre otros.
hxx ii 1
De manera que los métodos de Runge-Kutta tanto de segundo como de tercer
orden tienen extenso uso en la agroindustria.
Algoritmos
Empleando como ejemplo el siguiente sistema de ecuaciones:
x(0)=2
y(0)=1
0≤t≤3
h=0,2
Para Runge Kutta de 2do orden, un ejemplo del algoritmo es:
%Metodo Runge-Kutta de 2doOrden
x=2;
y=1;
t=0;
tmax=3;
h=0.2;
iter=round((tmax-t)/h);
vectorx=x;
vectory=y;
vectort=t;
for i=1:iter
%calculo de las constantes de Runge-Kutta
K1x=(t^2+x)*h;
K1y=(-t^3)*h
F1=((t+h/2)^2+(x+K1x/2))*h;
F2=(-(t+h/2)^3)*h;
x=x+F1;
y=y+F2;
t=t+h;
vectorx=[vectorx x];
vectory=[vectory y];
vectort=[vectort t];
end
vectorx
vectory
vectort
subplot (1,2,1);
plot(vectort,vectorx,'y-o');
title('Metodo Runge-Kutta 2doOrden. t vs x');
xlabel('valores t');
ylabel('valores x');
subplot (1,2,2);
plot(vectort,vectory,'b-p');
title('Metodo Runge-Kutta 2doOrden. y vs t');
xlabel('valores t');
ylabel('valores y');
Para Runge Kutta de 3er orden, un ejemplo de algoritmo sería el siguiente:
Metodo Runge-Kutta de 3erOrden
x=2;
y=1;
t=0;
tmax=3;
h=0.2;
iter=round((tmax-t)/h);
vectorx=x;
vectory=y;
vectort=t;
for i=1:iteraciones
%calculo de las constantes de Runge-Kutta
K1x=(t^2+x)*h;
K1y=(-t^3)*h;
K2x=((t+h/2)^2+(x+K1x/2))*h;
K2y=(-(t+h/2)^3)*h;
K3x=((t+h)^2+(x+2*K2x-K1x))*h;
K3y=(-(t+h)^3)*h;
x=x+(K1x+4*K2x+K3x)/6;
y=y+(K1y+4*K2y+K3y)/6;
t=t+h;
vectorx=[vectorx x];
vectory=[vectory y];
vectort=[vectort t];
end
vectorx
vectory
vectort
subplot (1,2,1);
plot(vectort,vectorx,'y-o');
title('Metodo Runge-Kutta 3erOrden. x vs t');
xlabel('valores t');
ylabel('valores x');
subplot (1,2,2);
plot(vectort,vectory,'b-p');
title('Metodo Runge-Kutta 3erOrden. y vs t');
xlabel('valores t');
ylabel('valores y');
Ejercicios
Runge Kutta de 2do orden:
1. En un medio de cultivo a base de lactosa se comprobó que el crecimiento bacteriano
se modela en base al siguiente sistema de ecuaciones diferenciales:
y(0)=2
z(0)=4
0≤x≤2
h= 0,01
Realice el estudio del crecimiento bacteriano en el cultivo empleando un h de 0,01.
Solución:
En las ecuaciones se observa que la variable x es independiente y que las variables y
y z son dependientes, por tanto, a la variable x se le aplicará la siguiente ecuación:
x1 = xo + h = 0 + 0,01 = 0,01
Para poder conocer el valor de y,z es necesario hallar las respectivas k1 para
cada variable:
k1y= h*F (x(o), y(o) , z(o))
k1z= h*G (x(o), y(o) , z(o))
-0,32
Entonces:
Empleando el mismo procedimiento se hallan la otra variable independiente:
Entonces, la tabla de resultados para éste caso es:
Iter. X Y z
0 0 2 4
1 0,01 2.049548124 3.8507008
El algoritmo para éste caso es:
%Metodo Runge-Kutta de 2doOrden
x=0;
y=2;
z=4;
xmax=2;
h=0.01;
iter=round((xmax-x)/h);
vectorx=x;
vectory=y;
vectorz=z;
for i=1:iter
%calculo de las constantes de Runge-Kutta
K1y=(-2*y+5*exp(-x))*h;
K1z=((-y*z^2)/2)*h;
F1=(-2*(y+K1y/2)+5*exp(-(x+h/2)))*h;
F2=((-(y+K1y/2)*(z+K1z/2)^2)/2)*h;
x=x+h;
y=y+F1;
z=z+F2;
vectorx=[vectorx x];
vectory=[vectory y];
vectorz=[vectorz z];
end
vectorx
vectory
vectorz
figure
subplot (1,2,1);
plot(vectorx,vectory,'y-o');
title('Metodo Runge-Kutta 2doOrden. x vs y');
xlabel('valores x');
ylabel('valores y');
subplot (1,2,2);
plot(vectorx,vectory,'b-p');
title('Metodo Runge-Kutta 2doOrden. x vs z');
xlabel('valores x');
ylabel('valores z');
figure
plot(vectorx,vectory,'y-o');
hold on
plot(vectorx,vectorz,'b-p');
xlabel('valores x');
ylabel('valores y,z');
title('Metodo Runge-Kutta 2doOrden.soluciones del sistema de
ecuaciones');
Y las soluciones del programa son:
vectorx =
Columns 1 through 7
0 0.0100 0.0200 0.0300 0.0400 0.0500 0.0600
Columns 8 through 14
0.0700 0.0800 0.0900 0.1000 0.1100 0.1200 0.1300
Columns 15 through 21
0.1400 0.1500 0.1600 0.1700 0.1800 0.1900 0.2000
Columns 22 through 28
0.2100 0.2200 0.2300 0.2400 0.2500 0.2600 0.2700
Columns 29 through 35
0.2800 0.2900 0.3000 0.3100 0.3200 0.3300 0.3400
Columns 36 through 42
0.3500 0.3600 0.3700 0.3800 0.3900 0.4000 0.4100
Columns 43 through 49
0.4200 0.4300 0.4400 0.4500 0.4600 0.4700 0.4800
Columns 50 through 56
0.4900 0.5000 0.5100 0.5200 0.5300 0.5400 0.5500
Columns 57 through 63
0.5600 0.5700 0.5800 0.5900 0.6000 0.6100 0.6200
Columns 64 through 70
0.6300 0.6400 0.6500 0.6600 0.6700 0.6800 0.6900
Columns 71 through 77
0.7000 0.7100 0.7200 0.7300 0.7400 0.7500 0.7600
Columns 78 through 84
0.7700 0.7800 0.7900 0.8000 0.8100 0.8200 0.8300
Columns 85 through 91
0.8400 0.8500 0.8600 0.8700 0.8800 0.8900 0.9000
Columns 92 through 98
0.9100 0.9200 0.9300 0.9400 0.9500 0.9600 0.9700
Columns 99 through 105
0.9800 0.9900 1.0000 1.0100 1.0200 1.0300 1.0400
Columns 106 through 112
1.0500 1.0600 1.0700 1.0800 1.0900 1.1000 1.1100
Columns 113 through 119
1.1200 1.1300 1.1400 1.1500 1.1600 1.1700 1.1800
Columns 120 through 126
1.1900 1.2000 1.2100 1.2200 1.2300 1.2400 1.2500
Columns 127 through 133
1.2600 1.2700 1.2800 1.2900 1.3000 1.3100 1.3200
Columns 134 through 140
1.3300 1.3400 1.3500 1.3600 1.3700 1.3800 1.3900
Columns 141 through 147
1.4000 1.4100 1.4200 1.4300 1.4400 1.4500 1.4600
Columns 148 through 154
1.4700 1.4800 1.4900 1.5000 1.5100 1.5200 1.5300
Columns 155 through 161
1.5400 1.5500 1.5600 1.5700 1.5800 1.5900 1.6000
Columns 162 through 168
1.6100 1.6200 1.6300 1.6400 1.6500 1.6600 1.6700
Columns 169 through 175
1.6800 1.6900 1.7000 1.7100 1.7200 1.7300 1.7400
Columns 176 through 182
1.7500 1.7600 1.7700 1.7800 1.7900 1.8000 1.8100
Columns 183 through 189
1.8200 1.8300 1.8400 1.8500 1.8600 1.8700 1.8800
Columns 190 through 196
1.8900 1.9000 1.9100 1.9200 1.9300 1.9400 1.9500
Columns 197 through 201
1.9600 1.9700 1.9800 1.9900 2.0000
vectory =
Columns 1 through 7
2.0000 2.0097 2.0186 2.0269 2.0346 2.0416 2.0480
Columns 8 through 14
2.0539 2.0591 2.0638 2.0680 2.0716 2.0747 2.0773
Columns 15 through 21
2.0794 2.0811 2.0822 2.0830 2.0833 2.0832 2.0827
Columns 22 through 28
2.0817 2.0805 2.0788 2.0768 2.0744 2.0717 2.0686
Columns 29 through 35
2.0653 2.0616 2.0576 2.0534 2.0488 2.0440 2.0390
Columns 36 through 42
2.0336 2.0281 2.0223 2.0163 2.0100 2.0036 1.9969
Columns 43 through 49
1.9901 1.9830 1.9758 1.9684 1.9608 1.9531 1.9452
Columns 50 through 56
1.9372 1.9290 1.9207 1.9122 1.9036 1.8949 1.8861
Columns 57 through 63
1.8772 1.8681 1.8590 1.8498 1.8404 1.8310 1.8215
Columns 64 through 70
1.8120 1.8023 1.7926 1.7828 1.7730 1.7631 1.7531
Columns 71 through 77
1.7431 1.7330 1.7229 1.7128 1.7026 1.6924 1.6822
Columns 78 through 84
1.6719 1.6616 1.6513 1.6409 1.6306 1.6202 1.6098
Columns 85 through 91
1.5994 1.5890 1.5786 1.5682 1.5578 1.5473 1.5369
Columns 92 through 98
1.5265 1.5161 1.5057 1.4953 1.4850 1.4746 1.4643
Columns 99 through 105
1.4540 1.4437 1.4334 1.4231 1.4129 1.4027 1.3925
Columns 106 through 112
1.3823 1.3722 1.3621 1.3520 1.3419 1.3319 1.3220
Columns 113 through 119
1.3120 1.3021 1.2922 1.2824 1.2726 1.2628 1.2531
Columns 120 through 126
1.2434 1.2338 1.2242 1.2147 1.2051 1.1957 1.1863
Columns 127 through 133
1.1769 1.1675 1.1583 1.1490 1.1398 1.1307 1.1216
Columns 134 through 140
1.1125 1.1035 1.0946 1.0857 1.0768 1.0680 1.0593
Columns 141 through 147
1.0505 1.0419 1.0333 1.0247 1.0162 1.0078 0.9994
Columns 148 through 154
0.9910 0.9827 0.9745 0.9663 0.9581 0.9501 0.9420
Columns 155 through 161
0.9340 0.9261 0.9182 0.9104 0.9026 0.8949 0.8872
Columns 162 through 168
0.8796 0.8720 0.8645 0.8570 0.8496 0.8422 0.8349
Columns 169 through 175
0.8277 0.8205 0.8133 0.8062 0.7991 0.7921 0.7852
Columns 176 through 182
0.7783 0.7714 0.7646 0.7579 0.7512 0.7445 0.7379
Columns 183 through 189
0.7314 0.7249 0.7184 0.7120 0.7057 0.6994 0.6931
Columns 190 through 196
0.6869 0.6807 0.6746 0.6686 0.6625 0.6566 0.6506
Columns 197 through 201
0.6448 0.6389 0.6332 0.6274 0.6217
vectorz =
Columns 1 through 7
4.0000 3.8460 3.7027 3.5691 3.4444 3.3277 3.2183
Columns 8 through 14
3.1155 3.0189 2.9279 2.8420 2.7608 2.6840 2.6113
Columns 15 through 21
2.5424 2.4769 2.4147 2.3555 2.2991 2.2453 2.1941
Columns 22 through 28
2.1451 2.0983 2.0535 2.0106 1.9695 1.9301 1.8923
Columns 29 through 35
1.8560 1.8212 1.7876 1.7554 1.7244 1.6945 1.6657
Columns 36 through 42
1.6379 1.6111 1.5853 1.5603 1.5362 1.5129 1.4903
Columns 43 through 49
1.4685 1.4474 1.4270 1.4072 1.3880 1.3694 1.3513
Columns 50 through 56
1.3339 1.3169 1.3004 1.2844 1.2689 1.2537 1.2391
Columns 57 through 63
1.2248 1.2109 1.1974 1.1842 1.1715 1.1590 1.1469
Columns 64 through 70
1.1350 1.1235 1.1123 1.1013 1.0907 1.0802 1.0701
Columns 71 through 77
1.0602 1.0505 1.0410 1.0318 1.0228 1.0140 1.0054
Columns 78 through 84
0.9970 0.9888 0.9808 0.9729 0.9652 0.9577 0.9504
Columns 85 through 91
0.9432 0.9361 0.9292 0.9225 0.9159 0.9094 0.9031
Columns 92 through 98
0.8969 0.8908 0.8849 0.8790 0.8733 0.8677 0.8622
Columns 99 through 105
0.8568 0.8515 0.8463 0.8413 0.8363 0.8314 0.8266
Columns 106 through 112
0.8219 0.8172 0.8127 0.8082 0.8039 0.7996 0.7954
Columns 113 through 119
0.7912 0.7871 0.7831 0.7792 0.7754 0.7716 0.7678
Columns 120 through 126
0.7642 0.7606 0.7570 0.7536 0.7501 0.7468 0.7435
Columns 127 through 133
0.7402 0.7370 0.7339 0.7308 0.7277 0.7248 0.7218
Columns 134 through 140
0.7189 0.7161 0.7132 0.7105 0.7078 0.7051 0.7025
Columns 141 through 147
0.6999 0.6973 0.6948 0.6923 0.6899 0.6875 0.6851
Columns 148 through 154
0.6828 0.6805 0.6782 0.6760 0.6738 0.6717 0.6695
Columns 155 through 161
0.6674 0.6654 0.6633 0.6613 0.6594 0.6574 0.6555
Columns 162 through 168
0.6536 0.6517 0.6499 0.6481 0.6463 0.6445 0.6428
Columns 169 through 175
0.6411 0.6394 0.6377 0.6361 0.6345 0.6329 0.6313
Columns 176 through 182
0.6297 0.6282 0.6267 0.6252 0.6237 0.6223 0.6209
Columns 183 through 189
0.6194 0.6181 0.6167 0.6153 0.6140 0.6127 0.6114
Columns 190 through 196
0.6101 0.6088 0.6075 0.6063 0.6051 0.6039 0.6027
Columns 197 through 201
0.6015 0.6004 0.5992 0.5981 0.5970
Gráficamente las soluciones son:
Runge Kutta de 3er orden:
2. El caudal de una tubería de descarga de aguas residuales sufre modificaciones en el
tiempo, lo cual está basado en las siguientes ecuaciones:
w(0)=0
V(0)=2
0≤t≤3
h=0,3
Realice un estudio en el cual se observe gráficamente cómo es la modificación he
dicho caudal si se emplea un intervalo de 0,3 horas.
Solución:
Para este caso, la variable independiente es t, por tanto:
t1 = to + h = 0 + 0,3 = 0,3
Para hallar el valor de V y W es necesario buscar los K1, K2 y K3 de cada
variable con las siguientes ecuaciones:
k1w=hF*(ti,Vi,Wi)
k1w= 0,2*
k1w = -0,6
k1V=hG*(ti,Vi,Wi)
k1V= 0,2*
k1V = 0
k2W=hF
k2w = 0,3*(
k2w =-0,927
k2V= hG
k2V = 0,3*
k2V = 0,03375
k3w=h*F(t0+h, w0 + 2k2w-k1w, V0 +2k2V –k1V)
(0+0.3, 0+2*(-0,927)- (-0,6), 2+2*0,03375-0)
(0.3, -1.254, 2.0675)
k3w= 0,3 * (
k3w= -1,463916
k3V=h*G(t0+h, w0 + 2k2w-k1w, V0 +2k2V –k1V)
(0+0.3, 0+2*(-0,927)- (-0,6), 2+2*0,03375-0)
(0.3, -1.254, 2.0675)
k3V= 0,3 * (
k3V= -2,624294
Una vez halladas las respectivas k1, k2 y k3 por variable, se procederá a calcular
las variables independientes:
w1 = w0 + (k1w+4*k2w+k3w)/6
w1 = 0 + (-0,6+ 4*(-0,927)+ (-1,463916)/6
w1=-0,961986
V1 = V0 + (k1V+4*k2V+k3V)/6
V1 = 2+ (0+ 4*0,03375+ (-2,624294))/6
V1=1,585118
Construyendo una tabla de resultados:
Iter. T W V
0 0 0 2
1 0,3 -0,961986 1,585118
El algoritmo en Matlab es:
%Metodo Runge-Kutta de 3erOrden
t=0;
w=0;
v=2;
tmax=3;
h=0.3;
iteraciones=round((tmax-t)/h);
vectorw=w;
vectorv=v;
vectort=t;
for i=1:iteraciones
%calculo de las constantes de Runge-Kutta
K1w=(w^2+2/v-v^2)*h;
K1v=(-w^3+t^2)*h;
K2w=((w+K1w/2)^2+(2/(v+K1v/2))-(v+K1v/2)^2)*h;
K2v=(-(w+K1w/2)^3+(t+h/2)^2)*h;
K3w=((w+2*K2w-K1w)^2+(2/(v+2*K2v-K1v))-(v+2*K2v-K1v)^2)*h;
K3v=(-(w+2*K2w-K1w)^3+(t+h)^2)*h;
w=w+(K1w+4*K2w+K3w)/6;
v=v+(K1v+4*K2v+K3v)/6;
t=t+h;
vectorw=[vectorw w];
vectorv=[vectorv v];
vectort=[vectort t];
end
vectorw
vectorv
vectort
subplot (1,2,1);
plot(vectort,vectorw,'y-o');
title('Metodo Runge-Kutta 3erOrden. t vs w');
xlabel('valores t');
ylabel('valores w');
subplot (1,2,2);
plot(vectort,vectorv,'b-p');
title('Metodo Runge-Kutta 3erOrden. t vs v');
xlabel('valores t');
ylabel('valores v');
Las soluciones Gráficas son:
CONCLUCION
La ventaja de los métodos de Runge-Kutta con respecto al uso de la serie de Taylor, que es
también un método de un paso, es que el métodos de Runge-Kutta requieren sólo de la
función f(X, Y) y de ninguna derivada, mientras que la serie de Taylor sí requiere de la
evaluación de derivadas. Esto hace que, en la práctica, la aplicación de los métodos de
Runge-Kutta sea más simple que el uso de la serie de Taylor.
Este método es útil para casos en los que la solución no puede hallarse por los métodos
convencionales (como separación de variables).
El algoritmo de Runge-Kutta es bastante simple, pero para describir con precisión.
Método de Runge-Kutta es un método más general e improvisada en
comparación con la del método de Euler.
BIBLOGRAFIA
http://es.wikipedia.org/wiki/M%C3%A9todo_de_Runge-Kutta
http://www.scribd.com/doc/23245062/Metodo-de-Runge-Kutta
www.itescam.edu.mx/principal/sylabus/fpdb/.../r45643.DOC
John C. Butcher (2003). Métodos numéricos para ecuaciones diferenciales
ordinarias.
http://mathworld.wolfram.com/Runge-KuttaMethod.html