gpt4 book ai didi

python - 在 scipy.optimize.root 中计算 Jacobian 的默认选项

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:43 26 4
gpt4 key购买 nike

scipy.optimize.root 的文档中对于 method = lm,以下是 options 关键字的默认值。


options={'col_deriv': 0, 'diag': None, 'factor': 100, 'gtol': 0.0, 'eps': 0.0, 'func': None, 'maxiter': 0, 'xtol': 1.49012 e-08, 'ftol': 1.49012e-08}

关于 col_deriv 的描述,他们是这样说的


col_deriv : bool, 可选
非零以指定 Jacobian 函数计算列下的导数(更快,因为没有转置操作)

如果我理解它所说的声明,例如,如果我编写 col_deriv = Truejacobian 将按列计算,因此速度更快。

问题:如果它更快,为什么 col_deriv 的非零值不是默认值?。

我是不是漏掉了什么?

最佳答案

也许来自 scipy.optimize.leastsq 的文档可以提供帮助,因为它记录了 Dfun (Jacobian) 和 col_deriv。从 Dfun 我们得到:

Dfun : callable, optional

A function or method to compute the Jacobian of func with derivatives across the rows. If this is None, the Jacobian will be estimated.

col_deriv 我们得到:

col_deriv : bool, optional

non-zero to specify that the Jacobian function computes derivatives down the columns (faster, because there is no transpose operation).

我的解读如下:

  1. 默认情况下,scipy 期望计算雅可比矩阵的函数返回一个遵循“正常”定义的矩阵(参见,例如 https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant)。

  2. 但是,scipy 本身会调用其他函数,可能是用 Fortran 编写的 see, e.g., minpack ,它期望导数(关于坐标)被放置在列中。

因此,如果计算雅可比矩阵的函数可以返回一个矩阵,其导数沿列而不是行放置,那么 scipy 将不需要在将雅可比矩阵传递给 minpack 函数从而节省计算时间。

关于python - 在 scipy.optimize.root 中计算 Jacobian 的默认选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45135563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com