mikera.matrixx.decompose.impl.eigen
Class SymmetricQrAlgorithm
- java.lang.Object
-
- mikera.matrixx.decompose.impl.eigen.SymmetricQrAlgorithm
-
public class SymmetricQrAlgorithm extends java.lang.ObjectComputes the eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the symmetric QR algorithm.
This implementation is based on the algorithm is sketched out in:
David S. Watkins, "Fundamentals of Matrix Computations," Second Edition. page 377-385
-
-
Constructor Summary
Constructors Constructor and Description SymmetricQrAlgorithm()Creates a new SymmetricQREigenvalue class that declares its own SymmetricQREigenHelper.SymmetricQrAlgorithm(SymmetricQREigenHelper helper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description doublegetEigenvalue(int index)Returns the eigenvalue at the specified index.intgetNumberOfEigenvalues()Returns the number of eigenvalues available.MatrixgetQ()voidperformStep()First looks for zeros and then performs the implicit single step in the QR Algorithm.booleanprocess(int sideLength, double[] diag, double[] off)booleanprocess(int sideLength, double[] diag, double[] off, double[] eigenvalues)Computes the eigenvalue of the provided tridiagonal matrix.voidsetFastEigenvalues(boolean fastEigenvalues)voidsetMaxIterations(int maxIterations)voidsetQ(Matrix q)
-
-
-
Constructor Detail
-
SymmetricQrAlgorithm
public SymmetricQrAlgorithm(SymmetricQREigenHelper helper)
-
SymmetricQrAlgorithm
public SymmetricQrAlgorithm()
Creates a new SymmetricQREigenvalue class that declares its own SymmetricQREigenHelper.
-
-
Method Detail
-
setMaxIterations
public void setMaxIterations(int maxIterations)
-
getQ
public Matrix getQ()
-
setQ
public void setQ(Matrix q)
-
setFastEigenvalues
public void setFastEigenvalues(boolean fastEigenvalues)
-
getEigenvalue
public double getEigenvalue(int index)
Returns the eigenvalue at the specified index.- Parameters:
index- Which eigenvalue.- Returns:
- The eigenvalue.
-
getNumberOfEigenvalues
public int getNumberOfEigenvalues()
Returns the number of eigenvalues available.- Returns:
- How many eigenvalues there are.
-
process
public boolean process(int sideLength, double[] diag, double[] off, double[] eigenvalues)Computes the eigenvalue of the provided tridiagonal matrix. Note that only the upper portion needs to be tridiagonal. The bottom diagonal is assumed to be the same as the top.- Parameters:
sideLength- Number of rows and columns in the input matrix.diag- Diagonal elements from tridiagonal matrix. Modified.off- Off diagonal elements from tridiagonal matrix. Modified.- Returns:
- true if it succeeds and false if it fails.
-
process
public boolean process(int sideLength, double[] diag, double[] off)
-
performStep
public void performStep()
First looks for zeros and then performs the implicit single step in the QR Algorithm.
-
-
DMelt 3.0 © DataMelt by jWork.ORG