snowjery 发表于 2007-4-29 00:01

请教

我才找到的这个软件,用它求非线性方程参数,为什么每次得出得参数差好多呀:'( 郁闷死了
Parameter g1,g2,a;
Variable y, x;
Function   y = -g1-g2*exp(-a*g2)-lnx+g2-3.708+x*exp(-a*g1);
Data;
//   y               x
      -13.4323E0   3.3405E0
      -12.4625E0   5.7856E0
      -12.4347E0   6.0955E0
      -12.3667E0   6.5777E0
      -12.3588E0   6.8532E0
是因为点太少了嘛?急呀,马上要交论文了

dingd 发表于 2007-4-30 15:50

1: 将 lnx 改为 ln(x)
2: 公式的形式决定了有无穷组解:

原公式: y = -g1-g2*exp(-a*g2)-ln(x)+g2-3.708+x*exp(-a*g1)可改写为:
y = g3-ln(x)+x*g4
其中
g3=-g1-g2*exp(-a*g2)+g2-3.708
g4=exp(-a*g1)

拟合上述公式得唯一解:g3 = -13.9385784379896,g4 =0.531029976091689

得方程组:
-13.9385784379896=-g1-g2*exp(-a*g2)+g2-3.708
0.531029976091689=exp(-a*g1)

三个变量两组方程,自然不会有唯一解。

nuaahj 发表于 2007-5-16 20:31

请教dingd,我在用1stopt拟合时也碰到和snowjery同样的问题,‘公式的形式决定了有无穷组解’具体怎么做??谢谢:@)

nuaahj 发表于 2007-5-16 20:35

我在用一个公式拟合时相关系数不是太好,请问如何优化公式,使得相关系数更高??谢谢

dingd 发表于 2007-5-17 21:09

把具体问题及公式、数据放上来才好解答啊!

nuaahj 发表于 2007-5-18 16:52

请教

Parameter a,b,c,d,f,g,h;
Variable x,y;
Functiony=c*(1-d*exp(a*x)+f*exp(b*x)+h*exp(g*x));
Data;      
1      321.21
2      448.48
3      472.73
4       554
5       624.24
6       725
7       800
8       856
9       895
10      910
14      930
21      979
28      993
35      1018
42      1013
60      1057
120   1075.5
150   1063
180   1090

数据和公式如上面所示,每次拟合参数的值不相同,但相关系数相同,请问如何解决??还有就是上面的公式如果不太合适,如何优化,使得相关系数更高??谢谢!!

支承点 发表于 2007-5-22 14:37

请教如何用1stopt拟合

拟合内容见附件!谢谢

dingd 发表于 2007-5-22 16:01

param1        .468632718487873
param2        -.244639115513389
param3        -.183539634047734
param4        18.9117620487394
param5        .220098982354945
       
均方差(RMSE)        3.69475253981371E-02
残差平方和(SSE)        8.1907177982759E-03
相关系数(R)        .999023582703742
相关系数之平方(R^2)        .998048118798221

franch 发表于 2007-5-24 16:27

哇~~~~~

都是前辈啊。。我是新来的。。哈哈学习 学习一下:)

action 发表于 2007-5-24 18:22

用处不是很大!

稍复杂的情况就不能用了,比如积分等

ntzcx2007 发表于 2007-12-20 19:03

初次接触lsopt,有个问题想请教

请问,如何在一张图上拟合两组数据,即生成两条曲线~~

dingd 发表于 2007-12-20 20:38

原帖由 action 于 2007-5-24 18:22 发表 http://www.chinavib.com/forum/images/common/back.gif
稍复杂的情况就不能用了,比如积分等

1stOpt支持外接C++、Fortran等,可以发挥自己的编程能力,将积分等复杂部分自己编写,用1stOpt强大的优化能力就OK了。若编程一点都不懂,哪就没办法了。

weilinhy 发表于 2008-3-29 22:58

请问Dingd兄问题

求解附件中的非线性方程组,问题为什么在1stopt中解出来的值很奇怪
Constant N=81870000000, M=12280000000,k=1,X=5.5,tuo=1,S=12,si=0.12,r=0.0488;
Function
si=(V*(((N+k*M-M*k*normcdf(((log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao)))))/(N*(N+k*M))))/S)*sigma;
S*N=V-M*((1/(N+k*M))*(k*V*normcdf(((log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao))))-exp(-r*tao)*N*X*(normcdf(((log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao)))-sigma*sqrt(tao)))));

这里M与公式中n一样意思。
怎么运行结果会错误
sigma明显应该比sigmas大才对
一次结果如下:
迭代数: 839
计算用时(时:分:秒:毫秒): 00:00:03:188
计算中止原因: 达到收敛判定标准
优化算法: 遗传算法
函数表达式 1: 1.55-(v*(((25412000+1*3200000-3200000*1*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2*sigma*sigma)*7)
            /(sigma*sqrt(7)))))/(25412000*(25412000+1*3200000))))/24.65)*sigma
         2: 24.65*25412000-v+3200000*((1/(25412000+1*3200000))*(1*v*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2
            *sigma*sigma)*7)/(sigma*sqrt(7))))-exp(-0.0488*7)*25412000*52*(normcdf(((log(1*v/(25412000*52))+(0.0488
            +1/2*sigma*sigma)*7)/(sigma*sqrt(7)))-sigma*sqrt(7)))))
目标函数值: 8502.57205479832
v: 521377667.955105
sigma: -5365.93202516455 (肯定为正数才对啊)

另外运行一次又得:
迭代数: 43
计算用时(时:分:秒:毫秒): 00:00:02:16
计算中止原因: 达到收敛判定标准
优化算法: 遗传算法
函数表达式 1: 1.55-(v*(((25412000+1*3200000-3200000*1*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2*sigma*sigma)*7)
            /(sigma*sqrt(7)))))/(25412000*(25412000+1*3200000))))/24.65)*sigma
         2: 24.65*25412000-v+3200000*((1/(25412000+1*3200000))*(1*v*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2
            *sigma*sigma)*7)/(sigma*sqrt(7))))-exp(-0.0488*7)*25412000*52*(normcdf(((log(1*v/(25412000*52))+(0.0488
            +1/2*sigma*sigma)*7)/(sigma*sqrt(7)))-sigma*sqrt(7)))))
目标函数值: 18069.6833970072
v: 521399420.814364
sigma: -420.558088954254(肯定为正数才对啊)
====== 计算结束 ======

dingd 发表于 2008-3-30 19:16

1:请看你在Matlab版的相同问题记答案:
http://forum.vibunion.com/forum/viewthread.php?tid=61047&pid=326203&page=1&extra=page%3D1#pid326203
2:与你在Matlab版问题相比,系数有所改变,下面是结果:

v: 1065456210757
sigma: 0.127240160166278

wynstone 发表于 2009-1-16 08:59

老帖子真好啊,学习中
页: 1 2 [3] 4
查看完整版本: [原创]1stOpt优化应用 - 与Matlab对比!