我已經編寫了一個正在執行測量數據參數識別的程序。公式爲:Scipy curve_fit在測量數據擬合上失敗
f = k0 * x + c1 *(x-x1)^ e1 + c2 *(x-x2)^ e2。
(它呈現這樣,因爲我還沒有允許把這裏拍照)
我必須找到該公式的正確的參數和參數是K0,X,1,E1,C2,X2 ,e2。線性部分很容易找到。所以我得到K0和x1.My的第一個問題是:此代碼正確的公式
x = [0.4,0.5,0.513,1.02,1.5,2,2.25,2.75,3,3.3,3.51,3.75,4,4.3,4.5,4.7]
y = [65,115,135,150,170,300,400,600,700,800,1064,1401,1935,2616,3697,4693]
x_np = np.array(x)
y_np = np.array(y)
p0 =(0.1,10)
def advance(x,c2,e2):
k0 = 166.801522505
c1 =0.195545880867
x1 = 0.3
x2 = 4.7
print c1
return k0*x+c1*np.power((x-x1),e1)+c2*np.power((x-x2),e2)
standard_fitting = scipy.optimize.curve_fit(advance, x_np, y_np, p0)
第二個問題是,我的代碼是沒有做curve_fitting這個曲線。如果我在裝配期間打印變量,則Python插入器只打印nan
。
你能清理你的示例代碼嗎? 'advance'不返回任何內容,'x2'未定義。 –
謝謝。我忘了放在這裏'return'和'x2' –
你只是有太多的擬合參數,因此必須提供良好的參數估計。目前,您不提供任何優化算法,因此無法收斂。 –