使用特征来计算Cholesky分解

Calculate Cholesky Decomposition using Eigen

本文关键字:Cholesky 分解 计算 特征      更新时间:2023-10-16

我正在尝试计算c 中矩阵的cholesky因子(对于给定的矩阵p找到l,使得ll^t = p)。我的目标不是解决线性系统p*x = b,因为这种矩阵分解通常用于使用,而是实际获取矩阵L。。)

图书馆众议员据说可以计算cholesky的分解,但是我不知道如何使它在矩阵L中给我值。

Eigen::MatrixXd P(3,3);
P << 6, 0, 0, 0, 4, 0, 0, 0, 7;
std::cout << P.llt().matrixL().col(0) << std::endl;

我发现编译器错误

error: ‘Eigen::internal::LLT_Traits<Eigen::Matrix<double, -0x00000000000000001, -0x00000000000000001>, 1>::MatrixL’ has no member named ‘col’

文档说llt.matrixl()返回类型特征:: matrixl。那是什么,如何获得L的值?

您可以查找LLT.H标头文件中的特征。就像文档所说的那样,这是一个三角形景观。三角形视图没有col成员,因此这就是为什么您会出现错误的原因。将三角形视图复制到像这样致密的矩阵中:

Eigen::MatrixXd P(3,3);
P << 6, 0, 0, 0, 4, 0, 0, 0, 7;
Eigen::MatrixXd L( P.llt().matrixL() );
std::cout << L.col(0) << std::endl;

将为您带来想要的东西。