在给定一组值(x,f(x))
的情况下,有没有办法找到最适合数据的给定次数的多项式?
我知道polynomial interpolation,它用于找到给定n+1
数据点的n
次多项式,但这里有大量的值,我们想要找到一个低次多项式(找到最佳线性拟合、最佳二次、最佳三次等)。这可能与least squares有关。
更广泛地说,我想知道当我们有一个多元函数时的答案--比如像(x,y,f(x,y))
这样的点--并且想在变量中找到给定次数的最佳多项式(p(x,y)
)。(具体地说是多项式,而不是样条或傅立叶级数。)
理论和代码/库(最好使用Python,但任何语言都可以)都会很有用。
发布于 2008-12-19 21:06:38
是的,这通常是通过使用最小二乘来完成的。还有其他方法可以指定多项式的拟合程度,但这个理论对于最小二乘来说是最简单的。一般的理论称为线性回归。
您最好的选择可能是从Numerical Recipes开始。
R是免费的,可以做你想做的任何事情,甚至更多,但它有一个很大的学习曲线。
如果您可以访问Mathematica,则可以使用fit函数进行最小二乘拟合。我想Matlab和它的开源对应物Octave也有类似的功能。
发布于 2008-12-19 21:33:23
对于(x,f(x))情形:
import numpy
x = numpy.arange(10)
y = x**2
coeffs = numpy.polyfit(x, y, deg=2)
poly = numpy.poly1d(coeffs)
print poly
yp = numpy.polyval(poly, x)
print (yp-y)
发布于 2008-12-20 09:52:56
请记住,高次多项式总是能更好地拟合数据。然而,高次多项式通常会导致非常不可能的函数(参见Occam's Razor) (过拟合)。你想在简单性(多项式的次数)和拟合(例如最小二乘误差)之间找到一个平衡点。在数量上,有对此的测试,Akaike Information Criterion或Bayesian Information Criterion。这些测试给出了优先选择哪种模型的分数。
https://stackoverflow.com/questions/382186
复制相似问题