Python曲线拟合

Python曲线拟合,python,curve-fitting,Python,Curve Fitting,我正在尝试使用python将曲线拟合到一组点。基本上,这些点是这样的。 蓝色曲线表示输入的数据(本例中为4点),绿色曲线表示使用np.polyfit和polyfit1d进行的曲线拟合。我本质上想要的是一个曲线拟合,它看起来非常类似于蓝线,但在点1和点2的梯度变化更平滑(这意味着我不需要线通过这些点) 最好的方法是什么?该线看起来像一条弧切线,是否仍有指定弧切线拟合的选项 我意识到这是一个有点垃圾的问题,但我想在不说明更多要点的情况下离开。任何帮助都将不胜感激。看来您可能需要在点之间插值,而不是

我正在尝试使用python将曲线拟合到一组点。基本上,这些点是这样的。

蓝色曲线表示输入的数据(本例中为4点),绿色曲线表示使用np.polyfit和polyfit1d进行的曲线拟合。我本质上想要的是一个曲线拟合,它看起来非常类似于蓝线,但在点1和点2的梯度变化更平滑(这意味着我不需要线通过这些点)

最好的方法是什么?该线看起来像一条弧切线,是否仍有指定弧切线拟合的选项


我意识到这是一个有点垃圾的问题,但我想在不说明更多要点的情况下离开。任何帮助都将不胜感激。

看来您可能需要在点之间插值,而不是拟合多项式参考:和

但是,在任何一种情况下,这里都有一段代码片段,可以让您开始:

import numpy as np
import scipy as sp
from scipy.interpolate import interp1d

x = numpy.array([0,5,10,15,20,30,40,50])
y = numpy.array([0,0,0,12,40,40,40,40])

coeffs = numpy.polyfit(x, y, deg=4)#you can change degree as you see fit
poly = numpy.poly1d(coeffs)
yp = numpy.polyval(poly, x)

interpLength = 10
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind='cubic')(new_x)


plt.plot(x, y, '.', x, yp, '-', new_x,new_y, '--')
plt.show()