Reflection
Suppose that we are given a line spanned over the vector a in ℝn and we need to find a matrix H of reflection about the line through the origin in the plane. This matrix H should fix every vector on line, and should send any vector not on the line to its mirror image about the line. The subspace { a }⊥ is called the hyperplane in ℝn orthogonal to a. The n × n orthogonal matrixlineseg = Graphics[{RGBColor[0.2, 0.7, 0.4], Line[{P, Q}]}]
u = Graphics[{Black, Thick, Line[{{0, 0}, {-1, 2}}]}]
ar1 := Graphics[Arrow[{{-0.2, 0.4}, {5/2, 3}}]]
ar2 := Graphics[Arrow[{{-0.2, 0.4}, {3.5, 1.2}}]]
line2 = Graphics[{RGBColor[1, 0, 0], Line[{{5/2, 3}, {3.5, 1.2}}]}]
textu = Graphics[Text[Style["u", FontSize -> 14, Black], {-0.6, 1.9}]]
textx = Graphics[Text[Style["x", FontSize -> 14, Red], {2.8, 3.0}]]
textHx = Graphics[Text[Style["Hx", FontSize -> 14, Blue], {3.8, 1.0}]]
Show[u, lineseg, ar1, ar2, line2, textu, textx, textHx]
Example 1: We present some simple reflections on the plane and in 3D in the following tables.
Reflection about the x-axis T(x,y) = (x,-y) |
||
Reflection about the y-axis T(x,y)=(-x,y) |
||
Reflection about the line y=x T(x,y)=(y,x) |
ver = Graphics[{Black, Thick, Arrow[{{0, -0.2}, {0, 1.1}}]}]
ar1 = Graphics[{Blue, Thick, Arrow[{{0, 0}, {1, 1}}]}]
ar2 = Graphics[{Blue, Thick, Arrow[{{0, 0}, {1, -1}}]}]
dash = Graphics[{Dashed, Line[{{1, 1}, {1, -1}}]}]
textx = Graphics[Text[Style["(x,y)", FontSize -> 14], {1.1, 1.1}]]
textm = Graphics[Text[Style["(x,-y)", FontSize -> 14], {1.1, -1.1}]]
textu = Graphics[Text[Style["x", FontSize -> 14, Red], {1.58, 0.1}]]
textxx = Graphics[Text[Style["y", FontSize -> 14, Red], {0.1, 1.1}]]
Show[textx, textm, dash, ar1, ar2, ver, hor, textu, textxx]
ver = Graphics[{Black, Thick, Arrow[{{0, -0.2}, {0, 1.2}}]}]
ar1 = Graphics[{Blue, Thick, Arrow[{{0, 0}, {1, 1}}]}]
ar2 = Graphics[{Blue, Thick, Arrow[{{0, 0}, {-1, 1}}]}]
dash = Graphics[{Dashed, Line[{{-1, 1}, {1, 1}}]}]
textx = Graphics[Text[Style["(x,y)", FontSize -> 14], {1.1, 1.1}]]
textm = Graphics[Text[Style["(-x,y)", FontSize -> 14], {-1.1, 1.1}]]
textu = Graphics[Text[Style["x", FontSize -> 14, Red], {1.28, 0.1}]]
textxx = Graphics[Text[Style["y", FontSize -> 14, Red], {0.1, 1.2}]]
Show[textx, textm, dash, ar1, ar2, ver, hor, textu, textxx]
ver = Graphics[{Black, Thick, Arrow[{{0, -0.2}, {0, 1.2}}]}]
line = Graphics[{Blue, Thick, Line[{{0, 0}, {1, 1}}]}]
P= {Cos[0.4], Sin[0.4]}
Q = {Cos[0.4 + Pi/4], Sin[0.4 + Pi/4]}
ar1 = Graphics[{Blue, Thick, Arrow[{{0, 0}, P}]}]
ar2 = Graphics[{Blue, Thick, Arrow[{{0, 0}, Q}]}]
textyx = Graphics[Text[Style["y=x", FontSize -> 14], {0.86, 0.96}]]
textxx = Graphics[Text[Style["y", FontSize -> 14, Red], {0.1, 1.1}]]
textu = Graphics[Text[Style["x", FontSize -> 14, Red], {1.18, 0.1}]]
textx = Graphics[Text[Style["(y,x)", FontSize -> 14], {0.4, 1.0}]]
textm = Graphics[Text[Style["(x,y)", FontSize -> 14], {1.06, 0.4}]]
dash = Graphics[{Dashed, Line[{P, Q}]}]
Show[textx, textm, dash, ar1, ar2, ver, hor, line, textu, textxx, textyx]
Reflection about the xy-plane T(x,y,z) = (x,y,-z) |
||
Reflection about the xz-plane T(x,y,z)=(x,-y,z) |
||
Reflection about the yz-plane T(x,y,z)=(-x,y,z) |
P = {1, 1, 1}
Q = {1, 1, -1}
ar1 = Graphics3D[{Blue, Thick, Arrow[{{0, 0, 0}, P}]}]
ar2 = Graphics3D[{Blue, Thick, Arrow[{{0, 0, 0}, Q}]}]
aa = ContourPlot3D[z == 0, {x, -0.1, 1}, {y, -0.1, 1}, {z, -1, 1}, AxesLabel -> {x, y, z}]
dash = Graphics3D[{Dashed, Line[{P, Q}]}]
textx = Graphics3D[ Text[Style["(x,y,z)", FontSize -> 14], {0.8, 1.0, 1.0}]]
textm = Graphics3D[ Text[Style["(x,y,-z)", FontSize -> 14], {1.06, 0.8, -1.0}]]
Show[textx, textm, dash, ar1, ar2, axes, aa]
Example 2: Consider the vector \( {\bf u} = \left[ 1, -2 , 2 \right]^{\mathrm T} . \) Then the Householder reflection with respect to vector u is
We check this theorem for two-dimensional vectors \( {\bf u} = \left[ u_1 , u_2 \right]^{\mathrm T} \) and \( {\bf v} = \left[ v_1 , v_2 \right]^{\mathrm T} \) of the same norm. So given \( \| {\bf v} \| = \| {\bf u} \| , \) we calculate
Example 3:
Example. We find a Householder reflection that maps the vector \( {\bf u} = \left[ 1, -2 , 2 \right]^{\mathrm T} \) into a vector v that has zeroes as its second and third components. Since this vecor has to be of the same norm, we get \( {\bf v} = \left[ 3, 0 , 0 \right]^{\mathrm T} . \) Since \( {\bf a} = {\bf u} - {\bf v} = \left[ -2, -2 , 2 \right]^{\mathrm T} , \) the Householder reflection \( {\bf H}_{{\bf a}} = \frac{1}{3} \begin{bmatrix} 1&-2&2 \\ -2&1&2 \\ 2&2&1 \end{bmatrix} \) maps the vector \( {\bf u} = \left[ 1, -2 , 2 \right]^{\mathrm T} \) into a vector v. Matrix \( {\bf H}_{{\bf a}} \) is idempotent (\( {\bf H}_{{\bf a}}^2 = {\bf I} \) ) because its eigenvalues are -1, 1, 1. ■
sage: nsp.is_finite()
False
We use the Householder reflection to obtain an alternative version of LU-decomposition. Consider the following m-by-n matrix:
Algorithm (Row-oriented vertion of Householder transformations):
Step 1: Compute \( \sigma_a \) and β
Step 2: Compute the factor row \( \left( \alpha , {\bf w}^{\mathrm T} \right) : \)
Step 3: Apply Gaussian elimination using the pivot row and column from step 2:
This formulation of Householder transformations can be regarded as a special kind of Gauss elimination, where the pivot row is computed from a linear combination of the rows of the matrix, rather than being taken directly from it. The numerical stability of the process can be seen from the fact that \( |z_i | \le 1 \) and \( |w_j | \le \beta \le 2 \) for every entry in z and w.
The Householder algorithm is the most widely used algorithm for QR factorization (for instance, qr in MATLAB) because it is less sensitive to rounding error than Gram--Schmidt algorithm.
- Householder, Alston, S. Principles of Numerical Analysis, New York, McGraw Hill, 1953.