scipy.optimize的解的雅可比矩阵不等于scipy.optimize.OptimizeResult的fjac

2024-04-29 08:51:31 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用带有参数jac = Truescipy.optimize.root()查找函数的根时,OptimizeResult.fjac返回与解的雅可比矩阵不正确的雅可比矩阵值

比如说,

# objective function
def fun(x):
    return [x[0]  + 0.5 * (x[0] - x[1])**3 - 1.0, 0.5 * (x[1] - x[0])**3 + x[1]]

# function returns Jacobain at x
def jac(x):
    return np.array([[1 + 1.5 * (x[0] - x[1])**2, -1.5 * (x[0] - x[1])**2],
                [-1.5 * (x[1] - x[0])**2,
                1 + 1.5 * (x[1] - x[0])**2]])
from scipy import optimize
sol = optimize.root(fun, [0, 0], jac=jac)

解收敛后,sol.fjacjac(sol.x)不同?我无法理解从OptimizeResultfjac表示什么

非常感谢您的任何见解和更正:)


Tags: 函数true参数returndeffunction矩阵root
1条回答
网友
1楼 · 发布于 2024-04-29 08:51:31

我使用调试器进行了检查,在后台,scipy.optimize.root使用的默认算法是_minpack.hybrj函数。如果查看fsolve(也使用hybrj)的文档,它指定:

fjac the orthogonal matrix, q, produced by the QR factorization of the final approximate Jacobian matrix, stored column wise

因此,scipy的文档似乎不完整

资料来源:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.fsolve.html

相关问题 更多 >