如何编写scipy.optimize.minimize()&#39的参数

时间:2014-12-29 02:02:48

标签: python numpy scipy

我使用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的参数。有人可以向我解释我怎么能这样做吗?

1 个答案:

答案 0 :(得分: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]的形式。