{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'numpy'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-7-a5b2554c064f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# Necessary run this if you intend to play with and run the code below\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mmpl_toolkits\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmplot3d\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mAxes3D\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'numpy'"
     ]
    }
   ],
   "source": [
    "# Necessary run this if you intend to play with and run the code below\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "plt.ion()\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import matplotlib\n",
    "matplotlib.rcParams['figure.dpi'] = 150"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[Table of Contents](table_of_contents.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Topic 8.  Linear Regression and Least Squares\n",
    "Author: Brady Anderson <br> &emsp;&emsp;&emsp;&ensp;b.anderson<i></i>@byu.edu\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Introduction\n",
    "Linear Regression, or the Least Squares problem, manifests itself quite often in engineering work. First, an example:\n",
    "\n",
    "A physical (real-world) engineering process needs to be modeled. Now, having the physical system, it is possible to apply known inputs to the process \"plant,\" and measure the corresponding outputs. (Assuming some type of output measurements are possible with some sensor). Linear Regression allows plant parameters to be deduced given a collected set of inputs and outputs. These plant parameters become your model, whether for simulation or for an estimator.\n",
    "\n",
    "The idea is to find linear coefficients for a set of linearly independent vectors such that the combination of these coefficients and vectors (the estimated data) comes as close as possible to a true dataset.\n",
    "\n",
    "Linear Regression takes advantage of properties of the Projection Theorem and the induced norms on $l_{2}$ and $L_{2}$ in order to compute the aforementioned parameters (or whatever the solution may be to your use case).  The key fact to note is that the error of the estimated data is orthogonal to the true data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Explanation of the theory\n",
    "\n",
    "Give a detailed discussion (i.e., equations galore) of the topic.  \n",
    "The emphasis here is clarity for future students learning the topic.\n",
    "\n",
    "First a review of the Projection Theorem (Thm 2.9 in Moon):\n",
    "\n",
    "Let $S$ be a Hilbert space and let $V$ be a closed subspace of $S$. For any vector $\\mathbf{x} \\in S$, $\\exists$ a *unique* vector $\\mathbf{v}_0 \\in V$ closest to $\\mathbf{x}$; that is, $\\|\\mathbf{x}-\\mathbf{v_0}\\| \\le\\|\\mathbf{x}-\\mathbf{v}\\| \\  \\forall \\  \\mathbf{v} \\  \\in V$. Furthermore, the point $\\mathbf{v}_0$ is the minimizer of $\\|\\mathbf{x}-\\mathbf{v}\\|$ if and only if $\\mathbf{x}-\\mathbf{v_0} \\in V^{\\perp}$.\n",
    "\n",
    "If you are unfamiliar or uncomfortable with this definition, please see the section on projection operators. Also, section 2.14 of the book covers the theorem well.\n",
    "\n",
    "Say you have a normed, linear vector space ($S,\\|\\cdot\\|$), and a matrix of linearly independent vectors $T=[\\mathbf{p}_1,\\mathbf{p}_2,\\dots,\\mathbf{p}_m]$ with $V=span(T) \\in S$. In linear regression, we seek the coeffients $c_i$ such that\n",
    "\n",
    "$\\mathbf{\\hat{x}}=T\\mathbf{\\hat{c}}$\n",
    "\n",
    "according to the constraint that $\\mathbf{\\hat{c}}=\\underset{c}{\\operatorname{argmin}}\\|\\mathbf{x}-T\\mathbf{c}\\|$.\n",
    "\n",
    "This will minimize the total error between the true vector $\\mathbf{x}$ and the estimate $\\mathbf{\\hat{x}}$:<br>$\\|\\mathbf{e}\\|=\\|\\mathbf{x}-\\mathbf{\\hat{x}}\\|$.\n",
    "<br>It is geometrically observable that **the error is minimized when the error is orthogonal to $V$** when the $l_{2}$ and $L_{2}$ norms are used.\n",
    "\n",
    "Now, if $\\mathbf{x} \\in V$, it is possible to have $\\|\\mathbf{e}\\|=0$. However, in general, (especially in engineering), this is not the case.\n",
    "\n",
    "When we use the induced norm for $\\|\\mathbf{e}\\|$, we can express the minimization in terms of the orthogonality condition, using the Projection Theorem: the minimum-norm error must be orthogonal to each vector $\\mathbf{p}_j$\n",
    "\n",
    "$\\langle \\mathbf{x}-\\sum_{i=1}^{m}{c_i\\mathbf{p}_i}, \\mathbf{p}_j \\rangle = 0, \\ \\ \\ \\ \\ j=1,2,\\dots,m$\n",
    "\n",
    "We can write these in what are known as the **normal equations**, with $m$ equations in $m$ unknowns:\n",
    "\n",
    "$$\n",
    "\\begin{bmatrix}\n",
    "\\langle \\mathbf{p}_1, \\mathbf{p}_1 \\rangle & \\cdots & \\langle \\mathbf{p}_m, \\mathbf{p}_1 \\rangle \\\\\n",
    "\\vdots &  \\ddots & \\vdots \\\\\n",
    "\\langle \\mathbf{p}_1, \\mathbf{p}_m \\rangle &  \\cdots & \\langle \\mathbf{p}_m, \\mathbf{p}_m \\rangle\n",
    "\\end{bmatrix}\n",
    "\\begin{bmatrix} c_1 \\\\ \\vdots \\\\ c_m \\end{bmatrix} =\n",
    "\\begin{bmatrix}\n",
    "\\langle \\mathbf{x}, \\mathbf{p}_1 \\rangle \\\\\n",
    "\\vdots \\\\\n",
    "\\langle \\mathbf{x}, \\mathbf{p}_m \\rangle\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "The left matrix is known as the Grammian of the set T, the set of vectors composing the T matrix. It usually is denoted by the letter $R$: $R\\mathbf{c}=\\mathbf{p}_x$\n",
    "\n",
    "where $\\mathbf{p}_x$ is the *cross-correlation vector*.\n",
    "\n",
    "Due to the properties of the inner product, and that $R_{ij}=\\langle \\mathbf{p}_j,\\mathbf{p}_i \\rangle$, the Grammian matrix is Hermitian symmetric: $R^{H}=R$. (The Hermitian of a matrix means its conjugate transpose.)\n",
    "\n",
    "To solve the **normal equations**, $R$ must be invertible. Recall that positive-definite matrices are always invertible. This leads to $\\mathbf{Thm 3.1}$:\n",
    "\n",
    "A Grammian matrix $R$ is always positive-semidefinite (that is, $\\mathbf{x}^{H}R\\mathbf{x} \\ge 0 \\ \\forall \\ \\mathbf{x} \\in \\mathbb{C}^{m}$). It is positive-definite if and only if the vectors $\\mathbf{p}_1,\\dots,\\mathbf{p}_m$ are linearly independent.\n",
    "\n",
    "\n",
    "Proof:\n",
    "\n",
    "Let $\\mathbf{y}=[y_1,\\dots,y_m]^{T}$ be an arbitrary vector. Then\n",
    "\n",
    "$$\n",
    "\\mathbf{y}^{H}R\\mathbf{y}=\\sum_{i=1}^{m}{\\sum_{j=1}^{m}{\\bar{y_i}y_j \\langle \\mathbf{p}_i, \\mathbf{p}_j \\rangle}} =\n",
    "\\langle \\sum_{j=1}^{m}{y_j\\mathbf{p}_j}, \\sum_{i=1}^{m}{y_i\\mathbf{p}_i} \\rangle = \n",
    "\\left\\| \\sum_{j=1}^{m}{y_j\\mathbf{p}_j} \\right\\|^{2} \\ge 0\n",
    "$$\n",
    "\n",
    "Hence $R$ is positive-semidefinite.\n",
    "\n",
    "If $R$ is not positive-semidefinite, then there is a nonzero vector $\\mathbf{y}$ such that\n",
    "\n",
    "$\\mathbf{y}^{H}R\\mathbf{y}=0$\n",
    "\n",
    "so that\n",
    "\n",
    "$\\sum_{i=1}^{m}{y_i\\mathbf{p}_i}=0$;\n",
    "\n",
    "thus, the $\\mathbf{p}_i$ are linearly independent.\n",
    "\n",
    "Conversely, if $R$ is positive-definite, then\n",
    "\n",
    "$\\mathbf{y}^{H}R\\mathbf{y} \\gt 0$\n",
    "\n",
    "for all nonzero $\\mathbf{y}$ and by the first line equation of this proof,\n",
    "\n",
    "$\\sum_{i=1}^{m}{y_i\\mathbf{p}_i} \\not= 0$\n",
    "\n",
    "This means that the $\\mathbf{p}_i$ are linearly independent. &emsp;&emsp;&emsp; QED <br>\n",
    "\n",
    "As a result of this theorem, the Grammian is invertible if all the vectors $\\mathbf{p}_i$ are linearly independent.\n",
    "\n",
    "As an extension, if the set of vectors $\\mathbf{p}_i$ are orthogonal, then the Grammian is diagonal, significantly reducing the amount of computation required to find the coefficients. They are simply obtained by:\n",
    "\n",
    "$c_{j}=\\frac{\\langle \\mathbf{x}, \\mathbf{p}_j \\rangle}{\\langle \\mathbf{p}_j, \\mathbf{p}_j \\rangle}$\n",
    "\n",
    "<br>\n",
    "\n",
    "The **orthogonality principle** for least-squares is now formalized with **Thm 3.2**:\n",
    "\n",
    "Let $\\mathbf{p}_1,\\dots,\\mathbf{p}_m$ be data vectors in a vector space $S$. Let $\\mathbf{x}$ be any vector in $S$. In the representation\n",
    "\n",
    "$\\mathbf{x} = \\sum_{c=1}^{m}{c_{i}p_{i}} + \\mathbf{e} = \\mathbf{\\hat{x}} + \\mathbf{e}$\n",
    "\n",
    "the induced norm of the error $\\|\\mathbf{e}\\|$ is minimized when the error $\\mathbf{e}=\\mathbf{x}-\\mathbf{\\hat{x}}$ is orthogonal to each of the data vectors,\n",
    "\n",
    "$\\langle \\mathbf{x}-\\sum_{i=1}^{m}{c_{i}\\mathbf{p}_{i}}, \\mathbf{p}_j \\rangle=0, \\ \\ \\ \\ \\ j=1,2,\\dots,m$\n",
    "\n",
    "<br>\n",
    "Proof (via Cauchy-Schwarz inequality):\n",
    "\n",
    "In the case that $\\mathbf{x} \\in span(\\mathbf{p}_1, \\dots, \\mathbf{p}_m)$, the error is zero and hence is orthogonal to the data vectors. This case is therefor trivial and is excluded from what follows.\n",
    "\n",
    "If $\\mathbf{x} \\notin span(\\mathbf{p}_1, \\dots, \\mathbf{p}_m)$, let $\\mathbf{y}$ be a fixed vector that is orthogonal to all of the data vectors,\n",
    "\n",
    "$\\langle \\mathbf{y},\\mathbf{p}_i \\rangle=0 \\ \\ \\ \\ \\ i=1,\\dots,m$\n",
    "\n",
    "such that\n",
    "\n",
    "$\\mathbf{x}=\\sum_{i=1}^{m}{a_i\\mathbf{p}_i}+\\mathbf{y}$\n",
    "\n",
    "for some set of coefficients ${a_1, \\dots, a_m}$. Let $\\mathbf{e}$ be a vector satisfying\n",
    "\n",
    "$\\mathbf{x}=\\sum_{i=1}^{m}{c_i\\mathbf{p}_i}+\\mathbf{e} \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ eq(1)$\n",
    "\n",
    "for some set of coefficients ${c_1, \\dots, c_m}$. Then by the Cauchy-Schwarz inequality,\n",
    "\n",
    "\\begin{eqnarray}\n",
    "\\|\\mathbf{e}\\|^2\\|\\mathbf{y}\\|^2 &\\ge& | \\langle \\mathbf{e},\\mathbf{y} \\rangle |^2 \\\\\n",
    "&=&\\left| \\langle \\mathbf{x},\\mathbf{y} \\rangle - \\langle \\sum_{c=1}^{m}{c_{i}p_{i}}, \\mathbf{y} \\rangle \\right|^2 \\\\\n",
    "&=&| \\langle \\mathbf{x},\\mathbf{y} \\rangle |^2\n",
    "\\end{eqnarray}\n",
    "\n",
    "The lower bound is independent of the coefficients ${c_i}$, and hence no set of coefficients can make the bound smaller. By the quality condition for the Cauchy-Schwarz inequality, the lower bound is achieved --implying the minimum $\\|\\mathbf{e}\\|$ -- when\n",
    "\n",
    "$\\mathbf{e}=\\alpha\\mathbf{y}$\n",
    "\n",
    "for some scalar $\\alpha$. Since $\\mathbf{e}$ must satisfy eq(1), it must be the case that:\n",
    "\n",
    "$\\alpha=1$\n",
    "\n",
    "$a_i=c_i$\n",
    "\n",
    "$\\mathbf{e}=\\mathbf{y}$\n",
    "\n",
    "hence the error is orthogonal to the data. &emsp;&emsp;&emsp; QED <br>\n",
    "\n",
    "<br>\n",
    "\n",
    "It is important to note that because $\\mathbf{\\hat{x}}$ is a linear combination of the data vectors, it is orthogonal to the error vector:\n",
    "\n",
    "$ \\langle \\mathbf{\\hat{x}}, \\mathbf{e} \\rangle = 0$\n",
    "\n",
    "Or, in other words, the residual vector (errors from each point) is orthogonal to the column space. See demonstration below."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simple Numerical Examples\n",
    "\n",
    "Provide some simple python code and examples that emphasize the basic concepts.\n",
    "\n",
    "Note Figure 3.8(b), provided in the book.\n",
    "\n",
    "It may be confusing that the minimized error is the vertical distance betweent the regressed line and the data points. The following example will show how these vertical distances does not contradict the earlier statements of orthogonal error minimization.\n",
    "\n",
    "Let data point vector $\\mathbf{y}=[1,4,5]^T$, measured at time $\\mathbf{t}=[0,1,2]^T$ be approximated by a linear regression:\n",
    "\n",
    "$\\mathbf{y}=a_1\\mathbf{t}+a_0$\n",
    "\n",
    "This may be expressed as:\n",
    "\n",
    "$$\n",
    "\\begin{bmatrix}\n",
    "1\\\\4\\\\5\n",
    "\\end{bmatrix} =\n",
    "\\begin{bmatrix}\n",
    "0 & 1 \\\\\n",
    "1 & 1 \\\\\n",
    "2 & 1\n",
    "\\end{bmatrix}\n",
    "\\begin{bmatrix} a_1 \\\\ a_0 \\end{bmatrix}\n",
    "$$\n",
    "\n",
    "Here we have $\\mathbf{p}_1=\\mathbf{t}$ and $\\mathbf{p}_2=[1,1,1]^T$\n",
    "\n",
    "To compute the Grammian matrix, R, we need the inner product of $\\mathbf{p}_1$ and $\\mathbf{p}_2$ to themselves, and to each other.\n",
    "\n",
    "We also compute the *cross-correlation vector* $\\mathbf{p}_x$:\n",
    "$$\n",
    "\\mathbf{p}_x=[\\langle \\mathbf{y}, \\mathbf{p}_1 \\rangle, \\langle \\mathbf{y}, \\mathbf{p}_2 \\rangle]^T\n",
    "$$\n",
    "\n",
    "Finally, we verify the linear independence of $\\mathbf{p}_1, \\mathbf{p}_2$ (thus guaranteeing inertibility of R) by asserting\n",
    "\n",
    "$\\langle \\mathbf{\\hat{p}}_1, \\mathbf{\\hat{p}}_2 \\rangle \\not= 1$\n",
    "\n",
    "where $\\mathbf{\\hat{p}}_i$ is the unit vector in the direction of $\\mathbf{p}_i$\n",
    "\n",
    "Our p-vectors are in $\\mathbb{R}^3$. When we say that our error is minimized by being orthogonal to the data vectors we mean that the residual is orthogonal to the column space of the matrix created by the data. In our case, this is the matrix composed of $\\mathbf{p}_1$ and $\\mathbf{p}_2$. When this is drawn on the 2D plot of the data, it looks like vertical distances from the true data to the regressed line. But if we plot the data vectors in 3D, in our case a plane, we can see that the residual error is perpendicular to this plane, shown by\n",
    "\n",
    "$\\langle \\mathbf{p}_1, \\mathbf{e} \\rangle = 0$\n",
    "\n",
    "$\\langle \\mathbf{p}_2, \\mathbf{e} \\rangle = 0$\n",
    "\n",
    "$\\mathbf{y}$ and $\\mathbf{t}$, as well as the regressed line, are drawn below.\n",
    "\n",
    "In the 3d plot, you can see the plane spanned by ${\\mathbf{p}_1,\\mathbf{p}_2}$, and that the estimated $\\mathbf{\\hat{y}}$ lies in this plane. You can also see the error vector is orthogonal to this plane created by the data vectors. Finally, if you add the error vector to the estimated vector, you get back the original, true data\n",
    "\n",
    "$\\mathbf{\\hat{y}} + \\mathbf{e} = \\mathbf{y}$\n",
    "\n",
    "seen by the fact the yellow vector representing the true data is out of the plane.\n",
    "\n",
    "You can grab and rotate the plot with the mouse, to see these facts."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner product of p1 with e_vec = -6.217248937900877e-15\n",
      "inner product of p2 with e_vec = -4.440892098500626e-15\n",
      "If these equal 0, then error is orthogonal to data vectors.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvYAAAINCAYAAABVtDv6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAXEQAAFxEByibzPwAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4VVXa///3JqSQQk/oRZBi6D2ISBEQDUV6VSLyHRB4xgmiwxQf9PeM44BKUBgZARUUCCBMRIUBZkA0FCmhSJGAdJUSSgiEQNr6/RFyhsM56SekfV7XlStz9lp7rfschLn3Pmuv2zLGICIiIiIiRVupgg5ARERERETyTom9iIiIiEgxoMReRERERKQYUGIvIiIiIlIMKLEXERERESkGlNiLiIiIiBQDSuxFRERERIoBJfYiIiIiIsWAEnsRERERkWJAib2IiIiISDGgxF5EREREpBhQYi8iIiIiUgwosRcRERERKQaU2IuIiIiIFAMuTewty/K3LOsdy7KiLctKsCzrqmVZey3LetuV84iIiIiIiD3LGOOagSyrDbABqAQcBg4BZYFAoKYxprRLJhIREREREQcuSbYty/IH1gNlgP7GmC/va2/vinlERERERMQ5V91FfwOoDEy6P6kHMMbsctE8IiIiIiLiRJ6X4liWVQa4SNp6fX9jTIIrAhMRERERkexzxR37toAfsNUYk2BZ1lNAT8ALOAasNMb86oJ5REREREQkA65I7APv/r5kWdYXQP/72v9qWdYLxpjw7AxmWdbhDJoaAgnAudyFKSIiIiJS6NQCbhljquZ1IFck9hXu/u4HpACTgM8Bb2AyMBVYbFnWj8aY/XmYp5Snp6df/fr1A7PuKiIiIiJS+J04cYI7d+64ZCxXJPbpe+GXBv5kjPngnrZXLMuqAwwBXgFGZTWYMaaJs+OWZR2uX79+4OHDGd3QFxEREREpWpo0acKRI0dcsiLFFQWqbt7zvz9x0p5+rIsL5hIRERERESdckdifufv7ljEmxkn76bu/A1wwl4iIiIiIOOGKxH7f3d9lLMvydNJe8e7vm07aRERERETEBfKc2BtjzgIHAAvny23Sj+1z0iYiIiIiIi7gijv2ADPv/n7Hsqxq6Qcty2oJvHz35T9cNJeIiIiIiNzHFbviYIxZZllWL2AMcMSyrO1AGeBRwBNYYIz53BVziYiIiIiII5ck9nc9D2wDxgNdAQPsBT40xix24TwiIiIiInIflyX2xhgDLLj7U6gYY0gLT0QKgmVZWJZV0GGIiIgUa668Y19oGGO4ceMGcXFx3Lp1i5SUlIIOSaTE8/DwwM/Pj0qVKuHm5lbQ4YiIiBQ7xS6xT01N5cKFC1y/fr2gQxGReyQmJnLlyhXi4+OpXbu2knsREREXK3aJ/fXr121JfcWKFfHz88PT01PLAEQKUGpqKvHx8Vy8eJHbt29z5coVAgJUs05ERMSVil1if+3aNQACAgKoVKlSAUcjIgClSpWiXLlyAPz666/cuHFDib2IiIiLuWof+0LBGMOdO3cAKFu2bAFHIyL38/HxAdKW5eiBdhEREdcqdol9Oq3fFSl8SpX67z85SuxFRERcq1gl9iIiIiIiJZUSexERERGRYkCJvYiIiIhIMaDEXkRERESkGFBiL7kWEhKCZVls2bIlz2O9/vrrWJbFokWL8jxWbnTt2hXLsjh9+nShHE9EREQkK0rs8yjmxh3mbj7Osx/tZMAH23j2o538/ZufiLlxp6BDk2Jg0aJFWJbF66+/XtChiIiISCFX7ApUPSi3k1J446vDrIr6maQU+237Io9fZvZ/jjG4TS2m9w3Ey714br351ltvMW3aNGrXrp3nsSZPnszw4cOpVq2aCyITERERKXmU2OfC7aQUxny8i52nrmbYJynFEL7rLCdjbrJ4bPtimdxXq1bNZYl45cqVqVy5skvGEhERESmJtBQnF9746nCmSf29dp66yhtfHcnniLJnx44d9O/fH39/fzw9Palbty4TJ07k119/deh77xKQY8eOMXz4cKpUqUKpUqX44osvgMzX2P/www/07duX8uXL4+fnx+OPP86///1vtmzZgmVZhISE2PXPaI39vWvVv/jiC4KCgvDx8aFixYqMGDGCn3/+2WHu8+fPM3PmTLp06UKNGjXw8PCgatWqDBw4kN27d+f687tfSkoK77zzDo0bN8bLy4tatWrx0ksvERcXl+E5a9euZezYsTzyyCOULVsWHx8fWrRowV//+ldb1eR73/vzzz8PwBtvvIFlWbaf9M/JGEN4eDjDhw+nYcOG+Pj44OfnR/v27fnggw9ITU112fsVERGRwk137HPo0o3brIpyTCYzsyrqHFN6NsTfzzOfosrakiVL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u3YlLi6OKVOm8NBDD+Hu7s7vfvc7u77r168nODgYf39/PD09qVevHlOmTOHKlStOx758+TIvvvgi1atXp0yZMjRt2pS///3vGGOwLIu6deva9b93ycexY8cYPnw4VapUoVSpUnzxxRe2fsnJycybN4+OHTtStmxZypQpQ8uWLZk9ezbJyY5r32JiYpg2bRqBgYH4+vpSrlw5GjZsyHPPPceuXbvs+p45c4YXX3yRhg0b4u3tTcWKFWnSpAnjx48nOjraYexz584xefJk6tevj5eXFxUrVqRPnz5s3749w8/8448/pmXLlpQpU4aqVasSEhLChQsXMuyfmZSUFN555x0aN26Ml5cXtWrV4qWXXiIuLi7Dc9auXcvYsWN55JFHKFu2LD4+PrRo0YK//vWv3Llzx65v165def755wF44403sCzL9rNo0SIAjDGEh4czfPhwGjZsiI+PD35+frRv354PPviA1NTUXL03ERGRfBFzDCJehPdbwe4F9km9Vzno8nsIPQxPvgl+VQsuThfTHfsSJCEhgS5dunDmzBm6dOlC69atqVChgq192rRpzJgxAw8PD9q1a0e1atU4cOAAYWFhfPnll2zbto0qVarY+l++fJlHH32U48ePU716dfr168e1a9cIDQ3l+PHMr3yjo6Np164dlSpVolu3bly7dg13d3dbnMHBwXzzzTdUrFiRoKAgvLy82LlzJ6GhoXzzzTdERERQqlTademNGzfo0KEDp06dolatWvTs2ZPSpUtz9uxZli9fTr169Wjfvj2QlqS3bt2aq1ev0qBBA55++mlSUlI4c+YMCxYsoGPHjjRq1MgW544dOwgODubatWs0atSI4OBgYmJi2LBhA+vXr2fp0qUMGzbM7r2lf47u7u5069aNcuXK8a9//YtvvvmGFi1a5PjPbfTo0Sxfvhxvb2969epF6dKlWbx4Mdu2bbN9Zvd74YUXSEhIoGnTpjRv3pzr16+za9cu/vSnP7Fp0yY2btyIm5sbAL179yY5OZlt27bRokULWrZsaRvn4YcfBuDOnTuMHDmSSpUqERgYSOvWrbly5Qrbt29n0qRJ7Nq1y3YRICIiUmB+3QeRs+DHrwBj3+ZbBTpOSrtL7+lXIOHlO2NMkfgBDgcGBprMpKSkmCNHjpgjR46YlJQU551SU425da1o/aSmZvq+s3Lq1ClD2n/d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\n",
      "text/plain": [
       "<Figure size 900x600 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# create time and measured data\n",
    "t_vec = np.array([0,1,2])\n",
    "y_vec = np.array([1,4,5])\n",
    "\n",
    "# create data vectors\n",
    "p_1 = t_vec\n",
    "p_2 = np.array([1,1,1])\n",
    "# create the 'A' matrix, or data matrix from data vectors\n",
    "data_mat = np.array([p_1,p_2]).transpose()\n",
    "\n",
    "# regression with least squares, compute the Grammian matrix, 'R'\n",
    "reg_ls_R = np.array([[np.inner(p_1,p_1),np.inner(p_2,p_1)],[np.inner(p_1,p_2),np.inner(p_2,p_2)]])\n",
    "\n",
    "# compute the cross-correlation vector\n",
    "p_x = np.array([np.inner(y_vec,p_1),np.inner(y_vec,p_2)])\n",
    "\n",
    "# compute the norms of the data vectors, to assert invertibility of R (Grammian)\n",
    "p_1_unit = p_1 / np.linalg.norm(p_1)\n",
    "p_2_unit = p_2 / np.linalg.norm(p_2)\n",
    "\n",
    "assert(np.inner(p_1_unit,p_2_unit)!=1)\n",
    "\n",
    "# compute the error-minimizing coefficients\n",
    "a_vec = np.linalg.inv(reg_ls_R) @ p_x\n",
    "\n",
    "# compute estimate data\n",
    "y_hat = data_mat @ a_vec\n",
    "\n",
    "# compute errors for each point in the data vector\n",
    "e_vec = y_vec - y_hat\n",
    "\n",
    "# show data vectors are orthogonal to error\n",
    "test_1 = np.inner(p_1,e_vec)\n",
    "test_2 = np.inner(p_2,e_vec)\n",
    "print(f'inner product of p1 with e_vec = {test_1}')\n",
    "print(f'inner product of p2 with e_vec = {test_2}')\n",
    "print('If these equal 0, then error is orthogonal to data vectors.')\n",
    "\n",
    "# fig1,(ax1,ax2) = plt.subplots(2,1)\n",
    "fig1, ax1 = plt.subplots(1,1)\n",
    "# plt.subplot(2,1,1)\n",
    "plt.plot(t_vec,y_vec, 'o', label='original data' )\n",
    "plt.plot(t_vec,y_hat, '-', label='regressed data' )\n",
    "plt.plot([0,0],[y_vec[0],y_hat[0]], label='error[0]')\n",
    "plt.plot([1,1],[y_vec[1],y_hat[1]], label='error[1]')\n",
    "plt.plot([2,2],[y_vec[2],y_hat[2]], label='error[2]')\n",
    "ax1.set_ylim(0,6)\n",
    "plt.legend()\n",
    "\n",
    "ax1.xaxis.set_major_locator(plt.MaxNLocator(5))\n",
    "ax1.yaxis.set_major_locator(plt.MaxNLocator(7))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\n",
       "\n",
       "mpl.get_websocket_type = function() {\n",
       "    if (typeof(WebSocket) !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof(MozWebSocket) !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert('Your browser does not have WebSocket support.' +\n",
       "              'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "              'Firefox 4 and 5 are also supported but you ' +\n",
       "              'have to enable WebSockets in about:config.');\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = (this.ws.binaryType != undefined);\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById(\"mpl-warnings\");\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent = (\n",
       "                \"This browser does not support binary websocket messages. \" +\n",
       "                    \"Performance may be slow.\");\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = $('<div/>');\n",
       "    this._root_extra_style(this.root)\n",
       "    this.root.attr('style', 'display: inline-block');\n",
       "\n",
       "    $(parent_element).append(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen =  function () {\n",
       "            fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
       "            fig.send_message(\"send_image_mode\", {});\n",
       "            if (mpl.ratio != 1) {\n",
       "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
       "            }\n",
       "            fig.send_message(\"refresh\", {});\n",
       "        }\n",
       "\n",
       "    this.imageObj.onload = function() {\n",
       "            if (fig.image_mode == 'full') {\n",
       "                // Full images could contain transparency (where diff images\n",
       "                // almost always do), so we need to clear the canvas so that\n",
       "                // there is no ghosting.\n",
       "                fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "            }\n",
       "            fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "        };\n",
       "\n",
       "    this.imageObj.onunload = function() {\n",
       "        fig.ws.close();\n",
       "    }\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_header = function() {\n",
       "    var titlebar = $(\n",
       "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
       "        'ui-helper-clearfix\"/>');\n",
       "    var titletext = $(\n",
       "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
       "        'text-align: center; padding: 3px;\"/>');\n",
       "    titlebar.append(titletext)\n",
       "    this.root.append(titlebar);\n",
       "    this.header = titletext[0];\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = $('<div/>');\n",
       "\n",
       "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
       "\n",
       "    function canvas_keyboard_event(event) {\n",
       "        return fig.key_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
       "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
       "    this.canvas_div = canvas_div\n",
       "    this._canvas_extra_style(canvas_div)\n",
       "    this.root.append(canvas_div);\n",
       "\n",
       "    var canvas = $('<canvas/>');\n",
       "    canvas.addClass('mpl-canvas');\n",
       "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
       "\n",
       "    this.canvas = canvas[0];\n",
       "    this.context = canvas[0].getContext(\"2d\");\n",
       "\n",
       "    var backingStore = this.context.backingStorePixelRatio ||\n",
       "\tthis.context.webkitBackingStorePixelRatio ||\n",
       "\tthis.context.mozBackingStorePixelRatio ||\n",
       "\tthis.context.msBackingStorePixelRatio ||\n",
       "\tthis.context.oBackingStorePixelRatio ||\n",
       "\tthis.context.backingStorePixelRatio || 1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband = $('<canvas/>');\n",
       "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
       "\n",
       "    var pass_mouse_events = true;\n",
       "\n",
       "    canvas_div.resizable({\n",
       "        start: function(event, ui) {\n",
       "            pass_mouse_events = false;\n",
       "        },\n",
       "        resize: function(event, ui) {\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "        stop: function(event, ui) {\n",
       "            pass_mouse_events = true;\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "    });\n",
       "\n",
       "    function mouse_event_fn(event) {\n",
       "        if (pass_mouse_events)\n",
       "            return fig.mouse_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    rubberband.mousedown('button_press', mouse_event_fn);\n",
       "    rubberband.mouseup('button_release', mouse_event_fn);\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
       "\n",
       "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
       "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
       "\n",
       "    canvas_div.on(\"wheel\", function (event) {\n",
       "        event = event.originalEvent;\n",
       "        event['data'] = 'scroll'\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        mouse_event_fn(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.append(canvas);\n",
       "    canvas_div.append(rubberband);\n",
       "\n",
       "    this.rubberband = rubberband;\n",
       "    this.rubberband_canvas = rubberband[0];\n",
       "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
       "    this.rubberband_context.strokeStyle = \"#000000\";\n",
       "\n",
       "    this._resize_canvas = function(width, height) {\n",
       "        // Keep the size of the canvas, canvas container, and rubber band\n",
       "        // canvas in synch.\n",
       "        canvas_div.css('width', width)\n",
       "        canvas_div.css('height', height)\n",
       "\n",
       "        canvas.attr('width', width * mpl.ratio);\n",
       "        canvas.attr('height', height * mpl.ratio);\n",
       "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
       "\n",
       "        rubberband.attr('width', width);\n",
       "        rubberband.attr('height', height);\n",
       "    }\n",
       "\n",
       "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
       "    // upon first draw.\n",
       "    this._resize_canvas(600, 600);\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus () {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>')\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            // put a spacer in here.\n",
       "            continue;\n",
       "        }\n",
       "        var button = $('<button/>');\n",
       "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
       "                        'ui-button-icon-only');\n",
       "        button.attr('role', 'button');\n",
       "        button.attr('aria-disabled', 'false');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "\n",
       "        var icon_img = $('<span/>');\n",
       "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
       "        icon_img.addClass(image);\n",
       "        icon_img.addClass('ui-corner-all');\n",
       "\n",
       "        var tooltip_span = $('<span/>');\n",
       "        tooltip_span.addClass('ui-button-text');\n",
       "        tooltip_span.html(tooltip);\n",
       "\n",
       "        button.append(icon_img);\n",
       "        button.append(tooltip_span);\n",
       "\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    var fmt_picker_span = $('<span/>');\n",
       "\n",
       "    var fmt_picker = $('<select/>');\n",
       "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
       "    fmt_picker_span.append(fmt_picker);\n",
       "    nav_element.append(fmt_picker_span);\n",
       "    this.format_dropdown = fmt_picker[0];\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = $(\n",
       "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
       "        fmt_picker.append(option)\n",
       "    }\n",
       "\n",
       "    // Add hover states to the ui-buttons\n",
       "    $( \".ui-button\" ).hover(\n",
       "        function() { $(this).addClass(\"ui-state-hover\");},\n",
       "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
       "    );\n",
       "\n",
       "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_message = function(type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function() {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1]);\n",
       "        fig.send_message(\"refresh\", {});\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0, 0, fig.canvas.width, fig.canvas.height);\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch(cursor)\n",
       "    {\n",
       "    case 0:\n",
       "        cursor = 'pointer';\n",
       "        break;\n",
       "    case 1:\n",
       "        cursor = 'default';\n",
       "        break;\n",
       "    case 2:\n",
       "        cursor = 'crosshair';\n",
       "        break;\n",
       "    case 3:\n",
       "        cursor = 'move';\n",
       "        break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message(\"ack\", {});\n",
       "}\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = \"image/png\";\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src);\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data);\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig[\"handle_\" + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "}\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function(e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e)\n",
       "        e = window.event;\n",
       "    if (e.target)\n",
       "        targ = e.target;\n",
       "    else if (e.srcElement)\n",
       "        targ = e.srcElement;\n",
       "    if (targ.nodeType == 3) // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "\n",
       "    // jQuery normalizes the pageX and pageY\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    // offset() returns the position of the element relative to the document\n",
       "    var x = e.pageX - $(targ).offset().left;\n",
       "    var y = e.pageY - $(targ).offset().top;\n",
       "\n",
       "    return {\"x\": x, \"y\": y};\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys (original) {\n",
       "  return Object.keys(original).reduce(function (obj, key) {\n",
       "    if (typeof original[key] !== 'object')\n",
       "        obj[key] = original[key]\n",
       "    return obj;\n",
       "  }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function(event, name) {\n",
       "    var canvas_pos = mpl.findpos(event)\n",
       "\n",
       "    if (name === 'button_press')\n",
       "    {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {x: x, y: y, button: event.button,\n",
       "                             step: event.step,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.key_event = function(event, name) {\n",
       "\n",
       "    // Prevent repeat events\n",
       "    if (name == 'key_press')\n",
       "    {\n",
       "        if (event.which === this._key)\n",
       "            return;\n",
       "        else\n",
       "            this._key = event.which;\n",
       "    }\n",
       "    if (name == 'key_release')\n",
       "        this._key = null;\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which != 17)\n",
       "        value += \"ctrl+\";\n",
       "    if (event.altKey && event.which != 18)\n",
       "        value += \"alt+\";\n",
       "    if (event.shiftKey && event.which != 16)\n",
       "        value += \"shift+\";\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, {key: value,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
       "    if (name == 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message(\"toolbar_button\", {name: name});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to  previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function() {\n",
       "        comm.close()\n",
       "    };\n",
       "    ws.send = function(m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function(msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data'])\n",
       "    });\n",
       "    return ws;\n",
       "}\n",
       "\n",
       "mpl.mpl_figure_comm = function(comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = $(\"#\" + id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm)\n",
       "\n",
       "    function ondownload(figure, format) {\n",
       "        window.open(figure.imageObj.src);\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy,\n",
       "                           ondownload,\n",
       "                           element.get(0));\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element.get(0);\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error(\"Failed to find cell for figure\", id, fig);\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    var output_index = fig.cell_info[2]\n",
       "    var cell = fig.cell_info[0];\n",
       "\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
       "    var width = fig.canvas.width/mpl.ratio\n",
       "    fig.root.unbind('remove')\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable()\n",
       "    $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
       "    fig.close_ws(fig, msg);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.close_ws = function(fig, msg){\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width/mpl.ratio\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message(\"ack\", {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>')\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items){\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) { continue; };\n",
       "\n",
       "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
       "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
       "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
       "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
       "    buttongrp.append(button);\n",
       "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
       "    titlebar.prepend(buttongrp);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(el){\n",
       "    var fig = this\n",
       "    el.on(\"remove\", function(){\n",
       "\tfig.close_ws(fig, {});\n",
       "    });\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(el){\n",
       "    // this is important to make the div 'focusable\n",
       "    el.attr('tabindex', 0)\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    }\n",
       "    else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager)\n",
       "        manager = IPython.keyboard_manager;\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which == 13) {\n",
       "        this.canvas_div.blur();\n",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\n",
       "    }\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.find_output_cell = function(html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i=0; i<ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code'){\n",
       "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] == html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "}\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel != null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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4CBIgARIgARIgARIwCsBCmCvpHgcCZAACfiEwMo1LbIaya9cWqisUuKhvtZfa+3f8rKwzJhUL4FAX4Hsk+GxGyRAAiRAAiRAAiSQNQIUwFlDyxOTAAmQQHYIfPRZo3RHoq4nD1bU2I2/Ipbav/Ujh8moYbXZ6RzPSgIkQAIkQAIkQAI+JkAB7OPJYddIgARIgARIgARIgARIgARIgAQyR4ACOHMseSYSIAESIAESIAESIAESIAESIAEfE6AA9vHksGskQAIkQAIkQAIkQAIkQAIkQAKZI0ABnDmWPBMJkAAJkAAJkAAJkAAJkAAJkICPCVAA+3hy2DUSIAESIAESIAESIAESIAESIIHMEaAAzhxLnokESIAESIAESIAESIAESIAESMDHBCiAfTw57BoJkAAJkAAJkAAJkAAJkAAJkEDmCFAAZ44lz0QCJEACJEACJEACJEACJEACJOBjAhTAPp4cdo0ESIAESIAESIAESIAESIAESCBzBCiAM8eSZyIBEiABEiABEiABEiABEiABEvAxAQpgH08Ou0YCJEACJEACJEACJEACJEACJJA5AhTAmWPJM5EACZAACZAACZAACZAACZAACfiYAAWwjyeHXSMBEiABEiABEiABEiABEiABEsgcAQrgzLHkmUiABEiABEiABEiABEiABEiABHxMgALYx5PDrpEACZAACZAACZAACZAACZAACWSOAAVw5ljyTCRAAiRAAiRAAiRAAiRAAiRAAj4mQAHs48lh10iABEiABEiABEiABEiABEiABDJHgAI4cyx5JhIgARIgARIgARIgARIgARIgAR8ToAD28eSwayRAAiRAAiRAAiRAAiRAAiRAApkjQAGcOZY8EwmQAAmQAAmQAAmQAAmQAAmQgI8JUAD7eHLYNRIgARIgARIgARIgARIgARIggcwRoADOHEueiQRIgARIgARIgARIgARIgARIwMcEKIB9PDnsGgmQAAmQAAmQAAmQAAmQAAmQQOYIUABnjiXPRAIkQAIkQAIkQAIkQAIkQAIk4GMCFMA+nhx2jQRIgARIgARIgARIgARIgARIIHMEKIAzx5JnIgESIAESIAESIAESIAESIAES8DEBCmAfTw67RgIkQAIkQAIkQAIkQAIkQAIkkDkCFMCZY8kzkQAJkAAJkAAJkAAJkAAJkAAJ+JgABbCPJ4ddIwESIAESIAESIAESIAESIAESyBwBCuDMseSZSIAESIAESIAESIAESIAESIAEfEyAAtjHk8OukQAJkAAJkAAJkAAJkAAJkAAJZI4ABXDmWPJMJEACJEACJEACJEACJEACJEACPiZAAezjyWHXSIAESIAESIAESIAESIAESIAEMkeAAjhzLHkmEiABEiABEiABEiABEiABEiABHxOgAPbx5LBrJEACJEACJEACJEACJEACJEACmSNAAZw5ljwTCZAACZAACZAACZAACZAACZCAjwlQAHuYnHg8LrFYzMORPIQESIAESIAESIAESIAESIAEio9AMBiUQCBQ8AOjAHaZwkgkIqtXr5aWlhbp7Ows+InmAEiABEiABEiABEiABEiABEhgIAQqKipk2LBhMnr0aAmHwwM5Vd7eSwHsgB7i99NPP5WNGzfmbWJ4YRIgARIgARIgARIgARIgARLwI4FBgwbJtGnTClIEUwA73FHLly+XVatWSSgUkvHjx0ttba3A5M9GAiRAAiRAAiRAAiRAAiRAAqVIACGh7e3tsnTpUolGozJmzBhpaGgoOBQUwA5T9uGHHxq350mTJsnw4cMLblLZYRIgARIgARIgARIgARIgARLIBoF169bJ559/LnCH3n777bNxiayekwLYhhcJr2bPnm3+uuOOO0pZWVlWJ4AnJwESIAESIAESIAESIAESIIFCIdDd3S1z58413V25cqXU19fLlClTZOjQoQUxBApg2zTBnP/++++bv+68887GDZqNBEiABEiABEiABEiABEiABEhAjPuz6qWnn35aqqurZdSoUXLAAQeY5Fh+bxTAFMB+v0fZPxIgARIgARIgARIgARIgAZ8QsArgd955R9asWWOMhkiKdeyxx/o+MRYFMAWwTx4ldoMESIAESIAESIAESIAESMDvBKwC+JNPPjEWYfyeOHGiHHrooTJu3DhfD4ECmALY1zcoO0cCJEACJEACJEACJEACJOAfAnYBjBxKqKJTXl4u++67r+yyyy7+6axDTyiAKYDzeoO++OKLJl7g1FNPlTvvvDOvfeHFS4vAE088Ia+99pq8+eabAvedtrY22W+//QT3JBsJrF69Wv75z3+an7fffluampoENQ932mkn+c53viOnnHKKBAIBgiKBgiGwYcMGueSSS+Thhx82SWuwgL3iiivkyiuvLJgx5KOjqAiyZMkSwQKfjQRIoIeAkwDG9yaek3322Ud23313X6OiAKYAzusNmisBDHF9+umn88s+r7Ptr4sjUyFEr7VRAPtrjvLZm5NPPln+9re/mTim3Xbbzbh1YXcbmyaog/i1r31N7r//fiZKzOck8dopETjnnHPk5ptvlqlTp5rFKSw1iNXDD5s7gVwJYGyo4XMGpWXYSMDvBCiA/T5DKfaPWaBTBDbAwymABwiQb0+bwH//93/LjBkzjLhBOv9DDjmEFuC0aRbfG3/0ox+ZTJZnnHGGjBw5sneAsAYffPDB0t7eLrfeequceeaZxTd4jqgoCUyYMEHWrl1rvBlqamqKcozZGBQFcDao8pyFToACuNBn0NZ/CuDcTigFcG5582rOBN544w3Za6+9KIB5g3gicO2118pPfvIT2X///eWFF17w9B4eRAL5JhAMBgUimBbG1GaCAjg1Xjy6NAhQABfZPFMA959QxEfCXQoCAe5/Tu0Xv/iFXHrppXL55ZfLVVdd5fmusArg3/zmN+YcjzzyiDQ3N5tU6ueff76Jt7M3xG/+3//9n7z++uvGLRHzBreu//qv/5ILLrhAKioqet+CRepLL73k2Ke//OUvctppp3nuLw/MHQEs0iZPnmxE6WOPPSY//elP5R//+IdJtY+/w/IGKx0WdQNtFMADJZif9+fyHrGO8Mknn5QjjjhCtt12W1mwYEF+Bs+reiawdOlSue666+Rf//qX+b5ALPfee+9tNjHwO5224447ygcffCDz58+X6dOn9zvFunXrZOzYsTJs2DBzTbjSa0PegV//+tfyyiuvCI5D7czDDjvMfH9CoDq1p556Sm655RaTs6C1tdW8B/HoCO054YQTEg4h0XegxrWq+y2yuP7yl7+Ue++9VxYvXiyHH364+U7Wds899xjPh7lz50okEjHfuyeddJKcd955UllZ2acf+G696667zCYRjv3Zz34m7733nlRVVckxxxxjGAwZMsRYpPH5jnh78ADb66+/3mwweWnbb7+9fPTRR/Lxxx/Ldttt1+8tmH+IWLBdtGhRyrH7VgF8xx13yO9+9zv59NNPTd8xDtxbCKmxtoULF8pf//pX+fe//204Yk2DOTvwwAPlsssuM58d2jREy2msDMvxcgfk/phsrYuxxsHz/PWvf13+/ve/Ow4Ma1ysl2+66SZBWIO2jRs3mr898MAD5v5E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Dxp1odkKjwDm7aqrrvLUcSbJ9ISJByUhUKzrYgrgIrv1KYCLbEI5HBIgARIgARIgARIgARIggYwRoADOGEp/nIgC2B/zwF6QAAmQAAmQAAmQAAmQAAn4jwAFsP/mZEA9ogAeED6+mQRIgARIgARIgARIgARIoIgJUAAX2eRSABfZhHI4JEACJEACJEACJEACJEACGSNAAZwxlP44ERIzzZ4923Rmp512MlkF2UiABEiABEiABEiABEiABEiABMSUG5szZ45BsWDBAvN79erVAh21zz77yO677+5rTIE4U/H2myBMKCZ2u+22k5qaGl9PIDtHAiRAAiRAAiRAAiRAAiRAArkisH79eiN8oZc+++wzCuBcgc/mdRYtWiQtLS0yevRoGTduXDYvxXOTAAmQAAmQAAmQAAmQAAmQQMEQWLZsmbH4tre3y8qVKymAC2bmEnS0ublZFi9ebI5oaGiQuro6CYVCxTA0joEESIAESIAESIAESIAESIAEUiaA2F/opOXLl5v3rlixQjo6OiiAUybpwzfAK3zJkiWybt06H/aOXSIBEiABEiABEiABEiABEiCB/BFobW01VmBtGgO87777ym677Za/jnm4MmOAXSDFYjEjgFetWiWdnZ0SCAQ84OQhJEACJEACJEACJEACJEACJFB8BGAkhC6C+IX7szWVFNyiKyoqZP/99zeJhP3cKICTzA6E8MMPPyzz58+XkSNHSm1trZ/nk30jARIgARIgARIgARIgARIggYwTcMudjGRYn376qUyePFkOP/xwGTt2bMavnckTUgB7oPnOO+/Iu+++K9jZGDp0qFRXV9Mi7IEbDyEBEiABEiABEiABEiABEiheArAIIy4YlXO22WYbOeaYYyQYDPp6wP8fYj74yyw3OQ0AAAAASUVORK5CYII=\" width=\"960\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "(-1, 7)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create 3D plot to show data vectors and perpendicular error vector\n",
    "\n",
    "# necessary to turn on interactivity on 3d plot\n",
    "%matplotlib notebook\n",
    "\n",
    "# create necessary elements for plotting surface\n",
    "v1 = p_1_unit\n",
    "v2 = p_2_unit\n",
    "\n",
    "# the cross product is a vector normal to the plane\n",
    "cp = np.cross(v1, v2)\n",
    "a, b, c = cp\n",
    "\n",
    "xx = np.linspace(-1, 7, 5, endpoint=True)\n",
    "yy = np.linspace(-1, 7, 5, endpoint=True)\n",
    "XX, YY = np.meshgrid(xx, yy)\n",
    "\n",
    "ZZ = (-a * XX - b * YY) / c\n",
    "\n",
    "# error plus y_hat vector\n",
    "e_p_yhat = y_hat + e_vec\n",
    "\n",
    "# print to screen\n",
    "fig2 = plt.figure()\n",
    "ax2 = fig2.add_subplot(111,projection='3d')\n",
    "ax2.plot_surface(XX,YY,ZZ,alpha=0.2)\n",
    "\n",
    "# and plot the point\n",
    "ax2.plot([0,y_hat[0]] , [0,y_hat[1]] , [0,y_hat[2]],  color='green', label='y_hat')\n",
    "ax2.plot([0,p_1[0]] , [0,p_1[1]] , [0,p_1[2]],  color='red', label='p_1')\n",
    "ax2.plot([0,p_2[0]] , [0,p_2[1]] , [0,p_2[2]],  color='red', label='p_2')\n",
    "\n",
    "ax2.plot([y_hat[0],e_p_yhat[0]],[y_hat[1],e_p_yhat[1]],[y_hat[2],e_p_yhat[2]], color='blue', label='e_vec from y_hat')\n",
    "\n",
    "ax2.plot([0,y_vec[0]],[0,y_vec[1]],[0,y_vec[2]], color='yellow', label='y_vec')\n",
    "\n",
    "\n",
    "ax2.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),\n",
    "          fancybox=True, shadow=True, ncol=5)\n",
    "# plt.legend()\n",
    "\n",
    "# set aspect ratio to square, for proper viewing of orthogonality\n",
    "ax2.set_aspect('equal')\n",
    "ax2.set_xlim(-1,7)\n",
    "ax2.set_ylim(-1,7)\n",
    "ax2.set_zlim(-1,7)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, we make one more observation, specific to the matrix case.\n",
    "\n",
    "Recall that the Grammian matrix, $R$, is the left hand matrix in the *normal equations*:\n",
    "\n",
    "$$\n",
    "\\begin{bmatrix}\n",
    "\\langle \\mathbf{p}_1, \\mathbf{p}_1 \\rangle & \\cdots & \\langle \\mathbf{p}_m, \\mathbf{p}_1 \\rangle \\\\\n",
    "\\vdots &  \\ddots & \\vdots \\\\\n",
    "\\langle \\mathbf{p}_1, \\mathbf{p}_m \\rangle &  \\cdots & \\langle \\mathbf{p}_m, \\mathbf{p}_m \\rangle\n",
    "\\end{bmatrix}\n",
    "\\begin{bmatrix} c_1 \\\\ \\vdots \\\\ c_m \\end{bmatrix} =\n",
    "\\begin{bmatrix}\n",
    "\\langle \\mathbf{x}, \\mathbf{p}_1 \\rangle \\\\\n",
    "\\vdots \\\\\n",
    "\\langle \\mathbf{x}, \\mathbf{p}_m \\rangle\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "If we denote our data matrix as $A$, note that $R$ may also be represented as $A^HA$. Additionally, we may present the right hand vector, $\\mathbf{p}_x$, as $A^H\\mathbf{x}$.\n",
    "\n",
    "Also recall that if the columns in the data matrix, $A$, are linearly independent, then $R$ is invertible. Hence,\n",
    "\n",
    "$R\\mathbf{c}=\\mathbf{p}_x$\n",
    "\n",
    "$\\Rightarrow A^HA\\mathbf{c}=A^H\\mathbf{x}$\n",
    "\n",
    "$\\Rightarrow \\mathbf{c} = (A^HA)^{-1}A^H\\mathbf{x}$\n",
    "\n",
    "Below we show that the **Moore-Penrose pseudo-inverse**, $(A^HA)^{-1}A^H$, is equivalent to the process above when your data can be expressed as a matrix (i.e. not in function space)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "error between Grammian and pseudo-inverse method for coefficients: [-4.44089210e-16 -6.66133815e-16]\n"
     ]
    }
   ],
   "source": [
    "a_pseudo = np.linalg.inv(data_mat.transpose()@data_mat)@data_mat.transpose()@y_vec\n",
    "\n",
    "err_coeffs = a_pseudo - a_vec\n",
    "\n",
    "print(f'error between Grammian and pseudo-inverse method for coefficients: {err_coeffs}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## An Engineering Application\n",
    "\n",
    "Provide a more sophisticated example showing one engineering example of the topic, complete with python code.\n",
    "\n",
    "Given a mass, spring, damper system,\n",
    "\n",
    "$m\\ddot{x} - b\\dot{x} - kx = u$\n",
    "\n",
    "with known inputs and outputs, estimate the system parameters, $m, k, b$.\n",
    "\n",
    "Note: Outputs are usually measured with instruments that introduce noise into the measurements. So we call this an estimate because if we had perfect measurements, you could retrieve the exact values. Due to the noise in the measurements, and imperfect actuator, noise will be added into the data you use to retrieve the parameters.\n",
    "\n",
    "It is easiest to take advantage of the matrix form of the Moore-Penrose Pseudo-Inverse:\n",
    "\n",
    "$A\\mathbf{c} = \\mathbf{x}$\n",
    "\n",
    "$\\mathbf{c} = (A^HA)^{-1}A^H\\mathbf{x}$\n",
    "\n",
    "where, for our problem,\n",
    "\n",
    "$$\n",
    "A=\\begin{bmatrix}\n",
    "\\mathbf{\\ddot{x}} & \\mathbf{-\\dot{x}} & -\\mathbf{x}\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "$$\n",
    "c=\\begin{bmatrix} \\mathbf{m} \\\\ \\mathbf{b} \\\\ \\mathbf{k} \\end{bmatrix}\n",
    "$$\n",
    "\n",
    "$$\n",
    "\\mathbf{x}=\\mathbf{u}\n",
    "$$\n",
    "\n",
    "*Suggestion*: Play with the sigma (standard deviation) multiplier $sigma_{mult}$ for the noise, as well as $t_{fin}$, to see limits of this method, and how longer data sampling times can help with the estimation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimated parameter reconstruction m, b, k: 1.0006, 3.9996, 4.8886\n",
      "Perfect parameter reconstruction m, b, k: 1.0000, 4.0000, 5.0000\n"
     ]
    }
   ],
   "source": [
    "# PROBLEM SETUP\n",
    "\n",
    "# create time vector\n",
    "dt = 0.01\n",
    "t_init = 0\n",
    "t_fin = 10\n",
    "t_lt = np.int32((t_fin - t_init)/dt + 1)\n",
    "tt = np.linspace(t_init,t_fin,t_lt.astype(int))\n",
    "\n",
    "# true system params\n",
    "mass = 1\n",
    "b_damp = 4\n",
    "k_sp = 5\n",
    "m_b_k_tr = np.array([mass,b_damp,k_sp])\n",
    "\n",
    "# create true data, and true output (to guarantee solvability)\n",
    "xx = 7 * np.sin(tt**2)\n",
    "xx_d = 14*tt*np.cos(tt**2)\n",
    "xx_dd = 14*np.cos(tt**2) - 28*tt**2*np.sin(tt**2)\n",
    "\n",
    "A_tr_transpose = np.array([xx_dd,-xx_d,-xx])\n",
    "A_tr = A_tr_transpose.transpose()\n",
    "\n",
    "# uu = mass*xx_dd - b_damp*xx_d - k_sp*xx\n",
    "uu = A_tr @ m_b_k_tr\n",
    "\n",
    "# add noise to true data, to simulate real world measurements\n",
    "# generate noise\n",
    "sigma_mult = 0.5\n",
    "noise_0 = sigma_mult * np.random.randn(t_lt)\n",
    "noise_1 = sigma_mult * np.random.randn(t_lt)\n",
    "noise_2 = sigma_mult * np.random.randn(t_lt)\n",
    "noise_u = sigma_mult * 0.1 * np.random.randn(t_lt)\n",
    "\n",
    "xx_noise = noise_0 + xx\n",
    "xx_d_noise = noise_1 + xx_d\n",
    "xx_dd_noise = noise_2 + xx_dd\n",
    "uu_noise = noise_u + uu\n",
    "\n",
    "# =====================================\n",
    "\n",
    "# PROBLEM COMPUTATION\n",
    "\n",
    "# assert data matrix vectors are linearly independent\n",
    "assert(np.inner(xx_dd_noise,xx_d_noise)!=1)\n",
    "assert(np.inner(xx_dd_noise,xx_noise)!=1)\n",
    "assert(np.inner(xx_d_noise,xx_noise)!=1)\n",
    "\n",
    "# Now use noisy measurements, and estimate the system parameters, m, k, b\n",
    "\n",
    "# create A matrix, or data vectors, as well as its transpose, for use of the Moore-Penrose Pseudo-Inverse\n",
    "A_mat_transpose = np.array([xx_dd_noise,-xx_d_noise,-xx_noise])\n",
    "A_mat = A_mat_transpose.transpose()\n",
    "\n",
    "# make sure your coefficient order matches your A matrix, fix signs of coefficients\n",
    "m_b_k_hat = np.linalg.inv(A_mat_transpose @ A_mat) @ A_mat_transpose @ uu_noise\n",
    "\n",
    "# demonstrate that with perfect measurements, perfect results can be obtained\n",
    "m_b_k_perfect = np.linalg.inv(A_tr_transpose @ A_tr) @ A_tr_transpose @ uu\n",
    "\n",
    "mh,bh,kh = m_b_k_hat.tolist()\n",
    "mp,bp,kp = m_b_k_perfect.tolist()\n",
    "print(f'Estimated parameter reconstruction m, b, k: {mh:.4f}, {bh:.4f}, {kh:.4f}')\n",
    "print(f'Perfect parameter reconstruction m, b, k: {mp:.4f}, {bp:.4f}, {kp:.4f}')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Application to Estimating Simulation Results\n",
    "Author: Jonathan Barrett <br> &emsp;&emsp;&emsp;&ensp;jab128<i></i>@byu.edu\n",
    "\n",
    "Suppose you have created a model that evaluates the probability that an ADS-B message will be decoded successfully given a density of UAS/km$^2$. You have collected data for UAS densities from nearly 0 UAS/km$^2$ up to 5 UAS/km$^2$. Not only is the data noisy from randomization, but now the simulations are too resource intensive to continue running at higher densities.\n",
    "\n",
    "You realize that you need to perform a least squares linear regression on the data to fit a line to the data, and to estimate the probability of a successful decode at 10 UAS/km$^2$. Use the following csv file, and the python template below: https://drive.google.com/file/d/1vBTGxYauh1itxIlzHmcZsaQXcVefohVv/view?usp=sharing\n",
    "\n",
    "If your estimated decode probability seems wrong, then you may want to use a weighted least squares solution that follows the later trends in the data most closely. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'numpy'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-4-db87281967e5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mnum_samples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m10000\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgenfromtxt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"adsb_data.csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdelimiter\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\",\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'numpy'"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "num_samples = 10000\n",
    "\n",
    "# Download CSV file from the link provided\n",
    "data = np.genfromtxt(\"adsb_data.csv\", delimiter=\",\")\n",
    "x = np.linspace(0, 5, num_samples)\n",
    "\n",
    "# Plot data\n",
    "plt.figure(1)\n",
    "plt.scatter(x, data)\n",
    "\n",
    "#  Insert code here  #\n",
    "\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'numpy'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-5-a3b75435c2f9>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# SOLUTION #\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mnum_samples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m10000\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'numpy'"
     ]
    }
   ],
   "source": [
    "# SOLUTION #\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "num_samples = 10000\n",
    "\n",
    "# Download CSV file from the link provided\n",
    "data = np.genfromtxt(\"adsb_data.csv\", delimiter=\",\")\n",
    "x = np.linspace(0, 5, num_samples)\n",
    "\n",
    "# Plot data\n",
    "plt.figure(1)\n",
    "plt.scatter(x, data, s=2)\n",
    "\n",
    "\n",
    "#  Insert code here  #\n",
    "\n",
    "# Create A and y\n",
    "A = np.zeros((num_samples, 2))\n",
    "y = np.zeros(num_samples)\n",
    "\n",
    "# Populate A and y\n",
    "for i in range(num_samples):\n",
    "    A[i][0] = i / num_samples\n",
    "    A[i][1] = 1.0\n",
    "    y[i] = data[i]\n",
    "\n",
    "# Solve for coefficients\n",
    "h = np.linalg.inv(A.transpose() @ A) @ A.transpose() @ y\n",
    "\n",
    "# Filter data\n",
    "filtered_data = A @ h\n",
    "\n",
    "# Plot filtered data, estimate successful decode probability at 10 UAS/km^2\n",
    "plt.figure(2)\n",
    "plt.scatter(x, filtered_data, s=2)\n",
    "print(\"Estimated successful decode probability at 10 UAS/km^2:\", h[0]*(10) + h[1])\n",
    "\n",
    "# Create and populate weighing matrix\n",
    "# Weigh the first 2000 samples much less\n",
    "W = np.zeros((num_samples, num_samples))\n",
    "for i in range(num_samples):\n",
    "    if i < 2000:\n",
    "        W[i][i] = 1\n",
    "    else:\n",
    "        W[i][i] = 100\n",
    "\n",
    "# Solve for weighted coefficients\n",
    "h_weighted = np.linalg.inv(A.transpose() @ W @ A) @ A.transpose() @ W @ y\n",
    "\n",
    "# Filter using weighted coefficients\n",
    "weighted_filtered_data = A @ h\n",
    "\n",
    "# Plot weighted filtered data, estimate successful decode probability at 10 UAS/km^2\n",
    "plt.figure(3)\n",
    "plt.scatter(x, weighted_filtered_data, s=2)\n",
    "print(\"Estimated successful decode probability at 10 UAS/km^2, weighted:\", h_weighted[0]*(10) + h_weighted[1])\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Congratulations! You found coefficients to form a linear equation that best fits the data, but you can actually fit the data better by finding coefficients for polynomials of different orders. Re-write your program so that it can fit the data to any order polynomial that you choose. \n",
    "\n",
    "Once you have done so, set the polynomial order to 10 and run the program. Does the curve seem to fit the data better? Why is that? \n",
    "\n",
    "Check the approximations for the ADS-B successful decode probability at 10 UAS/km$^2$. Do they seem better or worse than the approximations from the linear equation? Why is that? \n",
    "\n",
    "Now set the polynomial order to 100 and run the program. Does the curve seem to fit the data well? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# SOLUTION #\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "num_samples = 10000\n",
    "order_of_polynomial = 10\n",
    "\n",
    "# Download CSV file from the link provided\n",
    "data = np.genfromtxt(\"adsb_data.csv\", delimiter=\",\")\n",
    "x = np.linspace(0, 5, num_samples)\n",
    "\n",
    "# Plot data\n",
    "plt.figure(1)\n",
    "plt.scatter(x, data, s=2)\n",
    "\n",
    "\n",
    "#  Insert code here  #\n",
    "\n",
    "# Create A and y\n",
    "A = np.zeros((num_samples, order_of_polynomial + 1))\n",
    "y = np.zeros(num_samples)\n",
    "\n",
    "# Populate A and y\n",
    "for i in range(num_samples):\n",
    "    for j in range(order_of_polynomial + 1):\n",
    "        A[i][j] = (i / num_samples)**(order_of_polynomial - j)\n",
    "    y[i] = data[i]\n",
    "\n",
    "# Solve for coefficients\n",
    "h = np.linalg.inv(A.transpose() @ A) @ A.transpose() @ y\n",
    "\n",
    "# Filter data\n",
    "filtered_data = A @ h\n",
    "\n",
    "# Plot filtered data\n",
    "plt.figure(2)\n",
    "plt.scatter(x, filtered_data, s=2)\n",
    "\n",
    "# Estimate successful decode probability at 10 UAS/km^2\n",
    "estimated_value = 0\n",
    "for i in range(order_of_polynomial + 1):\n",
    "    estimated_value += h[i]*10**(order_of_polynomial - i)\n",
    "print(\"Estimated successful decode probability at 10 UAS/km^2:\", estimated_value)\n",
    "\n",
    "# Create and populate weighing matrix\n",
    "# Weigh the first 2000 samples much less\n",
    "W = np.zeros((num_samples, num_samples))\n",
    "for i in range(num_samples):\n",
    "    if i < 2000:\n",
    "        W[i][i] = 1\n",
    "    else:\n",
    "        W[i][i] = 100\n",
    "\n",
    "# Solve for weighted coefficients\n",
    "h_weighted = np.linalg.inv(A.transpose() @ W @ A) @ A.transpose() @ W @ y\n",
    "\n",
    "# Filter using weighted coefficients\n",
    "weighted_filtered_data = A @ h\n",
    "\n",
    "# Plot weighted filtered data\n",
    "plt.figure(3)\n",
    "plt.scatter(x, weighted_filtered_data, s=2)\n",
    "\n",
    "# Estimate successful decode probability at 10 UAS/km^2\n",
    "estimated_value_weighted = 0\n",
    "for i in range(order_of_polynomial + 1):\n",
    "    estimated_value_weighted += h_weighted[i]*10**(order_of_polynomial - i)\n",
    "print(\"Estimated successful decode probability at 10 UAS/km^2, weighted:\", estimated_value_weighted)\n",
    "\n",
    "plt.show()\n",
    "\n",
    "#  EXPLANATIONS  #\n",
    "# With the polynomial order set to 10, the curves do seem to fit the data much better,\n",
    "# especially for UAS densities below 2 UAS/km^2. This is because we are adding\n",
    "# polynomials with different coefficients until they manage to fit all the curves of\n",
    "# the data. The estimations for decode probabilities are way off now, and this is because\n",
    "# the coefficients are only trying to fit the curve to the data that we have instead of\n",
    "# trying to fit the curve to what the data probably would be at higher values of UAS density.\n",
    "# With the polynomial order set to 100, the curve doesn't seem to match the data at all anymore. \n"
   ]
  }
 ],
 "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": 2
}