Diferencia entre revisiones de «Reacciones Complejas. Grupo 25C»
(→M.Runge-Kutta) |
(→Reacción consecutiva) |
||
| Línea 257: | Línea 257: | ||
| − | * ''' | + | * '''y<sub>1</sub>'(t)=k<sub>1</sub>*(a<sub>0</sub>-y<sub>1</sub>(t))*(b<sub>0</sub>-y<sub>1</sub>(t))''' |
| − | * ''' | + | * '''y<sub>2</sub>'(t)=k<sub>2</sub>*(y<sub>1</sub>(t)-y<sub>2</sub>(t))''' |
| − | * ''' | + | * '''y<sub>1</sub>(0)=y<sub>2</sub>(0)=0''' |
| + | |||
| + | * <big>'''k<sub>2</sub>'''</big>: Constante de la velocidad de reacción D, en función de la temperatura, que al ser constante también lo sera '''k2''' | ||
| + | * <big>'''y<sub>1</sub>'(t)'''</big>: Es la derivada de la concentración en el tiempo, es decir, la velocidad de la reacción química de C | ||
| + | * <big>'''y<sub>2</sub>'(t)'''</big>: Velocidad de la reacción química de D | ||
| + | |||
===Resolucion por Euler=== | ===Resolucion por Euler=== | ||
Revisión del 21:20 6 mar 2015
| Trabajo realizado por estudiantes | |
|---|---|
| Título | REACCIONES COMPLEJAS. GRUPO 25C |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2014-15 |
| Autores | Gálvez Aparici, Antonio Megino León, Guillermo Popa, Silviu Sistac Ara, Alejandro Veiga López, Roberto |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 Introducción
Se considera una reacción química irreversible en una solución bien mezclada. Supondremos que la reacción ocurre para un volumen y temperatura constantes. Al inicio se encuentran dos reactivos A y B que van formando un producto C en lo que se conoce como una reacción bimolecular, es decir, una molécula de A y una de B producen una de C:
Supondremos también que se satisface la ley de acción de masas que establece que la velocidad de reacción es proporcional al producto de las concentraciones de los reactivos.
2 Interpretación del enunciado y PVI. Concentración de C
Vamos a comprobar que la concentración del producto C a lo largo del tiempo puede obtenerse a partir de esta ecuación, la de la ley de masas:
A continuación definiremos las constantes y variables que vamos a utilizar:
- k1: Constante de la velocidad de reacción, en función de la temperatura, que al ser constante también lo sera k1
- a0: Concentración inicial de A
- b0: Concentración inicial de B
- y(t): Define la evolución de la concentración de C a lo largo del tiempo
- y'(t): Es la derivada de la concentración en el tiempo, es decir, la velocidad de la reacción química
Por lo tanto, según nuestra ecuación diferencial, las concentraciones de A y B varían en el tiempo disminuyendo según, (a0-y(t)) y (b0-y(t)) respectivamente. Tomaremos el tiempo estrictamente mayor que 0 (t>0), de hecho para t=0 la concentración de C será nula. Estamos ante un PVI.
Problema de valor inicial: Para el intervalo t>0 la ecuación diferencial es continua y derivable en dicho dominio, por tanto tiene solución que sera única porque su primera derivada es continua en este dominio. Cumple el teorema de Cauchy (o PVI).
3 Proceso Reversible
En caso de que el proceso sea reversible nuestra ecuación necesitara un termino adicional que defina como se producen los reactivos. Para esto necesitaremos una nueva constante de velocidad de reacción (k2) dado que suponemos que se sigue satisfaciendo la ley de masas. Este nuevo termino disminuirá la cantidad de producto, por lo tanto el termino aparecerá restando en nuestra ecuación.
La ecuación resultante es la siguiente:
4 Resolución del PVI por el método de Euler
En este apartado resolveremos el problema de valor inicial mediante el método de Euler (primer orden) que se trata de un método explícito. Sabiendo que f(t,y)=k1(a0-y(t))(b0-y(t)) aplicaremos la siguiente formula:
Despejando obtenemos: yn+1 = yn + h*k1(a0-y(t))(b0-y(t))
Suponiendo estos parámetros:
- a0=3[mol/L]
- b0=1[mol/L]
- k1=1[mol/s]
- h=0.1(salto)
- t=[0,2] (segundos)
4.1 Código en Matlab
%Euler
clear all
%Datos del problema
a0=3;
b0=1;
t0=0;
tN=2;
y0=0;
h=0.1;
k1=1;
%Calculamos el número de subintervalos
N=round((tN-t0)/h);
%Definimos la variable independiente
t=t0:h:tN;
%Definimos el vector y
y=zeros(1,N+1);
y(1)=y0;
for i=1:N
y(i+1)=y(i)+h*k1*(a0-y(i))*(b0-y(i));
end
%Dibujamos la grafica
hold on
plot(t,y,'linewidth',2);
plot(t,(a0-y),'g','linewidth',2);
plot(t,(b0-y),'r','linewidth',2);
legend('C','A','B');
xlabel('tiempo(s)');
ylabel('concentracion[mol/l]');
hold off
4.2 Gráfica método de Euler
Como se observa en la gráfica, la concentración de C aumenta en la proporción que disminuyen los reactivos A y B. Podemos ver que la velocidad disminuye en el tiempo según una ley asintótica hasta ser nula cuando se agota el reactivo limitante, en nuestro caso el B.
5 Resolución del PVI por el método de Euler cuando t→∞
Una vez realizado el método de Euler para un intervalo de 2 segundos nos damos cuenta de que las concentraciones convergen y podemos presuponer que se mantendrán constantes, pero vamos a comprobarlo para el límite t→∞. Para ello basta con realizar el mismo programa que el anterior pero con la salvedad de modificar el tiempo hasta un valor que se pueda considerar comparable a ∞ para comprobar que se mantienen constantes las concentraciones, tomaremos 10 segundos ya que la reacción tarda poco tiempo:
%Euler
clear all
%Datos del problema
a0=3;
b0=1;
t0=0;
tN=10;
y0=0;
h=0.1;
k1=1;
%Calculamos el número de subintervalos
N=round((tN-t0)/h);
%Definimos la variable independiente
t=t0:h:tN;
%Definimos el vector y
y=zeros(1,N+1);
y(1)=y0;
for i=1:N
y(i+1)=y(i)+h*k1*(a0-y(i))*(b0-y(i));
end
%Dibujamos la grafica
hold on
plot(t,y,'linewidth',2);
plot(t,(a0-y),'g','linewidth',2);
plot(t,(b0-y),'r','linewidth',2);
legend('C','A','B');
xlabel('tiempo(s)');
ylabel('concentracion[mol/l]');
hold off
Como habíamos previsto las concentraciones tienden a A=2 mol/l; B=0 mol/l; C=1 mol/l. Este es debido a que el compuesto B es el limitante de la reacción, por lo que al agotarse, se mantienen estables las demás concentraciones.
6 Resolución del PVI con los métodos del Trapecio y Runge-Kutta
Una vez resuelto el método de Euler, procedemos a resolver el problema con los métodos del Trapecio y Runge-Kutta (cuarto orden) con las siguientes condiciones iniciales:
- a0=3[mol/L]
- b0=1[mol/L]
- k1=1[mol/s]
- h=0.1(salto)
- t=[0,2] (segundos)
6.1 M.Trapecio
Para resolver el problema por el método del Trapecio debemos tener en cuenta que no es un método explicito como lo era el método de Euler, sino que es implícito. Sabiendo que f(t,y)=k1(a0-y(t))(b0-y(t)) aplicaremos la formula del trapecio:
para despejar la componente yn+1 que es la que utilizaremos para operar el método numéricamente.
El código de Matlab para el método del Trapecio sera el siguiente:
%trapecio
clear all
%datos del problema
t0=0;
tN=2;
h=0.1;
k1=1;
y0=0;
a0=3;
b0=1;
%creamos el vector y, que representara cada una de las soluciones
N=round((tN-t0)/h);
y=zeros(1,N+1);
% defino la variable independiente
t=t0:h:tN;
%defino el primer valor
y(1)=y0;
%resolucion de la ecuacion
for i=1:N
R=(h*k1*a0*b0)/2+y(i)+((h*k1)/2)*(a0-y(i))*(b0-y(i));
Q=((h*k1*(a0+b0))/2)+1;
y(i+1)=(Q-sqrt(Q^2-2*h*k1*R))/(h*k1);
end
%grafico
hold on
plot(t,y,'c','linewidth',2);
plot(t,(a0-y),'k','linewidth',2);
plot(t,(b0-y),'r','linewidth',2);
legend('C','A','B')
xlabel('tiempo(s)');
ylabel('concentracion[mol/l]');
hold off
6.2 M.Runge-Kutta
El método de Runge-Kutta (cuarto orden) se trata de un método explícito al igual que el de Euler, por lo que no será necesario despejar ninguna componente para operar el método numéricamente. Procedemos directamente al igual que hicimos con el método de Euler:
%Runge Kutta
clear all
%Datos del problema
a0=3;
b0=1;
t0=0;
tN=2;
y0=0;
h=0.1;
k1=1;
%Calculamos el número de subintervalos
N=round((tN-t0)/h);
t=t0:h:tN;
y=zeros(1,N+1);
y(1)=y0;
for i=1:N
y1=k1*(a0-y(i))*(b0-y(i));
y2=k1*(a0-(y(i)+(h/2)*y1))*(b0-(y(i)+(h/2)*y1));
y3=k1*(a0-(y(i)+(h/2)*y2))*(b0-(y(i)+(h/2)*y2));
y4=k1*(a0-(y(i)+h*y3))*(b0-(y(i)+h*y3));
y(i+1)=y(i)+(h/6)*(y1+2*y2+2*y3+y4);
end
%Soluciones
plot(t,y,'c','linewidth',2);
a=3.-y;
b=1.-y;
hold on
plot(t,a,'k','linewidth',2);
plot(t,b,'r','linewidth',2);
legend('C','A','B');
xlabel('tiempo(s)');
ylabel('concentracion[mol/l]');
hold off
Una vez realizados los tres métodos numéricos de resolución de PVI podemos observar la gran similitud entre ellos, tendiendo todos a la misma concentración a los dos segundos manteniéndose esta estable. El método del Trapecio y el de Runge-Kutta son más similares entre ellos porque tienen mayor orden que el de Euler (segundo orden y cuarto orden respectivamente), a su vez siendo más precisos como se demuestra en la gráfica teniendo ambos una curvatura mas similar (más suave que la de Euler).
7 Reacción consecutiva
Supongamos ahora que se produce una reacción consecutiva de la forma:
El PVI es un sistema de ecuaciones en el cual, la primera refleja la producción de C y la segunda representa la producción de D, estando esta relacionada con la cantidad de producto C que se ha producido en función del tiempo. Los valores en t=0 son las concentraciones iniciales de los productos, es decir, nulos.
- y1'(t)=k1*(a0-y1(t))*(b0-y1(t))
- y2'(t)=k2*(y1(t)-y2(t))
- y1(0)=y2(0)=0
- k2: Constante de la velocidad de reacción D, en función de la temperatura, que al ser constante también lo sera k2
- y1'(t): Es la derivada de la concentración en el tiempo, es decir, la velocidad de la reacción química de C
- y2'(t): Velocidad de la reacción química de D
7.1 Resolucion por Euler
%Euler
clear all
%Datos del problema
a0=3;
b0=1;
t0=0;
tN=10;
y10=0;
y20=0;
h=0.1;
k1=1;
k2=5;
%Calculamos el número de subintervalos
N=round((tN-t0)/h);
%Definimos la variable independiente
t=t0:h:tN;
%Definimos el vector y
y1=zeros(1,N+1);
y2=zeros(1,N+1);
y1(1)=y10;
y2(1)=y20;
for i=1:N
y1(i+1)=y1(i)+h*(k1*(a0-y1(i))*(b0-y1(i)));
y2(i+1)=y2(i)+h*(k2*(y1(i)-y2(i)));
end
%Dibujamos la grafica
hold on
C=y1-y2;
D=y2;
plot(t,C,'c',t,D,'b','linewidth',1.5);
plot(t,(a0-y1),'k','linewidth',1.5);
plot(t,(b0-y1),'r','linewidth',1.5);
legend('C','D','A','B');
xlabel('tiempo(s)');
ylabel('concentracion[mol/l]');
hold off
Con paso h=0.1 y K2=5
Con paso h=0.3 y K2=5
Con paso h=0.1 y K2=1/5
7.2 Resolucion por Runge Kutta
%Runge Kutta
clear all
%Datos del problema
a0=3;
b0=1;
t0=0;
tN=10;
y0=0;
h=0.1;
k1=1;
k2=5;
%Calculamos el número de subintervalos
N=round((tN-t0)/h);
t=t0:h:tN;
y=zeros(1,N+1);
z=zeros(1,N+1);
y(1)=y0;
z(1)=y0;
for i=1:N
y1=k1*(a0-y(i))*(b0-y(i));
y2=k1*(a0-(y(i)+(h/2)*y1))*(b0-(y(i)+(h/2)*y1));
y3=k1*(a0-(y(i)+(h/2)*y2))*(b0-(y(i)+(h/2)*y2));
y4=k1*(a0-(y(i)+h*y3))*(b0-(y(i)+h*y3));
y(i+1)=y(i)+(h/6)*(y1+2*y2+2*y3+y4);
z1=k2*(y(i)-z(i));
z2=k2*(y(i)-(z(i)+(h/2)*z1));
z3=k2*(y(i)-(z(i)+(h/2)*z2));
z4=k2*(y(i)-(z(i)+h*z3));
z(i+1)=z(i)+(h/6)*(z1+2*z2+2*z3+z4);
end
%Soluciones
yc=y-z;
plot(t,y,'c',t,yc,'b','linewidth',1.5);
a=3.-y;
b=1.-y;
hold on
plot(t,a,'k','linewidth',1.5);
hold on
plot(t,b,'r','linewidth',1.5);
legend('D','C','A','B');
xlabel('tiempo(s)');
ylabel('concentracion[mol/l]');
hold off
Con h=0.1 y K2=5
Con h=0.3 y K2=5
Con h=0.1 y K2=1/5








