wqcfirst 发表于 2010-12-3 22:55

我用1stOpt写的程序怎么运行不对啊???

本帖最后由 wqcfirst 于 2010-12-3 22:56 编辑

题目是关于有16个变量的曲线拟合,代码如下,恳请大侠帮我看看错在哪里?谢谢啊
线性拟合代码:
Variable x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,y;
Parameters b,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15;
Function y=b+b1*x1+b2*x2+b3*x3+b4*x4+b5*x5+b6*x6+b7*x7+b8*x8+b9*x9+b10*x10+b11*x11+b12*x12+b13*x13+b14*x14+b15*x15;

data;
// x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,y
65.93      48.37      7.64      5.49      9.9      1.8      8.6      3.1      7.09      473      967      101      2.082      12617      18.93      15.39
65.83      48.82      7.63      5.39      9.87      1.83      8.47      2.93      7.1      457      977      104      2.081      12649      18.28      15.26
65.89      48.99      7.33      5.39      10      1.86      8.32      2.74      6.96      474      996      107      1.877      12516      17.11      15.41
67.31      48.95      7.46      5.3      10.1      1.9      8.19      2.71      6.86      521      1019      111      1.577      12558      15.79      15.39
70.42      49.22      7.52      5.19      11.2      2.15      7.59      2.62      6.92      542      1080      112      1.406      12443      14.64      16.36


非线性拟合:
Variable x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,y;
Parameters b,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15;
Functiony=b*x1^b1*x2^b2*x3^b3*x4^b4*x5^b5*x6^b6*x7^b7*x8^b8*x9^b9*x10^b10*x11^b11*x12^b12*x13^b13*x14^b14*x15^b15;
data;
// x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,y
65.93      48.37      7.64      5.49      9.9      1.8      8.6      3.1      7.09      473      967      101      2.082      12617      18.93      15.39
65.83      48.82      7.63      5.39      9.87      1.83      8.47      2.93      7.1      457      977      104      2.081      12649      18.28      15.26
65.89      48.99      7.33      5.39      10      1.86      8.32      2.74      6.96      474      996      107      1.877      12516      17.11      15.41
67.31      48.95      7.46      5.3      10.1      1.9      8.19      2.71      6.86      521      1019      111      1.577      12558      15.79      15.39
70.42      49.22      7.52      5.19      11.2      2.15      7.59      2.62      6.92      542      1080      112      1.406      12443      14.64      16.36

为什么结果不对?非线性方程的公式如下,是不是我写错了?

wqcfirst 发表于 2010-12-3 22:56

回复 1 # wqcfirst 的帖子

我的QQ是348920043,希望得到您的帮助!!

20wangz 发表于 2010-12-3 23:50

[ 本帖最后由 20wangz 于 2010-12-3 23:57 编辑 ]

回复 1 # wqcfirst 的帖子

以你的非线性拟合部分为例:
程序大有改进的余地,关键是原来的程序中有很多东西是可以简写的。再有,连乘式最好不那么写,容易混淆,必要的时候可以用括号。
修改后的程序如下:
Variable x(15),y;
Parameters A,b(15);
Functiony=a*Prod(i=15)(x^b);
data;
// x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,y
65.93      48.37      7.64      5.49      9.9      1.8      8.6      3.1      7.09      473      967      101      2.082      12617      18.93      15.39
65.83      48.82      7.63      5.39      9.87      1.83      8.47      2.93      7.1      457      977      104      2.081      12649      18.28      15.26
65.89      48.99      7.33      5.39      10      1.86      8.32      2.74      6.96      474      996      107      1.877      12516      17.11      15.41
67.31      48.95      7.46      5.3      10.1      1.9      8.19      2.71      6.86      521      1019      111      1.577      12558      15.79      15.39
70.42      49.22      7.52      5.19      11.2      2.15      7.59      2.62      6.92      542      1080      112      1.406      12443      14.64      16.36
运行的结果如下:
迭代数: 3068
计算用时(时:分:秒:微秒): 00:00:18:813
优化算法: 标准差分进化算法(DE1)
计算结束原因: 达到收敛判断标准
均方差(RMSE): 9.92587327541698E-5
残差平方和(RSS): 4.92614801398185E-8
相关系数(R): 0.999999982216591
相关系数之平方(R^2): 0.999999964433183
决定系数(DC): 0.999999939204374
卡方系数(Chi-Square): 1.56637844832404E-9
F统计(F-Statistic): -12062271.2035206

参数      最佳估算
----------      -------------
a      1.40207417175425
b1      3.52653715855568
b2      -2.21042348757024
b3      6.76236333954203
b4      -4.49129312030492
b5      9.54872677150475
b6      0.0389019778503239
b7      12.6538007337389
b8      -11.0979809549966
b9      -3.80098480938207
b10      -9.67838508793979
b11      -3.85543757153025
b12      -2.05300438266006
b13      -13.3914976556822
b14      0.809915011206263
b15      19.9664762196623

====== 结果输出 =====

No      实测值y      计算值y
1      15.39      15.3899714006632
2      15.26      15.2599750050702
3      15.41      15.4101704311263
4      15.39      15.3899594986143
5      16.36      16.3601308880457
结果非常好啊!关键还是你的数据太少而方程的次数高了。

wqcfirst 发表于 2010-12-4 07:10

回复 3 # 20wangz 的帖子

我在中国知网上找的数据,只有五年的,非常感谢啊,结果真的非常好啊!可以写论文了。
页: [1]
查看完整版本: 我用1stOpt写的程序怎么运行不对啊???