请教
我才找到的这个软件,用它求非线性方程参数,为什么每次得出得参数差好多呀:'( 郁闷死了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
是因为点太少了嘛?急呀,马上要交论文了 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)
三个变量两组方程,自然不会有唯一解。 请教dingd,我在用1stopt拟合时也碰到和snowjery同样的问题,‘公式的形式决定了有无穷组解’具体怎么做??谢谢:@) 我在用一个公式拟合时相关系数不是太好,请问如何优化公式,使得相关系数更高??谢谢 把具体问题及公式、数据放上来才好解答啊!
请教
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
数据和公式如上面所示,每次拟合参数的值不相同,但相关系数相同,请问如何解决??还有就是上面的公式如果不太合适,如何优化,使得相关系数更高??谢谢!!
请教如何用1stopt拟合
拟合内容见附件!谢谢 param1 .468632718487873param2 -.244639115513389
param3 -.183539634047734
param4 18.9117620487394
param5 .220098982354945
均方差(RMSE) 3.69475253981371E-02
残差平方和(SSE) 8.1907177982759E-03
相关系数(R) .999023582703742
相关系数之平方(R^2) .998048118798221
哇~~~~~
都是前辈啊。。我是新来的。。哈哈学习 学习一下:)用处不是很大!
稍复杂的情况就不能用了,比如积分等初次接触lsopt,有个问题想请教
请问,如何在一张图上拟合两组数据,即生成两条曲线~~ 原帖由 action 于 2007-5-24 18:22 发表 http://www.chinavib.com/forum/images/common/back.gif稍复杂的情况就不能用了,比如积分等
1stOpt支持外接C++、Fortran等,可以发挥自己的编程能力,将积分等复杂部分自己编写,用1stOpt强大的优化能力就OK了。若编程一点都不懂,哪就没办法了。
请问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(肯定为正数才对啊)
====== 计算结束 ======
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 老帖子真好啊,学习中