Diferencia entre revisiones de «Reacciones con Autocatálisis Grupo A17»

De MateWiki
Saltar a: navegación, buscar
(Método del Trapecio)
Línea 103: Línea 103:
 
legend('Concentracion y','Concentracion x','location','best')
 
legend('Concentracion y','Concentracion x','location','best')
 
}}
 
}}
 +
[[Archivo:Graficapartado2b.jpg|marco|derecha|Método del Trapecio]]
 
====Método del Trapecio====
 
====Método del Trapecio====
 
{{matlab|codigo=
 
{{matlab|codigo=
Línea 132: Línea 133:
 
legend('Concentracion y','Concentracion x','location','best')
 
legend('Concentracion y','Concentracion x','location','best')
 
}}
 
}}
 +
 
====Método de Runge-Kutta====
 
====Método de Runge-Kutta====
 
{{matlab|codigo=
 
{{matlab|codigo=

Revisión del 18:24 6 mar 2015

Trabajo realizado por estudiantes
Título Reacciones con Autocatálisis. Grupo A17
Asignatura Ecuaciones Diferenciales
Curso Curso 2014-15
Autores Daniel Diez Sanz, Jorge Fernández Mendoza, Guillermo Mella Martínez
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura

1 Introducción

En el presente informe se plantea un estudio de las concentraciones de los productos y

reactivos de una reacción química, basándose en la Ley de Acción de masas y el Principio de

conservación de la materia, basados en que la materia ni se crea ni se destruye, y por tanto se

deberá mantener constante entre los productos y los reactivos, así como que la velocidad de la

reacción es proporcional al producto de las concentraciones de los reactivos.

Para ello se usarán los métodos numéricos de Euler, Trapecio, Runge-Kutta y Heun en el

programa informático Matlab y se mostrarán las soluciones a través de gráficos en una misma

imagen que permitan comparar las evoluciones de las concentraciones de los elementos en el

tiempo.

A continuación se muestra el enunciado del ejercicio a realizar.

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.

A + B → C.

2 REACCIÓN 1

2.1 Interpretación del problema y deducción de las ecuaciones diferenciales con valor inicial

En este ejercicio analizaremos el caso particular en el que A se transforma en B pero

suponiendo que la presencia de B hace de efecto catalítico en la reacción. Escribiremos este

proceso como una reacción bimolecular.

A + B →k1 2B

En primer lugar se establece x(t) e y(t) como las concentraciones de los reactivos que aparecen

en la ecuación de arriba. Para deducir la ecuación en función de una única variable y(t), se

parte de la ley de conservación de la masa, que establece que la suma de concentraciones es

siempre constante.

x(t)+y(t)=cte=c

Asimismo se conoce la ley de conservación de masas que nos proporciona la velocidad de

reacción k1 para las concentraciones de los reactivos.

y’(t)=k1*x(t)*y)t)

Sustituyendo la variable x(t) de la primera ecuación en la segunda obtenemos la ecuación

diferencial deseada:

y′(t)=k1∗(c−y(t))∗y(t)

Si a la misma, se le añade que y(0)=y0, se dispondría de un PVI en función de las

concentraciones iniciales y la velocidad de reacción que se irán introduciendo en los

sucesivos apartados.

2.2 Resolución numérica del PVI

Método de Euler

2.2.1 Método de Euler

% dy=k1*(c-y)*y   x0=1   y0=0.01   k1=1   h=0.1   [0,10]   c=1.01

% Datos del problema
t0=0;
tN=10; 
y0=0.01;
h=0.1; % tamaño de paso
t=t0:h:tN; 
N=(tN-t0)/h; % número de intervalos
y=zeros(1,length(t)); % matriz de 1 por N+1
y(1)=y0;

% Euler
for i=1:N
    y(i+1)=y(i)+h*(y(i)*(1.01-y(i)));
end
x=1.01-y;

% grafico
hold on
plot(t,y,'r')
plot(t,x,'g')
hold off
legend('Concentracion y','Concentracion x','location','best')
Archivo:Graficapartado2b.jpg
Método del Trapecio

2.2.2 Método del Trapecio

% dy=k1*(c-y)*y   x0=1   y0=0.01   k1=1   h=0.1   [0,10]   c=1.01

% Datos del problema
k=1;
c=1.01;
t0=0;
tN=10; 
y0=0.01;
h=0.1; % tamaño de paso
t=t0:h:tN; 
N=(tN-t0)/h; % número de intervalos
y=zeros(1,length(t)); % matriz de 1 por N+1
y(1)=y0;

% Trapecio
for i=1:N
     y(i+1)=(1/(h*k))*((0.5*h*k*c-1)+sqrt((1-0.5*h*k*c)^2-2*h*k*(-y(i)-(h/2)*y(i)*(c-y(i)))));
end
x=1.01-y;

% grafico
hold on
plot(t,y,'r')
plot(t,x,'g')
hold off
legend('Concentracion y','Concentracion x','location','best')


2.2.3 Método de Runge-Kutta

% dy=k1*(c-y)*y   x0=1   y0=0.01   k1=1   h=0.1   [0,10]   c=1.01

% Datos del problema
k=1;
c=1.01;
t0=0;
tN=10; 
y0=0.01;
h=0.1; % tamaño de paso
t=t0:h:tN; 
N=(tN-t0)/h; % número de intervalos
y=zeros(1,length(t)); % matriz de 1 por N+1
y(1)=y0;

% RK4
for i=1:N
    K1=k*(c-y(i))*y(i);
    K2=k*(c-y(i)+0.5*K1*h)*(y(i)+0.5*K1*h);
    K3=k*(c-y(i)+0.5*K2*h)*(y(i)+0.5*K2*h);
    K4=k*(c-y(i)+K3*h)*(y(i)+K3*h);
    y(i+1)=y(i)+h/6*(K1+2*K2+2*K3+K4); 
end
x=1.01-y;

% grafico
hold on
plot(t,y,'r')
plot(t,x,'g')
hold off
legend('Concentracion y','Concentracion x','location','best')

2.3 Resolver en forma de sistema por medio de Euler y RK4

% dy=k*x*y   dx=-k*x*y

% Datos del problema
k=1;
t0=0;
tN=10; 
y0=0.01;
x0=1;
h=0.1; % tamaño de paso
t=t0:h:tN; 
N=(tN-t0)/h; % número de intervalos
y=zeros(1,length(t)); % matriz de 1 por N+1
y(1)=y0;
x=zeros(1,N+1);
x(1)=x0;

% Euler

for i=1:N
   y(i+1)=y(i)+h*(k*y(i)*x(i));
   x(i+1)=x(i)+(-h)*(k*y(i)*x(i));
end

% grafico
hold on
plot(t,y,'r')
plot(t,x,'g')
hold off
legend('Concentracion y','Concentracion x','location','best')
% dy=k*x*y   dx=-k*x*y

% Datos del problema
k=1;
t0=0;
tN=10; 
y0=0.01;
x0=1;
h=0.1; % tamaño de paso
t=t0:h:tN; 
N=(tN-t0)/h; % número de intervalos
y=zeros(1,length(t)); % matriz de 1 por N+1
y(1)=y0;
x=zeros(1,N+1);
x(1)=x0;

% RK4
for i=1:N
    K1_y=k*x(i)*y(i);
    K1_x=-k*x(i)*y(i);
    K2_y=k*(x(i)+h/2*K1_x)*(y(i)+h/2*K1_y);
    K2_x=-k*(x(i)+h/2*K1_x)*(y(i)+h/2*K1_y);
    K3_y=k*(x(i)+h/2*K2_x)*(y(i)+h/2*K2_y);
    K3_x=-k*(x(i)+h/2*K2_x)*(y(i)+h/2*K2_y);
    K4_y=k*(x(i)+h*K3_x)*(y(i)+h*K3_y);
    K4_x=-k*(x(i)+h*K3_x)*(y(i)+h*K3_y);
    y(i+1)=y(i)+h/6*(K1_y+2*K2_y+2*K3_y+K4_y);
    x(i+1)=x(i)+h/6*(K1_x+2*K2_x+2*K3_x+K4_x);
end

% resultados
[y',x',t']
% grafico
hold on
plot(t,y,'r')
plot(t,x,'g')
hold off
legend('Concentracion y','Concentracion x','location','best')

3 REACCIÓN Nº2

3.1 Interpretación del problema y deducción de las ecuaciones diferenciales con valor inicial

En esta segunda parte del trabajo, se estudia la ecuación consecutiva de Lotka (1920)

A + X →k1 2X

X + Y →k2 2Y

Y →k3 B

Donde A, X, Y, B son sustancias distintas. Observamos que las dos primeras reacciones son

autocatalíticas. La reacción consume A para producir B mientras que X e Y dominan la

velocidad y mezcla en los estados intermedios. Siguiendo la estrategia de los apartados 1 y 2

deducir las siguientes ecuaciones diferenciales para las concentraciones interpretando

adecuadamente los términos:

X’(t) = k1Ax − k2xy,

y’(t)= k2xy − k3y

B’(t) = k3y

A’ + x’ + y’ + B’ = 0

En los sucesivos apartados se proporcionará un valor inicial x(0), y(0), A(0), B(0) que permitirá

resolver de manera completa las ecuaciones propuestas arriba.

3.2 Resolución numérica del sistema de ecuaciones diferenciales con valor inicial

3.2.1 Método de Euler

% dx=k1*A*x-k2*x*y   dy=k2*x*y-k3*y   dB=k3*y   dA+dx+dy+dB=0 ==> dA=-k1*A*x

% Datos del problema
t0=0; 
tN=200; 
A0=5;
x0=5*(10^-4);
y0=10^(-5);
B0=0;
k1=0.1;
k2=0.1;
k3=0.05;
h=0.01; % tamaño de paso
t=t0:h:tN;
N=(tN-t0)/h; % número de intervalos

y=zeros(1,length(t)); % matrices de 1 por N+1
x=zeros(1,length(t));
A=zeros(1,length(t));
B=zeros(1,length(t));
y(1)=y0;
A(1)=A0;
B(1)=B0;
x(1)=x0;

% Euler
for i=1:N
    x(i+1)=x(i)+h.*(k1.*A(i).*x(i)-k2.*x(i).*y(i));
    y(i+1)=y(i)+h.*(k2.*x(i).*y(i)-k3.*y(i));
    B(i+1)=B(i)+h.*(k3*y(i));
    A(i+1)=A(i)+h.*(-k1.*x(i).*A(i));
end

% grafico
hold on
plot(t,x)
plot(t,y,'r')
plot(t,B,'g')
plot(t,A,'c')
hold off
legend('Concentración X','Concentración de Y','Concentración de B','Concentración de A','Location','best');
% dx=k1*A*x-k2*x*y   dy=k2*x*y-k3*y   dB=k3*y   dA+dx+dy+dB=0 ==> dA=-k1*A*x

% Datos del problema
t0=0; 
tN=200; 
A0=5;
x0=5*(10^-4);
y0=10^(-5);
B0=0;
k1=0.1;
k2=0.1;
k3=0.05;
h=0.001; % tamaño de paso
t=t0:h:tN;
N=(tN-t0)/h; % número de intervalos

y=zeros(1,length(t)); % matrices de 1 por N+1
x=zeros(1,length(t));
A=zeros(1,length(t));
B=zeros(1,length(t));
y(1)=y0;
A(1)=A0;
B(1)=B0;
x(1)=x0;

% Euler
for i=1:N
    x(i+1)=x(i)+h.*(k1.*A(i).*x(i)-k2.*x(i).*y(i));
    y(i+1)=y(i)+h.*(k2.*x(i).*y(i)-k3.*y(i));
    B(i+1)=B(i)+h.*(k3*y(i));
    A(i+1)=A(i)+h.*(-k1.*x(i).*A(i));
end

% grafico
hold on
plot(t,x)
plot(t,y,'r')
plot(t,B,'g')
plot(t,A,'c')
hold off
legend('Concentración X','Concentración de Y','Concentración de B','Concentración de A','Location','best');

3.2.2 Método de Heun

% dx=k1*A*x-k2*x*y   dy=k2*x*y-k3*y   dB=k3*y   dA+dx+dy+dB=0 ==> dA=-k1*A*x

% Datos del problema
t0=0; 
tN=200; 
A0=5;
x0=5*(10^-4);
y0=10^(-5);
B0=0;
k1=0.1;
k2=0.1;
k3=0.05;
h=0.01; % tamaño de paso
t=t0:h:tN;
N=(tN-t0)/h; % número de intervalos

y=zeros(1,length(t)); % matrices de 1 por N+1
x=zeros(1,length(t));
A=zeros(1,length(t));
B=zeros(1,length(t));
y(1)=y0;
A(1)=A0;
B(1)=B0;
x(1)=x0;

% Heun
for i=1:N
    K1_x=k1.*A(i).*x(i)-k2.*x(i).*y(i);
    K1_y=k2.*x(i).*y(i)-k3.*y(i);
    K1_B=k3.*y(i);
    K1_A=-k1.*x(i).*A(i);
    K2_x=k1.*(A(i)+K1_A.*h).*(x(i)+K1_x.*h)-k2.*(x(i)+K1_x.*h).*(y(i)+K1_y.*h);
    K2_y=k2.*(x(i)+K1_x.*h).*(y(i)+K1_y.*h)-k3.*(y(i)+K1_y.*h);
    K2_B=k3.*(y(i)+K1_y.*h);
    K2_A=-k1.*(x(i)+K1_x.*h).*(A(i)+K1_A.*h);
    
    x(i+1)=x(i)+0.5*h.*(K1_x+K2_x);
    y(i+1)=y(i)+0.5*h.*(K1_y+K2_y);
    B(i+1)=B(i)+0.5*h.*(K1_B+K2_B);
    A(i+1)=A(i)+0.5*h.*(K1_A+K2_A);
end

% grafico
hold on
plot(t,x)
plot(t,y,'r')
plot(t,B,'g')
plot(t,A,'c')
hold off
legend('Concentración X','Concentración de Y','Concentración de B','Concentración de A','Location','best');