Discusión:Reacciones con Autocatálisis (A5)

De MateWiki
Revisión del 10:00 25 feb 2015 de Marta Cavero (Discusión | contribuciones) (Apartado 4)

Saltar a: navegación, buscar
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