首页 > 解决方案 > 使用 optimization.curve_fit 的曲线拟合在各处跳跃

问题描述

我有两个计算值数组,分别命名为xvalsyvals。我知道这些数据点应该存在的函数形式,所以我知道我应该得到的结果。我应该得到一条 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 值并绘制它,但这条线从我的图中消失了。我是否缺少一些东西来让它表现得更好?

奇怪的搭配

标签: pythonmatplotlibscipy

解决方案


推荐阅读