Jacobian和Hessian在`scipy.optimize.minimize`中输入

Jacobian和Hessian在`scipy.optimize.minimize`中输入,第1张

Jacobian和Hessian在`scipy.optimize.minimize`中输入

该错误是来自和的调用

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5674881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存