2022-02-09 Projections, rotations, and reflections

Last time

  • Algebra of linear transformations

  • Polynomial evaluation and fitting

  • Orthogonality

Today

  • Projections

  • Rotations

  • Reflections

  • Oh my!

using LinearAlgebra
using Plots
using Polynomials
default(linewidth=4, legendfontsize=12)

function vander(x, k=nothing)
    if isnothing(k)
        k = length(x)
    end
    m = length(x)
    V = ones(m, k)
    for j in 2:k
        V[:, j] = V[:, j-1] .* x
    end
    V
end
vander (generic function with 2 methods)

Matrices as linear transformations

Linear algebra is the study of linear transformations on vectors, which represent points in a finite dimensional space. The matrix-vector product \(y = A x\) is a linear combination of the columns of \(A\). The familiar definition,

\[ y_i = \sum_j A_{i,j} x_j \]

can also be viewed as

\[\begin{split} y = \Bigg[ A_{:,1} \Bigg| A_{:,2} \Bigg| \dotsm \Bigg] \begin{bmatrix} x_1 \\ x_2 \\ \vdots \end{bmatrix} = \Bigg[ A_{:,1} \Bigg] x_1 + \Bigg[ A_{:,2} \Bigg] x_2 + \dotsb . \end{split}\]

Inner products and orthogonality

The inner product

\[ x^T y = \sum_i x_i y_i \]
of vectors (or columns of a matrix) tell us about their magnitude and about the angle. The norm is induced by the inner product,
\[ \lVert x \rVert = \sqrt{x^T x} \]
and the angle \(\theta\) is defined by
\[ \cos \theta = \frac{x^T y}{\lVert x \rVert \, \lVert y \rVert} . \]
Inner products are bilinear, which means that they satisfy some convenient algebraic properties
\[\begin{split} \begin{split} (x + y)^T z &= x^T z + y^T z \\ x^T (y + z) &= x^T y + x^T z \\ (\alpha x)^T (\beta y) &= \alpha \beta x^T y \\ \end{split} . \end{split}\]

Examples with inner products

x = [0, 1]
y = [1, 2]
@show x' * y
@show y' * x;
x' * y = 2
y' * x = 2
ϕ = pi/6
y = [cos(ϕ), sin(ϕ)]
cos_θ = x'*y / (norm(x) * norm(y))
@show cos_θ
@show cos(ϕ-pi/2);
acos(cos_θ)
cos_θ = 0.49999999999999994
cos(ϕ - pi / 2) = 0.4999999999999999
1.0471975511965979

Polynomials can be orthogonal too!

x = LinRange(-1, 1, 50)
A = vander(x, 4)
M = A * [.5 0 0 0; # 0.5
         0  1 0 0;  # x
         0  0 1 0]' # x^2
scatter(x, M)
plot!(x, 0*x, label=:none, color=:black)
../_images/2022-02-09-projections_8_0.svg
  • Which inner product will be zero?

    • Which functions are even and odd?

Polynomial inner products

M[:,1]' * M[:,2]
-2.220446049250313e-16
M[:,1]' * M[:,3]
8.673469387755102
M[:,2]' * M[:,3]
-4.440892098500626e-16

Geometry of Linear Algebra

We’d like to develop intuition about transformations on vectors. We’ll start with a peanut-shaped cluster of points and see how they transform.

default(aspect_ratio=:equal)

function peanut()
    theta = LinRange(0, 2*pi, 50)
    r = 1 .+ .4*sin.(3*theta) + .6*sin.(2*theta)
    x = r .* cos.(theta)
    y = r .* sin.(theta)
    x, y
end
x, y = peanut()
scatter(x, y)
../_images/2022-02-09-projections_15_0.svg

We’ll group all these points into a \(2\times n\) matrix \(X\). Note that multiplication by any matrix \(A\) is applied to each column separately, i.e.,

\[ A \underbrace{\Bigg[ \mathbf x_1 \Bigg| \mathbf x_2 \Bigg| \dotsb \Bigg]}_X = \underbrace{\Bigg[ A \mathbf x_1 \Bigg| A \mathbf x_2 \Bigg| \dotsb \Bigg]}_{AX} \]
X = [x y]'
size(X)
(2, 50)

Inner products and projections

Consider the operation \(f(x) = v (v^T x)\) for some vector \(v\). We’ll apply this same operation to every point in the original cluster \(X\).

function tplot(X, Y)
    "Plot a transformation from X to Y"
    scatter(X[1,:], X[2,:], label="X")
    scatter!(Y[1,:], Y[2,:], label="Y")
end

v = [1, 0]
tplot(X, v * v' *  v * v' * X)
../_images/2022-02-09-projections_19_0.svg

Are the parentheses important? Why or why not?

\[v (v^T X) \overset?= v v^T X\]

Questions

v = [2, 0]

# What happens if v is not normalized?
# Discuss with your group and make a prediction before uncommenting and running the line below.
tplot(X, v * v' * X)
../_images/2022-02-09-projections_22_0.svg
# Vector transformations are "nice" if norm(v) = 1

theta = pi * .3
v = [cos(theta), sin(theta)]
@show norm(v)
tplot(X, v * v' * X)
norm(v) = 1.0
../_images/2022-02-09-projections_23_1.svg

Discuss

Discuss with your group what the vector \(v\) looks like in these diagrams.

  • What is the null space of each transformation?

  • What is the range of each transformation?

  • For each figure, what happens if you apply the transformation \(v v^T\) to the red points?

  • What about \(I - v v^T\)?

Givens Rotation

We can rotate the input using a \(2\times 2\) matrix, parametrized by \(\theta\).

function givens(theta)
    s = sin(theta)
    c = cos(theta)
    A = [c -s; s c]
    A
end

givens(0)
2×2 Matrix{Float64}:
 1.0  -0.0
 0.0   1.0
givens(π)
2×2 Matrix{Float64}:
 -1.0          -1.22465e-16
  1.22465e-16  -1.0
tplot(X, givens(.8) * X)
../_images/2022-02-09-projections_30_0.svg
  • What is the null space and range of the Givens matrix?

  • Is the Givens matrix orthogonal? What does that mean?

Reflection

Using a construct of the form \(I - \alpha v v^T\), create a reflection across the plane defined by unit normal vector \(v = [\cos\theta, \sin\theta]\). Try different values of \(\alpha\) and convince yourself of why it works or sketch a diagram for the projections \(v v^T\) and \(I - v v^T\) and decide how to modify it to make a reflection.

function reflect(theta)
    v = [cos(theta), sin(theta)]
    I - 2 * v * v'
end

tplot(X, reflect(pi/2) * X)
../_images/2022-02-09-projections_33_0.svg
using Test
@test mapslices(norm, X; dims=1)  mapslices(norm, reflect(0.3) * X; dims=1)
@test X  reflect(0.5) * reflect(0.5) * X
Test Passed
  Expression: X ≈ reflect(0.5) * reflect(0.5) * X
   Evaluated: [1.0 1.291607690975099 … 0.6919723366713914 0.9999999999999993; 0.0 0.16653437041080127 … -0.08921995295821092 -2.449293598294705e-16] ≈ [1.0 1.291607690975099 … 0.6919723366713914 0.9999999999999993; 0.0 0.16653437041080127 … -0.08921995295821092 -2.449293598294705e-16]
  • Where is the vector \(v\) on the figure above?

  • Does the reflection matrix change if you replace \( v(\theta)\) with \(v(\theta + \pi)\)? Why or why not?

  • What happens if you reflect twice?

  • What is the null space and range of the reflection matrix?

  • Is the reflection matrix orthogonal?