Reacciones con Autocatálisis (A5)

De MateWiki
Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Reacciones con Autocatálisis. Grupo 5A
Asignatura Ecuaciones Diferenciales
Curso Curso 2014-15
Autores Javier Blanco Villarroel
Marta Cavero Guillén
Alba Bringas Gil
Irene Bendala Sugrañes
Paula Botella Andreu
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


Gráfica que relaciona la concentración y el tiempo hecha mediante el método de Euler.
%Ejercicio 2.2 Euler
t0=0
tn=10
n=100
h=(tn-t0)/n;
t=t0:h:tn;

y0=1
y=zeros(1,n+1);
y(1)=y0;
yy=y0;

k=1

x0=0.01
x=zeros(1,n+1);
x(1)=x0;
xx=x0;

for i=1:n
   yy=yy+h*(-k*xx.*yy);
   xx=xx+h*k*(xx.*yy);
   y(i+1)=yy;
   x(i+1)=xx;
   end

plot(t,y,'g','linewidth',2) 
title('Concentración - Tiempo','FontName','Berlin sans FB','FontSize', 20);
xlabel('Tiempo (s)','FontSize', 11);
ylabel('Concentración (mol/L)','FontSize', 11);
legend('Concentración de B','Concentración de A','location','east')


Gráfica que relaciona la concentración y el tiempo hecha mediante el método del trapecio.
%Ejercicio 2.3 trapecio
t0=0
tn=10
n=100
h=(tn-t0)/n;
t=t0:h:tn;

y0=1
y=zeros(1,n+1);
y(1)=y0;
yy=y0;

k=1

x0=0.01;
x=zeros(1,n+1);
x(1)=x0;
xx=x0;

for i=1:n
   yy=(((2*yy)/(-k*h))+xx.*yy)/((-2/(k*h))+(-k*xx));
   xx=(((2*xx)/(k*h))+xx.*yy)/((2/(k*h))-(k*yy));
   y(i+1)=yy;
   x(i+1)=xx;
   end

plot(t,x,'k','linewidth',2)
hold on
plot(t,y,'c','linewidth',2) 

title('Concentración - Tiempo (Trapecio)','FontName','Berlin sans FB','FontSize', 20);
xlabel('Tiempo (s)','FontSize', 11);
ylabel('Concentración (mol/L)','FontSize', 11);
legend('Concentración de B','Concentración de A','location','best'


Gráfica que relaciona la concentración y el tiempo hecha mediante el método de Runge-Kutta.
%Ejercicio 2.3 Runge Kutta
t0=0
tn=10
n=100
h=(tn-t0)/n;
t=t0:h:tn;

y0=1
y=zeros(1,n+1);
y(1)=y0;
yy=y0;

k=1

x0=0.01
x=zeros(1,n+1);
x(1)=x0;
xx=x0;

for i =1:n

 k1A=(-k*xx.*yy);
 k1B=(k*xx.*yy);
 y1=yy+h*k1A/2;
 x1=xx+h*k1B/2
 
 k2A=(-k*x1.*y1);
 k2B=(k*x1.*y1);
 y2=yy+h*k2A/2;
 x2=xx+h*k2B/2;
 
 k3A=(-k*x2.*y2);
 k3B=(k*x2.*y2);
 y3=yy+h*k3A/2;
 x3=xx+h*k3B/2;
 
 k4A=(-k*x3.*y3);
 k4B=(k*x3.*y3);
 
 yy=yy+((h/6)*(k1A+2*k2A+2*k3A+k4A));
 xx=xx+((h/6)*(k1B+2*k2B+2*k3B+k4B));
 y(i+1)=yy;
 x(i+1)=xx;
 end

figure(1)   
plot(t,x,'y','linewidth',2)
hold on
plot(t,y,'m','linewidth',2) 

title('Concentración - Tiempo (Runge-Kutta)','FontName','Berlin sans FB','FontSize', 20);
xlabel('Tiempo (s)','FontSize', 11);
ylabel('Concentración (mol/L)','FontSize', 11);
legend('Concentración de B','Concentración de A','location','best')


Línea con sangría

1 Apartado 4

t0=0; tf=10;
w0=[1;0.01];
h=0.1; N=(tf-t0)/h;
t=t0:h:tf;
w=zeros(2,N+1); %las filas es el número de  incógnitas en el sistema
w(:,1)=w0;
ww=w0;

%Euler

for n=1:N
    
    F=[-1*ww(1)*ww(2);1*ww(1)*ww(2)];
    
    ww=ww+h*F;
    w(:,n+1)=ww;
end

subplot(1,2,1)
plot(t,w,'*'); %MATLAB dibuja una grágica para cada columna, NO poner color para que nos ponga cada una de un colo
legend('Concentración de A','Concentración de B')
title('Euler')

%Runge Kuta

z0=[1;0.01]; %para volver a empezar
z=zeros(2,N+1); %las filas es el número de  incógnitas en el sistema
z(:,1)=z0;
zz=z0;

for n=1:N
    
    F=[-1*zz(1)*zz(2);1*zz(1)*zz(2)];
     
    k1=F;
    
    z1=F+(1/2)*k1*h;
    k2=z1;
    
    z2=F+(1/2)*k2*h;
    k3=z2;
    
    z3=F+k3*h;
    k4=z3;
    
    zz=zz+(h/6)*(k1+2*k2+2*k3+k4);
    z(:,n+1)=zz;
end

subplot(1,2,2)
plot(t,z,'o')
legend('Concentración de A','Concentración de B')
title('Runge-Kutta')


2 Apartado 7

t0=0; tf=200;
h=0.01; N=(tf-t0)/h;
t=t0:h:tf;

A0=5; X0=5*(10^-4); Y0=10^(-5); B0=0;

A=zeros(1,N+1); 
X=zeros(1,N+1);
Y=zeros(1,N+1);
B=zeros(1,N+1);

A(1)=A0; X(1)=X0; Y(1)=Y0; B(1)=B0;
aa=A0; xx=X0; yy=Y0; bb=B0;

K1=0.1; K2=K1; K3=K1/2;

for n=1:N
    
   K1A=-K1*aa*xx;
   K2A=K1A+K1A*h;
   
   K1X=K1*aa*xx-K2*xx*yy;
   K2X=K1X+K1X*h;
   
   K1Y=K2*xx*yy-K3*yy;
   K2Y=K1Y+K1Y*h;
   
   K1B=K3*yy;
   K2B=K1B+K1B*h;
    
   aa=aa+0.5*h*(K1A+K2A);
   xx=xx+0.5*h*(K1X+K2X);
   yy=yy+0.5*h*(K1Y+K2Y);
   bb=bb+0.5*h*(K1B+K2B);
   
   A(n+1)=aa;
   X(n+1)=xx;
   Y(n+1)=yy;
   B(n+1)=bb;

end

plot(t,A,'*r'); 
hold on
plot(t,X,'*g');
plot(t,Y,'*y');
plot(t,B,'*');
legend('Concentración de A','Concentración de X', 'Concentración de Y', 'Concentración de B')
hold off