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 x
b
- constant vectorboff
- starting offset into b
ImproperStateException
- 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()