• Householder transformations are great for transforming an entire column to .
  • However, it is less efficient to zero out a single entry in a matrix.
  • Example:

Givens transformations will be very useful when dealing with Upper Hessenberg matrices (matrices that are zero below the sub-diagonal, i.e., implies that ) and tri-diagonal matrices.

  • Left figure: upper Hessenberg
  • Right figure: tri-diagonal matrix.

2 approaches:

  • Householder: one big Q transform. Fastest for dense matrices.
  • Givens: many small Q transforms. Slower for dense matrices but faster for sparse matrices and for processing a single entry at a time.

Summary:

  • Householder approach: one large Q
  • Givens approach: many small Qs

Let’s explain this on an example.

Take a vector of size 2:

These are the entries we want to modify. We want to zero out the 2nd entry using an orthogonal transformation.

Denote by:

  • We have two options for the orthogonal transformation.
    • It can be a rotation or a reflection.
    • There is no significant difference between these 2 options.

Rotation:

det

Reflection:

det

You can check that this works:

Let’s apply this method to our example:

We get the matrix in the desired upper triangular form.

The computational cost of zeroing out a single entry is . So the cost for a single column is . The total computational cost for the entire matrix is .

  • If matrix is a general matrix, the cost is .
  • If is tri-diagonal, the cost is .
  • If is upper-Hessenberg, the cost is .

QR factorization, Householder transformation, QR using Householder transformations