jsci.maths.linalg
Class EigenDecomposition

java.lang.Object
  extended by jsci.maths.linalg.EigenDecomposition

public class EigenDecomposition
extends java.lang.Object


Nested Class Summary
static interface EigenDecomposition.Algorithms
           
 
Constructor Summary
EigenDecomposition(DoubleMatrix<? extends DoubleArray2D,? extends DoubleArray1D> matrix, boolean eigenvectors)
           
EigenDecomposition(DoubleMatrix<? extends DoubleArray2D,? extends DoubleArray1D> matrix, boolean eigenvectors, int maxIters)
           
 
Method Summary
static void diagonalizeSymmetricTridiagonal(DoubleArray2D array, DoubleArray1D offdiag, int start, int end, int maxIters)
          Diagonalizes a symmetric tridiagonal matrix in-place.
 double[] getEigenvalues()
           
 DoubleVector[] getEigenvectors()
           
static void reduceSymmetricToTridiagonal(DoubleArray2D array, DoubleArray1D offdiag, int start, int end)
          Reduces a symmetric matrix to a tridiagonal matrix in-place.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EigenDecomposition

public EigenDecomposition(DoubleMatrix<? extends DoubleArray2D,? extends DoubleArray1D> matrix,
                          boolean eigenvectors)
                   throws MaximumIterationsExceededException
Throws:
MaximumIterationsExceededException

EigenDecomposition

public EigenDecomposition(DoubleMatrix<? extends DoubleArray2D,? extends DoubleArray1D> matrix,
                          boolean eigenvectors,
                          int maxIters)
                   throws MaximumIterationsExceededException
Throws:
MaximumIterationsExceededException
Method Detail

getEigenvalues

public double[] getEigenvalues()

getEigenvectors

public DoubleVector[] getEigenvectors()

reduceSymmetricToTridiagonal

public static void reduceSymmetricToTridiagonal(DoubleArray2D array,
                                                DoubleArray1D offdiag,
                                                int start,
                                                int end)
                                         throws MaximumIterationsExceededException
Reduces a symmetric matrix to a tridiagonal matrix in-place. Resumable/optimised method for finding the eigenvalues of a (large) symmetric matrix.

Parameters:
array - a symmetric square array.
offdiag - an array to hold the off-diagonal elements.
start - 0 < start <= n-1
end - 0 <= end < start
Throws:
MaximumIterationsExceededException

diagonalizeSymmetricTridiagonal

public static void diagonalizeSymmetricTridiagonal(DoubleArray2D array,
                                                   DoubleArray1D offdiag,
                                                   int start,
                                                   int end,
                                                   int maxIters)
                                            throws MaximumIterationsExceededException
Diagonalizes a symmetric tridiagonal matrix in-place. Resumable/optimised method for finding the eigenvalues of a (large) symmetric matrix.

Parameters:
array - an array processed by reduceSymmetricToTridiagonal().
offdiag - an array processed by reduceSymmetricToTridiagonal().
start - 0 <= start < matrix.rows()
end - start < end <= matrix.rows()
Throws:
MaximumIterationsExceededException