在以下代码中,为什么拟合函数给出较大的pfit值,以及为什么它未正确拟合数据点。我的试身功能有问题吗?

L = np.array([12,24,36,48])
Ec_L =np.array([-2.21173697, -2.01880398, -1.96508108, -2.0691906 ])

def ff(L,a,v,Ec):
    return (a*L**(-1.0/v))+Ec

x_data = 1.0/L
y_data = Ec_L

plt.scatter(x_data, y_data, marker='.', color='orange')

pfit,pcov = optimize.curve_fit(ff,x_data,y_data)
print("pfit: ",pfit)  #pfit:  [ 563.99154975 4377.13071157 -566.48046716]
print(pcov)

plt.plot(x_data, ff(L,*pfit), marker='.', color='red')

最佳答案

您在测试中使用的是L,但在配件中使用的是1/L;我不知道你的意图,但是如果你使用

plt.plot(x_data, ff(1/L,*pfit), marker='.', color='red')


适合看起来更少:

python - 为什么scipy.optimize.curce拟合函数无法正确拟合数据点,为什么给出较大的pfit值?-LMLPHP

关于python - 为什么scipy.optimize.curce拟合函数无法正确拟合数据点,为什么给出较大的pfit值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58154460/

10-12 18:34