Мне интересно, почему это не скомпилируется с использованием Eigen:
#include <Eigen/Dense>
using namespace Eigen;
int main() {
VectorXd Q = V.llt().matrixL().diagonal().array().pow(2);
}
Я хочу взять квадрат диагональных элементов нижнего разложения холецкого за один шаг, как указано выше, но не могу, потому что компилятор говорит:
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
Я должен назначить Холецкого другой матрице, а затем выполнить другие вычисления. Мне интересно, почему это необходимо, и как я могу обойти это, если это возможно.