[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
I do am trying to get a copy of the lower triangular matrix
corresponding to a sparse Cholesky factorization. It seems to me that,
in the case of a 1 by 1 matrix, this should be a 1 by 1 matrix with
entry equal to the square root of the original matrix. But the following
program is printing 1 instead of 2 for its result. What am I doing wrong ?
# include <iostream>
# include <Eigen/Sparse>
int main(void)
{ typedef Eigen::SparseMatrix<double, Eigen::ColMajor>
sparse_matrix;
typedef Eigen::SimplicialLDLT<sparse_matrix, Eigen::Lower>
sparse_cholesky;
typedef sparse_matrix::InnerIterator column_itr;
//
int n = 1;
sparse_matrix H(n, n);
H.insert(0, 0) = 4.0;
//
sparse_cholesky C;
C.compute( H );
sparse_matrix L = C.matrixL();
//
for(int j = 0; j < L.outerSize(); j++)
{ for(column_itr itr(L, j); itr; ++itr)
{ std::cout << "L(" << itr.row() << "," << itr.col() << ") = ";
std::cout << itr.value() << "\n";
}
}
return 0;
}