数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 6550|回复: 4

幂函数拟合

[复制链接]
发表于 2015-8-18 07:24 | 显示全部楼层 |阅读模式
本帖最后由 LabVIEW2012 于 2015-8-18 07:27 编辑



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2015-8-18 15:18 | 显示全部楼层
      楼主的问题已经不是单纯的幂函数问题,给出的公式形式是0次多项式加幂函数的复合函数,按最小二乘法很难得到解析解,目前主要用迭代法。作为三个待定系数,先假定常数项a(如以y1作初始值),将各组实验值减去初始值,然后用幂函数拟合求得b、c,再将实验值减去bxi^c,然后平均,可得a值;依次循环,可得到满足精度要求的a、b、c。(用excel 可很容易得到结果)。
      如果实验结果都是理论值,问题就简单多了,无需用最小二乘法,用三组数据直接求解就可以了。如:
x=(0,m,1),y=(a,n,a+b) -----------c=log(m)[(n-a)/b] 。
 楼主| 发表于 2015-8-18 16:00 | 显示全部楼层
luyucheng1 发表于 2015-8-18 15:18
楼主的问题已经不是单纯的幂函数问题,给出的公式形式是0次多项式加幂函数的复合函数,按最小二乘法 ...

谢谢回复。可能问题说的不是特别清楚。
a和b在拟合的时候,可以当作为常数,已知。这也是之所以实验必须包含x=0和x=1这两种工况的原因。从变分原理来看,就是保证边界条件满足。你可以试着把x1和xn代入拟合函数,发现任意c都能使得函数满足情况。
所以整个函数,只有c是未知,代求。
发表于 2015-8-18 16:23 | 显示全部楼层
本帖最后由 luyucheng1 于 2015-8-18 16:26 编辑

     不需要用最小二乘法。你可以将实验数组分别减去y1(就是a),再分别处以(yn-a)(就是b),再分别以xi为底取对数就得到一组c,平均一下就可以了。
      如果一定要用最小二乘法去处理,就用公式:Yi=xi^c,其中Yi为减a除以b后得数据。取对数得logYi=clogxi------很容易得出-最小二乘法公式是:------c=西格玛[logYilogxi]/西格玛[logxi)^2]。
      这里把a、b当做常量,必须先对数据进行处理,然后再考虑用公式。如果b也作变量考虑,也很简单。关键是a要先处理掉。
 楼主| 发表于 2015-8-18 17:55 | 显示全部楼层
luyucheng1 发表于 2015-8-18 16:23
不需要用最小二乘法。你可以将实验数组分别减去y1(就是a),再分别处以(yn-a)(就是b),再分别以xi为底 ...

谢谢,帮助很大!
确实,在拟合前,先把数据整体偏移(减去a)后,再整体缩放(除以b),之后拟合就容易多了。

我测试一下,看看这种方法得出的c,和误差平方和最小得出的c是否相同,其中误差平方和最小对c,我是通过穷举法确定的。

再次感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-1-16 08:09 , Processed in 0.111773 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表