public static class FloatMatrix.EVD
extends java.lang.Object
implements java.io.Serializable
A = V*D*V-1
If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
diagonal and the eigenvector matrix V is orthogonal.
Given a linear transformation A, a non-zero vector x is defined to be an eigenvector of the transformation if it satisfies the eigenvalue equation
A x = λ x
for some scalar λ. In this situation, the scalar λ is called
an eigenvalue of A corresponding to the eigenvector x.
The word eigenvector formally refers to the right eigenvector, which is defined by the above eigenvalue equation A x = λ x, and is the most commonly used eigenvector. However, the left eigenvector exists as well, and is defined by x A = λ x.
Let A be a real n-by-n matrix with strictly positive entries aij > 0. Then the following statements hold.
A stochastic matrix, probability matrix, or transition matrix is used to describe the transitions of a Markov chain. A right stochastic matrix is a square matrix each of whose rows consists of nonnegative real numbers, with each row summing to 1. A left stochastic matrix is a square matrix whose columns consist of nonnegative real numbers whose sum is 1. A doubly stochastic matrix where all entries are nonnegative and all rows and all columns sum to 1. A stationary probability vector π is defined as a vector that does not change under application of the transition matrix; that is, it is defined as a left eigenvector of the probability matrix, associated with eigenvalue 1: πP = π. The Perron-Frobenius theorem ensures that such a vector exists, and that the largest eigenvalue associated with a stochastic matrix is always 1. For a matrix with strictly positive entries, this vector is unique. In general, however, there may be several such vectors.
Modifier and Type | Field and Description |
---|---|
FloatMatrix |
Vl
The left eigenvectors.
|
FloatMatrix |
Vr
The right eigenvectors.
|
float[] |
wi
The imaginary part of eigenvalues.
|
float[] |
wr
The real part of eigenvalues.
|
Constructor and Description |
---|
EVD(float[] wr,
float[] wi,
FloatMatrix Vl,
FloatMatrix Vr)
Constructor.
|
EVD(float[] w,
FloatMatrix V)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
FloatMatrix |
diag()
Returns the block diagonal eigenvalue matrix whose diagonal are the real
part of eigenvalues, lower subdiagonal are positive imaginary parts, and
upper subdiagonal are negative imaginary parts.
|
FloatMatrix.EVD |
sort()
Sorts the eigenvalues in descending order and reorders the
corresponding eigenvectors.
|
public final float[] wr
sort
function puts the eigenvalues
in descending order and reorder the corresponding eigenvectors.public final float[] wi
public final FloatMatrix Vl
public final FloatMatrix Vr
public EVD(float[] w, FloatMatrix V)
w
- eigenvalues.V
- eigenvectors.public EVD(float[] wr, float[] wi, FloatMatrix Vl, FloatMatrix Vr)
wr
- the real part of eigenvalues.wi
- the imaginary part of eigenvalues.Vl
- the left eigenvectors.Vr
- the right eigenvectors.public FloatMatrix diag()
public FloatMatrix.EVD sort()