{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "hide_input": true, "slideshow": { "slide_type": "skip" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# for QR codes use inline\n", "%matplotlib inline\n", "qr_setting = 'url'\n", "#\n", "# for lecture use notebook\n", "# %matplotlib notebook\n", "# qr_setting = None\n", "#\n", "%config InlineBackend.figure_format='retina'\n", "# import libraries\n", "import numpy as np\n", "import matplotlib as mp\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import laUtilities as ut\n", "import slideUtilities as sl\n", "import demoUtilities as dm\n", "import pandas as pd\n", "from importlib import reload\n", "from datetime import datetime\n", "from IPython.display import Image\n", "from IPython.display import display_html\n", "from IPython.display import display\n", "from IPython.display import Math\n", "from IPython.display import Latex\n", "from IPython.display import HTML;" ] }, { "cell_type": "markdown", "metadata": { "internals": { "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# The Inverse of a Matrix" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide_input": true, "internals": { "frag_helper": "fragment_end", "frag_number": 68 }, "slideshow": { "slide_type": "-" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(\"images/L10 F1.png\"))" ] }, { "cell_type": "markdown", "metadata": { "hide_input": false, "internals": { "frag_number": 3 }, "slideshow": { "slide_type": "slide" } }, "source": [ "Today we investigate the idea of the \"reciprocal\" of a matrix." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 4 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "For reasons that will become clear, we will think about this way:\n", " \n", "The reciprocal of any nonzero number $r$ is its multiplicative inverse.\n", "\n", "That is, $1/r = r^{-1}$ such that $r \\cdot r^{-1} = 1.$\n", "\n", "This gives a way to define what is called the inverse of a matrix." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 5 }, "slideshow": { "slide_type": "slide" } }, "source": [ "Importantly: we have to recognize that this inverse does not exist for all matrices.\n", "\n", "* It only exists for square matrices\n", "* And not even for all square matrices -- only those that are \"invertible.\"" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 6 }, "slideshow": { "slide_type": "slide" } }, "source": [ "__Definition.__ An $n\\times n$ matrix $A$ is called __invertible__ if there exists an $n\\times n$ matrix $C$ such that\n", "\n", "$$ AC = I \\;\\;\\text{ and }\\;\\; CA = I. $$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 7 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "In that case $C$ is called the _inverse_ of $A$. " ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 7 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Clearly, $C$ must also be square and the same size as $A$.\n", "\n", "The inverse of $A$ is denoted $A^{-1}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "A matrix that is not invertible is called a __singular__ matrix.\n", "\n", "A strange term, but you just have to memorize and get used to it." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "__Example.__\n", "\n", "If $A = \\left[\\begin{array}{rr}2&5\\\\-3&-7\\end{array}\\right]$ and $C = \\left[\\begin{array}{rr}-7&-5\\\\3&2\\end{array}\\right]$, then:" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "$$ AC = \\left[\\begin{array}{rr}2&5\\\\-3&-7\\end{array}\\right]\\left[\\begin{array}{rr}-7&-5\\\\3&2\\end{array}\\right] = \\left[\\begin{array}{rr}1&0\\\\0&1\\end{array}\\right],$$\n", "\n", "and:\n", "\n", "$$ CA = \\left[\\begin{array}{rr}-7&-5\\\\3&2\\end{array}\\right]\\left[\\begin{array}{rr}2&5\\\\-3&-7\\end{array}\\right] = \\left[\\begin{array}{rr}1&0\\\\0&1\\end{array}\\right],$$\n", "\n", "so we conclude that $C = A^{-1}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "Let's think about what a matrix inverse does in a linear equation." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 11 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Take a standard linear equation:\n", "\n", "$$ A{\\bf x} = {\\bf b}. $$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 11 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Then:\n", "\n", "$$A^{-1}(A{\\bf x}) = A^{-1}{\\bf b}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 12 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$$(A^{-1}A){\\bf x} = A^{-1}{\\bf b}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 13 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$$I{\\bf x} = A^{-1}{\\bf b}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 14 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$${\\bf x} = A^{-1}{\\bf b}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 15 }, "slideshow": { "slide_type": "slide" } }, "source": [ "__Theorem.__ If $A$ is an invertible $n\\times n$ matrix, then for each ${\\bf b}$ in $\\mathbb{R}^n,$ the equation $A{\\bf x} = {\\bf b}$ has the unique solution $A^{-1}{\\bf b}.$\n", "\n", "__Proof.__ Follows directly from the definition of $A^{-1}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 16 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "This very simple, powerful theorem gives us a new way to solve a linear system." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 17, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "Furthermore, this theorem connects the matrix inverse to certain kinds of linear systems. \n", "\n", "We know that not all linear systems of $n$ equations in $n$ variables have a unique solution. \n", "\n", "Such systems may have no solutions (inconsistent) or an infinite number of solutions. \n", "\n", "But this theorem says that __if $A$ is invertible, then the system has a unique solution.__" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 17, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Computing the Matrix Inverse" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 17 }, "slideshow": { "slide_type": "-" } }, "source": [ "Wonderful - so to solve a linear system, we simply need to compute the inverse of $A$ (if it exists)! \n", "\n", "Well ... how do we do that?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The $2\\times 2$ case" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "Before answering this question for arbitrary matices, I will answer it for the special case of $2 \\times 2$ matrices." ] }, { "cell_type": "markdown", "metadata": { "cell_style": "center", "internals": { "frag_helper": "fragment_end", "frag_number": 20 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "__Theorem.__ Let $A$ = $\\left[\\begin{array}{rr}a&b\\\\c&d\\end{array}\\right].$ \n", "\n", "* If $ad-bc \\neq 0$, then $A$ is invertible and $A^{-1} = \\frac{1}{ad-bc}\\left[\\begin{array}{rr}d&-b\\\\-c&a\\end{array}\\right].$\n", "\n", "* If $ad-bc = 0$, then $A$ is not invertible." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 21 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Notice that this theorem tells us, for $2\\times 2$ matrices, exactly _which ones_ are invertible.\n", "\n", "Namely: those which have $ad-bc \\neq 0$. \n", "\n", "Of course, we recognize the quantity $ad-bc$! \n", "\n", "It is the __determinant__ of $A$." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 22 }, "slideshow": { "slide_type": "slide" } }, "source": [ "__Example.__ Given a $2\\times 2$ matrix $A$, if the columns of $A$ are linearly dependent, is $A$ invertible?" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 23 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "__Solution.__ If the columns of $A$ are linearly dependent, then at least one of the columns is a multiple of the other. \n", "\n", "Let the multiplier be $m.$\n", "\n", "Then we can express $A$ as:\n", "$\\left[\\begin{array}{rr}a&ma\\\\b&mb\\end{array}\\right].$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 24, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "The determinant of $A$ is $a(mb) - b(ma) = 0.$ \n", "\n", "So a $2\\times 2$ matrix with linearly dependent columns is __not invertible.__" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [ "remove-cell" ] }, "source": [ "``` {toggle}\n", "Question 10.1\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Matrices larger than $2 \\times 2$." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 24, "slide_type": "subslide" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "OK, now let's look at a general method for computing the inverse of $A$." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 26 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Recall our definition of matrix multiplication: $AB$ is the matrix formed by multiplying $A$ times each column of $B$.\n", "\n", "$$ AB = [A{\\bf b_1} \\; \\dots \\; A{\\bf b_n}]. $$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 27 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Let's look at the equation\n", "\n", "$$AA^{-1} = I.$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 28 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Let's call the columns of $A^{-1}$ = $[{\\bf x_1}, {\\bf x_2}, \\dots, {\\bf x_n}].$ \n", "\n", "We know what the columns of $I$ are: $[{\\bf e_1}, {\\bf e_2}, \\dots, {\\bf e_n}].$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 29 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "So: \n", "\n", "$$ AA^{-1} = A[{\\bf x_1}, {\\bf x_2}, \\dots, {\\bf x_n}] = [{\\bf e_1}, {\\bf e_2}, \\dots, {\\bf e_n}].$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Notice that we can break this up into $n$ separate problems:\n", " \n", "$$ A{\\bf x_1} = {\\bf e_1} $$\n", "$$ A{\\bf x_2} = {\\bf e_2} $$\n", "$$ \\vdots $$\n", "$$ A{\\bf x_n} = {\\bf e_n} $$\n", "\n", "(This is a common trick ... make sure you understand why it works!)" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 30 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "So here is a general way to compute the inverse of $A$:\n", "\n", "* Solve the linear system $A{\\bf x_1} = {\\bf e_1}$ to get the first column of $A^{-1}.$\n", "* Solve the linear system $A{\\bf x_2} = {\\bf e_2}$ to get the second column of $A^{-1}.$\n", "* $\\dots$\n", "* Solve the linear system $A{\\bf x_n} = {\\bf e_n}$ to get the last column of $A^{-1}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 31, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "If any of the systems are inconsistent or has an infinite solution set, then $A^{-1}$ does not exist." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "In fact, the above procedure is equivalent to the following:\n", " \n", "1. Construct the $n \\times 2n$ matrix $B = [A \\;I]$\n", "2. Find the $C$ = the reduced echelon form of $B$\n", "3. In the resulting matrix $C$:\n", " * if the columns on the left half are $I$, then\n", " * the columns in the right half of $C$ will be $A^{-1}$.\n", " * Otherwise, $A$ is not invertible." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "__The operation count of Matrix Inversion.__\n", "\n", "Thus, when we perform Matrix Inversion on an $n\\times n$ matrix, we are row reducing a $n\\times 2n$ matrix.\n", "\n", "This increased size results in the operation count of matrix inversion being $\\sim 2n^3.$\n", "\n", "(To see a derivation of this, check the lecture notes.)\n", "\n", "This fact will be important!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ ":::{admonition} Optional Material\n", "\n", "Here is more detail on the operation count of Matrix Inversion. \n", "\n", "To do Matrix inversion, we perform row reduction on $[A I]$ to obtain $[I A^{-1}]$ as just described.   Since $[A I]$ is $n\\times 2n$, the forward elimination step is $\\sim\\frac{5}{3}n^3$ and the backsubstitution step is $\\sim\\frac{1}{3}n^3$.  \n", "\n", "In more detail:\n", "\n", "If you go back to the derivation of the cost of Gaussian Elimination in Lecture 3, you need to extend the diagram.  It is no longer $n\\times(n+1)$ but now is $n\\times 2n$.  Then for the forward elimination phase of matrix inversion, you get:\n", "\n", "$$ 2\\sum_{k=1}^n (k-1)(k+n) = 2\\sum_{k=1}^n k^2 + (n-1)k - n$$\n", "\n", "flops.\n", "\n", "If you expand this out, and use standard formulas for sums (eg, see https://brilliant.org/wiki/sum-of-n-n2-or-n3/), you will get the high order term of $\\sim\\frac{5}{3}n^3.$\n", "\n", "Now, for the back substitution phase, at the start you have a matrix that is $[U L]$ where $U$ is upper triangular and $L$ is lower triangular.  To backsubstitute row $k$ in this matrix, you need \n", "\n", "$$2 \\sum_{i=1}^{k} i = 2\\frac{(k-1)k}{2}$$ \n", "\n", "flops.   So the total for back substitution is\n", "\n", "$$ \\sum_{k=1}^n k^2 - k $$ \n", "\n", "whose highest order term is $\\frac{1}{3}n^3$.  \n", "\n", "So the total operation count of Matrix Inversion is\n", "\n", "$$\\sim \\frac{5}{3}n^3 + \\frac{1}{3}n^3 =  2n^3$$\n", "\n", "\n", ":::" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Computational View" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 31, "slide_type": "subslide" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "This general strategy leads to an algorithm for inverting any matrix. \n", "\n", "However, in this course I will not ask you invert matrices larger than $2\\times 2$ by hand. \n", "\n", "Any time you need to invert a matrix larger than $2\\times 2,$ you may use a calculator or computer." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 33 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "To invert a matrix in `Python/numpy,` use the function `np.linalg.inv().` For example:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 34 }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A =\n", " [[ 2. 5.]\n", " [-3. -7.]]\n", "B = \n", " [[-7. -5.]\n", " [ 3. 2.]]\n" ] } ], "source": [ "import numpy as np\n", "A = np.array(\n", " [[ 2.0, 5.0],\n", " [-3.0,-7.0]])\n", "print('A =\\n',A)\n", "B = np.linalg.inv(A)\n", "print('B = \\n',B)" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 35 }, "slideshow": { "slide_type": "slide" } }, "source": [ "What do you think happens if you call `np.linalg.inv()` on a matrix that is not invertible?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hide_input": true, "internals": { "frag_helper": "fragment_end", "frag_number": 36 }, "slideshow": { "slide_type": "fragment" }, "tags": [ "raises-exception" ] }, "outputs": [ { "ename": "LinAlgError", "evalue": "Singular matrix", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[4], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m A \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([[\u001b[38;5;241m2.\u001b[39m,\u001b[38;5;241m4.\u001b[39m],[\u001b[38;5;241m2.\u001b[39m,\u001b[38;5;241m4.\u001b[39m]])\n\u001b[0;32m----> 2\u001b[0m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlinalg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mA\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/anaconda3/envs/CS132-legacy/lib/python3.9/site-packages/numpy/linalg/linalg.py:561\u001b[0m, in \u001b[0;36minv\u001b[0;34m(a)\u001b[0m\n\u001b[1;32m 559\u001b[0m signature \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mD->D\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m isComplexType(t) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124md->d\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 560\u001b[0m extobj \u001b[38;5;241m=\u001b[39m get_linalg_error_extobj(_raise_linalgerror_singular)\n\u001b[0;32m--> 561\u001b[0m ainv \u001b[38;5;241m=\u001b[39m \u001b[43m_umath_linalg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minv\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msignature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msignature\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextobj\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextobj\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m wrap(ainv\u001b[38;5;241m.\u001b[39mastype(result_t, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m))\n", "File \u001b[0;32m~/anaconda3/envs/CS132-legacy/lib/python3.9/site-packages/numpy/linalg/linalg.py:112\u001b[0m, in \u001b[0;36m_raise_linalgerror_singular\u001b[0;34m(err, flag)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_raise_linalgerror_singular\u001b[39m(err, flag):\n\u001b[0;32m--> 112\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LinAlgError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSingular matrix\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[0;31mLinAlgError\u001b[0m: Singular matrix" ] } ], "source": [ "A = np.array([[2.,4.],[2.,4.]])\n", "np.linalg.inv(A)" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 37 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The right way to handle this is:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hide_input": false, "internals": { "frag_helper": "fragment_end", "frag_number": 37, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Oops, looks like A is singular!\n" ] } ], "source": [ "A = np.array([[2.,4.],[2.,4.]])\n", "try:\n", " np.linalg.inv(A)\n", "except np.linalg.LinAlgError:\n", " print('Oops, looks like A is singular!')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Using the Matrix Inverse to Solve a Linear System" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 37, "slide_type": "subslide" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Solve the system:\n", "\n", "$$\\begin{array}{rcl}\n", "3x_1 +4x_2 &=& 3\\\\\n", "5x_1 +6x_2 &=& 7\n", "\\end{array}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 40 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Rewrite this system as $A{\\bf x} = {\\bf b}:$\n", "\n", "$$ \\left[\\begin{array}{rr}3&4\\\\5&6\\end{array}\\right] {\\bf x} = \\left[\\begin{array}{r}3\\\\7\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 41 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The determinant of $A$ is $3(6)-4(5) = -2,$ which is nonzero, so $A$ has an inverse. \n", "\n", "According to our $2\\times 2$ formula, the inverse of $A$ is:\n", "\n", "$$ A^{-1} = \\frac{1}{-2}\\left[\\begin{array}{rr}6&-4\\\\-5&3\\end{array}\\right] = \\left[\\begin{array}{rr}-3&2\\\\5/2&-3/2\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 42, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "So the solution is:\n", "\n", "$$ {\\bf x} = A^{-1}{\\bf b} = \\left[\\begin{array}{rr}-3&2\\\\5/2&-3/2\\end{array}\\right]\\left[\\begin{array}{r}3\\\\7\\end{array}\\right] = \\left[\\begin{array}{r}5\\\\-3\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Algebra of Matrix Inverses" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 42, "slide_type": "subslide" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "__Theorem.__\n", "\n", "* If $A$ is an invertible matrix, then $A^{-1}$ is invertible, and\n", "\n", "$$(A^{-1})^{-1} = A.$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 44 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* If $A$ is an invertible matrix, then so is $A^T,$ and the inverse of $A^T$ is the transpose of $A^{-1}.$\n", "\n", "$$(A^T)^{-1} = (A^{-1})^T.$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 45 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* If $A$ and $B$ are $n\\times n$ invertible matrices, then so is $AB,$ and the inverse of $AB$ is the product of the inverses of $A$ and $B$ in the reverse order. \n", "\n", "$$(AB)^{-1} = B^{-1}A^{-1}.$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 46 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The first two are straightforward. Let's verify the last one because it shows some common calculation patterns:\n", "\n", "$$(AB)(B^{-1}A^{-1})$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 47 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$$=A(BB^{-1})A^{-1}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 48 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$$=AIA^{-1}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 49 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$$=AA^{-1}$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 50, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "$$=I.$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 50, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## The Invertible Matrix Theorem" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 50 }, "slideshow": { "slide_type": "-" } }, "source": [ "Earlier we saw that if a matrix $A$ is invertible, then $A{\\bf x} = {\\bf b}$ has a unique solution for any ${\\bf b}$.\n", "\n", "This suggests a deep connection between the invertibility of $A$ and the nature of the linear system $A{\\bf x} = {\\bf b}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 50 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "In fact, we are now at the point where we can collect together in a fairly complete way much of what we have learned about matrices and linear systems. \n", "\n", "This remarkable collection of ten interrelated properties is called the __Invertible Matrix Theorem (IMT).__" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 53 }, "slideshow": { "slide_type": "slide" } }, "source": [ "__Invertible Matrix Theorem.__ Let $A$ by a square $n\\times n$ matrix. \n", "\n", "Then the following statements are equivalent; that is, they are either __all true__ or __all false__:" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 54 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* $A$ is an invertible matrix." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 55 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* $A^T$ is an invertible matrix.\n", " * Proof by direct construction: $(A^T)^{-1} = (A^{-1})^T.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 56 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* The equation $A{\\bf x} = {\\bf b}$ has a unique solution for each ${\\bf b}$ in $\\mathbb{R}^n.$\n", " * As already mentioned, we proved this above." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 57 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* A is row equivalent to the identity matrix.\n", " * If $A{\\bf x} = {\\bf b}$ has a unique solution for any ${\\bf b},$ then the reduced row echelon form of $A$ is $I$." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 58 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* A has $n$ pivot positions.\n", " * Follows directly from the previous statement." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 59 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* The equation $A{\\bf x} = {\\bf 0}$ has only the trivial solution.\n", " * If $A{\\bf x} = {\\bf b}$ has a unique solution for any ${\\bf b},$ then the unique solution for ${\\bf b} = {\\bf 0}$ must be ${\\bf 0.}$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 60 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* The columns of $A$ form a linearly independent set.\n", " * Follows directly the previous statement and the definition of linear independence." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 61 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* The columns of $A$ span $\\mathbb{R}^n.$\n", " * For any ${\\bf b} \\in \\mathbb{R}^n,$ there is a set of coefficients ${\\bf x}$ which can be used to construct ${\\bf b}$ from the columns of $A.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 62 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* The linear transformation ${\\bf x} \\mapsto A{\\bf x}$ maps $\\mathbb{R}^n$ onto $\\mathbb{R}^n.$\n", " * Follows directly from the previous statement." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 63 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* The linear transformation ${\\bf x} \\mapsto A{\\bf x}$ is one-to-one.\n", " * Follows directly from the fact that $A{\\bf x} = {\\bf b}$ has a unique solution for any ${\\bf b}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 64 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The arguments above show that if $A$ is invertible, then all the other statements are true. \n", "\n", "In fact, the converse holds as well: if $A$ is not invertible, then all the other statements are false. \n", "\n", "(We will skip the proof of the converse, but it's not difficult.)" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 65 }, "slideshow": { "slide_type": "slide" } }, "source": [ "This theorem has wide-ranging implications. \n", "\n", "It divides the set of all $n\\times n$ matrices into two disjoint classes: \n", "1. the invertible (nonsingular) matrices, and \n", "2. the noninvertible (singular) matrices." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 66 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The power of the IMT lies in the conections it provides among so many important concepts.\n", "\n", "For example, notice how it connects linear independence of the columns of a matrix $A$ to the existence of solutions to equations of the form $A{\\bf x} = {\\bf b}.$\n", "\n", "This allows us to bring many tools to bear as needed to solve a problem." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 67 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "__Example.__ \n", "\n", "Decide if $A$ is invertible:\n", "\n", "$$A = \\left[\\begin{array}{rrr}1&0&-2\\\\3&1&-2\\\\-5&-1&9\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 67 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "__Solution.__\n", "\n", "$$A \\sim \\left[\\begin{array}{rrr}1&0&-2\\\\0&1&4\\\\0&-1&-1\\end{array}\\right] \\sim \\left[\\begin{array}{rrr}1&0&-2\\\\0&1&4\\\\0&0&3\\end{array}\\right].$$\n", "\n", "$A$ has three pivot positions and hence is invertible, by the IMT." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "__Example.__\n", "\n", "Decide if $A\\mathbf{x} = \\mathbf{b}$ has a solution for all $\\mathbf{b}$:\n", " \n", "$$ A = \\left[\\begin{array}{rr}3 & 7\\\\-6 & -14\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "__Solution.__\n", "\n", "The determinant of $A$ is $(3 \\cdot -14) - (7 \\cdot -6) = 0$.\n", "\n", "So $A$ is not invertible, so $A\\mathbf{x} = \\mathbf{b}$ does __not__ have a solution for all $\\mathbf{b}$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [ "remove-cell" ] }, "source": [ "``` {toggle}\n", "Question 10.2\n", "```" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 68, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "__Note.__ \n", "\n", "Keep in mind: while the IMT is quite powerful, it does not completely settle issues that arise with respect to $A{\\bf x} = {\\bf b}.$ \n", "\n", "This is because __it only applies to square matrices.__\n", "\n", "So if $A$ is nonsquare, then we can't use the IMT to conclude anything about the existence or nonexistence of solutions to $A{\\bf x} = {\\bf b}.$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 68, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Invertible Linear Transformations" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide_input": true, "internals": { "frag_helper": "fragment_end", "frag_number": 68 }, "slideshow": { "slide_type": "-" }, "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(\"images/L10 F1.png\"))" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 71 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "A linear transformation $T: \\mathbb{R}^n \\rightarrow \\mathbb{R}^n$ is __invertible__ if there exists a function $S: \\mathbb{R}^n \\rightarrow \\mathbb{R}^n$ such that\n", "\n", "$$ S(T({\\bf x})) = {\\bf x}\\;\\;\\;\\mbox{for all}\\;{\\bf x}\\in\\mathbb{R}^n,$$\n", "\n", "and\n", "\n", "$$ T(S({\\bf x})) = {\\bf x}\\;\\;\\;\\mbox{for all}\\;{\\bf x}\\in\\mathbb{R}^n.$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 72, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "__Theorem.__ \n", "\n", "Let $T: \\mathbb{R}^n \\rightarrow \\mathbb{R}^n$ be a linear transformation and let $A$ be the standard matrix for $T$. \n", "\n", "Then $T$ is invertible if and only if $A$ is an invertible matrix. \n", "\n", "In that case the linear transformation $S$ given by $S({\\bf x}) = A^{-1}{\\bf x}$ is the unique function satisfying the definition." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 72, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "Let's look at some invertible and non-invertible linear transformations." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 74 }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.5 0. ]\n", " [0. 1. ]]\n" ] }, { "data": { "text/latex": [ "Horizontal Contraction" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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0qTsueeeueOOO5o9Cv3Iy2fybL/99jn++ONzyCGHZIcddsj69evzwx/+MBdddFHa2tpy7bXXpr29Pf/yL//S5InpqyZNmpTDDjss++23XyZNmpTx48eno6Mjra2tufHGG/Otb30ry5Yty3vf+97Mmzcv++yzT4/M0SffCU+S9evXZ+DAga/7+GOPPZb99tsvK1asyLhx47JkyZI3XB9+1znnnJMxY8bkYx/7WEaNGvV7j69fvz4nnXRSZs+enSQ5//zz8+lPf7p6TPqByy+/PCNHjsyUKVOy6667Jkl22mmnPPHEE94JZ4NePpNi4MCBWb9+fZJk0aJFmThxYpLki1/8Yv7qr/4qSfK5z30un/nMZ5o2K33T//7f/zsHHHBADjjggGy77bZ5/PHHs/POOyfxTjiNceyxx+bUU0/NBz7wgdd8vb5s2bIcdNBB+dWvfpUkuffee52azibbUD8mL/0Qe/r06UmS97///bnpppt6ZJY+G+Eb42Mf+1i++tWvJkkefPDB7LXXXk2eiP5m+fLl2X777bNu3brss88+eeCBB5o9Ev2ECGdjzJs3L1OmTEmSnHzyybnuuuuSvDrCOzo6svfee2fBggV585vfnKeeemqjPtIFr0eE0wz/9m//lve85z1Jkr/4i7/IpZde2uSJ6K/23HPPPPzwwxk7dmyWLl3aI/vo11dHHzFiRNfy2rVrmzgJ/dWYMWO6TlN55JFHmjwNsKW55ZZbupZPOOGE11xnwIABOfXUU5MkK1aseN3rDwD0ZlOnTu1a9pqLnvRyQ/ZkP/bbCH/++efz7W9/O8lLL0AmT57c5Inor1544YUkL32dAVS67777krz0guHtb3/766536KGHdi3ff//9PT4XQKOtW7eua9lrLnrKggUL8rOf/SxJsscee/TYfvrVV/CLL76YJ598MjfccEPe9a53ZeHChUmSmTNnvuZneqG7nn766SxYsCBJz/5FBXgtL//7s+uuu77hrRJf+e/Ty88B6EvuueeermWvuWikNWvW5Ne//nW+9KUv5bDDDuu6vsqZZ57ZY/vss1dHf9krP5f0Wo488shcdNFFhROxJfniF7+Y9vb2JMmMGTOaPA2wJVm7dm2WLVuWJF2f/349b37zmzNixIisXr06ixYtqhgPoGE6Ojpy4YUXdv3aay66a9asWZk5c+brPv7JT34yJ598co/tv1+9E/5KY8aMyfXXX5/bb789W2+9dbPHoR/68Y9/nEsuuSTJSy+AzzjjjOYOBGxRXnlP8I257djLn3Fz6zugr7n44oszd+7cJMn06dOz//77N3ki+qt99903P/rRj/LFL34xLS0tPbafPv9O+IQJE/KLX/wiSdLe3p62trbcfvvtueKKK3LGGWfk0UcfzXnnndejB5Etz1NPPZU//uM/Tnt7e1paWnL11Vdn+PDhzR4L2IK88oIxQ4YM2eD6Q4cOTfLSNVMA+op77rkn5557bpLkLW95S77yla80eSL6g/e9731dP8x5/vnn88gjj2T27Nm5+eabc/LJJ+eSSy7Jscce22P779F3wl8OlO7+90a3vhg8eHD23nvv7L333tl3331zzDHH5LLLLsuPfvSjtLS05FOf+lROP/30nvxj0mQVX2evtHLlyhxzzDFpbW1Nknz+85/P4Ycf3oN/QnqD6q8z2JBhw4Z1Lb/ygkWv5+WLSG611VY9NhNAIz300EOZPn162tvbM3To0MyePTvbbrtts8eiHxg9enRXQx5wwAH54Ac/mG9961u55ppr8uijj+a4447r0dds/fZ09H322ScXXHBBkuSqq67KHXfc0eSJ6A/Wrl2b4447Lj/96U+TJGeddVbXT2cBKr3ygqMbc4r56tWrk2zcqesAzfbYY4/lqKOOyooVKzJw4MBcf/31r7rTA/SEU045Jccff3w6Ojry8Y9/PCtWrOiR/fTo6eiDBg1qyFVYx48fv1nPO+6447o+p3vjjTfmqKOO6vYs9D5VX2ft7e2ZMWNG7rrrriTJRz7yERf924I0+98z+F3Dhg3L2LFjs2zZsq4zc17PihUruiJ80qRJFeMBbLbFixfnyCOPzOLFi9PS0pIrr7wy06dPb/ZYbCGOO+64zJ49O6tXr853vvOdnHTSSQ3fR49/JryZtxAYN25c1/ITTzzRtDnoeT39ddbR0ZFTTjklt956a5LkhBNOyNe+9rUe3Se9j1ui0Nvsueeeue+++7Jw4cKuOzW8locffvhVzwHorZYtW5Zp06bl0UcfTZJcdtllOfXUU5s8FVuSiobst6ejJ0lbW1vXstPv6I4//dM/zQ033JAkOfbYY3PttddmwIB+/dcH6AMOPvjgJC+dav7yRUpfyyvvr3vQQQf1+FwAm+PZZ5/N0Ucfnf/8z/9Mklx44YX58z//8yZPxZamoiH7dUV885vf7Fp++9vf3sRJ6MvOOuusfP3rX0+SHHHEEbnxxhszePDgJk8F8NLVXV/2r//6r6+5TkdHR6655pokL12I5rDDDqsYDWCTrFmzJsccc0zmz5+fJPnUpz6Vc845p8lTsSWqaMg+GeG33HJLlixZ8obr3HvvvTn//POTvPRZzhNPPLFiNPqZz372s7n44ouTJO9617vy7W9/u+s2PwDNNmXKlBxyyCFJ0nW2zu+66KKLuq5ncOaZZ/ohItDrrFu3LtOnT88PfvCDJC/9W/XyBZahUWbNmvWq23u+losvvji33XZbkmSnnXbqOuOs0frkfcJvueWWnHDCCTnmmGNyxBFHZK+99sro0aPzwgsv5JFHHsmtt96a2bNnp6OjI0ny6U9/OrvvvnuTp6avueyyy/K5z30uyUv3o//CF76Qxx577A2fs/vuu3uByyZbuHBh7r///lf93stXu161atXv3SLjj/7oj7LddttVjUcvd+mll+aggw561f2/58+fn1//+te54YYbcvnllydJJk+enLPPPrtZY9KH3X///Vm4cGHXr5ctW9a1vHDhwt/7N+q0004rmoz+4sQTT+y6k9Hhhx+e008/PQ8++ODrrj9kyJBMnjy5ajz6ic9+9rM5++yz84EPfCAHH3xw3vrWt2bkyJFZuXJlfvGLX+S6667r+kHQkCFD8s///M8ZNKhncrmls7Ozs0e23INOO+20XH311Rtcb6uttsrf/M3feNHBZpk6deqrPke5MR577LHstNNOPTMQ/dasWbMyc+bMjV7/rrvuytSpU3tuIPqcW2+9NSeddNLr3qps8uTJmTNnTnbdddfiyegPNvZ118v64EtLmqylpWWT1t9xxx3z+OOP98ww9Fs77bTTRl1obeLEibnyyiszbdq0HpulT74T/g//8A9597vfnTvvvDPz58/Pb37zmzz99NMZMGBAttlmm+y11145/PDDc+qpp7odEAD93nve855897vfzTvf+c4kL92+bNiwYdl1111z/PHH5+Mf/3iGDx/e5CkBoHm+//3v53vf+17uuuuuLFiwIE899VSWL1+eYcOGZdttt82+++6bY489NjNmzOjx75l98p1wAODVWltbu+4BvmjRokycOLHJEwEAr6VPXpgNAAAA+iIRDgAAAEVEOAAAABQR4QAAAFBE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", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 495, "width": 496 } }, "output_type": "display_data" } ], "source": [ "square = np.array([[0.0,1,1,0],[1,1,0,0]])\n", "A = np.array(\n", " [[0.5, 0], \n", " [ 0, 1]])\n", "print(A)\n", "dm.plotSetup()\n", "dm.plotSquare(square)\n", "dm.plotSquare(A @ square,'r')\n", "Latex(r'Horizontal Contraction')" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 75 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Here $A = \\left[\\begin{array}{rr}0.5&0\\\\0&1\\end{array}\\right].$ Its determinant is $1(0.5)-0(0) = 0.5,$ so this linear transformation is invertible.\n", "\n", "Its inverse is:\n", "\n", "$$ \\frac{1}{0.5}\\left[\\begin{array}{rr}1&0\\\\0&0.5\\end{array}\\right] = \\left[\\begin{array}{rr}2&0\\\\0&1\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 76, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "Clearly, just as $A$ contracted the $x_1$ direction by 0.5, $A^{-1}$ will expand the $x_1$ direction by 2." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 76, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/latex": [ "Projection onto the $x_2$ axis" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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eeed2X///Ysnoy9oamra5GMinO5w3HHHZf78+Ztd7+yzz86VV16ZQYMGFUxFX3PPPffkxBNP3Ox6I0eOzLe+9a2cfPLJPTZLrz18t+uuu2bChAl5xzvekf333z9jxozJkCFDsmLFitx33325+uqrs3bt2lxwwQUZPnx4PvaxjzV6ZHqZFStWpKOjI0OHDs3UqVNzwgkn5MADD8zgwYOzaNGi/PM//3Pnb9ImTZqUhQsXZtiwYY0em17otb/o2W233XLkkUfmxz/+cdatW9fAqegtHn744UybNi0vvPBC59/deuut2WWXXXLjjTfmX//1X/Poo49m8uTJWbBggZ9TdElLS0sOPvjg3H333Y0ehT7k1TN59txzz5x22mk59thjs/fee2fjxo358Y9/nNmzZ2f58uW57rrr0tbWln/7t39r8MT0Vi0tLTn++ONzxBFHpKWlJWPGjEl7e3taW1tz00035Tvf+U5Wr16d9773vVmwYEEOO+ywHpmjVx4JT5KNGzemf//+m3x86dKlOeKII7JmzZqMGjUqK1eufNP14b/6zGc+kxEjRuTjH/94dtlllz95fOPGjTnzzDMzd+7cJMlFF12Uz33uc9Vj0gd84xvfyLBhwzJ+/PgccMABSZJ99903Tz31lCPhbNarZ1L0798/GzduTJIsW7Yszc3NSZIvf/nL+bu/+7skyRe+8IVceOGFDZuV3ul//s//maOOOipHHXVURo8enSeffDL77bdfEkfC6R5TpkzJ9OnTc+qpp77h5/XVq1fn6KOPzm9/+9skyfz5852azlbbXD8mr/wSe+rUqUmS97///bn55pt7ZJZeG+Fb4uMf/3j+5V/+JUnyyCOP5JBDDmnwRPQ1zz77bPbcc89s2LAhhx12WB5++OFGj0QfIcLZEgsWLMj48eOTJGeddVauv/76JK+P8Pb29rz97W/PokWLsttuu+Xpp5/eoq90waaIcBrhjjvuyHve854kyd/8zd/k8ssvb/BE9FUHH3xwFi9enJEjR2bVqlU9so8+fXX0oUOHdi6/+OKLDZyEvmrEiBGdp6k8/vjjDZ4G2NHceuutncunn376G67Tr1+/TJ8+PUmyZs2aTV5/AGB7NmHChM5ln7noSa82ZE/2Y5+N8PXr1+e2225L8soHkLFjxzZ4Ivqql156KckrrzOASg888ECSVz4wHHrooZtc77jjjutcfvDBB3t8LoDutmHDhs5ln7noKYsWLcovfvGLJMlBBx3UY/vpU6/gl19+Ob/73e9y44035p3vfGeWLFmSJJk5c+YbfqcXuuqZZ57JokWLkvTsv6gAb+TVnz8HHHDAm94q8bU/n159DkBvcv/993cu+8xFd3rhhRfy2GOP5atf/WqOP/74zuurnHPOOT22z157dfRXvfZ7SW9k0qRJmT17duFE7Ei+/OUvp62tLUkybdq0Bk8D7EhefPHFrF69Okk6v/+9KbvttluGDh2a559/PsuWLasYD6DbtLe355JLLun8s89cdNWcOXMyc+bMTT7+6U9/OmeddVaP7b9PHQl/rREjRuSGG27IXXfdlV133bXR49AH/fSnP81ll12W5JUPwJ/4xCcaOxCwQ3ntPcG35LZjr37Hza3vgN7m0ksvzUMPPZQkmTp1ao488sgGT0Rfdfjhh+cnP/lJvvzlL6epqanH9tPrj4Tvtdde+dWvfpUkaWtry/Lly3PXXXflqquuyic+8Yk88cQTueCCC3r0f0R2PE8//XQ+8IEPpK2tLU1NTbn22mszZMiQRo8F7EBee8GYQYMGbXb9nXbaKckr10wB6C3uv//+nH/++UmSt7zlLfna177W4InoC973vvd1/jJn/fr1efzxxzN37tzccsstOeuss3LZZZdlypQpPbb/Hj0S/mqgdPWfN7v1xcCBA/P2t789b3/723P44Ydn8uTJueKKK/KTn/wkTU1N+exnP5tZs2b15H9NGqzidfZazz33XCZPnpzW1tYkyRe/+MVMnDixB/8bsj2ofp3B5gwePLhz+bUXLNqUVy8iufPOO/fYTADd6de//nWmTp2atra27LTTTpk7d25Gjx7d6LHoA4YPH97ZkEcddVQ++MEP5jvf+U6++c1v5oknnsgpp5zSo5/Z+uzp6IcddlguvvjiJMk111yTu+++u8ET0Re8+OKLOeWUU/Lzn/88SXLuued2/nYWoNJrLzi6JaeYP//880m27NR1gEZbunRpTjrppKxZsyb9+/fPDTfc8Lo7PUBPOPvss3Paaaelvb09n/rUp7JmzZoe2U+Pno4+YMCAbrkK65gxY7bpeaecckrn93RvuummnHTSSV2ehe1P1eusra0t06ZNy7333psk+au/+isX/duBNPrnGfxXgwcPzsiRI7N69erOM3M2Zc2a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", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 495, "width": 496 } }, "output_type": "display_data" } ], "source": [ "A = np.array(\n", " [[0,0],\n", " [0,1]])\n", "dm.plotSetup()\n", "dm.plotSquare(A @ square)\n", "Latex(r'Projection onto the $x_2$ axis')" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 78 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Here $A = \\left[\\begin{array}{rr}0&0\\\\0&1\\end{array}\\right].$ \n", "\n", "Its determinant is zero, so this linear transformation is __not__ invertible." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 79, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "By the IMT, there are many equivalent ways to look at this:\n", "\n", "* The mapping $T$ is not onto $\\mathbb{R}^2.$ (Only a subset of $\\mathbb{R}^2$ can be output by $T$).\n", "* The mapping $T$ is not one-to-one. (There are many values ${\\bf x}$ that give the same $A{\\bf x}.$)\n", "* $A$ does not have 2 pivots.\n", "* The columns of $A$ do not span $\\mathbb{R}^2.$\n", "* $A\\mathbf{x} = 0$ has a non-trivial solution." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here is another example:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hide_input": true, "slideshow": { "slide_type": "fragment" }, "tags": [ "remove-input" ] }, "outputs": [ { "data": { "image/png": "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SGffPrJr1y4jOZzoz3/+syZMKLqNNjk5WQsXLvRs8wOgeDZkbXD0/IGsbdu2nl0wztytc7bx48d71jN4+OGHeRERQMDJzc1V//79tWbNGklF36vOLLCMwOG9ONumTZsMJimdqVOnWrb3PJ8JEyZo6dKlkqT69et77jjzNZfbgZdFhw8frtmzZ6tnz57q0qWLmjdvripVquj06dPasWOHFi9erLlz56qwsFCS9Je//EVPPfWU4dRmeS+c8Le//Y1XFovhn//8p37/+99LKtqPfs6cOapcufJFn9OkSRN+wUWJbd++XV988YXl3KOPPqpDhw6pWrVq+vvf/275WPfu3VWrVi07I5ZJ+efK61T+xX/olWn+iPI68eQJv80f6DZt2qQbbrjBsv/3woULVbFiRb3zzjt64403JBVdwfjmm28sq6oDxfHFF19o+/btnvHBgwf1//7f/5NU9PaG++67z/L44cOH2xkPQWDgwIF6//33JUmdO3fWyy+/fNFFv6KioixXZWGP7du364orrvCMnVYj69evr6NHj2rgwIFq3769GjZsqNjYWB09elRbtmzRrFmzPC8ERUVFacmSJeratatfsji2hBfnFojy5cvr2Wef1ejRo21IFdiuvvpqffvtt5KkK664Qj/88IPZQA7QqVMny/soi+Onn35S/fr1/RMIQWvq1Km65557iv34VatWqVOnTv4L5GNhfwmTW/77UeOSS4VPF/ptfidYvHix7rrrrgtuG9O4cWMtWbJEjRo1sjkZgkFxf+86w4G/WsKwkq6yXa9ePe7sNMDtdlvWRMrJyXHUC7v169cv1kJrCQkJmjJlyjkrwvuS31dH94e///3vuvXWW7Vy5Upt3LhR+/btU3Z2tsLCwnTZZZepefPm6ty5s4YOHRqy2wGdLTU1VSNHjpQk/fjjj4bTAAgl0RHRfr0SXi6inN/mdorevXvrk08+0fXXXy+paPuycuXKqVGjRrr99tv10EMPKSYmxnBKAICTnf1iyWeffaZevXoZSlNyK1as0PLly7Vq1SqlpaVp//79OnTokMqVK6eaNWuqVatW6tWrl1JSUvz+M9ORV8JRcnv37lWdOnU8Y/7aAdil1WuttHn/Zv/NX6uVNv3Gee9N87XMzEzPHuAZGRlKSEgwnAgAEGzCw8M9b/m9/fbbNXfuXMOJnMmRC7Oh5GrXrm0ZZ2dnG0oCINS0iW/j6PkBAEAR78XZvFcRR8lQwkPU4sWLTUcAECK6N+p+6QeVQbeG3fw6PwAAKDJkyBDTEYICJTyEeN+aOHnyZINJAISSvk37qlasf1ZzrxVbS/2a9vPL3AAAwKpdu3aWcUFBgaEkzkYJDyH33nuv53jt2rUGkwAIJVHhURrVbpRf5h7VbpQiw9kWEAAAO5QvX94y/v777w0lcTZKeAi56667TEcAEKJGtRul1vGtfTpnm/g2euT6R3w6JwAAKL7Zs2ebjuBIlPAQcsUVV1jGR48eNZQEQKiJDI/U9H7TVSm6kk/mqxxdWdP7T1dEmCN32gQAwLE6dOjgOZ42bZrBJM5FCQ8hYWHWv+4VK1YYSgIgFDWPa64PB39Y5iJeObqylg5eqmY1mvkoGQAAKC7vFdL37t1rMIlzUcJDTLly5TzHU6ZMMZgEQChKTkzW2tS1pb41vXV8a32Z+qWSE5N9nAwAABRHr169TEdwPEp4iPFenI1tygCY0KxGM61LXadxXccVe9X0WrG1NK7rOK1LXccVcAAADKpZs6ZlnJ2dbSiJc7ncbrfbdAjY5+uvv9Z1113nGfPXD8CkvII8LUhfoGU7lmlD1gZtO7hNp/JPqVxEOTWp3kRt4tuoW8Nu6te0H6ugX0JmZqYSExMlSRkZGZZtKQEA8CWXy+U5njJliu655x6DaZyHEh5i8vLyFBUV5RmfOnVK0dHRBhMBAHyBEg4AsEt8fLz27dsnSerYsaM+/fRTs4EchtvRQ0xkpPVK0ldffWUoCQAAAAAn8l6c7bPPPjOYxJko4SFu6tSppiMAAAAAcJC77rrLdARHo4SHoJSUFM/xW2+9ZTAJAAAAAKdp3ry5ZXzq1ClDSZyJEh6CvFdIBwAAAICSCA8Pt4x5i2vJUMJDUIcOHSzjgoICQ0kAAAAAON2MGTNMR3AUSngIiomJsYy3bt1qKAkAAAAAJxo4cKDneNq0aQaTOA8lHJo5c6bpCAAAAAAcxHuF9Pz8fINJnIcSHqI6d+7sOZ48ebLBJAAAAACcplOnTpax2+02E8SBKOEhKjU11XP8yy+/GEwCAAAAwGkqVqxoGe/cudNQEuehhIeoHj16WMa8cgUAAACgtN59913TERyDEh6iqlatahnv3r3bUBIAAAAATnTVVVd5jlmcrfgo4ZAkzZ0713QEAAAAAA7ivThbenq6wSTOQgkPYS1btvQcszgbAAAAgJIYMGCA6QiORAkPYd6Ls/3www8GkwAAAABwmrp161rGv/76q5kgDkMJD2EDBw40HQEAAACAQ7lcLst4+fLlhpI4CyU8hNWuXdsyPnjwoKEkAAAAAJwoJibGczx9+nSDSZyDEh7Czn7latGiRYaSAAAAAHAi78XZFi9ebDCJc1DCQ5z31fApU6YYTAIAAADAaYYMGWI6guNQwkOc9+Jsa9asMZgEAAAAgNO0adPGMs7LyzOUxDko4SHurrvuMh0BAAAAgENFRUVZxps3bzaUxDko4SGucePGlvGxY8cMJQEAAADgdG+//bbpCAGPEh7iwsKs/wRWrlxpKAkAAAAAJ7r55ps9x9OmTTOYxBko4bDcQsLibAAAAABKwnuF9F9++cVgEmeghEP33nuv53jhwoUGkwAAAABwmu7du1vGbrfbUBJnoITD8soVAAAAAJREtWrVLOOsrCxDSZyBEo5zthXIzc01lAQAAACA0y1YsMB0hIBGCYciIyMt46+//tpQEgAAAABOdPnll3uOWZzt4ijhOMfUqVNNRwAAAADgIN5vceWi3sVRwiFJuu222zzHkydPNpgEAAAAgNPccccdpiM4BiUckqwrpAMAAABASTRu3NgyPn78uKEkgY8SDklSx44dLeOCggJDSQAAAAA4TViYtVquWbPGUJLARwmHJCkmJsYyTktLM5QEAAAAgNNNnz7ddISARQnHec2cOdN0BAAAAAAOcvfdd3uOZ82aZTBJYKOEw6NTp06eYxZnAwAAAFASQ4cONR3BESjh8EhNTfUcHzx40GASAAAAAE5zww03WMaFhYWGkgQ2Sjg8br31VsvY7XYbSgIAAADAac5eZ2rbtm2GkgQ2Sjg8LrvsMsv4559/NpQEAAAAgNPNmTPHdISARAnHBb377rumIwAAAABwkOuuu85zPG3aNINJAhclHBYtWrTwHLM4GwAAAICSGDZsmOd4165d5oIEMEo4LLwXZ0tPTzeYBAAAAIDT9O3b13SEgEcJh8Vtt91mOgIAAAAAh4qPj7eMDx06ZChJ4KKEw6JOnTqWMV80AAAAAIrL5XJZxh9++KGhJIGLEg6Ls79oFi9ebCgJAAAAACeqVq2a55jF2c5FCcc5atWq5TmeMmWKwSQAAAAAnMZ7cbbly5cbTBKYKOE4h/fibJ9//rnBJAAAAACc5q677jIdIaBRwnGOwYMHm44AAAAAwKGuuuoqyzg3N9dQksBECcc5mjRpYhkfO3bMUBIAAAAAThMREWEZf/PNN4aSBCZKOM4RFmb9Z7Fq1SpDSQAAAAA43cyZM01HCCiUcJyX96tXb731lsEkAAAAAJymT58+nuOpU6eaCxKAKOE4r3vvvddzPH/+fINJAAAAADjN0KFDPccnT540mCTwUMJxXsOHDzcdAQAAAIBDde3a1TJ2u92GkgQeSjjO65prrrGMWdEQAAAAQHFVrlzZMt69e7ehJIGHEo7zioyMtIzXr19vKAkAAAAAp3v//fdNRwgYlHAUy7Rp00xHAAAAAOAgSUlJnmP6xP9QwnFBAwYM8BxPnjzZYBIAAAAATjNs2DDP8X/+8x+DSQILJRwX5L1CemFhocEkAAAAAJzmtttuMx0hIFHCcUGdOnWyjCniAAAAAIqrQYMGlvHRo0cNJQkslHBcUIUKFSzjtLQ0Q0kAAAAAOI3L5bKMV61aZShJYKGEo9hmzZplOgIAAAAAB/HedYnF2YpQwnFRN954o+eYxdkAAAAAlIT34mxsU1aEEo6LSk1N9RxnZ2cbTAIAAADAaYYMGWI6QsChhOOievbsaRm73W5DSQAAAAA4Tdu2bS3j/Px8Q0kCByUcF1WtWjXLODMz01ASAAAAAE5Trlw5y3jr1q2GkgQOSjhK5N133zUdAQAAAIBDzZ4923QE4yjhuKRmzZp5jqdMmWIwCQAAAACn6dSpk+d46tSpxnIECko4Lsl7cTZuHwEAAABQEt4rpO/fv99gksBACccl3X777aYjAAAAAHCosxd7DnWUcFxSQkKCZXzo0CFDSQAAAAA4TY0aNSzjUL8aTgnHJblcLst4yZIlhpIAAAAAcLrFixebjmAUJRzFEhcX5zlmcTYAAAAAJVGnTh3P8bRp0wwmMY8SjmLxXpzts88+M5gEAAAAgNN4L872xRdfGExiHiUcxTJ48GDTEQAAAAA41KBBg0xHCBiUcBRLUlKSZXz8+HFDSQAAAAA4TbNmzSzjkydPGkpiHiUcxRIWZv2n8umnn5oJAgAAAMBxwsPDLeO1a9caSmIeJRzF5l3E33rrLYNJAAAAADjZjBkzTEcwhhKOYrv33ns9x++9957BJAAAAACcJiUlxXMcyiukU8JRbMOHDzcdAQAAAIBDea+Q7na7DSYxixKOYrv22mst47y8PENJAAAAADjNjTfeaBkXFhYaSmIWJRzFFhUVZRl/8803hpIAAAAAcJrY2FjLeMeOHYaSmEUJR6mF8vs4AAAAAJTNu+++azqCEZRwlEi/fv08x5MnTzYXBAAAAIDjtG7d2nM8depUc0EMooSjRFJTUz3H+fn5BpMAAAAAcBrvxdl+/PFHg0nMoYSjRDp16mQZh+piCgAAAABKrn///qYjGEcJR4mcvZhCenq6oSQAAAAAnCYhIcEyPnz4sKEk5lDCUSZvv/226QgAAAAAHMLlclnGn3zyiaEk5lDCUWLt27f3HLM4GwAAAICSqFixouc4FHdcooSjxLwXZ9u3b5/BJAAAAACcZvjw4Z7jpUuXmgtiCCUcJda7d2/L2O12G0oCAAAAwGkGDx5sOoJRlHCUWLVq1SzjPXv2GEoCAAAAwGmuvvpqyzgvL89QEjMiTAeA882bN09/+MMfTMcAAAAA4ABRUVGSpKaS+kg6OHy44itUkCpWlOLipD59pKQkoxn9yeXmXmKUQlJSkmd7siuvvFL/+c9/DCcCgNCWmZmpxMRESVJGRsY5W8AAABAQ8vKkRYu04rbb1OVij+vcWXrwwaJCHhlpVzpbcDs6SsV7cbYtW7YYTAIAgeHYsWNavXq1/v73vyslJUWXX365XC6XXC6X6tevbzoeAADmbdlSdIX7UgVcklaulG67rejx331nRzrbcCUcpbJ7927LL5X8MwIQ6m666SZ9+umn5/1YvXr1tGvXLr9+fq6EAwAC2urVUu/eUk5OyZ9bqZK0eLF0442+z2UAV8JRKnXr1rWMf/nlF0NJACAweL8YWbVqVd18882KjY01mAgAgACxZUvpC7hU9LzevYPmijgLs6FUXC6XZbx06VLdfffdRrLkFuRqYfpCfbT9I23I2qBth7bpdP5pRUdEq0m1JmoT30bdG3VX36Z9FRUeZSQjgOB311136YEHHlDbtm3VqFEjSVL9+vV17Ngxw8kAADAoL0/q37/0BfyMnBypXz8pLc3x7xHndnSUWo0aNXTw4EFJRbdhrly50tbPn1eQpwnrJuiltS9p//H9l3x8rdhaGtVulEa1G6XIcGd/4QJwhvr162v37t3cjg4ACF3vvVf03m5fzjdggO/mM4Db0VFq3ouzrVq16pyPHzt2TGvWrNG//vUv/fGPf/Tp596avVXtJrfTY8sfK1YBl6R9x/bpseWPqd3kdtqavdWneQAAAACcx8SJgT2fAdyOjlK7++67NW7cOM94+fLl2rhxozZt2qRNmzbphx9+8LxHskOHDj77vF9mfKkes3oo53TpbmnZmLVRyVOS9eHgD5WcmOyzXAAAAAC8pKUVrXLuSytWSOnpUtOmvp3XRpRwlIjb7VZGRoY2bdqkDRs2WD528803X/B5DRo08Mnn35q9tUwF/Iyc0znqMauH1qauVbMazXySDQD8KTMz86Ifz8rKsikJAADFtGiR/+alhCNY/fDDD9q4caPlCvehQ4dKPI8vSnheQZ6GLhha5gJ+Rs7pHA2ZP0TrUtfxHnEAAe/M+70BAHCM7GxnzWsTSjgu6vHHH9f8+fPLPI8vSviEdRO0MWtjmefxtjFroyasm6AxN4zx6bwAAABAyDt61D/zlnWldcMo4biocePG6YMPPlBeXl6Z5ilrCc8tyNWEdRPKNMeFTFg3gRXTAQS8jIyMi348KytLbdu2tSkNAADFULGif+atVMk/89qE1dFxUVdccYUeeuihMs9T1hK+MH2h9h3bV+Yc57Pv2D4tSF/gl7kBBJb8/Hy5XK4y/5k6dart2RMSEi76Jz4+3vZMAABcVFycs+a1CSUcl/SnP/1JVatWLfXzy5cvr5o1a5Ypw0fbPyrT8y9l2Y5lfp0fAAAACDl9+jhrXptwOzou6bLLLtPTTz+tP/zhD6V6foMGDeRyucqUYUPWhks/KIDnBxAYIiIilJaWVuZ5uOoMAEAxJCVJnTv7dpuyLl0cvTK6RAlHMf3ud7/Tv//9b/34448lfq4vFmXbdmhbmee46PwH/Ts/gMDR1OE/uAEAcJQHH/RtCX/wQd/NZQi3o6NYoqKi9OKLL5bqub4o4afzT5d5jos5lX/Kr/MDAAAAIalPH6lhQ9/M1bCh429FlyjhKIE+ffqoY8eOJX6eL0p4dER0mee4mHIR5fw6PwAAABCSIiOl+fPLvqJ55crSggVShPNv5qaEo9hcLpdeeumlEr+/2xclvEm1JmWe46LzV/fv/AAAAEDIuvJKafHi0hfxypWlRYukFi18m8sQ57+MAFu1bt1aQ4cO1bRp04r9HF+U8DbxbbR5/+Yyz3Mhzas299vcAELD9u3b9cUXX1jOHTt2zPO/Z29r1r17d9WqVcuueAAAmHXjjdKaNVK/ftKOHcV/XsOGRVfAg6SAS5LL7Xa7TYeAs+zZs0dXXHGFTp48WXQiXFITSY0k1ZZUTUUv7+RLOiQNvXmoejXppb5N+yoqPKpUn/Pdre8qZV6KL+KfV8T8CA1pPUQjR47U1Vdf7bfPAyB4TZ06Vffcc0+xH79q1Sp16tTJZ58/MzNTiYmJkqSMjAwlJCT4bG4AAHwmL6/oqvjEidKKFRd+XJcuRYuw9e5ddEt7EKGEo1SefvppPTP2Gel6Ff2JvfRzasXW0qh2ozSq3ShFhpfsCym3IFf1Xq6nfcf2lSrvRR2VNEFSYdGwffv2+v3vf69+/fopMsi+4AH4DyUcAIASSk8vus08O1vKySm6XT0urmjxtSDezYQSjlJZv2u9kv+erPwa+SV+buv41preb7qax5XsFvAX1rygx5Y/VuLPd0mfSFpz7umEhAT97ne/0/33368aNWr4/vMCgA9RwgEAcAYWZkOJfZnxpbq+07VUBVySNmZtVPKUZH2Z8WWJnjeq3Si1jm9dqs95QXslrT3/hzIzM/Xkk08qMTFR9957rzZt2uTbzw0AAAAg5FDCUSJbs7eqx6weyjmdU6Z5ck7nqMesHvr+wPfFfk5keKSm95uuStFl3N7gjFOS5stzG/qFnD59Wm+99ZZat26tDh066N1331VeXp5vMgAAAAAIKZRwFFteQZ6GLhha5gJ+Rs7pHA2ZP0R5BcUvtM3jmuvDwR+WvYifkjRL0oGSPe2LL75QSkqK/vrXv5bt8wMAAAAISZRwFNuEdRO0MWujT+fcmLVRE9ZNKNFzkhOTtTZ1belvTd8rabKkjNI9vX///nryySdL92QAAAAAIY0SjmLJLcgtcVkurgnrJpToargkNavRTOtS12lc13GqFVu8fXbDjocVLcI2SSW+An5GcnKyZs2apfDw8NJNAAAAACCkUcJRLAvTF/pnezBJ+47t04L0BSV+XmR4pMbcMEY//+Fnzb1trlKvTlWrWq1UPqK8XHKpfER5tarVSqlXp2rubXP1apNXi1ZBv8R7wC+kadOmWrRokcqXL1+6CQAAAACEvAjTAeAMH23/yK/zL9uxTLc3v71Uz40Mj9TtzW+/5PMLkwr1+sTXtXFjyW+pr1Wrlj788ENVq1atVBkBAAAAQOJKOIppQ9YGR88vSWFhYXr55ZdL/LyKFSvqww8/VP369X2eCQAAAEBooYSjWLYd2ubf+Q/6d/4zOnTooDvuuKNEzzl69KiuvPJKPyUCAAAAEEoo4SiW0/mn/Tr/qfxTfp3f2wsvvKBy5cqV6DkRERE6efKknxIBAAAACBWUcBRLdES0X+cvF1GyUlwWdevW1ZgxY0r8vJiYGB04UMpl1QEAAABAlHAUU5NqTfw7f3X/zn+2MWPGqE6dOhf8+IgRI1RYWKibbrrJcj4uLk7p6en+jgcAAAAgSFHCUSxt4ts4ev6zVahQQePGjTvvx/r3769XXnlFLpdLK1eu1KhRoywfT0pK0ooVK+yICQAAACDIUMJRLN0bdffr/N0advPr/Odz11136frrr7ecu+GGGzRr1iyFh4d7zr300kt64403LI/r2rWrJk2aZEtOAAAAAMGDEo5i6du0r2rF1vLL3LVia6lf035+mftiXC6XXnnlFc+4adOmWrhwocqXL3/OY++//34tX778nHOjR4/2e04AAAAAwYMSjmKJCo/SqHajLv3AUhjVbpQiwyP9MvelXHvttRo6dKhq1aqlDz/8UNWqVbvgY7t06aLvv//ecu6ll15Sly5d5Ha7/R0VAAAAQBBwuWkPKKa8gjy1m9xOG7M2+mzONvFttO6+dYoIi/DZnCW1d+9eZWdnq1WrVsV6/IEDBxQXF2c5V6lSJf3yyy+W29gBwE6ZmZlKTEyUJGVkZCghIcFwIgAAcD5cCUexRYZHanq/6aoUXckn81WOrqzp/acbLeCSVLt27WIXcEmqUaOGTpw4YTmXk5PDXuIAAAAALokSjhJpHtdcHw7+sMxFvHJ0ZS0dvFTNajTzUTJ7lS9fXvn5+apYsaLlPHuJAwAAALgYSjhKLDkxWWtT16p1fOtSPb91fGt9mfqlkhOTfZzMXuHh4Tpy5Ah7iQMAAAAoNko4SqVZjWZal7pO47qOK/aq6bVia2lc13Fal7rOsVfAz8Ze4gAAAABKgoXZUGZ5BXlakL5Ay3Ys04asDdp2cJtO5Z9SuYhyalK9idrEt1G3ht3Ur2k/Y6ug2+HNN9/UAw88cM65++67z1AiAKGEhdkAAHAGSjjgQytWrFDXrl0t5x555BGNHz/eUCIAoYISDgCAM3A7OuBD7CUOAAAA4GIo4YCPJSUlKTs723Ju5cqVqlKligoKCgylAgAAABAIKOGAH7CXOAAAAIDzoYQDfsJe4gAAAADORgkH/Ii9xAEAAAB4o4QDfsZe4gAAAADOoIQDNnnppZf0xhtvWM517dpVkyZNMpQIAAAAgN0o4YCN7r//fi1fvvycc6NHjzaUCAAAAICdKOGAzdhLHAAAAAhdlHDAAPYSBwAAAEITJRwwhL3EAQAAgNBDCQcMYi9xAAAAILRQwgHDzuwl3rlzZ8t59hIHAAAAgg8lHAgALpdLK1as0COPPGI5z17iAAAAQHChhAMBZPz48ewlDgAAAAQxSjgQYNhLHAAAAAhelHAgALGXOAAAABCcKOFAgGIvcQAAACD4UMKBAMZe4gAAAEBwoYQDAY69xAEAAIDgQQkHHIC9xAEAAIDgQAkHHIK9xAEAAADno4QDDsNe4gAAAIBzUcIBB2IvcQAAAMCZKOGAQ7GXOAAAAOA8lHDAwdhLHAAAAHAWSjjgcOwlDgAAADgHJRwIAmf2Eo+NjbWcZy9xAAAAILBQwoEgER4erpycHN10002W8+wlDgAAAAQOSjgQRFwul1auXKlRo0ZZzrOXOAAAABAYKOFAEHrppZfYSxwAAAAIQJRwIEjdf//9+uSTT845x17iAAAAgDmUcCCIde3alb3EAQAAgABCCQeCHHuJAwAAAIGDEg6EAPYSBwAAAAIDJRwIEewlDgAAAJhHCQdCCHuJAwAAAGZRwoEQw17iAAAAgDmUcCBEsZc4AAAAYD9KOBDC2EscAAAAsBclHAhx7CUOAAAA2IcSDoC9xAEAAACbUMIBSGIvcQAAAMAOlHAAHuwlDgAAAPgXJRyABXuJAwAAAP5DCQdwjovtJb5y5UpDqQAAAADno4QDuKDz7SXepUsX9hIHAAAASokSDuCiLrSX+KOPPmooEQAAAOBclHAAl3S+vcTHjx+vrl27spc4AAAAUAKUcADFcr69xFesWKGqVauylzgAAABQTJRwAMV2vr3Ejxw5wl7iAAAAQDFRwgGUCHuJAwAAAKVHCQdQYuwlDgAAAJQOJRxAqVxsL/EVK1YYSgUAAAAENko4gDI5317iXbt2ZS9xAAAA4Dwo4QDK7EJ7iY8ePdpQIgAAACAwUcIB+MT59hJ/6aWX1KVLF/YSBwAAAP6LEg7AZ863l/jKlStVpUoV9hIHAAAARAkH4GPn20s8JyeHvcQBAAAAUcIB+AF7iQMAAADnRwkH4BfsJQ4AAACcixIOwG/YSxwAAACwooQD8Dv2EgcAAACKUMIB2IK9xAEAAABKOAAbsZc4AAAAQh0lHICt2EscAAAAoYwSDsB27CUOAACAUEUJB2AEe4kDAAAgFFHCARjDXuIAAAAINZRwAEaxlzgAAABCCSUcQEBgL3EAAACEAko4gIDBXuIAAAAIdpRwAAGFvcQBAAAQzCjhAAIOe4kDAAAgWFHCAQQk9hIHAABAMKKEAwhY7CUOAACAYEMJBxDQ2EscAAAAwYQSDiDgsZc4AAAAggUlHIBjsJc4AAAAnI4SDsBR2EscAAAATkYJB+A47CUOAAAAp6KEA3Ak9hIHAACAE1HCATgWe4kDAADAaSjhAByNvcQBAADgJJRwAI7HXuIAAABwCko4gKDAXuIAAABwAko4gKDCXuIAAAAIZJRwAEGHvcQBAAAQqCjhAIISe4kDAAAgEFHCAQQt9hIHAABAoKGEAwhq7CUOAACAQEIJBxD02EscAAAAgYISDiAksJc4AAAAAgElHEDIYC9xAAAAmEYJBxBy2EscAAAAplDCAYQk9hIHAACACZRwACGLvcQBAABgN0o4gJDGXuIAAACwEyUcQMhjL3EAAADYhRIOAGIvcQAAANiDEg4A/8Ve4gAAAPA3SjgAeGEvcQAAAPgTJRwAzoO9xAEAAOAPlHAAuAD2EgcAAICvUcIB4CLYSxwAAAC+RAkHgEtgL3EAAAD4CiUcAIqBvcQBAADgCxGmAwCAU5zZS7xKlSo6duyY53xMTIyys7NVo0aNc5+UliYtWiRlZ0tHj0oVK0pxcVKfPlJSko3pAQAAEAhcbt7UCAAl4na71aVLF61atcpyPi0tTU2bNpXy8oqK98SJ0sqVF56oc2fpwQeLCnlkpJ9TI9hlZmYqMTFRkpSRkaGEhATDiQAAwPlwOzoAlNDF9hJf9+abRVe4b7vt4gVcKvr4bbcVPf677/yYGHb4+eef9eqrr+qOO+5QkyZNVKFCBZUrV04JCQnq27evZs+erfz8fNMxAQCAYVwJB4AyePPNN/XAAw9IkjpIWiypcmkmqlRJWrxYuvFGH6aDXZ566imNHTv2kivmX3PNNXrvvfdUt25dn2fgSjgAAM7AlXAAKIMze4m3UBkKuCTl5Ei9e3NF3KH27t0rt9utChUq6O6779Zbb72lL774Qt98841mzJiha6+9VpL0zTffqGvXrpY1BQAAQGjhSjgAlFVennIbNlRURkbZ52rYsGgxN94j7iiPPfaYqlWrpt/97neqWLHiOR8vKCjQXXfdpblz50qSnnnmGf3f//2fTzNwJRwAAGeghANAWb33XtF7u30534ABvpsPAeHQoUOqXbu2cnNz1bJlS23evNmn81PCAQBwBm5HB4CymjgxsOdDQKhWrZpatmwpSdqxY4fhNAAAwBRKOACURVrapVdBL6kVK6T0dN/OiYBw+vRpSVJYGD9+AQAIVRGmAwCAoy1a5L95mzb1z9wwIjs7W2lpaZJUtJ98CWVmZl7041lZWaXKBQAA7EUJB4CyyM521rww5sUXX/TsE56SklLi5595vzcAAHA27ocDgLI4etQ/8+bk+GdeGPHVV1/p5ZdfliQlJCTowQcfNBsIAAAYw5VwACiL82xH5ROVKvlnXthu//79uu2225Sfny+Xy6Vp06YpJiamxPNkXGILvKysLLVt27a0MQEAgE0o4QBQFnFxzpo3xOXn5yvSB3uwv/XWWxo+fPglH3f06FH17NnT837u559/Xp07dy7V52TLMQAAggO3owNAWfTp46x5YZtTp06pb9++2rBhgyTpkUce0eOPP244FQAAMI0r4QBQFklJUufOvt2mrEsXVkb3k4iICM8K5WURHx9/0Y/n5+crJSVFq1atkiTdd999Gj9+fJk/LwAAcD5KOACU1YMP+raEs2iXX5Vme7CSKCws1JAhQ7R48WJJ0h133KHXX3/dr58TAAA4B7ejA0BZ9ekjNWzom7kaNuRWdIf7zW9+o3feeUeS1KtXL82YMUNhYfy4BQAARfitAADKKjJSmj+/7CuaV64sLVggRXCTklM98sgjmjRpkiSpS5cumjdvnk8WggMAAMGDEg4AvnDlldLixaUv4pUrS4sWSS1a+DYXbPPnP/9ZEyZMkCQlJydr4cKFio6ONpwKAAAEGpfb7XabDgEAQeO776R+/aQdO4r/nIYNi66AU8Ad65///Kd+//vfS5Lq1KmjOXPmqHLlyhd9TpMmTXx6lTwzM1OJiYmSivYUZ0szAAACE/c8AoAvtWghpaUVXRWfOFFaseLCj+3SpWgRtt69i25ph2O99957nuM9e/aoffv2l3zOTz/9pPr16/sxFQAACESUcADwtchIacCAoj/p6UW3mWdnSzk5Rberx8UVLb7GNmQAAAAhh9vRAQAIAtyODgCAM7AwGwAAAAAANqGEAwAAAABgE0o4AAAAAAA2oYQDAAAAAGATSjgAAAAAADahhAMAAAAAYBNKOAAAAAAANqGEAwAAAABgE0o4AAAAAAA2oYQDAAAAAGATSjgAAAAAADahhAMAAAAAYBNKOAAAAAAANqGEAwAAAABgE0o4AAAAAAA2oYQDAAAAAGATSjgAAAAAADahhAMAAAAAYBNKOAAAAAAANqGEAwAAAABgE0o4AAAAAAA2oYQDAAAAAGATSjgAAAAAADahhAMAAAAAYBNKOAAAAAAANqGEAwAAAABgE0o4AAAAAAA2oYQDAAAAAGATSjgAAAAAADahhAMAAAAAYBNKOAAAAAAANvn/7d07axXtGsfhvzEBD5GIEjCoRVIYIWhjYRsPnR8g2IgpFHstTGETbSz8AoKxFLRIRIRgEcTCJmBhFcEj5iBGlFQestS32Gw7Fd9k36Pb66oGZtaz7vbHPDMjwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgiAgHAACAIiIcAAAAiohwAAAAKCLCAQAAoIgIBwAAgCIiHAAAAIqIcAAAACgiwgEAAKCICAcAAIAiIhwAAACKiHAAAAAoIsIBAACgSHvTAwDA/4Pbt29neno609PTefr0aRYXF7O0tJTOzs709fVlcHAwJ0+eTH9/f9OjAgANWvP169evTQ8BAH+yVquVjo6On17X0dGR0dHRnD17dtVnmJ2dzc6dO5MkL1++zI4dO1b9PwCAlXMnHABWQVdXVwYHB7N///709fWlp6cnGzZsyPz8fO7evZuxsbEsLS1lZGQkmzdvzqlTp5oeGQBogDvhALAKPn/+nLVr1373/LNnz7Jv3768e/cu3d3dWVhY+OH1v8qdcAD4M3gxGwCsgp8FdW9vb4aGhpIki4uLmZmZqRgLAPjNiHAAKLJx48Zvxx8+fGhwEgCgKSIcAAq8f/8+N2/eTJK0tbVl165dDU8EADTBi9kA4H9keXk5CwsLuX//fi5evJjHjx8nSYaHh7Np06ZfWmt2dvaH5xcWFv71nABAHREOAKvo+fPn6e3t/e75w4cP59KlS7+87n9fugYA/NlsRweAAlu3bs21a9cyOTmZrq6upscBABriE2UAsIqWl5fz6NGjJEmr1crc3FwmJydz5cqVrFu3LmfOnMnIyEjWrFnzS+v+bDt6q9XK4uJienp6sm3btrS32+wGAL8jEQ7AX6PVaqWjo2PF61y9ejXHjx//pd88fPgwBw4cyNu3bzM8PJyxsbEVzwEA/HlsRweAAnv37s2FCxeS/Cfi79y50/BEAEAT3AkH4K8yMzOz4jV6enr+1XPd8/Pz2b59e5LkxIkTuXz58opnAQD+LB4YA+Cvsnv37sb+u7u7+9vxixcvGpsDAGiO7egAUGRubu7bcWdnZ4OTAABNEeEAUOTGjRvfjvfs2dPgJABAU0Q4AKzQxMREFhYWfnjNvXv3Mjo6miRpb2/P0aNHK0YDAH4zngkHgBWamJjI0NBQjhw5kkOHDmVgYCCbN2/Ox48f8+TJk9y6dSvXr1/Ply9fkiTnzp1Lf39/w1MDAE0Q4QCwCj59+pTx8fGMj49/95r169fn/PnzOX36dOFkAMDvxCfKAGCF3rx5k6mpqUxNTeXBgwd59epVXr9+nba2tmzZsiUDAwM5ePBgjh07lp6enqbHBQAaJMIBAACgiBezAQAAQBERDgAAAEVEOAAAABQR4QAAAFBEhAMAAEAREQ4AAABFRDgAAAAUEeEAAABQRIQDAABAEREOAAAARUQ4AAAAFBHhAAAAUESEAwAAQBERDgAAAEVEOAAAABQR4QAAAFBEhAMAAEAREQ4AAABFRDgAAAAUEeEAAABQRIQDAABAEREOAAAARUQ4AAAAFBHhAAAAUOQf/vYfnMLrD18AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 495, "width": 496 } }, "output_type": "display_data" } ], "source": [ "subspace = np.array([[2, 1]])\n", "P = 1.3 * (subspace.T @ subspace) / (subspace @ subspace.T)\n", "ax = dm.plotSetup()\n", "testpoints = np.array([[1, 0.], [0.5, 1], [0.5, 2], [-1, 1], [-1, -2], [2.8, -1], [-2.7, 1]])\n", "for point in testpoints:\n", " p = P @ point\n", " plt.plot(p[0], p[1], 'go', markersize = 8)\n", " plt.plot(point[0], point[1], 'ro', markersize = 7)\n", " ax.arrow(point[0],point[1],p[0]-point[0],p[1]-point[1],head_width=0.1, head_length=0.15, length_includes_head = True, color='k')\n", "#Latex(r'Projection onto the line [2, 1]')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this figure, we are looking at how the red points $(x_1, x_2)$ are mapped to the green points under the transformation\n", "\n", "$$ \\left[\\begin{array}{r} x_1 \\\\ x_2 \\end{array}\\right] \\mapsto \\left[\\begin{array}{rr} 1.04 & 0.52 \\\\ 0.52 & 0.26 \\end{array}\\right]\\left[\\begin{array}{r} x_1 \\\\ x_2 \\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "We notice a few things:\n", " \n", "* The green points appear to lie along a line\n", "* There are cases where more than one red point maps to the same green point\n", "\n", "How do these two facts relate to:\n", "* The determinant of the matrix?\n", "* The invertibility of the transformation?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Further Reading \n", "\n", "This material is not required, but may interest you." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 79, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Ill-Conditioned Matrices" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 81 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The notion of a matrix inverse has some complications when used in practice. \n", "\n", "As we've noted, numerical computations are not always exact.\n", "\n", "In particular, we often find that `a - b(a/b)` does not evaluate to exactly zero on a computer." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 82 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "For similar reasons, a matrix which is actually singular may not appear to be so when used in a computation. \n", "\n", "This happens because, for example, the determinant does not evaluate to exactly zero, even though it should. " ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 83 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Recall that when we were implementing Gaussian elimination, we established a rule:\n", "\n", "If `a - b(a/b) < epsilon` for sufficiently small `epsilon`, we would treat that quantity as if it were zero. " ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 84 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "We need an equivalent rule for matrices, so that we recognize when matrices are \"effectively singular.\" \n", "\n", "When a matrix $A$ is \"effectively singular\" we should not try to solve $A{\\bf x} = {\\bf b}$." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 85 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The value we use for this purpose is called the __condition number.__ \n", "\n", "Every matrix has a condition number.\n", "\n", "The larger the condition number of a matrix, the closer the matrix is to being singular. " ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 85 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "A __singular__ matrix has an __infinite__ condition number.\n", "\n", "At the other extreme, the condition number of the identity matrix is 1, which is the smallest possible value. " ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 85 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "__Here is the point:__ a matrix with a very large condition number will __behave much like a singular matrix__ in practice. \n", "\n", "Specifically: one should not try to solve linear systems by computer when the matrix $A$ has a very large condition number." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 85 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "How large is large? \n", "\n", "It depends, but as a rule of thumb a condition number of $10^8$ or greater would be considered a large condition number." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 86 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "If a matrix has a large condition number, we might say that it is \"effectively singular.\"\n", "\n", "The most common way to put this is that the matrix is \"ill-conditioned\"." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 86 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "A matrix that has a large condition number can behave almost like it is singular. \n", "\n", "We know that if $A$ is a singular matrix, then $A{\\bf x}={\\bf b}$ does not have a unique solution. \n", "\n", "If on the other hand $A$ is not singular, but is ill-conditioned, then solving $A{\\bf x}={\\bf b}$ can be very inaccurate. \n", "\n", "A small change in ${\\bf b}$ (such as might be introduced by limited precision in your computer) will result in a huge change to the solution, ${\\bf x}$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Demonstration of Ill-Conditioning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Here is a demonstration of why this is a problem.\n", "\n", "Here is a matrix that is singular:\n", "\n", "$$M = \\left[\\begin{array}{rr}1&2\\\\2&4\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can see that it is singular because the second column is a multiple of the first column, so\n", "* the determinant is zero\n", "* the columns are linearly dependent\n", "* there is only one pivot position\n", "* etc. (see the IMT!)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Here is a matrix that is _almost_ singular:\n", "\n", "$$A = \\left[\\begin{array}{ll}1&2.0000000001\\\\2&4\\end{array}\\right].$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The second column is not a multiple of the first column, so technically this matrix is not singular. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "But the second column is _almost_ a multiple of the first column. \n", "\n", "The determinant is -0.0000000002\n", "\n", "You could say the determinant is \"almost zero\".\n", "\n", "This matrix is ill-conditioned." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Now let's solve $A{\\bf x} = {\\bf b}$ using the ill-conditioned matrix $A.$\n", "\n", "First, let's consider when ${\\bf b} = \\left[\\begin{array}{r}1\\\\2\\end{array}\\right].$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Solving $A{\\bf x} = \\left[\\begin{array}{r}1\\\\2\\end{array}\\right]$ we get ${\\bf x} = \\left[\\begin{array}{r}1\\\\0\\end{array}\\right].$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Now, let's change ${\\bf b}$ just a __little bit,__ and solved again.\n", "\n", "Let's set ${\\bf b} = \\left[\\begin{array}{l}1\\\\2.01\\end{array}\\right].$ \n", "\n", "Solving $A{\\bf x} = \\left[\\begin{array}{l}1\\\\2.01\\end{array}\\right]$ we get ${\\bf x} = \\left[\\begin{array}{r}100000000\\\\-50000000\\end{array}\\right].$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Notice how a small change in ${\\bf b}$ resulted in a huge change in ${\\bf x}.$ \n", "\n", "This is __very bad!__\n", "\n", "It means that we cannot trust the solution -- it could be wildly wrong due to small errors in the input!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "This is happening because the matrix $A$ is ill-conditioned -- it has a large condition number. \n", "\n", "In fact the condition number of $A$ is about 12,500,000,000." ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 87 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Now, this situation would not be a problem ... if you were always dealing with exact quantities in your computer. \n", "\n", "But you are not. \n", "\n", "Every floating point number has limited precision -- a limited number of digits that can be stored. \n", "\n", "As a result, there can be a small error in the value of any number stored in the computer. \n", "\n", "This is not normally a problem -- you would not typically notice it. " ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 87 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "But if you are solving a system with a large condition number, the small error in ${\\bf b}$ can get expanded in a large error in ${\\bf x}$. \n", "\n", "The error can be so large that the value you get for ${\\bf x}$ is __completely wrong.__" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 88, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "To compute the condition number of a matrix `A` in `Python/numpy`, use `np.linalg.cond(A)`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "125000145095.44151" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = np.array([[1, 2.0000000001],[2, 4]])\n", "np.linalg.cond(A)" ] } ], "metadata": { "celltoolbar": "Slideshow", "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.18" }, "rise": { "scroll": true, "theme": "beige", "transition": "fade" } }, "nbformat": 4, "nbformat_minor": 4 }