概述
我的方程组涉及的方程重复性较高,而且数量较多,故采用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);
最后
以上就是高兴鱼为你收集整理的matlab中ode15s函数的用法,求解n个常微分方程构成的方程组,如何使用ode15s的全部内容,希望文章能够帮你解决matlab中ode15s函数的用法,求解n个常微分方程构成的方程组,如何使用ode15s所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复