{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Finding Roots of Equations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculus review" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "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" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Let's review the theory of optimization for multivariate functions. Recall that in the single-variable case, extreme values (local extrema) occur at points where the first derivative is zero, however, the vanishing of the first derivative is not a sufficient condition for a local max or min. Generally, we apply the second derivative test to determine whether a candidate point is a max or min (sometimes it fails - if the second derivative either does not exist or is zero). In the multivariate case, the first and second derivatives are *matrices*. In the case of a scalar-valued function on $\\mathbb{R}^n$, the first derivative is an $n\\times 1$ vector called the *gradient* (denoted $\\nabla f$). The second derivative is an $n\\times n$ matrix called the *Hessian* (denoted $H$)\n", "\n", "Just to remind you, the gradient and Hessian are given by:\n", "\n", "$$\\nabla f(x) = \\left(\\begin{matrix}\\frac{\\partial f}{\\partial x_1}\\\\ \\vdots \\\\\\frac{\\partial f}{\\partial x_n}\\end{matrix}\\right)$$\n", "\n", "\n", "$$H = \\left(\\begin{matrix}\n", " \\dfrac{\\partial^2 f}{\\partial x_1^2} & \\dfrac{\\partial^2 f}{\\partial x_1\\,\\partial x_2} & \\cdots & \\dfrac{\\partial^2 f}{\\partial x_1\\,\\partial x_n} \\\\[2.2ex]\n", " \\dfrac{\\partial^2 f}{\\partial x_2\\,\\partial x_1} & \\dfrac{\\partial^2 f}{\\partial x_2^2} & \\cdots & \\dfrac{\\partial^2 f}{\\partial x_2\\,\\partial x_n} \\\\[2.2ex]\n", " \\vdots & \\vdots & \\ddots & \\vdots \\\\[2.2ex]\n", " \\dfrac{\\partial^2 f}{\\partial x_n\\,\\partial x_1} & \\dfrac{\\partial^2 f}{\\partial x_n\\,\\partial x_2} & \\cdots & \\dfrac{\\partial^2 f}{\\partial x_n^2}\n", "\\end{matrix}\\right)$$\n", "\n", "One of the first things to note about the Hessian - it's symmetric. This structure leads to some useful properties in terms of interpreting critical points.\n", "\n", "The multivariate analog of the test for a local max or min turns out to be a statement about the gradient and the Hessian matrix. Specifically, a function $f:\\mathbb{R}^n\\rightarrow \\mathbb{R}$ has a critical point at $x$ if $\\nabla f(x) = 0$ (where zero is the zero vector!). Furthermore, the second derivative test at a critical point is as follows:\n", "\n", "* If $H(x)$ is positive-definite ($\\iff$ it has all positive eigenvalues), $f$ has a local minimum at $x$\n", "* If $H(x)$ is negative-definite ($\\iff$ it has all negative eigenvalues), $f$ has a local maximum at $x$\n", "* If $H(x)$ has both positive and negative eigenvalues, $f$ has a saddle point at $x$.\n", "\n", "If you have $m$ equations with $n$ variables, then the $m \\times n$ matrix of first partial derivatives is known as the Jacobian $J(x)$. For example, for two equations $f(x, y)$ and $g(x, y)$, we have\n", "\n", "$$\n", "J(x) = \\begin{bmatrix}\n", "\\frac{\\delta f}{\\delta x} & \\frac{\\delta f}{\\delta y} \\\\\n", "\\frac{\\delta g}{\\delta x} & \\frac{\\delta g}{\\delta y} \n", "\\end{bmatrix}\n", "$$\n", "\n", "We can now express the multivariate form of Taylor polynomials in a familiar format.\n", "\n", "$$\n", "f(x + \\delta x) = f(x) + \\delta x \\cdot J(x) + \\frac{1}{2} \\delta x^T H(x) \\delta x + \\mathcal{O}(\\delta x^3)\n", "$$" ] }, { "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 zeros 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 continuous, 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": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ncTzwdqlumwAAAABJRU5ErkJggg==\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)\n", "pass" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "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)\n", "pass" ] }, { "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": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\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$) however, the trade-off is that the secant method is not guaranteed to find a root in the brackets.\n", "\n", "A variant of the secant method is known as the **method of false positions**. Conceptually it is identical to the secant method, except that instead of always using the last two values of $x$ for linear interpolation, it chooses the two most recent values that maintain the bracket property (i.e $f(a) f(b) < 0$). It is slower than the secant, but like the bisection, is safe." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Newton-Raphson Method" ] }, { "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 iterative procedure with:\n", "\n", "$$\\theta_n = \\theta_{n-1} - \\frac{g(\\theta_{n-1})}{g'(\\theta_{n-1})}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example\n", "\n", "Let $$g(x) = \\frac{x^3-2x+7}{x^4+2}$$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "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", "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": 6, "metadata": {}, "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", "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" ] }, { "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": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.007591996330867034" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "funval" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In fact, the Newton-Raphson method converges quadratically. However, NR (and the secant method) have a fatal flaw:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nrkJggg==\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('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" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have stumbled on the horizontal asymptote. The algorithm fails to converge. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Convergence Rate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "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", "x_{n+1} = x_n - \\frac{f(x_n)}{f'(x_n)}\n", "$$\n", "\n", "We can generalize to $k$ dimensions by \n", "$$\n", "x_{n+1} = x_n - J^{-1} f(x_n)\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", "x_{n+1} = x_n - (J^TJ)^{-1}J^T f(x_n)\n", "$$\n", "\n", "In multivariate nonlinear estimation problems, we can find the vector of parameters $\\beta$ by minimizing the residuals $r(\\beta)$, \n", "$$\n", "\\beta_{n+1} = \\beta_n - (J^TJ)^{-1}J^T r(\\beta_n)\n", "$$\n", "where the entries of the Jacobian matrix $J$ are\n", "$$\n", "J_{ij} = \\frac{\\partial r_i(\\beta)}{\\partial \\beta_j}\n", "$$" ] }, { "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. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEWCAYAAABmE+CbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VFX6wPHvO5NGKkkIIQRI6L2H3kQRURHFrliQxVjW\nrru6sv7cVVnL6tqwIXaxLxYQEMRCLwHpnYSakAaE9Hp+f8zgBkxIm+ROkvfzPPNk5pZz35kk9517\nzrnniDEGpZRSymZ1AEoppdyDJgSllFKAJgSllFJOmhCUUkoBmhCUUko5aUJQSikFaEJQbkhEokXE\niIiHC8t8VERmuao8dyQi74vIUzXYP0tE2rkyJlW/aEJQlSIik0Vki4jkiMhREXldRIKsjqssInKO\niBwuvcwY8y9jzNRqlPWLiFRqv5qekOtSWe/LGONvjIm3KiZlPU0IqkIi8iDwLPAXIAgYDEQDi0TE\ns45jERFpkH+3rrwiUqo6GuQ/lnIdEQkE/gncbYxZaIwpNMbsB64G2gHXO7c77dvxmd/SReQREdkn\nIpkisl1EJpZaZxeR50UkTUTigYvPiOEXEZkuIiuAHKCdiNwiIjuc5cWLyG3Obf2ABUBLZxVIloi0\nFJF/iMjHpcocLiIrReSEiBwSkcmV+CzOEZHDIvKgiKSISJKI3OJcFwtMAv7qPOZc5/KWIvJfEUkV\nkQQRuadUef8Qka9E5GMROQlMLrXsc+d72yAivUvt09X5eZwQkW0iMqGcWINFZJ7zuMedz1s5100H\nRgAznLHOcC43ItLB+TxIRD507n9ARP5+KhE7rxaXO39nx53v68KKPj/l/jQhqIoMBXyAOaUXGmOy\ngPnA2EqWsw/HSSgIR4L5WEQinOtuBcYDfYEY4Moy9r8RiAUCgANAinOfQOAW4EUR6WeMyQYuBBKd\nVSD+xpjE0gWJSBSOpPEqEAb0ATZW8n20cL6HSOBPwGsiEmyMmQnMBp5zHvMS5wl0LrDJuf15wH0i\nckGp8i4FvgKaOvc/texLIAT4BPhGRDydV2NzgUVAc+BuYLaIdC4jThvwHhAFtAFygRkAxphpwDLg\nLmesd5Wx/6vO99kOGAXchONzPmUQsAtoBjwHvCMiUtGHp9ybJgRVkWZAmjGmqIx1SThOqBUyxnxp\njEk0xpQYYz4H9gADnauvBl4yxhwyxhwDni6jiPeNMduMMUXOq5TvjTH7jMOvOE6SIyr5nq4HfjTG\nfOosK90YU9mEUAg84dxvPpAFlHVCBhgAhBljnjDGFDjr598Gri21zSpjzDfOzyXXuWy9MeYrY0wh\n8B8cCXmw8+EPPOMs7ydgHnDdmQd2vqf/GmNyjDGZwHQcJ/YKiYjdGePfjDGZzivCF3Ak5VMOGGPe\nNsYUAx8AEUB4ZcpX7kvrLFVF0oBmIuJRRlKIcK6vkIjcBDyAo+0BHCe2Zs7nLYFDpTY/UEYRpdfj\nrKJ4HOiE44uNL7ClMrEArXFcsVRH+hmfQw6O91KWKBxVVydKLbPj+HZ+yiH+6PdlxpgSZ9Vby1Pr\njDElpbY9gOPq4zQi4gu8CIwDgp2LA0TE7jyJn00zwJPTfw9nHudoqRhznBcH5X0Oqp7QKwRVkVVA\nPnB56YUi4o+jauYX56JsHCflU1qU2jYKxzfju4BQY0xTYCtwqoohCcdJ+pQ2ZcTx+7C8IuIN/Bd4\nHgh3lje/VHkVDeF7CGhfwTbVceZxDwEJxpimpR4BxpiLzrIPlPosnNVOrYBE56P1GY3qbYAjZZTx\nII4rl0HGmEBg5Kkiz3LcU9JwXAlFVeI4qgHRhKDOyhiTgaPO/1URGeesy44GvsBx4jhV770RuEhE\nQkSkBXBfqWL8cJyAUgGcDbE9Sq3/ArhHRFqJSDDwSAVheQHezvKKnFcLpdsykoFQKb9b7GxgjIhc\nLSIeIhIqIn0qOGZlJOOocz9lLZApIg+LSBNn43kPERlQQTn9ReRycfQ6ug9HQl4NrMFxRfJX5+/h\nHOAS4LMyygjA0W5wQkRCcFxNnS3W3zmvIL4ApotIgDOhPwB8XNb2quHQhKAqZIx5DngUxzfyTCAB\nx9XAGGcjLsBHOBpP9+Ooz/+81P7bcdRBr8JxIuoJrCh1iLeBH5z7b+CMBuwy4skE7sFx0jqOo03g\nu1LrdwKfAvHO3jgtz9j/IHARjm/Rx3Aks97U3DtAN+cxv3GeWMfjaLROwJFAZ+ForD2bb4FrnO/t\nRuByZ5tFAY4EcKGzrNeBm5zv90wvAU2c260GFp6x/mXgSmcvoVfK2P9uHFd98cByHI3b71YQt6rn\nRCfIUVXl/Ib/BDDMeXJVLiIi/wA6GGNusDoW1fhoo7KqMmPMeyJShKNLqiYEpRoITQiqWowxH1kd\ng1LKtbTKSCmlFKCNykoppZzcusqoWbNmJjo62uow/iAjt5CDx3Lo0NyfJp52q8NRSqnfrV+/Ps0Y\nU6kRBM7k1gkhOjqauLg4q8P4g4S0bEY//wv/d0VPrhlQ1j1USillDREp607/StEqo2qICvHF39uD\nrUdOWh2KUkq5jCaEarDZhG4tA9mamGF1KEop5TKaEKqpR8sgdiSdpKi4pOKNlVKqHtCEUE09IgPJ\nKywhPi274o2VUqoe0IRQTT0iHcPRbD2i1UZKqYZBE0I1tWtm8PE0bD3yPY7xyjKtDkkppWqk0glB\nRN51ziO7tdSyf4jIERHZ6HxcVM6+40Rkl4jsFZGKhjauB5bj8Vlzlr52E3+fcDtEx8LsMByDQiql\nVP1UlSuE93HMvnSmF40xfZyP+WeudE7H9xqOIXu7AdeJSLfqBOseMmH2GIjNp/nx4xwPsGMOGIjN\ndywny+oAlVKqWiqdEIwxS3GMHV9VA4G9xph453jun+GYRLye+hymFUAOfD84iHNe7crBcC/HtCXT\nCig1DYBSStUrrmhDuEtENjurlILLWB/J6fPGHqaMOWBPEZFYEYkTkbjU1FQXhOdqe+CgY0DA7gmO\nOdHXdPNzrDpogL0WxaWUUjVT04TwBo65afvgmBf3hZoGZIyZaYyJMcbEhIVVaziOWtYR2jimpY1K\nLiA8vZDV3Zxzi7cRoIN1oSmlVA3UKCEYY5KNMcXGmBIc0yAOLGOzI5w+gXor6vVk3dfAdC/wdcxW\nPnh7Fmu7+lHih2M511gcn1JKVU+NEoKIRJR6ORHYWsZm64COItJWRLyAayk1/239EwCTfoSZ3hAl\nDNqRRYa/BxufCnUsx9/qAJVSqlqq0u30UxyTpHcWkcMi8ifgORHZIiKbgdHA/c5tW4rIfABjTBFw\nF45J1HcAXxhjtrn4fdSx4TApDfa/TZM3bgXgp7DRjuVKKVVPVXr4a2PMdWUsfqecbROBi0q9ng/8\noUtq/eYP/InhXYuJXLOQLQXamKyUqt/0TuUa8vG0E1nUgu0eBRRku2OvKKWUqhxNCC4QGTiMPJuN\ndZtnWx2KUkpVmyYEF4jpfi12Y1i6d5HVoSilVLVpQnCBoR3a0jrPk9/yDlodilJKVZsmBBdo5u9N\nSGEbdnlCRnJZPW+VUsr9aUJwkbCm51Eiwppt2o6glKqfNCG4SL9OF+NbYlh2aIXVoSilVLVoQnCR\ngW3DaZXjx7qiNCgptjocpZSqMk0ILtI+zA/P/I4c8bBzaO8PVoejlFJVpgnBRUSEwKYXA7By1xyL\no1FKqarThOBCfdsNoFkhrEjbZHUoSilVZZoQXGhAdAhhOSGsI4ei3ONWh6OUUlWiCcGFerYKIien\nJ1k2G1u2aPdTpVT9ognBhbw97PgEjsdmDCsTtGFZKVW/aEJwsf5to2id78WKzAQwxupwlFKq0jQh\nuFhMVAhe2a3Z5gEZR+KsDkcppSqtKjOmvSsiKSKytdSyf4vIThHZLCJfi0jTcvbd75xZbaOINOiz\nZP+oYA5lDqZEhNU6jIVSqh6pyhXC+8C4M5YtBnoYY3oBu4G/nWX/0caYPsaYmKqFWL+E+HkR4D8Q\nvxJYeXSN1eEopVSlVTohGGOWAsfOWLbIOWcywGqglQtjq7cGRIXRMjeI5UUZmLyTVoejlFKV4so2\nhCnAgnLWGWCRiKwXkVgXHtMtxUQHk53ZlRQPO3u3f2l1OEopVSkuSQgiMg0oAsqrNB9ujOkHXAj8\nWURGnqWsWBGJE5G41NT6OUdxTHQI8ZkjAFixd57F0SilVOXUOCGIyGRgPDDJmLL7WRpjjjh/pgBf\nAwPLK88YM9MYE2OMiQkLC6tpeJaIDvUl0DuCVkWeLD+5V7ufKqXqhRolBBEZB/wVmGCMySlnGz8R\nCTj1HBgLNOhpxUSE/lHBBOa2YoOHIeeojm2klHJ/Vel2+imwCugsIodF5E/ADCAAWOzsUvqmc9uW\nIjLfuWs4sFxENgFrge+NMQtd+i7c0IDoEOKPDaBQhDVbPrY6HKWUqpBHZTc0xlxXxuJ3ytk2EbjI\n+Twe6F2t6Oqx/tHBpOb2Itx8wfKklYy2OiCllKqA3qlcS3q0DMLb7kXH4hCWF53A5GVaHZJSSp2V\nJoRa4uVho3frppDXg0QPOwk7/2t1SEopdVaaEGpRTFQwccmDAFi25zuLo1FKqbPThFCLYqKDySsI\npa3xYlnGHu1+qpRya5oQalG/NsEAtLV1ZL2HIStxvcURKaVU+TQh1KKmvl50iwjkaM5QikRYs+VD\nq0NSSqlyaUKoZSM7hbH+YFv8jbAsabXV4SilVLk0IdSyUZ3CKCqx0csjgmUlmZis+jk+k1Kq4dOE\nUMv6RwXj52XH2wwgxcODnZs/sjokpZQqkyaEWublYWNI+1DWH41BjOHXhPJGCFdKKWtpQqgDIzuF\ncSTdk672QJblHIaiAqtDUkqpP9CEUAdGdnQM4x3l1YstnnbS9syvYA+llKp7mhDqQHQzP9qE+JKY\nPQojwrIdX1gdklJK/YEmhDoyqlMY6xOa0hwPlqZv0buWlVJuRxNCHRnZKYzcwhL6+nRkpUcJBUe3\nWB2SUkqdRhNCHRnSPhQPmyD2UeTYbMRt/sDqkJRS6jSaEOqIv7cH/aOC2XKkCz4GfklcbnVISil1\nmiolBBF5V0RSRGRrqWUhIrJYRPY4fwaXs+/Nzm32iMjNNQ28PhrZKYydSXkM8GnJr8UnMVlpVoek\nlFK/q+oVwvvAuDOWPQIsMcZ0BJY4X59GREKAx4FBwEDg8fISR0M2qpOj+2mk7zASPT3YvWW2xREp\npdT/VCkhGGOWAsfOWHwpcKpC/APgsjJ2vQBYbIw5Zow5Dizmj4mlwesWEUgzfy8OZw1HjOGX+HlW\nh6SUUr9zRRtCuDEmyfn8KBBexjaRwKFSrw87l/2BiMSKSJyIxKWmNqyB4Gw2YUTHMNbsK6anZ1N+\nzjkEhblWh6WUUoCLG5WNMQaoUQd7Y8xMY0yMMSYmLCzMRZG5j5GdmnEsu4DeTQezzcuT5B1fWx2S\nUkoBrkkIySISAeD8mVLGNkeA1qVet3Iua3RGOIexKLBdAMCvO760MhyllPqdKxLCd8CpXkM3A9+W\nsc0PwFgRCXY2Jo91Lmt0mvl7071lIJsO+NFGfPgpYycUF1kdllJKVbnb6afAKqCziBwWkT8BzwDn\ni8geYIzzNSISIyKzAIwxx4AngXXOxxPOZY3SyE5h/HbwBCOb9WeNl52s+CVWh6SUUlXuZXSdMSbC\nGONpjGlljHnHGJNujDnPGNPRGDPm1IneGBNnjJlaat93jTEdnI/3XP1G6hPHLGqG4KBLKBJh+daP\nrQ5JKaX0TmUr9GvjmEUtIbkVIdj5KfU3HexOKWU5TQgWcMyi1oxle9IZFdydpZ6GgiPrrA5LKdXI\naUKwyKhOzTh8PJcerSeSbbOxZuP7VoeklGrkNCFYZKRzGIuTWT3xNcKSo6ssjkgp1dhpQrBIVKgf\nUaG+rNx3khGB7fnZlk9x2m6rw1JKNWKaECw0qlMYq/alM6rj5Ryz29n427tWh6SUasQ0IVhoZMcw\ncguL8fMchaeBJYd+tjokpVQjpgnBQkPah+JpF9bEZzPEN5IlJScxGYlWh6WUaqQ0IVjIzzmL2q+7\nUxnT4TISPT3Y/tssq8NSSjVSmhAsNqZrODuPZtKhxQQ8DCxOWGh1SEqpRkoTgsUu6hkBwK87sxnQ\nJILFxce02kgpZQlNCBZr2bQJ/aOCmbc5iTEdLuGgpye7NzbqoZ6UUhbRhOAGxveKYOfRTNo1vxSb\ngcXx31sdklKqEdKE4AYu6hmBCCzflUeMTziLio5hTiZVvKNSSrmQJgQ3EB7ow4DoEOZtTuL89peQ\n4OXJXh3bSClVxzQhuIlLekWwNyWLqOYTEAOL4udZHZJSqpHRhOAmxvWIwCawclcB/X2as6gwXauN\nlFJ1qsYJQUQ6i8jGUo+TInLfGducIyIZpbb5v5oet6EJC/BmSPtQ5m1O4oL2E4jXaiOlVB2rcUIw\nxuwyxvQxxvQB+gM5wNdlbLrs1HbGmCdqetyG6OKeLUlIy6ZV6ARsBhZqtZFSqg65usroPGCfMeaA\ni8ttFMb1aIHdJizflc8An3CtNlJK1SlXJ4RrgU/LWTdERDaJyAIR6V5eASISKyJxIhKXmprq4vDc\nW4ifF8M6NGPe5kQu6DCB/V6e7NQhsZVSdcRlCUFEvIAJwJdlrN4ARBljegOvAt+UV44xZqYxJsYY\nExMWFuaq8OqN8b0iOHw8lxbBE7BrtZFSqg658grhQmCDMSb5zBXGmJPGmCzn8/mAp4g0c+GxG4wL\nurXA0y4s3ZnDYN9IFhafwBzXGjilVO1zZUK4jnKqi0SkhYiI8/lA53HTXXjsBiPI15MRHcP4fnMS\n4zpdSaKnB5vXv2l1WEqpRsAlCUFE/IDzgTmllt0uIrc7X14JbBWRTcArwLXGGOOKYzdE43tFkJiR\nR2jAWLwMLNi/yOqQlFKNgIcrCjHGZAOhZyx7s9TzGcAMVxyrMTi/WzheHjaWbMtkREA7Fp7Yw1+O\nbsXeoofVoSmlGjC9U9kNBfh4ck6nMOZvSWJctxtI97Czdv0bVoellGrgNCG4qfG9W5KSmY+fxzD8\nEOYfWQpay6aUqkWaENzUeV2a4+NpY9G2Y5wX3IMfPUvIP7DS6rCUUg2YJgQ35eftwbldmrNgaxIX\n9ryFLJuNX3/T3kZKqdqjCcGNje/VkrSsAkqKetEMD75PXQ/FRVaHpZRqoDQhuLHRnZvj62VnwZZk\nLgwfxFIvGxm751sdllKqgdKE4MaaeNkZ0zWcBVuPMq53LEUiLNr8ntVhKaUaKE0Ibu7iXhGcyCkk\n5XhL2tl8mZexAwpyrA5LKdUAaUJwc6M7NycswJuP1xzkkqjz2eDtyaFNH1kdllKqAdKE4Oa8PGxc\nP7ANv+xKpVf0zYiBedtnWx2WUqoB0oRQD0wa1AYPm/DD5kIG+oQztzAFc+Kw1WEppRoYTQj1QPNA\nHy7sGcEXcYe4oNPVHPL0ZOO6V60OSynVwGhCqCduHhJFZl4RWfkjaWKEb/f/oENZKKVcShNCPdE/\nKphuEYF8tjqF84O7sdCjkNyDq6wOSynVgGhCqCdEhMlDo9mVnEnXiElk22wsidMRxZVSrqMJoR6Z\n0KclTX09WbG7BZHizTfpv0FRvtVhKaUaCE0I9YiPp51rYlqzaHsqY8NHstbLzpHNn1gdllKqgXBZ\nQhCR/SKyRUQ2ikhcGetFRF4Rkb0isllE+rnq2I3JDYOjKDGGzKJLAfh224cWR6SUaihcfYUw2hjT\nxxgTU8a6C4GOzkcsoFOAVUPrEF/O6xLOdxsKGOQdzjcFRynJPGp1WEqpBqAuq4wuBT40DquBpiIS\nUYfHbzBuHhpFenYBHYPGk+ThwepVL1gdklKqAXBlQjDAIhFZLyKxZayPBA6Ven3Yuew0IhIrInEi\nEpeamurC8BqOYe2b0S7Mj+UJfQkyNuYc0HsSlFI158qEMNwY0w9H1dCfRWRkdQoxxsw0xsQYY2LC\nwsJcGF7DYbMJNw2OYvOhbM4J6M0SzxKO7V5gdVhKqXrOZQnBGHPE+TMF+BoYeMYmR4DWpV63ci5T\n1XBF/1b4edk5ln8pRSLM3fC61SEppeo5lyQEEfETkYBTz4GxwNYzNvsOuMnZ22gwkGGMSXLF8Ruj\nAB9Prujfih+3+dLTHsR/s/dhstOtDkspVY+56gohHFguIpuAtcD3xpiFInK7iNzu3GY+EA/sBd4G\n7nTRsRutm4ZEUVBcQpTPWBI8PVi/5mWrQ1JK1WMerijEGBMP9C5j+Zulnhvgz644nnLo0DyAYR1C\n+WXvAAJafMWXCXOJMf8EEatDU0rVQ3qncj1305Bokk6UMNSnK4vthRyP/9nqkJRS9ZQmhHpuTNdw\nIps2YW/6eApF+CbuJatDUkrVU5oQ6jm7Tbh3TEc2Hgqhuwngi6y9lOSesDospVQ9pAmhAbiiXys6\nhftTlDGEwx52Vq5+3uqQlFL1kCaEBsBuEx4e14W4pBEEl8Dn8fP0zmWlVJVpQmggzu3SnIHR4bTI\nbM9SexFHdn1ndUhKqXpGE0IDISI8clEXNqdcigCfr3/V6pCUUvWMJoQGpF+bYEZ36UW77KbMyU8i\n7/h+q0NSStUjmhAamIcu6EzysbFk2G0sWP6U1eEopeoRTQgNTPswf0Z1v4yIfDsfJ6/CFBVYHZJS\nqp7QhNAA3TemE74Z/dntaSNu3Qyrw1FK1ROaEBqg5oE+DOt5N4HFhvd3fGJ1OMoSmcAs4GHnz8wq\nl5BbUExSRi5pWflk5xdRXKJdmRs6lwxup9zP7ed0Z9NbUSwLOsCh+CW0bnee1SGpOrMcZo+BaQVw\n0EAbgel3waQfgeEYY0g+mc/WIxkkpGWTlp3PsawC0rOdj6x8jmUXkFNQ/IeSvTxsNPG0Ox5ednw8\n7TQP8KZziwA6NvenU3gAHcP98fXSU0t9pL+1BirAx5OR3R5k25F7mLlsGk+2WwR0BK4BAiyOTtWe\nTEcyiM2HHOeiA4aiqYUs2Px3vur8L7YlZpOW9b+2JS+7jRA/L0L9vQjx86JtqC+h/t6E+HnR1NeT\n4hJDbkExeYUl5BYWk1dYTG5BMbmFxeQUFHPkRC6r4tMpKCr5vczWIU3o1DyAjuEBdGsZyMiOzWjq\n61XHn4WqKk0IDdjk0Z7EPSv8EJbJQ37PExRmTvumqBqizyl6pBiPnNOXeuSV0O/N7bz+RAqjO7el\nR2QQPSID6dA8gEAfD6SGQ6YXFZdw8FgOu5Oz2J2cye7kTPYkZ7F0TyqFxQa7TYiJCmZM13DGdAun\nbTO/Gh1P1Q4xbjzEQUxMjImLi7M6jHoqE2aHse1xG9c+1p77Pz/KlAVp4AvM9IZJaYC/1UEqFygs\nLmHd/mP8vDOFn3ZuY/FD12Djj//XRkBKHgGertPYth7JYMmOFH7ckczOo462jHZhfpzfNZzzuobT\nr01TPOzanOkqIrLeGBNTnX31CqHB+hymFdD9gGHQ9ixmjw3lxkXpeOYYR93ypM+BP1kdpKqmzLxC\nFm1L5qedKSzdnUpmfhFedhuD2tnJCffBPzn3D/tIGwE61GmcnnYbfdsE07dNMA9d0JlDx3JYsiOZ\nH3ek8O6KBN5aGk+wryeX92vF5KHRtA7xrdP41OlqnBBEpDXwIY5pNA0w0xjz8hnbnAN8CyQ4F80x\nxjxR02Ors9njaFAEbpmfxu0PRfP9kCAuW37CuXyvteGps5o9ezbTpk3j4MGDtGnThunTp3Pdddez\nKj6dL+MOsXDbUfIKS2ge4M1FPSM4t2tzhndohp93LhSWwD1AYakCfYHpXjjakKzTOsSXycPaMnlY\nW07mFbJ0dyoLthzl/ZX7eW9FAmO7teBPI9oSExVc42osVXWuuEIoAh40xmwQkQBgvYgsNsZsP2O7\nZcaY8S44nqqUjo7eJQcMQ7dm0elgLh+Ma8aEFSewWfBNUVXe7NmziY2NJSfH0RBwJCOf+95Zwr93\nBnKi0EaAjwdX9GvFFf1b0adVU2y20ifOAGg1ESZ8DWsL4PCpXkZezrYj96kmDPTxZHyvlozv1ZKk\njFw+XHWAT9YcZOG2o/SMDGLK8Ggu7tkSLw+tTqorLm9DEJFvgRnGmMWllp0DPFTVhKBtCDXhaEM4\n1dtk7pAgHr2tNf959TD9Yj0IjU3AnU4O6n+io6M5mJhM03MG0mxsEwpP3EhJYSBydCevPDCJsd3C\n8fG0l71zdhq82B16XQ4TYnBcCXbAcWXg/r/vnIIi5mw4wrsrEohPzaZ5gDc3DYni+kFRhPhpL6XK\nqEkbgksTgohEA0uBHsaYk6WWnwP8FzgMJOJIDtvKKSMWiAVo06ZN/wMHDrgsvsbnf/3RC48Yxj/X\niQDsFHu/wJe3XaANeW7o8PEcel1xN/69xuLbYQ52n30c+TCKrI2/UpJ1jJKSkrMX8Muz8Mu/4M9r\nIaxz3QRdC0pKDL/uSeXd5Qks25NGgLcHd5/XgclD2+oVQwXcIiGIiD/wKzDdGDPnjHWBQIkxJktE\nLgJeNsZ0rKhMvUJwhSzgc2Avn85bz7/Sk2h24DIuGXIjD5zfyergFGCMYcPB47y7fD8Ltx2luKiI\n/MSFNDt/GSnfpJDyTQoAUVFR7N+/v/yCCvPgpR7Qsi9M+rJugq8DO4+e5NkFO/l5VyrRob5Mu7gb\nY7o21zaGctQkIbgk1YqIJ44rgNlnJgMAY8xJY0yW8/l8wFNEmrni2Koi/jh6Ez3NxFEfEFJcQouW\ni5jx0x7WJhyzOrhGrbC4hO82JXLZ6yu54o1VLNuTytQRbflL1yy8A+dTnFdM+uJ0AHx9fZk+ffrZ\nC9z8OWSnwpC76iD6utOlRSDv3TKQ928ZgN0m3PphHDe+s5ZdR6s+HIc6O1f0MhLgHWCHMeY/5WzT\nAkg2xhgRGYgjEaXX9NiqanwCIrgpqDsvZe2gZ7Od3PeZDwvuHUmQr6fVoTVos7fMZtqSaRzMOEib\noDY8NnI6hZmD+WDlfpIy8mjbzI8nLu3OFf1a4eftwaGT/rxlCyR/ZT4lOSVERUUxffp0Jk2aVP5B\nSophxcvQohe0HVl3b64OndO5OcM6NOPj1Qd46cc9XPjyUq4f1IYHzu+s7QsuUuMqIxEZDiwDtgCn\nKjgfBdoKg3ZhAAAgAElEQVQAGGPeFJG7gDtw9EjKBR4wxqysqGytMnK97PR9jP12Aj08w1iy46+M\n7R7Oa9f308vvWjJ7y2xi58aSU5iDzQQQUDSBwKJLsOHP0Pah/Gl4W0Z3bn5aT6HHVz7OvH3zWHjF\nQsJ8wyp3oK3/ha+mwFUfQPfLaunduI/j2QW89ONuPl5zED8vO/eN6cTNQ6Ox2/Tv2C3aEGqDJoTa\n8cYXE3g9N4GbQv+P15b78uwVPblmQBurw2qQol+K5vCJkwQUTSSg6EJsNCHHthLf4KXs/8uyP2yf\nmJXIxXMu5qrOV/HooEcrdxBj4M3hUFwAd64BW+NpdN2dnMmT87azbE8aA6KD+c/VfRr9zW2WtyGo\n+mXSqKcIKCnhSNbbDG0fyj++286+1Cyrw2pwDh3LITP1YiLz3iGw6FJy7KtJ9L6TVO9/cTBnRZn7\nvLPlHRCY0mNK5Q+0+wdI3grDH2hUyQCgU3gAH04ZyIvX9GZnUiYXvryMORsO485fdN1Z4/rrUQAE\nhvfiBu9WLMlP4s/nFOHtaeOeT38jv+iPwx2rqotPzeLBLzYx+vlfCCgeS5b9JxK9byPd6wUKbQcB\naBP0xyuyxKxE5uydwxUdr6CFX4vKHcwYWPY8NG0DPa905duoN0SEiX1bMf/eEXSLCOSBLzZx16e/\ncSJHZwusKk0IjdQNI54goLiELzb+i+eu6MW2xJM88PkmCosr6OeuyrU3JYv7PvuNMf/5le+3JHLj\nkCj+OjGbPL93KbId/X07X09fpp/3xx5Db295G0GY2nNq5Q+asBQOr4Nh94K9cXcOaB3iy6exg/nr\nuM78sPUo415axoq9aVaHVa/o4HaNVGDrQdzoGc7rOYeIDTnMtIu6Mn3+DkqM4ZXr+uKpN61V2t6U\nTF5Zspe5mxPx8bAzdUQ7bh3RjrAAb6A7Qb7mtF5G08+bzqSep/cYOpx5mG/2fMOVna6s/NUBwLIX\nwL8F9LnBtW+qnrLbhDvP6cDIjmHc+9lvTJq1hqnD2/LQBZ3Lv7tb/U4blRuxrISljPv5dnr4t+HN\nqxcya1k8T32/g7HdwplxfT+9I7QCu5MzeWXJHr7fkkQTTzs3Doni1hHtaObvXeWypi2fxg/7f2D+\n5fNp7tu8cjsdWgfvjIGxT8HQu6t8zIYut6CYpxfs4MNVB+jSIoBXr+tLx/CGPzmUNiqravFvO5Ip\nHuGsyD3ChkPLmDqiHY9f0o1F25O5c/YGbVMox86jJ/nz7A1c8NJSft6Zwu2j2rP84XP524Vdq5UM\n4k/EMy9+Htd1ua7yyQAcQ1T4hkL/W6p8zMagiZedJy7twXuTB5CWVcDE11eyZEey1WG5NU0Ijdx1\n50wnrKiIl1Y8jjGGW4a15YlLu/PjjmTu/FiTQmmbD58g9sM4xr20jF93p3LnOY5E8PC4LjW6MWrG\nxhn42H2q1rPowCrY9xMMuw+83X/QOiuN7tKcuXcPo20zP6Z+GMcbv+zTXkjl0ITQyDVpM5TbvVrz\nW34qyxIWAnDTkGieuqwHS3amcPtH68krbNxJYd3+Y9z07lomzFjB6vh07j2vI8sfHs1fLuhCcA3v\nkN2cupnFBxYzucdkgn2CK7/jz9PBPxwGVKEBuhGLCGrCF7cN4eKeETy7cCcPfLGp0f9dl0UblRUT\nz32aDxZM4sXV0xkWPRa7zc4Ng6OwifDo11u47aP1vHVj/0bVKGeMYcXedF79aQ9rEo4R6ufFw+O6\ncMPgNgT4uKY3jzGGlza8RIhPCDd3u7nyO8b/CvuXwbhnwatx34RVFU287Lx6XV86hwfwwuLdJKRl\nM/PG/jQP9LE6NLehVwgKz8j+3NOkPXsLM/hux6e/L79+UBuevaInS/ekcuuHcY3iG1VJiWHx9mQu\ne30lN7yzhv3p2fzf+G4sf/hc7jinvcuSAcCyI8tYd3Qdt/W6DV/PSp7YjXFcHQRGQv/JLoulsRAR\n7j6vI2/e0J/dyZlMmLGCLYczrA7LbWhCUACMPfcZeuXlM+O3V8gpzPl9+TUD2vDcFb1YvjeN695e\nzd6UhnlHc05BER+tPsCYF3/l1g/jSM/KZ/rEHiz962imDG9LEy/XXh0VlRTxQtwLRAVGcVXnqyq/\n494lcGgNjHgQPPWbbXWN69GCr24fit0mXPXWSuZuSrQ6JLegCUEBIBE9eTCwJynFuXyw8fXT1l0V\n05oZ1/UjPjWbi15exqtL9lBQ1DBuYEs8kcszC3Yy5OmfeOybrfh7e/DytX34+aFzmDQoCm+P2qkm\nm7NnDvEZ8dzf/348bZW86jh1ddC0DfS9sVbiaky6tQzk27uG0TMyiLs//Y3/LN7d6Bub9T4E9T9p\ne3ngi3Es9/Nj7pWLCPcLP211amY+/5i7je83J9GlRQDPXtGL3q2bWhRszfx28DjvrtjP/C1JGGMY\n16MFU4a1pX8dTO6eWZDJ+K/HEx0Yzfvj3q/88bZ9DV9Ohktfg756I5qr5BcV8/evt/Ll+sNMGtSG\nJy/tccY81fVLTe5D0EZl9T/NOvBAq/P55dgyXln1FNPHvHra6rAAb167vh+X9Unm799sYeLrK5gy\nrC0PjO2Er5f7/yll5Rfxw9ajzF5zgA0HTxDg7cEtQ6O5eWh0nY6Q+damtzied5w3xrxR+WRQVAA/\n/hOad4fe19VugI2Mt4ed567sRai/N2/+uo+s/CKev6p3o7xb3/3/i1WdanXuP7np/aG8c+QXrk7d\nRO+w3n/Y5vxu4QxqF8KzC3Yya3kCP2w/ytMTezG8o/tNgldUXMKyvWl889sRfth2lLzCEqJCfXn8\nkm5cFdMaf++6/RfYn7Gf2Ttnc1mHy+gW2q3yO8a9C8cTYNJ/wdZ4envVFRHhkQu7ENjEg+cW7iI7\nv4gZ1/drVD3rQKuMVBlyfnqKSxJm0yy4PZ9c9i32s5yA1sSn87c5W4hPy+byfpFMHhpNz8ggSyfc\nMcawLfEkczYc4btNiaRl5RPUxJOLe0Vwed/IOqkWKi+uO368g02pm5g7cS7NmlQygeZlwMt9oEVP\nuOlb0MmMatVHqw/wf99uZXDbUN6+OabOvzTUlFYZKZfyHXYfD2z9iEc8DjBnz5yz9oIZ1C6U+feO\n4JUle5i1LIE5G47QtpkfE3q3ZEKflrQPq5u7aPMKi9l06ASr4tOZtzmJvSlZeNqFc7s0Z2LfVozu\nElZrDcSV9fOhn1mRuIKHBzxc+WQAsPxFyD0G5z+hyaAO3Dg4igBvDx78chOTZq3hg1sG0NS3cUzR\n6ZIrBBEZB7wM2IFZxphnzljvDXwI9Mcxl/I1xpj9FZWrVwjWMeveYcr6Z9jtH8zcKxcS4hNS4T4Z\nOYUs3JbEtxsTWRWfjjHQIzKQS3tHMr53BBFBTVwWX15hMRsOHGd1wjHWxKfz26ETFBSVIAL92wQz\nsV8kF/eMcIt/5FNzKnsHeGMXO4/EPMJNvW46+z6zZzNt2jRKThxi913+JAUPpO2Di+soYgXw4/Zk\n7vxkA21D/fjoTwPrzQ1slk6hKSJ2YDdwPnAYWAdcZ4zZXmqbO4FexpjbReRaYKIx5pqKytaEYKHi\nIva9NZgrffO5uP14nhrxdJV2Tz6Zx7zNSXy38QibDmcgAgOjQ+jTuinhgT60CPIhPNCHiCAfwgK8\ny2zAyy0oJi0rn5TMfNKyHI/Dx3OJ23+MjYdOUFhssAl0bxnEoLYhDG4XyoDoEIJ83WdegFNzKgf4\nBxAWFEZ8UjyUwMxLZv5hCOzf95k9m9jYWHJycvjwMh+u7u5J73eKeez5mUyaVPY+qnas3JfGrR/E\nEervzeypg+rF9JxWJ4QhwD+MMRc4X/8NwBjzdKltfnBus0pEPICjQJip4OAhUV3N+Y++W6P4VPX1\nzN+Av3mWd5oGEVXwIH4lnatVTl5hMenZBaRnFZBXWExZv3RPu+BltyEiFBaXUFhcQkk5fx1+3nYC\nfTwJ9PEkwMfDrSdWX3N4NYX2ZIKj55OX0Y6s5MEA+Ni9GdRqcNn7rFlNXl4+A3wOM7fNR7yYPpRn\n00fh4+PNoEFl76NqT1Z+ETuPZmIT6BYR6PYNzV/cPtTSNoRI4FCp14eBQeVtY4wpEpEMIBT4w3RG\nIhILxAL4R7R3QXiqurZ49+Ou411Z6HeQFI8PiCr4Jzaq/u3bx9NOZNMmRDZ1VBkVlRgKikocj+KS\n056XGIOftwdedsHTbvvfw+N/r9339P9HecW5NI1cjSn2IjutT6nl+eXvk5ePjRL+1XwRRwoDePXY\nkN+Xq7rn7+1B94hAtiedZHvSSbq3DMK7gc4V4oorhCuBccaYqc7XNwKDjDF3ldpmq3Obw87X+5zb\nnHV+O60ycgPH97Ny1nBuax7MrT1v5Z5+91gdUb3S8Y2O+Pj6cCj1EBnZ/xszJyooiv337S9zn+jo\naC5olshb45twzVc5fLGtyLFPVBT795e9j6p9O4+e5NqZq/H39uCL24bQsqnr2sRcyeoJco4ArUu9\nbuVcVuY2ziqjIByNy8rdBUcztP8dXJqZxbtb3mFb+jarI6o3Dp08RIB/ADl5Oaclg/LmVD7l3088\nyvRzffg5oej3ZODr68v06eXvo2pflxaBfDRlEBm5hVz/9mpSTuZZHZLLuSIhrAM6ikhbEfECrgW+\nO2Ob74BT4/teCfxUUfuBciPD7+cvhb6ElhgeW/4YBcUFVkfk9kpMCY+tfAwfuw8PxTxEVFAUghAV\nFHXWBmWAq0J3EeJr55lNIYgIUVFRzJypDcruoGerIN6/ZSApmflMmrWG9KyGVY3nqm6nFwEv4eh2\n+q4xZrqIPAHEGWO+ExEf4COgL3AMuNYYE19RuVpl5Ea2fcPSebfx5xbNmdpzKvf2u9fqiNzax9s/\n5tl1z/LE0CeY2HFi5Xc8vB5mnQcDY+Gi52ovQFUjq+PTmfzeWto28+fTWwe5RffmUyztZVSbNCG4\nEWPg02t5/MQGvvHz5YMLP6BP8z4V79cI7Tuxj6vnXs3QlkN55dxXKn9XdHEhzDwHco7Bn9eAT2Ct\nxqlqZunuVKZ+EEfXiAA+mjqIQBfOlVETVrchqMZABC56nr+cyCECG48se4SsgoY5N0JNFBQX8Ldl\nf8PP04/Hhz5etSEyVs2A5K1w0b81GdQDIzuF8fqkfmxLPMmU99aRnV9kdUg1pglBVV7T1vif+3ee\nSTzM0axEpq/RRs4zvbThJXYc28E/h/6zasNTpO+DX56BrpdA1/G1F6ByqTHdwnnlur5sOHicqR/U\n/1kFNSGoqhkYS5/Q7tyWVcC8+Hl8s/cbqyNyG0sPL+Wj7R9xbedrGd1mdOV3NAbm3Q92L7hQ2w3q\nm4t6RvDC1b1ZnZDOnbM3UFRcfyeP0oSgqsZmh0teITYthQH2QKavns7e43utjspySVlJPLr8UToF\nd+LBmAertvOGDyHhVxjzOAS2rJ0AVa2a2LcVT17ag592pjDt6631duY1TQiq6iJ6YR/5EM8mbMdX\n7Dzw6wNkF2ZbHZVlCooLeGjpQ455kke9gI9HFQZBO74ffngUokdA/ym1FqOqfTcMjuLuczvwedwh\nXvxxj9XhVIsmBFU9I/9CWPOePJ+SxsGTB3hsxWP19ltRTT2z9hk2p27mn0P/SXRQdOV3LCmBb+4E\nscFlb4BN/x3ruwfO78TVMa14ZckeZq85YHU4VaZ/gap67J4wcSYDsk5yv605iw8sZubmmVZHVee+\n2v0VX+7+kik9pnBB9AVV23n163BgBVz4LDRtXfH2yu2JCNMn9mR05zAe+2Yri7YdtTqkKtGEoKqv\neRc47/+4ae9aLmnanRkbZ7DkwBKro6oz646uY/rq6QxrOYx7+lZxjKeUHbDkCeh8sc6R3MB42m28\nNqkfPSODuPvT31h/4JjVIVWaJgRVM4PvRKKG8/i2ZfRq2pFHlj3C1rStVkdV6xIyErj/l/tpHdia\nf4/691mnGf2Dwlz4agp4B8AlL+ssaA2Qr5cH704eQESQD3/6II69KfXjnh1NCKpmbDa4fCbedi9e\nTkwi1CeEu5bcxeHMw1ZHVmvSc9O548c7sIud1859jQCvgKoVsOBhSNkOl78F/mG1E6SyXKi/Nx9O\nGYSHTbj53bUk14PB8DQhqJoLioTLZ9IseTuve7ShyBQRuziWtNyzjm5eL2UWZHLHj3eQnpvOjHNn\n0DqwinX/W76CDR/A8Aegw5jaCVK5jTahvrw3eSAncgqY/N46TuYVWh3SWWlCUK7R8XwYdi/tNn7B\na9FXkpabxm2LbyMjP6PifeuJ3KJc7v7pbvYc38OLo1+kZ1jPqhWQthfm3gutB8PoabUTpHI7PVsF\n8cYN/dmTnMntH62noMh9b1zThKBc59zHoPUgev/0b17q8yAJGQnctvg2MgsyrY6sxvKK8rj7p7v5\nLeU3/jXiXwyPHF61AvKz4IubHL2zrnwH7K6YrFDVFyM7hfHsFb1YuS+dv3+zxW27aGtCUK5j94Qr\n3wNPX4b++DQvDnmCXcd3ceuiW+v1lUJOYQ53/3Q3a5PW8uSwJ7mw7YVVK6CkBL6+DVJ3wJXvQlCr\n2glUubUr+rfi7nM78EXcYWYurXD0f0toQlCuFRQJ186Gk0cYtfJtXhr5AruP72bKD1NIzUm1Oroq\nO1lwkjt+vIO1R9fy1PCnmNB+QtULWfoc7JwHY5+C9ue6PkhVb9w/phMX94rgmYU7+cEN71HQhKBc\nr/VAGP8ixP/CqO2LmHHeDA5lHuLGBTdy4GT9uXszOTuZyQsnszltM8+NfK56yWD7d/DL09D7ehh8\np+uDVPWKzSa8cFVverVqyn2fbWTrEfe6ctaEoGpH3xscJ8A1bzD08DbeGfsOOYU5TJo/iXVH11kd\nXYW2pW/j+u+vJzErkTfGvFH1u5ABDq2DObEQGeNIkHq/gQJ8PO28fVN/Qvy8+NMH6zia4T7dUWuU\nEETk3yKyU0Q2i8jXItK0nO32i8gWEdkoIjoFWmNx/pOOO3Hn/4WeKfuYffFsQnxCiF0Uyyc7PnHb\nhrV58fOYvGAydpudD8Z9wOCIwVUvJG0PfHI1BEbAdZ+BZxUGvFMNXvMAH2bdHENWXhFTP1xHToF7\nTK5T0yuExUAPY0wvYDfwt7NsO9oY06e6U7upesju4ehR03oQzLmV1mn7+fiijxkWOYyn1z7Nw0sf\ndqseSHlFeTy1+in+tuxvdAvtxicXf0LnkM5VLyjzKHx0uWOo8Bv+qzefqTJ1jQjk1ev7sj3xJPd9\ntpGSEuu/INUoIRhjFhljTqW21YB2n1Cn82wC130KIe3gs+sJTNvHK+e+wj1972HRgUVcNfcqt6hC\n2pa+jWvnXcvnuz5ncvfJzLpgVtVmPDslO92RDHLSYdKXjvetVDnO7RLO3y/uxqLtyTz3wy6rw3Fp\nG8IUYEE56wywSETWi0js2QoRkVgRiRORuNTU+tcrRZXBN8TxTblJU/jwUmxJm7i11628P+597GJn\nyg9TeGLVE5Z0Tc0pzOE/cf9h0veTOFlwkrfGvMWDMQ/iaavGhOk5x+DDS+HYPrjuE2jZ1/UBqwbn\nlmHR3DC4DW/+uo8v4g5ZGotUVI8rIj8CLcpYNc0Y861zm2lADHC5KaNAEYk0xhwRkeY4qpnuNsYs\nrSi4mJgYExenTQ4NxvED8MF4yMuAm76Fln3JLcrl1d9e5ZMdnxDoFcjtvW/nqs5XVe+EXAXFJcXM\njZ/Lq7+9SkpOCpd3vJwHYx4k0Kuak9vnHIMPJ0DqbscVUYfzXBuwatAKi0uY8v46Vu1L5+Opgxjc\nLrTaZYnI+upWzVeYECpx8MnAbcB5xpicSmz/DyDLGPN8RdtqQmiASieFSV85uqgCu47t4rl1z7H2\n6Foi/SOZ0mMKl7S/hCYeTVx6+MLiQhbsX8CsLbNIyEige2h3Hhn4CH2a96l+oSeTYPaVkLYbrv0U\nOuoYRarqMnILufz1FRzPKeTbPw+jdYhvtcqxLCGIyDjgP8AoY0yZ9Tsi4gfYjDGZzueLgSeMMQsr\nKl8TQgN14qCjauVkkuPO3S4XAWCMYUXiCt7Y+Aab0zYT6BXIhPYTuLTDpXQO7ozUoNtm/Il45sXP\nY86eOaTnpdMxuCO39bqNsVFja1QuaXvho4mONoNrP9Ybz1SNxKdmcdlrK2jZtAn/vWMoft5VH+LE\nyoSwF/AG0p2LVhtjbheRlsAsY8xFItIO+Nq53gP4xBgzvTLla0JowLJSHd0ykzY6+uj3n/z7KmMM\n65PX88nOT/j50M8UlRQR6R/JiMgRxLSIoVtoN1r5tyr3RG6M4Wj2Ubanb2d9ynpWHFlBfEY8NrEx\nPHI413a+luGRw2uWCAAOxzneA+JoQI7sV7PylAKW7k5l8ntruaB7C167vh82W9X+Ti2tMqpNmhAa\nuPws+HIy7F0Mg+6AsU86xkMq5UTeCRYfXMzPB38mLjmO3KJcALzt3kT4RRDsE4yvhy8I5BbmciL/\nBEezj5JT5Ki99LJ50T+8P6Naj+KC6Auq13OoLL99DPPuh4AIuPFrCG3vmnKVAmYti+ep73dw/5hO\n3DumY5X21YSg6q/iQlj8f475hdsMhaveh4DwMjctLClk17Fd7Di2gwMZB0jMTiQjP4PcolyMMTTx\nbEKQVxAt/FoQHRhN55DOdAvthpfdy3XxFhXAommwdia0HeWI1zfEdeUrheMq96EvN/PfDYd584Z+\njOsRUel9NSGo+m/LV/DtXeATCJe+5phfwd2k7oY5tzqquYbcBWP+qcNYq1qTV1jMtTNXszs5kzl3\nDqVLi8r1gKtJQtCxjJR76Hkl3LoEmoQ4euzMu99RpeQOSkpg3Sx4a6SjQfyaj+GC6ZoMVK3y8bQz\n88b+BPh4MPWDOI5lF9T6MTUhKPcR3h1if4Ghd0Pce/D6YNj2DVh5FZu0Gd4dC98/CFFD4I6V0PUS\n6+JRjUrzQB9m3hhDSmY+d85eT2Fx7c62pglBuRdPH8e8AVMWgk8QfHmzo4tq0qa6jSPjCMy9D2aO\ngmMJcNmbcMMcx2B1StWh3q2b8uwVPVkdf4wn5m6v1WPpNa9yT20GQ+yvsP49+OkpR3VNpwth5F+g\nVf/aO+7xA7D6DYh7F0wJDJgKox+FJsG1d0ylKjCxbyt2JmXy1tJ4ukQEMGlQVK0cRxOCcl92Dxh4\nK/S6GtbMhFUzYNa5jjGC+k+G7pc7GqFrqqgA4n+G9e/DrgUgNuhzHYz8KwTXzj+eUlX113Fd2JWc\nyePfbqNTeAADol3fu017Gan6Iz8TNn7iOHGnbAe7F0SPgE7jHFcUzbtVrqHXGDi+Hw6uhvhfHEkg\nPwP8wqDfzRBzi857rNxSRm4hl722gsy8Qr67azgtm/5xaBftdqoaF2Mcdwnv+BZ2zneMLgrg0QTC\nOkPT1hDYCrz8HG0SxUWOZJKTDsfiIX0v5B5z7NMk2DGJT7dLod054OHCexaUqgV7UzK57LWVtG3m\nx5e3D8HH037aek0IqnE7lgBH1jseabvhxCE4eQQKcxztAABe/uDTFELaOu4qbtHTcSNcWBewad8K\nVb8s3p7MrR/GcXnfSF64uvdpw7DUJCFoG4Kq/0LaOh49rzx9uTGOO6FtdsdDqQbi/G7hPHB+J/6z\neDfdWgYydYRrJmLSr0aq4RJxVAFpMlAN0F2jOzCuewv+NX8Hy/ekuaRMTQhKKVUP2WzC81f3pkNz\nf+76dAMH0yucjqbiMl0Ql1JKKQv4e3vw9k0xGAOxH8WRnV9U8U5noQlBKaXqsahQP2Zc35fdyZn8\n5aua3dGvCUEppeq5ER3D+NuFXZm/5WiNytGEoJRSDcDUEW25rE/LGpVRo4QgIv8QkSMistH5uKic\n7caJyC4R2Ssij9TkmEoppf5IRHjmil41KsMV9yG8aIx5vryVImIHXgPOBw4D60TkO2NM7Q7bp5RS\njcyZdy1XVV1UGQ0E9hpj4o0xBcBnwKV1cFyllFJV4IorhLtE5CYgDnjQGHP8jPWRwKFSrw8Dg8or\nTERigVjny3wR2eqCGGtTM8A1d4XULo3TtTRO19I4XadzdXesMCGIyI9AizJWTQPeAJ4EjPPnC8CU\n6gYDYIyZCcx0HjuuumNy1JX6ECNonK6mcbqWxuk6IlLtAeAqTAjGmDGVDOJtYF4Zq44ArUu9buVc\nppRSyo3UtJdR6fkEJwJlVe+sAzqKSFsR8QKuBb6ryXGVUkq5Xk3bEJ4TkT44qoz2A7cBiEhLYJYx\n5iJjTJGI3AX8ANiBd40x2ypZ/swaxlcX6kOMoHG6msbpWhqn61Q7RreeD0EppVTd0TuVlVJKAZoQ\nlFJKOblVQhCRJ0Vks3MYjEXOtoiytisuNVxGnTZQVyHGm0Vkj/Nxc13G6Dz+v0VkpzPWr0WkaTnb\n7ReRLc73U+fzlVYhTkuHPxGRq0Rkm4iUiEi53Q7d4POsbJxWf54hIrLY+f+xWESCy9muzv/XK/ps\nRMRbRD53rl8jItF1EVcZcVQU52QRSS31+U2tsFBjjNs8gMBSz+8B3ixnuyx3jhEIAeKdP4Odz4Pr\nOM6xgIfz+bPAs+Vstx9oZuHnWWGcODoj7APaAV7AJqBbHcfZFccNP78AMWfZzurPs8I43eTzfA54\nxPn8kbP8fdbp/3plPhvgzlP/9zh6TX5uwe+5MnFOBmZUpVy3ukL4//bu50WOIgzj+PdBwZUYJK4Y\nYhRxQfDgRdBL9BAS0CASFb0J/ogHLzkLsqAgSv4JLzloBBOCCpFkdRUPEvwBxiUkavRilpiAgh7E\noPJ6qBqZYPdMjfR0V8LzgWG7Z3p7Ht6Znpqunq6OiN/GZjeQfr1UlcKMDwIrEfFLpDO3V4BdfeQb\niYhjETG6WsZx0vkf1SnMOfjwJxFxKiK+6fM5/4/CnIPXMz/f/jy9H3i05+dvU1Kb8ewHgZ0av8p9\nP+byGlbVIABIek3Sj8CTwEstiy1I+kLScUm9v5EKMjYN17G1j2wt9gDvtzwWwDFJX+ZhQ4bUlrO2\nejHlSsEAAAL6SURBVE5SUz3b1FDPzRFxLk//BGxuWa7vbb2kNv8uk7/M/Aos9pCtMUPW9ho+nrtj\nD0q6teHxS3QxltFMJg2FERHvRMQysCzpRWAv8HLDsrdFxLqkJWBV0lpEfF9ZxrmbljMvswz8BbzR\nspr7cy1vAlYknY6ITyrMOXclOQtUUc8aTMo5PhMRIamtN2Cu2/oV7j3gQERclPQ8aa9mx6R/6L1B\niMKhMEgfDEdo+LCNiPX89wdJHwN3k/rTasm4Dmwfm7+F1KfbqWk5JT0DPAzsjNyp2LCOUS0vSDpM\n2hXt9AOsg5y9DH8yw+s+aR2D17PA4PWUdF7Slog4pzTiwYWWdcx1W29QUpvRMmclXQ1cD/w8x0xN\npuaMiPFMr5OO20xUVZeRpDvGZh8BTjcss0nSNXn6RuA+oLdrK5RkJJ2V/UDOuol04PRoH/lGJO0C\nXgB2R8TvLctskLRxNE3K2evosiU5uUyGP6mhnoVqqOe7wOjXd08D/9mzGWhbL6nNePYngNW2L1xz\nNDWnLh1aaDdwaupa+z46PuXI+SHSBvQ1aXdna77/HtJQGADbgDXSUfU14LnaMub5PcCZfHt2gFqe\nIfUxfpVvo19F3AwcydNLuY4ngJOkLofqcub5h4BvSd8Oh8j5GKmf9iJwHjhaaT2n5qyknovAh8B3\nwAfADfn+wbf1ptoAr5C+tAAsAG/n9+5nwFLf9SvMuS+/D08AHwF3Tlunh64wMzOgsi4jMzMbjhsE\nMzMD3CCYmVnmBsHMzAA3CGZmlrlBMDMzwA2CmZllbhDMCkm6Nw8UtpDPSj4p6a6hc5l1xSemmc1A\n0qukM1WvBc5GxL6BI5l1xg2C2QzyuDGfA38A2yLi74EjmXXGXUZms1kErgM2kvYUzK4Y3kMwm0G+\nru9bwO3AlojYO3Aks870fj0Es8uVpKeAPyPiTUlXAZ9K2hERq0NnM+uC9xDMzAzwMQQzM8vcIJiZ\nGeAGwczMMjcIZmYGuEEwM7PMDYKZmQFuEMzMLPsHBTpJGzbRFf8AAAAASUVORK5CYII=\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", "\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. This just means fitting $x$ as a function of $y$, so that the quadratic is turned on its side and we are guaranteed that it cuts the x-axis somewhere. 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": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nRU5ErkJggg==\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');" ] }, { "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." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Brentq 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": [ "To find zeros, use " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "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", "p1=plt.plot(x, f(x))\n", "plt.xlim(-4, 4)\n", "plt.ylim(-10, 20)\n", "plt.xlabel('x')\n", "plt.axhline(0)\n", "pass" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-7.864845203343107e-19" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.optimize.brentq(f,-1,.5)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.optimize.brentq(f,.5,3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Roots of polynomials\n", "\n", "One method for finding roots of polynomials converts the problem into an eigenvalue one by using the **companion matrix** of a polynomial. For a polynomial \n", "\n", "$$\n", "p(x) = a_0 + a_1x + a_2 x^2 + \\ldots + a_m x^m\n", "$$\n", "\n", "the companion matrix is\n", "\n", "$$\n", "A = \\begin{bmatrix}\n", "-a_{m-1}/a_m & -a_{m-2}/a_m & \\ldots & -a_0/a_m \\\\\n", "1 & 0 & \\ldots & 0 \\\\\n", "0 & 1 & \\ldots & 0 \\\\\n", "\\vdots & \\vdots & \\ldots & \\vdots \\\\\n", "0 & 0 & \\ldots & 0\n", "\\end{bmatrix}\n", "$$\n", "\n", "The characteristic polynomial of the companion matrix is $\\lvert \\lambda I - A \\rvert$ which expands to \n", "\n", "$$\n", "a_0 + a_1 \\lambda + a_2 \\lambda^2 + \\ldots + a_m \\lambda^m\n", "$$\n", "\n", "In other words, the roots we are seeking are the eigenvalues of the companion matrix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, to find the cube roots of unity, we solve $x^3 - 1 = 0$. The `roots` function uses the companion matrix method to find roots of polynomials." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Coefficients of $x^3, x^2, x^1, x^0$\n", "\n", "poly = np.array([1, 0, 0, -1])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.5+0.8660254j, -0.5-0.8660254j, 1. +0. j])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.roots(poly)\n", "x" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ny/4/oxlsc0Hf1bwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter([z.real for z in x], [z.imag for z in x])\n", "theta = np.linspace(0, 2*np.pi, 100)\n", "u = np.cos(theta)\n", "v = np.sin(theta)\n", "plt.plot(u, v, ':')\n", "plt.axis('square')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using `scipy.optimize`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Finding roots of univariate equations" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return x**3-3*x+1" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-3,3,100)\n", "plt.axhline(0, c='red')\n", "plt.plot(x, f(x))\n", "pass" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.optimize import brentq, newton" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `brentq` is the recommended method" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.8793852415718166, 0.3472963553337031, 1.532088886237956)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brentq(f, -3, 0), brentq(f, 0, 1), brentq(f, 1,3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Secant method" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.8793852415718169, 0.34729635533385395, 1.5320888862379578)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newton(f, -3), newton(f, 0), newton(f, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Newton-Raphson method" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.8793852415718166, 0.34729635533386066, 1.532088886237956)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fprime = lambda x: 3*x**2 - 3\n", "newton(f, -3, fprime), newton(f, 0, fprime), newton(f, 3, fprime)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Finding fixed points\n", "\n", "Finding the fixed points of a function $g(x) = x$ is the same as finding the roots of $g(x) - x$. However, specialized algorithms also exist - e.g. using `scipy.optimize.fixedpoint`." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.optimize import fixed_point" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl81PW1//HXYUtYkiASSJTVDbUucM1166IWrVqtorV1\nr9aFui/91SrSRa/X5VatRakLKMWq1WrFFbXWarUuWKJFRVwK3nIBEwiCCVv28/vjMyEhGUhIZuY7\nmXk/H495ZPbvGZYzn5zv5/M55u6IiEjm6xF1ACIikhpK+CIiWUIJX0QkSyjhi4hkCSV8EZEsoYQv\nIpIllPBFRLKEEr6ISJZQwhcRyRK9og6gpcGDB/uoUaOiDkNEpFt55513Vrp7YXvP63LCN7PhwO+B\noYAD09x9ipkNAv4IjAL+DXzf3Vdv6b1GjRpFaWlpV0MSEckqZra4I89LREmnHvh/7r47sD9woZnt\nDlwF/NXddwb+GrstIiIR6XLCd/cyd383dn0N8BGwPXAscH/safcDE7p6LBER6byEnrQ1s1HAOOBt\nYKi7l8UeKieUfEREJCIJS/hmNgB4HLjM3ataPuZhD+a4+zCb2UQzKzWz0oqKikSFIyIirSQk4ZtZ\nb0Kyf8jdZ8XuXm5mxbHHi4EV8V7r7tPcvcTdSwoL2z3JLCIindTlhG9mBtwHfOTuv27x0NPAGbHr\nZwBPdfVYIiLSeYmYh/9V4HTgAzObF7vvauAm4FEzOxtYDHw/AccSEZFO6nLCd/fXAdvMw+O7+v4i\nIhlvyhQYPRqOOSaph9HWCiIiUVqzBiZPhqefTvqhlPBFRKL08MOwbh2cc07SD6WELyISpenTYY89\nYL/9kn4oJXwRkajMmwelpXDuuWCbOxWaOEr4IiJRufdeyMmB005LyeGU8EVEorB+PTz4IJxwAgwa\nlJJDKuGLiEThT3+CysqUnKxtooQvIhKF6dNh553hoINSdkglfBGRVJs/H15/PWUna5so4YuIpNpd\nd4WTtT/8YUoPq4QvIpJKa9bAAw/A978Pgwen9NBK+CIiqfTQQyHpX3BByg+thC8ikirucOedMG5c\nSlbWtpaI7ZFFRKQj3nwTPvgApk1L6cnaJhrhi4ikyp13Qn4+nHJKJIdXwhcRSYXly+Gxx+CMM6B/\n/0hCUMIXEUmFu++Gujq48MLIQlDCFxFJtpqaMPf+yCNhzJjIwlDCFxFJtsceCyWdSy+NNIyEJHwz\nm2FmK8xsfov7rjGzZWY2L3b5diKOJSLSrbiHnrW77grf+lakoSRqhD8TOCLO/be5+9jY5bkEHUtE\npPt4663Q5OSSSyKZitlSQhK+u78GrErEe4mIZJTbb4eCAjj99KgjSXoN/yIzez9W8tkm3hPMbKKZ\nlZpZaUVFRZLDERFJoSVLwr7355wDAwZEHU1SE/5dwI7AWKAMuDXek9x9mruXuHtJYWFhEsMREUmx\nKVPCz4svjjaOmKQlfHdf7u4N7t4ITAf2TdaxRETSTmVl2ELhxBNh5MioowGSmPDNrLjFzeOA+Zt7\nrohIxrnnnrAr5k9+EnUkGyVk8zQzexg4GBhsZkuBXwIHm9lYwIF/Az9KxLFERNJebW0o54wfH3bG\nTBMJSfjufnKcu+9LxHuLiHQ7Dz8Mn38O96VXGtRKWxGRRHKHW26BPfaAww+POppNaD98EZFEev75\n0KR85szIF1q1phG+iEiiuMP118OIEZHteb8lGuGLiCTKa6+FrlZTp0Lv3lFH04ZG+CIiiXLDDTB0\nKJx1VtSRxKWELyKSCHPnwosvwo9/DH37Rh1NXEr4IiKJcOONMHAgnH9+1JFslhK+iEhXffghPPFE\n2AI5Ly/qaDZLCV9EpKuuvTYk+ksuiTqSLVLCFxHpig8+CC0ML70Utt026mi2SAlfRKQrrr0W8vPD\nydo0p4QvItJZ770Hjz8Ol10G28Tt8ZRWlPBFRDrr2mtD+8LLL486kg5RwhcR6Yx//jPMzLn88jAd\nsxtQwhcR6Yyrrw5lnMsuizqSDtNeOiIiW+tvf4MXXoCbbw4lnW5CI3wRka3hDpMmwfbbw4UXRh3N\nVtEIX0Rkazz9NMyZA9Onp+2eOZuTkBG+mc0wsxVmNr/FfYPM7C9m9q/Yz/SfsyQisiUNDaF2P2YM\nnHlm1NFstUSVdGYCR7S67yrgr+6+M/DX2G0Rke7r/vthwYLQ5KRX9yuQJCThu/trwKpWdx8L3B+7\nfj8wIRHHEhGJxNq18LOfwf77w/HHRx1NpyTzK2qou5fFrpcDQ5N4LBGR5Lr5ZigrCytr06xXbUel\nZJaOuzvg8R4zs4lmVmpmpRUVFakIR0Rk6yxbFhL+iSfCAQdEHU2nJTPhLzezYoDYzxXxnuTu09y9\nxN1LCgsLkxiOiEgnTZ4cTtjeeGPUkXRJMhP+08AZsetnAE8l8VgiIsnxzjvhZO1ll8Ho0VFH0yWJ\nmpb5MPAWMMbMlprZ2cBNwGFm9i/g0NhtEZHuo7ERLr4YCgvDdMxuLiEnbd395M08ND4R7y8iEokH\nH4S33oIZM7rVFgqbo60VRETiqayEn/40TMM844z2n98NdL+VAyIiqXDNNbBiBcyeDT0yY2ycGZ9C\nRCSR5s+HO+6AH/0I9tkn6mgSRglfRKSlxkY477zQ1OS//zvqaBJKJR0RkZamT4c33oCZM2HbbaOO\nJqE0whcRaVJWBldeCd/8JvzgB1FHk3BK+CIiTS69FKqr4e67u+1+OVuiko6ICMCzz8Jjj4W6/c47\nRx1NUmiELyKyenWYkbPHHnDFFVFHkzQa4YuIXH45LF8e2hf26RN1NEmjEb6IZLdnngmbo119dUbN\nuY9HCV9EsteqVTBxIuy1V+hmleFU0hGR7OQOF14IK1fCc89ldCmniRK+iGSnBx+ERx6B666DceOi\njiYlVNIRkeyzaBFccAF8/eswaVLU0aSMEr6IZJe6Ojj1VOjVK4zye/aMOqKUUUlHRLLLtdfC22/D\nH/8II0ZEHU1KaYQvItnjhRfghhvgrLPg+9+POpqUS/oI38z+DawBGoB6dy9J9jFFRNpYsgROOy2s\npr3jjqijiUSqSjqHuPvKFB1LRGRTtbVhRF9bC3/6E/TrF3VEkVANX0Qy3xVXwJw5YXO0XXaJOprI\npKKG78CLZvaOmU1MwfFERJrNnAm33w6XXQYnnBB1NJFKxQj/a+6+zMyGAH8xs4/d/bWmB2NfAhMB\nRmTZGXMRSbK33gq7YB56KNx8c9TRRC7pI3x3Xxb7uQJ4Ati31ePT3L3E3UsKCwuTHY6IZIulS+G4\n42D48DAFs5cq2ElN+GbW38zymq4D3wLmJ/OYIiKsXQvHHgvr14ctjwcNijqitJDsr7yhwBMWWoX1\nAv7g7i8k+Zgiks3q6+HEE2HevJDsd9896ojSRlITvrt/BuydzGOIiGzkHvbIee45uOceOOqoqCNK\nK1ppKyKZ44YbYPr00MxkoiYFtqaELyKZ4a67QhOT004LjcilDSV8Een+HngglHK+8x2YMQPCeUNp\nRQlfRLq3WbPgzDNh/Hh49FHo3TvqiNKWEr6IdF9PPAEnnQT77w9PPgm5uVFHlNa0EkE6Z926sPvg\n0qWwbBl88QV8+SVUVoa5z3V14QJhwUvv3tC3LxQUQH4+bLMNDB0KRUVQXAzbbZdVjSgkAR59FE45\nBf7zP2H2bBgwIOqI2uXufLm+jrLKasqrNlBeWUN55QbKq6rZrTifH351dFKPr4QvW1ZfDwsWQGkp\nvPsufPQRfPJJSPKtmUFeHvTvHxJ8797hvqbkv349VFVBY2Pb1/bqFVZEjh4dNrcaMwZ23RX22it8\nIagmKy09+CCccQYceGCYgpmXF3VENDQ6K9fWUF5ZHRJ65QbKq0JCL6usZnlVuL+mftN//z0MCvNy\nGJCT/FKUEr5sqqEB5s6Fl1+GV16BN96ADRvCY3l5YRHL+PEhIY8aBdtvHy6FheHxHu1UCd1D4v/i\nC1i+PFyWLYPFi8Pls89CY+kvv2x+zbbbwt57wz77hNFcSUk4tr4EstPUqXDJJXDwwfDMM2GAkWS1\n9Y0sr2pO2huTelUsmVdWs3xNDQ2Nvsnrevc0huTlst3AXPYcNpDDds+huKAvRQW5DM0P9xcOyKFX\nz9RU15XwBaqrQyegp56CZ5+FlbHWBXvuCWefDQccEJLsTju1n9DbYxb+g/bvv/n2cu5QURF+m/jg\nA3jvvbBqcsqUsJ85hFLQgQeGyze+AePGaa+UTOcOkyfDjTeGbRMefjiUCbtoXU095VUhiZdXVlNe\nVU1ZZazcEiu7rFxb0+Z1/fr0pKggl+KCXPbfcVuK8nMpHtiXovzc2PVcBvXrQ48e6TMw0f+QbOUO\nr78Ov/992CO8sjLU1486KkxtGz8+jNqjYAZDhoTLQQc1319bG74A/vEPePPNcJk1KzyWlwdf/zp8\n85thZ8Q99+z6l5Okj9rasJDq/vvD7pdTp7b7Be/uVG6oiyXwMAova5HUwyh9A1XV9W1eO7Bf75C4\nC3LZc/sChuaHxF5U0HdjMs/L6YV1s98yzd3bf1aKlJSUeGlpadRhZLaqqjBn+be/DSPo/v3h+OPh\n1FNDsuxuU9rKyuDVV8PllVfC+QUIXxaHHQZHHAHf+la4Ld1TRUXYx/6110ID8p//nEaHleta1sur\n447Sq+s2rZebQeGAHIoKYqPwglyGxkbpRfl9N97ft0/3mkBgZu90pH2sEn62KCuDW28N+4usXRtq\n4RdcEP4jdYPZDR22dCn89a/wl7/Aiy+GZAGhJHX00eEybpxG/2mstr6RFWti9fL3P6V86jTKvTdl\nhxxJ+cAhlFdWs2JNNXUNm+auXj1s40h8aIuE3lR2GZofLr1TVC9PJSV8CZYsCTXPGTPCTJmTToJL\nL4V9923/td1dYyP885/w/PNhJsecOaGUtd12oWx1zDHhtxrN3U6ZDbUNLWrkcUbnVdWsXFtD67TU\ntycUbdN/YwLfODrPb0rofdm2f3rVy1NJCT/bffkl3HRTONHZ0BBWIl55Jey4Y9SRRaeiIiT/Z54J\nJ6nXrg0lrSOPhAkTwvmLgQOjjrJbcneqNtRvTOYtZ7M018urqdxQ1+a1BX2b6+XFBbkM7deT4uee\npGj2LIp2GkHxPbeTP2pYt6uXp5ISfrZqaIC774Zf/AJWrw61+euuC9MYpVlNTaj5P/VUuJSVhZOA\n48eHLkkTJoSFYUJjo/PFutoWSXzDJlMTm+7fUNfQ5rWDB+RQVBCmIjaNyFuO0osKcunXp8XJ1wUL\n4OST4f334aqrwr9dzb5qlxJ+NvrHP+D888MCqfHj4ZZbYOzYqKNKf42N4c/uiSfg8cdh0aJwdu9r\nX4Pvfjec1B4+POook6KuoZEVa2o2nuyMNzpfXhW/Xj4kL6d5GmKLBN6yXt6nVwfr5Q0N8Otfh90u\n8/PD7LEjj0zCJ85MSvjZZN06mDQpTFUrKoLf/Aa+9z0tTOoM9zD1c9askPznxzpy7rtvOMH93e/C\nDjtEG2MHVdc1tBmFNy3jb7q/Ik69PLd3j02S+NCCXLYraJ7BUjwwl8H9cxJXL//447De4803w29X\nd9+tWVVbSQk/W7zxRqjPL1wIF18c9gHPz486qszx6afNyb/p3+bYsWHU/93vwm67RfLFuqa6bpOT\nns17szRdr+bL9W3r5fm5vULiLuhLcX6LKYktToQW9O2dmnr5+vVw/fVw883hXMrUqWFvHA1UtpoS\nfqarqwt1+v/5Hxg5En73u7DUXJLn3/9uTv5vvhnuGzMmJP/jjw9bP3QxWTU2OqvW1zaXWKpaLBiK\nJfTyymrW1carl/eJUyPftHbePycN6uHu4c/xJz8Jf6ZnnAG/+pVG9V2QNgnfzI4ApgA9gXvd/abN\nPVcJv4OWLAnTK998E845J9Q+02DzqKzy+eeh5v/EE/C3v4Ua9LBh4WTvhAlhu4dWi9jqGxqpWNuy\nXl69cRVoU6lleWUNtQ2bLhbqGauXN+29EhYI5WxM5kX5uQzJzyGnVzdYLPT3v8NPfxqmyH7lK3Dn\nneHPSrokLRK+mfUEPgUOA5YCc4GT3X1BvOcr4XfAc8/B6aeHpebTp4fEL9H64guqn3qG5S+8TNk/\nF7C89wDKhgyj/CvjKB+2I2X9tqF8XR0Va2potbcWOb16tF31GRuZN91fmJdDz+4+v/yNN0L55vnn\nwzqI664LI3ttiZ0QHU34yf79bl9gobt/FgvqEeBYIG7Cly1wD7/2TpoUtgx+7DHYeeeoo8oKa6rr\nNp703LgnS4sTn+WVG1i9vhB2OBFanM/Nq13P0EVlFK+Zz5j+PSkaWUzRXrtSvOtohsZG5wP7pahe\nHoXGRvjzn0PZ8dVXYfDgsAjwkkugX7+oo8tKyU742wNLWtxeCuyX5GNmng0bQunmD38II/r77tN/\nmARwd1atq91k1kq8BUNra9purrVt/1Av364gl/8YMbDFlMRQbhman0te7x7w9tuhOcezz8Lv3g8v\nHjaseY+fQw4JiTCTrFoFM2eGcs2iRWFEf9ttcO65KdnKWDYv2SWdE4Aj3P2c2O3Tgf3c/aIWz5kI\nTAQYMWLEPosXL05aPN1SRUXYBuDtt8OvxJMmaRZDBzQ0OhVrajadV77JqDzcro3TjGJIXsvSSvPc\n8uLYTolDCzpZL1+yJIx4X3gh7PVTVRX+LseNC4n/4IPD3P/uuNq3piaUGx94IHzB1daGz3LhheGE\ndp8+UUeY0dKlhn8AcI27Hx67PQnA3W+M93zV8Fv57LMwElyyJOz9PWFC1BGlhZr6BlZU1cRKLBvi\njs4r1rZtRtGnZw+Gtlj1WZTf3ISiaU+WlDWjqK8P0zxfeilc3norJMkePULJ7sAD4atfDb1aR49O\nzy/51atDTf6pp8LPNWvCTJtTTglThffeO+oIs0a6JPxehJO244FlhJO2p7j7h/Ger4Tfwrvvwre/\nHaZfPvNMSABZYG1NfdxVny2T+Rfratu8rv/GZhR94676LC7IZVD/PulbL9+wIfwW9+qroU/BnDlh\nrx8I/X9LSsK0z732CpdddkntVtbuYWbS3Llhps0rr4SmNO4hyX/nO2FdwmGHaSuECKRFwo8F8m3g\nN4RpmTPc/frNPVcJP+aNN8Ky8m22CSWAXXeNOqIua2reXN7qZGfLUkt5ZTVr4tTLt+nXOzYSb5vM\nm67n5Xazffzb09DQ3OyltDQk2g8/3LQx/I47hnUAu+wS1mKMGhW2gCgqCucFOjMDZt260HJy6VL4\n179Cf4GPPw67jpaXh+fk5IQuaAcfHM5D7LeftpuOWNok/K2hhE+Y03300aFP7Msvh59prql588ba\n+FY2b255wjPe5lq5vTV1Dwgln08+CS0fFywI1z/5JKyyrmnVgq9Hj9ALuKAgrLzOy2tuLN+rVygp\n1daGS1VV2F119epwvaW+fcMXyt57N/+W8R//oS2l00y6TMuUrfHSS2GP9tGjQxOPoqKoI9rYvLnl\nKLw5iYf6+eaaNw+N9fZsat7cepQ+JC91zZszQp8+oXXjnntuen9jI6xYEZrAL1nS3By+oiK0rqyq\nCvX1devCbwj19SHp9+kTvgBGjgwJfeBAKC5ubky/005hRpFG7xlDCT9dvPJKGNmPGRMSfwr6ya6v\nrY+zzW3L5s3VrFzbtl7esnnzATsObl71GRuRD83PzepmFCnXo0cYHBQVhfKKyGYo4aeDOXPCSa+d\ndgoj+y7Oy27dvLm8xaV5b5aON2/euFNi7NIdmzeLiBJ+9ObNCydoi4vD3Ox2kn1jo7dp3ty6xFJe\nVb3F5s0jt+3H/jsMyojmzSLScUr4UVq4MMxyyMuDl16ibshQlq9ev8kUxNazWJZXVVMfp14+JC+M\nvvfYvoBDdxvaZtVnpjZvFpGOU8JPkdbNm8s//4Ly+x+m7JsXUb7PgZQ98C++WDe/bfPm3s318v1G\nD2qx8rN51WdCm1GISMZSwu+i1s2bWzdtbhqtx23evP1YigoHUrRtPl8p2HTVZ1NCz++rermIJIYS\n/hY0NW9uTuJtFwrFa95sBtv2D82bhw/qx3+OGtS8UCivD0WTr6D4yUfp+8c/wHFHRPTpRCTbZG3C\nr481b950Z8QNHWreHGriOey2XT6H7DpkY5/Ppr1Ztti8+aqr4LHfw5QpoX+niEiKZGTCb9m8Ocwn\nb7vqc3PNm8Nqz5yNo/KWzZyLCnIZPKALzSgeeijsDX7eeWFPcBGRFMqIhL9wxRqun/1Rh5s371qU\n36Z5c1F+kptRzJ0b9rQ/6KAwuhcRSbGMSPg9zKhYW8OwbfpSMmqbTfZkSYvmzeXlYWvjoqLQqUp7\ng4tIBDIi4e9QOIBnL/561GHEV18PJ58cNqaaMyclWyaIiMSTEQk/rf3iF2EHzPvvD/uYi4hEREsv\nk2n27NC0+dxz4Qc/iDoaEclySvjJsngxnH566Fd6++1RRyMiooSfFPX1cNpp4edjj6lZhIikBdXw\nk+HGG0Nf0gcfDG3oRETSQNJG+GZ2jZktM7N5scu3k3WstPLWW3DttXDqqeEiIpImkj3Cv83db0ny\nMdJHVVVI8sOHw29/G3U0IiKbUEknkX7843Cy9u9/D82jRUTSSLJP2l5kZu+b2Qwz2ybJx4rW88/D\nffeFzdEOPDDqaERE2jBvvYPY1rzY7CWgKM5Dk4E5wErAgeuAYnc/K857TAQmAowYMWKfxYsXdzqe\nyKxeDXvsAYMGQWkp5OREHZGIZBEze8fdS9p7XpdKOu5+aAeDmQ48u5n3mAZMAygpKen8t0+ULr8c\nli+Hp59WsheRtJXMWTrFLW4eB8xP1rEiNXt22Dbh6qthn32ijkZEZLOSedL2V2Y2llDS+TfwoyQe\nKxpr1sD554dyzs9+FnU0IiJblLSE7+6nJ+u908bPfw5Ll8Kjj2rLYxFJe9paobPmzoU77oALLoD9\n9486GhGRdinhd0ZdXdgBs6gIbrgh6mhERDpEC6864/bb4b33YNYsyM+POhoRkQ7RCH9rff45XHMN\nHH00HHdc1NGIiHSYEv7WuuKKUNJRI3IR6WaU8LfGq6/CH/4AV14JO+wQdTQiIltFCb+j6uvhootg\n5MiQ8EVEuhmdtO2oO++E+fPDidp+/aKORkRkq2mE3xGrVoUTtYceChMmRB2NiEinKOF3xHXXQWUl\n/PrXYBZ1NCIinaKE355PP4WpU+Hss2HPPaOORkSk05Tw23PllZCbC//1X1FHIiLSJUr4W/K3v8GT\nT8KkSWEbBRGRbkwJf3PcwyKr4cNDgxMRkW5O0zI35/HHQ7vCmTOhb9+ooxER6TKN8OOpr4fJk2H3\n3eG006KORkQkITTCj2fmzDA758knoWfPqKMREUkIjfBb27AhLLLaf3845piooxERSRiN8Fv77W9h\n2TJ46CEtshKRjNKlEb6Zfc/MPjSzRjMrafXYJDNbaGafmNnhXQszRdasgRtvhMMPh4MOijoaEZGE\n6uoIfz5wPHBPyzvNbHfgJOArwHbAS2a2i7s3dPF4yXXHHWHfHC2yEpEM1KURvrt/5O6fxHnoWOAR\nd69x9/8FFgL7duVYSVdVBbfcAkcdBfumd6giIp2RrJO22wNLWtxeGruvDTObaGalZlZaUVGRpHA6\n4PbbYfXqcMJWRCQDtVvSMbOXgHj7Ckx296e6GoC7TwOmAZSUlHhX369TKivh1lvhO9+BkpL2ny8i\n0g21m/Dd/dBOvO8yYHiL28Ni96WnKVPgyy/hl7+MOhIRkaRJVknnaeAkM8sxs9HAzsA/knSsrqmq\ngttuC3Pu99kn6mhERJKmq9MyjzOzpcABwGwz+zOAu38IPAosAF4ALkzbGTp33x1G9z/7WdSRiIgk\nlblHUzaPp6SkxEtLS1N3wA0bYPRo2GsvePHF1B1XRCSBzOwdd2/3BGR2b60wYwYsXw5XXx11JCIi\nSZe9Cb+uDn71KzjwQK2qFZGskL176Tz0EPzf/8Fdd2nPHBHJCtk5wm9shJtugrFj4cgjo45GRCQl\nsnOE/8wz8Mkn8PDDGt2LSNbIzhH+LbfAyJFwwglRRyIikjLZN8KfMwdefx1+8xvolX0fX0SyV/aN\n8G+9FQYOhLPPjjoSEZGUyq6Ev2gRzJoF558PAwZEHY2ISEplV8K/7bbQlPzii6OOREQk5bIn4a9a\nFVbWnnYaFBdHHY2ISMplT8K/996wd87ll0cdiYhIJLIj4dfXw9SpcMghsOeeUUcjIhKJ7JiX+OST\nsGRJaFIuIpKlsmOEP2VK2Ab56KOjjkREJDKZn/DffTcstLr44jBDR0QkS2V+wp8yBfr3hx/+MOpI\nREQildkJf8UKeOQROPPMsLpWRCSLdbWn7ffM7EMzazSzkhb3jzKzDWY2L3a5u+uhdsKMGVBbCxde\nGMnhRUTSSVdn6cwHjgfuifPYIncf28X377yGhtCg/JBDYLfdIgtDRCRddCnhu/tHAJaOe8o//zws\nXhy2QhYRkaTW8Eeb2T/N7FUz+3oSjxPfXXeFLRSOPTblhxYRSUftjvDN7CWgKM5Dk939qc28rAwY\n4e5fmNk+wJNm9hV3r4rz/hOBiQAjRozoeORb8r//G0b4P/859O6dmPcUEenm2k347n7o1r6pu9cA\nNbHr75jZImAXoDTOc6cB0wBKSkp8a48V1z33QI8ecO65CXk7EZFMkJSSjpkVmlnP2PUdgJ2Bz5Jx\nrDZqauC+++CYY2DYsJQcUkSkO+jqtMzjzGwpcAAw28z+HHvoG8D7ZjYP+BNwnruv6lqoHTRrFqxc\nCeedl5LDiYh0F+aemCpKIpSUlHhpaZuqz9YZPz7U8BcuDGUdEZEMZ2bvuHtJe8/LrIy4aBG8/HLo\nV6tkLyKyiczKivfeGxK99s0REWkjcxJ+XR387ndw1FGw3XZRRyMiknYyJ+E/+ywsX66pmCIim5E5\nCf/ee8PI/sgjo45ERCQtZUbCX7IEXngBzjoLemVH10YRka2VGQl/7Vo44ogwO0dEROLKjOHwbrvB\n7NlRRyEiktYyY4QvIiLtUsIXEckSSvgiIllCCV9EJEso4YuIZAklfBGRLKGELyKSJZTwRUSyRFo1\nQDGzCmA2RKEUAAADaklEQVRxF95iMLAyQeFEKVM+B+izpKNM+Rygz9JkpLsXtvektEr4XWVmpR3p\n+pLuMuVzgD5LOsqUzwH6LFtLJR0RkSyhhC8ikiUyLeFPizqABMmUzwH6LOkoUz4H6LNslYyq4YuI\nyOZl2ghfREQ2I6MSvpldZ2bvm9k8M3vRzLptN3Mzu9nMPo59nifMbGDUMXWWmX3PzD40s0Yz63Yz\nKszsCDP7xMwWmtlVUcfTWWY2w8xWmNn8qGPpKjMbbmavmNmC2L+tS6OOqbPMLNfM/mFm78U+y7VJ\nO1YmlXTMLN/dq2LXLwF2d/fzIg6rU8zsW8DL7l5vZv8D4O5XRhxWp5jZbkAjcA/wE3cvjTikDjOz\nnsCnwGHAUmAucLK7L4g0sE4ws28Aa4Hfu/seUcfTFWZWDBS7+7tmlge8A0zopn8vBvR397Vm1ht4\nHbjU3eck+lgZNcJvSvYx/YFu+23m7i+6e33s5hxgWJTxdIW7f+Tun0QdRyftCyx098/cvRZ4BDg2\n4pg6xd1fA1ZFHUciuHuZu78bu74G+AjYPtqoOseDtbGbvWOXpOSujEr4AGZ2vZktAU4FfhF1PAly\nFvB81EFkqe2BJS1uL6WbJpZMZWajgHHA29FG0nlm1tPM5gErgL+4e1I+S7dL+Gb2kpnNj3M5FsDd\nJ7v7cOAh4KJoo92y9j5L7DmTgXrC50lbHfksIolmZgOAx4HLWv2G3624e4O7jyX8Jr+vmSWl5Nbt\nmpi7+6EdfOpDwHPAL5MYTpe091nM7EzgaGC8p/nJlq34e+lulgHDW9weFrtPIhardz8OPOTus6KO\nJxHc/UszewU4Akj4yfVuN8LfEjPbucXNY4GPo4qlq8zsCOCnwDHuvj7qeLLYXGBnMxttZn2Ak4Cn\nI44p68VOdN4HfOTuv446nq4ws8KmWXhm1pcwQSApuSvTZuk8DowhzAhZDJzn7t1yNGZmC4Ec4IvY\nXXO68Yyj44A7gELgS2Ceux8ebVQdZ2bfBn4D9ARmuPv1EYfUKWb2MHAwYVfG5cAv3f2+SIPqJDP7\nGvB34APC/3eAq939ueii6hwz2wu4n/DvqwfwqLv/V1KOlUkJX0RENi+jSjoiIrJ5SvgiIllCCV9E\nJEso4YuIZAklfBGRLKGELyKSJZTwRUSyhBK+iEiW+P9Wbi/WQ1Q6RwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-3,3,100)\n", "plt.plot(x, f(x), color='red')\n", "plt.plot(x, x)\n", "pass" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array(0.25410169), array(-2.11490754), array(1.86080585))" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fixed_point(f, 0), fixed_point(f, -3), fixed_point(f, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mutlivariate roots and fixed points\n", "\n", "Use `root` to solve polynomial equations. Use `fsolve` for non-polynomial equations." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.optimize import root, fsolve" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we want to solve a sysetm of $m$ equations with $n$ unknowns\n", "\n", "\\begin{align}\n", "f(x_0, x_1) &= x_1 - 3x_0(x_0+1)(x_0-1) \\\\\n", "g(x_0, x_1) &= 0.25 x_0^2 + x_1^2 - 1\n", "\\end{align}\n", "\n", "Note that the equations are non-linear and there can be multiple solutions. These can be interpreted as fixed points of a system of differential equations." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return [x[1] - 3*x[0]*(x[0]+1)*(x[0]-1),\n", " .25*x[0]**2 + x[1]**2 - 1]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1.11694147, 0.82952422])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = root(f, (0.5, 0.5))\n", "sol.x" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1.11694147, 0.82952422])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fsolve(f, (0.5, 0.5))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "r0 = root(f,[1,1])\n", "r1 = root(f,[0,1])\n", "r2 = root(f,[-1,1.1])\n", "r3 = root(f,[-1,-1])\n", "r4 = root(f,[2,-0.5])\n", "\n", "roots = np.c_[r0.x, r1.x, r2.x, r3.x, r4.x]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Y, X = np.mgrid[-3:3:100j, -3:3:100j]\n", "U = Y - 3*X*(X + 1)*(X-1)\n", "V = .25*X**2 + Y**2 - 1\n", "\n", "plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn)\n", "plt.scatter(roots[0], roots[1], s=50, c='none', edgecolors='k', linewidth=2)\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### We can also give the Jacobian" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def jac(x):\n", " return [[-6*x[0], 1], [0.5*x[0], 2*x[1]]]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1.11694147, 0.82952422]), array([-4.23383550e-12, -3.31612515e-12]))" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = root(f, (0.5, 0.5), jac=jac)\n", "sol.x, sol.fun" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Check that values found are really roots\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.allclose(f(sol.x), 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Starting from other initial conditions, different roots may be found" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.77801314, -0.92123498])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = root(f, (12,12))\n", "sol.x" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.allclose(f(sol.x), 0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }