{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"internals": {
"slide_type": "subslide"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Matrix Operations"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"hide_input": true
},
"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": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Today we will talk about multiplying matrices:\n",
"* How do you multiply matrices?\n",
"* What does the product of two matrices mean?\n",
"* What algebraic rules apply to matrix multiplication?\n",
"* What is the computational cost of matrix multiplication?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"Early in his life, Arthur Cayley practiced law to support his passion for mathematics. During his time as a practicing lawyer, he published over 200 papers on mathematics. Finally at the age of 42 he got a position at Cambridge University and took a big pay cut so he could become a full-time mathematician. He said he never regretted the choice. Cayley often said, “I love my subject.”\n",
"\n",
"In the mid 19th century mathematics was making enormous progress, but strangely the ideas of linear algebra had not been developed much. As I mentioned in the first lecture, people had been solving linear systems since ancient Chinese times (although “Nine Chapters on Arithmetic” was destroyed along with most technical books in China by Emperor Shih Hoang-ti in 213 BC). However it took Cayley to have the idea of extracting the coefficients as a separate entity called a matrix, worthy of independent study. He is the founder of linear algebra.\n",
"\n",
"In 1855-1857 Cayley formed the theory of matrices, and came up with a way to multiply matrices. As we’ll see, it is not the most obvious thing to do, but it was quickly realized that it was the “right” way. Cayley came about this idea by first thinking about linear transformations, and how to compose linear transformations. So that’s where we’ll start.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Composing Linear Transformations"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"hide_input": false,
"internals": {
"frag_helper": "fragment_end",
"frag_number": 5
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/latex": [
"Reflection through the origin"
],
"text/plain": [
""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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2YsgoUEJAAA+SUszZQVTp5r53LlSmzbxr3PttVJurjmljTxFLg49exE0nPgCAOAjL8odUlKkYcOkG2+UysXxJzs9exE0BF8AAHx02WXmQTdJ2rLFXGhRGujZiyAi+AIA4KPKlaWf/tSeO+3uEC969iKICL4AAPgs8jKLOXOclTvEg569CCqCLwAAPhswwA6eWVnS2rUl91n07EWQEXwBAPBZpUrSkCH2fM6ckvssevYiyAi+AAAkgMhyh4yMkil3oGcvgo7gCwBAArjkEqlmTTPevl364gtv16dnL0DwBQAgIaSmRtfael3uQM9egOALAEDCiLzMIiNDysvzZl169gIGwRcAgATRr59Uu7YZ79wprV7tzbr07AUMgi8AAAmiQgXpqqvsuReXWdCzF7ARfAEASCBeljvQsxeIRvAFACCB9O0r1a1rxtnZ0sqVzteiZy8QjeALAEACKV9euvpqe+603IGevcDpCL4AACSYyMss5s2TcnPj+3l69gIFI/gCAJBgevWSGjQw4z17pE8/je/n6dkLFIzgCwBAgklJka65xp7Hc5kFPXuBwhF8AQBIQJHdHebPl06diu3n6NkLFI7gCwBAArroIqlRIzPev1/65JPif4aevUDRCL4AACSglBTp2mvteXHlDvTsBYpH8AUAIEHlL3fIySn8vfTsBYpH8AUAIEF16yY1bWrGBw9Ky5YV/D569gKxIfgCAJCgypWLLnco6DILevYCsSP4AgCQwCLLHRYskE6ejP4+PXuB2BF8AQBIYF262GULhw9LH31kf4+evUB8CL4AACSwUCj61Dey3IGevUB8CL4AACS466+3x+++a8od6NkLxI/gCwBAgktPl84804yPHJEyM+nZCzhB8AUAIMHlL3cYOZKevYATBF8AAJJAZPCNRM9eIHYEXwAAkkDHjtJZZ53+Gj17gdgRfAEASAIFlTLQsxeID8EXAIAk0aFD9LxjR3/2ASQrgi8AAElixgypUycz3rZNqlDB3/0AyYa/IAEAIEmEQtKKFX7vAkhenPgCAAAgEAi+AAAACASCLwAAAAKB4AsAAIBAIPgCAAAgEAi+AAAACASCLwAAAAKB4AsAAIBAIPgCAAAgEAi+AAAACASCLwAAAAKB4AsAAIBAIPgCAAAgEAi+AAAACASCLwAAAAKB4AsAAIBAIPgCAAAgEAi+AAAACASC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\n",
"text/plain": [
"