作业帮 > 综合 > 作业

matlab带循环的反应器程序报错

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/06 07:49:36
matlab带循环的反应器程序报错
初学matlab,我前几天看到一个带循环操作的平推流反应器计算最优循环比下反应器最佳体积的例子,想要自己试着做一下,但是总是报错.想请教各位怎样修改这个程序.
自催化反应A+R——2R,其反应速率方程式为-rA=KcAcR,在70℃下等温的进行反应,在此温度下k=1.512m3/kmol.h,其他数据如下:cA0=0.99kmol/m3,cR0=0.01kmol/m3,vo=10m3/h,哟求反应的转化率xA=0.99,若采用带有循环操作的平推流反应器,求最佳循环比下的反应器体积.
程序如下:
function V=objfunc(beita)
global CA0 CR0 k XAf
CA0=0.99;CR0=0.01;k=1.512;XAf=0.99;v0=10;
CAf=CA0*(1-XAf);CA1=(CA0+beita*CAf)/(1+beita);
sol=quad(@func,CAf,CA1,[],[],beita);
V=(1+beita)*v0*sol;
%-----------------------------------------------------------------------
function y=func(CA,beita)
global CA0 CR0 k XAf
CRf=CR0+CA0*XAf;CR1=(CR0+beita*CRf)/(1+beita);
CA1=(CA0+beita*CAf)/(1+beita);
CR=CR1+CA1-CA;
rate=k*CA.*CR;
y=1./rate;
beita=fminsearch(@objfunc,1);
disp(beita)
但是一运行就出现:
Input argument "beita" is undefined.
Error in ==> objfunc at 4
CAf=CA0*(1-XAf);CA1=(CA0+beita*CAf)/(1+beita);

流程示意图

beita=fminsearch(@objfunc,1);
disp(beita)
最后这两句有问题
eita = beita;
CA0=0.99;CR0=0.01;k=1.512;XAf=0.99;v0=10;
再问: 这样定义怪怪的。。。
再答: 本来你参数传递进来不应该出现提示那种错误的。
再问: 刚才在第三行重新加了beita = beita;

还是报错

??? Input argument "beita" is undefined.

Error in ==> objfunc at 3
beita=beita;
再答: en 你调用这个函数V=objfunc(beita)之前,beita有没有定义
再问: 我不太懂,以上就是我所有的程序。。应该是没有定义?
再答: 你调用之前要先定义,否则函数不知道你传递的参量beita是什么
再问: 能不能麻烦你指导一下要怎样定义?如果是在

global CA0 CR0 k XAf

这句之后直接加beita,就会有错误。
谢谢~
再答: 你在命令窗口调用函数的时候,是怎么调用的??