Next: Hessenberg-Triangular Decomposition of Real Matrices, Previous: Tridiagonal Decomposition of Hermitian Matrices, Up: Linear Algebra [Index]

A general real matrix *A* can be decomposed by orthogonal
similarity transformations into the form

A = U H U^T

where *U* is orthogonal and *H* is an upper Hessenberg matrix,
meaning that it has zeros below the first subdiagonal. The
Hessenberg reduction is the first step in the Schur decomposition
for the nonsymmetric eigenvalue problem, but has applications in
other areas as well.

- Function:
*int***gsl_linalg_hessenberg_decomp***(gsl_matrix **`A`, gsl_vector *`tau`) This function computes the Hessenberg decomposition of the matrix

`A`by applying the similarity transformation*H = U^T A U*. On output,*H*is stored in the upper portion of`A`. The information required to construct the matrix*U*is stored in the lower triangular portion of`A`.*U*is a product of*N - 2*Householder matrices. The Householder vectors are stored in the lower portion of`A`(below the subdiagonal) and the Householder coefficients are stored in the vector`tau`.`tau`must be of length`N`.

- Function:
*int***gsl_linalg_hessenberg_unpack***(gsl_matrix **`H`, gsl_vector *`tau`, gsl_matrix *`U`) This function constructs the orthogonal matrix

*U*from the information stored in the Hessenberg matrix`H`along with the vector`tau`.`H`and`tau`are outputs from`gsl_linalg_hessenberg_decomp`

.

- Function:
*int***gsl_linalg_hessenberg_unpack_accum***(gsl_matrix **`H`, gsl_vector *`tau`, gsl_matrix *`V`) This function is similar to

`gsl_linalg_hessenberg_unpack`

, except it accumulates the matrix`U`into`V`, so that*V' = VU*. The matrix`V`must be initialized prior to calling this function. Setting`V`to the identity matrix provides the same result as`gsl_linalg_hessenberg_unpack`

. If`H`is order`N`, then`V`must have`N`columns but may have any number of rows.

- Function:
*int***gsl_linalg_hessenberg_set_zero***(gsl_matrix **`H`) This function sets the lower triangular portion of

`H`, below the subdiagonal, to zero. It is useful for clearing out the Householder vectors after calling`gsl_linalg_hessenberg_decomp`

.