Python 曲线拟合与优化。曲线拟合到处跳跃
我有两个计算值数组,分别名为Python 曲线拟合与优化。曲线拟合到处跳跃,python,matplotlib,scipy,Python,Matplotlib,Scipy,我有两个计算值数组,分别名为xvals和yvals。我知道这些数据点的函数形式,所以我知道应该得到的结果。我应该得到一条x^4曲线,但是当我让python计算并绘制最佳拟合时,这条线在所有数据点之间跳跃!以下是我迄今为止所做的尝试: def func(x, a, b, c, d, e): return a - b*x - c*x**2 - d*x**3 - e*x**4 fita, fitb = optimization.curve_fit(func, xvals, yvals) #
xvals
和yvals
。我知道这些数据点的函数形式,所以我知道应该得到的结果。我应该得到一条x^4曲线,但是当我让python计算并绘制最佳拟合时,这条线在所有数据点之间跳跃!以下是我迄今为止所做的尝试:
def func(x, a, b, c, d, e):
return a - b*x - c*x**2 - d*x**3 - e*x**4
fita, fitb = optimization.curve_fit(func, xvals, yvals)
#--stuff to initialize a matplotlib plot goes here blah blah blah--
plt.scatter(xvals, yvals, marker='o', c=cparam, cmap=plt.cm.get_cmap('viridis'), s=100, zorder=2)
plt.plot(xvals, func(xvals, *fita), 'r-')
曲线拟合返回a、b、c、d和e的正确系数。如您所见,绘制时,新拟合线似乎在所有数据点之间跳跃。我认为这与x值的顺序不符有关,但是如果我对它们进行排序,可能会破坏散点图的绘制。我试着制作一组新的独立的等距x值,并计算出一些相应的y值,然后进行绘图,但这条线从我的绘图中消失了。我是不是错过了一些东西让它表现得更好
对于线图,必须以递增顺序显示
xVAL
。您可以尝试xvals=np.sort(xvals)
。您还可以使用xs=np.linspace(xvals.min()-0.5,xvals.max()+0.5500)绘制平滑曲线
对于线图,必须以递增顺序显示xvals
。您可以尝试xvals=np.sort(xvals)
。您还可以使用xs=np.linspace(xvals.min()-0.5,xvals.max()+0.5500)绘制平滑曲线