24小时热门版块排行榜    

查看: 435  |  回复: 0

zhang66163

银虫 (正式写手)

[求助] Matlab 程序求助

各位大侠,用matlab求拟合动力学数据时,写了以下的程序。结果出现错误是:Too many output arguments. 请教以下如何对程序进行改进。谢谢
clear all
clc

T = 150 + 273.15;
R = 8.31434;          
a=0.1;   
b=0.2;  
c=60;   
d=0.257;
e=-0.691;
f=-0.465;
g=-0.238;
h=1.7;
i=2.5;



% Arrhenius constant, 1/s
k0 = [5.39E+13 9.55 2.04 5.80 3.76E+07 110.39];

% Activation energy, kJ/kmol
Ea = [141.3E+3, 49.9E+3, 42.6E+3, 46.3E+3, 79.9E+3, 52.7E+3];

% 初始浓度C0(i), mol/m^3
C0 = [4.96  0  0  0  0  0  0];
tspan = [0 1e4];
[t,C] = ode45(@MassEquations, tspan, C0,[],k0,Ea,R,T)

% 绘图
plot(t,C(:,1),'r-',t,C(:,2),'k:',t,C(:,3),'b-.',t,C(:,4),'k--',t,C(:,5),'g*',t,C(:,5),'r-',t,C(:6),'k:',t,C(:7),'b*');
xlabel('Time (s)');
ylabel('Concentration (mol/m^3)');
legend('A','B','C','D','E','F','G')
CDmax = max(D(:,4));    % CDmax: the maximum concentration of B, kmol/m^3
yDmax = CDmax/3/C0(1)     % yBmax: the maximum yield of B
index = find(C(:,4)==CDmax);
t_opt = t(index)        % t_opt: the optimum batch time, s

% ------------------------------------------------------------------
function dCdt = MassEquations(t,C,k0,Ea,R,T)
% Reaction rate constants, 1/s
k = k0.*exp(-Ea/(R*T));
  

% Reaction rates, kmoles/m3 s
rA = -((a^d)*k(1)+a^e*b*k(2)*c)*C(1);
rB = (a^d)*k(1)*C(1)+(a^d)*2*k(5)*(C(5)^f)-(a^g)*b*k(3)*C(3)*c-a^d*k(6)*(C(3)^i);
rC = a^d*k(1)*C(1)-a^f*b*k(4)*C(5)*c-a^d*k(5)*(C(5)^f);
rD = (a^g)*b*k(3)*C(3)*c;
rE = (a^f)*b*k(4)*C(5)*c;
rF = (a^e)*b*k(2)*C(1)*c;
rG = (a^d)*k(6)*(C(3)^i);

% Mass balances
dCdt = [rA; rB; rC; rD; rE; rF; rG];
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhang66163 的主题更新
信息提示
请填处理意见