Class SymmHess

All Implemented Interfaces:
Decomposition<Matrix>

public class SymmHess extends RealHess

Computes the Hessenburg decomposition of a real dense symmetric matrix. That is, for a square, symmetric matrix A, computes the decomposition A=QHQT where Q is an orthogonal matrix and H is a symmetric 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-diagonals. Specifically, if H has all zeros below the first sub-diagonal and above the first super-diagonal.

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

     [[ 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

    • enforceSymmetric

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

    • SymmHess

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

      public SymmHess(boolean computeQ)
      Constructs a Hessenberg decomposer for symmetric matrices.
      Parameters:
      computeQ - Flag indicating if the orthogonal Q matrix from the Hessenberg decomposition should be explicitly computed. If true, then the Q matrix will be computed explicitly. If Q is not needed, setting this to false may yield a slight increase in efficiency.
    • SymmHess

      public SymmHess(boolean computeQ, boolean enforceSymmetric)
      Constructs a Hessenberg decomposer for symmetric matrices.
      Parameters:
      computeQ - Flag indicating if the orthogonal Q matrix from the Hessenberg decomposition should be explicitly computed. If true, then the Q matrix will be computed explicitly. If Q is not needed, setting this to false may yield a slight increase in efficiency.
      enforceSymmetric - Flag indicating if an explicit check should be made to ensure any matrix passed to decompose(Matrix) is truly symmetric. If true, an exception will be thrown if the matrix is not symmetric. If false, the decomposition will proceed under the assumption that the matrix is symmetric whether it actually is or not. If the matrix is not symmetric, then the values in the upper triangular portion of the matrix are taken to be the values.
  • Method Details