我用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
为什么结果不对?非线性方程的公式如下,是不是我写错了? 回复 1 # wqcfirst 的帖子
我的QQ是348920043,希望得到您的帮助!! [ 本帖最后由 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
结果非常好啊!关键还是你的数据太少而方程的次数高了。 回复 3 # 20wangz 的帖子
我在中国知网上找的数据,只有五年的,非常感谢啊,结果真的非常好啊!可以写论文了。
页:
[1]