{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Polynomial fitting with the normal equations"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import numpy.linalg as la\n",
        "import matplotlib.pyplot as pt"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "In this demo, we will produce data from a simple parabola as a \"model\" and try to recover the \"unknown\" parameters $\\alpha$, $\\beta$, and $\\gamma$ using least squares."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7f6900e06748>]"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7f6900e1aba8>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "alpha = 3\n",
        "beta = 2\n",
        "gamma = 2\n",
        "\n",
        "def f(x):\n",
        "    return alpha*x**2 + beta*x + gamma\n",
        "\n",
        "plot_grid = np.linspace(-3, 3, 100)\n",
        "\n",
        "pt.plot(plot_grid, f(plot_grid))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7f6900de0ac8>]"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7f6900dda7b8>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "npts = 5\n",
        "\n",
        "np.random.seed(22)\n",
        "points = np.linspace(-2, 2, npts) + np.random.randn(npts)\n",
        "values = f(points) + 0.3*np.random.randn(npts)*f(points)\n",
        "\n",
        "pt.plot(plot_grid, f(plot_grid))\n",
        "pt.plot(points, values, \"o\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Now build the Vandermonde matrix:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "[[ 1.         -2.09194992  4.37625447]\n",
            " [ 1.         -2.46335065  6.06809644]\n",
            " [ 1.          1.08179168  1.17027324]\n",
            " [ 1.          0.76067483  0.5786262 ]\n",
            " [ 1.          1.50887086  2.27669128]]\n"
          ]
        }
      ],
      "source": [
        "A = np.array([\n",
        "    np.ones(npts),\n",
        "    points,\n",
        "    points**2\n",
        "    ]).T\n",
        "print(A)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "And solve for `x` using the normal equations:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "array([ 0.13178048,  1.84869187,  3.45132033])"
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "x = la.solve(A.T@A, A.T@values)\n",
        "x"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Lastly, pick apart `x` into `alpha_c`, `beta_c`, and `gamma_c`:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "collapsed": true
      },
      "outputs": [],
      "source": [
        "gamma_c, beta_c, alpha_c = x"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "3 3.45132033448\n",
            "2 1.84869187248\n",
            "2 0.131780484241\n"
          ]
        }
      ],
      "source": [
        "print(alpha, alpha_c)\n",
        "print(beta, beta_c)\n",
        "print(gamma, gamma_c)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7f6900cdfb70>"
            ]
          },
          "execution_count": 13,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n111lEPfC3wAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7f6900db4780>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "def f_c(x):\n",
        "    return alpha_c*x**2 + beta_c*x + gamma_c\n",
        "\n",
        "pt.plot(plot_grid, f(plot_grid), label=\"true\")\n",
        "pt.plot(points, values, \"o\", label=\"data\")\n",
        "pt.plot(plot_grid, f_c(plot_grid), label=\"found\")\n",
        "pt.legend()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "<!--\n",
        "gamma_c, beta_c, alpha_c = x\n",
        "-->\n",
        "(Edit this cell for solution.)"
      ]
    }
  ],
  "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.5.1+"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}