c – 使用特征计算Cholesky分解

前端之家收集整理的这篇文章主要介绍了c – 使用特征计算Cholesky分解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图计算C中矩阵的Cholesky因子(对于给定的矩阵P find L,使得LL ^ T = P).我的目标不是求解线性系统P * x = b,因为这样的矩阵分解经常用于但实际获得矩阵L.(我正在计算“sigma点”,就像在无密码变换.)

图书馆Eigen据称计算Cholesky分解,但是我无法弄清楚如何让它给出矩阵L中的值.当我尝试以下代码行时

Eigen::MatrixXd P(3,3);
P << 6,4,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’

documentation表示LLT.matrixL()返回类型为Traits :: MatrixL.这是什么,如何获得L的价值?

解决方法

您可以查看LLT.h头文件中的特征.它的 TriangularView像文档说的.三角形视图没有col成员,这就是为什么你得到错误.将三角形视图复制成如下所示的密集矩阵:
Eigen::MatrixXd P(3,7;
Eigen::MatrixXd L( P.llt().matrixL() );
std::cout << L.col(0) << std::endl;

会得到你想要的东西

猜你在找的C&C++相关文章