我是靠谱客的博主 高兴鱼,最近开发中收集的这篇文章主要介绍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);

最后

以上就是高兴鱼为你收集整理的matlab中ode15s函数的用法,求解n个常微分方程构成的方程组,如何使用ode15s的全部内容,希望文章能够帮你解决matlab中ode15s函数的用法,求解n个常微分方程构成的方程组,如何使用ode15s所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部