- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello, I am a C++ programmer currently engaged in research on efficient simulation algorithms. In my research, I frequently use the following code snippet:
----------------------------------------
Eigen::SparseMatrix<double> A;
// Initialize A ...
Eigen::PardisoLLT<Eigen::SparseMatrix<double>> solver;
solver.compute(A);
-----------------------------------------
Then, I need to access the lower triangular matrix L from the Cholesky decomposition of A in order to perform further calculations. Therefore, I naturally wrote the following code for the next step:
-----------------------------------------
Eigen::SpaseMatrix<double> L = solver.getMatrixL();
----------------------------------------
Unfortunately, I found that the Eigen::PardisoLLT class does not provide an API for this. Therefore, I would like to ask how I can obtain the lower triangular matrix L from the Cholesky decomposition performed using Eigen::PardisoLLT<Eigen::SparseMatrix<double>>. (Note that, in pursuit of high computational efficiency, I chose to use the Eigen::PardisoLLT solver. I noticed that with less efficient solvers like Eigen::LLT, it is possible to directly obtain the lower triangular matrix L. However, such less efficient solvers are not suitable for my research. Therefore, I must use high-efficiency solvers like Eigen::PardisoLLT.)
- Tags:
- Eigen
- PardisoLLT
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello @ShowBeOne,
The Eigen::PardisoLLT solver is indeed designed for efficiency with sparse matrices and utilizes the Pardiso library under the hood. While it provides methods to solve systems and perform factorizations, I'm not sure if it exposes the triangular factors directly through its API. You could try Eigen::SimplicialLLT for L matrix extraction but it sounds like that's not what you'd like to do. I will ask our developers for comments on your request.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much for the detailed explanation of PardisoLLT! I have indeed tried using Eigen::SimplicialLLT to extract the L matrix, but as I mentioned in my original question, the decomposition efficiency of Eigen::SimplicialLLT is far lower than that of Eigen::PardisoLLT, making it unsuitable for my research. Therefore, I am eagerly looking forward to the development team's evaluation and feedback regarding my needs.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page