计算Jacobian并传递给Scipy最小化

时间:2019-02-12 00:11:03

标签: python math scipy mathematical-optimization

我知道jacobian是一阶导数,但是我不知道如何为我的简单函数(我尝试过在线导数计算器)计算它并将其传递给scipy最小化函数。

在代码中,这是目标函数(猜测数组可以包含数千个变量):

def objective(current_guesses_array, first_guesses_array):
        return np.sum(np.divide(np.square(current_guesses_array - first_guesses_array), first_guesses_array))

我认为雅可比行列式就是这样,但是在这里肯定可能搞砸了:

dx = 2x / y-2

dy = 1-(x ^ 2 / y ^ 2)

在代码中:

def jacobian_for_minimize(self, x,a):
    dx = (2*x)/a - 2
    dy = 1 - (np.square(x) / np.square(a))
    return np.array([dx,dy])

minimize(objective,initial_guesses,args=initial_guesses,jac=jacobian_for_minimize,method='SLSQP')

调用最小化后,出现错误: _slsqp.error:无法将_slsqp.slsqp的第8个参数'g'转换为C / Fortran数组

根据另一个Stack溢出页面,这意味着目标函数没有返回标量,而必须返回标量。

谁能告诉我我在哪里出了错?

0 个答案:

没有答案