Next: , Previous: Bidiagonalization, Up: Linear Algebra


13.9 Householder Transformations

A Householder transformation is a rank-1 modification of the identity matrix which can be used to zero out selected elements of a vector. A Householder matrix P takes the form,

     P = I - \tau v v^T

where v is a vector (called the Householder vector) and \tau = 2/(v^T v). The functions described in this section use the rank-1 structure of the Householder matrix to create and apply Householder transformations efficiently.

— Function: double gsl_linalg_householder_transform (gsl_vector * v)

This function prepares a Householder transformation P = I - \tau v v^T which can be used to zero all the elements of the input vector except the first. On output the transformation is stored in the vector v and the scalar \tau is returned.

— Function: int gsl_linalg_householder_hm (double tau, const gsl_vector * v, gsl_matrix * A)

This function applies the Householder matrix P defined by the scalar tau and the vector v to the left-hand side of the matrix A. On output the result P A is stored in A.

— Function: int gsl_linalg_householder_mh (double tau, const gsl_vector * v, gsl_matrix * A)

This function applies the Householder matrix P defined by the scalar tau and the vector v to the right-hand side of the matrix A. On output the result A P is stored in A.

— Function: int gsl_linalg_householder_hv (double tau, const gsl_vector * v, gsl_vector * w)

This function applies the Householder transformation P defined by the scalar tau and the vector v to the vector w. On output the result P w is stored in w.