声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3046|回复: 3

[1stopt] 怎样使计算结果的目标函数值为零?

[复制链接]
发表于 2011-6-16 09:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
    用1stopt做解方程组的计算时,结果总是不为零,最好的结果也只是0.04,希望在此能请教大家两个问题:

    1.请问哪一种计算方法更适合于解方程组更呢?按使用手册的说明,我把适用于解方程的几种计算方法都试了一遍,可还是不行。而且发现使用“简面体爬山法”时,若是以“允许误差/迭代次数“1E-10”为收敛判定条件,计算的就很快,但目标函数值却很大,有时是十几左右。若是以"最小残差小于1E-10"为条件,计算的就很慢,目标函数值虽然不为0,但会相对小一些,请问这二者有什么区别呢?

    2.在一定计算方法中,是不是把“判断指标”的精度提高,就一定可以使计算的目标函数为零0呢?现在的计算中,已经将其值设为1E-30,可还是不行,那么应该多大合适呢?

    谢谢大家。
回复
分享到:

使用道具 举报

发表于 2011-6-19 19:28 | 显示全部楼层
把代码放上来!
 楼主| 发表于 2011-6-20 15:19 | 显示全部楼层
本帖最后由 meconglin 于 2011-6-20 15:21 编辑

回复 2 # dingd 的帖子

谢谢dingd主任,程序如下:
Parameter   x1[-1,0],x2[0,1] ,x3[-1,0],x4[0,1], x5[-1,0],x6[0,1], x7[0,1] ,x8[0,1] ,x9[0,1] ,
                  x10=500e-6[0,1],
                  x11[0,1],x12[0,1],x13[-1,0],x14[0,1],x15[-1,0],x16[0,1],x17[0,1],x18[0,1],x19[0,1],x20[0,1],x21[0,1],
                  x22=200e-6[0,1] ,
                  x23[0,1],x24[0,1],x25[0,1],x26[0,1],x27[0,1],x28[0,1],x29[-1,0],x30[0,1],x31[0,1],x32[0,1],x33[0,1],
                 x34[0,1],x(35:37),
                  x38=4000[2000,5000],x39=2500[2000,5000],x40[0,1],x41[-1,0],x42[0,1],x43[0,1],x44[0,1],
                  Y(1:6);
Constant      P=68 , Ramb=1000e-06,
              Rsurf=100e-06 , Tamb=2550,  TCZ=4000 ,  T=298.15,
              rod=0.36, bet=0.03,   la=0.6,         
              hsCO=-3950 ,  hsCO2=-8950 , hsH2=0 ,  hsH2O=-13443.9,
              hsAl2O= -1954.3 , hsAl= 12005.2,   hsAlxOx = -2848.6,  
              CpsCO=1.04, CpsCO2=0.84, CpsH2=14.43 , CpsH2O=1.87 , CpsAl2O=0.62, CpsAl=0.79,
              CpsAlxOx = 0.63,  CpCO=1.39,  CpCO2=1.53, CpH2=17.6 , CpH2O=2.98 , CpAl=0.77,  CpAlxOx=0.95,   
               hAl2O3TCZ= -10447 , hAlTsurf = 2765.2,
              aco=-4260.076, aco2=-9200.45, ah2=-4302.3, ah2o=-14001.44, aalxox=-3036.43,
              aal2o=-2139.15,aal=11775.62, aalo=1812.5,
              hAl2O3Tsurf=-11153.2, CpAl2O=0.83, CpAlO=0.9;   
Function    x1*(1/x10-1/Ramb)/(4*pi*rod*(1-bet)) = Ln ((x1*0.18-x2)/(x1*x6-x2));     // 1
             x1*(1/x10-1/Ramb)/(4*pi*rod*(1-bet)) = Ln ((x1*0.174-x3)/(x1*x7-x3));       // 2
             x1*(1/x10-1/Ramb)/(4*pi*rod*(1-bet)) = Ln ((x1*0.008-x4)/(x1*x8-x4));       // 3
             x1*(1/x10-1/Ramb)/(4*pi*rod*(1-bet)) = Ln ((x1*0.27-x5)/(x1*x9-x5));         // 4

             x11*(1/x22-1/x10)/(4*pi*rod*(1-bet)) = Ln ((x11*x6-x12)/(x11*x18-x12));    // 5
             x11*(1/x22-1/x10)/(4*pi*rod*(1-bet)) = Ln ((x11*x7-x13)/(-x13));                  // 6
             x11*(1/x22-1/x10)/(4*pi*rod*(1-bet)) = Ln ((x11*x8-x14)/(x11*x19-x14));    // 7
             x11*(1/x22-1/x10)/(4*pi*rod*(1-bet)) = Ln ((x11*x9-x15)/(-x15));                  // 8
             x11*(1/x22-1/x10)/(4*pi*rod*(1-bet)) = Ln (-x16/(x11*x20-x16));                   // 9
             x11*(1/x22-1/x10)/(4*pi*rod*(1-bet)) = Ln (-x17/(x11*x21-x17));                   //10

             x23*(1/Rsurf-1/x22)/(4*pi*rod*(1-bet)) = Ln (x18/x24);                                   // 11
             x23*(1/Rsurf-1/x22)/(4*pi*rod*(1-bet)) = Ln (x19/x25);                                   // 12
           x23*(1/Rsurf-1/x22)/(4*pi*rod*(1-bet)) = Ln ((x23*x20-x29)/(x23*x26-x29)); // 13
           x23*(1/Rsurf-1/x22)/(4*pi*rod*(1-bet)) = Ln ((x23*x21-x30)/(x23*x27-x30)); // 14
             x23*(1/Rsurf-1/x22)/(4*pi*rod*(1-bet)) = Ln (-x31/(x23*x28-x31));                // 15

             x1=x2+x3+x4+x5;                                 // 16
             x11=x12+x13+x14+x15+x16+x17;      // 17
             x23=x29+x30+x31;                                // 18

             1=x6+x7+x8+x9+x32;                           // 19
             1=x18+x19+x20+x21+x33;                    // 20
             1=x24+x25+x26+x27+x28+x34;            // 21
                     
             Y1=x2*CpCO+x3*CpCO2+x4*CpH2+x5*CpH2O;                                                         // 44
             Y3=x12*CpCO+x13*CpCO2+x14*CpH2+x15*CpH2O+x16*CpAlxOx+x17*CpAl2O;    // 45
             Y5=x29*CpAlO+x30*CpAl2O+x31*CpAl;                                                                        // 46
             Y2=x2*aco+x3*aco2+x4*ah2+x5*ah2o;                                                                       // 47              
             Y4=x12*aco+x13*aco2+x14*ah2+x15*ah2o+x16*aalxox+x17*aal2o;                        // 48
             Y6=x29*aalo+x30*aal2o+x31*aal;                                                                                  // 49
             Y1*(1/x10-1/Ramb)/(4*pi*(1-bet)*la) = Ln ((Y1*Tamb+Y2-x35)/(Y1*TCZ+Y2-x35));     // 22  
             Y3*(1/x22-1/x10)/(4*pi*(1-bet)*la) = Ln ((Y3*TCZ+Y4-x36)/(Y3*x38+Y4-x36));           // 23  
             Y5*(1/Rsurf-1/x22)/(4*pi*(1-bet)*la) = Ln ((Y5*x38+Y6-x37)/(Y5*x39+Y6-x37));         // 24  

             x37=0.593*(x29*hAl2O3Tsurf)+x31*hAlTsurf;                           // 25
             x36=x37;                                                                                    // 26  
             x35=x36-x40*hAl2O3TCZ;                                                         // 27   
             x2/28.011 = -x3/44.011;                                                            // 28  
             x4/2.016 = -x5/18.016;                                                              // 29  
             (x13-x3)/44.011 = (x2-x12)/28.011;                                         // 30   
             (x15-x5)/18.016 = (x4-x14)/2.016;                                            // 31   
             x16/86+x17/35=(x13-x3)/44.011 +(x15-x5)/18.016;               // 32   
             x40=(102/70)*x17+(102/86)*x16;                                           // 33  
             x30=-(70/172)*x29;                                                                   // 34   
             x41=-1.6e-4;                                                                              //  50
             x41=-x31;                                                                                   // 35   
             x42=(-102/172)*x29;                                                                 // 36   
             x31/27=(x16-x29)/43;                                                                // 37   
             x30=x17;                                                                                    // 38   
             x31/27 = -x13/44.011-x15/18.016 ;                                            // 39   
             x43/(x43+x44) = 0.122+0.000577*(x38-3500);                        // 40   
            
             -x29=(3653*(Rsurf^2)*P*(1-bet)*x26/43)/((x39^0.5)*(x24/28.011+x25/2.016+x26/43+x27/70+x28/27+x34/33.28));          // 41   
             P*(x28/27)/(x24/28.011+x25/2.016+x26/43+x27/70+x28/27+x34/33.28)= exp(12.43-34680/x39);    // 42      
             x43+x44=x20;                                                                              // 43
           
            这个程序与原来dingd主任曾经回答的帖子里的方程是相同的(http://forum.vibunion.com/thread-103505-1-1.html),但我在定义参数时,设定了取值范围,其实原来的那个也没有出现目标函数值为0的结果,我用的是麦夸特法+全局通用算法——
            收敛指标:1E-50;重复数:400;控制迭代数:300;收敛判断迭代数:200,
            我用的是1.5pj版,请问是版本的问题么?还是我选的算法不好呢?

发表于 2011-6-20 17:39 | 显示全部楼层
本帖最后由 dingd 于 2011-6-20 17:43 编辑

你能确保这50个公式在限定的参数范围内每个等式两边恒等从而使目标函数为0吗?用最新版算的最小值为0.006,太费时间,如果继续,也许还会更小一些。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-26 00:06 , Processed in 0.079781 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表