Class LinearSolverFactory_FDRM
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic AdjustableLinearSolver_FDRMCreate a solver which can efficiently add and remove elements instead of recomputing everything from scratch.static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>chol(int numRows) Creates a linear solver using Cholesky decompositionstatic org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>general(int numRows, int numCols) Creates a general purpose solver.static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>leastSquares(int numRows, int numCols) Creates a good general purpose solver for over determined systems and returns the optimal least-squares solution.static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>leastSquaresQrPivot(boolean computeNorm2, boolean computeQ) Linear solver which uses QR pivot decomposition.static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>linear(int matrixSize) Creates a solver for linear systems.static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>lu(int numRows) Creates a linear solver using LU decompositionstatic org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>pseudoInverse(boolean useSVD) Returns a solver which uses the pseudo inverse.static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>qr(int numRows, int numCols) Creates a linear solver using QR decompositionstatic org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>qrp(boolean computeNorm2, boolean computeQ) Creates a linear solver using QRP decompositionstatic org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>symmPosDef(int matrixWidth) Creates a solver for symmetric positive definite matrices.
-
Constructor Details
-
LinearSolverFactory_FDRM
public LinearSolverFactory_FDRM()
-
-
Method Details
-
lu
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> lu(int numRows) Creates a linear solver using LU decomposition -
chol
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> chol(int numRows) Creates a linear solver using Cholesky decomposition -
qr
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> qr(int numRows, int numCols) Creates a linear solver using QR decomposition -
qrp
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> qrp(boolean computeNorm2, boolean computeQ) Creates a linear solver using QRP decomposition -
general
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> general(int numRows, int numCols) Creates a general purpose solver. Use this if you are not sure what you need.- Parameters:
numRows- The number of rows that the decomposition is optimized for.numCols- The number of columns that the decomposition is optimized for.
-
linear
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> linear(int matrixSize) Creates a solver for linear systems. The A matrix will have dimensions (m,m).- Returns:
- A new linear solver.
-
leastSquares
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> leastSquares(int numRows, int numCols) Creates a good general purpose solver for over determined systems and returns the optimal least-squares solution. The A matrix will have dimensions (m,n) where m ≥ n.- Parameters:
numRows- The number of rows that the decomposition is optimized for.numCols- The number of columns that the decomposition is optimized for.- Returns:
- A new least-squares solver for over determined systems.
-
symmPosDef
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> symmPosDef(int matrixWidth) Creates a solver for symmetric positive definite matrices.- Returns:
- A new solver for symmetric positive definite matrices.
-
leastSquaresQrPivot
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> leastSquaresQrPivot(boolean computeNorm2, boolean computeQ) Linear solver which uses QR pivot decomposition. These solvers can handle singular systems and should never fail. For singular systems, the solution might not be as accurate as a pseudo inverse that uses SVD.
For singular systems there are multiple correct solutions. The optimal 2-norm solution is the solution vector with the minimal 2-norm and is unique. If the optimal solution is not computed then the basic solution is returned. See
BaseLinearSolverQrp_FDRMfor details. There is only a runtime difference for small matrices, 2-norm solution is slower.Two different solvers are available. Compute Q will compute the Q matrix once then use it multiple times. If the solution for a single vector is being found then this should be set to false. If the pseudo inverse is being found or the solution matrix has more than one columns AND solve is being called numerous multiples times then this should be set to true.
- Parameters:
computeNorm2- true to compute the minimum 2-norm solution for singular systems. Try true.computeQ- Should it precompute Q or use house holder. Try false;- Returns:
- Pseudo inverse type solver using QR with column pivots.
-
pseudoInverse
public static org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj> pseudoInverse(boolean useSVD) Returns a solver which uses the pseudo inverse. Useful when a matrix needs to be inverted which is singular. Two variants of pseudo inverse are provided. SVD will tend to be the most robust but the slowest and QR decomposition with column pivots will be faster, but less robust.
See
leastSquaresQrPivot(boolean, boolean)for additional options specific to QR decomposition based pseudo inverse. These options allow for better runtime performance in different situations.- Parameters:
useSVD- If true SVD will be used, otherwise QR with column pivot will be used.- Returns:
- Solver for singular matrices.
-
adjustable
Create a solver which can efficiently add and remove elements instead of recomputing everything from scratch.
-