马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 西西想幸福 于 2012-3-19 09:54 编辑
这是我的方程程序:
function dx=modfun(t,x);
global rc d1 r1 d2 r2 cpg gms cps h1 h2
rc=rc(x(3));
d1=d1(x(4));
r1=r1(x(1),x(3));
d2=(x(4));
r2=r2(x(2),x(3));
cpg=cpg(x(4));
gms=gms(x(3));
cps=cps(x(5));
h1=h1(x(5));
h2=h2(x(5));
dx(1)=-0.99/1.98*10^8*r1 ; %定义第一个方程,根据反应中氢气的质量守恒得出
dx(2)=-0.99/1.98*10^8*r2; %定义第二个方程,根据反应中一氧化碳的质量守恒得出
dx(3)=-0.99/4.56*10^4*[r1+r2]; %根据固相反应量的出的第三个方程,根据固相的质量守恒得出
dx(4)=14.07*(x(5)-x(4))/cpg); %为计算方便,将气相温度tg换为x4,后面也是如此(化简后),根据能量守恒得出方程,并未考虑热量损失
dx(5)=0.99/gms/cps*[pi*4*10^4*-h1*r1-h2*r2]; %固相温度tsol也换为x5,根据固相的能量守恒
function rc(x3)
rc=(0.125-3.78*x3)^1/3
function d1(x4)
d1=1.467*10^-6*x4^1.75
function r1(x1,x3)
r1=-[4*pi*rc^2*(0.529-x1)]/[1+k1+rc(x3)/d1-4*rc(x3)/d1]
function d2(x4)
d2=1.467*10^-6*x4^1.75
function r2(x2,x3)
r2=-[4*pi*rc^2*(0.347-x2)]/[1+k2+rc(x3)/d2-4*rc(x3)/d2]
function cpg(x4)
cpg=7.045+0.0017*x4-2.603*10^4*x4^-2
function gms(x3)
gms=2527.55*[692-447*rc(x3)^3]/[692-341*rc(x3)^3]
function cps(x5)
cps=[0.6975+1.8058*x5-8.462*x5*rc(x3)^3+102.234*rc(x3)^3]/[0.3875-0.3*rc(x3)^3]
function h1(x5)
h1=80342.124-8.56*x5+2.1*10^-3*x5^2+1.2*10^4*x5^-1
function h2(x5)
h2=-8621.38-5.56*x5+1.043*10^-3*x5^2-1.98*10^5*x5^-1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear
tspan=[0,1000]; %定义变量求解区间
x0=[1.4e-6,1.5e-6,0,650,298]; %设置初值,并设在z=0处x1的值是1.4*10^-6,x2的值是1.5*10^-6,tg是650k
options=odeset('RelTol',1e-6); %设置相对误差
[t,x]=ode45(@modfun,tspan,x0,options); %调用ode45函数解微分方程
figure;
plot(t,x(:,1),'k-');
hold on;
plot(t,rc,'k:');
set(gca,'Fontsize',12);
xlabel('\itt','Fontsize',16);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我只是照着书上和一些帖子里面的程序编的,有好多东西都不太懂!!说出现了错误我也不知道怎么改!!请各位指点一下吧!!谢谢了!!哦,对了!!我的错误代码是:
??? Error using ==> feval
Undefined function or method 'modfun' for input arguments of type 'double'.
Error in ==> odearguments at 111
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in ==> modfun1 at 6
[t,x]=ode45(@modfun,tspan,x0,options); %调用ode45函数解微分方程
帮帮忙吧!!十分感谢!!
|