public interface DecompositionSolver
Decomposition algorithms decompose an A matrix has a product of several specific matrices from which they can solve A × X = B in least squares sense: they find X such that A × X  B is minimal.
Some solvers like LUDecomposition
can only find the solution for
square matrices and when the solution is an exact linear solution, i.e. when
A × X  B is exactly 0. Other solvers can also find solutions
with nonsquare matrix A and with nonnull minimal norm. If an exact linear
solution exists it is also the minimal norm solution.
Modifier and Type  Method and Description 

RealMatrix 
getInverse()
Get the pseudoinverse
of the decomposed matrix.

boolean 
isNonSingular()
Check if the decomposed matrix is nonsingular.

RealMatrix 
solve(RealMatrix b)
Solve the linear equation A × X = B for matrices A.

RealVector 
solve(RealVector b)
Solve the linear equation A × X = B for matrices A.

RealVector solve(RealVector b) throws SingularMatrixException
The A matrix is implicit, it is provided by the underlying decomposition algorithm.
b
 righthand side of the equation A × X = BDimensionMismatchException
 if the matrices dimensions do not match.SingularMatrixException
 if the decomposed matrix is singular.RealMatrix solve(RealMatrix b) throws SingularMatrixException
The A matrix is implicit, it is provided by the underlying decomposition algorithm.
b
 righthand side of the equation A × X = BDimensionMismatchException
 if the matrices dimensions do not match.SingularMatrixException
 if the decomposed matrix is singular.boolean isNonSingular()
RealMatrix getInverse() throws SingularMatrixException
This is equal to the inverse of the decomposed matrix, if such an inverse exists.
If no such inverse exists, then the result has properties that resemble that of an inverse.
In particular, in this case, if the decomposed matrix is A, then the system of equations \( A x = b \) may have no solutions, or many. If it has no solutions, then the pseudoinverse \( A^+ \) gives the "closest" solution \( z = A^+ b \), meaning \( \left \ A z  b \right \_2 \) is minimized. If there are many solutions, then \( z = A^+ b \) is the smallest solution, meaning \( \left \ z \right \_2 \) is minimized.
Note however that some decompositions cannot compute a pseudoinverse for all matrices.
For example, the LUDecomposition
is not defined for nonsquare matrices to begin
with. The QRDecomposition
can operate on nonsquare matrices, but will throw
SingularMatrixException
if the decomposed matrix is singular. Refer to the javadoc
of specific decomposition implementations for more details.
SingularMatrixException
 if the decomposed matrix is singular and the decomposition
can not compute a pseudoinverseCopyright © 2003–2021 The Apache Software Foundation. All rights reserved.