public class LDLTDecomposition
extends java.lang.Object
Providing a separate class for the Cholesky decomposition allows an application to perform such decompositions repeatedly without having to reallocate temporary storage space.
| Constructor and Description |
|---|
LDLTDecomposition()
Creates an uninitialized LDLTDecomposition.
|
LDLTDecomposition(int n)
Creates an uninitialized LDLTDecomposition with enough capacity to
handle matrices of size
n. |
LDLTDecomposition(Matrix M)
Creates a LDLTDecomposition for the Matrix specified by M.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear() |
double |
conditionEstimate(Matrix M)
Estimates the condition number of the original matrix M associated with
this decomposition.
|
double |
determinant()
Compute the determinant of the original matrix M associated with this
decomposition.
|
void |
ensureCapacity(int cap) |
void |
factor(Matrix M)
Peforms a Cholesky decomposition on the Matrix M.
|
void |
get(MatrixNd L,
VectorNd D)
Gets the components associated with this signed Cholesky decomposition.
|
double[] |
getBuffer() |
int |
getBufferWidth() |
int |
getSize() |
boolean |
inverse(DenseMatrix R)
Computes the inverse of the original matrix M associated with this
decomposition, and places the result in R.
|
boolean |
solve(DenseMatrix X,
Matrix B)
Solves the linear equation
M X = B for X, where M is the original matrix associated with this decomposition, and X and B are matrices. |
boolean |
solve(double[] x,
int xoff,
double[] b,
int boff)
Solves the linear equation
M x = b for x, where M is the original matrix associated with this decomposition, and x and b are vectors. |
boolean |
solve(Vector x,
Vector b)
Solves the linear equation
M x = b for x, where M is the original matrix associated with this decomposition, and x and b are vectors. |
public LDLTDecomposition()
public LDLTDecomposition(int n)
n. This capacity will later be
increased on demand.n - initial maximum matrix sizepublic LDLTDecomposition(Matrix M) throws ImproperSizeException
M - matrix to perform the Cholesky decomposition onImproperSizeException - if M is not squarepublic void ensureCapacity(int cap)
public int getSize()
public void factor(Matrix M) throws ImproperSizeException
M - matrix to perform the Cholesky decomposition onImproperSizeException - if M is not squarejava.lang.IllegalArgumentException - if M is detected to be not symmetric positive definitepublic void get(MatrixNd L, VectorNd D) throws ImproperStateException
L - if non-null, returns the lower triangular matrixD - if non-null, returns the diagonalImproperStateException - if this LDLTDecomposition is uninitializedpublic boolean solve(double[] x,
int xoff,
double[] b,
int boff)
x - unknown vector to solve forxoff - starting offset into xb - constant vectorboff - starting offset into bImproperStateException - if this decomposition is uninitializedImproperSizeException - if x or b do not
have a length compatible with Mpublic boolean solve(Vector x, Vector b) throws ImproperStateException, ImproperSizeException
x - unknown vector to solve forb - constant vectorImproperStateException - if this decomposition is uninitializedImproperSizeException - if b does not have a size compatible with M, or if x does not have a size
compatible with M and cannot be resized.public boolean solve(DenseMatrix X, Matrix B) throws ImproperStateException, ImproperSizeException
X - unknown matrix to solve forB - constant matrixImproperStateException - if this decomposition is uninitializedImproperSizeException - if B has a different number of rows than M, or if X has a different number
of rows than M or a different number of columns than B and cannot be
resized.public double conditionEstimate(Matrix M) throws ImproperStateException, ImproperSizeException
M - original matrixImproperStateException - if this LDLTDecomposition is uninitializedImproperSizeException - if the size of M does not match the size of the current Cholesky
decompositionpublic double determinant()
throws ImproperStateException
ImproperStateException - if this decomposition is uninitializedpublic boolean inverse(DenseMatrix R) throws ImproperStateException
R - matrix in which the inverse is storedImproperStateException - if this decomposition is uninitializedImproperSizeException - if R does not have the same size as M and cannot be resized.public double[] getBuffer()
public int getBufferWidth()
public void clear()