我有一条光谱线的数据,它产生一个嘈杂的U形曲线。 我想拟合曲线并找到最小点的x,y值。 然后我使用polyfit将多项式拟合到它。 然后我发现拟合曲线上的最小点。 注意:原始曲线不对称(左侧比右侧略微陡峭。) 因此min(原始)稍微离开min(fitting_curve) 如何找到此点的X和Y错误? 以下是我的代码的骨头:
import pylab , numpy
x = [... linear list of floats ...]
y = [... list of floats ...] # Produces a noisy U shaped curve .
fit = numpy.polyfit(x,y,3)
fit2 = numpy.polyval(fit,x) # Fit a third order polynomial .
miny = # min y value on fitted curve .
minx = # corresponding x value , not the actually min(x) .
pylab.plot(x,y,'k-')
pylab.plot(x,fitt,'r-')
pylab.plot(minx,miny,'ro')
pylab.show()
既然我有原始的[x,y],拟合曲线[x,fitt2]和拟合曲线上的最小点[minx,miny],我如何找到这个单点的误差范围? / p>
谢谢。
答案 0 :(得分:0)
对于numpy 1.7,polyfit
有选项cov=True
。您获得协方差矩阵作为附加输出。由此,使用高斯误差传播,您可以得到最小的误差。但它是什么样的频谱?通常有适合的模型形状,因此不需要多项式拟合。
您可能还想查看scipy.optimize.curve_fit
PS:是什么让你认为真正的价值是你的拟合值。如果您的拟合函数是对称的,则应用于非对称峰值,这将是真实的。然而,三阶多项式应该能够解决不对称问题。