public class SingularValueDecompositionImpl extends java.lang.Object implements SingularValueDecomposition
The Singular Value Decomposition of matrix A is a set of three matrices: U, Σ and V such that A = U × Σ × VT. Let A be a m × n matrix, then U is a m × p orthogonal matrix, Σ is a p × p diagonal matrix with positive or null elements, V is a p × n orthogonal matrix (hence VT is also orthogonal) where p=min(m,n).
Constructor and Description |
---|
SingularValueDecompositionImpl(RealMatrix matrix)
Calculates the compact Singular Value Decomposition of the given matrix.
|
Modifier and Type | Method and Description |
---|---|
double |
getConditionNumber()
Return the condition number of the matrix.
|
RealMatrix |
getCovariance(double minSingularValue)
Returns the n × n covariance matrix.
|
double |
getNorm()
Returns the L2 norm of the matrix.
|
int |
getRank()
Return the effective numerical matrix rank.
|
RealMatrix |
getS()
Returns the diagonal matrix Σ of the decomposition.
|
double[] |
getSingularValues()
Returns the diagonal elements of the matrix Σ of the decomposition.
|
DecompositionSolver |
getSolver()
Get a solver for finding the A × X = B solution in least square sense.
|
RealMatrix |
getU()
Returns the matrix U of the decomposition.
|
RealMatrix |
getUT()
Returns the transpose of the matrix U of the decomposition.
|
RealMatrix |
getV()
Returns the matrix V of the decomposition.
|
RealMatrix |
getVT()
Returns the transpose of the matrix V of the decomposition.
|
public SingularValueDecompositionImpl(RealMatrix matrix) throws InvalidMatrixException
matrix
- The matrix to decompose.InvalidMatrixException
- (wrapping a
ConvergenceException
if
algorithm fails to convergepublic RealMatrix getU() throws InvalidMatrixException
U is an orthogonal matrix, i.e. its transpose is also its inverse.
getU
in interface SingularValueDecomposition
InvalidMatrixException
SingularValueDecomposition.getUT()
public RealMatrix getUT() throws InvalidMatrixException
U is an orthogonal matrix, i.e. its transpose is also its inverse.
getUT
in interface SingularValueDecomposition
InvalidMatrixException
SingularValueDecomposition.getU()
public RealMatrix getS() throws InvalidMatrixException
Σ is a diagonal matrix. The singular values are provided in non-increasing order, for compatibility with Jama.
getS
in interface SingularValueDecomposition
InvalidMatrixException
public double[] getSingularValues() throws InvalidMatrixException
The singular values are provided in non-increasing order, for compatibility with Jama.
getSingularValues
in interface SingularValueDecomposition
InvalidMatrixException
public RealMatrix getV() throws InvalidMatrixException
V is an orthogonal matrix, i.e. its transpose is also its inverse.
getV
in interface SingularValueDecomposition
InvalidMatrixException
SingularValueDecomposition.getVT()
public RealMatrix getVT() throws InvalidMatrixException
V is an orthogonal matrix, i.e. its transpose is also its inverse.
getVT
in interface SingularValueDecomposition
InvalidMatrixException
SingularValueDecomposition.getV()
public RealMatrix getCovariance(double minSingularValue)
The covariance matrix is V × J × VT where J is the diagonal matrix of the inverse of the squares of the singular values.
getCovariance
in interface SingularValueDecomposition
minSingularValue
- value below which singular values are ignored
(a 0 or negative value implies all singular value will be used)public double getNorm() throws InvalidMatrixException
The L2 norm is max(|A × u|2 / |u|2), where |.|2 denotes the vectorial 2-norm (i.e. the traditional euclidian norm).
getNorm
in interface SingularValueDecomposition
InvalidMatrixException
public double getConditionNumber() throws InvalidMatrixException
getConditionNumber
in interface SingularValueDecomposition
InvalidMatrixException
public int getRank() throws java.lang.IllegalStateException
The effective numerical rank is the number of non-negligible singular values. The threshold used to identify non-negligible terms is max(m,n) × ulp(s1) where ulp(s1) is the least significant bit of the largest singular value.
getRank
in interface SingularValueDecomposition
java.lang.IllegalStateException
public DecompositionSolver getSolver()
getSolver
in interface SingularValueDecomposition
"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"