24小时热门版块排行榜    

查看: 207  |  回复: 2
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

gg0520

铜虫 (初入文坛)

[交流] 【求助】fsolve求解问题

function xFsovle5  % Pn+M--->Dn+P1
clear all;
clc;
format short g;
global Ka Ki Kp Ktm Ktal Kth Kd Qti0 Qt0 Qp0 QH0 Mti Mt Mp MH T V Qv Qs
Ka=0.0013;Ki=108.85;Kp=108.85;Ktm=0.012;Ktal=0.12;Kth=4.8;Kd=0.001;  %速率常数
Qti0=3000;Qt0=10000;Qp0=817500000;QH0=4000000;                     Mti=193.9;                                                           Mt=114;                                                             Mp=42;                                                               MH=2;                                                                T=3600;                                                            
V=90;                                                               
Qv=4.608206;                                                         
Qs=0.00855230;                                                      
x0=[6.05e-006  1.1413e+003 120.5079 2.8374 0.0049237 3.6821 5.5035e+003 18.1943 1.3606e+004 2.0337e+007 0.0043327]'; [x,FVAL,EXITFLAG,output]=fsolve(@NonlinEqs,x0)     
Mn=42*(x(6)+x(9))/(x(5)+x(8))
Mw=42*(x(7)+x(10))/(x(6)+x(9))
PDI=Mw/Mn
%-------------------------------------
function f =NonlinEqs(x)
global Ka Ki Kp Ktm Ktal Kth Kd Qti0 Qt0 Qp0 QH0 Mti Mt Mp MH T V Qv Qs
f(1)=Ka*x(11)+(Kth*x(3)^0.5+Ktal*x(4))*x(5)-Ki*x(1)*x(2)-Kd*x(1)+(0-x(1)*Qs)/V; %
f(2)=-Ki*x(1)*x(2)-(Kp*x(2)+Ktm*x(2))*x(5)+(Qp0/(Mp*T)-x(2)*Qv)/V;
f(3)=-Kth*x(5)*x(3)^0.5+(QH0/(MH*T)-x(3)*Qv)/V;
f(4)=-Ktal*x(4)*x(5)+(Qt0/(Mt*T)-x(4)*Qs)/V;
f(5)=Ki*x(1)*x(2)-(Kth*x(3)^0.5+Ktal*x(4)+Kd)*x(5)+(0-x(5)*Qs)/V;
f(6)=Ki*x(1)*x(2)+Kp*x(2)*x(5)-(Kth*x(3)^0.5+Ktm*x(2)+Ktal*x(4)+Kd)*x(6)+Ktm*x(2)*x(5)+(0-x(6)*Qs)/V;
f(7)=Ki*x(1)*x(2)+2*Kp*x(2)*x(6)+Kp*x(2)*x(5)-(Kth*x(3)^0.5+Ktm*x(2)+Ktal*x(4)+Kd)*x(7)+Ktm*x(2)*x(5)+(0-x(7)*Qs)/V;
f(8)=(Kth*x(3)^0.5+Ktm*x(2)+Ktal*x(4)+Kd)*x(5)+(0-x(8)*Qs)/V;
f(9)=(Kth*x(3)^0.5+Ktm*x(2)+Ktal*x(4)+Kd)*x(6)+(0-x(9)*Qs)/V;
f(10)=(Kth*x(3)^0.5+Ktm*x(2)+Ktal*x(4)+Kd)*x(7)+(0-x(10)*Qs)/V;
f(11)=-Ka*x(11)+(1.35/T-x(11)*Qs)/V;
-------------------------------------------------------------------------------
结果为:
Maximum number of function evaluations reached:
increase options.MaxFunEvals.

x =

    0.0033832
       1141.3
       11.212
       2.7032
     0.002532
      0.66931
       5503.5
       18.194
        13606
  2.0337e+007
    0.0043327


FVAL =

  Columns 1 through 7

      -420.24      -733.23        5.558  -0.00080748       420.24       714.72       1409.1

  Columns 8 through 11

     0.074467       18.849  1.6369e+005 -1.8776e-006


EXITFLAG =

     0


output =

       iterations: 91
        funcCount: 1104
        algorithm: 'trust-region dogleg'
    firstorderopt: 6.4012e+008
          message: [1x78 char]


Mn =

        31405


Mw =

        62792


PDI =

       1.9994
感觉程序就根本没有运行一样,初值基本不变,特别是最后几个,无论你怎么改变他们的值,都不会变,而是相应的改变前面的值,请问这是为什么~谢谢~
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


小木虫(金币+0.5):给个红包,谢谢回帖交流
你是在做参数估值吧,用lsqnonlin  (L-M法),lsqunicon(单纯形法)求解
3楼2009-06-28 09:48:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

mininurse

金虫 (正式写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
kuhailangyu(金币+3,VIP+0):欢迎常来! 6-26 14:33
1)这个解并没有收敛,所以exitflag=0,应该增加options.MaxFunEvals
2)这么多个参数在非线性方程中作优化,本身就是挺难获得最优解的,建议改进算法,考虑其它办法,而不是只是依赖于这个函数进行求解
2楼2009-06-26 14:04:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见