public interface Eigenvalue<N extends Number> extends MatrixDecomposition<N>, MatrixDecomposition.Hermitian<N>, MatrixDecomposition.Determinant<N>, MatrixDecomposition.Values<N>
[A] is normal if [A][A]H = [A]H[A], and [A] is normal if and only if there exists a unitary matrix [Q] such that [A] = [Q][D][Q]H. Hermitian matrices are normal.
[V] and [D] can always be calculated in the sense that they will satisfy [A][V] = [V][D], but it is not always possible to calculate [V]-1. (Check the rank and/or the condition number of [V] to determine the validity of [V][D][V]-1.)
The eigenvalues (and their corresponding eigenvectors) of a non-symmetric matrix could be complex.
Modifier and Type | Interface and Description |
---|---|
static class |
Eigenvalue.Eigenpair |
static interface |
Eigenvalue.Factory<N extends Number> |
MatrixDecomposition.Determinant<N extends Number>, MatrixDecomposition.EconomySize<N extends Number>, MatrixDecomposition.Hermitian<N extends Number>, MatrixDecomposition.Ordered<N extends Number>, MatrixDecomposition.RankRevealing<N extends Number>, MatrixDecomposition.Solver<N extends Number>, MatrixDecomposition.Values<N extends Number>
Modifier and Type | Field and Description |
---|---|
static Eigenvalue.Factory<BigDecimal> |
BIG |
static Eigenvalue.Factory<ComplexNumber> |
COMPLEX |
static Eigenvalue.Factory<Double> |
PRIMITIVE |
static Eigenvalue.Factory<Quaternion> |
QUATERNION |
static Eigenvalue.Factory<RationalNumber> |
RATIONAL |
TYPICAL
Modifier and Type | Method and Description |
---|---|
default void |
copyEigenvector(int index,
Array1D<ComplexNumber> destination)
Deprecated.
With Java 9 this will be made private. Use
getEigenvectors() or
getEigenvector(int) instead. |
static <N extends Number> |
equals(MatrixStore<N> matrix,
Eigenvalue<N> decomposition,
NumberContext context) |
MatrixStore<N> |
getD()
The only requirements on [D] are that it should contain the eigenvalues and that [A][V] = [V][D].
|
default Eigenvalue.Eigenpair |
getEigenpair(int index) |
Array1D<ComplexNumber> |
getEigenvalues()
Even for real matrices the eigenvalues (and eigenvectors) are potentially complex numbers.
|
default void |
getEigenvalues(double[] realParts,
Optional<double[]> imaginaryParts) |
default MatrixStore<ComplexNumber> |
getEigenvector(int index)
Deprecated.
v43 Use
getEigenpair(int) instead. |
default MatrixStore<ComplexNumber> |
getEigenvectors() |
ComplexNumber |
getTrace()
A matrix' trace is the sum of the diagonal elements.
|
MatrixStore<N> |
getV()
The columns of [V] represent the eigenvectors of [A] in the sense that [A][V] = [V][D].
|
boolean |
isHermitian()
If [A] is hermitian then [V][D][V]-1 becomes [Q][D][Q]H...
|
boolean |
isOrdered()
The eigenvalues in D (and the eigenvectors in V) are not necessarily ordered.
|
static <N extends Number> |
make(Access2D<N> typical) |
static <N extends Number> |
make(Access2D<N> typical,
boolean hermitian) |
default MatrixStore<N> |
reconstruct() |
static <N extends Number> |
reconstruct(Eigenvalue<N> decomposition) |
checkAndCompute
getDeterminant
calculateDeterminant
computeValuesOnly
decompose, isComputed, reset
static final Eigenvalue.Factory<BigDecimal> BIG
static final Eigenvalue.Factory<ComplexNumber> COMPLEX
static final Eigenvalue.Factory<Double> PRIMITIVE
static final Eigenvalue.Factory<Quaternion> QUATERNION
static final Eigenvalue.Factory<RationalNumber> RATIONAL
static <N extends Number> Eigenvalue<N> make(Access2D<N> typical)
static <N extends Number> Eigenvalue<N> make(Access2D<N> typical, boolean hermitian)
static <N extends Number> boolean equals(MatrixStore<N> matrix, Eigenvalue<N> decomposition, NumberContext context)
static <N extends Number> MatrixStore<N> reconstruct(Eigenvalue<N> decomposition)
@Deprecated default void copyEigenvector(int index, Array1D<ComplexNumber> destination)
getEigenvectors()
or
getEigenvector(int)
instead.MatrixStore<N> getD()
default Eigenvalue.Eigenpair getEigenpair(int index)
Array1D<ComplexNumber> getEigenvalues()
Even for real matrices the eigenvalues (and eigenvectors) are potentially complex numbers. Typically they need to be expressed as complex numbers when [A] is not symmetric.
Prior to v41 this array should always be ordered in descending order - largest (modulus) first. As of
v41 the values should be in the same order as the matrices "V" and "D", and if that is ordered or not
is indicated by the isOrdered()
method.
default void getEigenvalues(double[] realParts, Optional<double[]> imaginaryParts)
realParts
- An array that will receive the real parts of the eigenvaluesimaginaryParts
- An optional array that, if present, will receive the imaginary parts of the
eigenvalues@Deprecated default MatrixStore<ComplexNumber> getEigenvector(int index)
getEigenpair(int)
instead.index
- Index corresponding to an entry in getEigenvalues()
and/or a column in
getEigenvectors()
.default MatrixStore<ComplexNumber> getEigenvectors()
getV()
.ComplexNumber getTrace()
MatrixStore<N> getV()
boolean isHermitian()
boolean isOrdered()
isOrdered
in interface MatrixDecomposition.Ordered<N extends Number>
default MatrixStore<N> reconstruct()
reconstruct
in interface MatrixDecomposition<N extends Number>
Copyright © 2018 Optimatika. All rights reserved.