在以下代码中,为什么拟合函数给出较大的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值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58154460/