예제 #1
0
        public SymmetricQRAlgorithmDecomposition_DDRM(TridiagonalSimilarDecomposition_F64 <DMatrixRMaj> decomp,
                                                      bool computeVectors)
        {
            this.decomp         = decomp;
            this.computeVectors = computeVectors;

            helper = new SymmetricQREigenHelper_DDRM();
            vector = new SymmetricQrAlgorithm_DDRM(helper);
        }
예제 #2
0
 /**
  * <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));
     }
 }