我使用scipy.optimize.minimize()来获取最小值,它是x,y
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 :(得分:0)
看看the documentation。基本上,如果您的函数取决于两个参数,则需要将它们作为x[0]
和x[1]
而不是x
和y
传递。所以最后你的函数将取决于一个向量参数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]
的形式。