Diferencia entre revisiones de «Reaccion Autocatalisis Grupo 2B»
| Línea 48: | Línea 48: | ||
== ''Resolución del PVI'' == | == ''Resolución del PVI'' == | ||
| + | |||
| + | La resolución del PVI se ha llevado acabo por diferentes métodos: | ||
| + | |||
| + | Método de Euler: | ||
{{matlab|codigo= | {{matlab|codigo= | ||
| Línea 87: | Línea 91: | ||
}} | }} | ||
| + | |||
| + | Método del Trapecio y Runge-kutta: | ||
| + | |||
| + | {{matlab|codigo= | ||
| + | % Datos | ||
| + | A=2; | ||
| + | B=0.05; | ||
| + | k=1.4; | ||
| + | h=0.1; | ||
| + | t0=0; | ||
| + | tN=10; | ||
| + | |||
| + | |||
| + | c=2.05; | ||
| + | |||
| + | |||
| + | f=@(t,y)(-k*y^2+k*c*y); | ||
| + | |||
| + | % Discretizamos | ||
| + | N=round((tN-t0)/h); | ||
| + | |||
| + | % Creamos el vector de tiempo t | ||
| + | t=linspace(t0,tN,N+1); | ||
| + | |||
| + | % Metodo del trapecio | ||
| + | yt=zeros(1,N+1); | ||
| + | yt(1)=B; | ||
| + | for i=1:N | ||
| + | yt(i+1)=(-1+0.5*h*k*c+sqrt((1-0.5*h*k*c)^2+2*h*k*(yt(i)+0.5*h*f(t(i),y(i)))))/(h*k); | ||
| + | end | ||
| + | |||
| + | xt=c-yt; | ||
| + | |||
| + | hold on | ||
| + | plot(t,yt,'k') | ||
| + | plot(t,xt,'b') | ||
| + | hold off | ||
| + | legend('Cantidad de productos (trapecio)','Cantidad de reactivos (trapecio)') | ||
| + | |||
| + | % metodo de Runge-Kutta | ||
| + | yr=zeros(1,N+1); | ||
| + | yr(1)=B; | ||
| + | for j=1:N | ||
| + | K1=f(t(j),yr(j)); | ||
| + | K2=f(t(j)+0.5*h,yr(j)+0.5*h*K1); | ||
| + | K3=f(t(j)+0.5*h,yr(j)+0.5*h*K2); | ||
| + | K4=f(t(j)+h,yr(j)+K3*h); | ||
| + | yr(j+1)=yr(j)+h*(K1+2*K2+2*K3+K4)/6; | ||
| + | end | ||
| + | xr=c-yr; | ||
| + | |||
| + | % Dibujamos la solucion aproximada | ||
| + | figure | ||
| + | hold on | ||
| + | plot(t,yr,'r') | ||
| + | plot(t,xr,'g') | ||
| + | hold off | ||
| + | legend('Cantidad de reactivos(Runge-kutta)','Cantidad de reactivos (Runge-kutta)') | ||
| + | }} | ||
| + | |||
| + | Una vez realizados los programas y obtenidas las gráficas correspondientes, podemos concluir | ||
Revisión del 18:56 25 abr 2017
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Reacción con autocatálisis. Grupo 2-B |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2016-17 |
| Autores | Gonzalo Royo Navajas, Marta Caracuel Mateos, Carlota Sánchez Martínez, Abid Al-Akioui Sanz, Alejandro Prieto Martínez, Pablo Retamar Leboutet |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
1 INTRODUCCIÓN
Una reacción de autocatálisis es un proceso mediante el cual un compuesto químico induce y controla una reacción química sobre si mismo. En este caso, se estudiará una reacción, regida por la constante k, bimolecular e irreversible en la cual se suponen unos reactivos A y B que presentan un volumen y una temperatura constantes.
A+B → C
Dichas condiciones satisfacen la ley de acción de masas, es decir, la velocidad de la reacción en cuestión será proporcional al producto de las concentraciones de A y B. Para desarrollar el análisis, nos ayudaremos del principio de conservación de la materia, por el cual la suma de la masa de los reactivos y los productos se mantendrá constante a lo largo del tiempo. Así pues, darán como producto un tercer compuesto:
A+B → k * 2B
La resolución de la ecuación diferencial para y se apoya en las dos leyes mencionadas con anterioridad. De esta forma, determinamos las siguientes ecuaciones:
x=A+B
y=2B
Por el método de sustitución podemos deducir la variables dependientes A y B: [math] \left\{\begin{matrix} A=x-y/2\\ B=y/2 \end{matrix}\right. [/math]
A partir del principio de conservación de la masa obtenemos que
x+y=cte (1)
A su vez también se sabe que la velocidad es proporcional al producto de las concentraciones de los reactivos: v=kAB, por lo tanto, v=y’=-x’. Por lo que concluimos que y’=kAB en la que sustituimos los valores de los reactivos previamente determinados:
y’=k*[x-y/2]*[y/2]; y'=k*[x-y/2]*y; y'=k*[cte-y-y/2]*y; y'=k*[cte-3/2*y]*y; y'=3/2*k*[2/3*cte-y]*y; y'=k*[cte-y]*y; y'=k*x*y
De (1) concluimos que: x=cte-y.
Y sustiyendo en la fórmula anteriormente demostrada, obtenemos que:
y'=-k*y^2+k*y*cte
A partir de la cual se forma el PVI correspondiente: [math] \left\{\begin{matrix} y'=-k*y^2+k*y*cte\\ y(0)=y0 \end{matrix}\right. [/math]
Para poder resolver el PVI se necesita calcular el valor de la cte:
x=A+B → A=x-y/2
y=2B → B=y/2
Según los datos teóricos, A=2 y B=0.05 mol/L, despejando en las ecuaciones anteriores se obtienen los valores de x e y, siendo 1.95 y 0.1 respectivamente. Por lo tanto:
cte=x+y=1.95+0.1=2.05
2 Resolución del PVI
La resolución del PVI se ha llevado acabo por diferentes métodos:
Método de Euler:
% Datos
A=2;
B=0.05;
k=1.4;
h=0.1;
t0=0;
tN=10;
c=2.05;
f=@(t,y)(-k*y^2+k*c*y);
% Discretizamos
N=round((tN-t0)/h);
% Creamos el vector de tiempo t
t=linspace(t0,tN,N+1);
% Vector con la solucion por aproximacion
y=zeros(size(t));
y(1)=B;
% Utilizamos el metodo de Euler
for i=1:N
y(i+1)=y(i)+h*f(t(i),y(i));
end
x=c-y;
% Dibujamos la solucion aproximada
hold on
plot(t,y,'b')
plot(t,x,'g')
hold off
legend('Cantidad de productos','Cantidad de reactivos')
xlabel('Tiempo (s)');
ylabel('Concentración (mol/L)');
% Calculamos el momento en el que coinciden las dos concentraciones:
for i=1:N
if abs(y(i)-x(i))<0.01
fprintf('Corte en punto (%.2f,%.2f)\n',t(i),y(i))
end
end
Método del Trapecio y Runge-kutta:
% Datos
A=2;
B=0.05;
k=1.4;
h=0.1;
t0=0;
tN=10;
c=2.05;
f=@(t,y)(-k*y^2+k*c*y);
% Discretizamos
N=round((tN-t0)/h);
% Creamos el vector de tiempo t
t=linspace(t0,tN,N+1);
% Metodo del trapecio
yt=zeros(1,N+1);
yt(1)=B;
for i=1:N
yt(i+1)=(-1+0.5*h*k*c+sqrt((1-0.5*h*k*c)^2+2*h*k*(yt(i)+0.5*h*f(t(i),y(i)))))/(h*k);
end
xt=c-yt;
hold on
plot(t,yt,'k')
plot(t,xt,'b')
hold off
legend('Cantidad de productos (trapecio)','Cantidad de reactivos (trapecio)')
% metodo de Runge-Kutta
yr=zeros(1,N+1);
yr(1)=B;
for j=1:N
K1=f(t(j),yr(j));
K2=f(t(j)+0.5*h,yr(j)+0.5*h*K1);
K3=f(t(j)+0.5*h,yr(j)+0.5*h*K2);
K4=f(t(j)+h,yr(j)+K3*h);
yr(j+1)=yr(j)+h*(K1+2*K2+2*K3+K4)/6;
end
xr=c-yr;
% Dibujamos la solucion aproximada
figure
hold on
plot(t,yr,'r')
plot(t,xr,'g')
hold off
legend('Cantidad de reactivos(Runge-kutta)','Cantidad de reactivos (Runge-kutta)')
Una vez realizados los programas y obtenidas las gráficas correspondientes, podemos concluir