Class HermHess

All Implemented Interfaces:
Decomposition<CMatrix>

public class HermHess extends ComplexHess
Computes the Hessenburg decomposition of a complex dense Hermitian matrix. That is, for a square, Hermitian matrix A, computes the decomposition A=QHQH where Q is an unitary matrix and H is a Hermitian matrix in tri-diagonal form (special case of Hessenburg form) which is similar to A (i.e. has the same eigenvalues).

A matrix H is in tri-diagonal form if it is nearly diagonal except for possibly the first sub/super-diagonal. Specifically, if H has all zeros below the first sub-diagonal and above the first super-diagonal.

For example, the following matrix is in Hermitian tri-diagonal form where each 'x' may hold a different value (provided the matrix is Hermitian):

     [[ x x 0 0 0 ]
      [ x x x 0 0 ]
      [ 0 x x x 0 ]
      [ 0 0 x x x ]
      [ 0 0 0 x x ]]
  • Field Details

    • enforceHermitian

      protected boolean enforceHermitian
      Flag indicating if an explicit check should be made that the matrix to be decomposed is Hermitian.
  • Constructor Details

    • HermHess

      public HermHess()
      Constructs a Hessenberg decomposer for Hermitian matrices. By default, the Householder vectors used in the decomposition will be stored so that the full unitary Q matrix can be formed by calling ComplexUnitaryDecomposition.getQ().
    • HermHess

      public HermHess(boolean computeQ)
      Constructs a Hessenberg decomposer for Hermitian matrices.
      Parameters:
      computeQ - Flag indicating if the unitary Q matrix from the Hessenberg decomposition should be explicitly computed. If true, then the Q matrix will be computed explicitly.
    • HermHess

      public HermHess(boolean computeQ, boolean enforceHermitian)
      Constructs a Hessenberg decomposer for Hermitian matrices.
      Parameters:
      computeQ - Flag indicating if the unitary Q matrix from the Hessenberg decomposition should be explicitly computed. If true, then the Q matrix will be computed explicitly.
      enforceHermitian - Flag indicating if an explicit check should be made to ensure any matrix passed to decompose(CMatrix) is truly Hermitian. If true, an exception will be thrown if the matrix is not Hermitian. If false, the decomposition will proceed under the assumption that the matrix is Hermitian whether it actually is or not. If the matrix is not Hermitian, then the values in the upper triangular portion of the matrix are taken to be the values.
  • Method Details