public class TridiagonalDecompositionHouseholder extends Object implements TridiagonalSimilarDecomposition<DenseMatrix64F>
Performs a similar tridiagonal decomposition on a square symmetric input matrix.
Householder vectors perform the similar operation and the symmetry is taken advantage
of for good performance.
Finds the decomposition of a matrix in the form of:
A = O*T*OT
where A is a symmetric m by m matrix, O is an orthogonal matrix, and T is a tridiagonal matrix.
This implementation is based off of the algorithm described in:
David S. Watkins, "Fundamentals of Matrix Computations," Second Edition. Page 349-355
| Constructor and Description |
|---|
TridiagonalDecompositionHouseholder() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
decompose(DenseMatrix64F A)
Decomposes the provided symmetric matrix.
|
void |
getDiagonal(double[] diag,
double[] off)
Extracts the diagonal and off diagonal elements of the decomposed tridiagonal matrix.
|
DenseMatrix64F |
getQ(DenseMatrix64F Q,
boolean transposed)
An orthogonal matrix that has the following property: T = QTAQ
|
DenseMatrix64F |
getQT()
Returns the internal matrix where the decomposed results are stored.
|
DenseMatrix64F |
getT(DenseMatrix64F T)
Extracts the tridiagonal matrix found in the decomposition.
|
void |
householderSymmetric(int row,
double gamma)
Performs the householder operations on left and right and side of the matrix.
|
void |
init(DenseMatrix64F A)
If needed declares and sets up internal data structures.
|
boolean |
inputModified()
Is the input matrix to
DecompositionInterface.decompose(org.ejml.data.Matrix64F) is modified during
the decomposition process. |
public DenseMatrix64F getQT()
public void getDiagonal(double[] diag,
double[] off)
TridiagonalSimilarDecompositiongetDiagonal in interface TridiagonalSimilarDecomposition<DenseMatrix64F>diag - Diagonal elements. Modified.off - off diagonal elements. Modified.public DenseMatrix64F getT(DenseMatrix64F T)
getT in interface TridiagonalSimilarDecomposition<DenseMatrix64F>T - If not null then the results will be stored here. Otherwise a new matrix will be created.public DenseMatrix64F getQ(DenseMatrix64F Q, boolean transposed)
getQ in interface TridiagonalSimilarDecomposition<DenseMatrix64F>Q - If not null then the results will be stored here. Otherwise a new matrix will be created.public boolean decompose(DenseMatrix64F A)
decompose in interface DecompositionInterface<DenseMatrix64F>A - Symmetric matrix that is going to be decomposed. Not modified.public void householderSymmetric(int row,
double gamma)
row - Specifies the submatrix.gamma - The gamma for the householder operationpublic void init(DenseMatrix64F A)
A - Matrix being decomposed.public boolean inputModified()
DecompositionInterfaceDecompositionInterface.decompose(org.ejml.data.Matrix64F) is modified during
the decomposition process.inputModified in interface DecompositionInterface<DenseMatrix64F>Copyright © 2013. All Rights Reserved.