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()