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.Pivoting<N extends Number>, MatrixDecomposition.RankRevealing<N extends Number>, MatrixDecomposition.Solver<N extends Number>, MatrixDecomposition.Values<N extends Number>
Structure2D.IntRowColumn, Structure2D.Logical<S extends Structure2D,B extends Structure2D.Logical<S,?>>, Structure2D.LongRowColumn, Structure2D.ReducibleTo1D<R extends Structure1D>, Structure2D.RowColumnCallback, Structure2D.RowColumnKey<R,C>, Structure2D.RowColumnMapper<R,C>
Structure1D.BasicMapper<T>, Structure1D.IndexCallback, Structure1D.IndexMapper<T>, Structure1D.IntIndex, Structure1D.LongIndex, Structure1D.LoopCallback
Modifier and Type | Field and Description |
---|---|
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
getEigenpair(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> |
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)
Deprecated.
v48 Use
reconstruct() instead |
checkAndCompute, checkAndDecompose
getDeterminant
calculateDeterminant
computeValuesOnly
decompose, isComputed, reset
column, column, column, column, column, count, count, countColumns, countRows, index, index, isEmpty, isFat, isScalar, isSquare, isTall, isVector, loopAll, loopColumn, loopColumn, loopDiagonal, loopMatching, loopRow, loopRow, mapperOf, row, row, row, row, row
index, loopAll, loopMatching, loopRange, mapper, size
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> boolean equals(MatrixStore<N> matrix, Eigenvalue<N> decomposition, NumberContext context)
static <N extends Number> Eigenvalue<N> make(Access2D<N> typical)
static <N extends Number> Eigenvalue<N> make(Access2D<N> typical, boolean hermitian)
@Deprecated static <N extends Number> MatrixStore<N> reconstruct(Eigenvalue<N> decomposition)
reconstruct()
instead@Deprecated default void copyEigenvector(int index, Array1D<ComplexNumber> destination)
getEigenvectors()
or
getEigenpair(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.
The values should be in the same order as the matrices "V" and "D", and if they 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
eigenvaluesdefault 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 © 2019 Optimatika. All rights reserved.