{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Projections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the start of the chapter, we considered the projection of one vector onto the direction of another, and how to use that projection to decompose the vector into two orthogonal components. We then considered the higher dimensional analogy of projecting a vector onto a subspace and, using that projection to decompose the vector into orthogonal components. In this section, we concentrate on these concepts, and consider projections as linear transformations which have applications beyond vector decomposition.\n", "\n", "A linear transformation $T:\\mathbb{R}^n \\to \\mathbb{R}^n$ is a **projection** if $T\\circ T = T$. The result of applying a projection once is the same as the result of applying it twice. We can understand the effect of a projection as the collapsing of a vector in $\\mathbb{R}^n$ onto a subspace $\\mathcal{V}$. Once a vector has been projected onto $\\mathcal{V}$, any further projection onto $\\mathcal{V}$ has no effect. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 1: Orthogonal projection in $\\mathbb{R}^2$\n", "\n", "We look first at a projection onto the $x_1$-axis in $\\mathbb{R}^2$. This transformation $T:\\mathbb{R}^2\\to\\mathbb{R}^2$ can be defined with the following formula.\n", "\n", "$$\n", "\\begin{equation}\n", "T\\left( \\left[ \\begin{array}{r} x \\\\ y \\end{array} \\right]\\right) =\n", "\\left[ \\begin{array}{r} x \\\\ 0 \\end{array} \\right]\n", "\\end{equation}\n", "$$\n", "\n", "This projection simply carries all vectors onto the $x_1$-axis based on their first entry." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import laguide as lag\n", "import matplotlib.pyplot as plt\n", "\n", "x=np.linspace(-6,6,100)\n", "\n", "fig, ax = plt.subplots()\n", "\n", "options = {\"head_width\":0.1, \"head_length\":0.2, \"length_includes_head\":True}\n", "\n", "ax.arrow(0,0,2,4,fc='b',ec='b',**options)\n", "ax.arrow(0,0,2,0,fc='r',ec='r',**options)\n", "ax.arrow(2,0,0,4,fc='r',ec='r',**options)\n", "\n", "ax.set_xlim(-4,4)\n", "ax.set_ylim(-2,6)\n", "ax.set_aspect('equal')\n", "ax.set_xticks(np.arange(-4,4,step = 1))\n", "ax.set_yticks(np.arange(-2,6,step = 1))\n", "\n", "ax.text(1.5,2,'$X$')\n", "ax.text(1.3,-0.8,'$T(X)$')\n", "ax.text(2.2,1.85,'$X - T(X)$')\n", "\n", "ax.axvline(color='k',linewidth = 1)\n", "ax.axhline(color='k',linewidth = 1)\n", "\n", "ax.grid(True,ls=':')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that if we decompose $X$ into the components $T(X)$ and $X - T(X)$, then $T(X)$ and $X - T(X)$ are orthogonal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 2 Nonorthogonal projection in $\\mathbb{R}^2$\n", "\n", "Now let's consider $T:\\mathbb{R}^2 \\to \\mathbb{R}^2$ defined by $T(X) = PX$ where $P$ is the following matrix.\n", "\n", "$$\n", "\\begin{equation}\n", "\\left[\\begin{array}{rr} 3/2 & -3/2 \\\\ 1/2 & -1/2 \\end{array}\\right]\n", "\\end{equation}\n", "$$\n", "\n", "To verify that $T$ is indeed a projection, we need to check that $P^2X = PX$ for every $X$ in $\\mathbb{R}^2$. This will be true if $P^2=P$." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1.5 -1.5]\n", " [ 0.5 -0.5]]\n" ] } ], "source": [ "P = np.array([[1.5, -1.5],[0.5, -0.5]])\n", "print(P@P)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we know $T$ is a projection, let's consider the effect of $T$ a bit more carefully. We observe that the second column is a multiple of the first. This means that $\\mathcal{C}(P)$ is one-dimensional. Since $P^2=P$, we \n", "know that any vector $X$ in the column space will be unchanged when multiplied by $P$.\n", "\n", "\n", "$$\n", "\\begin{equation}\n", "PX = \\left[\\begin{array}{rr} 3/2 & -3/2 \\\\ 1/2 & -1/2 \\end{array}\\right]\n", "\\left[\\begin{array}{r} 3k \\\\ k \\end{array}\\right] =\n", "\\left[\\begin{array}{r} 3k \\\\ k \\end{array}\\right] = X\n", "\\end{equation}\n", "$$\n", "\n", "Next, let's observe the effect of $T$ on a vector $X$ that is not in $\\mathcal{C}(P)$\n", "\n", "$$\n", "\\begin{equation}\n", "PX = \\left[\\begin{array}{rr} 3/2 & -3/2 \\\\ 1/2 & -1/2 \\end{array}\\right]\n", "\\left[\\begin{array}{r} 2 \\\\ 4 \\end{array}\\right] =\n", "\\left[\\begin{array}{r} -3 \\\\ -1 \\end{array}\\right] \n", "\\end{equation}\n", "$$" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-3.]\n", " [-1.]]\n" ] } ], "source": [ "X = np.array([[2],[4]])\n", "print(P@X)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "ax.arrow(0,0,2,4,fc='b',ec='b',**options)\n", "ax.arrow(0,0,-3,-1,fc='r',ec='r',**options)\n", "ax.plot(x,x/3,ls=':')\n", "\n", "ax.set_xlim(-4,4)\n", "ax.set_ylim(-2,6)\n", "ax.set_aspect('equal')\n", "ax.set_xticks(np.arange(-4,4,step = 1))\n", "ax.set_yticks(np.arange(-2,6,step = 1))\n", "\n", "ax.text(1.5,2,'$X$')\n", "ax.text(-1.2,-1,'$PX$')\n", "ax.text(3,1.6,'$\\mathcal{C}(P)$')\n", "\n", "ax.axvline(color='k',linewidth = 1)\n", "ax.axhline(color='k',linewidth = 1)\n", "\n", "ax.grid(True,ls=':')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see of course that $PX$ is in $\\mathcal{C}(P)$, but in contrast to the projection in the previous example, this projections is not orthogonal. If we decompose $X$ into components $PX$ and $X-PX$, we see that these components are not orthogonal." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-8.0\n" ] } ], "source": [ "V = P@X\n", "E = X-V\n", "print(lag.DotProduct(V,E))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "ax.arrow(0,0,2,4,fc='b',ec='b',**options)\n", "ax.arrow(-3,-1,5,5,fc='r',ec='r',**options)\n", "ax.arrow(0,0,-3,-1,fc='r',ec='r',**options)\n", "ax.plot(x,x/3,ls=':')\n", "\n", "ax.set_xlim(-4,4)\n", "ax.set_ylim(-2,6)\n", "ax.set_aspect('equal')\n", "ax.set_xticks(np.arange(-4,4,step = 1))\n", "ax.set_yticks(np.arange(-2,6,step = 1))\n", "\n", "ax.text(1.5,2,'$X$')\n", "ax.text(-1.2,-1,'$PX$')\n", "ax.text(-1.5,2,'$X-PX$')\n", "ax.text(3,1.6,'$\\mathcal{C}(P)$')\n", "\n", "ax.axvline(color='k',linewidth = 1)\n", "ax.axhline(color='k',linewidth = 1)\n", "\n", "ax.grid(True,ls=':')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The transformation is projecting onto $\\mathcal{C}(P)$, but *not in the orthogonal direction*. To reveal the direction of the projection, we look at $\\mathcal{N}(P)$. \n", "\n", "$$\n", "\\begin{equation}\n", "\\mathcal{N}(P) = \\textrm{Span of} \\left\\{ \\left[ \\begin{array}{r} 1 \\\\ 1 \\end{array} \\right]\\right\\}\n", "\\end{equation}\n", "$$\n", "\n", "Any vector in $\\mathcal{N}(P)$ is projected to the zero vector. The key point is that $PX-X$ must be in $\\mathcal{N}(P)$ precisely because $P$ represents a projection and $P^2=P$.\n", "\n", "$$\n", "\\begin{equation}\n", "P(PX-X) = P^2X - PX = PX - PX = 0 \n", "\\end{equation}\n", "$$\n", "\n", "In general, projections take all vectors onto one subspace, in the direction of another subspace." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Orthogonal projections\n", "\n", "Having observed that projections can be carried out in an arbitrary direction, we now focus attention on how to define a matrix $P$ that carries out an **orthogonal projection** onto a subspace $\\mathcal{V}$ of $\\mathbb{R}^n$. That is, for a vector $B$ in $\\mathbb{R}^n$, we want the projection matrix $P$ such that $\\hat{B} = PB$ is in $\\mathcal{V}$ and $E = B-\\hat{B}$ to be orthogonal to $\\mathcal{V}$. In fact, we have already seen the necessary calculations for these projections.\n", "\n", "In the simplest example, $\\mathcal{V}$ is one-dimensional with basis $\\{V\\}$, with $V$ a vector of unit length. In our discussion of [orthogonalization](Orthogonalization.ipynb) we worked out the following formula.\n", "\n", "$$ \n", "\\begin{equation}\n", "\\hat{B} = \\left(\\frac{B\\cdot V}{V\\cdot V}\\right){V}\n", "\\end{equation}\n", "$$\n", "\n", "Since $V$ is a unit vector, we can use $V\\cdot V=1$. We can also manipulate this order of the factors since $B\\cdot V = V\\cdot B$, and the order that we multiply the scalar and vector does not affect the result. \n", "\n", "$$ \n", "\\begin{equation}\n", "\\hat{B} = V \\left(V\\cdot B \\right) \n", "\\end{equation}\n", "$$\n", "\n", "In order to understand this as a matrix-vector multiplication, we can rewrite it using matrix multiplication for the dot products, and the associative property of matrix multiplication.\n", "\n", "$$ \n", "\\begin{equation}\n", "\\hat{B} = V \\left(V^TB \\right) = (VV^T)B \n", "\\end{equation}\n", "$$\n", "\n", "The result is that if $V$ is a unit vector, the matrix $P = VV^T$ orthogonally projects $B$ onto $\\mathcal{V}$.\n", "\n", "In the most general case, $\\mathcal{V}$ is a $m$-dimensional subspace of $\\mathbb{R}^n$ with basis $\\{V_1, V_2,..., V_m\\}$. This scenario was treated in the previous section on least squares solutions. If $A$ is a matrix with the $V_i$ as columns, and $B$ is a vector that is not in $\\mathcal{C}(A)$, we found that we can solve the normal equations $A^TAX=A^TB$ in order to find a vector $\\hat{X}$ such that $A\\hat{X} = \\hat{B}$ and $\\hat{B}$ is the orthogonal projection of $B$ onto $\\mathcal{C}(A)$. If we now want to focus on the projection of $B$, we can write $\\hat{B} = PB$ where $P = A(A^TA)^{-1}A^T$ is the projection matrix.\n", "\n", "In the case that we have an orthonormal basis, projection onto a subspace is quite a bit simpler. If $\\{U_1, U_2,..., U_m\\}$ is an orthonormal basis for an $m$-dimensional subspace $\\mathcal{V}$, $\\hat{B}$ can be written in expressed in terms of the basis vectors, with coordinates computed using dot products.\n", "\n", "$$\n", "\\begin{equation}\n", "\\hat{B} = (B\\cdot U_1)U_1 + (B\\cdot U_2)U_2 + ... + (B\\cdot U_m)U_m\n", "\\end{equation}\n", "$$\n", "\n", "As we did in the 1-dimensional case, we can use the properties of dot products and matrix multiplications to rewrite this as $\\hat{B} = PB$ for some projection matrix $P$.\n", "\n", "$$\n", "\\begin{eqnarray*}\n", "\\hat{B} & = & U_1(U_1\\cdot B) + U_2(U_2\\cdot B) + ... + U_m(U_m\\cdot B) \\\\\n", "& = & U_1(U_1^TB) + U_2(U_2^TB) + ... + U_m(U_m^TB) \\\\\n", "& = & (U_1U_1^T)B + (U_2U_2^T)B + ... + (U_mU_m^T)B \\\\\n", "& = & (U_1U_1^T + U_2U_2^T + ... + U_mU_m^T)B \n", "\\end{eqnarray*}\n", "$$\n", "\n", "Each of the matrices $U_i^TU_i$ projects $B$ onto the direction of $U_i$. The sum of all of the individual projections gives us $\\hat{B}$, and the sum of all the projection matrices gives us $P = U_1U_1^T + U_2U_2^T + ... + U_mU_m^T$. \n", "\n", "We can also realize that the formula $P = A(A^TA)^{-1}A^T$ for the general case still applies. Let's take $Q$ to be the matrix with $U_i$ as columns. Since $Q$ is an orthogonal matrix, $Q^TQ= I$, and $P = Q(Q^TQ)^{-1}Q^T = QQ^T$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1:** Let $\\mathcal{U}$ be the subspace of $\\mathbb{R}^3$ spanned by $\\{X_1,X_2\\}$ where $X_1$ and $X_2$ are given below. Find a matrix $P$ such that $PX = B$ where $B$ is the orthogonal projection of $X$ onto $\\mathcal{U}$. Verify your answer.\n", "\n", "\n", "$$\n", "\\begin{equation}\n", "X_1 = \\left[\\begin{array}{r} 1 \\\\ 1 \\\\ 2 \\end{array}\\right] \\hspace{1cm}\n", "X_2 = \\left[\\begin{array}{r} 2 \\\\ 0 \\\\ -1 \\end{array}\\right]\n", "\\end{equation}\n", "$$\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "## Code solution here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2:** Let $\\mathcal{W}$ be a subspace of $\\mathbb{R}^4$ with $\\dim{\\mathcal{W}}=2$. What will be the dimensions of a matrix $P$ that projects vectors orthogonally onto $\\mathcal{W}$? Will the dimensions of $P$ change if $\\dim{\\mathcal{W}}=3$?" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "## Code solution here " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3:** \n", "\n", "$(a)$ Let $\\mathcal{U} = \\{[x_1\\, x_2\\, x_3, x_4]^T : x_1 + 3x_2 + x_3 -2x_4 = 0 \\}$. Find the matrix $P$ that projects vectors orthogonally onto $\\mathcal{U}$.\n", "\n", "$(b)$ Demonstrate that your matrix is a projection matrix by showing that $P^2 = P$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "## Code solution here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 4:** \n", "\n", "($a$) Let $\\mathcal{V} = \\{[x_1\\, x_2\\, x_3]^T : x_1 + x_2 + x_3 = 0 \\}$. Find the matrix $P$ that projects vectors orthogonally onto $\\mathcal{V}$ by two different methods. \n", "\n", "$(b)$ Demonstrate that your matrix is a projection matrix by showing that $P^2 = P$." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "## Code solution here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 5:** \n", "\n", "$(a)$ Find the matrix $P_1$ that projects orthogonally onto the subspace spanned by $\\begin{equation}\n", "\\left\\{ \\left[ \\begin{array}{r} 2 \\\\ 1 \\end{array} \\right]\\right\\}\n", "\\end{equation}$.\n", "\n", "$(b)$ Find the matrix $P_2$ that projects orthogonally onto the subspace spanned by $\\begin{equation}\n", "\\left\\{ \\left[ \\begin{array}{r} -1 \\\\ 4 \\end{array} \\right]\\right\\}\n", "\\end{equation}$.\n", "\n", "$(c)$ Is the product $P_1P_2$ also an orthogonal projection?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "## Code solution here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 6:** Let $\\mathcal{U}$ be the subspace spanned by $\\begin{equation} \\left\\{ \\left[ \\begin{array}{r} 0 \\\\ 1 \\\\ 0 \\end{array} \\right]\\right\\} \\end{equation}$ and $\\mathcal{W}$ be the subspace spanned by $\\begin{equation} \\left\\{ \\left[ \\begin{array}{r} 2 \\\\ 1 \\\\ 1 \\end{array} \\right] \\hspace{0.1cm} , \\hspace{0.1cm} \\left[ \\begin{array}{r} 0 \\\\ 1 \\\\ 1 \\end{array} \\right]\\right\\} \\end{equation}$\n", "\n", "$(a)$ Find a matrix $P$ so that $PX$ is the projection of $X$ onto $\\mathcal{U}$ along $\\mathcal{W}$.\n", "\n", "$(b)$ Check that $P^2 = P$\n", "\n", "$(c)$ Check that $PX$ is in $\\mathcal{U}$ for any $X \\in \\mathbb{R}^3$.\n", "\n", "$(d)$ Check that $PW = 0$ for any $W \\in \\mathcal{W}$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "## Code solution here." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }