Ir para conteúdo
Fórum Script Brasil
  • 0

optimização de parametros no matlab


elcaco

Pergunta

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

  • 0
Veja neste endereço: Apostila de Matlab ( inglês )

http://www.mathworks.com/access/helpdesk/h...+quad&meta=

abraço

a 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 por elcaco
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...