2014-12-29 211 views
1

我使用scipy.optimize.minimize()來獲得的最低值,並將它的X,Y怎麼寫scipy.optimize.minimize()的參數

def fun(self): 
    cols=self.maintablewidget.columnCount()-1 
    for k in range(3,cols): 
     for i in range(1,k): 
      d=string.atof(self.maintablewidget.item(i-1,k-1).text()) 
      xi=string.atof(self.xytablewidget.item(i-1,0).text()) 
      yi=string.atof(self.xytablewidget.item(i-1,1).text()) 
      f=lambda x,y: np.sum((np.sqrt((x-xi)**2+(y-yi)**2)-d)**2) 

     res=optimize.minimize(f,0,0)#I do not know how to give the optimize.minimize's parameter 
     print(res['x'][0]) 
     print(res['x'],res['fun']) 

我不知道該怎麼給出optimize.minimize的參數。有人可以向我解釋我該如何做到這一點?

回答

0

看看the documentation。本質上,如果您的功能取決於兩個參數,則需要將它們傳遞爲x[0]x[1]而不是xy。所以,你到底功能將依賴於一個單一的向量參數x。例如:

f = lambda x: np.sum((np.sqrt((x[0]-xi)**2+(x[1]-yi)**2)-d)**2) 
res = optimize.minimize(f, (initial_x, initial_y)) 

最低將在res.x,將有一個載體[x, y]的形式。

+0

TypeError:minimize()至少需要2個參數(給出1)這裏是一個錯誤 – Hmily

+0

這是抱怨,因爲你只給了'f'。您還必須輸入初始值。 – elyase

+0

我這樣寫。 res = optimize.minimize(f,(0,0)),但仍然存在問題。 TypeError:()只需要2個參數(1給出) – Hmily