package mikera.matrixx.decompose; import mikera.matrixx.AMatrix; import mikera.matrixx.decompose.impl.eigen.SymmetricQRAlgorithmDecomposition; public class Eigen { /** * <p> * Computes the eigenvalues and eigenvectors of a matrix. Returns an object that represents * the solution of the decomposition. * Returns null if the decomposition fails. * </p> * @param A The input matrix. It must be a square symmetric matrix. * @param computeVectors Should it compute the eigenvectors or just eigenvalues. * @return an IEigenResult object that represents the solution to the decomposition. */ public static IEigenResult decompose(AMatrix A, boolean computeVectors) { throw new java.lang.UnsupportedOperationException("This has not yet been implemented"); } /** * <p> * Computes the eigenvalues and eigenvectors of a matrix. Returns an object that represents * the solution of the decomposition. * Returns null if the decomposition fails. * </p> * @param A The input matrix. It must be a square symmetric matrix. * @return an IEigenResult object that represents the solution to the decomposition. */ public static IEigenResult decompose(AMatrix A) { return decompose(A, true); } /** * <p> * Computes the eigenvalues and eigenvectors of a real symmetric matrix. Returns an object that represents * the solution of the decomposition. * Returns null if the decomposition fails. * </p> * @param A The input matrix. It must be a square symmetric matrix. * @param computeVectors Should it compute the eigenvectors or just eigenvalues. * @return an IEigenResult object that represents the solution to the decomposition. */ public static IEigenResult decomposeSymmetric(AMatrix A, boolean computeVectors) { SymmetricQRAlgorithmDecomposition alg = new SymmetricQRAlgorithmDecomposition(computeVectors); return alg.decompose(A); } /** * <p> * Computes the eigenvalues and eigenvectors of a real symmetric matrix. Returns an object that represents * the solution of the decomposition. * Returns null if the decomposition fails. * </p> * @param A The input matrix. It must be a square symmetric matrix. * @return an IEigenResult object that represents the solution to the decomposition. */ public static IEigenResult decomposeSymmetric(AMatrix A) { return decomposeSymmetric(A, true); } }