unknowno 发表于 2007-12-26 15:47

含有一个隐变量的非线性方程组参数识别问题!

方程如图所示:


Z=0.0137*X^2/((b-18*X^2+3/4*Z^2*c)^2+(a*X)^2)^(1/2);
Y=1.3158e+3*(5.776e-7+(b/9/X^2-1)*Z^2+c/12*Z^4/X^2)^(1/2);
X=[ 50.973   83.221    118.59   158.12    198.69    218.46    226.78    231.98    234.06    236.14    243.42    261.11   274.63    353.69    452.51    506.61    574.22    604.39];
Y=[ 1.019      1.0407    1.1491    1.3225    1.8428    2.1897    2.9268    4.5312    7.0678    6.5041    5.5935    4.1626    3.4905    2.3848    1.3659    0.62873   0.52033   0.52033];

其中:Y和X分别是自变量和因变量;a、b、c为待识别参数;Z为隐变量(其值随X的改变而改变)。
问:是否能够通过以上两个方程识别出参数a、b、c

dingd 发表于 2007-12-27 16:09

可以用1stOpt来求解:

StartRange = [-11110,11115];
Conststr M=0.0137*X^2/((b-18*X^2+3/4*Z^2*c)^2+(a*X)^2)^(1/2);
ParVariable Z;
Variable x, y;
Function x=x+1.3158e+3*(5.776e-7+(b/9/X^2-1)*M^2+c/12*M^4/X^2)^(1/2)-y;
Data;
50.973        1.019
83.221        1.0407
118.59        1.1491
158.12        1.3225
198.69        1.8428
218.46        2.1897
226.78        2.9268
231.98        4.5312
234.06        7.0678
236.14        6.5041
243.42        5.5935
261.11        4.1626
274.63        3.4905
353.69        2.3848
452.51        1.3659
506.61        0.62873
574.22        0.52033
604.39        0.52033

结果:
均方差(RMSE): 0.0773731612494932
残差平方和(SSE): 0.107758909471321
相关系数(R): 0.999999899520885
相关系数之平方(R^2): 0.99999979904178
决定系数(DC): 0.999999750388048
卡方系数(Chi-Square): 0.000125312216436043
F统计(F-Statistic): -600932.762214901

参数        最佳估算
----------        -------------
b                  2063822.2920578
c                  -101.430368486745
a                  -464.090516495974

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

No        实测值x        计算值x
1        50.973        51.0070101874121
2        83.221        83.2542022966431
3        118.59        118.628466503307
4        158.12        158.120413386063
5        198.69        198.690239622019
6        218.46        218.460403251233
7        226.78        226.780498586309
8        231.98        231.98081155289
9        234.06        234.059475377936
10        236.14        236.139519893722
11        243.42        243.419500217824
12        261.11        261.112196341142
13        274.63        274.629531557991
14        353.69        353.688711701764
15        452.51        452.412916592635
16        506.61        506.877881401205
17        574.22        574.371081324659
18        604.39        604.390442475444

unknowno 发表于 2007-12-27 18:51

看来1stOpt这软件在解决非线性问题还真有一套,谢谢楼上的帮助!
我先根据你的程序我捉摸一下,有问题了再向你请教!呵呵!
再次感谢哈!

unknowno 发表于 2007-12-27 18:54

我使用1stOpt得到的结果是这样的:
计算结束原因: 达到收敛判断标准
均方差(RMSE): 0.887606892212501
残差平方和(SSE): 14.1812279118564
相关系数(R): 0.999985153280802
相关系数之平方(R^2): 0.999970306782029
决定系数(DC): 0.999967150707046
卡方系数(Chi-Square): 0.0283053832939798
F统计(F-Statistic): 538827.584265408

参数        最佳估算
----------        -------------

a                  745.738872056136
b                  1090775.58914672
c                  1295839.68642086

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

No        实测值x        计算值x
1        50.973        50.9975165
2        83.221        83.3051483
3        118.59        118.7308325
4        158.12        158.4565881
5        198.69        199.4635373
6        218.46        220.0013838
7        226.78        228.3179645
8        231.98        232.4460031
9        234.06        232.2057258
10        236.14        235.0583627
11        243.42        243.7811555
12        261.11        261.7915091
13        274.63        274.5641861
14        353.69        352.2459962
15        452.51        451.5656761
16        506.61        506.2891572
17        574.22        573.9207255
18        604.39        604.0631792

有你的结果有点出入!

unknowno 发表于 2007-12-27 18:57

同样的程序又运行了一次,结果这样,呵呵!

a                  -385.793731818364
b                  1144701.33776336
c                  -10975956802.6678

unknowno 发表于 2007-12-27 19:00

有一次,结果又不一样!看看怎么回事!

a                  746.316144396816
b                  1090673.56107062
c                  61365179.1712411

dingd 发表于 2007-12-27 22:02

不知道你用的1stOpt哪个版本?

你的问题应该是有物理背景的吧?比如对应于x的z值不知道,但大概范围你应该明白吧,我是大概给的,自己根据情况改动一下;还有a、b、c有范围限制的话,把约束加上。

unknowno 发表于 2007-12-28 07:57

谢谢你的指点!我再试试,又问题了再向你请教!呵呵!
我使用的是1stOpt1.5(没有买正版的)!

unknowno 发表于 2007-12-28 16:43

在阅读1stOpt使用手册是发现这句话“因为1stOpt的初始值通常是随机产生,一次计算不成功,并非意味下次亦同样不成功,反之亦然。”
这句话是否可理解为如果不给定较为准确的初值,1stOpt得到的结果并不是每次都准确的,要靠自己进一步判断,同时就解释了上面的为什么每次运行结果都不一致的现象的。

我可不可以这样认为:想得到较为准确的结果有两种方法:1、就是给定较准确的初值;2、就是多算几次。

请指教!

dingd 发表于 2007-12-28 20:06

对大多数情况,1stOpt从任意随机值出发都能得到全局最优解,相对于其它软件,性能可以说有了质的提高,但应该明白,非线性问题是NP问题,还没有任何一种算法或软件能象线性问题那样保证100%的崇高率,遇到这种问题:1:多试几次,2:调整一下优化算法的参数,3:如果参数有物理意义,把约束加上。

unknowno 发表于 2007-12-29 15:55

回复 #10 dingd 的帖子

再次感谢,继续努力
页: [1]
查看完整版本: 含有一个隐变量的非线性方程组参数识别问题!