|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.math.linear.EigenDecompositionImpl
public class EigenDecompositionImpl
Calculates the eigen decomposition of a real symmetric matrix.
The eigen decomposition of matrix A is a set of two matrices: V and D such that A = V D VT. A, V and D are all m × m matrices.
As of 2.0, this class supports only symmetric matrices, and
hence computes only real realEigenvalues. This implies the D matrix returned
by getD() is always diagonal and the imaginary values returned
getImagEigenvalue(int) and getImagEigenvalues() are always
null.
When called with a RealMatrix argument, this implementation only uses
the upper part of the matrix, the part below the diagonal is not accessed at
all.
This implementation is based on the paper by A. Drubrulle, R.S. Martin and J.H. Wilkinson 'The Implicit QL Algorithm' in Wilksinson and Reinsch (1971) Handbook for automatic computation, vol. 2, Linear algebra, Springer-Verlag, New-York
| Constructor Summary | |
|---|---|
EigenDecompositionImpl(double[] main,
double[] secondary,
double splitTolerance)
Calculates the eigen decomposition of the symmetric tridiagonal matrix. |
|
EigenDecompositionImpl(RealMatrix matrix,
double splitTolerance)
Calculates the eigen decomposition of the given symmetric matrix. |
|
| Method Summary | |
|---|---|
RealMatrix |
getD()
Returns the block diagonal matrix D of the decomposition. |
double |
getDeterminant()
Return the determinant of the matrix |
RealVector |
getEigenvector(int i)
Returns a copy of the ith eigenvector of the original matrix. |
double |
getImagEigenvalue(int i)
Returns the imaginary part of the ith eigenvalue of the original matrix. |
double[] |
getImagEigenvalues()
Returns a copy of the imaginary parts of the eigenvalues of the original matrix. |
double |
getRealEigenvalue(int i)
Returns the real part of the ith eigenvalue of the original matrix. |
double[] |
getRealEigenvalues()
Returns a copy of the real parts of the eigenvalues of the original matrix. |
DecompositionSolver |
getSolver()
Get a solver for finding the A × X = B solution in exact linear sense. |
RealMatrix |
getV()
Returns the matrix V of the decomposition. |
RealMatrix |
getVT()
Returns the transpose of the matrix V of the decomposition. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public EigenDecompositionImpl(RealMatrix matrix,
double splitTolerance)
matrix - Matrix to decompose. It must be symmetric.splitTolerance - Dummy parameter (present for backward
compatibility only).
NonSymmetricMatrixException - if the matrix is not symmetric.
MaxCountExceededException - if the algorithm fails to converge.
public EigenDecompositionImpl(double[] main,
double[] secondary,
double splitTolerance)
main - Main diagonal of the symmetric triadiagonal formsecondary - Secondary of the tridiagonal formsplitTolerance - Dummy parameter (present for backward
compatibility only).
MaxCountExceededException - if the algorithm fails to converge.| Method Detail |
|---|
public RealMatrix getV()
V is an orthogonal matrix, i.e. its transpose is also its inverse.
The columns of V are the eigenvectors of the original matrix.
No assumption is made about the orientation of the system axes formed by the columns of V (e.g. in a 3-dimension space, V can form a left- or right-handed system).
getV in interface EigenDecompositionpublic RealMatrix getD()
D is a block diagonal matrix.
Real eigenvalues are on the diagonal while complex values are on 2x2 blocks { {real +imaginary}, {-imaginary, real} }.
getD in interface EigenDecompositionEigenDecomposition.getRealEigenvalues(),
EigenDecomposition.getImagEigenvalues()public RealMatrix getVT()
V is an orthogonal matrix, i.e. its transpose is also its inverse.
The columns of V are the eigenvectors of the original matrix.
No assumption is made about the orientation of the system axes formed by the columns of V (e.g. in a 3-dimension space, V can form a left- or right-handed system).
getVT in interface EigenDecompositionpublic double[] getRealEigenvalues()
getRealEigenvalues in interface EigenDecompositionEigenDecomposition.getD(),
EigenDecomposition.getRealEigenvalue(int),
EigenDecomposition.getImagEigenvalues()public double getRealEigenvalue(int i)
getRealEigenvalue in interface EigenDecompositioni - index of the eigenvalue (counting from 0)
EigenDecomposition.getD(),
EigenDecomposition.getRealEigenvalues(),
EigenDecomposition.getImagEigenvalue(int)public double[] getImagEigenvalues()
getImagEigenvalues in interface EigenDecompositionEigenDecomposition.getD(),
EigenDecomposition.getImagEigenvalue(int),
EigenDecomposition.getRealEigenvalues()public double getImagEigenvalue(int i)
getImagEigenvalue in interface EigenDecompositioni - index of the eigenvalue (counting from 0)
EigenDecomposition.getD(),
EigenDecomposition.getImagEigenvalues(),
EigenDecomposition.getRealEigenvalue(int)public RealVector getEigenvector(int i)
getEigenvector in interface EigenDecompositioni - index of the eigenvector (counting from 0)
EigenDecomposition.getD()public double getDeterminant()
getDeterminant in interface EigenDecompositionpublic DecompositionSolver getSolver()
getSolver in interface EigenDecomposition
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||