lxx244lxx 发表于 2010-11-14 21:05:57

Function definition is misplaced or improperly nested.

想利用嵌套函数,可运行了下出现了以下错误 Function definition is misplaced or improperly nested.,这个好像函数定义位置错误,不知道怎么解决,请高手给予指教。百忙之中耽误你们的时间,实在不好意思。。
function feijunxiang
CCO=zeros(700,1);% 气相
CCO2=zeros(700,1);
CT=zeros(700,1);
cCO=zeros(700,1);% 固相
cCO2=zeros(700,1);
cT=zeros(700,1);
CCO(1)=16.10;CCO2(1)=4.60;CT(1)=523;
p0=;
pg=2.268;a=516;ps=1176;r=1;a=1000000;R=8.314;n=200;u=1.3838;dz=0.01;
for i=1:700
    p=fsolve(@f,p0);   % 根据CCO(i)、CCO2(i)、CT(i)的值求解cCO(i)、cCO2(i)、cT(i)的值
    function F=f(p)%非线性方程
F=[(8.7848*10^(-4)*(CT(i)/298)^1.75+149*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO(i)-p(1))-1539140.0731497/200*exp(-79950.0517840678/R/p(3))*p(1)*1176*1000/3600;
(7.1788*10^(-4)*(CT(i)/298)^1.75+130.59*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO2(i)-p(2))-1062673869.91041/200*exp(-105800.040358714/R/p(3))*1176*1000/3600;
155.53*516*(p(3)-CT(i))-(1539140.0731497/200*exp(-79950.0517840678/R/p(3))*p(1)*1176*(188.1276+0.0724*p(3)-4.2782*10^(-5)*p(3)^2+7.9724*10^(-9)*p(3)^3)+1062673869.91041/200*exp(-105800.040358714/R/p(3))*1176*(146.4633+0.06996*p(3)-2.7313*10^(-5)*p(3)^2+1.8928*10^(-9)*p(3)^3))*1000000/3600;];
   end
    cCO(i)=p(1);
    cCO2(i)=p(2);
    cT(i)=p(3); %求得的解赋给cCO(i)、cCO2(i)、cT(i)
dCCO=(8.7848*10^(-4)*(CT(i)/298)^1.75+149*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO(i)-cCO(i))/u*dz;
dCCO2=(7.1788*10^(-4)*(CT(i)/298)^1.75+130.59*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO2(i)-cCO2(i))/u*dz;
dT=155.5330*516*(cT(i)-CT(i))/u/pg/(2666.653876+1.373028273*CT(i)+6.273853772606*10^(-4)*CT(i)^2-4.19418873045093*10^(-7)*CT(i)^3)*dz;
% 求CCO、CCO2、CT的变化量
CCO(i+1)=CCO(i)-dCCO;
CCO2(i+1)=CCO2(i)-dCCO2;
CT(i+1)=CT(i)+dT;%CCO(i+1)、CCO2(i+1)、CT(i+1)的值等于CCO(i)、CCO2(i)、CT(i)的值加上它们的变化量
end
CCO
CCO2
CT
cCO
cCO2
cT   %输出这些值
end

messenger 发表于 2010-11-14 21:53:29

试试匿名函数,可以传递参数,http://forum.simwe.com/thread-902491-1-1.html。

zhouyang664 发表于 2010-11-14 23:38:04

建议楼主把代码风格好好改改吧!
这程序看着费劲呢...没有缩格,没有必要的空格,对齐等...
还有把程序提示的出错代码行放上来啊!

qibbxxt 发表于 2010-11-15 08:42:17

function feijunxiang
CCO=zeros(700,1);% 气相
CCO2=zeros(700,1);
CT=zeros(700,1);
cCO=zeros(700,1);% 固相
cCO2=zeros(700,1);
cT=zeros(700,1);
CCO(1)=16.10;CCO2(1)=4.60;CT(1)=523;
p0=;
pg=2.268;a=516;ps=1176;r=1;a=1000000;R=8.314;n=200;u=1.3838;dz=0.01;
for i=1:700
    p=fsolve(@f,p0);   % 根据CCO(i)、CCO2(i)、CT(i)的值求解cCO(i)、cCO2(i)、cT(i)的值
   
    cCO(i)=p(1);
    cCO2(i)=p(2);
    cT(i)=p(3); %求得的解赋给cCO(i)、cCO2(i)、cT(i)
    dCCO=(8.7848*10^(-4)*(CT(i)/298)^1.75+149*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO(i)-cCO(i))/u*dz;
    dCCO2=(7.1788*10^(-4)*(CT(i)/298)^1.75+130.59*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO2(i)-cCO2(i))/u*dz;
    dT=155.5330*516*(cT(i)-CT(i))/u/pg/(2666.653876+1.373028273*CT(i)+6.273853772606*10^(-4)*CT(i)^2-4.19418873045093*10^(-7)*CT(i)^3)*dz;
    % 求CCO、CCO2、CT的变化量
    CCO(i+1)=CCO(i)-dCCO;
    CCO2(i+1)=CCO2(i)-dCCO2;
    CT(i+1)=CT(i)+dT;%CCO(i+1)、CCO2(i+1)、CT(i+1)的值等于CCO(i)、CCO2(i)、CT(i)的值加上它们的变化量
end
    function F=f(p)%非线性方程
      F=[(8.7848*10^(-4)*(CT(i)/298)^1.75+149*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO(i)-p(1))-1539140.0731497/200*exp(-79950.0517840678/R/p(3))*p(1)*1176*1000/3600;
            (7.1788*10^(-4)*(CT(i)/298)^1.75+130.59*10^(-4)*(CT(i)/298)^(7/6))*516*(CCO2(i)-p(2))-1062673869.91041/200*exp(-105800.040358714/R/p(3))*1176*1000/3600;
            155.53*516*(p(3)-CT(i))-(1539140.0731497/200*exp(-79950.0517840678/R/p(3))*p(1)*1176*(188.1276+0.0724*p(3)-4.2782*10^(-5)*p(3)^2+7.9724*10^(-9)*p(3)^3)+1062673869.91041/200*exp(-105800.040358714/R/p(3))*1176*(146.4633+0.06996*p(3)-2.7313*10^(-5)*p(3)^2+1.8928*10^(-9)*p(3)^3))*1000000/3600;];
    end
CCO
CCO2
CT
cCO
cCO2
cT   %输出这些值
end调整了一下顺序,可以计算了,你试试吧

lxx244lxx 发表于 2010-11-15 09:40:49

4# qibbxxt
谢谢了,是可以算了,是嵌套函数的位置放错了吧,但算的结果不对,可能是我的方程还是有问题吧。。谢谢你们了。。
页: [1]
查看完整版本: Function definition is misplaced or improperly nested.