elcaco Postado Dezembro 18, 2008 Denunciar Share Postado Dezembro 18, 2008 Pretendo simular em matlab os perfis de concentração relativo ao mecanismo que se segue:Mecanismo relativo à reacção de oxidação de cianetos: k1NaCN +NaOCl + H2O-----> CNCl + 2 NaOH k2CNCl + 2 NaOH -----> NaOCN +NaCl +H2O k3NaOCl + NaOCN + H2O -----> NaHCO3 + N2 + NaClObjectivo:-calcular os valores de k1, k2, k3 (constante cinética) de cada reacção.Dados do processo:-concentração de cianeto total à entrada (NaCN)-concentração de cianeto total à saída (NaCN)-concentração de hipoclorito à entrada (NaOCl)-concentração de soda caustica à entrada (NaOH)-tempo de reacçãoEm seguida mostro-vos o programa que fiz:_____________________________________________________________________________________________-Só que neste caso atribui valores a k1, k2, k3-O que eu pretendo é optimizar os valores de k1, k2 e k3, tendo em conta os dados do processo.-será que consigo determinar os valores k1, k2 e k3 , utilizando a função fminsearch??-E como faço??Agradecia a vossa ajuda...Cumprimentos;Vasco MendesObrigado._PROGRAMA QUE REPRESENTA OS PERFIS DE CONCENTRAÇÃO AO LONGO DO TEMPO DE REACÇÃO__ COM k1 k2 k3 atribuidos___%%%%%%%%%%%%%%%function cianeto()clcclear allclose allglobal nc nr V k1 k2 k3%___CONDIÇÕES INICIAIS DE OPERAÇÃO_____%ca0=1; %mol/dm3cb0=0.8; %mol/dm3cc0=0.5; %mol/dm3cd0=0; %mol/dm3ce0=0.4; %mol/dm3cf0=0; %mol/dm3ci0=0; %mol/dm3cj0=0; %mol/dm3ck0=0; %mol/dm3%CONSTANTES CINÉTICAS considerando reacção pseudo primeira ordemk1=1e-1; %(s-1)k2=1e-1; %(s-1)k3=1e-1; %(s-1)V=5; %(m3) volume do reactornc=9; % nºde componentestempo=200; %(h) horas%___ODE PARA PERFIL DE CONCENTRAÇÃO___%tspan=[0 tempo];c0=[ca0 cb0 cc0 cd0 ce0 cf0 ci0 cj0 ck0];[t,c]=ode15s(@reaccao,tspan,c0);n=length(t)ca=c(:,1)cb=c(:,2)cc=c(:,3)cd=c(:,4)ce=c(:,5)cf=c(:,6)ci=c(:,7)cj=c(:,8)ck=c(:,9)plot(t,ca,t,cb,t,cc,t,cd,t,ce,t,cf,t,ci,t,cj,t,ck,'LineWidth',2)legend({'Ca','Cb','Cc','Cd','Ce','Cf','Ci','Cj','Ck'},'FontWeight','bold','FontSize',12,'FontName','Arial')function [dcdt]=reaccao(t,c)global k nc nr V k1 k2 k3dcdt=zeros(9,1);%____REACÇÕES____r(1)=-k1*c(1)*c(2)*c(3);r(2)=-k1*c(1)*c(2)*c(3)-k3*c(2)*c(6)*c(3);r(3)=-k1*c(1)*c(2)*c(3)+k2*c(4)*c(5)^2-(k3*c(2)*c(6)*c(3)); r(4)=+k1*c(1)*c(2)*c(3)-(k2*c(4)*c(5)^2);r(5)=2*k1*c(1)*c(2)*c(3)-(2*k2*c(4)*c(5)^2);r(6)=k2*c(4)*c(5)^2-(k3*c(2)*c(6)*c(3));r(7)=k2*c(4)*c(5)^2;r(8)=k3*c(2)*c(6)*c(3);r(9)=k3*c(2)*c(6)*c(3);%__BALANÇO DE MASSA___for i=1:1:9dcdt(i)=r(i);end% dcdt(1)=r(1);% dcdt(2)=r(2);% dcdt(3)=r(3);% dcdt(4)=r(4);% dcdt(5)=r(5);% dcdt(6)=r(6);% dcdt(7)=r(7);% dcdt(8)=r(8);% dcdt(9)=r(9); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 20, 2008 Denunciar Share Postado Dezembro 20, 2008 Veja neste endereço: Apostila de Matlab ( inglês )http://www.mathworks.com/access/helpdesk/h...+quad&meta=abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 elcaco Postado Dezembro 20, 2008 Autor Denunciar Share Postado Dezembro 20, 2008 (editado) Veja neste endereço: Apostila de Matlab ( inglês )http://www.mathworks.com/access/helpdesk/h...+quad&meta=abraçoa questão não está em saber trabalhar com a função fminsearch... porque já apliquei esta função em varios problemas...a minha questão, neste caso, é como aplica-la neste problema específico.....de qualquer forma... obrigado pelo endereço que me forneceu..cumprimentos;Vasco Mendes Editado Dezembro 20, 2008 por elcaco Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 20, 2008 Denunciar Share Postado Dezembro 20, 2008 MatLab não é o meu forte .... mas literatura sempre ajuda a esclarecer dúvidas.Mais especificamente a função que esta procurandohttp://www.mathworks.com/access/helpdesk/h...ttonName=Searchabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
elcaco
Pretendo simular em matlab os perfis de concentração relativo ao mecanismo que se segue:
Mecanismo relativo à reacção de oxidação de cianetos:
k1
NaCN +NaOCl + H2O-----> CNCl + 2 NaOH
k2
CNCl + 2 NaOH -----> NaOCN +NaCl +H2O
k3
NaOCl + NaOCN + H2O -----> NaHCO3 + N2 + NaCl
Objectivo:
-calcular os valores de k1, k2, k3 (constante cinética) de cada reacção.
Dados do processo:
-concentração de cianeto total à entrada (NaCN)
-concentração de cianeto total à saída (NaCN)
-concentração de hipoclorito à entrada (NaOCl)
-concentração de soda caustica à entrada (NaOH)
-tempo de reacção
Em seguida mostro-vos o programa que fiz:
_____________________________________________________________________________________________
-Só que neste caso atribui valores a k1, k2, k3
-O que eu pretendo é optimizar os valores de k1, k2 e k3, tendo em conta os dados do processo.
-será que consigo determinar os valores k1, k2 e k3 , utilizando a função fminsearch??
-E como faço??
Agradecia a vossa ajuda...
Cumprimentos;
Vasco Mendes
Obrigado.
_PROGRAMA QUE REPRESENTA OS PERFIS DE CONCENTRAÇÃO AO LONGO DO TEMPO DE REACÇÃO__ COM k1 k2 k3 atribuidos___
%%%%%%%%%%%%%%%
function cianeto()
clc
clear all
close all
global nc nr V k1 k2 k3
%___CONDIÇÕES INICIAIS DE OPERAÇÃO_____%
ca0=1; %mol/dm3
cb0=0.8; %mol/dm3
cc0=0.5; %mol/dm3
cd0=0; %mol/dm3
ce0=0.4; %mol/dm3
cf0=0; %mol/dm3
ci0=0; %mol/dm3
cj0=0; %mol/dm3
ck0=0; %mol/dm3
%CONSTANTES CINÉTICAS considerando reacção pseudo primeira ordem
k1=1e-1; %(s-1)
k2=1e-1; %(s-1)
k3=1e-1; %(s-1)
V=5; %(m3) volume do reactor
nc=9; % nºde componentes
tempo=200; %(h) horas
%___ODE PARA PERFIL DE CONCENTRAÇÃO___%
tspan=[0 tempo];
c0=[ca0 cb0 cc0 cd0 ce0 cf0 ci0 cj0 ck0];
[t,c]=ode15s(@reaccao,tspan,c0);
n=length(t)
ca=c(:,1)
cb=c(:,2)
cc=c(:,3)
cd=c(:,4)
ce=c(:,5)
cf=c(:,6)
ci=c(:,7)
cj=c(:,8)
ck=c(:,9)
plot(t,ca,t,cb,t,cc,t,cd,t,ce,t,cf,t,ci,t,cj,t,ck,'LineWidth',2)
legend({'Ca','Cb','Cc','Cd','Ce','Cf','Ci','Cj','Ck'},'FontWeight','bold','FontSize',12,'FontName','Arial')
function [dcdt]=reaccao(t,c)
global k nc nr V k1 k2 k3
dcdt=zeros(9,1);
%____REACÇÕES____
r(1)=-k1*c(1)*c(2)*c(3);
r(2)=-k1*c(1)*c(2)*c(3)-k3*c(2)*c(6)*c(3);
r(3)=-k1*c(1)*c(2)*c(3)+k2*c(4)*c(5)^2-(k3*c(2)*c(6)*c(3));
r(4)=+k1*c(1)*c(2)*c(3)-(k2*c(4)*c(5)^2);
r(5)=2*k1*c(1)*c(2)*c(3)-(2*k2*c(4)*c(5)^2);
r(6)=k2*c(4)*c(5)^2-(k3*c(2)*c(6)*c(3));
r(7)=k2*c(4)*c(5)^2;
r(8)=k3*c(2)*c(6)*c(3);
r(9)=k3*c(2)*c(6)*c(3);
%__BALANÇO DE MASSA___
for i=1:1:9
dcdt(i)=r(i);
end
% dcdt(1)=r(1);
% dcdt(2)=r(2);
% dcdt(3)=r(3);
% dcdt(4)=r(4);
% dcdt(5)=r(5);
% dcdt(6)=r(6);
% dcdt(7)=r(7);
% dcdt(8)=r(8);
% dcdt(9)=r(9);
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.