我希望能够使用Eigen
C ++库计算雅可比矩阵,但我找不到任何关于如何执行此操作的文档。
以前,我使用Python中的numdifftools
包实现了这一点。功能是:
numdifftools.Jacobian(ForwardsFunction)([input 1, input 2, input 3, ....])
这里,ForwardsFunction
是用户定义的函数,它在给定输入状态([input 1, input 2, input 3, ...]
)的情况下计算输出状态。 numdifftools.Jacobian()
方法然后自动计算这些输入值的雅可比行列式,可以使用一些自动微分来推测。
Eigen
库中是否有等效函数?
答案 0 :(得分:0)
在特征库中有一些工具可以执行数值微分。 看看:
https://eigen.tuxfamily.org/dox/unsupported/group__NumericalDiff__Module.html https://eigen.tuxfamily.org/dox/unsupported/classEigen_1_1AutoDiffScalar.html
您可能会注意到,这些模块“不受支持”(不是官方Eigen库的一部分)。推理如下:Eigen是线性代数的库,因此使用稀疏和密集矩阵进行操作,并且数值微分在其范围的边缘稍微有点。 - 因此将它们包含在库中的优先级较低。据我所知,这些模块以非常具体的方式用于求解器。我没有在我的项目中使用那些Eigen :: Numerical Differentiation类的经验,尽管你可以尝试一下。
https://eigen.tuxfamily.org/dox/unsupported/classEigen_1_1NumericalDiff.html