24小时热门版块排行榜    

查看: 564  |  回复: 2

zhang66163

银虫 (正式写手)

[求助] matlab程序编写 已有2人参与

按照教程编写了一个程序:如下
function Batchreactor
clear all;clc
T=224.6+273
R=8.314
k0=[5.78052E+10, 3.92317E+12, 1.64254E+4, 6.264E+8]
Ea=[124670, 150386, 77954, 111528]
C0=[1, 0, 0, 0]
tspan=[0, 1E+4]

[t,C]=ode45(@Massequations,tspan,C0,[],k0,Ea,T,R);
plot(t,C(:,1),'r-',t,C(:,2),'O-',t,C(:,3),'b-',t,C(:,4),'g-');



function dCdt=Massequations(t,C,k0,Ea,T,R);
k=k0*exp(-Ea/(R*T)); k(5)=2.1667E-4;

rA=-(k(1)+k(2))*C(1); rB=k(1)*C(1)-k(3)*C(2); rC=k(2)*C(1)-k(4)*C(3);
rD=k(3)*C(2)-k(5)*C(4); rE=k(4)*C(3)+k(5)*C(4);
可是运行后,出现了错误;哪位大侠可以帮忙解释一下。谢谢
Error using  *
Inner matrix dimensions must agree.

Error in concentration>Massequations (line 16)
k=k0*exp(-Ea/(R*T)); k(5)=2.1667E-4;

Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.

Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in concentration (line 10)
[t,C]=ode45(@Massequations,tspan,C0,[],k0,Ea,T,R);


dCdt=[rA;rB;rC;rD;rE]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zhang66163: 金币+20, 有帮助 2015-08-11 11:01:46
k0*exp  ——> k0.*exp
showmethemoney
2楼2015-08-11 09:08:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zhang66163: 金币+40, ★★★很有帮助 2015-08-11 11:02:11
少一个初值条件,由C0=[1, 0, 0, 0]改为:C0=[1, 0, 0, 0,0],即默认组分E初始浓度为0;如果初值条件不是这样的,请自行需要改,须填满5个,因为有5个方程。
CODE:
function Batchreactor
clear all;clc
global T R

T=224.6+273;
R=8.314;

C0=[1, 0, 0, 0,0];

tspan=[0, 1E+4];

[t,C]=ode45(@Massequations,tspan,C0);
[t C]

figure(1)
plot(t,C(:,1),'r-',t,C(:,2),'O-',t,C(:,3),'b-',t,C(:,4),'g-')




function dCdt=Massequations(t,C)
global T R


k0=[5.78052E+10, 3.92317E+12, 1.64254E+4, 6.264E+8];
Ea=[124670, 150386, 77954, 111528];
k=k0.*exp(-Ea/(R*T));
k(5)=2.1667E-4;


rA=-(k(1)+k(2))*C(1);
rB=k(1)*C(1)-k(3)*C(2);
rC=k(2)*C(1)-k(4)*C(3);
rD=k(3)*C(2)-k(5)*C(4);
rE=k(4)*C(3)+k(5)*C(4);
dCdt=[rA;rB;rC;rD;rE];

matlab程序编写
附图1.png

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2015-08-11 09:27:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhang66163 的主题更新
信息提示
请填处理意见