matlab中ode15s函数的用法,求解n个常微分方程构成的方程组,如何使用ode15s

我的方程组涉及的方程重复性较高,而且数量较多,故采用i和for循环来编写方程,不知道哪里有问题,下面是我的代码

function dy = ad_mass (t,y)

N=100;%间隔数

e=0.44;%床孔隙率

Dl=11;%轴向弥散系数,cm^2/s

us=40.7;%表观速度,cm/s

u=us/e;%间隙速度,cm/s

leng=25.5;%吸附剂填充长度,cm

z=leng/N;%间隔长度,cm

R=8.314;%气体常数,kPa*cm^3/mmol/K

P=101.325;%气体压力,kPa

T=303;%温度,K

mdp=0.72;%颗粒物密度,g/cm^3

c0=0.003146;%初始浓度,mol/mol

mT=2.889*exp(79.11/T);%langmuir常数,mmol/g

bT=5.429E-7*exp(5292/T);%langmuir常数,1/kPa

ye=zeros(N,1);%平衡吸附量定义,mmol/g

for i=1:N+1

ye(i)=mT*bT*P*y(i)/(1+bT*P*y(i));

if i==1

dy(i)=c0;

dy(i+N+1)=k*(ye(i)-y(i+N+1));

else

if i==N+1

dy(i)=dy(i-1);

dy(i+N+1)=k*(ye(i)-y(i+N+1));

else

dy(i)=Dl*(y(i+1)-2*y(i)+y(i-1))/z^2-u*y((i+1)-y(i))/z-R*T/P*(1-e)/e*mdp*Dx(i+N+1);

dy(i+N+1)=k*(ye(i)-y(i+N+1));

end

end

end

end

调用函数为

function sol= sy

y0=zeros;

sol=ode15s(@ad_mass,[0,3600],y0);

出现以下错误

Error using feval

Error: File: ad_mass.m Line: 22 Column: 5

"i" previously appeared to be used as a function or command, conflicting with its use here as

the name of a variable.

A possible cause of this error is that you forgot to initialize the variable, or you have

initialized it implicitly using load or eval.

Error in odearguments (line 87)

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

Error in ode15s (line 148)

[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in sy (line 3)

sol=ode15s(@ad_mass,[0,3600],y0);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值