public SymmetricQRAlgorithmDecomposition_DDRM(TridiagonalSimilarDecomposition_F64 <DMatrixRMaj> decomp, bool computeVectors) { this.decomp = decomp; this.computeVectors = computeVectors; helper = new SymmetricQREigenHelper_DDRM(); vector = new SymmetricQrAlgorithm_DDRM(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_F64 <DMatrixRMaj> eig(int matrixSize, bool computeVectors, bool isSymmetric) { if (isSymmetric) { TridiagonalSimilarDecomposition_F64 <DMatrixRMaj> decomp = DecompositionFactory_DDRM.tridiagonal(matrixSize); return(new SymmetricQRAlgorithmDecomposition_DDRM(decomp, computeVectors)); } else { return(new WatchedDoubleStepQRDecomposition_DDRM(computeVectors)); } }