Matlab - Ayuda matlab problema cinetica aplicada

   
Vista:

Ayuda matlab problema cinetica aplicada

Publicado por yggdrassil (1 intervención) el 10/11/2008 16:36:46
Hola, hace 2 meses que he empezado a usar matlab y me han mandado un problema, que no termina de salir a ver si le podriais echar un vistazo.
aqui el enunciado:
23. Donada una reacció autocatalítica A 􀃆 R amb A R r = kC C , s’ha realitzat un estudi
experimental on s’han obtingut els següents resultats:
t (min) 0 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00
CA (mol/L) 10.00 9.80 9.24 7.90 5.50 2.88 1.17 0.42 0.14 0.047 0.016
CR (mol/L) 0.10
Determineu la constant cinètica de la reacció.

Y aqui el script que tengo:
function pro23 %ajust sense linealitzar, equacio diferencial sense integrar
clear; clc; close all;

t=[0 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00];
Ca=[10.00 9.80 9.24 7.90 5.50 2.88 1.17 0.42 0.14 0.047 0.016];
Cr=0.10+(Ca-X);
X=
figure(1);
plot(t,Ca,'or'), hold on;
plot(t,Cr,'ob');
xlabel('t'), ylabel('C');

options = optimset('TolX',1e-5,'TolFun',1e-5); % Tolerancia en els parametres i en la funció
p0=[0.01 0.01]; % valors inicials dels parametres
%crida a fmimsearch per a minimitzar fobjectiu
[p, fval, exitflag, output] = fminsearch( @fobjectiu, p0, options, t, Ca, Cr)

t=[0:100:2.00];
Ca0=Ca(1); Cr0=0.10;
opcions=odeset('AbsTol', 1e-5);
[tm,ym]=ode45(@eqdifer,t,[Ca0 Cr0],opcions,p);
Cam=ym(:,1); Crm=ym(:,2);
plot(tm,Cam,'r',tm,Crm,'b')

%----------------
%funció que calcula les equacions diferencials per un t, C i valors dels parametres p determinats
function dc=eqdifer(t,y,p);
k=p(1);
Ca=y(1); Cr=y(2);
dc(1,1)=-k*Ca*Cr;
%----------------
function f=fobjectiu(p,t,Ca,Cr); %funcio objectiu a minimitzar
Ca0=Ca(1); Cr0=0.10;
%El primer que fem es obtenir les dades del model integrant les EDO's
opcions=odeset('AbsTol', 1e-5);
[tm,ym]=ode45(@eqdifer,t,[Ca0 0.10],opcions,p);
Cam=ym(:,1); Crm=ym(:,2);
%Càlcul de l'error. Restem els valors experimentals de concentració i els valors que dona el model.
f1=norm(Ca-Cam'); %expressio equivalent a: f=sqrt(sum((Ca-Cam')).^2))
f2=norm(Cr-Crm');
f=f1+f2;

Gracias por adelantado y corre prisa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder