Boa!!! gostaria de obter alguma ajuda relativa ao prgrama que estou a fazer... O meu objectivo é optimizar os valores de k1, k2 e k3 Para tal utilizei a função FMINSEARCH. Criei duas m-files, uma para optimizar os valores de k1 k2 k3, e outra, onde através dos k optimizados vai resolver a ode15s. O meu problema é que quando corro o matlab aparece-me o seguinte erro: ??? Undefined function or method 'fiminsearch' for input arguments of type 'function_handle'. Error in ==> cianeto_p_principal at 9 k_bom=fiminsearch(@fo,k_inicial); Gostaria que me ajudassem a resolver este problema.. uma vez que não sei porque me esta a dar sempre este erro.. Será que alguém tem alguma ideia do que seja? E como resolvo ? Para tal envio em seguida as duas m-files correspondentes ao problema.. se alguém me puder ajudar agradecia. Cumprimentos; Vasco Mendes Obrigado _________________________________________________________________________________________________ _________________________________________________________________________________________________ function p_principal () % k10=1e-1; % k20=1e-2; % k30=1e-1; k_inicial=[1e-1 1e-1 1e-1]; %estimativas iniciais de k1 k2 e k3 k_bom=fiminsearch(@fo,k_inicial); [t,c]=cianeto(k_bom); % plot(t,ca,t,cb,t,cc,t,cd,t,ce,t,cf,t,ci,t,cj,'LineWidth',2) % legend({'Ca','Cb','Cc','Cd','Ce','Cf','Ci','Cj'},'FontWeight','bold','FontSize',12,'FontName','Arial') function [valor_fo]=fo(k1,k2,k3) %função que nos vai calcular o erro [t,c]=cianeto(k1,k2,k3) c6_final=c(end,6) %ultimo valor de c6 ... c6_exp=0.1 %mol/dm3 valor obtido experimentalmente .... no final do processo valor_fo=((abs(c6_final-c6_exp))/c6_exp)*100 ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ function [t,c]=cianeto(k1,k2,k3) clc clear all close all global nc nr V k1 k2 k3 %___CONDIÇÕES INICIAIS DE OPERAÇÃO_____% ca0=0.5; %mol/dm3 cb0=1; %mol/dm3 cc0=0; %mol/dm3 cd0=0.1; %mol/dm3 ce0=0; %mol/dm3 cf0=0; %mol/dm3 ci0=0; %mol/dm3 cj0=0; %mol/dm3 %CONSTANTES CINÉTICAS considerando reacção pseudo primeira ordem V=5; %(m3) volume do reactor nc=8; % 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]; [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) % plot(t,ca,t,cb,t,cc,t,cd,t,ce,t,cf,t,ci,t,cj,'LineWidth',2) % legend({'Ca','Cb','Cc','Cd','Ce','Cf','Ci','Cj'},'FontWeight','bold','FontSize',12,'FontName','Arial') function [dcdt]=reaccao(t,c) global k nc nr V k1 k2 k3 dcdt=zeros(8,1); %____REACÇÕES____ r(1)=-k1*c(1)*c(2); r(2)=-k1*c(1)*c(2)-(k3*c(2)*c(5)); r(3)=+k1*c(1)*c(2)-(k2*c(3)*c(4)^2); r(4)=2*k1*c(1)*c(2)-(2*k2*c(3)*c(4)^2); r(5)=k2*c(3)*c(4)^2-(k3*c(2)*c(5)); r(6)=k2*c(3)*c(4)^2+k3*c(2)*c(5); r(7)=k3*c(2)*c(5); r(8)=k3*c(2)*c(5); %__BALANÇO DE MASSA___ for i=1:1:8 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);