Diferencia entre revisiones de «Reacciones con autocatálisis. Grupo C2»
(→Interpretación) |
(→Método de Heun) |
||
| Línea 81: | Línea 81: | ||
===Método de Heun=== | ===Método de Heun=== | ||
[[Archivo:apartado7C2.jpg|400px|miniaturadeimagen|derecha|Gráfica método de Heun]] | [[Archivo:apartado7C2.jpg|400px|miniaturadeimagen|derecha|Gráfica método de Heun]] | ||
| + | {{matlab|codigo= | ||
| + | %Datos del problema de valor inicial | ||
| + | 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; | ||
| + | |||
| + | %Vector de tiempo | ||
| + | t=t0:h:tN; | ||
| + | |||
| + | %Definir el número de intervalos | ||
| + | N=(tN-t0)/h; | ||
| + | |||
| + | %Vectores vacíos para nuestra solución | ||
| + | A=zeros(1,N+1); | ||
| + | X=zeros(1,N+1); | ||
| + | Y=zeros(1,N+1); | ||
| + | B=zeros(1,N+1); | ||
| + | |||
| + | %Valores iniciales | ||
| + | A(1)=A0; | ||
| + | X(1)=X0; | ||
| + | Y(1)=Y0; | ||
| + | B(1)=B0; | ||
| + | |||
| + | %Definimos las constantes | ||
| + | for i=1:N | ||
| + | K1X=k1.*A(i).*X(i)-k2.*X(i).*Y(i); | ||
| + | K1Y=k2.*X(i).*Y(i)-k3.*Y(i); | ||
| + | K1B=k3.*Y(i); | ||
| + | K1A=-k1.*X(i).*A(i); | ||
| + | K2X=k1.*(A(i)+K1X.*h).*(X(i)+K1X.*h)-k2.*(X(i)+K1X.*h).*(Y(i)+K1X.*h); | ||
| + | K2Y=k2.*(X(i)+K1Y.*h).*(Y(i)+K1Y.*h)-k3.*(Y(i)+K1Y.*h); | ||
| + | K2B=k3.*(Y(i)+K1B.*h); | ||
| + | K2A=-k1.*(X(i)+K1A.*h).*(A(i)+K1A.*h); | ||
| + | |||
| + | X(i+1)=X(i)+0.5*h.*(K1X+K2X); | ||
| + | Y(i+1)=Y(i)+0.5*h.*(K1Y+K2Y); | ||
| + | B(i+1)=B(i)+0.5*h.*(K1B+K2B); | ||
| + | A(i+1)=A(i)+0.5*h.*(K1A+K2A); | ||
| + | end | ||
| + | |||
| + | %Gráficas | ||
| + | hold on | ||
| + | plot(t,X); | ||
| + | plot(t,Y,'g'); | ||
| + | plot(t,B,'r'); | ||
| + | plot(t,A,'y'); | ||
| + | hold off | ||
| + | legend('Concentración X','Concentración de Y','Concentración de B','Concentración de A','Location','best'); | ||
| + | }} | ||
=== Conclusión === | === Conclusión === | ||
Revisión del 21:42 24 feb 2015
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Visualización de campos escalares y vectoriales en elasticidad. Grupo C2 |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2014-15 |
| Autores | Ana Martínez Lorente, Natalia Opie Dávila, Javier Parras Martínez, Alfredo Pazos Arjona, Antonio Perez Mata, Javier Siguero Ginés |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
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, [math] A + B \rightarrow C [/math] 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. 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 [math] A + B \rightarrow _k1 2B [/math]
2 Primera reacción
2.1 Interpretación
2.2 Ecuación diferencial
2.2.1 Método de Euler
2.2.2 Método del Trapecio
2.2.3 Método de Runge-Kutta
2.3 Sistema de ecuaciones
2.3.1 Método de Euler
2.3.2 Método de Runge-Kutta
2.4 Conclusión
3 Segunda reacción
3.1 Interpretación
Vamos a resolver el problema de valor inicial \begin{array}{c} x' = 0.1Ax − 0.1xy\\ y' = 0.1xy − 0.05y\\B' = 0.05y \end{array}\
3.2 Método de Euler
clear all, clf
%Datos del problema de valor inicial
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=input('Introduzca un valor para h:');
%Vector de tiempo
t=t0:h:tN;
%Definir el número de intervalos
N=(tN-t0)/h;
%Vectores vacíos para nuestra solución
A=zeros(1,N+1);
X=zeros(1,N+1);
Y=zeros(1,N+1);
B=zeros(1,N+1);
%Valores iniciales
A(1)=A0;
X(1)=X0;
Y(1)=Y0;
B(1)=B0;
%Resolvemos el sistema
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
%Gráfica de resultados
hold on
plot(t,X)
plot(t,Y,'g')
plot(t,B,'r')
plot(t,A,'y')
hold off
legend('Concentración X','Concentración de Y','Concentración de B','Concentración de A','Location','best');
3.3 Método de Heun
%Datos del problema de valor inicial
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;
%Vector de tiempo
t=t0:h:tN;
%Definir el número de intervalos
N=(tN-t0)/h;
%Vectores vacíos para nuestra solución
A=zeros(1,N+1);
X=zeros(1,N+1);
Y=zeros(1,N+1);
B=zeros(1,N+1);
%Valores iniciales
A(1)=A0;
X(1)=X0;
Y(1)=Y0;
B(1)=B0;
%Definimos las constantes
for i=1:N
K1X=k1.*A(i).*X(i)-k2.*X(i).*Y(i);
K1Y=k2.*X(i).*Y(i)-k3.*Y(i);
K1B=k3.*Y(i);
K1A=-k1.*X(i).*A(i);
K2X=k1.*(A(i)+K1X.*h).*(X(i)+K1X.*h)-k2.*(X(i)+K1X.*h).*(Y(i)+K1X.*h);
K2Y=k2.*(X(i)+K1Y.*h).*(Y(i)+K1Y.*h)-k3.*(Y(i)+K1Y.*h);
K2B=k3.*(Y(i)+K1B.*h);
K2A=-k1.*(X(i)+K1A.*h).*(A(i)+K1A.*h);
X(i+1)=X(i)+0.5*h.*(K1X+K2X);
Y(i+1)=Y(i)+0.5*h.*(K1Y+K2Y);
B(i+1)=B(i)+0.5*h.*(K1B+K2B);
A(i+1)=A(i)+0.5*h.*(K1A+K2A);
end
%Gráficas
hold on
plot(t,X);
plot(t,Y,'g');
plot(t,B,'r');
plot(t,A,'y');
hold off
legend('Concentración X','Concentración de Y','Concentración de B','Concentración de A','Location','best');