Matlab出现此上下文中不允许函数定义 30

clearall;%清除内存中的变量和和函数tspan=[0,0.245];%定义变量的求解区间y0=[0.449/0.09846,0.1021/0.09846,0.10... clear all;%清除内存中的变量和和函数
tspan=[0,0.245]; %定义变量的求解区间
y0=[0.449/0.09846,0.1021/0.09846,0.1057/0.09846,0.019/0.09846,0.2327/0.09846,0.085/0.09846,1.01325,1,1273];%定义初始值-v=0.669;
[z,y]=ode45(@redu_model_fun,tspan,y0)

function dy=redu_model_fun(z,y)

n=y(1)+y(2)+y(3)+y(4)+y(5)+y(6);
CRF=exp(30*z);
%CRF=300*z;
%CRF=100;
R=8.314;
destgas=1.293;
destair=1.293;
A1=3.616*10;E1=77390;A2=1.517*10^4;E2=121620;A3=4.189*10^(-3);E3=19210;A4=7.301*10^(-2);E4=36150;A5=2.824*10^(-2);E5=32840;
%deltaH1=-172600;deltaH2=-131400;deltaH3=75000;deltaH4=-206400;
deltaH1=172600;deltaH2=131400;deltaH3=-75000;deltaH4=206400;
%PCO2=y(2)/n*y(7);PCO=y(3)/n*y(7);PCH4=y(4)/n*y(7);PH2O=y(5)/n*y(7);PH2=y(6)/n6*y(7);
XCO2=y(2)/n;XCO=y(3)/n;XCH4=y(4)/n;XH2O=y(5)/n;XH2=y(6)/n;
Cp1=27.32+6.226*10^(-3)*y(9)-0.9502*10^(-6)*y(9)^2;
Cp2=26.75+42.258*10^(-3)*y(9)-14.25*10^(-6)*y(9)^2;
Cp3=26.537+7.6831*10^(-3)*y(9)-1.172*10^(-6)*y(9)^2;
Cp4=14.15+75.496*10^(-3)*y(9)-17.99*10^(-6)*y(9)^2;
Cp5=29.16+14.49*10^(-3)*y(9)-2.022*10^(-6)*y(9)^2;
Cp6=26.88+4.347*10^(-3)*y(9)-0.9502*10^(-6)*y(9)^2;

%Cp1=27.32;Cp2=26.75;Cp3=26.537;Cp4=14.15;Cp5=29.16;Cp6=26.88;
K1=exp(-20552.9/y(9)+1.16*log(y(9))-1.877*10^(-3)*y(9)+0.239*10^(-6)*y(9)^2+14.15);
K2=exp(-15556.6/y(9)+0.91*log(y(9))-0.408*10^(-3)*y(9)+0.01*10^(-6)*y(9)^2+10.23);
K3=exp(7295.05/y(9)-6.771*log(y(9))+3.758*10^(-3)*y(9)-0.3475*10^(-6)*y(9)^2+33.48);
K4=exp(-22706.59/y(9)+8.362*log(y(9))-4.791*10^(-3)*y(9)+0.431*10^(-6)*y(9)^2-27.378);
K5=exp(-27852.9/y(9)+7.93*log(y(9))-5.634*10^(-3)*y(9)+0.586*10^(-6)*y(9)^2-18.93);
r1=n*CRF*A1*exp(-E1/(R*y(9)))*(XCO2-XCO^2/K1);
r2=n*CRF*A2*exp(-E2/(R*y(9)))*(XH2O-(XCO*XH2)/K2);
r3=n*CRF*A3*exp(-E3/(R*y(9)))*(XH2^2-XCH4/K3);
r4=n*CRF*A4*exp(-E4/(R*y(9)))*(XCH4*XH2O-XCO*XH2^3/K4);
r5=n*CRF*A5*exp(-E5/(R*y(9)))*(XCO*XH2O-XCO2*XH2^3/K5);
R1=0;R2=-r1;R3=2*r1+r2+r4;R4=r3-r4;R5=-r2-r4;R6=r2-2*r3+3*r4;
SigmaNC=y(1)*Cp1+y(2)*Cp2+y(3)*Cp3+y(4)*Cp4+y(5)*Cp5+y(6)*Cp6;
SigmarH=r1*deltaH1+r2*deltaH2+r3*deltaH3+r4*deltaH4;
SigmaRC=R1*Cp1+R2*Cp2+R3*Cp3+R4*Cp4+R5*Cp5+R6*Cp6
SigmaR=R1+R2+R3+R4+R5+R6;

dy=zeros(9,1);
dy(1)=1/y(8)*(R1-y(1)*dy(8));
dy(2)=1/y(8)*(R2-y(2)*dy(8));
dy(3)=1/y(8)*(R3-y(3)*dy(8));
dy(4)=1/y(8)*(R4-y(4)*dy(8));
dy(5)=1/y(8)*(R5-y(5)*dy(8));
dy(6)=1/y(8)*(R6-y(6)*dy(8));
dy(7)=-(1183*(destgas*y(8)^2/destair)+388.19*y(8)-79.896);
dy(8)=1/(SigmaNC+n*R)*(SigmaNC*SigmaR/n-SigmarH/y(9)-dy(7)*(y(8)/y(9)+y(8)*SigmaNC/y(7))-SigmaRC);
dy(9)=1/(y(8)*SigmaNC)*(-SigmarH-y(8)*dy(7)-y(7)*dy(8)-SigmaRC*y(9));
end
错误使用 dbstatus
错误: 文件:C:\Users\Lenovo\Documents\MATLAB\程序Ⅱ\redu_model_fun.m 行:53 列:70
此上下文中不允许函数定义。
Published with MATLAB? R2016a
展开
 我来答
lhmhz
高粉答主

2019-02-25 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17007

向TA提问 私信TA
展开全部

可能你的程序格式有问题。如把代码集成在一起,可以来写

function ode45_main( )

clear all;%清除内存中的变量和和函数

tspan=[0,0.245]; %定义变量的求解区间

y0=[0.449/0.09846,0.1021/0.09846,0.1057/0.09846,0.019/0.09846,0.2327/0.09846,0.085/0.09846,1.01325,1,1273];%定义初始值-v=0.669;

[z,y]=ode45(@redu_model_fun,tspan,y0);

A=[z,y];

disp('    z,    y ')

disp(A)

end

function dy=redu_model_fun(z,y)

n=y(1)+y(2)+y(3)+y(4)+y(5)+y(6);

。。。。。。

dy(9)=1/(y(8)*SigmaNC)*(-SigmarH-y(8)*dy(7)-y(7)*dy(8)-SigmaRC*y(9));

end

然后,保存为 ode45_main.m 文件

运行可得

59分粑粑分享生活
高粉答主

2020-03-07 · 专注生活好物分享,解答日常方方面面的问题
59分粑粑分享生活
采纳数:326 获赞数:119825

向TA提问 私信TA
展开全部

用法上出现错误导致的报错。解决方法和操作步骤如下:

1、首选,打开编译器,然后在命令行中键入edit打开,如下图所示。

2、其次,完成上述步骤后,输入Function以表明该文件是功能文件,如下图所示。

3、接着,如果在等号的左侧输入了任何返回值,请使用方括号表示多个返回值,如下图所示。

4、然后,等号的右边是函数名称加括号,括号是参数,如下图所示。

5、随后,完成上述步骤后,使用%注释,注释的第一行是解释函数的功能,如下图所示。

6、接着,完成上述步骤后,传递两个点的坐标,然后计算两个点之间的距离,并传给返回值y,如下图所示。

7、最后,完成上述步骤后,保存文件,保存时文件名和功能名保持不变,如下图所示。这样,问题就解决了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式