C++ 使用c+的下cholesky对角线的正方形元素+;图书馆特征

C++ 使用c+的下cholesky对角线的正方形元素+;图书馆特征,c++,eigen,C++,Eigen,我想知道为什么不能使用Eigen编译: #include <Eigen/Dense> using namespace Eigen; int main() { VectorXd Q = V.llt().matrixL().diagonal().array().pow(2); } #包括 使用名称空间特征; int main(){ 向量xd Q=V.llt().matrixL().diagonal().array().pow(2); } 我想像上面一样,在一个步骤中取下ch

我想知道为什么不能使用Eigen编译:

#include <Eigen/Dense>

using namespace Eigen;

int main() {

  VectorXd Q = V.llt().matrixL().diagonal().array().pow(2);
}
#包括
使用名称空间特征;
int main(){
向量xd Q=V.llt().matrixL().diagonal().array().pow(2);
}
我想像上面一样,在一个步骤中取下cholesky分解的对角线元素的平方,但我不能,因为编译器说:

error: no member named 'diagonal' in 'Eigen::TriangularView<const
      Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1>'
        MatrixXd Q = V.llt().matrixL().diagonal().array().pow(2);
                     ~~~~~~~~~~~~~~~~~ ^
1 error generated.
make[2]: *** [CMakeFiles/mvt.dir/src/rentalmain.cpp.o] Error 1
make[1]: *** [CMakeFiles/mvt.dir/all] Error 2
make: *** [all] Error 2
错误:“Eigen::TriangularView”中没有名为“对角线”的成员
MatrixXd Q=V.llt().matrixL().diagonal().array().pow(2);
~~~~~~~~~~~~~~~~~ ^
生成1个错误。
生成[2]:***[CMakeFiles/mvt.dir/src/rentalmain.cpp.o]错误1
生成[1]:***[CMakeFiles/mvt.dir/all]错误2
make:**[全部]错误2

我必须将Cholesky分配给另一个矩阵,然后执行其他计算。我想知道为什么这是必要的,如果可能的话,我该如何应对

TriangularView没有
diagonal()
成员(我不知道为什么)。您可以使用完整的
matrixLLT()
矩阵(返回对基础矩阵的引用),如下所示:
VectorXd Q=V.llt().matrixLLT().diagonal().array().square()。表达式
matrixL()
只返回与
matrixLLT()
返回的相同基础矩阵的
TriangularView