public class SVD extends Object
double
.
SVD
is based on the LINPACK routine SSVDC
; see
Dongarra et al. (1979).
Let n be the number of rows in A
and let p be the number of columns in
A. For any
n x p matrix
A, there exists an n x n
orthogonal matrix U and a p x p
orthogonal matrix V such that
where , and . The scalars are called the singular values of A. The columns of U are called the left singular vectors of A. The columns of V are called the right singular vectors of A.
The estimated rank of A is the number of
that is larger than a tolerance .
If is the parameter tol
in the
program, then
The MoorePenrose generalized inverse of the matrix is computed by partitioning the matrices U, V and as , and where the "1" matrices are k by k. The MoorePenrose generalized inverse is .
Modifier and Type  Class and Description 

static class 
SVD.DidNotConvergeException
The iteration did not converge

Constructor and Description 

SVD(double[][] a)
Construct the singular value decomposition of a rectangular matrix with default tolerance.

SVD(double[][] a,
double tol)
Construct the singular value decomposition of a rectangular matrix with a given tolerance.

Modifier and Type  Method and Description 

int 
getInfo()
Returns convergence information about S, U, and V.

int 
getRank()
Returns the rank of the matrix used to construct this instance.

double[] 
getS()
Returns the singular values.

double[][] 
getU()
Returns the left singular vectors.

double[][] 
getV()
Returns the right singular vectors.

double[][] 
inverse()
Compute the MoorePenrose generalized inverse of a real matrix.

public SVD(double[][] a) throws SVD.DidNotConvergeException
a
 a double
matrix for which the singular value decomposition
is to be computedIllegalArgumentException
 is thrown when the row lengths of
input matrix a are not equal (i.e. the matrix edges are "jagged")SVD.DidNotConvergeException
public SVD(double[][] a, double tol) throws SVD.DidNotConvergeException
tol
is positive, then a singular value is
considered negligible if the singular value is less than or equal to
tol
. If tol
is negative, then a singular value is considered negligible
if the singular value is less than or equal to the absolute value of the product of
tol
and the infinity norm of the input matrix. In the latter case, the
absolute value of tol
generally contains an estimate of the level of
the relative error in the data.a
 a double
matrix for which the singular value decomposition
is to be computedtol
 a double
scalar containing the tolerance used
to determine when a singular value is negligibleIllegalArgumentException
 is thrown when the row lengths of
input matrix a are not equal (for example, the matrix edges
are "jagged")SVD.DidNotConvergeException
 is thrown when the rank cannot be determined
because convergence was not obtained for all singular valuespublic int getInfo()
public int getRank()
int
scalar containing the rank of the matrix used to
construct this instance. The estimated rank of the input matrix is the number
of singular values which are larger than a tolerance.public double[] getS()
double
array containing the singular values of the matrixpublic double[][] getU()
double
matrix containing the left singular vectorspublic double[][] getV()
double
matrix containing the right singular vectorspublic double[][] inverse()
double
matrix containing the generalized inverse of the
matrix used to construct this instanceCopyright © 19702015 Rogue Wave Software
Built October 13 2015.