24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2936  |  回复: 19
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zxwuli

金虫 (正式写手)

[交流] 【求助】最小二乘法编写指数拟合方程已有14人参与

我想用最小二乘法编写一个三指数拟合方程,但没有头绪,谁有关于最小二乘法编写指数拟合方程的程序哦?单指数的也行
或从哪里可以找到参考的程序哦?
回复此楼
风雨兼程
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

archun

铜虫 (初入文坛)

★ ★
zxwuli(金币+5): 2010-06-15 17:49:00
wangen994(金币+2):感谢你的热心帮助,欢迎常来程序语言版 2010-06-15 18:20:14
我不知道你是要自己从一开始写程序,或者就是找一个已经提供此项功能或者函数的软件,再由此写程序。

如果你是想从最开始写程序,要算法的话。我以前写过。用一种叠代的方法进行拟合。方法的名字我忘了,好像叫Newton Raphson什么的。就是先给一组初值,这组初值按照一种方法进行叠代计算出新的参数值,再把算得的参数值当作初值,进行下一次叠代计算。如果初值选取合适,这样叠代下去会收敛到一组“最优值”。这组最优值就是你要求得的解。

有点像牛顿法解方程的过程一样。用于曲线拟合比较麻烦,你可以去图书馆找几本书看看。
别去找 c++数值算法大全 之类的书,我原来就是找这种类型的书,找了半天没有我想要的。最多就是如何用此法解方程组之类的东西,没有如何拟合曲线。建议去看数学方面的书,数学分析之类的书,上面有这种方法的详细过程和原理(我记得先是按最小二乘法原理把偏差平方和写出来,所有参数写为 参数(下一组) = 参数 + Delta小量。然后有一步在参数处 Taylor 展开,省略所有高次项,只留一次项,再构建方程组,解 求导 = 0 得Delta小量,从而得到下一组参数。再把这组参数作为初值,再进行上述操作,直到收敛。具体的你要看书,这只是我印象中的)。你跟据它写程序即可。解那个方程组的时候要用到矩阵,你最好要有矩阵的代码。

但是这种方法有一点不好是初值不好选择。初值选择不对,叠代下去很可能不收敛而失败。这时就要加上一系列的限制条件。很麻烦,我还没玩过。。。我都是选一组初值后,把这组初值代入函数式画出图像,如果这个图像和原图像比较相近,那么这组初值就很可能成功。
14楼2010-06-14 22:56:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 20 个回答

snoopyzhao

至尊木虫 (职业作家)


zxwuli(金币+5): 2010-05-18 15:24:35
resonant(金币+1):感谢参与讨论。 2010-05-18 19:34:35
去 netlib 上搜一下
或者去 statlib 上搜一下也可以,这个应该有很多的。
2楼2010-05-18 15:11:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dy_306

金虫 (正式写手)


resonant(金币+1):感谢参与讨论。 2010-05-18 19:34:47
zxwuli(金币+2): 2010-05-19 12:40:12
先把它进行对数变换,再用线性拟合可以处理简单的指数拟合吧
3楼2010-05-18 17:34:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主


resonant(金币+1):感谢参与讨论。 2010-05-18 19:34:55
Google一下,应该有很多吧。
4楼2010-05-18 19:04:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见