|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.math.linear.EigenDecomposition
public class EigenDecomposition
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.
This class is similar in spirit to the EigenvalueDecomposition
class from the JAMA
library, with the following changes:
getVt method has been added,getRealEigenvalue and getImagEigenvalue methods to pick up a single eigenvalue have been added,getEigenvector method to pick up a single
eigenvector has been added,getDeterminant method has been added.getSolver method has been added.
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 | |
|---|---|
EigenDecomposition(double[] main,
double[] secondary,
double splitTolerance)
Calculates the eigen decomposition of the symmetric tridiagonal matrix. |
|
EigenDecomposition(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 EigenDecomposition(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 EigenDecomposition(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).
public 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} }.
getRealEigenvalues(),
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).
public double[] getRealEigenvalues()
getD(),
getRealEigenvalue(int),
getImagEigenvalues()public double getRealEigenvalue(int i)
i - index of the eigenvalue (counting from 0)
getD(),
getRealEigenvalues(),
getImagEigenvalue(int)public double[] getImagEigenvalues()
getD(),
getImagEigenvalue(int),
getRealEigenvalues()public double getImagEigenvalue(int i)
i - index of the eigenvalue (counting from 0)
getD(),
getImagEigenvalues(),
getRealEigenvalue(int)public RealVector getEigenvector(int i)
i - index of the eigenvector (counting from 0)
getD()public double getDeterminant()
public DecompositionSolver getSolver()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||