我知道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溢出页面,这意味着目标函数没有返回标量,而必须返回标量。
谁能告诉我我在哪里出了错?