public SymmetricQRAlgorithmDecomposition_FDRM(TridiagonalSimilarDecomposition_F32 <FMatrixRMaj> decomp, bool computeVectors) { this.decomp = decomp; this.computeVectors = computeVectors; helper = new SymmetricQREigenHelper_FDRM(); vector = new SymmetricQrAlgorithm_FDRM(helper); }
/** * <p> * Returns an {@link EigenDecomposition} which is specialized for symmetric matrices or the general problem. * </p> * * @param matrixSize Number of rows and columns that the returned decomposition is optimized for. * @param computeVectors Should it compute the eigenvectors or just eigenvalues. * @param isSymmetric If true then the returned algorithm is specialized only for symmetric matrices, if false * then a general purpose algorithm is returned. * @return EVD for any matrix. */ public static EigenDecomposition_F32 <FMatrixRMaj> eig(int matrixSize, bool computeVectors, bool isSymmetric) { if (isSymmetric) { TridiagonalSimilarDecomposition_F32 <FMatrixRMaj> decomp = DecompositionFactory_FDRM.tridiagonal(matrixSize); return(new SymmetricQRAlgorithmDecomposition_FDRM(decomp, computeVectors)); } else { return(new WatchedDoubleStepQRDecomposition_FDRM(computeVectors)); } }