{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimization and Root Finding" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy as scipy\n", "from scipy.interpolate import interp1d\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example: Maximum Likelihood Estimation (MLE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that in MLE, we are interested in estimating the value of a parameter $\\theta$ that maximizes a log-likelihood function $\\ell(X;\\theta)$. Let $X_1,...,X_n$ be an iid set of random variables with pdf $f(x;\\theta)$, where $\\theta \\in \\mathbb{R}^k$ is a parameter. The likelihood function is:\n", "\n", "\n", "\n", "$$L(X;\\theta) = \\prod_{i=1}^n f(X_i;\\theta)$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want the value of $\\theta$ that maximizes $L$. We can accomplish this by taking the first derivative (or gradient) of $L$ with respect to $\\theta$, setting it to zero and solving for $\\theta$. However, this is more easily accomplished if we first take $\\log(L)$, as $L$ is a product of densities, and taking the log of a product yields a sum. Because $log$ is a monotonically increasing function, any value of $\\theta$ that maximizes $\\log(L)$ also maximizes $L$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "\\begin{eqnarray*}\n", "\\ell(X;\\theta) &=& \\log(L(X;\\theta)) \\\\\\\\\n", "&=& \\log\\left(\\prod_{i=1}^n f(X_i;\\theta)\\right)\\\\\\\\\n", "&=&\\sum_{i=1}^n \\log(f(X_i;\\theta)\n", "\\end{eqnarray*}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Optimization then amounts to finding the zeros of" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "\\begin{eqnarray*}\n", "\\frac{\\partial\\ell}{\\partial \\theta} &=& \\frac{\\partial}{\\partial \\theta} \\left(\\sum_{i=1}^n\\log(f(X_i;\\theta)\\right)\\\\\\\\\n", "&=& \\sum_{i=1}^n \\frac{\\partial\\log(f(X_i;\\theta)}{\\partial \\theta}\n", "\\end{eqnarray*}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization in one dimension usually means finding roots of the derivative." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The MLE problem above is one circumstance where optimization (in the case of one parameter - single variable optimization) is required. Mostly, we will be interested in multivariate optimization. We begin with the single variable case to develop the main ideas." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Main Issues in Root Finding in One Dimension\n", "\n", "* Separating close roots\n", "* Numerical Stability\n", "* Rate of Convergence\n", "* Continuity and Differentiability" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bisection Method" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The bisection method is one of the simplest methods for finding zeroes of a non-linear function. It is guaranteed to find a root - but it can be slow. The main idea comes from the intermediate value theorem: If $f(a)$ and $f(b)$ have different signs and $f$ is continous, then $f$ must have a zero between $a$ and $b$. We evaluate the function at the midpoint, $c = \\frac12(a+b)$. $f(c)$ is either zero, has the same sign as $f(a)$ or the same sign as $f(b)$. Suppose $f(c)$ has the same sign as $f(a)$ (as pictured below). We then repeat the process on the interval $[c,b]$. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def f(x):\n", " return x**3 + 4*x**2 -3\n", "\n", "x = np.linspace(-3.1, 0, 100)\n", "plt.plot(x, x**3 + 4*x**2 -3)\n", "\n", "a = -3.0\n", "b = -0.5\n", "c = 0.5*(a+b)\n", "\n", "plt.text(a,-1,\"a\")\n", "plt.text(b,-1,\"b\")\n", "plt.text(c,-1,\"c\")\n", "\n", "plt.scatter([a,b,c], [f(a), f(b),f(c)], s=50, facecolors='none')\n", "plt.scatter([a,b,c], [0,0,0], s=50, c='red')\n", "\n", "xaxis = plt.axhline(0);" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n/x/iGSDtD/mCwAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "x = np.linspace(-3.1, 0, 100)\n", "plt.plot(x, x**3 + 4*x**2 -3)\n", "\n", "d = 0.5*(b+c)\n", "\n", "plt.text(d,-1,\"d\")\n", "plt.text(b,-1,\"b\")\n", "plt.text(c,-1,\"c\")\n", "\n", "plt.scatter([d,b,c], [f(d), f(b),f(c)], s=50, facecolors='none')\n", "plt.scatter([d,b,c], [0,0,0], s=50, c='red')\n", "\n", "xaxis = plt.axhline(0);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can terminate the process whenever the function evaluated at the new midpoint is 'close enough' to zero. This method is an example of what are known as 'bracketed methods'. This means the root is 'bracketed' by the end-points (it is somewhere in between). Another class of methods are 'open methods' - the root need not be somewhere in between the end-points (but it usually needs to be close!)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Secant Method" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The secant method also begins with two initial points, but without the constraint that the function values are of opposite signs. We use the secant line to extrapolate the next candidate point." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nSqkw9//7wamoC3tbkQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def f(x):\n", " return (x**3-2*x+7)/(x**4+2)\n", "\n", "x = np.arange(-3,5, 0.1);\n", "y = f(x)\n", "\n", "p1=plt.plot(x, y)\n", "plt.xlim(-3, 4)\n", "plt.ylim(-.5, 4)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "t = np.arange(-10, 5., 0.1)\n", "\n", "x0=-1.2\n", "x1=-0.5\n", "xvals = []\n", "xvals.append(x0)\n", "xvals.append(x1)\n", "notconverge = 1\n", "count = 0\n", "cols=['r--','b--','g--','y--']\n", "while (notconverge==1 and count < 3):\n", " slope=(f(xvals[count+1])-f(xvals[count]))/(xvals[count+1]-xvals[count])\n", " intercept=-slope*xvals[count+1]+f(xvals[count+1])\n", " plt.plot(t, slope*t + intercept, cols[count])\n", " nextval = -intercept/slope\n", " if abs(f(nextval)) < 0.001:\n", " notconverge=0\n", " else:\n", " xvals.append(nextval)\n", " count = count+1\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The secant method has the advantage of fast convergence. While the bisection method has a linear convergence rate (i.e. error goes to zero at the rate that $h(x) = x$ goes to zero, the secant method has a convergence rate that is faster than linear, but not quite quadratic (i.e. $\\sim x^\\alpha$, where $\\alpha = \\frac{1+\\sqrt{5}}2 \\approx 1.6$)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Newton-Rhapson Method" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to find the value $\\theta$ so that some (differentiable) function $g(\\theta)=0$. \n", "Idea: start with a guess, $\\theta_0$. Let $\\tilde{\\theta}$ denote the value of $\\theta$ for which $g(\\theta) = 0$ and define $h = \\tilde{\\theta} - \\theta_0$. Then:\n", "\n", "$$\n", "\\begin{eqnarray*}\n", "g(\\tilde{\\theta}) &=& 0 \\\\\\\\\n", "&=&g(\\theta_0 + h) \\\\\\\\\n", "&\\approx& g(\\theta_0) + hg'(\\theta_0)\n", "\\end{eqnarray*}\n", "$$\n", "\n", "This implies that \n", "\n", "$$ h\\approx \\frac{g(\\theta_0)}{g'(\\theta_0)}$$\n", "\n", "So that\n", "\n", "$$\\tilde{\\theta}\\approx \\theta_0 - \\frac{g(\\theta_0)}{g'(\\theta_0)}$$\n", "\n", "Thus, we set our next approximation:\n", "\n", "$$\\theta_1 = \\theta_0 - \\frac{g(\\theta_0)}{g'(\\theta_0)}$$\n", "\n", "and we have developed an interative procedure with:\n", "\n", "$$\\theta_n = \\theta_{n-1} - \\frac{g(\\theta_{n-1})}{g'(\\theta_{n-1})}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $$g(x) = \\frac{x^3-2x+7}{x^4+2}$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The graph of this function is:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n5vApPtAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(-5,5, 0.1);\n", "y = (x**3-2*x+7)/(x**4+2)\n", "\n", "p1=plt.plot(x, y)\n", "plt.xlim(-4, 4)\n", "plt.ylim(-.5, 4)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title('Example Function')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEZCAYAAACZwO5kAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VNXWwOHfSgIk9I6UCNIUUECBUJV47ahYkCKCWMFy\nxY6KIngt1/ZZsKKAoqiAF0QQUEEISofQq3QIhF5DElJmf3/sQUJISJlyZibrfZ7zpMyec1YCWbNn\nn7X3FmMMSimlQleY0wEopZTyLU30SikV4jTRK6VUiNNEr5RSIU4TvVJKhThN9EopFeI00SsFiMg2\nEbnK6TiU8gVN9CpgiUgPEVkoIkkisldEFojIwz66nHEfucXSUkR+EZFDInJYRNaIyGsiUt5H8Sjl\nNZroVUASkaeBD4C3gGrGmGrAQ0B7ESnu51jaAbOAv4ALjTEVgOuBDKCZP2NRqjA00auAIyLlgFeA\nh40xE4wxJwCMMcuNMb2MMWmn2onINyKyzz308qKIiPsxEZGX3N/fKyKjRKRslmv0FpHtInJARAbm\nEdLbwEhjzFvGmP3uWHYaY4YYY2a7zzdERL7Ncv46IuISkbAssY4Qkd0ikiAir2Z5rL6IzBaRIyKy\nX0TGZPkZ3nfHf1REVopIE+/8llVRooleBaK2QAng5zzafQSUAS4AOgJ3A/e6H7sX6APEAnWB0sDH\nACLSGPgUuAuoAVQCauV0AREpBbQBxucRS15riXwNpAH1gEuBa4EH3I+9CvxqjCkP1ASGur9/LXA5\n0MAYUw7oChzM4zpKnUUTvQpElYEDxhjXqW+IyDz32HiyiHQQkXCgO/CCMeaEMWY78H9Ab/dT7gL+\nzxizzf2O4AWgh/t5dwCTjTFz3O8OBgEuclYB+3eyJ0ssb7tjSRKRF099O7cfRkSqATcATxpjUtzv\nCj4AeribpAF1RKSmMSbNGDMvy/fLAI1EJMwYs8EYs+esCyiVB030KhAdBCqfGtoAMMa0c4+NH8T+\nv60MFAO2Z3neDmyPGKB6Do9FANXcjyVkOXcyufeUD2NfBKpnaT/AHctPQHg+fp7a7lgT3S8Qh4HP\ngSruxwdgXygWichqEbnXfZ1Z2HchnwB7RWSYiJTJx/WUOoMmehWI5gMngVvP0eYAkA7UyfK98zmd\nwHfn8FgGtmeeCESfekBESmKHb87ifjewEOiSw8PC6Z78CaBklsfOy/L5TuzPU8kYU8F9lDPGXOK+\nxl5jTF9jTE2gH/CpiNR1P/aRMaYl0BhoCDybU5xKnYsmehVwjDFHsDdjPxWRLiJSRkTCRKQ5UMrd\nJhMYB7wuIqVFpDbwJDDafZofgCfdN0VLA28AY9zDQeOBm0TkVAXPfzj338IA4D4ReU5EqgKISC3s\nC8mpsfllwBUiEu2+mfxClp8nEfgdeC/Lz1JPRK5wn6ur+3wAR9zndLlLOluLSDEgGUgFMgvxK1VF\nnCZ6FZCMMe8AT2GT7B738bn76/nuZo9he9JbsKWP3wFfuR8bCXwL/Ol+PNndHmPMGuBR4Htsz/8Q\nttedWyxzgX8BVwAb3EMv07Allx+528wAxgIrgcXAZM68QXs3UBxY677ej5zu9bcEFojIcewN6P7G\nmG1AWeALd/tt2Hcx7+Txq1PqLOKNjUfcN7iWAAnGmJtzeHwo9mZUMnCPMWaZxxdVSimVL97q0T+O\n7amc9aohIp2A+saYBkBf4DMvXVMppVQ+eJzo3WOLnYDh5Fxi1hkYBWCMWQiUd5ebKaWU8gNv9Ojf\nx1YC5FaHXJMzxz8TyGVyilJKKe/zKNGLyE3APveYe64TRnJ4THckV0opP4nw8PntgM7ucfhIoKyI\nfGOMuTtLm11kqVnG9uZ3ZT+RiGjyV0qpAjLGnKuTDXjYozfGDDTGRBtjLsBO556ZLckDTMKWliEi\nbYAjxpi9uZwvoI/Bgwc7HoPGqXH6Kk6Xy3D55YaFCwM7zmD5ffrjyC9Pe/Rn5WoAEennTtzDjDFT\nRaSTiGzC1jzfe64TKKWcIQJxcRCms2tCjtcSvbHLtc52fz4s22P/9tZ1lFK+o0k+NOk/awHExsY6\nHUK+aJy5OHYMPvywwE/T36d3aZz+55WZsd4gIiZQYlEh6ttv4ccfYdIkpyNRqlBW7l3JssRl9Gne\nBwARwfj6ZqxSQWXMGOjRI+92RURyMrz8MmRkOB2Jyosxhi/iv+Cqb64iIqzgI+7evhmrVGA6eBDm\nzLHJXgHw6KOQmQnh+VlRXznm2Mlj9J3cl3UH1vHXvX9xUeWLCnwO7dGrkJCRAU89BbVqQfXqULUq\nVKoEzZrBL7+AmfATXHstlNF9OwC++goWLYLPPrPVNiowrdq7isuGXUb5yPIsuH9BoZI8aI9ehYCD\nB6F7d4iIsOWBJUva6pHwcJvMnnkGauwbQ6WBD1Hb6WADwMqVMGAAzJ4NpUo5HY06lzIlyvD6v16n\n+8XdPTqP3oxVQW3NGrjlFrj1VnjrrZyHIdLTYfzAeAZ83Zibu0Xx3ntQooT/Yw0Ex49Dy5YwaBD0\n6uV0NMpT+b0Zq4leBa3ff7fJ6t134e7s87FzcPgw3H8/JCXBhAlQurTvYww0SUkwbhzcd5/TkShv\n0ESvQlpSEjRsCN99B1demf/nZWRAv36wdi1MmQIVK/ouRqXyyxjDT+t/4raLbkMKcNNEyytVSHv3\nXZvgC5LkwY7jDx8OHTrAFVfA7t2+iU+p/DqYfJDOYzrz1ty3OHryqE+uoYleBZ3du+Gjj+D11wv3\nfBF45x3o3dsm/J257harlG/N3TGXS4ddyoWVLuSve/+ifGR5n1xHq25U0Bk82I6116mTj8Y7dsD5\n5+f40HPP2R7+ddfZEvtQHMYxBk6ehMhIpyNRWbmMi7fnvs0HCz5geOfh3NTwJp9eTxO9CiqrVtkV\nDDZsyEfjrVuhdWtITMx1VtDTT9uHO3eG6dMhKsq78Trtgw9gxQr4+munI1FZZbgy2Hl0J4sfXEx0\nuei8n+AhvRmrgsoNN9ijf/98NH7zTdi+3c4KOgeXy1btHD8O48fbXn4omD/flp0uXJjPdz8q6OjN\nWBVyfv8dNm2Chx7K5xPyubZNWBiMHAkpKfDII3a4I9gdOGB/9C+/1CSvNNGrIDJoEPz3v1C8eD4a\nr18P+/fbu635ULy47c3Hxxf+Jm+gOPUOpVs3OySlnJV4PJFDKYccjcHTzcEjRWShiCwXkbUi8t8c\n2sSKyFERWeY+XvLkmqpoWr/eVsfcdls+nzB2LHTtWqAVu8qUsevifPmlfXqwmjzZLr3/xhtOR6Km\nb55Oiy9aMH3zdEfj8Gg00hiTKiJXGmOSRSQCmCMiHYwxc7I1nW2M0b6FKrQffrBDEfnO21WqwM03\nF/g61avbm71XXw21a0ObNgU+heM6d7bxFyvmdCRFV4YrgyFxQ/hq+VeMvn00/7rgX47G4/FtJ2NM\nsvvT4kA4kNN7FF0fTxWaMfD99zbZ59sjjxT6es2a2SqV22+HefOCb4xbRBcrc1LCsQR6ju9JZEQk\nS/supVrpak6H5PkYvYiEichyYC8wyxizNlsTA7QTkRUiMlVEGnt6TVW0LFliP7Zo4b9r3nijrbO/\n6SY46pvJiipEfRn/JdfXv55fe/0aEEkevNOjdwHNRaQc8JuIxBpj4rI0WQpEu4d3bgAmAg1zOteQ\nIUP++Tw2Njak9mxUhff999Czp//XTe/fH/7+2y6B/MsvoVN2qXzrlStf8dm54+LiiIuLK/DzvFpH\nLyKDgBRjzLvnaLMVaGGMOZTt+1pHr86SmWk3E5k1Cy4q3J4LHsnIsL37hg3tsguB6M8/7UYrTvx+\nlLP8UkcvIpVFpLz78yjgGmBZtjbVxL0cm4jEYF9cnK01UkEjLg5q1HAuiUVE2GV9Z86Ejz92JoZz\n2bXLvuPYs8fpSIqmo6nBMa7n6Rh9dWCme4x+ITDZGPOHiPQTkX7uNncAq9xtPgB0d2aVb6eGbfLF\n5bLbBR4+7NUYypWzQzevvw7Tpnn11B5JT7eVSI89BjrK6V8nM07yxK9PcMuYW5wOJV90CQQVsFJT\nbW9+5Uo7fJOnOXPg4Yftgjg+MHeureOfORMuvtgnlyiQ556zv5spU+zsXuUfmw9tpsf4HtQqW4uR\nnUdSIaqCY7HoEggq6E2bZksd85XkwS550N2zvTXPpX17eP99W4nj9FDJ5Mm23PTbbzXJ+9OPa36k\n7Yi29G7amwndJjia5AtC6whUwCrQsE1GBvz4o+3V+9Bdd8HGjXaf2rg451a7PHLEvq5VruzM9Yui\nlXtX8sIfLzD1rqm0rNHS6XAKRIduVEBKTobzzoNt2/K5Tvwff9ixjFNF9z5kjN2rNi3NLpWgPeqi\n42TGSUpEBM7O8jp0o4La3LnQtGkBNgOZNStfK1V6gwiMGGHXsX9JV24qUgIpyReEDt2ogDRjhl2v\nJd9efdUW3ftJZCRMnGjXwmnQAO6912+XVn7gMi7CJHT6waHzk6iQUuBEL+L3qauVK9uyy+efh9mz\nfXstHdX0n7X719Lyi5ZsPLjR6VC8RhO9CjgHDtgNRlq3djqSvF10EXz3nS322bzZN9dISYHLL7fL\nMSjfMcbw1bKv6Ph1R/4d82/qV6zvdEheo0M3KuDMmmUTW7Ass3v11XbD8ptvttv3lSvn3fM/8YQt\nMW3QwLvnVaclpSXxyJRHiE+MJ65PHE2qNnE6JK/SHr0KOAUetgkADz8MV11le/YZGd477+jRtozz\nyy/9v6hbUWGM4dpvryUiLIJFDywKuSQPWl6pAlC9evDzz/mcfTpmjM2wVar4PK68nFoA7cILYehQ\nz8+3di107GgrR5s29fx8KncJxxKoVTa/M/MCh5ZXqqC0ZQucOAFN8tOpOnEC+vULmK5uRIStq//t\nN7txiSeMgT594K23NMn7QzAm+YLQMXoVUP74ww7b5Ct3//ILtG0bUNNDy5eHCRPsImPNm9ujMETs\nZuXR0V4NTxVR2qNXAaVA4/M+XtumsJo0sUsad+ni2UKa558fMG9WQoIxho8Xfcwniz5xOhS/0zF6\nFTBcLruBxrJl+ejJHj1qG+3YYbvRAeipp2DDBrsAmS6T4KzDKYe5f9L9bD+6nbF3jA2Z0kkdo1dB\nZ8UKqFQpn8MVEyfClVcGbJIHO75+/Di89prTkRRtCxMWctkXl1GrbC3m3TcvZJJ8QegYvQoYBRq2\n6dgRLrvMp/F4qlgxuztVy5Z2ieOrrsq9rTF2dq1uIOJdY1aPof+0/nx+0+fc3uh2p8PxqoKMgHi6\nlWCkiCwUkeUislZE/ptLu6EislFEVojIpZ5cU4WuAiX6OnXgkkt8GY5XnHcejBwJ991nlxbOzaef\n2qGe9HT/xVYUtK3VlkUPLgq5JH/06DyWLo3Jd3uPx+hFpKQxJllEIoA5wDPGmDlZHu8E/NsY00lE\nWgMfGmPa5HAeHaMvwk6etMUzO3ZAheDYy6FAHn3UDuN8883Zjy1ebOvv582D+kVvVEEVwMmTu9my\n5TkOH55F3bpvUr16b/+M0Rtjkt2fFgfCgewbf3cGRrnbLgTKi0g1T6+rQsuiRXbdmFBM8gBvv22X\nRxg//szvHz4M3brBZ59pkle5c7lOsn37myxe3JQSJaKJiVnPeef1yvfzPU70IhLm3vh7LzDLGLM2\nW5OawM4sXycAoT07QRXYvHl2HDtUlSple/OPPnp6G8JTk6JuucWWYqrC23diH6/OfrVA49bBxOU6\nSXLyelq0WEjdum8QEVG6QM/3+GasMcYFNBeRcsBvIhJrjInL1iz7W4sc/zWGDBnyz+exsbHE6p2p\nImPePLtNX54OHbLd/iAsMG/b1o7V9+1rl3jYvx/KlrW9fVV4cdvi6DWhF32a9cFlXIRLuNMheV1E\nRFkaNfqauLg44uK+LfDzvVpHLyKDgBRjzLtZvvc5EGeMGeP+ej3Q0RizN9tzdYy+iDLmdP18nhuB\nX345DBoE117rl9i8LS0NYmLgySdtb14VXqYrk9f+fI3P4z9n1K2juLZecP6f8IRf6uhFpLKIlHd/\nHgVcAyzL1mwScLe7TRvgSPYkr4q2TZvsJtt5JvmdO+1KX0H8Tq94cfjiC3jhBTh2zOlogtehlENc\nO/paZm+fzdK+S0MiyRuTSWLiCJYvvxo7UOI9ng7dVAdGiUgY9kXjW2PMHyLSD8AYM8wYM1VEOonI\nJuAEoJuuqTPke3z+xx/htttstgxiMTFw3XV298N33nE6muBUunhpujXuxgOXPUB4WPAP1Rw9OpeN\nG/sTFhZJgwZDES9vY6hLICjH9etnlyR+7LE8GsbEwOuvwzXX+CUuX9qzx/7Mc+faZY1V0XTy5C42\nb36OI0fiqFfvbapWvRMpwP0nXQJBBY25c6Fduzwabd4M27fbZQ+C1MyZdn9ZsBOpnn/ejtWrouvo\n0XlERtYmJmY91ar1LFCSLwhN9MpRR47Y/J3nmuv798Ozz/p9A3BvSUyEXr3OnPnbv799/Zoyxbm4\ngsFvm37jUEr26TmhoWrVrtSt+3qByyULShO9ctSCBXYtmDz3h23TBp55xi8xeVtGBvTsacsqsyb6\n4sXhgw9srz4tzbn4AlV6ZjrP/v4sD0x+gJ1Hd+b9BJUrTfTKUfPm5WPYJsi98gqEh9uq0OxuuAEa\nNvTO1oOhZNuRbVz+1eWsO7COZf2W0ey8Zk6HVGjp6UfYtOlJEhI+dCwGTfTKUaGe6GfOhK++gu++\ns8k+J2+/batvkpL8G1ugmrh+IjFfxtC1cVcm3TmJyiUDZwexgjAmk927h7N4cSMyM09QtWpPx2LR\nqhvlmIwMqFgRtm6169CHoqQk+/PltdBmt262qChIR6e86s05bxJbJ5Y2tc5a+zBoHD06z10uWYIG\nDYZSpkwLn1wnv1U3muiVY5YvhzvvhHXrnI7EeStX2tr6zZuhZEmno1GeWrfubipWvL7A5ZIFpeWV\nKuDla9jm/fdh6lS/xOOkpk3t/eYvv3Q6EuUNjRp949NyyYLSRK8ck2eiNwY++giqV/dbTE4aNMiO\n16emOh2Jf6RmpPL3wb+dDqNI0ESvHJPn0geLF9u6y+bN/RaTp3bvhuTkvNvl5LLL7DFypHdjCkQb\nDmyg9fDWfLb4M6dDKbQTJ9axatWtpKYmOB1KnjTRK0ckJsLRo7a0MFdjxkD37kGzJPHJk9C5s90n\ntrAGDYI33wztuvrRK0fT4asOPNLyEd677j2nwymwU+WSy5dfQYUKV1K8eODvoxSc0wxV0Js/345J\nh+XW1XC5bMb8/Xe/xuWJp5+G2rU9W344JgYaN4ZRo+DBB70XWyBITk/msamPMWfnHGb0nhF0tfF2\ndcmv2LZtEJUq3UyrVmspXryK02HliyZ65YgFC2yiz9Xy5bb2snFjv8XkibFj4ddfIT7e8zcgL70E\n99wD999/jhfCIPTX9r9Ic6UR3zee0sV9O+XfF1JStrJv33dccskUypS5zOlwCkTLK5UjYmNh4MA8\n9g9JTg6KWsO//7b3Gn77zY6xe8oYaNUK/vMf6NTJ8/Op0KV19CpgZWZC+fKwY0dobAY+eDDUqGGX\nW/aWr7+2I1dFoLJUeUATvQpYK1dC166wYYPTkXjHqf+23rxnnJJix/vnzYP69b13Xn85nHKYClHB\n9ypujOHgwUkcORJH/frvOx1Onvy1lWC0iMwSkTUislpE+ufQJlZEjorIMvfxkifXVMFv0SJo3drp\nKLxHxPuFQVFRdoz+k0+8e15fM8YwbMkwLv7sYo6mHnU6nAI5cWIdK1dex5YtL1CxYmiNmXl6MzYd\neNIYs1xESgPxIjLdGJN9UvtsY0xnD6+lQsTChaGV6H3loYfsmP+rr0LpILh3eezkMfpO7sv6A+uZ\n1WcW5SLLOR1SvqSnH2H79lfYu3c055//IjVrPkpYWF7rZgcXj3r0xpg9xpjl7s+TgHVAjRyaBkch\ntPKLhQttGWGOVq2CFSv8Gk+gql0brrjCrnwZ6OJ3x3PZsMuoEFmB+ffPp2Glc02QCCy7dn1MZuYJ\nWrVaS3T0EyGX5MGLY/QiUgeYDTRxJ/1T3+8ITAASgF3AM8aYtTk8X8foi4CkJKhWDQ4fzmWP77vv\ntiUneW4g6wxj7M3X+++3idjX/vgDnnjC3tcI1HljKekpNB/WnFevfJVuTbo5HU6BGWMCZk2agsrv\nGL1X6ujdwzb/Ax7PmuTdlgLRxphkEbkBmAjk+HI/ZMiQfz6PjY0lNjbWG+GpABIfbxfwyjHJp6bC\n5Ml2wZcANXw4/PTT6b1ffe1f/7JVSrNn25LUQBRVLIpVD6+ieHhO/6iBL5iSfFxcHHFxcQV+nsc9\nehEpBvwCTDPGfJCP9luBFsaYQ9m+rz36IuCddyAhAT7MabOdn36yi5jNnOn3uPJj+XJb9//XX3Dh\nhf677qef2l/J//7nv2uGmszMVBIS3qNMmZZUrHiuyRvBxV9VNwKMANbmluRFpJq7HSISg31xCc2d\nflWeznkjdswY6NHDr/Hk19GjtiR06FD/JnmA3r3tEE5ion+vmxNjDMHUITPGcODAzyxe3ITjxxcT\nFRWEtape4FGPXkQ6AH8CK4FTJxoInA9gjBkmIo8CDwMZQDLwlDFmQQ7n0h59ERAdDXFxUK9etgeS\nkqBmTbvzRuXA2jrOGJvkq1a1vWsnPPCAXQBuwABnrg9wMPkgfSb2oXuT7vRu1tu5QPLpxIm1bNr0\nBCdPJlC//odUrHiN0yF5nU6YUgFn9247Pr9/fw43FpOSYPp0uO02R2I7F2PssMnNN0NkpDMxzJ1r\nk/3atc7clJ2zYw49x/eke5PuvHHVGxQLD+zKFGMyiY9vzXnn9aZGjUdCspIGNNGrADRxInzxhU7r\nLwxj4KKL7NIIbdv677ou4+KtOW/x4cIPGdF5BDc2vNF/F/eQMS5EQmhVuBz4tepGqfw4Z/28OicR\nuPdeuymJPxP9c9OfY8GuBSzpu4RaZWv578JeEOpJviC0R6/85qqr4Jln4IYbnI4kOO3eDRdfDDt3\nQqlS/rnm/hP7qRBVgYiwwOwTpqYmkJDwf9St+yZhYSWcDsfvdHNwFVAyM2HJkuDp0R8NwGVaatSw\ne+yOH++/a1YpVSUgk3xmZirbt7/OkiXNCQsrhTEup0MKaJrolV+sXw9VqkClStkeOHnSvgoEkL/+\nghYtID3d6UjOdu+98NVXTkfhHGMM+/dPdJdLxtOixSLq1n2N8PAop0MLaJrolV/kumLlqFHeXcjd\nQ/v2Qc+edt5WsQAs1Lj5ZlizxlahetP0zdPpO7mvd0/qA0ePzmHr1hdp2HAYF188gaiouk6HFBQ0\n0Su/yHWi1JgxcGNgVHJkZsJdd9nldgL1PkLx4vaF6OuvvXO+DFcGL818iXt+voceFwfmZLWsypXr\nQMuWK6hY8WqnQwkqejNW+UXz5ra08owx+sREuydsYqJzBepZ/Oc/dqmBGTMgIvCGpf+xYoXt2W/d\nCuHhhT9PwrEEeo7vSWREJN/e9i3VSlfzXpDKL/RmrAoYJ07Axo3QrFm2B5yehZTFvn12FOn77wM7\nyYP9PVapArNmFf4cq/etpuUXLbmh/g382uvXgEvyR47MITFxpNNhhAxN9MrnliyxM2JLZK9+Gzs2\nYNa2qVrVzjqtkdNuCgGod2/49tvCP79hpYZMvnMyL1z+AmEBVG9+8uQu1q69i3Xr7iQ8vIzT4YSM\nwPkXViFrwQJo0ybbN9PSbAnO1YEz1nrWC1EAu/NOmDTJvlsqjOLhxWlVs5V3g/LAqXLJxYubERl5\nATEx66latavTYYUMTfTK53K8EVu8OPz8cy4L06u8VKtmZ8hOnOh0JN6xaVP/bOWSfpoRVkRoolc+\nZQzMn59Dj155LD/DNyczTjJ41mAOpQT2yuD16w/Vckkf0kSvfGrnTpvs/bHtXkHs3GlvvAazW26x\n75ZyW6d+86HNtB/ZnpX7VgbUOHxOwsOdvyEfygL7X18FvQUL7LBNIO3WlpYG3brZna6CWcmScOut\n8MMPZz82bs042oxoQ59mfZjQbQLlI8v7P8BsjMlk9+4vSEnx8mwvlSdPd5iKFpFZIrJGRFaLSP9c\n2g0VkY0iskJELvXkmiq4LFwYeMM2zz9v9zZ55hmnI/Fc9uEbYwyPTHmEgX8MZNpd03is9WMBsSfq\nkSNziI9vxd693+JyBeDaEiHO0x59OvCkMaYJ0AZ4VEQaZW0gIp2A+saYBkBf4DMPr6mCyFkVN+vX\nw6BBjsXz008wYYKtmQ8LgfezsbFw4ACsXm2/FhHaRbcjvm88LWu0dDQ2sKtLrl3bk3XrehIdPYDm\nzf+kVKmLnA6ryPHov7oxZo8xZrn78yRgHZC9ErkzMMrdZiFQXkQCa3aG8om0NLuhdsus+eaHHwpf\nE+ihzZuhb19bvl+xoiMheF1YmF22IWuvvlfTXpSLLOdcUG6ZmSdYurQNUVH1iIlZR7VqPQLi3UVR\n5LU+jYjUAS4FFmZ7qCawM8vXCUBw7WCgCmXlSrs3bJlT816MsVm2e3dH4jl5Et5//xybkwep3r3h\nu+8CbhFQwsNLEROzjgsueFXLJR3mlcneIlIa+B/wuLtnf1aTbF/rojZFwFnDNitW2Gzr0KL0jRvb\nI1Ss3b+W5PRkWjZpSdWqdtP1q65yOqozRUTo7NZA4HGiF5FiwHhgtDEmp+kbu4DoLF/Xcn/vLEOG\nDPnn89jYWGJjYz0NTzlowQK48sos3xgzxvbm9e27R4wxfL38awbMGMAnnT6hZY2W3H23Hb5xItGn\npx9m376x1Kz5kP8vXsTExcURFxdX4Od5tHql2AG3UcBBY8yTubTpBPzbGNNJRNoAHxhjzqrD0NUr\nQ0+DBnbmZpMm2GGbhg3hxx/tUpaqUJLSknh4ysMsTVzKuDvG0aRqEwD27rWbhyck+G+bQWMySUwc\nwdatL1O58q00aDCUsDCd6exP/tocvD3QC1gpIsvc3xsInA9gjBlmjJkqIp1EZBNwArjXw2uqIHDg\ngF0R8qJTBRYitovvx7ugmZmeLeMbaFbsWUG3/3Xj8vMvZ/GDiylZrOQ/j1WrBu3b26qiXr18H8uR\nI3PYtKlYlGAVAAAgAElEQVQ/4eGlaNp0GmXKaNV0INP16JVPTJlib3zOmOFcDPfdBx062I+hYPKG\nyRw7eYy7mt6V4+PjxsHw4fD7776NY//+CWza9Dh1675D1ardtZLGQfnt0WuiVz7x8svgcsFrrzlz\n/a++gnfesVsYli7tTAz+lpICNWvCqlX2o69kZqYCmVpJEwB04xHlqPnznStjXLUKBgyw+5oUlSQP\nEBUFXbrYUktfCg+P1CQfZDTRK6/LyLBLH7Rr5/9rHz8OXbvCe+8FbymlMYZlicvybpiDu++Gb76x\n9749deLEGo4c+dPzEynHaaJXXrdyJURH231FyMiAX3/127X/8x+4/HI7iSgYHU45TJdxXXhk6iNk\nugo+A6p9e0hOtjOSCys9/TAbNz7O8uWxpKZuL/yJVMDQRK+8bs4cexMUsBubvvyy36798sswdKjf\nLudVCxMWctkXlxFdNpq4PnGEhxW8ZCgszL7IffNNwa9vV5ccxqJFF2FMGq1areO884L0FVOdIcC3\nQVbB6K+/oHNn9xd+XvKgTBBOxHQZF+/Pf5+3573NsJuGcetFt3p0vt69bc/+7behWLH8P2/t2h6k\npe2ladPfKFNG5zqEEq26UV5ljN1ge/58qFMjDapXt+MI0dF5P7mISjyeyH2T7uOzGz+jTvk6Xjln\n+/YwcCDceGP+n3PyZCLFi5+n5ZJBRKtulCO2bLGTlGrXBqZPh0aNNMnnoXqZ6ky7a5rXkjxAnz62\nxLQgSpSorkk+RGmiV151anxeBLu2TY8ePr3e77/bm4/qTD16wB9/2NnJWRljOHDgZzIznVkqWjlD\nE73yqjNuxN50k6119JEFC+x0/+zJLJAdSjmEP4Yoy5a12wxmXac+KWk1K1ZczZYtL3Ly5G6fx6AC\nhyZ65VVnJPru3e0iLD5w8KA9/fDhUKeOTy7hdbO2zuKSzy5h7s65frneAw/Y309a2mE2buzPihX/\nonLl22jZcjklSzbwSwwqMGjVjfKa/fshMREuucS313G57MSgbt2yVPcEsExXJq/9+RrD4ofx9a1f\n0+H8Dnk/yQvatYOyZfcwb15zatS4jVat1lK8eGW/XFsFFk30ymvmzoW2bX2/YuTbb8ORI/DGG769\njjckHk/krgl2EbL4vvFUL1Pdb9cWga5dz2P8+Hl89FFdv11XBR4dulFec8awjY8YA7t32/L8gtSI\nO+XhKQ/TsXZHpvee7tckf8rdd8Po0XU5dszvl1YBROvolde0aQNvvQUdO4TYQvAeyHBlEBHm+zfO\nmZmpHDs2jwoV/nXWY3fcAddeazdGV6FF6+iVXyUn21UjWzU4Yu+OpqU5HVJA8HWSN8awf/8EFi9u\nTGLilzlW9Jy6KauKLo8TvYiMFJG9IrIql8djReSoiCxzHy95ek0VeBYtgqZNoeTvE6FlSyhe9LaU\nK8wiZJ44VS65devLXHjhlzRu/EOOE56uuQb27LGLzamiyRs9+q+A6/NoM9sYc6n7cGgrCuVLc+bY\nVSP/2QC8CEnPTOfZ35/lkSmP+O2ae/aMYsWKK/8pl6xQIfddwcPD4d57tVdflHmc6I0xfwGH82im\n86pD3F9/wb+aHrCL3Nx8s9fOu2uXHV8O1JGgbUe2ccXXV7DuwDreuMp/ZUAVKlxHq1brqFXr34Tl\nY3jogQfshiTHj/shOBVw/DFGb4B2IrJCRKaKSJBuB6Fyk55uZ6l22DsebrgBSnln96GMDDuVv2PH\nwBwJmrh+IjFfxtClURcm3TmJSiUr+e3aJUqcV6Ca+OhouOoq+Ppr38WkApc/Ev1SINoY0wz4CJjo\nh2sqP1q0COrVg9LHdts1CbzkpZfsa8YLL3jtlF4zcf1Envj1CSbdOYln2j1DmPjmTyk1dScpKVu8\ncq7+/eGjj+yEM1W0+LzuyxhzPMvn00TkUxGpaIw5lL3tkCFD/vk8NjaW2NhYX4envGDGDLj6auCV\nV7x2zl9+sUMNS5fazTQCTacGnehYuyMVoir45PyZmSns3PkuCQkfUL/+h0RFeT7hqX17u17/r79C\np05eCFL5XVxcHHFxcQV+nlfq6EWkDjDZGHPW5HcRqQbsM8YYEYkBxhlj6uTQTuvog9Tll8OgQXYs\n3Rv274eLL4affnJm31kn2dUlf2Lz5qcpXboF9eq9S1RUHa+d/5tv7Avob7957ZTKQfmto/c40YvI\nD0BHoDKwFxgMFAMwxgwTkUeBh4EMIBl4yhizIIfzaKIPQseP241G9u2DqCjvnNMYWLPGJvuixBjD\n6tW3kpq6hfr1P8xx8pOnTp60ewXMmmW3ClDBzW+J3ls00QenX36B99+3a5+Hog0HNvDM9Gf47vbv\nKFuirM+vd/x4PKVKNctXJU1hDR5sX5g/+8xnl1B+ojNjlV/8Mz4fgkavHE2HrzpwY4MbKVPcP5vR\nlinTwqdJHuDhh+10h8N5FUWrkKGJXnlkxgy4Z8MLcOCA06F4zYm0E9z38328+uerzOg9g4daPuT1\nLfaOH1/qlw1IcnLeeXZPmBEjHLm8coAmelVoiYlQYucmzvv1K6hQ+OqT1FT4+28vBuaB5PRkWg9v\nTbornfi+8TQ7r5lXz5+aupM1a3qwevWtpKU5t8vT44/bUstAnYimvEsTvSq0GTPg6eixyB13eLRa\n5RNPwOuvezEwD5QsVpKRt4zkm1u/oXTx0l47b2ZmCtu2vcqSJc0pWbIhMTHrKFGiptfOX1AtW8KF\nF9oqHBX6dOMRVWgzZsB7R8ZCj08LfY7vvoOZM2HJEi8G5qGYmjFePV9y8t+sXHkdpUu3oEWLeK+W\nS3pi8GDo3Rv69AmOtf1V4WnVjSoUY+DKamuZHn4dxXZtL9SspnXr4Ior7AtGM++OkAQUlyuNY8cW\nUL78FU6Hcparr4aePeG++5yORBWGVt0on1q/Hm5NG0fEnd0KleRPnICuXeHNN51J8sYYhi0ZxoKE\ns6Z0eF1YWPGATPJge/WvvWbXK1KhSxO9KpTp02HjLc8gAwu3EM2SJXbbQSd6ksdOHqPH+B58tuQz\nKkZV9Np5jckkOXmj187nD5dfDhdcAKNHOx2J8iVN9KpQZsyAKzqVhsr5X0Exq44d4fPP7QbW/hS/\nO57Lhl1GpahKLHhgAQ0rNfTKeY8c+ZMlS1qwbdvLXjmfPw0ebG+GZ2Q4HYnyFR2jVwWWng5VqsDG\njfZjsBi+dDgD/xjIx50+pluTbl45Z2rqTjZvfpZjx+ZTr947VKnS1es19/5w5ZVwzz32xqwKHjpG\nr3xmzhyoXz+4kjxA3Qp1mX//fK8l+cTEEe5yyQuJiVlH1ardgjLJg+3Vv/qq9upDlfboVYE9/rhN\n8i8V8d1/jx9fRkREhYApl/TUtdfazcEee8zpSFR+6aJmyieMgRtrLOPdyRfSuGXJfD/vyy/t1Hsv\n7jKovGztWnvvZO3a4Hu3VlTp0I3yieXxmYzcfxONSu3I93OWLIGBA+Gii3wYWBYHkw8ycb33NjJL\nTz9ERkbob7bauLGtqR80yOlIlLdpolcFsuyjObgqVkEa5S9rHz4M3brZJXEbNPBxcMCcHXO4dNil\nLNq1yONzGZPJrl2fs2hRIw4fnu6F6ALfkCEwcSIsW+Z0JMqbdAkEVSClpowl7Y4e+WprDNx7rx2u\nueMO38blMi7emvMWHy78kBGdR3Bjwxs9Ot+RI3+ycWN/IiLK0azZ75QuHcJTd7OoUAH+8x+7v+yf\nf/q//FX5hkdj9CIyErgRu1XgWdsIutsMBW7A7i51jzEmx76CjtEHvi1/Z1D2ohpU2LCA8AZ572H6\n/vt23fO//oLixX0X174T++j9U2+S05P5ocsP1Cpbq9DncrkyWLeuV9CXS3oiMxNatYJnn4U773Q6\nGnUu/hqj/wq4/hxBdALqG2MaAH0B3dMmiC17bybHKl+QryQPdh2VsWN9m+TBLi3crlY7ZvWZ5VGS\nBwgLi6BKlS5BXy7pifBwGDoUBgyApCSno1He4I09Y+uQ+8bgnwOzjDFj3V+vBzoaY/bm0FZ79AHu\nwcvi6dt5D62GeDYsooJDnz5Qpgx8/LHTkajcBErVTU1gZ5avEwDPulzKEfv3w7jNLbjk+dBJ8mlp\nZ/U3VBYffgiTJsGvvzodifKUP27GZn+1ybXbPmTIkH8+j42NJTY21jcRqQKbPNlOqImMdDaOJbuX\n0KJ6C4+GVNLTD7F168scODCBmJgNRET4Zz/YYFO+PHz9tV2zfuVKqFTJ6YhUXFwccXFxBX6eP4Zu\n4owxY9xf69BNkOrcGbp3h7vuyr3Nvn1Qtapvrp/hymDwrMGMWjGKeffP4/xy5xf4HMZksnv3F2zb\nNoQqVbpwwQWvUqyYZq+8PPUU7NgBP/6oVTiBJlCGbiYBd7sDagMcySnJq8CWlARxcdCpU+5t9uyB\nSy+FNWu8f/2EYwlcOepKliQuYWm/pYVK8klJq1mypAX79o2hWbPfadjwU03y+fTGG3b/AV3KOHh5\nNHQjIj8AHYHKIrITGAwUAzDGDDPGTBWRTiKyCTgB3OtpwMr/pk4xtGkjue7/nZlpZ1Q+8AA0aeLd\na0/5ewr3T7qfJ9o8wYD2AwiTwvVNihWrRO3aA4tkuaSnIiNtkr/mGrt+fZ06TkekCkrXulF5mlmz\nN66evbj6netyfHzQIJg3D37/3aM9ws/iMi66/687j7d+nA7nd/DeiVWh/N//wfff24lUpUo5HY0C\nXdRMecmejccp2bAW4Tu2Uir67N2YfvvN7hK1dClUq+ZAgNkYY8jMPEZERDmnQwk5xtg165OS7Hh9\nIXaQVF4WKGP0Ksgtfnky22p1yDHJG2P3fP3++8BI8klJq1ix4io2bXra6VBCkgh88QXs3QsvB99G\nWkWarnWjcmUMlPplLCUez3ltGxG7paA3hmtOZpwkNSOVcpEF74mfKpfcv38cdeoMpnr1fp4HpHJU\nogT89BO0bm1XI+3Vy+mIVH5oj17laukfh2mVHEfDZ2/JtY03kvzmQ5tpP7I9w+KHFfi5e/aMYtGi\nRoAhJmYdNWs+SliY9l98qUoVO6/iqafsvRkV+DTRq1zN/ngVW5rdhpQr67NrjFszjrYj2nJP83t4\ntt2zBX5+eHgZd7nkJ1ou6UdNmsA338Btt8HixU5Ho/KiN2NVjlJToWZNuy75+QUvW8/7/BmpPPnr\nk0zfMp2xd4ylRY0W3r+I8rnJk21Z7eTJEBPjdDRFj96MVR75+We47LIzk/zJk/Daa5CW5vn5hy4c\nyuHUwyzttzRfST4zMwVjXJ5fWHnVzTfDiBFw002wcKHT0ajcaI9e5eiGG+yNtqxLHjz2GCQkwIQJ\nnk+Fz3RlEiZheU5eMsawf/94Nm9+hosu+ooKFa707MLKJ6ZOtaWXP/8Mbds6HU3RoXX0qtB27YJL\nLrFJvaR7/+9x4+CFFyA+3i525Q9JSavYtKk/6ekHqV9/KBUqxPrnwqpQfv3VLoD2+efQpYvT0RQN\n+U30Wp6gzvL113BHF0PJKABh40b497/tH3JhknyGK4OIAlTCZGaeYPPm59zlkkOoXr2vVtIEgeuv\nt/9HbrvNrnk0aJAughYodIxenSE1Ff5+dxLPtZ8DIqSkQNeu8Mordsy+IIwxjFw2kjbD2+AqwPi6\nSAmKFz/PXS75iCb5INKiBSxaBNOm2dVOT5xwOiIFmuhVNt9+C8/zJvWq2T3kXC7o1w8eeqhg5zl+\n8ji9f+rNe/Pf45vbvinQYmRhYRHUqfOSlksGqfPOg1mzICoKOnSwK18qZ2miV/9wueD7/26nvutv\nu+ErdvGqhx8u2FvwFXtW0PLLlpQIL8GiBxfRuErjc1zTCyU8KuBERtohwL59bbL/6CP7/0s5QxO9\n+sekSXBb+jgiut0OxYoV6hw7j+7kmm+vYdAVgxhxywhKFiuZY7vMzBS2bXuFJUua4XJleBK2ClAi\ntpMwf75dD+naa2Hnzryfp7xPE70C7Lo2b70FvYuNQe7MeW2b/IguF83aR9fSq2nOi6AYY9i3738s\nWtSIEyfW0LTprzoGH+IaNIC//oIrr7T3eT7+GDL0td2vtLxSATBnDgzuuZHpJy8nfesuSpT04sLy\nbidOrGXjxkdJTz9E/fofarlkEbR6NTz+uF0B84MP/hkhVIXktzp6Ebke+AAIB4YbY97K9ngs8DOw\nxf2t8caY13I4jyZ6B91yC3S6Jp2wQweYsaY6Y8d6/xpHj84nKWmZlksWccbYiVVPP23na7z1Flx4\nodNRBSe/LIEgIuHAx8D1QGPgThFplEPT2caYS93HWUleOWvdOliwAJq1LMbAj6rzyit5P+dwymG6\n/diN+N3x+b5OuXJttVxSIQK33mpr7du2tdsT9uhhe/vKNzwdo48BNhljthlj0oExQE5r2uq0iQD2\n5ptw//12VuOHH9p1xs9lQcICLvviMmqUqcHFVS/OsY0xmT6IVIWSyEh47jnYvNmO3V99Ndx+u66G\n6QueJvqaQNb76Anu72VlgHYiskJEpopI7rV2yu+WLrXbAa5bZ//QevbMva3LuHh33rt0/qEz71/3\nPh9c/wElIkqc0SY1dTtr1nRj69ZBPo5chYoyZWDAANiyBa64wk7Qi4mBUaPsBD7lOU/fQ+dnUH0p\nEG2MSRaRG4CJQMOcGg4ZMuSfz2NjY4mNjfUwPHUuxtjNI7p1g7lz4Ycfzt2+z8Q+bDq0icUPLqZ2\n+dpnPJaZmczOne+QkDCUWrX6Ex1d8LXlVdFWsiQ88YRdPG/qVPjkE3j2WejTx77bbNrU6QidFxcX\nR1xcXIGf59HNWBFpAwwxxlzv/voFwJX9hmy252wFWhhjDmX7vt6M9bMJE2DIEIifupeU9AjKXnDu\nmagr966kUeVGFAs/s8Z+//7xbNr0NGXLxlCv3jtERtbO5QxKFcymTXYZ5O+/h3Ll7Iqqd94J0dFO\nRxYY/FJ1IyIRwAbgKmA3sAi40xizLkubasA+Y4wRkRhgnDGmTg7n0kTvRydPQuPGMGwYXP37AIiI\ngDfeKNS5tm9/g7Jl22m5pPIZl8uWAI8eDePHQ/369oburbfae0pFdfE0f5ZX3sDp8soRxpj/ikg/\nAGPMMBF5FHgYyACSgaeMMQtyOI8mej96913480+Y9LOBOnXstNhmzZwOS6k8pafb/7sTJ9ojKsqu\nnHnttRAbC6VLOx2h/+h69CpX+/bZ3vy8edDw4HxbcrNmzT/doplbZ7L50GYebPHgGc8zxuS5UYhS\n/mSM3e7y99/tsWgRtGxpZ+Fefjm0aXN6T4VQpFsJqlw99BB06gQNGwJjxtj1ZEXIdGUyeNZg7ppw\n11k3Ww8fjmPJkks5cWKNM0ErlQMRW5r5/PMwc6adcfvcc5CSAi+9BFWq2Fr9p5+2m+ds325fHIoa\n7dEXMePH2yqb776DHl0z7V2tmTPZXbMsd024C0H47vbvqF6mOmDLJTdvfoZjxxZTr967VKnSRXv1\nKmgkJ9u9bOfPtx9P7WvbsiVceunpo06d4Bzn16EbdZYDB6BWLXsDa8wY4OhReP995t53DXf8eAcP\nt3yYFy9/kfCwcDIzk9mx42127fqIWrUeJzr6WcLDo5z+EZTyiDF2Bc0lS+yQz6njxAm4+OIzj0aN\noGrVwH4B0ESvzmCMXVfk8GH79jUiywyKbUe2sfXwVq684PTG22lpB9iyZQB16gwhMvJ8ByJWyn/2\n77e3qVavPn2sW2erfS66yK7F07ChrfY5dZQt63TUmuhVNgMGwPvvw4YNULeu09EoFRwOHLA7ZK1f\nb2v6N260Hzdtsjd5L7jgzOP886F2bXuUKuX7+DTRq39s3gzNm8N778GDD+bdXil1bsbYG79bt54+\ntm2z75Z37LBHVJQdKq1Vy94Kq1nTHjVqnD4qVfJsaEgTvQIgLQ06drSFNY88lsbolaO5t/m9iAgu\nVwaJicM4eHAql1zyi95kVcpLjLHvBhISzjx277bHrl32Y1ISVKsG1avbvXarVTt9VK16+qhSxb4o\nhGfbJiK/iV7Xiw1hxsB999n/NJ3v3sYVX/WgcsnKdG/SnbQTi9i06XGKFatM/fofapJXyotEbHKu\nUsVW9eQmNdW+M9izBxIT7ed799oh1j//tHNe9u+3H48cgfLl7TkrV7ZHvuMJlF609ui9b+BAmDUL\nHv/sJ/pP78fzHZ7n4ea3s2VuL46lraJ+q5FUrny7JnmlgkBmJhw8aI8DB+wLQJcu2qMv0j79FMZN\nOMmVbzzLC7MnM/nOybSu1ZrExK8ptfwYF5V6hfBOXZwOUymVT+Hhp4dyCkp79CFo/Hi7rvyPE9JY\nEDmEZ9s9S4WoCvbB5GR7F2jDBjumo5QKWnoztoiaORNuuglatIDZsyEs+yIX//ufXbJy+nRH4lNK\neY+udVMEjRsHt90GNWoc5NNPH2Hv3hFnNxozxm7QqZQqMjTRh4iXPthA/+f2cdNNHzN8eCMiI8Op\nXPm2MxtlZMCqVfbVQClVZOjQTZAzBm4ZNJpd5R7lqToVKRd1AbGxH1K69CW5P0GrbJQKCVpHXwTs\n2pdMh9cfY0/xOUzr0IbKZfrSuPHthIWd499dk7xSRY7HQzcicr2IrBeRjSLyXC5throfXyEi55g+\noPLrm2lruOCNVkSWSmfnoHhi2/7GxRd3OXeSV0oVSR4lehEJBz4GrgcaA3eKSKNsbToB9Y0xDYC+\nwGeeXLOoy8iAl1+GRz79kUcufYa1r4+ictkitHeaUqrAPB26iQE2GWO2AYjIGOAWYF2WNp2BUQDG\nmIUiUl5Eqhlj9np47SLnr79WsHLlIFauHMHGL4ZQvbrTESmlgoGnQzc1gZ1Zvk5wfy+vNrU8vG6R\nsnXrQT755BEOHbqWWrU6MWFCRapXh7lz83mC/fth+HCfxqiUClye9ujzWyaTfeA4x+eJDMnyVaz7\nKLrCwjLo3Plz7u4zhA0b7uSFF9Zx/HjFAp+nH+O5gj+568EHfBClUsp/4txHwXhUXikibYAhxpjr\n3V+/ALiMMW9lafM5EGeMGeP+ej3QMfvQjZZXnrZxI/zf/8H8+Ln0e+525qQ04vvecf88vnq13eU+\nLg6aNMnHCWNj4ckn4ZZbfBSxUsoJ/poZuwRoICJ1RKQ40B2YlK3NJOBud1BtgCM6Pn+29HSYPNnO\nZWrXDjKqLuFoz7tZHdWFET2m/dMuKQm6doV3381nkt+9G1auhOuu813wSqmA5tHQjTEmQ0T+DfwG\nhAMjjDHrRKSf+/FhxpipItJJRDYBJ4B7PY46RBhjNyn+9lu7MkGDBtC7t6HdUx/xzoLX+Pjaj+nW\npNsZ7R96yL4Q9OmTz4v8+CN07gyRkb75IZRSAU9nxvrZ8eMwYwZMnWqPkiUNTz75I61bL6dFizdY\nkLCAx6Y9xpguY6hXsd4Zzz10CPr1g1Gj7H6V+dK2LQweDNdf7/0fRinlKF29MkDs32+rY+bNsx9X\nrrS5t1MnuOaaFaSlPU5GxhEaNPiQ8uU7ApDpyiQ8LDyPM+fT3LkQEwPFinnnfEqpgKGJ3s/S0mDL\nFlizBlassAl9xQo4fNgm9nbtoH17aN0aihc/yNatg9i/fzx16gyhRo2+2LlnSimVf5rovcgYOHbM\n7uV4apPfnTvtsXkzbNpk93uMjrY3SJs2tUezZlC37tkb+m7e/Dwu1wlqRr9EyUjd/EMpVThBmegP\nHzaEh9vNMk4dIqc/Zudy2SRsjP08M/P0kZFhK1nS0k5/TE21R0qKPZKTbRXLqePYMdsDP3LEfjx0\n6PTmvCVK2C28atWyR3S0/VivHtSvD7Vr5390xBjDnB1zuOfne5h9z2xqldX5Y0qpggvK1Str1z6d\nsE8lcZfLHtkZc/oF4NQREWF7z6c+Fi9uk++pj5GREBVlP0ZGQunSZx6VKtmkXaGC3W29YkWb3KtU\n8V7Risu4eHPOmwxdOJSRt4w8Z5JfuNBuCPXOO965tlKqaAqoRH/0qNMReE9mZjI7drxJxYrXUa5c\newD2ndhHrwm9SM1IZUnfJedM8gcPQvfu8OGHhQxg1y6omX01CqVUUaQ7THmZMYZ9+8ayaNFFpKRs\npESJ8wHbk7/qm6uIqRnDzD4zz5nkXS64+264445CTmZdvdre/Q2QYTmllLMCqkcf7JKSVrBxY38y\nMo7SqNFoype/4p/HwiSM2ffMpmJU3mvVvPOOvUfw3/8WMpAxY+z0Wd1kRClFgN2MDZRYCsPlSiM+\nvhU1ajxMjRoPFrpcct48uP12WLzY3vAtMGOgYUP44Qdo2bJQMSilgkNQVt0ESiyFZYwLEc9Gw5KS\nYMMGaNGikCeIj7eD+xs3ao9eqRDnr0XNVBYiYWS4Mhj4x0A+WfRJoc5RurQHSR7ssE2PHprklVL/\n0ERfQCkp29i06SlcroyzHtt5dCexX8cSnxhP1yZdHYgOWw/as6cz11ZKBSRN9PmUmZnM1q0vEx/f\ngoiICkDmGY9P+XsKrb5sxY0NbmTaXdOoWqqqM4E++yw0buzMtZVSAUmrbvJgjGH//nFs3vwsZcu2\no2XL5URGnnmX9LPFn/Hm3DcZ32087c9vX6Dz798PpUoVYDVKpZQqIL0Zm4eDB6eyZctAGjQYeka5\nZFYJxxKIioiiUslKBTp3RgZcdRV06waPPuqNaJVSRYnPq25EpCIwFqgNbAO6GWOO5NBuG3AMO9aR\nboyJyeV8AZnobUwun6wuOXCgLZKZNs0u56CUUgXhj6qb54HpxpiGwB/ur3NigFhjzKW5JflAJiL/\nJPm4uDivnXfKFBg92h7eTvLejNOXNE7v0ji9K1jizA9PUkxnYJT781HAredoG/C1focPz2Tv3u/O\n2WbCtAkMmD4AT995bN8O991n5zRVqeLRqaz0dLjmGrscJ8HzH1Tj9C6N07uCJc788CTRV8uyyfde\nILeF1Q0wQ0SWiMiDHlzPJ1JStrF6dRc2bLif8PAyubYbu3osw5cOJ7psYaarnum77+CZZ+xGJF4x\nc0rFgd4AAAU7SURBVKadaaV3dJVSOThn1Y2ITAfOy+GhF7N+YYwxIpJbN7e9MSZRRKoA00VkvTHm\nr8KF6z2nVpfctesTatV6gkaNRhMeHnVWu5T0FJ787UlmbJlBr6a9eKz1Yx5f+4UXPD7FmcaMsbNh\nlVIqB57cjF2PHXvfIyLVgVnGmIvyeM5gIMkY8385PBZ4d2KVUirA+XrjkUlAH+At98eJ2RuISEkg\n3BhzXERKAdcCrxQ2WKWUUgXnaXnlOOB8spRXikgN4EtjzI0iUheY4H5KBPCdMaawi+8qpZQqhICZ\nMKWUUso3Am6ajog8LSIu9zuGgCMir4rIChFZLiJ/iIjnZTg+ICLviMg6d6wTRKSc0zHlRES6isga\nEckUkcucjicrEbleRNaLyEYRec7peHIjIiNFZK+IrHI6ltyISLSIzHL/W68Wkf5Ox5QTEYkUkYXu\nv++1IhLQIxAiEi4iy0Rk8rnaBVSidyfNa4DtTsdyDm8bY5oZY5pj70sMdjqgXPwONDHGNAP+Brxd\n6+Mtq4DbgD+dDiQrsbPkPgauBxoDd4pII2ejytVX2DgDWTrwpDGmCdAGeDQQf5/GmFTgSvffd1Pg\nShHp4HBY5/I4sBZbxp6rgEr0wHvAAKeDOBdjzPEsX5YGDjgVy7kYY6YbY1zuLxcCuW9S6yBjzHpj\nzN9Ox5GDGGCTMWabMSYdGAMUZgdfn3OXKx92Oo5zMcbsMcYsd3+eBKwDajgbVc6MMcnuT4sD4cAh\nB8PJlYjUAjoBw8ljUmrAJHoRuQVIMMasdDqWvIjI6yKyA1tt9KbT8eTDfcBUp4MIMjWBnVm+TnB/\nT3lIROoAl2I7IAFHRMJEZDl2IugsY8xap2PKxfvAs4Arr4Z+XaY4jwlYL2DLL/9p7pegcnCOOAca\nYyYbY14EXhSR57G/7Hv9GqBbXnG627wIpBljvvdrcFnkJ84ApFUKPiAipYH/AY+7e/YBx/1OuLn7\nvtZvIhJrjIlzOKwziMhNwD5jzDIRic2rvV8TvTHmmpy+LyIXAxcAK8RugVcLiBeRGGPMPj+GCOQe\nZw6+x8Gecl5xisg92Ld2V/kloFwU4PcZSHYBWW+0R2N79aqQRKQYMB4YbYw5a95NoDHGHBWRKUBL\nIM7hcLJrB3QWkU5AJFBWRL4xxtydU+OAGLoxxqw2xlQzxlxgjLkA+wd1mRNJPi8i0iDLl7cAy5yK\n5VxE5Hrs27pb3DeYgkEgTZpbAjQQkToiUhzojp0kqApBbA9uBLDWGPOB0/HkRkQqi0h59+dR2OKQ\ngPsbN8YMNMZEu/NlD2BmbkkeAiTR5yCQ3zb/V0RWucfwYoGnHY4nNx9hbxZPd5dffep0QDkRkdtE\nZCe2EmOKiExzOiYAY0wG8G/gN2xVw1hjzDpno8qZiPwAzAMaishOEXFkKDEP7YFe2CqWZe4jECuF\nqgMz3X/fC4HJxpg/HI4pP86ZM3XClFJKhbhA7dErpZTyEk30SikV4jTRK6VUiNNEr5RSIU4TvVJK\nhThN9EopFeI00SulVIjTRK+UUiFOE71SORCRVu5NW0qISCn3ZhmNnY5LqcLQmbFK5UJEXsUuGBUF\n7DTGvOVwSEoViiZ6pXLhXm1xCZACtDX6x6KClA7dKJW7ykAp7OJwUQ7HolShaY9eqVyIyCTsngN1\ngerGmMccDkmpQvHrxiNKBQsRuRs4aYwZIyJhwLxA3GlIqfzQHr1SSoU4HaNXSqkQp4leKaVCnCZ6\npZQKcZrolVIqxGmiV0qpEKeJXimlQpwmeqWUCnGa6JVSKsT9P0udSu96P8vcAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "x = np.arange(-5,5, 0.1);\n", "y = (x**3-2*x+7)/(x**4+2)\n", "\n", "p1=plt.plot(x, y)\n", "plt.xlim(-4, 4)\n", "plt.ylim(-.5, 4)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title('Good Guess')\n", "t = np.arange(-5, 5., 0.1)\n", "\n", "x0=-1.5\n", "xvals = []\n", "xvals.append(x0)\n", "notconverge = 1\n", "count = 0\n", "cols=['r--','b--','g--','y--','c--','m--','k--','w--']\n", "while (notconverge==1 and count < 6):\n", " funval=(xvals[count]**3-2*xvals[count]+7)/(xvals[count]**4+2)\n", " slope=-((4*xvals[count]**3 *(7 - 2 *xvals[count] + xvals[count]**3))/(2 + xvals[count]**4)**2) + (-2 + 3 *xvals[count]**2)/(2 + xvals[count]**4)\n", " \n", " intercept=-slope*xvals[count]+(xvals[count]**3-2*xvals[count]+7)/(xvals[count]**4+2)\n", "\n", " plt.plot(t, slope*t + intercept, cols[count])\n", " nextval = -intercept/slope\n", " if abs(funval) < 0.01:\n", " notconverge=0\n", " else:\n", " xvals.append(nextval)\n", " count = count+1\n", "\n", "plt.show()\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the graph, we see the zero is near -2. We make an initial guess of $$x=-1.5$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have made an excellent choice for our first guess, and we can see rapid convergence!" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.007591996330867034" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "funval" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In fact, the Newton-Rhapson method converges quadratically. However, NR (and the secant method) have a fatal flaw:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEZCAYAAACZwO5kAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuczXX+wPHX2yBSuSXClAoVlbSS6DK2spJUq/tGKZts\npXTdrma3dltR2z26oX7pahOlmzgUYeWW0FIJuUQol1zGvH9/fM6YMzPfM7dz5nzOOfN+Ph7fx7m9\nz/f7njHe53M+38/38xFVxRhjTPqq4jsBY4wxFcsKvTHGpDkr9MYYk+as0BtjTJqzQm+MMWnOCr0x\nxqQ5K/SmUhKR5SJyhu88jEkEK/QmJYQL83YR2SIiG0XkPRFpGsMuNbxFO1678DE2isgmEflaRB4U\nkToxHNMYL6zQm1ShQHdV3R84GFgHPFkRBxKRjsBk4DPgSFWtC3QFcoA2FXFMYyqSFXqTclR1JzAG\naJX3nIicIyJzReQXEVkhIoMi3yMivUTkBxHZICJ3l3CIh4GXVHWwqq4PH3Olqmar6pTw/rJF5JWI\n/TcTkVwRqRJ+XFtEXhSR1SKySkQeiHituYhMEZHNIrJeRF4PPy8i8m8RWRf+ORaISOvYf2OmsrNC\nb1KJAIjIvsAlwBcRr20FrlDV2sA5QH8ROS8c3wp4BvgT0BioDwR2+4hILaAD7oOkOCXNHTIS2AUc\nAbQFugB9w689AHyoqnWAJsAT4ee7AKcCLcI/x0XAzyUcx5gSWaE3qUKAsSKyCdgMnAEMzXtRVaeo\n6tfh+18BrwOnh1++EBivqp+r6i7gPiA3ynHq4v5frN17YJGHw/30W0Xknoh8ghMVaQicDQxU1d/C\n3woeAy4Nh+wCmolIE1XdparTI57fHzhaRKqo6jequrbIAYwpIyv0JlUocF64v3wf4EZgSrioIiIn\nichkEflJRDYD/XAtd3Ct+FV7d6S6negt5U24D4GDI+LvCB/3HSCjFLkeClQD1oQ/IDYBw4AG4dfv\nwH1QzBKRhSLSJ3ycycBTwNPAOhEZLiL7l+J4xhTLCr1JOeq8A+wBOoWfHg2MBZqGu0SGkd/qXg1k\n5r0/3PVTnwCqug2YCfQMeFki9rkN2DfitUYR91cCO4H6qlo3vNVW1WPDx1inqteqahPcB9IzInJ4\n+LUnVbUd7vxDS+D2En8hxpTACr1JJXl99BLuf68LLA6/th+wSVV3iUh74PKI940BuotIJxGpDvyd\n4v/27wCuFpE7ReSg8DGbAs3I75ufC5wmIpkiUhu4K+/NqroG+Bh4VET2F5EqInKEiJwW3tdFEUND\nN4f3mRse0nmSiFQDtgM7cB9mxsTECr1JJeNFZAvwC+6EZm9VzSv0fwH+LiK/4vrg38h7U7jv/npc\nq381sBHX6g6kqtOA3wOnAd+Eu14+wA25fDIcMzF8jAXAf4HxFDxB2xuoDiwKH+8t8lv97YAZ4Z/l\nXWCAqi4HDgCeC8cvBzYAQ8rw+zEmkMRj4RERyQBmA6tU9dyA15/AnZzaDlylqnNjPqgxxphSiVeL\n/iZcy6XIp4aIdAOaq2oL4Frg2Tgd0xhjTCnEXOjDfY3dgBcIHnLWAxgFoKozgTp5IyWMMcZUvHi0\n6P+NGxkQbVxyEwr2h64iysUqxhhj4i+mQi8i3YGfwn3uUS8gCXjNViQ3xpgEqRrj+zsCPcL98DWA\nA0TkZVXtHRHzIxFjmHGt+R8L70hErPgbY0wZqWpxjWwgxha9qt6tqpmqehju8u5JhYo8wDjcUDNE\npAOwWVXXRdlfUm+DBg3ynoPl6SHPu+/2nkNa/T4tz7htpRXvcfQKICL9RKRfuHhPAL4TkWXAcNx4\nZ2OSx5Yt8OKLMGtW8OvVqiU2H2PiLNaum73UTd86JXx/eKHXbojXcYyJi9xcmDoVRoyAd9+Fzp2h\njU01b9JT3Ap9ZZCVleU7hVKxPEswdy707Am1akGfPjBkCBx0UNRw+33Gl+WZeHG5MjYeRESTJReT\n5rZsgf/9D044AaTE81jGJC0RQUtxMtYKvUlPqjBjhivm++zjOxtjKkRpC71NambSy+rVMHgwtGoF\nV14Jy5f7zsgY76zQm7SQE/qcrw/vzuamrXn1b0vpvvYF6m/4hjYXH8l777kGvjGVlXXdmJT388/w\nzy4hGu1awR9f7UnNA2tRpQpkZLgRk7fdBk2bwqOPwrHH+s7WmPixPnqTnn77DWrW3Pvw66/hvPPg\n/PNdj01GwEJ/u3fDsGHwwANw0UWu4Fu3vUkH1kdv0kdODrz3nhsS2bw57NoFwMcfu+Hv998PQ4cG\nF3lw1zvdeCN88w2sWQPnngtbtyYwf2M8sxa9SV6LF7sLml55BQ47zI15v/hiqF2brVuhZUt49VVX\n7EsrJwf69YNFi+D996FevYpL35iKZl03JvUNHOj6WK66Co46qsBL2dmwdKkr9GWlCnfcAR984L4V\nNG4cl2yNSTgr9CZtrV7tTqp++SU0a1b+/QweDMOHw5QpkJlZcrwxyaa0hd6mQDD+fPstjBwJGzbA\ns6VfYXLQILjmmtiKPMCdd0LVqvCHP8Dnn1s3jklfdjLWJNbWra64n346nHyym47guutK/favvoJx\n4+Duu+OTzq23Qrdu0KOHG9BjTDqyrhuTOLm5btRM69buxGr37lC9epl2cfbZbhswIL5p9e7tPnPG\njHGtfGNSgfXRm+S0fTvsu2+53vrxx3D99W7sfBk/H0q0a5f73GnWzPXb21xnJhXYOHrjx44d8Prr\nrioHKWeRB7jvPnjoofgXeXD7HDPGneD9xz/iv39jfIp1cfAaIjJTROaJyCIReSggJktEfhGRueHt\n3liOaZKQKvz3v/CXv0CTJm61pirxbUMsWQIrV8IFF8R1twXsv7+7Luv55+GNNyruOMYkWky9kaq6\nQ0Q6q+p2EakKfC4ip6jq54VCp6hqj1iOZZLUihXubOZvv7l+97lz4ZBD4n6Y116DSy+NfvVrvBx8\nsDvZe+aZcOih0KFDxR7PmESI+bSTqm4P360OZAAbA8KsxzNdNWnihkaeckqFdWyrwujRrtgnQps2\nbmDQH/8I06fHPozTGN9i/n4tIlVEZB6wDpisqosKhSjQUUTmi8gEEWkV6zGNBwsWwMaAz/CMDDj1\n1Ao9ezl7trv93e8q7BBFnHOOG2ffvTv88kvijmtMRYhHiz4XOF5EagMfiUiWqoYiQuYAmeHunbOB\nsUDLoH1lZ2fvvZ+VlZVWazampI0bXVN6xAhYt851XHfqlPA0Ro+Gyy9P/EiYAQPcioOXXOL67m3Y\npfEtFAoRCoXK/L64Dq8UkfuA31R1aDEx3wO/U9WNhZ634ZXJYsECePBBN3Lm7LNd3/sZZ1R8B3mA\nPXvcXPKTJxeZ7iYhcnJc675lS3jyycQf35jiJGR4pYgcKCJ1wvdrAmcBcwvFNBRxbTERaY/7cAnq\nxzfJQtVNCfn9965jvEsXL0UeIBRyk475KPLgWvFvvgmTJsFTT/nJwZhYxfpl9GBglIhUwX1ovKKq\nn4pIPwBVHQ5cCPQXkRxgO3BpjMc08VJoEY+92rRxWxLI67bxqXZt13XTsSMccYT7kmNMKrErYyub\n3FzXTB4xwlWv//0PGjTwnVWgHTtca37BAtd949u0aW4c/6RJcMwxvrMxxq6MNYUtX+4mcT/iCLj5\nZjjhBLfkUpIWeXDzxbdpkxxFHtx56H//243EWbvWdzbGlJ6NI6gsRo920wGPGQNt26bEZC7J0G1T\n2J/+5BY8Oe8898UoqOfLmGRjXTcmKW3fDo0auS8iyTZPvCpccYWbCO2NN+I+24MxpWZdN5XN6tXw\nr3+5NVXTwLRpcNxxyVfkwX0ZevFFt9D4vTZzk0kBVuhT2c6d8PbbbqB369Zuxaabb3ZNzhQ3caKb\nbyZZ1agBY8e6oZcjRvjOxpjiWR99Kuvc2VWcPn1cxalVy3dGcTNxIjz+uO8sinfggW7g0umnw+GH\nu1tjkpH10aeyGBbxSGYbNrjBQRs2QLVqvrMp2cSJrs9+2jSXtzGJYn306WD3bhg/3nXPBEnDIg9u\nuoNTT02NIg+ui2nQIDj3XJsAzSQnK/TJaNEiuP12N6/7Q0XWckl7yd4/H6R/fzcd0CWXuPlxjEkm\nVuiTyZYtcNJJcNZZbpKVUMhNiH7hhb4zS6hULPTgLqZShVtu8Z2JMQVZH32ymTrVXYLpaRIx3777\nzs0ps2ZNSlzTVcTmze6z+q674KqrfGdj0p310Sezb7+FH38Mfu200yptkQf49FPXmk/FIg9Qpw78\n5z+u523ePN/ZGONYoU+UrVvd+nSnnw4nn5y/bJIpIFW7bSK1bu2mNO7ZEzZt8p2NMdZ1U/G+/x4e\neADeeccNJenTx13gVL2678ySTm4uHHSQW188M9N3NrG75RY3b9z48TZNgqkY1nWTLKpWhVatYPFi\nGDfOzXNrRT7Q/PlQv356FHmAwYPd+fUHH/SdiansrEUfLzt2wD77pG7nchIYMsRNYvb0074ziZ+1\na6FdOxg1yg2/NCaeErWUYA0RmSki80RkkYgEDvoWkSdEZKmIzBeRtrEcM6mowqxZbhB1kyawcKHv\njFJaOvTPF9aoEbz0Elx9tRuRY4wPMRV6Vd0BdFbV44HjgM4ickpkjIh0A5qragvgWuDZWI6ZFNat\ng6FD4dhj3QTlTZu6IRbHHus7s5S1c6e7ZCAry3cm8deli1usZMAA35mYyirmSc1UdXv4bnUgAyi8\n8HcPYFQ4dqaI1BGRhqq6LtZjezN+vLt69dln4ZRTrLsmDmbNcguA163rO5OK8fDDcPzxbt2Xnj19\nZ2Mqm5hPxopIFRGZB6wDJqvqokIhTYCVEY9XAUmyOFw59e3rvo+feqoV+TiZPt1dJ5auatWCl1+G\n66+3ZQhN4sWjRZ8LHC8itYGPRCRLVUOFwgpXw8CzrtnZ2XvvZ2VlkeXre/zPP7t17N5/381DW9Vm\nc65o06e7XrB0dvLJrq/+2mvh3XetjWDKLhQKEQqFyvy+uI66EZH7gN9UdWjEc8OAkKq+Hn68BDi9\ncNeN91E3OTnw8cduFYlPPoFu3dw17GeeaYOgK5hq/vj5ZFkIvKLs2gXt28PAgXDllb6zMamutKNu\nYmqqisiBQI6qbhaRmsBZwN8KhY0DbgBeF5EOwOak7J+//HL44Qd3QdPzz7tr2U1CLFvmFtlO9yIP\n7hKK556D8893l1QccIDvjExlEFOLXkSOxZ1orRLeXlHVISLSD0BVh4fjngK6AtuAPqo6J2Bfflv0\n27al1QpNqWTUKPjwQ3jtNd+ZJE6fPm6FqiFDfGdiUllpW/SV54Kp3Fw37W9eq90kjX794Jhj4MYb\nfWeSOGvXup952jQ48kjf2ZhUZVMg5Fm+HLKz3RpvAwfaqhBJaNo0NzVxZdKoEfz1r+5P0piKlr4t\n+txcd0J19my47DLXim/b1oY6JJnNm93cNhs3ps7SgfGya5e7xu7RR908d8aUVUJOxia1KlXgvvvc\nRCP77OM7GxPFjBnun6iyFXlwJ2YfewxuusktKmZz3ZmKkvpdN6tXu2EbQTp1siKf5KZPr3zdNpHO\nPhtatoQnnvCdiUlnqVnod+6Et95yXTPHHAOTJ/vOyJRTZS/04KZHGDLErU1jTEVIrUK/fj3ccIOb\nKXLYMDf2fdUq+POffWdmyiEnx81x06GD70z8atXKLTw2bJjvTEy6Sq0++po13SWUs2dDs2a+szEx\nWrjQfWbXr+87E//uvRf+8Af4y19g3319Z2PSTXK26Hfvdlth++0H999vRT5NWLdNvuOOc99snn/e\ndyYmHSVXof/6a7jtNjfe7tNPfWdjKpgV+oLuu8/11+/Y4TsTk26Sq9B36eLG2U2ZAl27+s7GVLB0\nn5q4rE44wW0vveQ7E5NukuuCqZwcyMjwnYpJgDVr3ICp9ettctBIs2bBhRe6EcM2rt6UJDWnQLAi\nX2l88YXrk7YiX1D79m4UzqhRvjMx6cT+mxkvZsywYZXR3HsvDB7sZvEwJh6s0BsvZs2Ck07ynUVy\n6tTJLYfw4Ye+MzHpwgq9Sbg9e+DLL+HEE31nkpxE3HWBTz3lOxOTLqzQm4T7+mto3Bjq1vWdSfK6\n5BJ3XWC0aZyMKYuYCr2IZIrIZBH5WkQWisiAgJgsEflFROaGt3tjOaZJfdZtU7KaNeGaa+Dpp31n\nYtJBrFMg7AYGquo8EdkP+FJEPlHVxYXipqhqjxiPZdLEzJlW6EvjuuvcuPoHHnAXhRtTXjG16FV1\nrarOC9/fCiwGGgeE2mofZq+ZM90wQlO8Qw+F006DV1/1nYlJdXHroxeRZkBbYGahlxToKCLzRWSC\niLSK1zFN6tm6Fb79Ftq08Z1Jasg7KZsk1zWaFBWX2SvD3TZvAzeFW/aR5gCZqrpdRM4GxgItg/aT\nnZ29935WVhZZWVnxSM8kkS+/dBN42VWfpfP737tRSlOmgP13MKFQiFAoVOb3xTwFgohUA94DPlDV\nx0oR/z3wO1XdWOj5+K4Za5LSkCFuCYHHH/edSep45hmYNAneftt3JibZJGQKBBER4EVgUbQiLyIN\nw3GISHvch8vGoFiT/uxEbNn16uUmc12zxncmJlXF2kffCbgC6BwxfPJsEeknIv3CMRcCX4nIPOAx\n4NIYj2lSmBX6stt/f+jZE155xXcmJlUl1+yVSZKLqRirV7v++fXr3dWfpvSmTYO+fWHRIvvdmXyp\nOXulSWuzZrlhlVaoyq5jRzfJ2YwZvjMxqcgKvUkYGz9ffiLQp48tSmLKxwq9SRib+iA2vXvDmDGw\nbZvvTEyqsUJvEmLPHjdJl7Xoy69xY9eFM2aM70xMqrFCbxJiyRJo0ADq1/edSWrr0wdGjPCdhUk1\nVuhNQli3TXyce66b5vnbb31nYlKJFXqTEDZ+Pj6qV4fLL4eRI31nYlKJFXqTELZGbPz06eMWD9+z\nx3cmJlVYoTcVbts2WLrUZqyMlzZt3PmOyZN9Z2JShRV6U+Fmz3ZXxO6zj+9M0kevXjYlgik9K/Sm\nwlm3TfxddhmMG2dj6k3pWKE3Fc5OxMZfw4Zw8skwdqzvTEwqsEJvKpQqfPGFtegrgnXfmNKyQm8q\n1MqVrtgfeqjvTNLPeee5b0s2T70piRV6U6FmzHDdNjZjZfztuy+cfz689prvTEyyi3WFqUwRmSwi\nX4vIQhEZECXuCRFZGl4gvG0sxzSpZeZM67apSNZ9Y0oj1hb9bmCgqrYGOgDXi8jRkQEi0g1orqot\ngGuBZ2M8pkkhNuKmYmVlwYYNsHCh70xMMoup0KvqWlWdF76/FVgMNC4U1gMYFY6ZCdQRkYaxHNek\nhl27YN48aNfOdybpq0oV+NOfrFVvihe3PnoRaQa0BWYWeqkJsDLi8SqgabyOa5LXggVwxBFuzVNT\ncXr1gldftSkRTHRxKfQish/wNnBTuGVfJKTQY1scthKwbpvEaN0aDjoIQiHfmZhkVTXWHYhINWAM\n8H+qGnT5xo9AZsTjpuHnisjOzt57Pysri6ysrFjTMx7NmAGdO/vOonLo3dt135xxhu9MTEUKhUKE\nyvGJLqrlb1yLiOD6339W1YFRYroBN6hqNxHpADymqkXaeSKiseRikk+LFu7KzdatfWeS/tatg6OO\nglWroFYt39mYRBERVLXEwcuxFvpTgKnAAvK7Y+4GDgFQ1eHhuKeArsA2oI+qzgnYlxX6NLJhg+uf\n37gRMjJ8Z1M5dO8Ol14KV1zhOxOTKKUt9DF13ajq55Sin19Vb4jlOCb1zJwJJ55oRT6ReveGF16w\nQm+KsitjTYWwC6US79xz3ZTQPwaeATOVmRV6UyG++MJmrEy0mjWhZ0831NKYSDH10ceT9dGnj5wc\nqFcPvv8e6tf3nU3l8tln0L8/fPWVzS9UGZS2j95a9CbuFiyAzEwr8j506gTbt7srko3JY4XexN3n\nn8Mpp/jOonKqUsVdKfvyy74zMcnECr2Ju88+s0LvU69eMHo07N7tOxOTLKzQm7hSdS36U0/1nUnl\n1by52z7+2HcmJllYoTdx9d13buy8rSjl15VXwogRvrMwycIKvYmrvP55G/Hh16WXwqefwk8/+c7E\nJAMr9Cau7ERscjjgALfMoM1Tb8AKvYkzK/TJo29fNyWCXZ5irNCbuFm/HtasgWOP9Z2JAejY0d1O\nn+43D+OfFXoTN9Omwckn20RmyUIErrnGtepN5WaF3sSNddskn9693ZoAv/7qOxPjkxV6EzdW6JPP\nQQe5Vadef913JsYnK/QmLrZvdxNpnXii70xMYXknZU3lFXOhF5GXRGSdiHwV5fUsEflFROaGt3tj\nPaZJPrNmwXHHwb77+s7EFHbWWbB2rZtszlRO8WjRj8AtE1icKaraNrw9GIdjmiRj0x4kr4wM6NPH\nWvWVWcyFXlU/AzaVEGbXSaY5m8gsufXt6xYk2bLFdybGh0T00SvQUUTmi8gEEWmVgGOaBNq9G2bM\nyB+3bZJPZqY7KTtypO9MjA+JKPRzgExVbQM8CYxNwDFNAs2aBUccAQce6DsTU5wBA+DJJyE313cm\nJtGqVvQBVHVLxP0PROQZEamnqhsLx2ZnZ++9n5WVRVZWVkWnZ+Jg4kQ480zfWZiSdOoE++8PH34I\n3br5zsaURygUIhQKlfl9cVkzVkSaAeNVtcjF7yLSEPhJVVVE2gNvqmqzgDhbMzZFnXoq3HcfdOni\nOxNTkpdfdn31H33kOxMTD6VdMzbmQi8irwGnAwcC64BBQDUAVR0uItcD/YEcYDtwi6rOCNiPFfoU\ntGULNG7spsOtWdN3NqYkO3e6tQImT4ajj/adjYlVwgp9vFihT03vvQf//reb+9ykhkGD3Afzs8/6\nzsTEqrSF3q6MNTGx/vnU07+/mxJhU0mDok3asEJvYmKFPvU0agTdu8OLL/rOxCSKdd2YcluzBlq3\ndvPQ29TEqWX2bOjZE5YuherVfWdjysu6bkyFmzgRfv97K/KpqF07OPJINwrHpD8r9KbcrNsmtQ0a\nBP/8p7uy2aQ3K/SmXFSt0Ke6Tp3g8MNtAfHKwAq9KZclS6BaNTf1gUldgwbBgw9aqz7dWaE35fLJ\nJ641LzYvaUo79VQ47DD4v//znYmpSFboTblMnOgWtDCpb9Ag+Mc/ICfHdyamolihN2W2ezdMnepG\n3JjUd9ppbhrjV1/1nYmpKFboTZl9/jk0bw4NGvjOxMTLoEHwwAPWqk9XVuhNmY0dC+ef7zsLE09Z\nWW4Ejs1/k57sylhTJqrQrBlMmOCuijXpY9EiOP10d2vf1lKDXRlrKsS8ee6S+Va2IGTaadUKLr/c\nrS1g0osVelMmed02NqwyPWVnu3/juXN9Z2LiyQq9KRPrn09vdevC3//u1pe1ntT0EVOhF5GXRGSd\niHxVTMwTIrJUROaLSNtYjmf8+u47WLsWOnTwnYmpSNdcA9u2uTnrTXqItUU/Auga7UUR6QY0V9UW\nwLWAndNPYe++Cz162GyV6S4jA554Au64A7Zu9Z2NiYeYCr2qfgYUt05ND2BUOHYmUCe8WLhJQdZt\nU3mccoq7IO6vf/WdiYmHiu6jbwKsjHi8Cmhawcc0FWD9ejfi5owzfGdiEuXxx2HcOPjwQ9+ZmFhV\nTcAxCo/PiHqKJzs7e+/9rKwssrKyKiYjU2bjx0OXLlCjhu9MTKLUqQMjR0KvXrBgAdSv7zsjEwqF\nCIVCZX5fzBdMiUgzYLyqHhvw2jAgpKqvhx8vAU5X1XUBsXbBVBLr0QMuuQT+9CffmZhEu+UWWLEC\n3nrLhtUmm2S5YGoc0DucUAdgc1CRN8lt61YIhaBbN9+ZGB/++U+3/oBNZZy6Yuq6EZHXgNOBA0Vk\nJTAIqAagqsNVdYKIdBORZcA2oE+sCZvEmzDBDamsW9d3JsaHGjVckT/rLDd/fbNmvjMyZWVz3ZgS\nnXMOXHqp66s1ldcjj8Do0W6K6lq1fGdjoPRdN1boTbHWrHFzoKxaZf+5KztVuOoq15X31ltQxa6r\n9y5Z+uhNinvlFejZ04q8cSdin3sO1q2D++/3nY0pCyv0JipVN7zuqqt8Z2KSxT77wDvvuC4cOzmb\nOhIxjt6kqP/+1y0b2KmT70xMMmnQwF1X0bmzW6ykY0ffGZmSWIveRJXXmrex06aw1q3h5Zfhggtc\ng8AkNzsZawLt2AFNmrh5yQ85xHc2JlmNHw99+7rb9u19Z1P52MlYE5N334UTTrAib4p37rnw4ovQ\nvTvMnOk7GxONFXoTyE7CmtLq3t39vZx7Lnzxhe9sTBDrujFF/PgjHHusGzu/776+szGp4sMP3UV1\nw4a5Ibmm4lnXjSm3kSPhwgutyJuy6drVFfuBA91yhNZuSx7WojcF7NgBhx0GH3/sWvXGlNXatW40\nTmYmjBhhF9tVJGvRm3J55RV3EtaKvCmvRo1g8mSoWdOtVLVkie+MjBV6s1duLgwd6tYKNSYWNWq4\nLsBrr3XF/skn3d+X8cMKvdlr3DioXRtOO813JiYdiED//m4kzujRboWylStLfp+JPyv0BnAnzgYP\ndq15uxLWxFOLFvDZZ27KhBNOgKeegpwc31lVLlboDQDTprkFwC+4wHcmJh1VrQr33OP67t95B44/\nHiZO9J1V5RFzoReRriKyRESWisidAa9nicgvIjI3vN0b6zFN/A0ZArfeChkZvjMx6eyYY1yBf/BB\n6NcPzj8fvvnGd1bpL6ZCLyIZwFNAV6AVcJmIHB0QOkVV24a3B2M5pom/xYthxgy7EtYkhogr8F9/\nDSef7JYnvPRSWLjQd2bpK9YWfXtgmaouV9XdwOvAeQFx1uubxP71L7j+ejcczphEqVED7rwTvv3W\n9d2feSb88Y82G2ZFiLXQNwEiz6OvCj8XSYGOIjJfRCaISKsYj2niaM4cd3HUzTf7zsRUVvvv7wYB\nfPedG/F10UVuJsxRo9wFfCZ2sS48UppLWecAmaq6XUTOBsYCLYMCs7Oz997PysoiKysrxvRMcVTh\nllsgOxsOOMB3Nqay23df1+C48UaYMAGefhpuvx2uvNLNoXPccb4z9C8UChEKhcr8vpimQBCRDkC2\nqnYNP77yDOx7AAASHElEQVQLyFXVwcW853vgd6q6sdDzNgVCgv3nP67Iz5njRkUYk2yWLXPTII8e\n7a7xuOIKuOwyN72CKf0UCLEW+qrAN8AZwGpgFnCZqi6OiGkI/KSqKiLtgTdVtVnAvqzQJ9DOndCq\nFQwf7vpGjUlmubnw+edundoxY6B5c3dC9/zz4aijKu+1Hwkp9OEDnQ08BmQAL6rqQyLSD0BVh4vI\n9UB/IAfYDtyiqjMC9mOFPoGGDoWpU93VsMakkt273d/u2LFuq1nTzZzZpQtkZcF++/nOMHESVujj\nxQp94vz0k2vNT58OLQPPlhiTGlTdcpcff+y2WbOgXTt3Fe6pp0KHDuk93bYVehPVdde5oW2PPeY7\nE2Pia9s219qfMsXdzp/vTuJ27AgnneS2Qw5Jn64eK/Qm0KefQu/e8NVXUK+e72yMqVjbt7u1bL/4\nwt3mrWvbrh20bZu/NWuWmsXfCr0pYuNGaNPGjWLo0sV3NsYknqqbQXP2bNflk7dt2+amZ4jcjj4a\nDjoouT8ArNCbAlTh4ouhSRPrsjGmsPXr3ZQMCxfmb4sXu9E+Rx0FRx7pzmc1b56/JcO1J1boTQEj\nR8Ijj7jLy2vU8J2NMalhwwa3QtaSJW5M/9Kl7nbZMneS97DDCm6HHAKHHuq2RCyhaIXe7PXtt270\nwaRJtkSgMfGgCuvWwfff52/Ll8MPP8CKFW6rWROaNnVbZqb7Nt2kCTRunL/Vrx9b15AVegPArl1w\n+ulwySU2n40xiaLqvg2sWlVwW73abT/+6G63boWGDeHgg91auw0b5m8HHZS/NWjgPhQKTyNuhd6g\n6uYI2brVTXdQxZaZMSap7NjhvhmsXQtr1rj769a5a13ybtevd7ebN0OdOq7oH3ig28aOtUJf6d19\nt1vR59NP0/uiEWMqgz174Oef3bZhg/sA6NmzdIXeprJKU88+C2+/7a5+tSJvTOrLyMjvyikrK/Rp\naNw4eOABtyDzgQf6zsYY45sV+jQzaRL07Qvvvw9HHOE7G2NMMrDTc2nkzTfd2ptvvgknnug7G2NM\nsrAWfZp48kkYPBg++cRNc2CMMXms0Kc4VbjnHnfi9bPP3NV5xhgTyQp9Ctu0Cf78Z3cV3rRpbnyt\nMcYUFnMfvYh0FZElIrJURO6MEvNE+PX5ItI21mMa13o//nh3SfXUqVbkjTHRxdSiF5EM4CngTOBH\n4L8iMq7QmrHdgOaq2kJETgKeBTrEctzKLCcH/v53eP55eOEFOOcc3xkZY5JdrC369sAyVV2uqruB\n14HzCsX0AEYBqOpMoE54wXBTRp9/7lbImTED5syxIm+MKZ1YC30TYGXE41Xh50qKaRrjcSuVFSvc\nsMnLL4fbboOPPnKTIBljTGnEejK2tJPTFJ6LIfB90m5A/oPGJ0GTk9z9Yc2D93rdsuDno8X3+zb4\n+eFRrixKwvjLp8DlU8qx/8jf+HNR4q+Nkk+84v8cJf55T/F9vwt+/oXDLR7gmijxL3qKvzpK/EsV\nFJ83hcyIKEPZ+nwf/HxFxq+ZAR9+ExxfjFgL/Y9AZsTjTFyLvbiYpuHnirhtWGRD/0fgPwAMefaO\nwIPfPvudIs8pMPTZ24PjvywaDzBk2G1R4sdGib81Svy7BXMJF9ehw26JEj8u8Plrbx3II4/AG2+4\n6YXvucfNZ337l+Oj5BM8/3BefOFP1aHDg+Nv+/K9Qs9IOH5A0WDgti/fD3w+evyEok8KDH3uxuD4\nOR8E7/+5G6LEfxgl/vrA528N718KtUOGPv+Xsu0/avxHUeL7B+cz9+PA5x95/roo8Z9Eie9Xhnjh\nkeevjRL/afD+o3wwlD1+UpHnFOHRqPGTg/cf5YPh1rmhMsbnt6Ai/888+lJwIb5lXtD+pZj4wi20\nkvY/NTj+g+z8o8nfAmMKi7XQzwZaiEgzYDVwCXBZoZhxwA3A6yLSAdisquuCdnZr00YBz0b/0nBL\nk7INNbmlcf2y7b9x3VLHAgw8uGxriw08eL+99/fscUuZTZumdBwG/fvDN98UnMBo4ME1y7T/mxsF\nLSUV/WcY2Kh6qeLy4zNKjCmQT8NSfbHLjz8ot2z7PyinyHPFzYh6c4PdJeYQ6aYGO8qUz00Ntpcp\nn5vqbynb/uv/EvBscfvfXOpcAAbU21CmfAbUW1+mfG6su7ZM+7+x7uoy7n9ViTGRbqjzQ9nyqb28\n1Lm4+CjfOKPlc8DSgGfLN8NvTIVeVXNE5AbgIyADeFFVF4tIv/Drw1V1goh0E5FlwDagT7T9HfNy\nfstXwsuuCMJPt18ZGH/C6Lv2xkS+58dbrgqM7/BGdmD89zddHRh/2tsP5ecT8Z5vbrgmMP7Mdx4t\nkHde/Ff9+wbGdxv3NNu3u/HwmzZDjepCvXqwfPm1gcuQnff+C4H5z+wb3IK7+KNXAvP/rE9wi/KK\niW8WeJz3nklXBrdY+0x6t0AeefEfXhHcgr5uan6LOPI94y4LbtHfOG1ykZ9VEN6+OPgbw60zphfJ\nX0R4LTMwnLtnf1kkHuDlKPGD5iwsEisivBAl/h/zlxaJB3j2kOD4IQtX7N1n5HsejxL/+OJ1gfFD\nosQ/879NRb69iAj/PDQ4/sXvfiuSv4iQHSX+lR8KfjDnveeeKPFvrKoWmP/tzYLj31mT3zCKfM9N\nUeLf+6ne3hiJWMbpL1HiP9nYuEAeee/pG6VnZcovRV8QhGjXLE7fclRg/tHiv/yt4CXuIoIgROl4\nKlbMF0yp6gfAB4WeG17ocfB37UKW3LAkL97dosW2OuZcOwcNf8JFvieaqVdNLVP8hMsnFIgpqQX0\n1kVvlRi/ZQtMnAgTJsDqmSOpUQN6ngPdeiuZTd17o601+Uy3Z8qU/8NnPlwkn+Li7z/t/r33S/Mz\n39bxtiJ5FBd/XbvriuReXHyv43oViS/OH4/6Y5H8czX6t4Iuh3cpEl9cPqccckqZ8j++0fFF9lnc\nz9Cyfssy/fs23r9xmeJr71O7wOOS8q9apWqRfRcXvyMn/xtPafLZ+NvGMuW/4pcVBWJK+ntesmFJ\nkZji8p+9enbg33PfE4IbaqHloQKP834/Vx4f3DCdsGxCgRzy4i87tnAniPPmovyGV957cjWXnq16\nRv0ZokmqhUdycpQqVWJbQzHZrF/vrlqdPt3dLlgAJ58M3bq5rUWL9Pp5jTGJk5JLCYro3hOYVaqw\nt+jv3Fm0GKq6udbz4iLjV64Mjm/Vqmh8lSrwZcFv8HvjO3cOjp8QcE5x5044/3z49Vf45Re3bdrk\n1mw94wzo2BE6dXLj4GvVcvsfMCA/58j9P/xwcD4PPhgcf1vAuWRVeO654Px79QqOHzs2eP9duwbH\nT58evP+2Adc+q8KyZcHxTQoPyA3H//prcHy1akXjjamMSlvok2qum9zc/FtVd5ubG73F+803+XF7\n9uTfjxY/ZkxwfDSDBrmYPXvcuqsbNrjt5Zfdh8nKlfDtt66ArV4Ndeu6Fd9btMhf9b1BA7g6+BQA\nLVvm5xH580aza1fZ4ufMKfqz5uZGL/SjRhWMy7sfrdDffnvR36eqO25Q/NlnF9z/nj3utVWFx2mF\n4zMzi8arwu7dwfE1axb8wK9Sxa3Ks3FjcPyhhxb9EMnIgMWLg+NPPDH4g2dqwOCI3Fzo3j14/2+9\nFbz/q68O3v/TTwfv/667guMHDQre/6OPBsf3Dzhlowqvvhr8wd8zoOdA1c2cGrT/U04Jjp8/Pzi+\nZcvg+LVrg/OpUyc4Pjc3P76yS6oW/aZNSkZG0RZ6tH+svGIUWWzytpwcVxB27cq/3bHDbb/95rbt\n210Bz9t+/dW1wjdvdrcbN+YvzrvPPm4ETNOmbsvMdLdHHAHNm7uiYS1Nf1Tdv23kB1Teh3S9esHx\nK1YUbVTk5sJRRwXHz56dv8/I95x2WnD8hAnB8RdeGBw/YkRwQ+T6gHPbubnum1/QB212dnD8bbcF\nf9A+80xwfK9eRX+X4GZKDYr/wx+K/j5V3bxMhe3ZAyecUDQeYMmS4PimTYv+PiH4g3zPHqhePT8m\n8oN/587g/IN6CKpWdX8nQfGtWxetU1Wrur+ToPigHoKMjOAegtxcN7Q6KH7kyPy4lOy6OeAA3fsH\nGPQHEEk1/xect1Wt6n4RebfVq7vim3dbo4Zr9dWo4bb99iu47b+/a5XXretaCfXqueLeoIGLN8ak\nnsINwurVi8aoug+Mwh+ce/a4Rl1Q/OLFRRsJqu4DLCg+FCr6wZn3TTco/s03i357z82FKyPO9aZk\noU+WXIwxJhWUttBXSUQyxhhj/LFCb4wxac4KvTHGpDkr9MYYk+as0BtjTJqzQm+MMWnOCr0xxqQ5\nK/TGGJPmrNAbY0yaK/ekZiJSD3gDOBRYDlysqpsD4pYDvwJ7gN2q2r68xzTGGFN2sbTo/wp8oqot\ngU/Dj4MokKWqbVO9yIdCId8plIrlGV+WZ3xZnokXS6HvAYwK3x8FnF9MbFpMFJoq//CWZ3xZnvFl\neSZeLIW+YcQi3+uAhlHiFJgoIrNF5M8xHM8YY0w5FNtHLyKfAI0CXron8oGqqohEm3qyk6quEZEG\nwCciskRVA2aoNsYYUxHKPU2xiCzB9b2vFZGDgcmqGrBkQ4H3DAK2quojAa/ZHMXGGFNGFb2U4Djg\nSmBw+HZs4QAR2RfIUNUtIlIL6AL8rbzJGmOMKbtYWvT1gDeBQ4gYXikijYHnVfUcETkc+E/4LVWB\nV1X1odjTNsYYU1pJs8KUMcaYipF0V8aKyK0ikhv+xpB0ROQBEZkvIvNE5FMRCVhR0j8RGSIii8O5\n/kdEavvOKYiIXCQiX4vIHhEJWG3THxHpKiJLRGSpiNzpO59oROQlEVknIl/5ziUaEckUkcnhf+uF\nIjLAd05BRKSGiMwM//9eJCJJ3QMhIhkiMldExhcXl1SFPlw0zwJ+8J1LMR5W1TaqejzuvMQg3wlF\n8THQWlXbAP8D7vKcTzRfARcAU30nEklEMoCngK5AK+AyETnab1ZRjcDlmcx2AwNVtTXQAbg+GX+f\nqroD6Bz+/30c0FlETvGcVnFuAhbhhrFHlVSFHngUuMN3EsVR1S0RD/cDNvjKpTiq+omq5oYfzgSa\n+swnGlVdoqr/851HgPbAMlVdrqq7gdeB8zznFCg8XHmT7zyKo6prVXVe+P5WYDHQ2G9WwVR1e/hu\ndSAD2OgxnahEpCnQDXiBEi5KTZpCLyLnAatUdYHvXEoiIv8QkRW40Ub/8p1PKVwNTPCdRIppAqyM\neLwq/JyJkYg0A9riGiBJR0SqiMg83IWgk1V1ke+covg3cDuQW1JgLMMry6yEC7Duwg2/3BuekKQC\nFJPn3ao6XlXvAe4Rkb/iftl9EppgWEl5hmPuAXap6uiEJhehNHkmIRulUAFEZD/gbeCmcMs+6YS/\nCR8fPq/1kYhkqWrIc1oFiEh34CdVnSsiWSXFJ7TQq+pZQc+LyDHAYcB8EQHXzfCliLRX1Z8SmCIQ\nPc8Ao/HYUi4pTxG5CvfV7oyEJBRFGX6fyeRHIPJEeyauVW/KSUSqAWOA/1PVItfdJBtV/UVE3gfa\nASHP6RTWEeghIt2AGsABIvKyqvYOCk6KrhtVXaiqDVX1MFU9DPcf6gQfRb4kItIi4uF5wFxfuRRH\nRLrivtadFz7BlAqS6aK52UALEWkmItWBS3AXCZpyENeCexFYpKqP+c4nGhE5UETqhO/XxA0OSbr/\n46p6t6pmhuvlpcCkaEUekqTQB0jmr80PichX4T68LOBWz/lE8yTuZPEn4eFXz/hOKIiIXCAiK3Ej\nMd4XkQ985wSgqjnADcBHuFENb6jqYr9ZBROR14DpQEsRWSkiXroSS9AJuAI3imVueEvGkUIHA5PC\n/79nAuNV9VPPOZVGsTXTLpgyxpg0l6wtemOMMXFihd4YY9KcFXpjjElzVuiNMSbNWaE3xpg0Z4Xe\nGGPSnBV6Y4xJc1bojTEmzVmhNyaAiJwYXrRlHxGpFV4so5XvvIwpD7sy1pgoROQB3IRRNYGVqjrY\nc0rGlIsVemOiCM+2OBv4DThZ7T+LSVHWdWNMdAcCtXCTw9X0nIsx5WYtemOiEJFxuDUHDgcOVtUb\nPadkTLkkdOERY1KFiPQGdqrq6yJSBZiejCsNGVMa1qI3xpg0Z330xhiT5qzQG2NMmrNCb4wxac4K\nvTHGpDkr9MYYk+as0BtjTJqzQm+MMWnOCr0xxqS5/wdDn7bG1NWpkgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "x = np.arange(-5,5, 0.1);\n", "y = (x**3-2*x+7)/(x**4+2)\n", "\n", "p1=plt.plot(x, y)\n", "plt.xlim(-4, 4)\n", "plt.ylim(-.5, 4)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title('Bad Guess')\n", "t = np.arange(-5, 5., 0.1)\n", "\n", "x0=-0.5\n", "xvals = []\n", "xvals.append(x0)\n", "notconverge = 1\n", "count = 0\n", "cols=['r--','b--','g--','y--','c--','m--','k--','w--']\n", "while (notconverge==1 and count < 6):\n", " funval=(xvals[count]**3-2*xvals[count]+7)/(xvals[count]**4+2)\n", " slope=-((4*xvals[count]**3 *(7 - 2 *xvals[count] + xvals[count]**3))/(2 + xvals[count]**4)**2) + (-2 + 3 *xvals[count]**2)/(2 + xvals[count]**4)\n", " \n", " intercept=-slope*xvals[count]+(xvals[count]**3-2*xvals[count]+7)/(xvals[count]**4+2)\n", "\n", " plt.plot(t, slope*t + intercept, cols[count])\n", " nextval = -intercept/slope\n", " if abs(funval) < 0.01:\n", " notconverge = 0\n", " else:\n", " xvals.append(nextval)\n", " count = count+1\n", "\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have stumbled on the horizontal asymptote. The algorithm fails to converge. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Basins of Attraction Can Be 'Close'" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nMlwt2lYAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "-3.1713324128480282" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def f(x):\n", " return x**3 - 2*x**2 - 11*x +12\n", "def s(x):\n", " return 3*x**2 - 4*x - 11\n", "\n", "x = np.arange(-5,5, 0.1);\n", "\n", "p1=plt.plot(x, f(x))\n", "plt.xlim(-4, 5)\n", "plt.ylim(-20, 22)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title('Basin of Attraction')\n", "t = np.arange(-5, 5., 0.1)\n", "\n", "x0=2.43\n", "xvals = []\n", "xvals.append(x0)\n", "notconverge = 1\n", "count = 0\n", "cols=['r--','b--','g--','y--','c--','m--','k--','w--']\n", "while (notconverge==1 and count < 6):\n", " funval = f(xvals[count])\n", " slope = s(xvals[count])\n", " \n", " intercept=-slope*xvals[count]+funval\n", "\n", " plt.plot(t, slope*t + intercept, cols[count])\n", " nextval = -intercept/slope\n", " if abs(funval) < 0.01:\n", " notconverge = 0\n", " else:\n", " xvals.append(nextval)\n", " count = count+1\n", "\n", "plt.show()\n", "xvals[count-1]" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "0.9991912395651094" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p1=plt.plot(x, f(x))\n", "plt.xlim(-4, 5)\n", "plt.ylim(-20, 22)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title('Basin of Attraction')\n", "t = np.arange(-5, 5., 0.1)\n", "\n", "x0=2.349\n", "xvals = []\n", "xvals.append(x0)\n", "notconverge = 1\n", "count = 0\n", "cols=['r--','b--','g--','y--','c--','m--','k--','w--']\n", "while (notconverge==1 and count < 6):\n", " funval = f(xvals[count])\n", " slope = s(xvals[count])\n", " \n", " intercept=-slope*xvals[count]+funval\n", "\n", " plt.plot(t, slope*t + intercept, cols[count])\n", " nextval = -intercept/slope\n", " if abs(funval) < 0.01:\n", " notconverge = 0\n", " else:\n", " xvals.append(nextval)\n", " count = count+1\n", "\n", "plt.show()\n", "xvals[count-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Convergence Rate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "The following is a derivation of the convergence rate of the NR method:\n", "\n", "\n", "Suppose $x_k \\; \\rightarrow \\; x^*$ and $g'(x^*) \\neq 0$. Then we may write:\n", "\n", "$$x_k = x^* + \\epsilon_k$$.\n", "\n", "Now expand $g$ at $x^*$:\n", "\n", "$$g(x_k) = g(x^*) + g'(x^*)\\epsilon_k + \\frac12 g''(x^*)\\epsilon_k^2 + ...$$\n", "$$g'(x_k)=g'(x^*) + g''(x^*)\\epsilon_k$$\n", "\n", "We have that\n", "\n", "\n", "\\begin{eqnarray}\n", "\\epsilon_{k+1} &=& \\epsilon_k + \\left(x_{k-1}-x_k\\right)\\\\\n", "&=& \\epsilon_k -\\frac{g(x_k)}{g'(x_k)}\\\\\n", "&\\approx & \\frac{g'(x^*)\\epsilon_k + \\frac12g''(x^*)\\epsilon_k^2}{g'(x^*)+g''(x^*)\\epsilon_k}\\\\\n", "&\\approx & \\frac{g''(x^*)}{2g'(x^*)}\\epsilon_k^2\n", "\\end{eqnarray}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gauss-Newton" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For 1D, the Newton method is\n", "\n", "\\begin{align}\n", "x_{n+1} = x_n - \\frac{f(x_n)}{f'(x_n)}\n", "\\end{align}\n", "\n", "We can generalize to $k$ dimensions by \n", "\n", "\\begin{align}\n", "x_{n+1} = x_n - J^{-1} f(x_n)\n", "\\end{align}\n", "\n", "where $x$ and $f(x)$ are now vectors, and $J^{-1}$ is the inverse Jacobian matrix. In general, the Jacobian is not a square matrix, and we use the generalized inverse $(J^TJ)^{-1}J^T$ instead, giving\n", "\n", "\\begin{align}\n", "x_{n+1} = x_n - (J^TJ)^{-1}J^T f(x_n)\n", "\\end{align}\n", "\n", "In multivariate nonlinear estimation problems, we can find the vector of parameters $\\beta$ by minimizing the residuals $r(\\beta)$, \n", "\n", "\\begin{align}\n", "\\beta_{n+1} = \\beta_n - (J^TJ)^{-1}J^T r(\\beta_n)\n", "\\end{align}\n", "\n", "where the entries of the Jacobian matrix $J$ are\n", "\n", "\\begin{align}\n", "J_{ij} = \\frac{\\partial r_i(\\beta)}{\\partial \\beta_j}\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inverse Quadratic Interpolation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Inverse quadratic interpolation is a type of polynomial interpolation. Polynomial interpolation simply means we find the polynomial of least degree that fits a set of points. In quadratic interpolation, we use three points, and find the quadratic polynomial that passes through those three points. \n", "\n" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1.18481848 -1.18481848]\n" ] }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "def f(x):\n", " return (x - 2) * x * (x + 2)**2\n", "\n", "\n", "x = np.arange(-5,5, 0.1);\n", "plt.plot(x, f(x))\n", "plt.xlim(-3.5, 0.5)\n", "plt.ylim(-5, 16)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title(\"Quadratic Interpolation\")\n", "\n", "#First Interpolation\n", "x0=np.array([-3,-2.5,-1.0])\n", "y0=f(x0)\n", "f2 = interp1d(x0, y0,kind='quadratic')\n", "\n", "#Plot parabola\n", "xs = np.linspace(-3, -1, num=10000, endpoint=True)\n", "plt.plot(xs, f2(xs))\n", "\n", "#Plot first triplet\n", "plt.plot(x0, f(x0),'ro');\n", "plt.scatter(x0, f(x0), s=50, c='yellow');\n", "\n", "#New x value\n", "xnew=xs[np.where(abs(f2(xs))==min(abs(f2(xs))))]\n", "\n", "plt.scatter(np.append(xnew,xnew), np.append(0,f(xnew)), c='black');\n", "\n", "#New triplet\n", "x1=np.append([-3,-2.5],xnew)\n", "y1=f(x1)\n", "f2 = interp1d(x1, y1,kind='quadratic')\n", "\n", "#New Parabola\n", "xs = np.linspace(min(x1), max(x1), num=100, endpoint=True)\n", "plt.plot(xs, f2(xs))\n", "\n", "xnew=xs[np.where(abs(f2(xs))==min(abs(f2(xs))))]\n", "plt.scatter(np.append(xnew,xnew), np.append(0,f(xnew)), c='green');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So that's the idea behind quadratic interpolation. Use a quadratic approximation, find the zero of interest, use that as a new point for the next quadratic approximation.\n", "\n", "\n", "Inverse quadratic interpolation means we do quadratic interpolation on the *inverse function*. So, if we are looking for a root of $f$, we approximate $f^{-1}(x)$ using quadratic interpolation. Note that the secant method can be viewed as a *linear* interpolation on the inverse of $f$. We can write:\n", "\n", "$$f^{-1}(y) = \\frac{(y-f(x_n))(y-f(x_{n-1}))}{(f(x_{n-2})-f(x_{n-1}))(f(x_{n-2})-f(x_{n}))}x_{n-2} + \\frac{(y-f(x_n))(y-f(x_{n-2}))}{(f(x_{n-1})-f(x_{n-2}))(f(x_{n-1})-f(x_{n}))}x_{n-1} + \\frac{(y-f(x_{n-2}))(y-f(x_{n-1}))}{(f(x_{n})-f(x_{n-2}))(f(x_{n})-f(x_{n-1}))}x_{n-1}$$\n", "\n", "We use the above formula to find the next guess $x_{n+1}$ for a zero of $f$ (so $y=0$):\n", "\n", "$$x_{n+1} = \\frac{f(x_n)f(x_{n-1})}{(f(x_{n-2})-f(x_{n-1}))(f(x_{n-2})-f(x_{n}))}x_{n-2} + \\frac{f(x_n)f(x_{n-2})}{(f(x_{n-1})-f(x_{n-2}))(f(x_{n-1})-f(x_{n}))}x_{n-1} + \\frac{f(x_{n-2})f(x_{n-1})}{(f(x_{n})-f(x_{n-2}))(f(x_{n})-f(x_{n-1}))}x_{n}$$\n", "\n", "We aren't so much interested in deriving this as we are understanding the procedure:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 120, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(-5,5, 0.1);\n", "plt.plot(x, f(x))\n", "plt.xlim(-3.5, 0.5)\n", "plt.ylim(-5, 16)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "plt.title(\"Inverse Quadratic Interpolation\")\n", "\n", "#First Interpolation\n", "x0=np.array([-3,-2.5,1])\n", "y0=f(x0)\n", "f2 = interp1d(y0, x0,kind='quadratic')\n", "\n", "#Plot parabola\n", "xs = np.linspace(min(f(x0)), max(f(x0)), num=10000, endpoint=True)\n", "plt.plot(f2(xs), xs)\n", "\n", "#Plot first triplet\n", "plt.plot(x0, f(x0),'ro');\n", "plt.scatter(x0, f(x0), s=50, c='yellow');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convergence rate is approximately $1.8$. The advantage of the inverse method is that we will *always* have a real root (the parabola will always cross the x-axis). A serious disadvantage is that the initial points must be very close to the root or the method may not converge.\n", "\n", "That is why it is usually used in conjunction with other methods.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Brent's Method" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Brent's method is a combination of bisection, secant and inverse quadratic interpolation. Like bisection, it is a 'bracketed' method (starts with points $(a,b)$ such that $f(a)f(b)<0$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Roughly speaking, the method begins by using the secant method to obtain a third point $c$, then uses inverse quadratic interpolation to generate the next possible root. Without going into too much detail, the algorithm attempts to assess when interpolation will go awry, and if so, performs a bisection step. Also, it has certain criteria to reject an iterate. If that happens, the next step will be linear interpolation (secant method). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### The Brent method is the default method that scypy uses to minimize a univariate function:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.2807764040333458" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.optimize import minimize_scalar\n", "\n", "def f(x):\n", " return (x - 2) * x * (x + 2)**2\n", "\n", "res = minimize_scalar(f)\n", "res.x" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(-5,5, 0.1);\n", "p1=plt.plot(x, f(x))\n", "plt.xlim(-4, 4)\n", "plt.ylim(-10, 20)\n", "plt.xlabel('x')\n", "plt.axhline(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To find zeroes, use \n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "-7.864845203343107e-19" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.optimize.brentq(f,-1,.5)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.optimize.brentq(f,.5,3)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "-2.0000000172499592" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.optimize.newton(f,-3)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }