問題

在以下程式碼中,為什麼擬合函式給出大量的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')
 

適合看起來更少:

enter image description here

  相同標籤的其他問題

pythonmatplotlibscipycurve-fittingleast-squares