|
||||||||||
| 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)
throws InvalidMatrixException
matrix - The symmetric matrix to decompose.splitTolerance - dummy parameter, present for backward compatibility only.
InvalidMatrixException - (wrapping a
ConvergenceException if algorithm
fails to converge
public EigenDecompositionImpl(double[] main,
double[] secondary,
double splitTolerance)
throws InvalidMatrixException
main - Main diagonal of the symmetric triadiagonal formsecondary - Secondary of the tridiagonal formsplitTolerance - dummy parameter, present for backward compatibility only.
InvalidMatrixException - (wrapping a
ConvergenceException if algorithm
fails to converge| Method Detail |
|---|
public RealMatrix getV()
throws InvalidMatrixException
V is an orthogonal matrix, i.e. its transpose is also its inverse.
The columns of V are the eigenvectors of the original matrix.
getV in interface EigenDecompositionInvalidMatrixException
public RealMatrix getD()
throws InvalidMatrixException
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 EigenDecompositionInvalidMatrixExceptionEigenDecomposition.getRealEigenvalues(),
EigenDecomposition.getImagEigenvalues()
public RealMatrix getVT()
throws InvalidMatrixException
V is an orthogonal matrix, i.e. its transpose is also its inverse.
The columns of V are the eigenvectors of the original matrix.
getVT in interface EigenDecompositionInvalidMatrixException
public double[] getRealEigenvalues()
throws InvalidMatrixException
getRealEigenvalues in interface EigenDecompositionInvalidMatrixExceptionEigenDecomposition.getD(),
EigenDecomposition.getRealEigenvalue(int),
EigenDecomposition.getImagEigenvalues()
public double getRealEigenvalue(int i)
throws InvalidMatrixException,
ArrayIndexOutOfBoundsException
getRealEigenvalue in interface EigenDecompositioni - index of the eigenvalue (counting from 0)
InvalidMatrixException
ArrayIndexOutOfBoundsExceptionEigenDecomposition.getD(),
EigenDecomposition.getRealEigenvalues(),
EigenDecomposition.getImagEigenvalue(int)
public double[] getImagEigenvalues()
throws InvalidMatrixException
getImagEigenvalues in interface EigenDecompositionInvalidMatrixExceptionEigenDecomposition.getD(),
EigenDecomposition.getImagEigenvalue(int),
EigenDecomposition.getRealEigenvalues()
public double getImagEigenvalue(int i)
throws InvalidMatrixException,
ArrayIndexOutOfBoundsException
getImagEigenvalue in interface EigenDecompositioni - index of the eigenvalue (counting from 0)
InvalidMatrixException
ArrayIndexOutOfBoundsExceptionEigenDecomposition.getD(),
EigenDecomposition.getImagEigenvalues(),
EigenDecomposition.getRealEigenvalue(int)
public RealVector getEigenvector(int i)
throws InvalidMatrixException,
ArrayIndexOutOfBoundsException
getEigenvector in interface EigenDecompositioni - index of the eigenvector (counting from 0)
InvalidMatrixException
ArrayIndexOutOfBoundsExceptionEigenDecomposition.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 | |||||||||