|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math3.linear.SingularValueDecomposition
public class 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).
This class is similar to the class with similar name from the JAMA library, with the following changes:
norm2
method which has been renamed as getNorm
,cond
method which has been renamed as getConditionNumber
,rank
method which has been renamed as getRank
,getUT
method has been added,getVT
method has been added,getSolver
method has been added,getCovariance
method has been added.
Nested Class Summary | |
---|---|
private static class |
SingularValueDecomposition.Solver
Specialized solver. |
Field Summary | |
---|---|
private RealMatrix |
cachedS
Cached value of S (diagonal) matrix. |
private RealMatrix |
cachedU
Cached value of U matrix. |
private RealMatrix |
cachedUt
Cached value of transposed U matrix. |
private RealMatrix |
cachedV
Cached value of V matrix. |
private RealMatrix |
cachedVt
Cached value of transposed V matrix. |
private static double |
EPS
Relative threshold for small singular values. |
private int |
m
max(row dimension, column dimension). |
private int |
n
min(row dimension, column dimension). |
private double[] |
singularValues
Computed singular values. |
private static double |
TINY
Absolute threshold for small singular values. |
private double |
tol
Tolerance value for small singular values, calculated once we have populated "singularValues". |
private boolean |
transposed
Indicator for transposed matrix. |
Constructor Summary | |
---|---|
SingularValueDecomposition(RealMatrix matrix)
Calculates the compact Singular Value Decomposition of the given matrix. |
Method Summary | |
---|---|
double |
getConditionNumber()
Return the condition number of the matrix. |
RealMatrix |
getCovariance(double minSingularValue)
Returns the n × n covariance matrix. |
double |
getInverseConditionNumber()
Computes the inverse of the condition number. |
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final double EPS
private static final double TINY
private final double[] singularValues
private final int m
private final int n
private final boolean transposed
private final RealMatrix cachedU
private RealMatrix cachedUt
private RealMatrix cachedS
private final RealMatrix cachedV
private RealMatrix cachedVt
private final double tol
Constructor Detail |
---|
public SingularValueDecomposition(RealMatrix matrix)
matrix
- Matrix to decompose.Method Detail |
---|
public RealMatrix getU()
U is an orthogonal matrix, i.e. its transpose is also its inverse.
getUT()
public RealMatrix getUT()
U is an orthogonal matrix, i.e. its transpose is also its inverse.
getU()
public RealMatrix getS()
Σ is a diagonal matrix. The singular values are provided in non-increasing order, for compatibility with Jama.
public double[] getSingularValues()
The singular values are provided in non-increasing order, for compatibility with Jama.
public RealMatrix getV()
V is an orthogonal matrix, i.e. its transpose is also its inverse.
getVT()
public RealMatrix getVT()
V is an orthogonal matrix, i.e. its transpose is also its inverse.
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.
minSingularValue
- value below which singular values are ignored
(a 0 or negative value implies all singular value will be used)
java.lang.IllegalArgumentException
- if minSingularValue is larger than
the largest singular value, meaning all singular values are ignoredpublic double getNorm()
The L2 norm is max(|A × u|2 / |u|2), where |.|2 denotes the vectorial 2-norm (i.e. the traditional euclidian norm).
public double getConditionNumber()
public double getInverseConditionNumber()
condition
number
will become undefined.
public int getRank()
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.
public DecompositionSolver getSolver()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |