Собственное решение симметричной положительно определенной системы с использованием LLT

#c #math #linear-algebra #eigen

Вопрос:

Я хочу решить симметричную положительно определенную матрицу с помощью решателя LLT, для этого я написал это (для проверки):

 Eigen::SparseMatrix<float> bijection(vert_count, vert_count);
Eigen::LLT<Eigen::SparseMatrix<Scalar>> llt_mat(bijection);
 

Это не удается скомпилировать с ошибкой:

 error: ‘Eigen::SparseMatrixBase<Eigen::Block<Eigen::SparseMatrix<float, 0, int>, -1, 1, true> >::FixedSegmentReturnType<-1>::Type’ {aka ‘class Eigen::VectorBlock<Eigen::Block<Eigen::SparseMatrix<float, 0, int>, -1, 1, true>, -1>’} has no member named ‘lpNorm’
  448 |       abs_col_sum = m_matrix.col(col).tail(size - col).template lpNorm<1>()   m_matrix.row(col).head(col).template lpNorm<1>();
 

Я не совсем уверен, как мне следует решать систему с помощью встроенного решателя LLT.

Комментарии:

1. Вам нужно использовать один из разреженных решателей: eigen.tuxfamily.org/dox/group__TopicSparseSystems.html

2. это работает, спасибо