El documento presenta un análisis de estabilidad y rigidez para una reacción química en un reactor batch utilizando ecuaciones de balance de masa. Se comparan diferentes algoritmos como ode15s, ode23s y ode23tb para resolver el sistema stiff numéricamente en MATLAB y Simulink. Los resultados muestran que un método con paso variable es necesario para capturar el cambio rápido en la concentración de uno de los componentes.
3. Reacción en el reactor quimico
batch.
A k1 B+C k3 2 B
k2
k1 = 0.04;
k2 = 1e4;
k3 = 3e7;
Balance de masa a los reactores para cada uno
de sus componentes.
𝑑𝐶𝑎
𝑑𝑡
= −𝑘1 ∗ 𝐶𝑎 + 𝑘2 ∗ 𝐶𝑏 ∗ 𝐶𝑐
𝑑𝐶𝑏
𝑑𝑡
= 𝑘1 ∗ 𝐶𝑎 − 𝑘2 ∗ 𝐶𝑏 ∗ 𝐶𝑐 − 𝑘3 ∗ 𝐶𝑏2
𝑑𝐶𝑐
𝑑𝑡
= 𝑘3 ∗ 𝐶𝑏2
4. Consideraciones sobre los Algoritmos a Utilizados
Para un problema stiff las soluciones pueden cambiar sobre una
escala de tiempo que es muy corta comparada con el intervalo de
integración, pero la solución de interés cambia sobre escalas de
tiempo mucho más largas.
Los métodos no diseñados para problemas stiff son ineficientes
sobre intervalos donde la solución cambia lentamente debido a que
usan pasos temporales suficientemente pequeños como para resolver
el cambio más rápido posible.
Las ode15s y ode23s generan numéricamente las matrices
Jacobianas.
5. En mayor medida utilizaremos las ode45 y ode15s (la 's' significa que
utiliza un método implícito).
Por lo general, los solvers de MATLAB serán mejores de los que
podría programar Ud. mismo.
Son capaces de estimar el error en la solución en cada etapa
temporal y decidir si el paso es demasiado grande (error alto) o
demasiado pequeño (ineficiente).
Es más importante que Ud. entienda conceptos tales como esquemas
implícitos, esquemas explícitos y orden de exactitud del algoritmo en
lugar de saber exactamente que hace internamente la rutina de
cálculo.
6. Algoritmos Utilizados.
Para los siguientes algoritmos se destinan para resolver sistemas
stiff. Si ellos aparecen excesivamente lentos, se utilizan otros
métodos como ser:
ode15s:Es un método de orden variable basado en la fórmula de
diferenciación numérica NDFs. Opcionalmente, usa la fórmula de
diferencias hacia atrás, BDFs. (backward differentiation formula),
también conocida como método de Gear.
ode23s: Se basa en una fórmula modificada de Rosenbrock de orden
2. Dado que es un solver de paso simple puede ser más eficiente que la
ode15s para tolerancias más altas. Puede resolver algunos tipos de
problemas stiff para los cuales la ode15s no es efectiva.
7. ode23t: Implementa la regla del trapecio utilizando una interpolación
libre. Utilizar este solver si el problema es solo moderadamente stiff y
Se requiere una solución sin amortiguamiento numérico.
ode23tb: Es una implementación de la fórmula TR-BDF2,
fórmula implícita de Runge-Kutta con una primera etapa
que es una regla trapezoidal y una segunda etapa que es que es una
fórmula de diferenciación hacia atrás de orden 2. Por
construcción, se utiliza la misma matriz de iteración en la
evaluación de ambas etapas. Como en la ode23s, este solver
puede ser más eficiente que la ode15s para tolerancias más
altas.
8. Sentencia
.
Tipo de
método.
Tipo de
problema.
Orden de
exactitud.
Cuando de usa.
ode45 Explicito No stiff 4º de exactitud
media
En general,ode45 es el mejor método para aplicar
como primer intento para resolver.
ode23 Explicito. No stiff 2º y 3º orden, baja
exactitud
Ante baja tolerancia de error o resolución de
problemas moderadamente stiff.
ode113 Explicito. No stiff Ante tolerancia estrictas de error y en la
resolución de un archivo odelife computacional.
ode15s Implícito. Stiff De 1º a 5º orden
exactitud baja y
media
Si ode45 es lento (sistema stiff)
ode23s Implícito. Stiff Baja exactitud,
pero puedeser
mejor que ode15s
ode23tb Implícito Stiff Baja exactitud,
pero puedeser
mejor que ode15s
9. function dC = rent(t,C)
dC = zeros(3,1);
a=1;b=2;c=3;
k1 = 0.04;
k2 = 1e4;
k3 = 3e7;
dC(a) = -k1*C(a)+k2*C(b)*C(c);
dC(b) = k1*C(a)-k2*C(b)*C(c)-k3*C(b)^2;
dC(c) = k3*C(b)^2
10. options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]); [t,C] = ode15s(@rent,[0 0.1],[1 0
0],options);
figure(1) ; plot(t,C(:,1),'-','color','r'); xlabel('tiempo [s]','fontSize',20,'color','k');grid on
ylabel('concentracion de A','fontSize',20,'color','k'); title('Ode15s
matlab','fontSize',20,'color','k');
grid on
figure(2); plot(t,C(:,2),'-','color','c'); xlabel('tiempo [s]','fontSize',20,'color','k');grid on
ylabel('concentracion de B','fontSize',20,'color','k');
title('Ode15smatlab','fontSize',20,'color','k');
grid on
figure(3)
plot(t,C(:,3),'-','color',[0.08 0.17 0.55])
xlabel('tiempo [s]','fontSize',20,'color','k');grid on
ylabel('concentracion de C','fontSize',20,'color','k')
title('Ode15s matlab','fontSize',20,'color','k');
grid on
18. Identificación del stiff en la concentración del
compuesto b.
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
0
0.5
1
1.5
2
2.5
3
3.5
4
x 10
-5
tiempo [s]
concentraciondeB Ode15s matlab
Ambiente matlab
Ambiente simulink
19. Conclusión.
Un paso contante de integración no mostraría el cambio ocurrido en la
figura 4. y por ende nos muestra un error el software Matlab/simulink.
Todos los métodos numérico con stiff resuelven este tipo de sistemas
de ecuaciones implícita con paso variable de integración.