该错误是来自和的调用,
Jacobian而
Hessian不是来自的调用
minimize。替换为
Jacobian(fun),
Jacobian(lambdax: fun(x, a))并类似地
Hessian应该可以解决问题(因为现在要区分的函数只有一个向量参数)。
另一件事:
(a)是
a,如果您希望将其用作元组使用
(a,)。
import numpy as npfrom scipy.optimize import minimizefrom numdifftools import Jacobian, Hessiandef fun(x, a): return (x[0] - 1) **2 + (x[1] - a) **2def fun_der(x, a): return Jacobian(lambda x: fun(x, a))(x).ravel()def fun_hess(x, a): return Hessian(lambda x: fun(x, a))(x)x0 = np.array([2, 0]) # initial guessa = 2.5res = minimize(fun, x0, args=(a,), method='dogleg', jac=fun_der, hess=fun_hess)print(res)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)