GNU Scientific Library Reference Manual - Third Edition (v1.12)by M. Galassi, J. Davies, J. Theiler, B. Gough, G. Jungman, P. Alken, M. Booth, F. Rossi Paperback (6"x9"), 592 pages, 60 figures ISBN 0954612078 RRP £24.95 ($39.95) |

## 13.8 Hessenberg Decomposition of Real Matrices

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`

.

ISBN 0954612078 | GNU Scientific Library Reference Manual - Third Edition (v1.12) | See the print edition |