This preview shows page 1. Sign up to view the full content.
Unformatted text preview: The Action of Householder Reﬂectors Let A ∈ Rm×n , m ≥ n. You may recall that the Householder QR factorization can be written as Hp · · · H2 H1 A = R, where p = min (n, m − 1) and Hk = I − ( ut2uk )uk ut is a Householder reﬂector which k k introduces zeros into positions k + 1 to m of the k th column of the matrix A(k−1) = Hk−1 · · · H2 H1 A. This gives A = QR, where we deﬁne Q = H1 H2 · · · Hp . The Hj are not explicitly formed, since that is very ineﬃcient, and since they are completely determined by the u vectors. The matrix Q is never formed, either. What we do is save the uj ’s. If we let Qu be the array whose j th column is uj , it would be called the ”factored form” of Q (I think of it as an array, not a matrix). In Matlab, if u is our variable name for uj , then we might write Qu(:, j ) = u. In a memory eﬃcient code, we would use the lower triangle of A (plus an n-vector) to store all of the uj s. Later we will need to ﬁnd the vector c = Qt b, and instead of explicitly forming Q, we use the routine HOUSEQACT. Notice that c = Qt b = Hn−1 · · · H2 H1 b, so we write HOUSEQACT to form this product: c = b; for j=1:p, c = Hj * c; %but you code this line the right way... end We discuss how to ﬁnd the uj ’s and how to code the algorithm eﬃciently for speed and memory on other pages, but a good implementation of the loop above should be all the convincing you need to understand that Householder reﬂectors are never −1 explicitly computed: Such an implementation requires p=0 4(m − j ) ≈ 2p(2m − p) j ﬂops, and even if we knew Q ∈ Rm×m explicitly (which we do not, and which is expensive), it would require 2m2 ﬂops (more eﬃcient only if p > m). ...
View Full Document
This note was uploaded on 12/18/2010 for the course PHYS 5073 taught by Professor Mark during the Fall '10 term at Arkansas.
- Fall '10