使用特征库

时间:2016-06-05 16:03:36

标签: eigen

我希望能够使用Eigen C ++库计算雅可比矩阵,但我找不到任何关于如何执行此操作的文档。

以前,我使用Python中的numdifftools包实现了这一点。功能是:

numdifftools.Jacobian(ForwardsFunction)([input 1, input 2, input 3, ....])

这里,ForwardsFunction是用户定义的函数,它在给定输入状态([input 1, input 2, input 3, ...])的情况下计算输出状态。 numdifftools.Jacobian()方法然后自动计算这些输入值的雅可比行列式,可以使用一些自动微分来推测。

Eigen库中是否有等效函数?

1 个答案:

答案 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