org.ejml.ops
Class EigenOps

java.lang.Object
  extended by org.ejml.ops.EigenOps

public class EigenOps
extends Object

Additional functions related to eigenvalues and eigenvectors of a matrix.

Author:
Peter Abeles

Constructor Summary
EigenOps()
           
 
Method Summary
static double[] boundLargestEigenValue(DenseMatrix64F A, double[] bound)
           Generates a bound for the largest eigen value of the provided matrix using Perron-Frobenius theorem.
static double computeEigenValue(DenseMatrix64F A, DenseMatrix64F eigenVector)
           Given matrix A and an eigen vector of A, compute the corresponding eigen value.
static Eigenpair computeEigenVector(DenseMatrix64F A, double eigenvalue)
           Given an eigenvalue it computes an eigenvector using inverse iteration:
for i=1:MAX {
(A - μI)z(i) = q(i-1)
q(i) = z(i) / ||z(i)||
λ(i) = q(i)T A q(i)
}
static DenseMatrix64F createMatrixD(EigenDecomposition eig)
           A diagonal matrix where real diagonal element contains a real eigenvalue.
static DenseMatrix64F createMatrixV(EigenDecomposition<DenseMatrix64F> eig)
           Puts all the real eigenvectors into the columns of a matrix.
static Eigenpair dominantEigenpair(DenseMatrix64F A)
           Computes the dominant eigen vector for a matrix.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EigenOps

public EigenOps()
Method Detail

computeEigenValue

public static double computeEigenValue(DenseMatrix64F A,
                                       DenseMatrix64F eigenVector)

Given matrix A and an eigen vector of A, compute the corresponding eigen value. This is the Rayleigh quotient.

xTAx / xTx

Parameters:
A - Matrix. Not modified.
eigenVector - An eigen vector of A. Not modified.
Returns:
The corresponding eigen value.

computeEigenVector

public static Eigenpair computeEigenVector(DenseMatrix64F A,
                                           double eigenvalue)

Given an eigenvalue it computes an eigenvector using inverse iteration:
for i=1:MAX {
(A - μI)z(i) = q(i-1)
q(i) = z(i) / ||z(i)||
λ(i) = q(i)T A q(i)
}

NOTE: If there is another eigenvalue that is very similar to the provided one then there is a chance of it converging towards that one instead. The larger a matrix is the more likely this is to happen.

Parameters:
A - Matrix whose eigenvector is being computed. Not modified.
eigenvalue - The eigenvalue in the eigen pair.
Returns:
The eigenvector or null if none could be found.

dominantEigenpair

public static Eigenpair dominantEigenpair(DenseMatrix64F A)

Computes the dominant eigen vector for a matrix. The dominant eigen vector is an eigen vector associated with the largest eigen value.

WARNING: This function uses the power method. There are known cases where it will not converge. It also seems to converge to non-dominant eigen vectors some times. Use at your own risk.

Parameters:
A - A matrix. Not modified.

boundLargestEigenValue

public static double[] boundLargestEigenValue(DenseMatrix64F A,
                                              double[] bound)

Generates a bound for the largest eigen value of the provided matrix using Perron-Frobenius theorem. This function only applies to non-negative real matrices.

For "stochastic" matrices (Markov process) this should return one for the upper and lower bound.

Parameters:
A - Square matrix with positive elements. Not modified.
bound - Where the results are stored. If null then a matrix will be declared. Modified.
Returns:
Lower and upper bound in the first and second elements respectively.

createMatrixD

public static DenseMatrix64F createMatrixD(EigenDecomposition eig)

A diagonal matrix where real diagonal element contains a real eigenvalue. If an eigenvalue is imaginary then zero is stored in its place.

Parameters:
eig - An eigenvalue decomposition which has already decomposed a matrix.
Returns:
A diagonal matrix containing the eigenvalues.

createMatrixV

public static DenseMatrix64F createMatrixV(EigenDecomposition<DenseMatrix64F> eig)

Puts all the real eigenvectors into the columns of a matrix. If an eigenvalue is imaginary then the corresponding eigenvector will have zeros in its column.

Parameters:
eig - An eigenvalue decomposition which has already decomposed a matrix.
Returns:
An m by m matrix containing eigenvectors in its columns.


Copyright © 2012. All Rights Reserved.