Class SingularValueDecompositionImpl
- java.lang.Object
-
- org.apache.commons.math.linear.SingularValueDecompositionImpl
-
- All Implemented Interfaces:
SingularValueDecomposition
public class SingularValueDecompositionImpl extends java.lang.Object implements SingularValueDecomposition
Calculates the compact Singular Value Decomposition of a matrix.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).
- Since:
- 2.0
- Version:
- $Revision: 990655 $ $Date: 2010-08-29 23:49:40 +0200 (dim. 29 août 2010) $
-
-
Constructor Summary
Constructors Constructor Description SingularValueDecompositionImpl(RealMatrix matrix)
Calculates the compact Singular Value Decomposition of the given matrix.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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.
-
-
-
Constructor Detail
-
SingularValueDecompositionImpl
public SingularValueDecompositionImpl(RealMatrix matrix) throws InvalidMatrixException
Calculates the compact Singular Value Decomposition of the given matrix.- Parameters:
matrix
- The matrix to decompose.- Throws:
InvalidMatrixException
- (wrapping aConvergenceException
if algorithm fails to converge
-
-
Method Detail
-
getU
public RealMatrix getU() throws InvalidMatrixException
Returns the matrix U of the decomposition.U is an orthogonal matrix, i.e. its transpose is also its inverse.
- Specified by:
getU
in interfaceSingularValueDecomposition
- Returns:
- the U matrix
- Throws:
InvalidMatrixException
- See Also:
SingularValueDecomposition.getUT()
-
getUT
public RealMatrix getUT() throws InvalidMatrixException
Returns the transpose of the matrix U of the decomposition.U is an orthogonal matrix, i.e. its transpose is also its inverse.
- Specified by:
getUT
in interfaceSingularValueDecomposition
- Returns:
- the U matrix (or null if decomposed matrix is singular)
- Throws:
InvalidMatrixException
- See Also:
SingularValueDecomposition.getU()
-
getS
public RealMatrix getS() throws InvalidMatrixException
Returns the diagonal matrix Σ of the decomposition.Σ is a diagonal matrix. The singular values are provided in non-increasing order, for compatibility with Jama.
- Specified by:
getS
in interfaceSingularValueDecomposition
- Returns:
- the Σ matrix
- Throws:
InvalidMatrixException
-
getSingularValues
public double[] getSingularValues() throws InvalidMatrixException
Returns the diagonal elements of the matrix Σ of the decomposition.The singular values are provided in non-increasing order, for compatibility with Jama.
- Specified by:
getSingularValues
in interfaceSingularValueDecomposition
- Returns:
- the diagonal elements of the Σ matrix
- Throws:
InvalidMatrixException
-
getV
public RealMatrix getV() throws InvalidMatrixException
Returns the matrix V of the decomposition.V is an orthogonal matrix, i.e. its transpose is also its inverse.
- Specified by:
getV
in interfaceSingularValueDecomposition
- Returns:
- the V matrix (or null if decomposed matrix is singular)
- Throws:
InvalidMatrixException
- See Also:
SingularValueDecomposition.getVT()
-
getVT
public RealMatrix getVT() throws InvalidMatrixException
Returns the transpose of the matrix V of the decomposition.V is an orthogonal matrix, i.e. its transpose is also its inverse.
- Specified by:
getVT
in interfaceSingularValueDecomposition
- Returns:
- the V matrix (or null if decomposed matrix is singular)
- Throws:
InvalidMatrixException
- See Also:
SingularValueDecomposition.getV()
-
getCovariance
public RealMatrix getCovariance(double minSingularValue)
Returns the n × n covariance matrix.The covariance matrix is V × J × VT where J is the diagonal matrix of the inverse of the squares of the singular values.
- Specified by:
getCovariance
in interfaceSingularValueDecomposition
- Parameters:
minSingularValue
- value below which singular values are ignored (a 0 or negative value implies all singular value will be used)- Returns:
- covariance matrix
-
getNorm
public double getNorm() throws InvalidMatrixException
Returns the L2 norm of the matrix.The L2 norm is max(|A × u|2 / |u|2), where |.|2 denotes the vectorial 2-norm (i.e. the traditional euclidian norm).
- Specified by:
getNorm
in interfaceSingularValueDecomposition
- Returns:
- norm
- Throws:
InvalidMatrixException
-
getConditionNumber
public double getConditionNumber() throws InvalidMatrixException
Return the condition number of the matrix.- Specified by:
getConditionNumber
in interfaceSingularValueDecomposition
- Returns:
- condition number of the matrix
- Throws:
InvalidMatrixException
-
getRank
public int getRank() throws java.lang.IllegalStateException
Return the effective numerical matrix rank.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.
- Specified by:
getRank
in interfaceSingularValueDecomposition
- Returns:
- effective numerical matrix rank
- Throws:
java.lang.IllegalStateException
-
getSolver
public DecompositionSolver getSolver()
Get a solver for finding the A × X = B solution in least square sense.- Specified by:
getSolver
in interfaceSingularValueDecomposition
- Returns:
- a solver
-
-