如何求这组数据的拟合函数

2015-07-10 16:20:16 +08:00
 khowarizmi
给了几组点如下:
(1,21.9059330191461)
(2,12.3412139792904)
(5,6.60182614356538)
(10,4.6877695119712)
(25,3.54156118026073)
(50,3.22440644770007)
(100,3.08252143576504)
(250,2.99905966403855)

画出来是这个样子:


用什么函数去拟合比较好?

如果我假设 y = a(x + b)^c + d, 应该如何求这些参数?
4424 次点击
所在节点    数学
7 条回复
giskard
2015-07-10 18:11:27 +08:00
用origin可以很容易做这样的拟合,或者,也可以用python的scipy包进行最小二乘拟合,比如http://andyhuzhill.github.io/python/scipy/2013/04/10/scipy-leastsq-usage/
chlx
2015-07-10 18:55:41 +08:00
就最小二乘 + 梯度下降吧
omengye
2015-07-24 22:52:48 +08:00
matlab算了一下,从图像上看显然是反比例函数比较好一些吧.
假设方程是y=a/x+b这种形式,可以算出来a=17.7722,b=3.1730,当然这个不一定是最佳的.
lz可以自行画一下看看效果.
khowarizmi
2015-07-25 16:55:54 +08:00
@omengye 我最后用的分段,一部分用 log 拟合,一部分用多项式。
omengye
2015-07-25 21:38:46 +08:00
@khowarizmi 哦log 的话配合多项式也是可以的,拟合效果并不能完全决定用什么函数去拟合的,这个得跟实际情况有关联。
miemiekurisu
2015-08-25 08:51:51 +08:00
有这么几种思路和方法: 广义线性回归,非线性回归,样条。
分段处理其实就是样条,数据点少的时候用样条精度略差,比较难把握分段数据点临界点,数据多的时候运算速度快,拟合效果好(因为分段处理了),非线性回归拟合和计算都比较复杂。
广义线性回归求系数比较容易,系数就是最小二乘解
onerhao
2015-10-21 14:38:16 +08:00
数据太少了。不过可以考虑基于核(比如高斯核)的线性回归。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/204795

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX