Class RectangularCholeskyDecomposition
- java.lang.Object
-
- org.hipparchus.linear.RectangularCholeskyDecomposition
-
public class RectangularCholeskyDecomposition extends Object
Calculates the rectangular Cholesky decomposition of a matrix.The rectangular Cholesky decomposition of a real symmetric positive semidefinite matrix A consists of a rectangular matrix B with the same number of rows such that: A is almost equal to BBT, depending on a user-defined tolerance. In a sense, this is the square root of A.
The difference with respect to the regular
CholeskyDecomposition
is that rows/columns may be permuted (hence the rectangular shape instead of the traditional triangular shape) and there is a threshold to ignore small diagonal elements. This is used for example to generatecorrelated random n-dimensions vectors
in a p-dimension subspace (p < n). In other words, it allows generating random vectors from a covariance matrix that is only positive semidefinite, and not positive definite.Rectangular Cholesky decomposition is not suited for solving linear systems, so it does not provide any
decomposition solver
.
-
-
Constructor Summary
Constructors Constructor Description RectangularCholeskyDecomposition(RealMatrix matrix)
Decompose a symmetric positive semidefinite matrix.RectangularCholeskyDecomposition(RealMatrix matrix, double small)
Decompose a symmetric positive semidefinite matrix.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getRank()
Get the rank of the symmetric positive semidefinite matrix.RealMatrix
getRootMatrix()
Get the root of the covariance matrix.
-
-
-
Constructor Detail
-
RectangularCholeskyDecomposition
public RectangularCholeskyDecomposition(RealMatrix matrix) throws MathIllegalArgumentException
Decompose a symmetric positive semidefinite matrix.Note: this constructor follows the linpack method to detect dependent columns by proceeding with the Cholesky algorithm until a nonpositive diagonal element is encountered.
- Parameters:
matrix
- Symmetric positive semidefinite matrix.- Throws:
MathIllegalArgumentException
- if the matrix is not positive semidefinite.- See Also:
- Analysis of the Cholesky Decomposition of a Semi-definite Matrix
-
RectangularCholeskyDecomposition
public RectangularCholeskyDecomposition(RealMatrix matrix, double small) throws MathIllegalArgumentException
Decompose a symmetric positive semidefinite matrix.- Parameters:
matrix
- Symmetric positive semidefinite matrix.small
- Diagonal elements threshold under which columns are considered to be dependent on previous ones and are discarded.- Throws:
MathIllegalArgumentException
- if the matrix is not positive semidefinite.
-
-
Method Detail
-
getRootMatrix
public RealMatrix getRootMatrix()
Get the root of the covariance matrix. The root is the rectangular matrixB
such that the covariance matrix is equal toB.BT
- Returns:
- root of the square matrix
- See Also:
getRank()
-
getRank
public int getRank()
Get the rank of the symmetric positive semidefinite matrix. The r is the number of independent rows in the symmetric positive semidefinite matrix, it is also the number of columns of the rectangular matrix of the decomposition.- Returns:
- r of the square matrix.
- See Also:
getRootMatrix()
-
-