{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "instrumental-peace",
   "metadata": {},
   "source": [
    "# Least-squares Fitting to Data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "palestinian-handbook",
   "metadata": {},
   "source": [
    "**Version of April 19, 2021**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dietary-concentration",
   "metadata": {},
   "source": [
    "**References:**\n",
    "\n",
    "- Chapter 4 *Least Squares* of [Sauer](../references.html#Sauer), Sections 1 and 2.\n",
    "- Section 8.1 *Discrete Least Squares Approximation* of [Burden&Faires](../references.html#Burden-Faires)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "romance-premises",
   "metadata": {},
   "source": [
    "We have seen that when trying to fit a curve to a large collection of data points, fitting a single polynomial to all of them can be a bad approach.\n",
    "This is even more so if the data itself is inaccurate, due for example to measurement error.\n",
    "\n",
    "Thus an important approach is to find a function of some simple form that is close to the given points but not necesarily fitting them exactly:\n",
    "given $N$ points\n",
    "\n",
    "$$(x_i, y_i),\\; 1 \\leq i \\leq N \\quad \\text{ (or $0 \\leq i < N$ with Python!)}$$\n",
    "\n",
    "we seek a function $f(x)$ so that the errors at each point,\n",
    "\n",
    "$$e_i = y_i - f(x_i),$$\n",
    "\n",
    "are \"small\" overall, in some sense.\n",
    "\n",
    "Two important choices for the function $f(x)$ are\n",
    "\n",
    "(a) polynomials of low degree, and\n",
    "\n",
    "(b) periodic sinusidal functions;\n",
    "\n",
    "we will start with the simplest case of fitting a straight line."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "pressing-garbage",
   "metadata": {},
   "source": [
    "## Measuring \"goodness of fit\": several options\n",
    "\n",
    "The first decision to be made is how to measure the overall error in the fit, since the error is now a vector of values $e = \\{e_i\\}$, not a single number.\n",
    "Two approaches are widely used:\n",
    "\n",
    "* *Min-Max*: minimize the maximum of the absolute errors at each point,\n",
    "$\\displaystyle \\|e\\|_{max} \\text{ or } \\|e\\|_\\infty, = \\max_{1 \\leq i \\leq n} |e_i|$\n",
    "\n",
    "* *Least Squares*: Minimize the sum of the squares of the errors,\n",
    "$\\displaystyle \\sum_1^n e_i^2$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "hungarian-taiwan",
   "metadata": {},
   "source": [
    "## What doesn't work\n",
    "\n",
    "Another seemingly natural approach is:\n",
    "\n",
    "* Minimize the sum of the absolute errors,\n",
    "$\\displaystyle \\|e\\|_1 = \\sum_1^n |e_i|$\n",
    "\n",
    "but this often fails completely.\n",
    "In the following example, all three lines minimize this measure of error, along with infinitely many others: any line that passes below half of the points and above the other half."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "another-saying",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from numpy.random import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "early-wesley",
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xdata = [1., 2., 3., 4.]\n",
    "ydata = [0., 3., 2., 5.]\n",
    "\n",
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(xdata, ydata, 'b*', label=\"Data\")\n",
    "xplot = np.linspace(0.,5.)\n",
    "ylow = xplot -0.5\n",
    "yhigh = xplot + 0.5\n",
    "yflat = 2.5*np.ones_like(xplot)\n",
    "plt.plot(xplot, ylow, label=\"low\")\n",
    "plt.plot(xplot, yhigh, label=\"high\")\n",
    "plt.plot(xplot, yflat, label=\"flat\")\n",
    "plt.legend(loc=\"best\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "environmental-saturday",
   "metadata": {},
   "source": [
    "The Min-Max method is important and useful, but computationally difficult.\n",
    "One hint is the presence of absolute values in the formula, which get in the way of using calculus to get equations for the minimum.\n",
    "\n",
    "Thus the easiest and most common approach is Least Squares, or equivalently, minimizing the root-mean-square error, which is just the Euclidean length $\\|e\\|_2$ of the error vector $e$.\n",
    "That \"geometrical\" interpretation of the goal can be useful.\n",
    "So we start with that."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "material-monitor",
   "metadata": {},
   "source": [
    "## Linear least squares\n",
    "\n",
    "The simplest approach is to seek the straight line $y = f(x) = c_0 + c_1x$ that minimizes the total square sum error,\n",
    "\n",
    "$$E(c_0, c_1) = \\sum_i e_i^2 = \\sum_i (c_0 + c_1x_i - y_i)^2.$$\n",
    "\n",
    "Note well that the unknowns here are just the two values $c_0$ and $c_1$, and\n",
    "$E$ is s fairly simple polynomial function of them.\n",
    "The minimum error must occur at a critical point of this function, where both partial derivatives are zero:\n",
    "\n",
    "$$\\frac{\\partial E}{\\partial c_0} = 2 \\sum_i (c_0 + c_1x_i - y_i) = 0,$$\n",
    "\n",
    "$$\\frac{\\partial E}{\\partial c_1} = 2 \\sum_i (c_0 + c_1x_i - y_i) x_i = 0.$$\n",
    "\n",
    "These are just simultaneous linear equations, which is the secret of why the least squares approach is so much easier than any alternative.\n",
    "The equations are:\n",
    "\n",
    "$$\n",
    "\\left[\\begin{array}{cc} \\sum_i 1 & \\sum_i x_i \\\\ \\sum_i x_i & \\sum_i x_i^2 \\end{array}\\right]\n",
    "\\left[\\begin{array}{c} c_0 \\\\ c_1 \\end{array}\\right]\n",
    "=\n",
    "\\left[\\begin{array}{c} \\sum_i y_i \\\\ \\sum_i x_iy_i \\end{array}\\right]\n",
    "$$\n",
    "\n",
    "where of course $\\sum_i 1$ is just $N$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "necessary-fluid",
   "metadata": {},
   "source": [
    "It will help later to introduce the notation\n",
    "\n",
    "$$m_j = \\sum_i x_i^j, \\quad p_j = \\sum_i x_i^j y_i$$\n",
    "\n",
    "so that the equations are\n",
    "\n",
    "$$M c = p$$\n",
    "\n",
    "with\n",
    "\n",
    "$$\n",
    "M = \\left[\\begin{array}{cc} m_0 & m_1 \\\\ m_1 & m_2\\end{array}\\right],\n",
    "p = \\left[\\begin{array}{c} p_0 \\\\ p_1 \\end{array}\\right],\n",
    "c = \\left[\\begin{array}{c} c_0 \\\\ c_1 \\end{array}\\right].\n",
    "$$\n",
    "\n",
    "(Python indexing wins this time.)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "finished-cincinnati",
   "metadata": {},
   "source": [
    "## Geometrical derivation, with the normal matrix\n",
    "\n",
    "There is another way to derive this result using geometry and linear algebra instead of calculus, via the **normal matrix**.\n",
    "If a project is done on this topic, that could be added to the discussion."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "catholic-objective",
   "metadata": {},
   "source": [
    "## Python implementation: <code>polyfit</code> and <code>polyval</code>\n",
    "\n",
    "We now start to learn why the function <code>polyfit(x, y, n)</code> has that third argument, specifying the degree of the polynomial: it can be used to request a polynomial of degee one, and then it gives this least squares fit:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "brief-edward",
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The coefficients are [2.03847991 2.88140609]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArkAAAFlCAYAAADvSvB9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABfb0lEQVR4nO3dd3hUZf7+8fdJIYEQeu+gSA3NBCERFVRA6SAoTVhRRERASrDsrrhfXJkJBAgQSgBBQBBEFBV2BZUVElqoSi+GIr0nkJ7z++MgP9alTJJJm9yv68pFppxnPuc4mdyePOfzGKZpIiIiIiLiStxyugAREREREWdTyBURERERl6OQKyIiIiIuRyFXRERERFyOQq6IiIiIuByFXBERERFxOR5ZMWipUqXMatWqZcXQIiIiIiIAbN++/aJpmqXv9liWhNxq1aoRHR2dFUOLiIiIiABgGMbxez2m6QoiIiIi4nIUckVERETE5SjkioiIiIjLyZI5uXeTnJzMqVOnSEhIyK6XFBfn7e1NpUqV8PT0zOlSREREJJfJtpB76tQpfH19qVatGoZhZNfLiosyTZNLly5x6tQpqlevntPliIiISC6TbdMVEhISKFmypAKuOIVhGJQsWVJ/GRAREZG7ytY5uQq44kx6P4mIiMi95IsLzy5dukSjRo1o1KgR5cqVo2LFijRq1IhixYpRt27dLH/96Ohohg4d+sDnBQYGZvg1+vfvzxdffHHf+1999VX27duX4dcQERERySuybU5uTipZsiS7du0CYOzYsRQuXJhRo0YRExND+/bts/S1U1JS8Pf3x9/f/4HPjYqKytJa5syZk6Xji4iIiOQW+eJM7v2kpqby2muvUa9ePVq3bk18fDwAR48epW3btjz66KO0aNGCAwcO/M+2ly9fpnPnzjRo0IBmzZqxZ88ewArSAwcOpHXr1rz88susX7/+dpi+cOECzz77LE2aNOH111+natWqXLx4EYDChQsDsH79ep566ileeOEFateuTe/evTFNE4B//OMfBAQEUL9+fQYOHHj7fkc89dRTt1eiK1y4MO+//z4NGzakWbNmnDt37nZ93bp1IyAggICAACIjIzNyWEVERCSfOH89gR6zNnE+NnddJ5MjZ3KH/2s4u87ucuqYjco1YnLbyene7vDhwyxZsoSIiAh69OjBihUr6NOnDwMHDmTm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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "N = 10\n",
    "x = np.linspace(-1, 1, N)\n",
    "# Emulate a straight line with measurement errors:\n",
    "# random(N) gives N values uniformly distributed in the range [0,1],\n",
    "# and so with mean 0.5.\n",
    "# Thus subtracting 1/2 simulates more symmetric \"errors\", of mean zero.\n",
    "y_line = 2*x + 3\n",
    "y = y_line + (random(N)-0.5)\n",
    "\n",
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(x, y_line, 'g', label=\"The original line\")\n",
    "plt.plot(x, y, '*', label=\"Data\")\n",
    "c = np.polyfit(x, y, 1)\n",
    "print(\"The coefficients are\", c)\n",
    "xplot = np.linspace(-1, 1, 100)\n",
    "plt.plot(xplot, np.polyval(c, xplot), 'r', label=\"Linear least squares fit\")\n",
    "plt.legend(loc=\"best\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "streaming-defendant",
   "metadata": {},
   "source": [
    "## Least squares fiting to higher degree polynomials\n",
    "\n",
    "The method above extends to finding a polynomial\n",
    "\n",
    "$$p(x) = c_0 + c_1 x + \\cdots + c_n x^n$$\n",
    "\n",
    "that gives the best least squares fit to data\n",
    "\n",
    "$$(x_1, y_1), \\dots (x_N, y_N)$$\n",
    "\n",
    "in that the coefficients $c_k$ given the minimum of\n",
    "\n",
    "$$\n",
    "E(c_0, \\dots c_n) = \\sum_i(p(x_i) - y_i)^2\n",
    "= \\sum_i \\left( y_i - \\sum_k c_k x_i^k \\right)^2\n",
    "$$\n",
    "\n",
    "Note that when $N=n+1$, the solution is the interpolating polynomial, with error zero."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "colored-sweet",
   "metadata": {},
   "source": [
    "The necessary conditions for a minimum are that all $n+1$ partial derivatives of $E$ are zero:\n",
    "\n",
    "$$\n",
    "\\frac{\\partial E}{\\partial c_j} = 2 \\sum_i \\left( y_i - \\sum_k c_k x_i^k\\right) x_i^j = 0,\n",
    "\\; 0 \\leq j \\leq n.\n",
    "$$\n",
    "\n",
    "This gives\n",
    "\n",
    "$$\n",
    "\\sum_i \\sum_k \\left( c_k x_i^{j+k} \\right) = \\sum_k \\left( \\sum_i x_i^{j+k} \\right) c_k = \\sum_i y_i x_i^j, \\; 0 \\leq j \\leq n,\n",
    "$$\n",
    "\n",
    "or with the notation $m_k = \\sum_i x_i^k$, $p_k = \\sum_i x_i^k y_i$ introduced above,\n",
    "\n",
    "$$\n",
    "\\sum_k m_{j+k} c_k = p_j,\\; 0 \\leq j \\leq n.\n",
    "$$\n",
    "\n",
    "That is, the equations are again $Mc = p$, but now with\n",
    "\n",
    "$$\n",
    "M = \\left[\\begin{array}{cccc}\n",
    "m_0 & m_1 & \\dots & m_n \\\\\n",
    "m_1 & m_2 & \\dots & m_{n+1} \\\\\n",
    "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
    "m_n & m_{n+1} & \\dots & m_{2n}\n",
    "\\end{array}\\right],\n",
    "\\quad\n",
    "p = \\left[\\begin{array}{c} p_0 \\\\ p_1 \\\\ \\vdots \\\\ p_n \\end{array}\\right],\n",
    "\\quad\n",
    "c = \\left[\\begin{array}{c} c_0 \\\\ c_1 \\\\ \\vdots  \\\\ c_n \\end{array}\\right].\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "mighty-channels",
   "metadata": {},
   "source": [
    "You might now be able to guess what other values of n do in <code>polyfit(x, y, n)</code>,\n",
    "and we can experiment with a cubic fit to $\\sin(x)$ on $[0, \\pi/2]$.\n",
    "This time, let us look at extrapolation too: values beyond the interval containing the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "armed-baghdad",
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The coefficients are [-0.11328717 -0.06859178  1.02381733 -0.00108728]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7feb3d949df0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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21d/3Hkrr69sgblwQSteiIiIiMRQWE6lNm92+pNPnYJFr86h0aiOkCmTs+KFLuQTERERAdSGkSqNHw+1a4O1sPeFb2k0rCWU0IoXIiIiIjdTWE5FoqLglVec/uSHalxnT5OXKPjZC9C8OaxYAfnyubtEERERkWRFYTmV+Hv95GHDoP9zl1n4wOOkG/01vPyyVrwQERERSYB6llOBDRugbVs4cwamDDtO+59awtatMHy4s5+1iIiIiMRLM8sp3NixULeuswLc5rFbaP9ZDdi/H2bNUlAWERERuQ2F5RTq2jV47jno3dsJy1v/bxaln6kDxsCqVdC0qbtLFBEREUn21IaRAgUHQ/v2sGYNvP46/F/ur/Hu/gpUruysoZwnj7tLFBEREfEImllOYVauhKpVnZbkyb9E8cmVF/B+9SVo1QqWL1dQFhEREbkLCssphLXwzTfw8MPOwhYbllyiw/jWzrbV//0v/PYbPPCAu8sUERER8Shqw0gBrlyBZ591Nhtp2RL+93/HyNStJezYASNHOgdFRERE5K4pLHu4gwedZeG2bYMPPoC3mmzC69GWcPkyzJ4Njz3m7hJFREREPJbCsgebNw+6dHFaMGbPhqbXpkODLpAjB6xeDeXKubtEEREREY+mnmUPFB3tzCI3awYFCsDGDZamu7+ANm2cgLx2rYKyiIiIiAsoLHuY8+edvuRBg6BbN1izMopinz/vXMTXti0sXQq5c7u7TBEREZEUQW0YHmTLFmjXDo4dg+++g76dQzEdnoAFC2DAABgyBLz0/x8RERERV1FY9hA//+wsapEtG6xYATXzHIG6LWDPHvjhB2erPhERERFxKU1DJnMREfD889CjB9SqBZs3Q02zDqpXd6aY581TUBYRERG5TxSWk7GjR6FuXRgxAvr3d7otci6fAg0aODuPrF0LjRq5u0wRERGRFEthOZlasACqVIG9e2HqVPj0E4vPZx/BE084B9auhVKl3F2miIiISIqmsJzMREfD4MHQpAnkzQsbN0Kb5tegVy94803o3BkWL3bWUhYRERGR+0oX+CUj5845y8HNnQvduzs7VacLPwePtYNly5z14gYNAmPcXaqIiIhIqqCwnExs3AgdOkBwsNOj/OyzYAL3Q/PmcOQI/O9/TpIWERERkSSjNgw3s9YJx7VrOy0YK1dC375gViyHmjWd6ebFixWURURERNxAYdmNLl922i2ef95Z1GLzZmdFOH76CRo3hpw5Yd06qFPH3aWKiIiIpEoKy26yezfUqAETJ8KHH8KsWZAtSzS8/Tb07OmsGbd6NRQr5u5SRURERFIt9Sy7wa+/wtNPQ7p0zhJxjRoBV686IXnyZOfgd9+Br6+7SxURERFJ1RI1s2yMyWqMWWiM2R/zMcstxnobY/4yxsxKzDk92d+78XXuDJUqwV9/xQTlEyecjUamTIFPP4VRoxSURURERJKBxLZhDAAWW2tLAItjvk7IS8DuRJ7PYx086FzEN2IEvPYaLF0K+fIB27c7/Rg7dji7j/Tvr6XhRERERJKJxIbl1sBPMZ//BDwe3yBjTH6gOfBDIs/nkaZNczbdO3AApk+Hzz6LmTieMwceegiiopxlMB5/3M2VioiIiEhciQ3Luay1IQAxH3MmMG4Y8DoQfbsnNMb0McZsNMZsPH36dCLLc6/ISPjvf6FNGyhRwlntolWrmIPffAMtWzoH1q930rSIiIiIJCu3DcvGmEXGmB3x3FrfyQmMMS2AU9baTXcy3lo7ylobYK0NyOHBWzofPQr168MXX8ALL8Cff0KRIjizyP36wYsvOmF5xYqYfgwRERERSW5uuxqGtfaRhI4ZY04aY/JYa0OMMXmAU/EMqw20MsY0A/yAjMaY8dbaFLvLxqxZ0KOHM7M8aRI88UTMgdBQ6NgR5s93Gpc/+QS8tHqfiIiISHKV2KQ2A+gR83kPYPrNA6y1A621+a21hYFOwJKUGpQjI53r81q2hIIFYdOmOEH50CGnP3nxYvjhB6dxWUFZREREJFlLbFr7GGhsjNkPNI75GmNMXmPMnMQW50mOHIF69WDoUGd5uDVrnHZkwNlcpEYNCAlxFlbu3duttYqIiIjInUnUpiTW2rNAo3juDwaaxXP/MmBZYs6ZHM2c6bRdREXd1HYBMGEC9OoFhQo5/RklS7qtThERERG5O+oDSIRr15zVLlq1gsKFndUuYoNydDS8+y506wa1asHatQrKIiIiIh5G213fo4MHoVMn2LDBabv4/HPw84s5GHfr6l69nJ1I0qRxZ7kiIiIicg8Ulu/B5MnwzDPORnu//Qbt2sU5GBLibC6yYYOzdfVrr2lHPhEREREPpbB8F65ehVdege+/d67X+/VXp/0i1pYtzlIY587BH39A6ztailpEREREkin1LN+h3budgPz99/D6687u1DcE5RkzoE4d5/M//1RQFhEREUkBFJZvw1oYMwYCApwOizlznL1EfH3jDBg61Gm9KFPG2bq6cmV3liwiIiIiLqKwfAuhodC5Mzz9NNSsCVu3QtOmcQZcu+Y0L/fvD+3bw7JlkCePu8oVERERERdTWE7AunXOBPFvv8GQIc5eInnzxhlw5gw0buxMO7/9ttPAnC6d2+oVEREREdfTBX43iY52dqJ++23Il8/pTa5V66ZBu3dDixZw/Liz6UiXLm6pVURERETuL4XlOKx1Wo9nzoQOHWDUKMic+aZB8+c7O4/4+zttFzVrJn2hIiIiIpIk1IYRhzHQvLkTkidNiicof/stNGvmLIOxfr2CsoiIiEgKp5nlmzz7bDx3RkbCSy85O/G1auW0XqRPn+S1iYiIiEjS0szy7Zw75yyBMWKEs+rF1KkKyiIiIiKphGaWb2XvXmdHvsOH4ccfoWdPd1ckIiIiIklIYTkhCxc6F/L5+MCSJf/sziciIiIiqYbaMOIzfLjTepE/P2zYoKAsIiIikkopLMdlLfznP9CvnxOWV692Vr4QERERkVRJYTkuYyBDBudCvmnTnM9FREREJNVSz/LNPvrICc0iIiIikuppZvlmCsoiIiIiEkNhWUREREQkAQrLIiIiIiIJUFgWEREREUmAwrKIiIiISAIUlkVEREREEqCwLCIiIiKSAIVlEREREZEEKCyLiIiIiCRAYVlEREREJAEKyyIiIiIiCVBYFhERERFJgMKyiIiIiEgCjLXW3TUkyBhzGjjihlNnB8644bxyf+l1Tbn02qZMel1TLr22KZMnv66FrLU54juQrMOyuxhjNlprA9xdh7iWXteUS69tyqTXNeXSa5sypdTXVW0YIiIiIiIJUFgWEREREUmAwnL8Rrm7ALkv9LqmXHptUya9rimXXtuUKUW+rupZFhERERFJgGaWRUREREQSoLAMGGOyGmMWGmP2x3zMksC4w8aY7caYLcaYjUldp9wZY0wTY8xeY0ygMWZAPMeNMebrmOPbjDFV3FGn3J07eF0bGGNCY96fW4wx77qjTrk7xpixxphTxpgdCRzX+9VD3cFrq/esBzLGFDDGLDXG7DbG7DTGvBTPmBT1vlVYdgwAFltrSwCLY75OSENrbaWUuDRKSmCM8QaGA02BMkBnY0yZm4Y1BUrE3PoAI5K0SLlrd/i6AqyMeX9WstZ+kKRFyr0aBzS5xXG9Xz3XOG792oLes54oCvivtbY0UBP4T0r/d1Zh2dEa+Cnm85+Ax91XiiRSdSDQWnvQWnsN+BXn9Y2rNfCzdawFMhtj8iR1oXJX7uR1FQ9krV0BnLvFEL1fPdQdvLbigay1IdbazTGfXwJ2A/luGpai3rcKy45c1toQcH4IgJwJjLPAAmPMJmNMnySrTu5GPuBYnK+D+Peb+E7GSPJyp69ZLWPMVmPMXGNM2aQpTe4zvV9TNr1nPZgxpjBQGVh306EU9b71cXcBScUYswjIHc+ht+7iaWpba4ONMTmBhcaYPTH/c5bkw8Rz381LvtzJGEle7uQ124yzXellY0wzYBrOrwDFs+n9mnLpPevBjDHpgd+Bl621F28+HM9DPPZ9m2pmlq21j1hry8Vzmw6c/PvXAzEfTyXwHMExH08Bf+D8aliSlyCgQJyv8wPB9zBGkpfbvmbW2ovW2ssxn88BfI0x2ZOuRLlP9H5NofSe9VzGGF+coDzBWjs1niEp6n2basLybcwAesR83gOYfvMAY8wDxpgMf38OPArEe4WvuNUGoIQxpogxJg3QCef1jWsG8GTM1bo1gdC/23Ak2brt62qMyW2MMTGfV8f5++1sklcqrqb3awql96xninnNxgC7rbVfJDAsRb1vU00bxm18DEw2xvQGjgIdAIwxeYEfrLXNgFzAHzHvax/gF2vtPDfVKwmw1kYZY/oB8wFvYKy1dqcxpm/M8ZHAHKAZEAhcAZ5yV71yZ+7wdW0PPGeMiQKuAp2sdl1K9owxE4EGQHZjTBAwCPAFvV893R28tnrPeqbaQHdguzFmS8x9bwIFIWW+b7WDn4iIiIhIAtSGISIiIiKSAIVlEREREZEEKCyLiIiIiCRAYVlEREREJAEKyyIiIiIiCVBYFhERERFJgMKyiIiIiEgCFJZFRERERBLw/04LqAZLfb99AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "N = 10\n",
    "n = 3\n",
    "xdata = np.linspace(0, np.pi/2, N)\n",
    "ydata = np.sin(xdata)\n",
    "\n",
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(xdata, ydata, 'b*', label=\"sin(x) data\")\n",
    "xplot = np.linspace(-0.5, np.pi/2 + 0.5, 100)\n",
    "plt.plot(xplot, np.sin(xplot), 'b', label=\"sin(x) curve\")\n",
    "c = np.polyfit(xdata, ydata, n)\n",
    "print(\"The coefficients are\", c)\n",
    "plt.plot(xplot, np.polyval(c, xplot), 'r', label=\"Cubic least squares fit\")\n",
    "plt.legend(loc=\"best\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "informed-failing",
   "metadata": {},
   "source": [
    "The discrepancy between the original function $\\sin(x)$ and this cubic is:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "excess-there",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(xplot, np.sin(xplot) - np.polyval(c, xplot))\n",
    "plt.title(\"errors fitting at N = 10 points\")\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "advanced-january",
   "metadata": {},
   "source": [
    "What if we fit at more points?\n",
    "\n",
    "Not much changes!\n",
    "\n",
    "This hints at another use of least squres fitting:\n",
    "fitting a simpler curve (like a cubic) to a function (like $\\sin(x)$), rather than to discrete data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "proud-token",
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The coefficients are [-0.1137182  -0.06970463  1.02647568 -0.00200789]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "N = 50\n",
    "xdata = np.linspace(0, np.pi/2, N)\n",
    "ydata = np.sin(xdata)\n",
    "\n",
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(xdata, ydata, 'b.', label=\"sin(x) data\")\n",
    "plt.plot(xplot, np.sin(xplot), 'b', label=\"sin(x) curve\")\n",
    "c = np.polyfit(xdata, ydata, n)\n",
    "print(\"The coefficients are\", c)\n",
    "plt.plot(xplot, np.polyval(c, xplot), 'r', label=\"Cubic least squares fit\")\n",
    "plt.legend(loc=\"best\")\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "accepted-laundry",
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(xplot, np.sin(xplot) - np.polyval(c, xplot))\n",
    "plt.title(\"errors fitting at N = 50 points\")\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "compatible-republican",
   "metadata": {},
   "source": [
    "Not much changes!\n",
    "\n",
    "This hints at another use of least squares fitting:\n",
    "fitting a simpler curve (like a cubic) to a function (like $\\sin(x)$), rather than to discrete data."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "musical-illness",
   "metadata": {},
   "source": [
    "## Nonlinear fitting: power-law relationships\n",
    "\n",
    "When data $(x_i, y_i)$ is inherently positive, it is often natural to seek an approximate power law relationship\n",
    "\n",
    "$$ y_i \\approx c x_i^p$$\n",
    "\n",
    "That is, one seeks the power $p$ and scale factor $c$ that minimizes error in some sense.\n",
    "\n",
    "When the magnitudes and the data $y_i$ vary greatly, it is often appropriate to look at the relative errors\n",
    "\n",
    "$$ e_i = \\left| \\frac{c x_i^p - y_i}{y_i} \\right| $$\n",
    "\n",
    "and this can be shown to be very close to looking at the absolute errors of the logarithms\n",
    "\n",
    "$$ |\\ln(c x_i^p) - \\ln(y_i)| = |\\ln(c) + p \\ln(x_i) - \\ln(y_i)| $$\n",
    "\n",
    "Introducing the new variables $X_i = \\ln(x_i)$, $Y_i = \\ln(Y_i)$ and $C = \\ln(c)$,\n",
    "this becomes the familiar problem of finding a linear approxation of the data $Y_i$ by $C + p X_i$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "conditional-cream",
   "metadata": {},
   "source": [
    "## A simulation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "proper-walter",
   "metadata": {},
   "outputs": [],
   "source": [
    "#help(np.logspace)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "rural-arlington",
   "metadata": {},
   "outputs": [],
   "source": [
    "c_exact = 2.\n",
    "p_exact = 1.5\n",
    "x = np.logspace(0.01, 2, 10)\n",
    "xPlot = np.logspace(0.01, 2)  # For graphs later\n",
    "#print(x)\n",
    "y_exact = c_exact * x**p_exact\n",
    "y = y_exact * (1. + (random(len(y_exact))- 0.5)/2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "determined-compromise",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(x, y_exact, '.', label='exact')\n",
    "plt.plot(x, y, '*', label='noisy')\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "constitutional-realtor",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsUAAAFpCAYAAAB0/VUQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAduklEQVR4nO3de5BeZYEm8OdNutNh3CY0wQ61xspFLJWbMN1qL1NbppYpFlwC4wA7wYwX1pBxR91UbTk1jpNyHIWysLacKaaosTJicDTKWIwiUdQq0Q7q2Goy63JdRkgZjAwEm9B2mNw6OftHY7hsgL583ae7z+9X1fX1Od3fe56PhJeHU+/3fqWqqgAAQJPNqzsAAADUTSkGAKDxlGIAABpPKQYAoPGUYgAAGk8pBgCg8drqDpAkp5xySrV8+fJpudZTTz2Vl73sZdNyLYCpYB4DZrs657EdO3b8qqqqlz///IwoxcuXL8/27dun5Vr9/f1ZtWrVtFwLYCqYx4DZrs55rJSy63jnLZ8AAKDxlGIAABpPKQYAoPFmxJri4zl8+HB2796dAwcOtHTcRYsW5f7772/pmK20cOHCLF26NO3t7XVHAQBojBlbinfv3p3Ozs4sX748pZSWjTs8PJzOzs6WjddKVVVlcHAwu3fvzooVK+qOAwDQGDN2+cSBAweyePHilhbima6UksWLF7f87jgAAC9uxpbiJI0qxL/RxNcMAFC3GV2K56pbb7019913X90xAAB4mlJcA6UYAGBmmVOleMeuvbnhuw9mx669LRnv85//fN74xjfmnHPOyR/90R/lRz/6Uc4+++wcOHAgTz31VM4444zcc8892bdvX84///z89m//ds4666x89atfPTbG3//93+fss8/O61//+rz97W/PP/3TP+W2227Ln/zJn+Scc87JQw891JKsAABM3IzdfWK8duzam7WfHsihkaNZ0DYvW9b1pWdZ14THu//++/MP//AP+cEPfpD29vb88R//cR544IFccskl2bhxY/bv358//MM/zJlnnpmRkZF85StfyYknnphf/epX6evryyWXXJL77rsv1157bX7wgx/klFNOyRNPPJGTTz45l1xySS6++OJcfvnlLfwnAAAwCww/mnP+94eSnq8knUvqTnPMnCnFAzsHc2jkaI5WyeGRoxnYOTipUnzHHXdkx44decMb3pAk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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.loglog(x, y_exact, '.', label='exact')\n",
    "plt.loglog(x, y, '*', label='noisy')\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "interim-montgomery",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.489726810407078 1.989934182730082\n"
     ]
    }
   ],
   "source": [
    "X = np.log(x)\n",
    "Y = np.log(y)\n",
    "pC = np.polyfit(X, Y, 1)\n",
    "p = pC[0]\n",
    "c = np.exp(pC[1])\n",
    "print(p, c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "clinical-accused",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAFlCAYAAAD/Kr6hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABF7ElEQVR4nO3deXhV1b3/8ffKRAKEMCYMARIGmecwCIpBBSdUUCwgFdAKaml/3KtWqXJbQfCKtNSKLRVBUUBQVBC5KhU1osiMjGEMBAgQwhQykPFk/f7IkUYMATLtk5zP63l4cs46e+/zjV8TPi7XXsdYaxERERERkcL5OF2AiIiIiIgnU2AWERERESmCArOIiIiISBEUmEVEREREiqDALCIiIiJSBAVmEREREZEi+DldwJXUrVvXRkRElNn109PTqVatWpldXzyHeu091GvvoV57D/XaezjV682bN5+21tYr7DWPD8wRERFs2rSpzK4fExNDdHR0mV1fPId67T3Ua++hXnsP9dp7ONVrY8zhy72mJRkiIiIiIkVQYBYRERERKYICs4iIiIhIETx+DXNhcnJySEhIIDMzs8TXCgkJYffu3aVQVdkLDAwkPDwcf39/p0sRERER8RoVMjAnJCQQHBxMREQExpgSXSs1NZXg4OBSqqzsWGs5c+YMCQkJREZGOl2OiIiIiNeokEsyMjMzqVOnTonDckVijKFOnTqlMqsuIiIiIlevQgZmwKvC8k+88XsWERERcVqFDcyV1bJly4iNjXW6DBERERFxU2D2MArMIiIiIp7lioHZGNPYGPONMWa3MWaXMWa8e7y2MeZLY8x+99daBc75ozHmgDFmrzHmtgLj3YwxO9yvvWbKcY3B5sPn+Mc3B9h8+FypXG/BggX06NGDzp0789hjj7F+/Xo6duxIZmYm6enptGvXjp07d5KWlsYtt9xC165d6dChA5988snFa7z77rt07NiRTp068dBDD/HDDz+wfPly/vCHP9C5c2fi4uJKpVYRERERKb6r2SUjF3jKWrvFGBMMbDbGfAmMBr6y1r5sjJkATACeNca0BYYB7YCGwCpjzHXWWhcwCxgLrAM+A24HPi/tb+pSmw+fY8ScdWTn5hHg58PCR3vRrWmtK594Gbt37+b9999nzZo1+Pv789vf/pa9e/dyzz33MHHiRDIyMvj1r39N+/btyc3N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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.plot(x, y_exact, '.', label='exact')\n",
    "plt.plot(x, y, '*', label='noisy')\n",
    "plt.plot(xPlot, c * xPlot**p)\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "institutional-shame",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsUAAAFpCAYAAAB0/VUQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA+OUlEQVR4nO3deVyVdcL///cFHHZEFkHFBREXEMgSlzLTJrMslxbLXNJIsJmmme7p29zTTNbMNE7bzN10z/Kbu8MibmllplmWZYW2WWnLAcRdUVREEZF9O9fvD5u2sUlluc7hvJ6PBw+4Ls71ud4Ifnxz+TnXMUzTFAAAAODJvKwOAAAAAFiNUgwAAACPRykGAACAx6MUAwAAwONRigEAAODxKMUAAADweD5WB5CkyMhIMzY2tkPOVVNTo6CgoA45FwC0B+YxAO7Oynls27ZtJ0zT7Pbd/S5RimNjY7V169YOOVdeXp7GjRvXIecCgPbAPAbA3Vk5jxmGUXy2/SyfAAAAgMejFAMAAMDjUYoBAADg8VxiTfHZNDU1qaSkRPX19W06bmhoqIqKitp0zLbk7++vXr16yWazWR0FAADAY7hsKS4pKVFISIhiY2NlGEabjVtVVaWQkJA2G68tmaap8vJylZSUqF+/flbHAQAA8Bguu3yivr5eERERbVqIXZ1hGIqIiGjzq+MAAAD4z1y2FEvyqEL8L574NQMAAFjNpUtxZ7VmzRpt377d6hgAAAD4EqXYApRiAAAA19KpSvG24gr945092lZc0SbjLVu2TCNGjNDQoUN111136aOPPlJKSorq6+tVU1OjIUOGqKCgQNXV1brqqqt0ySWXKDk5WWvXrv1qjCVLliglJUUXXXSRbr/9dn3wwQd6+eWX9ctf/lJDhw7V3r172yQrAAAALpzL3n3ifG0rrtCsrC1qbHbK18dLy9NHaVjfsAser6ioSM8995zef/992Ww23X333dq5c6emTJmiBQsWqK6uTrNnz1ZSUpKam5v10ksvqUuXLjpx4oRGjRqlKVOmaPv27frjH/+o999/X5GRkTp58qTCw8M1ZcoUTZo0SdOmTWvDPwEAAAA3UFWqoZ/9Rhr2khQSbXWar3SaUrxlX7kam51ymlJTs1Nb9pW3qhS/9dZb2rZtm4YPHy5JqqurU1RUlB5++GENHz5c/v7++utf/yrpzK3UfvOb32jz5s3y8vLS4cOHdezYMb399tuaNm2aIiMjJUnh4eGt/0IBAADcWNkrf1Bk5XaVvfKIomb8w+o4X+k0pXhUXIR8fbzU1OyUzcdLo+IiWjWeaZqaO3euHnvssW/tLy0tVXV1tZqamlRfX6+goCAtX75cx48f17Zt22Sz2RQbG6v6+nqZpsndJAAAACRpYZTU3KCoLzejdi6TfrdM8vGTFpRZGk2yeE2xYRiTDcOwV1ZWtnqsYX3DtDx9lO6bMKjVSyck6aqrrtKqVatUVnbmm3Ty5EkVFxdr/vz5+sMf/qBZs2bpV7/6lSSpsrJSUVFRstlseuedd1RcXPzVGM8//7zKy8u/GkOSQkJCVFVV1ap8AAAAbuVeh3ZGXas601dOSXWmr3ZGTZTuzbc6mSSLrxSbprlO0rrU1NSMthhvWN+wVpfhf0lMTNTChQs1YcIEOZ1O2Ww2TZ06VT4+Ppo5c6ZaWlp02WWX6e2339asWbM0efJkpaamaujQoRo8eLAkaciQIXrwwQc1duxYeXt76+KLL1Zubq5uu+02ZWRk6K9//atWrVql/v37t0lmAAAAlxXSXbVdA/VoS7BKfWx6prRMYWERLrOu2DBN0+oMSk1NNbdu3fqtfUVFRUpISGjzc7nyyzz/S3t97QA6h7y8PI0bN87qGABwznZX7FZmfqY27H9NPvJS/6ZkPR0Yop5ep6XblndoFsMwtpmmmfrd/Z1mTTEAAABcS2F5oTIdmXrr4FsK9AnUHUl36vbE21XwUYF6utgv95RiAAAAtKnPyj7TM45n9P7h9xXiG6KfXPQTzUqYpVC/UKujfS9KMQAAAFrNNE1tObpFmfmZ+qT0E4X7h+u/LvkvTR80XcG+wVbH+0GUYgAAAFww0zS1uWSz7A67HCccigqI0q+G/0o3D7xZAT4BVsc7Z5RiAAAAnLcWZ4s2HtyorPws7Ti5QzHBMXpo1EO6If4G+Xr7Wh3vvFGKAQAAcM6anc16bf9ryszP1P7K/YrtEquFoxfqurjrZPOyWR3vglGK29DDDz+sK664QuPHj7c6CgAAQJtqbGnU2r1rlZ2frcPVhzUwbKD+NPZPurrP1fL28rY6Xqt1rlJcVSqtSpOm5VpyI+hHHnmkw88JAADQnuqa67R692rlFOSorLZMyZHJemDEAxrba6wMw7A6Xpux9GWe29ymJ6WDW6RNT7TJcAcOHFBCQoIyMjI0ZMgQTZgwQXV1dfr88881atQopaSk6MYbb1RFRYUk6Y477tCqVaskSQ888IASExOVkpKi+++/X1VVVerXr5+ampokSadPn1ZsbOxX2wAAAK6kurFa2fnZuvbFa/X4x4+rT0gfPXP1M1p+3XKN6z2uUxViqbNcKV4YJTU3fL29NfvMm4+ftKCsVUPv3r1bK1asUGZmpm699Va9+OKLevLJJ/W3v/1NY8eO1cMPP6zf//73evrpp7865uTJk3rppZe0Y8cOGYahU6dOKSQkROPGjdOrr76qG264QStXrtTNN98sm819194AAIDOp7KhUsuLlmt50XKdbjyt0T1HKyMlQ8Oih1kdrV11jivF9zqkpFukf932wydASr5Fuje/1UP369dPQ4cOlSQNGzZMe/fu1alTpzR27FhJ0ty5c7V58+ZvHdOlSxf5+/srPT1dq1evVmBgoCQpPT1dixYtkiQtWrRIaWlprc4HAADQFk7UndBftv1FE1ZN0D+/+KdSo1O14voV+r+r/6/TF2Kps1wpDuku+YVILQ2Sj/+Z935d2mRdsZ+f31cfe3t769SpUz94jI+Pjz7++GO99dZbWrlypf7+97/r7bff1ujRo3XgwAFt2rRJLS0tSkpKanU+AACA1iitKVVuYa5W7VqlxpZGXRN7jTJSMjQwbKDV0TpU5yjFklRTJg1Lk1LTpK2LpOpj7XKa0NBQhYWF6d1339WYMWO0dOnSr64a/0t1dbVqa2t13XXXadSoUYqPj//qc3PmzNGMGTP00EMPtUs+AACAc3Go6pByCnK0Zs8ayZSuj7te85LnqV9oP6ujWaLzlOLbln/98aSn2vVUixcv1o9//GPV1tYqLi7uqyUR/1JVVaWpU6eqvr5epmnqL3/5y1efmzVrlhYsWKAZM2a0a0YAAICz2Xdqn7Lys7R+/3p5GV66ecDNSktKU0xwjNXRLNV5SnE7iI2NVUFBwVfb999//1cfb9my5d8en5ub+9XHH3/88VnHfO+99zRt2jR17dq1zXICAAD8kB0ndyjTkak3i9+Uv4+/ZiXM0twhcxUVGGV1NJdAKe5AP/vZz/Taa69p/fr1VkcBAAAe4ovjXyjTkalNJZsUbAtWenK6ZifOVrh/uNXRXAqluAP97W9/szoCAADwAKZpauuxrbI77NpydItC/UJ1z9B7NCNhhrr4drE6nkuiFAMAAHQSpmnq/SPvy+6w67OyzxThH6H7ht2n6YOmK9AWaHU8l+bSpdg0zU73aik/xDRNqyMAAAA34zSdeufQO7I77Npevl3dg7rrNyN/oxvjb5S/j7/V8dyCy5Zif39/lZeXKyIiwmOKsWmaKi8vl78/P7wAAOCHtThbtOHABmXmZ2rPqT3qHdJbv7/s95ocN1k2b14193y4bCnu1auXSkpKdPz48TYdt76+3qVLp7+/v3r16mV1DAAA4MKanE16Ze8ryi7IVvHpYvUP7a/Hxzyua2KvkY+Xy9Y7l+ayf2o2m039+rX9zaPz8vJ08cUXt/m4AAAA7a2hpUEv7X5JOQU5OlpzVAnhCfrLuL/oR31+JC/Dy+p4bs1lSzEAAADOqG2q1Qu7XtDiwsU6XndcQ7sN1UOjHtLlMZd7zDLT9tbmpdgwjARJ90qKlPSWaZr/bOtzAAAAeIKqxiqt2LFCS7cv1amGUxrZfaSeuOIJpUanUobb2DmVYsMwciRNklRmmmbSN/ZfK+l/JXlLyjJN83HTNIsk/dgwDC9Jme2QGQAAoFOrqK/QsqJlWlG0QlVNVbqi1xXKSM7Q0KihVkfrtM71SnGupL9LWvKvHYZheEv6h6SrJZVI+sQwjJdN09xuGMYUSQ98eQwAAADOwfHa41pcuFjP73pe9c31Gt93vDKSM5QQkWB1tE7vnEqxaZqbDcOI/c7uEZL2mKa5T5IMw1gpaaqk7aZpvizpZcMwXpX0bBvmBQAAcC9VpdKqNGlarhQSfdaHHK0+qpyCHK3evVrNZrOu63ed0pPT1b9r/47N6sFas6Y4RtKhb2yXSBppGMY4STdJ8pO0/vsONgxjvqT5khQdHa28vLxWRDl31dXVHXYuAGgPzGOAexmw85/qefRDHXn259o96Cff+lxZU5nerHxTH9d8LEOGRgSP0NVdrla3lm469PkhHfpW1eo8XHEea00pPtvqbtM0zTxJeT90sGmadkl2SUpNTTXHjRvXiijnLi8vTx11LgBoD8xjgJtYGCU1N3y1GXP0dcUcfV3y8dOen36gzPxMvX70ddm8bJo+eLrShqSpR3APCwN3HFecx1pTiksk9f7Gdi9JR1oXBwAAoJO416Hyl36pwL2vK8BoVJ3pq8/ixur5nt301ss3KsAnQHMS52jukLmKDIi0Oq3Ha00p/kTSAMMw+kk6LOk2STPbJBUAAIC7C+muI3U2DVGTPvIN1KKwIL2vnQo5fkR3pdyl2Qmz1dW/q9Up8aVzvSXbCknjJEUahlEi6bemaWYbhnGPpA06c0u2HNM0C8/n5IZhTJY0OT4+/vxSAwAAuDjTNHXMdkwP9BiogwF1Cmjx1nxnuO6YtlYhviFWx8N3nOvdJ2Z8z/71+g9PpjuHcddJWpeamppxoWMAAAC4EtM0tblks+wOuxzeB9U1NFKXBc7Q3OTpuiyup9Xx8D14mWcAAIA20OJs0caDG5XpyNTOip2KCY7RQ6Me0tT4qfLz9rM6Hn4ApRgAAKAVmp3Nem3/a8rMz9T+yv2K7RKrhaMX6rq462TzslkdD+eIUgwAAHABGlsatXbvWuXk56ikukQDwgboT1f8SVf3vVreXt5Wx8N5srQU80Q7AADgbuqa67R692rlFOSorLZMSRFJ+u/h/62xvcfKy/CyOh4ukKWlmCfaAQAAd1HTVKOVO1ZqyfYlOll/UsOih+kPo/+gS3tcKsM422uawZ2wfAIAAOA/qGyo1LNFz2pZ0TKdbjyty3pepozkDKV2T7U6GtoQpRgAAOAsyuvKtWT7Eq3csVK1zbW6sveVmp8yX0mRSVZHQzugFAMAAHxDaU2pFhcu1qpdq9TQ0qBrY69Vekq6BoYNtDoa2hGlGAAAQNKhqkPKKcjR2j1r5TSduj7ueqUnp6tfaD+ro6EDcPcJAADg0fZV7lN2frZe3feqvAwv3Rh/o+5MvlMxwTFWR0MH4u4TAADAI+08uVOZ+Zl648Ab8vP208yEmZqbOFfRQdFWR4MFWD4BAAA8Sv7xfNkdduWV5CnIFqR5yfM0O2G2IgIirI4GC1GKAQCAR9haulV2h10fHv1QoX6h+unQn2rG4BkK9Qu1OhpcAKUYAAB0WqZp6oMjH8jusOvTsk8V7h+u+4bdp1sH3aogW5DV8eBCKMUAAKDTcZpO5R3Kk91hV2F5oaIDo/XAiAd084Cb5e/jb3U8uCBKMQAA6DRanC16o/gN2R127Tm1R72Ce+l3l/5OU/pPkc3bZnU8uDBuyQYAANxek7NJr+x9RdkF2So+Xay40Dg9NuYxXRt7rXy8uAaIH8Yt2QAAgNtqaGnQmt1rlFOQoyM1RzQ4fLCeGveUrupzlbwML6vjwY3wqxMAAHA7tU21emHXC1pcuFjH644rpVuKHhz1oMbEjJFhGFbHgxuiFAMAALdR1VillTtWaun2papoqNCI7iP02JjHNKL7CMowWoVSDAAAXF5FfYWWFS3TiqIVqmqq0uUxl+uulLs0NGqo1dHQSVCKAQBA26sqlValSdNypZALf9nkE3UntLhwsZ7b+Zzqmut0dd+rlZ6crsSIxLbLCohSDAAA2sOmJ6WDW6RNT0iTnjrvw49WH1VOQY5W716tZrNZE/tNVHpSuuLDuGMV2ge3ZAMAAG1nYZTU3PD19tbsM28+ftKCsh88vPh0sbLzs7Vu7zrJkKb2n6o7k+5Uny592jE0wC3ZAABAW7rXIW1YIO14RWquk3wCpIRJ0oQ//sfD9lTsUWZ+pl4/8Lp8DB/dMugWpQ1JU4/gHh0UHJ6O5RMAAKDthHSX/EKklgbJx//Me78u37uueHv5dmU6MrXx4EYF+ARobuJczRkyR5EBkR0cHJ6OUgwAANpWTZk0LE1KTZO2LpKqj/3bQz4v+1zPOJ7Re4ffU4gtRHel3KXZCbPV1b9rx+cFRCkGAABt7bblX3/8jSfZmaapj0s/lt1h18elHyvML0z3XnKvpg+arhDfEAuCAl+jFAMAgDa3rbhCW/aVa1RchC7p01XvHn5XzziekeO4Q90CuumXqb/UtIHTFGgLtDoqIIlSDAAA2ti24grNytqixuZm+YUWKW7AFh2s3q2eQT310KiHNDV+qvy8/ayOCXwLpRgAALSpD/aWqSVwm/wj3pG3X5kq63tq4eiFui7uOtm8bFbHA86KUgwAANpEU0uTXt77stYcz5R/z8Ny1ndXc+lM/WV6hobHcjcJuDZKMQAAaJX65nq9uPtFLSpYpGO1xzQkYohmxP9U9ZWDdGn/bhrWN8zqiMAP4hXtAADABalpqtFzO5/TksIlKq8v1yVRl+iRyx7RpT0vlWEYVscDzguvaAcAAM5LZUOlnt3xrJZtX6bTjad1Wc/LlJGcodTuqVZHAy4YyycAAMA5OVl/Uku3L9WKHStU01Sjcb3HaX7yfCV3S7Y6GtBqlGIAAPAfHas5ptzCXK3atUoNLQ2aEDtBGckZGhQ+yOpoQJuhFAMAgLMqqSpRTkGO1uxZI6fp1PVx12te8jzFhcZZHQ1oc5RiAADwLfsr9ysrP0uv7ntVXoaXpsZP1bykeeoV0svqaEC7oRQDAABJ0s6TO5WZn6k3DrwhP28/zRg8Q3cMuUPRQdFWRwPaHaUYAAAPl388X/Z8u/IO5SnIFqQ7k+7U7Ym3KyIgwupoQIehFAMA4KG2lm6V3WHXh0c/VBffLrp76N2aOXimQv1CrY4GdDhKMQAAHsQ0TX1w5APZHXZ9Wvapwv3D9Ythv9D0QdMVZAuyOh5gGUoxAAAewGk6lXcoT3aHXYXlhYoOjNYDIx7QzQNulr+Pv9XxAMtRigEA6MRanC16o/gNZeZnanfFbvUK7qXfXfo7Tek/RTZvm9XxAJdhaSk2DGOypMnx8fFWxgAAoNNpcjbp1X2vKjs/WwdOH1BcaJwevfxRTew3UT5eXBMDvsvSvxWmaa6TtC41NTXDyhwAAHQWDS0NWrtnrbLzs3Wk5ogGhw/WU+Oe0lV9rpKX4WV1PMBl8asiAACdQG1TrVbtWqXFhYtVVlemlG4penDUgxoTM0aGYVgdD3B5lGIAANxYdWO1Vu5cqSWFS1TRUKER3Ufo0TGPakT3EZRh4DxQigEAcEOn6k9p+Y7lWl60XFWNVRoTM0bzU+ZraNRQq6MBbolSDACAGzlRd0JLCpdo5c6Vqmuu01V9rtL8lPlKjEi0Ohrg1ijFAAC4gdKaUuUU5Gj17tVqcjZpYr+JSk9KV3wYd3AC2gKlGAAAF3bo9CFlF2Rr7d61kilNiZ+ieUnz1KdLH6ujAZ0KpRgAABe099ReZeVnaf3+9fIxfDRtwDTdmXSnegT3sDoa0ClRigEAcCFF5UXKzM/UxuKN8vfx15zEOZqTOEfdArtZHQ3o1CjFAAC4gM/LPpfdYde7h99VsC1YGSkZmp0wW2H+YVZHAzwCpRgAAIuYpqlPSj+R3WHXR6UfqatfV90z9B7NSJihLr5drI4HeBRKMQAAHcw0Tb17+F3ZHXZ9cfwLRQZE6v7U+3XLwFsUaAu0Oh7gkSjFAAB0EKfp1FsH31KmI1NFJ4vUI6iHFoxcoBsG3CA/bz+r4wEejVIMAEA7a3Y26/UDryvLkaW9lXvVt0tfPXLZI5rUf5JsXjar4wEQpRgAgDaxrbhCW/aVa1RchIb1PfPkuKaWJr2892Vl5WeppLpE8V3j9eQVT2pC3wny9vK2ODGAb6IUAwDQStuKKzQra4sam53y9fHSorSLtb/hbS0qXKTSmlINiRiiXw7/pcb1Hicvw8vquADOglIMAEArbdlXrsZmp5xGg8wuW3Tv+4+qznlKF0ddrN9d+jtd1vMyGYZhdUwA/4GlpdgwjMmSJsfH87rtAAD3ldzbV/7d3pZX1/dkeNcqLjRV94/4qVK7p1odDcA5srQUm6a5TtK61NTUDCtzAABwIU7Wn9TS7Uu1YscKeUfUqG/AcM1JmKdbk0dbHQ3AeWL5BAAA56mstky5hblatWuV6pvrNSF2gjKSMzQofJDV0QBcIEoxAADn6HD1YS0qWKTVu1fLaTp1fdz1mpc8T3GhcVZHA9BKlGIAAH7AgcoDysrP0qv7XpVhGLoh/gbdmXSneoX0sjoagDZCKQYA4HvsqtilLEeWNhRvkK+Xr24bfJvmDpmr7kHd//3BVaXSqjRpWq4UEt3hWQG0DqUYAIDvKDhRILvDrncOvaNAn0ClDUnT7Ym3KyIg4vsP2vSkdHCLtOkJadJTHRcWQJugFAMA8KVtx7Yp05Gp94+8ry6+XXT3RXdrZsJMhfqFfv9BC6Ok5oavt7dmn3nz8ZMWlLV/aABtglIMAPBopmnqw6Mfyu6wa9uxbQr3D9cvhv1C0wdNV5At6IcHuNchbVgg7XhFaq6TfAKkhEnShD+2f3gAbYZSDADwSKZpKu9QnjLzM5V/Il9RgVF6YMQDumnATQrwCTj3gUK6S34hUkuD5ON/5r1fF9YVA26GUgwA8Cgtzha9efBNZToytatil2KCY/TwpQ9rav+p8vX2vbBBa8qkYWlSapq0dZFUfaxtQwNod5RiAIBHaHI2af2+9crKz9KB0wcU2yVWj17+qCb2mygfr1b+c3jb8q8/5kl2gFuiFAMAOrXGlkat2bNGOQU5Olx9WIPCBunPY/+s8X3Gy9vL2+p4AFwEpRgA0CnVNtXqxd0vKrcgV2V1ZUqJTNGvR/xaV/S6QoZhWB0PgIuhFAMAOpXqxmqt3LlSSwqXqKKhQsO7D9fCyxdqVI9RlGEA34tSDADoFE7Vn9LyHcu1vGi5qhqrNDpmtOYnz9cl0ZdYHQ2AG6AUAwDc2om6E1pSuETP7XxOtc21uqrPVcpIydCQiCFWRwPgRijFAAC3VFpTqkUFi/Ti7hfV5GzSNX2vUUZKhgaEDbA6GgA3RCkGALiVQ6cPKbsgW2v3rpVMaXL/yZqXPE99u/S1OhoAN0YpBgC4hb2n9iorP0vr96+Xj+GjaQOmKS0pTT2De1odDUAnQCkGALi0HSd3yO6wa2PxRvn7+Ov2hNs1d8hcdQvsZnU0AJ0IpRgA4JK+OP6F7A67NpdsVrAtWOnJ6bo98XaF+YdZHQ1AJ0QpBgC4DNM0tfXYVj3jeEYfHf1IXf266mcX/0y3Db5NXXy7WB0PQCdGKQYAWM40Tb13+D3ZHXZ9fvxzRQZE6v7U+3XLwFsUaAu0Oh4AD0ApBgBYxmk69c7Bd/SM4xkVnSxSj6AeenDkg7pxwI3y8/azOh4AD0IpBgB0uGZnszYc2KCs/CztObVHfUL66JHLHtGkuEmyedusjgfAA7V5KTYM4wZJ10uKkvQP0zTfaOtzAADcU1NLk9btW6fs/GwdrDqo+K7xemLME5oQO0E+XlynAWCdc5qBDMPIkTRJUplpmknf2H+tpP+V5C0pyzTNx03TXCNpjWEYYZL+LIlSDAAerr65Xi/teUk5BTkqrSlVYkSinr7yaV3Z+0p5GV5WxwOAc75SnCvp75KW/GuHYRjekv4h6WpJJZI+MQzjZdM0t3/5kAVffh4A4KFqm2r1/M7ntXj7Yp2oO6Gh3Ybqt5f+VqN7jpZhGFbHA4CvnFMpNk1zs2EYsd/ZPULSHtM090mSYRgrJU01DKNI0uOSXjNN89O2DAsAcA+nG09rRdEKLS1aqsqGSo3sMVJPXvGkUqNTKcMAXFJrFnDFSDr0je0SSSMl/UzSeEmhhmHEm6b5f2c72DCM+ZLmS1J0dLTy8vJaEeXcVVdXd9i5AKA9uNI8tqeiRTtOtmhwuLfiw7xV1VKlvNN52ly1WfVmvZICkjSv+zz18+2nmh012rRjk9WRAbgAV5rH/qU1pfhsv+qbpmn+VdJff+hg0zTtkuySlJqaao4bN64VUc5dXl6eOupcANAeXGUe21ZcoT+/tUWNzU75+p3UpDG7tbl0neqb6zW+73hlJGcoISLB6pgAXJCrzGPf1JpSXCKp9ze2e0k60ro4AAB3sWVfuZpULlv0JvmEbtUbJU5Nirte6cnpiusaZ3U8ADgvrSnFn0gaYBhGP0mHJd0maWabpAIAuLQDlQdU2JipgP6vSzLkPJ2qP034hSYOHmJ1NAC4IOd6S7YVksZJijQMo0TSb03TzDYM4x5JG3Tmlmw5pmkWns/JDcOYLGlyfHz8+aUGAFhiV8UuZTmytKF4g2xeNk3odaOizWs1/spBGtY3zOp4AHDBzvXuEzO+Z/96Sesv9OSmaa6TtC41NTXjQscAALS/whOFsjvsevvQ2wr0CdTcIXM1J3GOIgMirY4GAG2Clw8CAHyvT499KrvDrvePvK8Q3xD95KKfaFbCLIX6hVodDQDaFKUYAPAtpmlqy9Etsjvs2npsq8L9w/Vfl/yXpg+armDfYKvjAUC7oBQDACSdKcObSjbJ7rAr/0S+ogKj9Kvhv9LNA29WgE+A1fEAoF1ZWop5oh0AWK/F2aKNBzcq05GpnRU7FRMco4cvfVhT+0+Vr7ev1fEAoENYWop5oh0AWKfJ2aTX9r+mrPws7a/cr36h/fTo5Y9qYr+J8vHiPxIBeBZmPQDwMI0tjVq7d62y87N1uPqwBoYN1J/H/lnj+4yXt5f3+Q1WVSqtSpOm5Uoh0e2SFwA6AqUYADxEXXOdXtz1ohYVLlJZbZlSIlP06xG/1hW9rpBhGBc26KYnpYNbpE1PSJOeatvAANCBKMUA0MlVN1bruZ3Pacn2JTpZf1Kp0alaOHqhRvUYdeFleGGU1Nzw9fbW7DNvPn7SgrK2CQ4AHYhSDACdVGVDpZYXLdeyomWqaqzS6JjRmp88X5dEX9L6we91SBsWSDtekZrrJJ8AKWGSNOGPrR8bACzA3ScAoJM5UXdCS7cv1codK1XbXKsf9f6R5qfM15DIIW13kpDukl+I1NIg+fifee/XhXXFANwWd58AgE6itKZUuYW5WrVrlZqcTbqm7zVKT0nXwLCB7XPCmjJpWJqUmiZtXSRVH2uf8wBAB2D5BAC4uUNVh5RTkKM1e9ZIpnR93PVKT05XbGhs+574tuVff8yT7AC4OUoxALipfaf2KSs/S+v3r5eX4aWbB9ystKQ0xQTHWB0NANwOpRgA3ExJY4nuy7tPG4s3yt/HX7MSZmnukLmKCoyyOhoAuC1KMQC4iS+Of6FMR6Y2Hd2kYFuw0pPTNTtxtsL9w62OBgBuj1IMAC7MNE1tPbZVzzie0UdHP1KoX6iuD71ev7nuN+ri28XqeADQaXBLNgBwQaZp6v0j78vusOuzss8U4R+h/zfs/+nWQbfq4/c/phADQBvjlmwA4EKcplPvHHxH9ny7tpdvV/eg7vrNyN/oxvgb5e/jb3U8AOi0WD4BAC6gxdmiDQc2KDM/U3tO7VHvkN76/WW/1+S4ybJ526yOBwCdHqUYACzU1NKkV/a9ouyCbBWfLlb/0P56fMzjuib2Gvl4MUUDQEdhxgUACzS0NOil3S8ppyBHR2uOKiE8QU+Pe1pX9rlSXoaX1fEAwONQigGgA9U21eqFXS8otzBXJ+pOaGi3oXpo1EO6POZyGYZhdTwA8FiUYgDoAFWNVVqxY4WWbl+qUw2nNLLHSD15xZNKjU6lDAOAC6AUA0A7qqiv0NLtS7Vyx0pVNVVpTMwYzU+Zr6FRQ62OBgD4Bu5TDADt4HjtcS0uXKzndz2v+uZ6je87XhnJGUqISLA6GgDgLLhPMQC0oSPVR5RTkKOXdr+kZrNZ1/W7TunJ6erftb/V0QAA/wHLJwCgDRSfLlZ2frbW7V0nGdLU/lM1L2meenfpbXU0AMA5oBQDwHnYVlyhLfvKNSouQsP6hml3xW5l5mdqw4ENsnnZdOugW5WWlKbuQd2tjgoAOA+UYgA4R9uKKzQra4sam53yDTqiURd/pm0n3lWgT6DmDpmrOYlzFBkQaXVMAMAFoBQDwDnasq9czbZ98uv+tnyCdym/PEh3pdyl2Qmz1dW/q9XxAACtQCkGgB9gmqa2HN2ivNP/VEDfz2Q2B6nlxET97w0/1+X9e1kdDwDQBijFAPA9TNPU5pLNsjvscpxwKCogSjP636PAhtEaEx+jYX3DrI4IAGgjlGIA+I4WZ4s2HtyoTEemdlbsVExwjB4a9ZCmxk+VX22FtCpNGpFrdUwAQBvixTsA4EvNzma9tv81ZeZnan/lfsV2idXC0Qt1Xdx1snnZzjxo05PSwS3SpiekSU9ZGxgA0GZ48Q4AHq+xpVFr965Vdn62Dlcf1oCwAfrT2D/p6j5Xy9vL+8yDFkZJzQ1fH7Q1+8ybj5+0oMya4ACANsPyCQAeq665Tqt3r1ZOQY7KasuUFJGkXw3/lcb2Hisvw+vbD77XIW1YIO14RWquk3wCpIRJ0oQ/WhMeANCmKMUAPE51Y7We2/mclmxfopP1JzUsepj+MPoPurTHpTIM4+wHhXSX/EKklgbJx//Me78uUkh0x4YHALQLSjEAj1HZUKlni57VsqJlOt14WqN7jlZGSoaGRQ87twFqyqRhaVJqmrR1kVR9rH0DAwA6DKUYQKdXXleuJduXaOWOlaptrtWVva/U/JT5SopMOr+Bblv+9cc8yQ4AOhVKMYBOq7SmVLmFuXpx14tqaGnQtbHXKj0lXQPDBlodDQDgYijFADqdQ1WHlFOQozV71sg0TU2Km6R5yfPUL7Sf1dEAAC6KUgyg09h3ap+y8rO0fv96eRleuin+Jt2ZfKdigmOsjgYAcHGUYgBub+fJnbI77Hqz+E35eftpZsJM3THkDkUFRlkdDQDgJijFANyW47hDmY5M5ZXkKcgWpPTkdM1OnK1w/3CrowEA3AylGIBbMU1TW49tld1h15ajWxTqF6qfDv2pZgyeoVC/UKvjAQDcFKUYgFswTVMfHPlAdoddn5Z9qgj/CN037D7dOuhWBdmCrI4HAHBzlpZiwzAmS5ocHx9vZQwALsxpOvXOoXeU6chUYXmhogOj9esRv9ZNA26Sv4+/1fEAAJ2EpaXYNM11ktalpqZmWJkDgOtpcbZow4ENyszP1J5Te9QruJd+d+nvNKX/FNm8bVbHAwB0MiyfAOBSmpxNemXvK8ouyFbx6WLFhcbpsTGP6drYa+XjxZQFAGgf/AsDwCU0tDRoze41yinI0ZGaI0oIT9BT457SVX2ukpfhZXU8AEAnRykGYKnaplq9sOsFLS5crON1x3VRt4v04KgHNSZmjAzDsDoeAMBDUIoBWKKqsUordqzQ0u1LdarhlEZ2H6nHxzyu4d2HU4YBAB2OUgygQ1XUV2hZ0TKtKFqhqqYqjYkZo/kp8zU0aqjV0QAAHoxSDKBDHK89rsWFi/X8rudV11yn8X3GKyMlQ4kRiVZHAwCAUgygfR2tPqqcghyt3r1azWazJvabqPSkdMWHcX9yAIDroBQDaBfFp4uVnZ+tdXvXSYY0tf9U3Zl0p/p06WN1NAAA/g2lGECb2lOxR5n5mXr9wOuyedl0y6BblDYkTT2Ce1gdDQCA70UpBvCfVZVKq9KkablSSPT3PqywvFCZjky9dfAtBfgEaG7iXM0ZMkeRAZEdlxUAgAtEKQbwn216Ujq4Rdr0hDTpqX/79Gdln8nusOu9w+8pxBaiu1Lu0uyE2erq37XjswIAcIEoxQDObmGU1Nzw9fbW7DNvPn4yHzymj0o/kt1h1yelnyjML0z3XnKvpg+arhDfEOsyAwBwgSjFAM7uXoe0YYFaitbJu6VeLd7+8kqYpM0pU2R/bbYcxx2KCojSfw//b9084GYF2gKtTgwAwAWjFAM4u5DuOt7kq4jmBtXKpnf9vPR/tYXa8+HHigmO0UOjHtLU+Kny8/azOikAAK1GKQbwvSrKD+t/AodrQ1iDmv0q1LOlUQvHLNR1cdfJ5mWzOh4AAG3G0lJsGMZkSZPj47mJP+BKGlsa9fLel/X/davX8ZBSOeu7y1k6UwunZ2h4LHeTAAB0PpaWYtM010lal5qammFlDgBn1DfX68XdL2pRwSIdqz2mpIgkzYy/R/WVg3Rp/24a1jfM6ogAALQLlk8AUE1TjZ7b+ZwWFy7WyfqTuiTqEj0y+hFd2uNSGYZhdTwAANodpRjwYJUNlXp2x7Natn2ZTjee1uieo5WRkqFh0cOsjgYAQIeiFAMeqLyuXEu3L9XKnStV01SjK3tfqfkp85UUmWR1NAAALEEpBjzIsZpjyi3M1apdq9TQ0qBrYq9RenK6BoUPsjoaAACWohQDHqCkqkQ5BTlas2eNnKZT18ddr/TkdPUL7Wd1NAAAXAKlGOjE9lfuV1Z+ll7d96q8DC/dGH+j0pLS1Cukl9XRAABwKZRioBPaeXKnMvMz9caBN+Tn7acZg2fojiF3KDoo2upoAAC4JEox0InkH8+XPd+uvEN5CrIFaV7yPM1OmK2IgAirowEA4NIoxUAnsLV0q+wOuz48+qFC/UJ199C7NXPwTIX6hVodDQAAt0ApBtyUaZr64MgHsjvs+rTsU4X7h+u+Yffp1kG3KsgWZHU8AADcCqUYcDNO06m8Q3myO+wqLC9UdGC0HhjxgG4ecLP8ffytjgcAgFuiFANuosXZojeK31BmfqZ2V+xWr+Be+t2lv9OU/lNk87ZZHQ8AALdGKQZcXJOzSa/ue1VZ+VkqPl2suNA4PXr5o5rYb6J8vPgrDABAW+BfVMBFNbQ0aM3uNcopyNGRmiMaHD5YT417Slf1uUpehpfV8QAA6FQoxYCLqW2q1apdq5RbmKvjdceV0i1FD456UGNixsgwDKvjAQDQKVGKARdR1VillTtWaun2papoqNCI7iP02JjHNKL7CMowAADtjFIMWOxU/SktK1qmZ4ueVVVTlcbEjNH8lPkaGjXU6mgAAHgMSjFgkRN1J7SkcIlW7lypuuY6je8zXhkpGUqMSLQ6GgAAHodSDHSwo9VHtahwkVbvXq0mZ5Oujb1WGckZig+LtzoaAAAei1IMdJCDpw8quyBbL+99WZI0pf8UzUuapz5d+licDAAAUIqBdrb31F5l5mfqtf2vycfw0S0Db1HakDT1CO5hdTQAAPAlSjHQTraXb1emI1MbD25UgE+A5iTO0ZzEOeoW2M3qaAAA4DsoxUAb+7zsc9kddr17+F2F2EJ0V8pdmp0wW139u1odDQAAfA9KMdAGTNPUx6Ufy+6w6+PSj9XVr6t+fvHPddvg2xTiG2J1PAAA8APavBQbhhEn6UFJoaZpTmvr8QFXYpqm3j38ruwOu744/oW6BXTTL1N/qWkDpynQFmh1PAAAcI68zuVBhmHkGIZRZhhGwXf2X2sYxk7DMPYYhvGAJJmmuc80zXntERboMFWl0qKJUtWxs37aaTr1ZvGbmv7KdP30rZ+qrLZMC0Yu0Gs3v6Y5Q+ZQiAEAcDPneqU4V9LfJS351w7DMLwl/UPS1ZJKJH1iGMbLpmlub+uQQIfb9KR0cIu06Qlp0lNf7W52Nuu1/a8pKz9L+yr3qW+XvvrD6D/o+rjrZfOyWRgYAAC0xjmVYtM0NxuGEfud3SMk7TFNc58kGYaxUtJUSZRiuK+FUVJzw9fbW7Olrdlq8vHTy7f+U1n5WSqpLlF813g9ecWTmtB3gry9vK3LCwAA2oRhmua5PfBMKX7FNM2kL7enSbrWNM30L7dvlzRS0m8l/VFnriBnmab52PeMN1/SfEmKjo4etnLlytZ9JeeourpawcHBHXIuuB/fhpPqv3eRIo5vkY/ZqGovXy3rnqhnA5pV4TytPr59dE3oNUoKSJKXcU6rj4A2xzwGwN1ZOY9deeWV20zTTP3u/tY80c44yz7TNM1yST/+oYNN07RLsktSamqqOW7cuFZEOXd5eXnqqHPBPR1fsVF1Ze9pZZeuWh4apHKfk7ok8hI9ljJfl/W8TIZxth99oOMwjwFwd644j7WmFJdI6v2N7V6SjrQuDmCt042nlVlVoJf69FG9t1N9awN1X2NXTZm42OpoAACgHbWmFH8iaYBhGP0kHZZ0m6SZbZIK6GAn609q6falWrFjhWr8auSsTlTjiSu1p7mvYtJHWR0PAAC0s3MqxYZhrJA0TlKkYRglkn5rmma2YRj3SNogyVtSjmmahe2WFGgHZbVlyi3M1Qs7X1BDS4MmxE5QRnKGqquitGVfuUbFRWhY3zCrYwIAgHZ2rnefmPE9+9dLWn+hJzcMY7KkyfHx8Rc6BHBBDlcfVk5+jl7a85KcplPXx12vecnzFBcad+YB4aIMAwDgQSx9mWfTNNdJWpeampphZQ54jgOVB5SVn6VX970qwzB0Q/wNujPpTvUK6WV1NAAAYCFLSzHQUXZV7FKWI0uvH3hdft5+um3wbbpjyB2KDoq2OhoAAHABlGJ0agUnCmR32PXOoXcUZAvSnUl36vbE2xUREGF1NAAA4EIoxeiUth3bJrvDrg+OfKAuvl1099C7NXPwTIX6hVodDQAAuCBLSzFPtENbMk1THx75UPZ8u7Yd26Zw/3D9YtgvNH3QdAXZgqyOBwAAXBhPtIPbc5pObTq0SXaHXQXlBYoKjNIDIx7QTQNuUoBPgNXxAACAG2D5BNxWi7NFbxa/KXu+XbsrdismOEa/vfS3mtJ/iny9fa2OBwAA3AilGG6nydmk9fvWKys/SwdOH1C/0H569PJHNbHfRPl48SMNAADOHw0CbqOhpUFr96xVTkGODlcf1qCwQfqfsf+jq/pcJW8vb6vjAQAAN8YT7eDyaptq9eLuF5VbkKuyujKlRKbo1yN+rSt6XSHDMKyOBwAAOgGeaAeXVd1YrZU7V2pJ4RJVNFRoePfh+uOYP2pk95GUYQAA0KZYPgGXc6r+lJYVLdOzO55VVWOVLo+5XPNT5uviqIutjgYAADopSjFcxom6E1pSuEQrd65UXXOdrupzlTJSMjQkYojV0QAAQCdHKYblSmtKtahgkV7c/aKanE26NvZapSena0DYAKujAQAAD0EphmUOnT6k7IJsrd27VjKlSf0nKT05XX279LU6GgAA8DCUYnS4vaf2Kis/S+v3r5eP4aNpA6YpLSlNPYN7Wh0NAAB4KG7Jhg5TVF6kzPxMbSzeKH8ff81JnKM5iXPULbCb1dEAAICH45ZsaHefl32uzPxMbS7ZrGBbsDJSMjQ7YbbC/MOsjgYAACCJ5RNoJ6ZpauuxrXrG8Yw+OvqRuvp11c8v/rluG3ybQnxDrI4HAADwLZRitCnTNPXe4fdkd9j1+fHPFRkQqftT79ctA29RoC3Q6ngAAABnRSlGm3CaTr198G3ZHXYVnSxSj6AeenDkg7pxwI3y8/azOh4AAMB/RClGqzQ7m/X6gdeV5cjS3sq96hPSR49c9ogm9Z8km5fN6ngAAADnhFKMC9LU0qR1+9YpKz9Lh6oOKb5rvJ4Y84Suib1G3l7eVscDAAA4L5RinJf65nqt3r1aiwoXqbSmVIkRiXr6yqd1Ze8r5WV4WR0PAADggnCfYpxRVSqtSpOm5Uoh0f/26dqmWj2/83nlFuaqvL5cF0ddrN9e+luN7jlahmF0fF4AAIA2xH2KccamJ6WDW6RNT0iTnvpq9+nG03q26FktK1qmyoZKjeoxSn9K+ZNSo1MpwwAAoNNg+YSnWxglNTd8vb01W9qarZO+/lp67W+0csdKVTdV64peV2h+ynxd1O0i67ICAAC0E0qxp7vXIW1YoJaidfJuqddR30AtjU3SKucp1edn6+q+VysjJUODwwdbnRQAAKDdUIo9XUh3HW/yVb2alR0eoZe7BKqlqVTXx01WenK64rrGWZ0QAACg3VGKPdyBygP6S83nyuvdU0556aLTIfqJd6hGj3nU6mgAAAAdhlLsoXZV7FKWI0sbijfI289HTSdHq/HEFdqqMPmnj7I6HgAAQIeiFHuYghMFsjvseufQOwr0CdQdQ+7Q7Ym3q7jMW1v2lWtUXISG9Q2zOiYAAECHohR7iG3HtinTkan3j7yvEN8Q3X3R3ZqZMFOhfqGSpMi+ogwDAACPRSnuxEzT1IdHP5TdYde2Y9sU7h+u/7rkvzR90HQF+wZbHQ8AAMBl8Ip2nZBpmtpUskl2h135J/IVFRilB0Y8oJsG3KQAnwCr4wEAALgcXtGuE2lxtujNg28q05GpXRW7FBMco4cvfVhT+0+Vr7ev1fEAAABcFssnOoEmZ5Ne2/+aMh2ZOnD6gPqF9tOjlz+qif0myseLbzEAAMAPoTG5scaWRq3du1bZ+dk6XH1Yg8IG6c9j/6zxfcbL28vb6ngAAABug1Lshuqa6/Tirhe1qHCRymrLlByZrF+P+LWu6HWFDMOwOh4AAIDboRS7kerGaj238zkt2b5EJ+tPanj34Vo4eqFG9RhFGQYAAGgFSrEbqGyo1PKi5VpWtExVjVUaHTNa85Pn65LoS6yOBgAA0ClQil3YiboTWrJ9iZ7b8Zxqm2v1o94/0vyU+RoSOcTqaAAAAJ0KpdgFldaUKrcwV6t2rVKTs0nXxF6j9OR0DQwbaHU0AACATolS7EIOVR1Sdn621u5dK5nSpP6TNC9pnmJDY62OBgAA0KlRil3AvlP7lJWfpfX718vL8NLNA25WWlKaYoJjrI4GAADgESjFFtpxcofsDrs2Fm+Uv4+/ZiXM0twhcxUVGGV1NAAAAI9iaSk2DGOypMnx8fFWxuhwXxz/QpmOTG0q2aRgW7DSk9M1O3G2wv3DrY4GAADgkSwtxaZprpO0LjU1NcPKHB3BNE1tPbZVzzie0UdHP1JXv666Z+g9mpEwQ118u1gdDwAAwKOxfKKdmaap9w6/J7vDrs+Pf67IgEjdn3q/bhl4iwJtgVbHAwAAgCjF7cZpOvXOwXf0jOMZFZ0sUo+gHnpw5IO6ccCN8vP2szoeAAAAvoFS3Maanc3acGCDsvKztOfUHvUJ6aNHLntEk+ImyeZtszoeAAAAzoJS3EaaWpr0yr5XlJWfpYNVBxXfNV6Pj3lc18ReIx8v/pgBAABcGW2tlRpaGrR692otKlikozVHlRiRqKfHPa0r+1wpL8PL6ngAAAA4B5TiC1TbVKsXdr2g3MJcnag7oaHdhurhSx/W6J6jZRiG1fEAAABwHijF5+l042mt3LFSS7cv1amGUxrZY6SevOJJpUanUoYBAADcFKX4HFXUV2jp9qVasWOFqpuqNbbXWGWkZOiibhdZHQ0AAACtRCn+Acdrj2tx4WI9v+t51TfXa3zf8ZqfMl+DwwdbHQ0AAABthFL8PY5UH1FOQY5e2v2SWswWXdfvOqUnpyuua5zV0QAAANDGPLcUV5VKq9KkablSSPRXu4tPFysrP0uv7H1FMqQb4m/QnUl3qndIb+uyAgAAoF15bine9KR0cIu06Qlp0lPaXbFbmfmZ2nBgg2xeNk0fPF13DLlD3YO6W50UAAAA7czjSvGYzdOkvKavtgsdS2U/uFZvBwUq0CdQc4fM1ZzEOYoMiLQwJQAAADqSx5Xij0baNejYSzp4aKOeCQ/S+4EBCpa3fjJ4pmYNvUuhfqFWRwQAAEAH87hS3OgXriN1Np32NrXdz1c/Lz+llKCrNHLkf1sdDQAAABax9HWIDcOYbBiGvbKyskPP28tWrUO1oxW09y4FnhqpgbbaDj0/AAAAXIulV4pN01wnaV1qampGR5437M7nlVBcoUn7yjU4bo7C+oZ15OkBAADgYjxu+cS/DOsbpmGUYQAAAMji5RMAAACAK6AUAwAAwONRigEAAODxKMUAAADweJRiAAAAeDxKMQAAADwepRgAAAAej1IMAAAAj0cpBgAAgMejFAMAAMDjUYoBAADg8QzTNK3OIMMwjksqPs/DQiVVXsDpIiWduIDjcGEu9Pvk6lz167IqV3uftz3Gb6sxWzMO85h7cNW/763lql8X81jHjtnaMdxxHutrmma37+50iVJ8IQzDsJumOf8CjttqmmZqe2TCv7vQ75Orc9Wvy6pc7X3e9hi/rcZszTjMY+7BVf++t5arfl3MYx07ZmvH6EzzmDsvn1hndQCck876fXLVr8uqXO193vYYv63GbM04rvpzhG/rrN8nV/26mMc6dszWjuGqP0fnzW2vFF8oV/zNBADOB/MYAHfnivOYO18pvlB2qwMAQCsxjwFwdy43j3nclWIAAADguzzxSjEAAADwLZRiAAAAeDxKMQAAADyex5diwzCCDMNYbBhGpmEYs6zOAwDnyzCMOMMwsg3DWGV1FgC4EIZh3PBlF1trGMYEKzJ0ylJsGEaOYRhlhmEUfGf/tYZh7DQMY49hGA98ufsmSatM08yQNKXDwwLAWZzPPGaa5j7TNOdZkxQAzu4857E1X3axOyRNtyBu5yzFknIlXfvNHYZheEv6h6SJkhIlzTAMI1FSL0mHvnxYSwdmBID/JFfnPo8BgCvK1fnPYwu+/HyH65Sl2DTNzZJOfmf3CEl7vryi0ihppaSpkkp0phhLnfTPA4D7Oc95DABczvnMY8YZT0h6zTTNTzs6q+RZJTBGX18Rls6U4RhJqyXdbBjGP9WJXqoQQKd01nnMMIwIwzD+T9LFhmH82ppoAHBOvq+P/UzSeEnTDMP4sRXBfKw4qUWMs+wzTdOskZTW0WEA4AJ83zxWLsmSf0QA4Dx93zz2V0l/7egw3+RJV4pLJPX+xnYvSUcsygIAF4J5DIC7c9l5zJNK8SeSBhiG0c8wDF9Jt0l62eJMAHA+mMcAuDuXncc6ZSk2DGOFpA8lDTIMo8QwjHmmaTZLukfSBklFkp43TbPQypwA8H2YxwC4O3ebxwzTNK3OAAAAAFiqU14pBgAAAM4HpRgAAAAej1IMAAAAj0cpBgAAgMejFAMAAMDjUYoBAADg8SjFAAAA8HiUYgAAAHg8SjEAAAA83v8P4d/0PVlcKxMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.loglog(x, y_exact, '.', label='exact')\n",
    "plt.loglog(x, y, '*', label='noisy')\n",
    "plt.loglog(xPlot, c * xPlot**p)\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "noble-lewis",
   "metadata": {},
   "source": [
    "---\n",
    "This work is licensed under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)"
   ]
  }
 ],
 "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.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
