public class EigenvalueDecomposition extends Object
If A is symmetric, then
A = V⋅D⋅V*
where the eigenvalue matrix D is diagonal and the eigenvector matrix
V is orthogonal. I.e., A = V.times(D).times(V.transpose()) and
V.times(V.transpose()) equals the identity matrix.
If A is not symmetric,
then the eigenvalue matrix D is block diagonal with the real eigenvalues in
(1×1) blocks and any complex eigenvalues, λ + i⋅μ, in
(2×2) blocks,
[λ, μ; -μ, λ].
The columns of V represent the eigenvectors in the
sense that A⋅V = V⋅D,
i.e. A.times(V) equals V.times(D).
The matrix V may be
badly conditioned, or even singular, so the validity of the equation
A = V⋅D⋅V-1 depends upon V.cond().
| Constructor and Description |
|---|
EigenvalueDecomposition(Matrix A)
Check for symmetry, then construct the eigenvalue decomposition Structure
to access D and V.
|
| Modifier and Type | Method and Description |
|---|---|
Matrix |
getD()
Returns the block diagonal eigenvalue matrix
|
double[] |
getImagEigenvalues()
Return the imaginary parts of the eigenvalues
|
double[] |
getRealEigenvalues()
Return the real parts of the eigenvalues
|
Matrix |
getV()
Return a matrix with the real parts of the eigenvectors as columns
|
public EigenvalueDecomposition(Matrix A)
A - square matrixIllegalArgumentException - if the matrix M is not squarepublic Matrix getV()
public double[] getRealEigenvalues()
public double[] getImagEigenvalues()
public Matrix getD()