Class RectangularCholeskyDecomposition
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 generate correlated
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
ConstructorDescriptionDecompose a symmetric positive semidefinite matrix.RectangularCholeskyDecomposition
(RealMatrix matrix, double small) Decompose a symmetric positive semidefinite matrix. -
Method Summary
Modifier and TypeMethodDescriptionint
getRank()
Get the rank of the symmetric positive semidefinite matrix.Get the root of the covariance matrix.
-
Constructor Details
-
RectangularCholeskyDecomposition
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:
-
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 Details
-
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
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:
-