diff --git a/doc/SparseLinearSystems.dox b/doc/SparseLinearSystems.dox index b7f5c600b..ba6a12035 100644 --- a/doc/SparseLinearSystems.dox +++ b/doc/SparseLinearSystems.dox @@ -6,34 +6,61 @@ In Eigen, there are several methods available to solve linear systems when the c \section TutorialSparseSolverList List of sparse solvers -%Eigen currently provides a limited set of built-in solvers, as well as wrappers to external solver libraries. -They are summarized in the following table: +%Eigen currently provides a wide set of built-in solvers, as well as wrappers to external solver libraries. +They are summarized in the following tables: + +\subsection TutorialSparseSolverList_Direct Built-in direct solvers + +
Class | Solver kind | Matrix kind | Features related to performance | +License | Notes |
---|---|---|---|---|---|
SimplicialLLT \n #include | Direct LLt factorization | SPD | Fill-in reducing | +LGPL | +SimplicialLDLT is often preferable |
SimplicialLDLT \n #include | Direct LDLt factorization | SPD | Fill-in reducing | +LGPL | +Recommended for very sparse and not too large problems (e.g., 2D Poisson eq.) |
SparseLU \n #include | LU factorization | +Square | Fill-in reducing, Leverage fast dense algebra | +MPL2 | +optimized for small and large problems with irregular patterns |
SparseQR \n #include | QR factorization | +Any, rectangular | Fill-in reducing | +MPL2 | +recommended for least-square problems, has a basic rank-revealing feature |
Class | Solver kind | Matrix kind | Supported preconditioners, [default] | +License | Notes |
---|---|---|---|---|---|
ConjugateGradient \n #include | Classic iterative CG | SPD | +IdentityPreconditioner, [DiagonalPreconditioner], IncompleteCholesky | +MPL2 | +Recommended for large symmetric problems (e.g., 3D Poisson eq.) |
LeastSquaresConjugateGradient \n #include | CG for rectangular least-square problem | Rectangular | +IdentityPreconditioner, [LeastSquareDiagonalPreconditioner] | +MPL2 | +Solve for min |A'Ax-b|^2 without forming A'A |
BiCGSTAB \n #include | Iterative stabilized bi-conjugate gradient | Square | +IdentityPreconditioner, [DiagonalPreconditioner], IncompleteLUT | +MPL2 | +To speedup the convergence, try it with the \ref IncompleteLUT preconditioner. |
Class | Module | Solver kind | Matrix kind | Features related to performance | Dependencies,License | Notes |
---|---|---|---|---|---|---|
SimplicialLLT | \link SparseCholesky_Module SparseCholesky \endlink | Direct LLt factorization | SPD | Fill-in reducing | -built-in, LGPL | -SimplicialLDLT is often preferable |
SimplicialLDLT | \link SparseCholesky_Module SparseCholesky \endlink | Direct LDLt factorization | SPD | Fill-in reducing | -built-in, LGPL | -Recommended for very sparse and not too large problems (e.g., 2D Poisson eq.) |
ConjugateGradient | \link IterativeLinearSolvers_Module IterativeLinearSolvers \endlink | Classic iterative CG | SPD | Preconditionning | -built-in, MPL2 | -Recommended for large symmetric problems (e.g., 3D Poisson eq.) |
LeastSquaresConjugateGradient | \link IterativeLinearSolvers_Module IterativeLinearSolvers \endlink | CG for rectangular least-square problem | Rectangular | Preconditionning | -built-in, MPL2 | -Solve for min |A'Ax-b|^2 without forming A'A |
BiCGSTAB | \link IterativeLinearSolvers_Module IterativeLinearSolvers \endlink | Iterative stabilized bi-conjugate gradient | Square | Preconditionning | -built-in, MPL2 | -To speedup the convergence, try it with the \ref IncompleteLUT preconditioner. |
SparseLU | \link SparseLU_Module SparseLU \endlink | LU factorization | -Square | Fill-in reducing, Leverage fast dense algebra | -built-in, MPL2 | optimized for small and large problems with irregular patterns |
SparseQR | \link SparseQR_Module SparseQR \endlink | QR factorization | -Any, rectangular | Fill-in reducing | -built-in, MPL2 | recommended for least-square problems, has a basic rank-revealing feature |
Wrappers to external solvers | ||||||
PastixLLT \n PastixLDLT \n PastixLU | \link PaStiXSupport_Module PaStiXSupport \endlink | Direct LLt, LDLt, LU factorizations | SPD \n SPD \n Square | Fill-in reducing, Leverage fast dense algebra, Multithreading | Requires the PaStiX package, \b CeCILL-C | optimized for tough problems and symmetric patterns |