Tôi đang cố gắng tính toán hệ số Cholesky của ma trận trong C++ (đối với ma trận P tìm L sao cho LL^T = P). Mục tiêu của tôi là KHÔNG giải quyết một hệ tuyến tính P * x = b, vì các phân tách ma trận như vậy thường được sử dụng, nhưng để thực sự thu được ma trận L. (Tôi đang cố gắng tính toán "các điểm sigma" như được thực hiện trong biến đổi không tập trung .)Tính phân tách Cholesky bằng cách sử dụng Eigen
thư viện Eigen cho là tính toán phân tách Cholesky, nhưng tôi không thể tìm ra cách để có được nó để cung cấp cho tôi những giá trị trong ma trận L. Khi tôi cố gắng các dòng mã sau đây
Eigen::MatrixXd P(3,3);
P << 6, 0, 0, 0, 4, 0, 0, 0, 7;
std::cout << P.llt().matrixL().col(0) << std::endl;
tôi gặp lỗi trình biên dịch
error: ‘Eigen::internal::LLT_Traits<Eigen::Matrix<double, -0x00000000000000001, -0x00000000000000001>, 1>::MatrixL’ has no member named ‘col’
Các documentation nói rằng LLT.matrixL() trả về loại Traits :: MatrixL. Đó là gì và làm thế nào để tôi nhận được các giá trị của L?