{ "cells": [ { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "007bb239-9038-4648-8c95-a1f429f40816" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Solving Ordinary Differential Equations (ODEs)" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "5ce4c702-e106-43e5-8240-e4a75b6a02fe" }, "slideshow": { "slide_type": "slide" } }, "source": [ "Consider the ordinary differential equation **ODE**\n", "$$\n", "y' = \\lambda y, \\qquad t \\ge 0\n", "$$\n", "with initial condition\n", "$$\n", "y(0) = 1\n", "$$\n", "The exact solution is\n", "$$\n", "y(t) = \\exp(\\lambda t)\n", "$$\n", "and more general if $y(0) = y_0$ we obtain the solution\n", "$$\n", "y(t)=y_0\\exp(\\lambda t).\n", "$$" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t0,y0,T = 0.0,1.0,10.0\n", "te = np.linspace(t0,T,100)\n", "y=np.exp(te)\n", "plt.plot(te,y)\n", "lmbd = 1.1\n", "y=np.exp(lmbd*te)\n", "plt.plot(te,y)\n" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "d9a639b6-f8dd-487e-9cb2-8c4fb8419235" }, "slideshow": { "slide_type": "slide" } }, "source": [ "Numerical methods for solving ordinary differential equations are methods used to find numerical approximations. Many differential equations **cannot** be solved using analytical solutions. For practical purposes, a numeric approximation to the solution is often sufficient. The algorithms studied here can be used to compute such an approximation. An alternative method is to use techniques from calculus to obtain a series expansion of the solution." ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "d9a639b6-f8dd-487e-9cb2-8c4fb8419235" }, "slideshow": { "slide_type": "slide" } }, "source": [ "We now have the following equation\n", "$$\n", "y'(t)=f(t,y(t))\n", "$$\n", "where we numerically need to approximate the solution via an approximation of the time derivative\n", "$$\n", "y'(t)=\\frac{y(t+h)-y(t)}{h}=f(t,y(t))\n", "$$\n", "and we start from the initial value $y_0$. " ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "d9a639b6-f8dd-487e-9cb2-8c4fb8419235" }, "slideshow": { "slide_type": "slide" } }, "source": [ "This initial condition now propagates over time via reformulating the above to an iteration \n", "$$\n", "y(t+h)=y(t)+hf(t,y(t))\n", "$$\n", "and since the values $y(t)$ refer to exact solution evaluated at different times we now introduce the notation $y_k\\approx y(kh)$ and arrive at the first method for solving the ODE\n", "$$\n", "y_{k+1}=y_k+hf(t_k,y_k).\n", "$$\n", "This is the so-called **explicit Euler** method as the approximation of the new solution only depends on *old* values." ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "bc5dd679-e120-45ab-92bf-4d636f05635e" }, "slideshow": { "slide_type": "slide" } }, "source": [ "Right hand side function for our differential equation" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "nbpresent": { "id": "0f38fe14-102f-4734-b083-0eace0da1f1b" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def f(t,y):\n", " return y" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "0043cfcd-9dd8-4b90-b371-60a72948422e" }, "slideshow": { "slide_type": "slide" } }, "source": [ "with the exact solution" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "nbpresent": { "id": "398686b2-3a49-499a-a3f7-33d9369eee15" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def yexact(t):\n", " return np.exp(t)" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "befe5152-527f-4f5b-a4fd-7326f8c499a4" }, "slideshow": { "slide_type": "slide" } }, "source": [ "This implements forward/explicit Euler method\n", "$$\n", "y_{k+1}=y_k+hf(t_k,y_k).\n", "$$" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "nbpresent": { "id": "7563d1c2-fc26-4bd1-bfa9-4fa98bb6e148" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def euler(t0,T,y0,h):\n", " N = int((T-t0)/h)\n", " y = np.zeros(N)\n", " t = np.zeros(N)\n", " y[0] = y0\n", " t[0] = t0\n", " for n in range(1,N):\n", " y[n] = y[n-1] + h*f(t[n-1],y[n-1])\n", " t[n] = t[n-1] + h\n", " return t, y" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "nbpresent": { "id": "fd0ac33c-6fdd-4779-ab37-bb20c9b21d70" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t0,y0,T = 0.0,1.0,5.0\n", "\n", "te = np.linspace(t0,T,100)\n", "ye = yexact(te)\n", "plt.plot(te,ye,'--')\n", "\n", "H = [0.2,0.1,0.05]\n", "\n", "for h in H:\n", " t,y = euler(t0,T,y0,h)\n", " plt.plot(t,y)\n", "\n", "plt.legend(('Exact','0.2','0.1','0.05'),loc=2)\n", "plt.xlabel('t')\n", "plt.ylabel('y')\n", "plt.grid(True);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Conside the ODE\n", "$$\n", "y' = -y + 2 \\exp(-t) \\cos(2t)\n", "$$\n", "with initial condition\n", "$$\n", "y(0) = 0\n", "$$\n", "The exact solution is\n", "$$\n", "y(t) = \\exp(-t) \\sin(2t)\n", "$$" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def f(t,y):\n", " return -y + 2.0*np.exp(-t)*np.cos(2.0*t)\n", "\n", "def yexact(t):\n", " return np.exp(-t)*np.sin(2.0*t)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Step size = 0.05')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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X1bvdHnGmAMUFxfHwoULueuuu/ZZtmDBAp555pm902lpwaHYFy9ezHHHHce5557L2LFjuemmm3jssceYNWsWU6ZMYePG4BfI8vJyzj77bGbOnMnMmTN59913AbjllltYuHAhJ598MhdeeCGLFy/mjDPOAKChoYGLL76YKVOmMHXqVJ599lkAvvnNb1JcXMykSZP40Y9+FP7PIexrPAQ992EpHn+AC44atnfej740iVc+2c1flm7lx/MmO1idMX3frf9YzZqddWFd58TCDH70pUn7bXf11VczdepUvvOd7/R43StXrmTt2rXk5OQwcuRILrvsMj744APuuece7rvvPu6++26uv/56vvWtbzFnzhy2bdvGKaecwtq1awFYvnw5S5YsITk5mcWLF+9d72233UZmZiarVq0CoLq6GoCf/vSn5OTk4Pf7OfHEE/n444+ZOnVqLz6N7llQHCRV5cll25k+JIvxBRl75+ekJjB3cgHPf7SD7582gaR4t4NVGmMOVEZGBhdeeCH33nsvycnJPXrNzJkzGTQoOBz6qFGjOPnkkwGYMmUKb731FgBvvPEGa9as2fuauro66uuDeyDOPPPMTrf1xhtv8MQTT+ydzs7OBuCpp57iwQcfxOfzsWvXLtasWWNBEUs+Lq1l/Z4Gbv/KlH2WnVs8hBdW7OS1NWWcOa3QgeqM6R968s0/km644QYOO+wwLr744r3z4uLiCASCJ6yoKh6PZ++yxMTEvc9dLtfeaZfLhc/nAyAQCPCf//yn00BITU3ttA5V3ef01s2bN3PnnXeybNkysrOzWbBgQdivZrdjFAfp3Y3Bg1wnTRy4z7KjRuZSlJ3M0yXbo12WMSaMcnJyOPfcc3nkkUf2zhs+fDjLly8H4IUXXsDr9fZqnSeffDL333//3ukVK1b0+jXV1dXU1dWRmppKZmYmZWVlvPzyy72qoycsKA7SB5urGD0gjdy0xH2WuVzCl6YV8p+NldS39O6XyBgTW2688cbPnf10+eWX8/bbbzNr1izef//9LnsBXbn33nspKSlh6tSpTJw4kQceeGC/r/nBD35AdXU1kydPZtq0abz11ltMmzaNGTNmMGnSJC655BKOPvroXr+3/emXY2YXFxdrNAYu8geU6be+xpemF/KzL++76wng/U2VnPfgUn5/weGcMqkg4jUZ01+sXbuWCRMmOF1G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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t0 = 0\n", "T = 10\n", "h = 1.0/20.0\n", "t,y = euler(t0,T,0,h)\n", "te = np.linspace(t0,T,100)\n", "ye = yexact(te)\n", "plt.plot(t,y,te,ye,'--')\n", "plt.legend(('Numerical','Exact'))\n", "plt.xlabel('t')\n", "plt.ylabel('y')\n", "plt.title('Step size = ' + str(h))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Study the effect of decreasing step size. The error is plotted in log scale." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "hh = [1.0/2.0, 1.0/10.0, 1.0/50.0]\n", "for h in hh:\n", " t,y = euler(t0,T,0,h)\n", " ye = yexact(t)\n", " plt.semilogy(t,np.abs(y-ye))\n", " plt.legend(hh)\n", " plt.xlabel('t')\n", " plt.ylabel('log(error)')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "All looks lovely now but why are we not done yet?\n", "\n", "## Instability of forward Euler scheme\n", "\n", "Consider the ODE\n", "$$\n", "y' = -5 t y^2 + \\frac{5}{t} - \\frac{1}{t^2}, \\qquad t \\ge 1\n", "$$\n", "with initial condition\n", "$$\n", "y(1) = 1\n", "$$\n", "The exact solution is\n", "$$\n", "y(t) = \\frac{1}{t}\n", "$$" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def f(t,y):\n", " return -5.0*t*y**2 + 5.0/t - 1.0/t**2\n", "\n", "def yexact(t):\n", " return 1.0/t" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of iterations= 126\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t0 = 1.0\n", "y0 = 1.0\n", "T = 25.0\n", "h = 0.19\n", "t,y = euler(t0,T,y0,h)\n", "print('Number of iterations=',len(t))\n", "te = np.linspace(t0,T,100)\n", "ye = yexact(te)\n", "plt.plot(t,y,te,ye,'--')\n", "plt.legend(('Numerical','Exact'))\n", "plt.xlabel('t')\n", "plt.ylabel('y')\n", "plt.title('Step size = ' + str(h));" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "So until now everything looks great but what if we change the parameter $h$ slightly. This will be an issue of stability." ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of iterations= 114\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEkCAYAAAA4g9b0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3zU9f3A8dc7uSSXedkbSBiyXaBQFw5ctbaKWvtr+xO1Vq1ad23t+IFatGrV9tcWx8+NtlZxgbWiIK4KYhCQKZuQQfbeyX1+f3y/d7kLgQySO8b7+XjcI8nnO+59F7h3PluMMSillFK9FRLsAJRSSh1aNHEopZTqE00cSiml+kQTh1JKqT7RxKGUUqpPNHEopZTqE00cSvWTiOSIiBGR2cGORalA0sShBpWIDBeRp0Rkk4g0ikiViGwQkRdE5Iwu584WkYuCFauyiMi3ReRzEWkQkUoReU1Ecnt5rYjIj0XkFRHZav/O80VkgYhM2cc1d9vPsd1OxDsH9AWpASc6AVANFhGZDHwMtAEvAuuBSOAo4ELgbWPMTT7nG+AFY8yVgY+270REgAig3RjTHux4BoKIzADmA2uA/wNcwK1ABzDZGFPUw/VOoAlYDfwL2AFkANcDmcAVxpiXulxjgErgK2ASUGuMyRm4V6UGmiYONWhEZCHwHeA4Y8zqLsdCgHTfD6JDLXEcbkQkDNgJtAPjjTH1dvmxwErgGWPMtT3cwwGcbIz5uEt5GtYfDh1AhjHG7XNsuDFmu/39OiBGE8fBTZuq1GAaBVR0TRoAxhi3J2l4+grsQzPt5grjU4Z93nQReV9EqkWkWUS+FpHru95bRHaKyEcicryIfCgi9XaTywsiktqbwEVkiIg8KyK7RKRFRErt5puZPufs1cdhP6/Zx2Nnl+cYJSLzRKRYRFrtuB8WkejexDgIpmHVCp72JA0A+/f3EXC5nVz2yRjT3jVp2OUlWLXPVPvhe2z7gYeuAskR7ADUYW0bMFpEZhhj3tjPeWXAfwPzgE+Bp7qeICLXAk8Ay4E5QANwNvC4iIwwxvyiyyXZwBLgdayml+OBq4HJInKCMaZxX8HYfzV/AGQBc4HNWE02RwOnAi/s57XMAZ7uUjYCmA2U+DzHJOBDoBp4EigEjgFuBk4WkWnGmLb9PA8iEgM493eOj2bfZLAPJ9hfl3VzbDlwJlYz4/pePmdX2UAr1mtWhzJjjD70MSgP4FtYHxQG68P3WeBnwNh9nG+A57spzwCagb93c+zPWM0fI3zKdtr3urXLubfZ5b/qIe6j7fPu6uG8HPu82fs5JwHYBJQDI33K19jlsV3Ov9i+55W9eH+ft8/tzWOv97Wb+/3FPnev3w9wg33snH7+W/i2ff2LPZy3DtgZ7H+7+tj/Q2scatAYY5bZf1nfAZwPXGU/EJHPgJmmd80Ul2J1Qj8jIsldji3E+iv9LKwajkct8HiXc+di/eV/MfCH/Txfjf31DBF53hhT2osY92I367wO5ALTjTFb7fKJWMlpFhAhIhE+l32GVZs6Bysx7M9DwEs9nOOx305tW5T9taWbY81dzuk1ERmFVZssxPq3oA5xmjjUoDLGrAWuBBCRYVjt6NdgNfm8LSKTjDGtPdxmrP118X7OSevy83ZjjN8HoDGmRUS2A8N7iHmXiMwB7gaKRWQ1VrPXa8aYL3uI1deTwBlYI4k+9Sn3vJ577Ed3ur6e7uLcAGzoQzw98TTfRXRzzNnlnF6xh/EuwaptnG+MKet/eOpgoYlDBYwxZhfwooh4+jJOBk7E+it7f8T+egVQvI9zutZc9jVcUPZR7n+xMb8VkWeBC7CS3DXAL0TkIWPML3u6XkR+jVW7+r0xZt4+YngEeG8ft6jqxXO4sIY390aTMaamh3M8tZIsYGOXY1n218JePh8ikgMsBWKAs+w/ItRhQBOHCjhjjBGRL7ASR1ZP5wNb7K/lxpj91Tp8jRCRcN/ajN0klIvVt9CbOLdjtfv/xZ6fsAi4S0Qe2V/zlYh8H/g98E/gf7o5xfN6OvrwerrzZ2Bmj2dZXsCu+e2Hpzb1Lfau3U3Fav7b3Jsns2uXS7EGFUw3xqzqZZzqEKDDcdWgEZGz7RFKXcsjsdrwwb+ppR5I7OZWr2K1u99jX9v1fq4u/QQAcVgdur5usMvf6iFuV9dhp8aYZjr/Ck/Yz7VTsT6kv8Dq4O6u5rMKqxP4ehHZq9lMRBwi0t370NVDWCPLevN4qBf3+xirRneNPWLLE88xwOlYTXVtPuUuERnTtd/JThofYb1P5xhjVvbiudUhRCcAqkFjT+ZKAhYAa7Hax4cAP8Qa1vmiMcZ3XsQHWLWQe4B8rMrJK/axq7CGue7G6mjdBaQAE4GLgHHGmJ32uTuxJrElYXVOr8SakXw18A3WDOiG/cR9EdaQ4Nft8+vt638K5Bljptrn5WDNjL7HGDPbLiuxn/cuoGutpN4Y85Z93rFYw3HDsUabrcfqeB4JzADuNsY8v883d5CIyGVYNSXPzPE4OkejTTLGFPqceyXwHP6vP9a+Nhertraim6f5wFjzOjz3+W9gmP3jz7Hek0fsn3d109Sngi3Yw7r0cfg+sGoVf8P6ICnH+jCvwGrCuBoI6XL+KOB9rCYRY/3z9Dt+MvAm1gdyK1ab/FKskTpOn/N2Yv3FezzWh3MDVp/BPCCtF3HnYs0Z2WjH0mB/fy/g8jkvhy7Dcdn/kNidXZ5nmP08O+3XU4GV5B4AhgTx9/YdrHkbjfb7Nh+f4c4+513ZzevP2c/r9zxO73Kfj/Zz7kfB/nesj70fWuNQhx27xrHTGHN6kENR6rCkfRxKKaX6RBOHUkqpPtHEoZRSqk+0j0MppVSfHBETAJOTk01OTk6ww1BKqUPKypUry40xKV3Lj4jEkZOTQ15eXrDDUEqpQ4qI7OquXPs4lFJK9YkmDqWUUn2iiUMppVSfBDxxiMhIEXlSRNaISIeIfNTL61wi8pyIVIlIjYi8LCJJgxyuUkqpLoLROT4eaxvJ5ViLmfXWP4HRWPsiuIEHsVY5PXWgA1RKKbVvwUgcC40xbwOIyHyg61agexGRbwHnAtOMMZ/YZYXAFyIy3RzYngZKKaX6IOCJwxjj7sdl5wMlnqRh32eFiOywj2niUKoPamtrKS0tpa2treeT1WEnLCyM1NRU4uLi+nX9oTKPYwzd79q20T42KJZsLOGbkjpuOH3kYD2FUgFXW1tLSUkJWVlZREZGItKr3XTVYcIYQ1NTE4WF1tYq/Ukeh8qoqgSgupvyKvaxG5uIXCsieSKSV1ZW1q8nbfz8aSZ91NudOZU6NJSWlpKVlUVUVJQmjSOQiBAVFUVWVhalpfvcAXm/DpXEAdamLl3JPsoxxjxljJlsjJmckrLXjPleSaSGKazD3dba88lKHSLa2tqIjNxrB151hImMjOx3U+WhkjiqgPhuyuPpviYyMKKsbZ8bavqXlZU6WGlNQx3Iv4FDJXFsovu+jH31fQwIibYGfDVUaeJQSimPQyVx/BtIF5FTPAUiMhkYbh8bFI4Ya35hc03/+kiUUupwFIyZ41EicqmIXApkASmen0Ukyj5nq4g847nGGLMMWAS8KCIzROQi4GXgs8Gcw+FwZbHaPYKGNt2zRKmDzezZsxERzj333L2OXXrppZx++umBD6ofTj/9dC699NIBv6+I8Ne//nXA7wvBGY6bCrzWpczzcy6wEyuu0C7n/AB4DHgWK+G9A9w8aFEC4emj+U7rfTwVdyzjB/OJlFL99v777/Pll19ywgknBDuUfpk7dy5hYWHBDqNPgjEBcCfWaKj9nZPTTVk1cJX9CIg4p/XLrG1uD9RTKqX6IDExkezsbObMmcNbb70V7HD6pKmpicjISMaNGxfsUPrsUOnjCIq4SAevht/D8PWDU91TSh0YEeHXv/41CxYsYO3atd2eM3v2bJKT917ZqGtTTk5ODnfeeSd/+MMfyMjIwOVycccdd2CM4d1332X8+PHExsZy0UUXUVVV5XevyspKrrvuOtLS0nA6nZx00kl88cUXez3fo48+yq233kpKSgoTJ04Eum+q+vrrr7nwwguJj48nJiaGE088kQ8++ACAhoYGbrrpJkaPHk1UVBS5ubnceOON1NbW9v0N7KdDZeZ4UMREOEinkoa6ncEORSm1D5dddhmzZs1izpw5vPLKKwd0r1deeYUTTzyR5557jpUrV/Lb3/4Wt9vNJ598wn333UdTUxM33XQTd999N0888QQALS0tTJ8+nerqah5++GFSU1N5/PHHmT59Olu2bCE9Pd17/4cffpjTTjuNefPm4XZ3v/rSpk2bOPnkkxk9ejRPPPEESUlJ5OXlsXv3bgAaGxvp6Ohgzpw5pKSksHv3bubMmcNll13GokWLDuj195Ymjv1whIZQI3FEtlT1fLJSh7B7Fq5nQ1Hg/mL1NS4zjlkX9r8XMSQkhF/96lf85Cc/4d577+Woo47q972cTievvfYaoaGhnHfeebz99tv85S9/YcuWLeTm5gKwZs0aXnjhBW/ieOmll1i3bh3r169n1KhRAEyfPp3Ro0fzyCOP8PDDD3vvn56ezj//+c/9xnDPPffgcrn49NNPvRM1zz77bO/xlJQUHn/8ce/P7e3t5Obmcsopp5Cfn8/QoUP7/fp7S5uqelAfEkdE6+DNMVRKHbgf//jHDB06lAceeOCA7nP66acTGto5LmfkyJHk5OR4k4anrKysjNZWa0WJxYsXM2nSJHJzc2lvb6e93eoTnTZtGnl5eX73v+CCC3qM4cMPP+Tyyy/f7+z+efPmcdxxxxETE0NYWBinnGLNVNi8eXPvX+wB0BpHDxodLiLbi4MdhlKD6kD+4j8YOBwO7rrrLm6++WZmz57d7/vEx/svUBEeHt5tmTGG1tZWwsPDKS8vZ/ny5d2OjBoxYoTfz2lpaT3GUFFRQUZGxj6Pv/nmm1xxxRX87Gc/4/777ycxMZHi4mIuvvhimpube7z/QNDE0YOdznGEt4vuFqXUQe7qq6/m97//PQ8++KBfudPp9NYOPLp2bh+IxMREJk+e7Nd85BEREeH3c2+W+UhKSqK4eN9/rL722mtMmTKFuXPness+/vjjPkR84DRx9GBZ8gxer27WxKHUQS4iIoI777yTu+++m0mTJnlrANnZ2dTV1VFYWEhWVhZgzf0YKGeddRbvv/8+Q4cOJTU1dUDu9+qrrzJnzhycTudex5uamvZKSC+//PIBP29faB9HD+KcYdQ262Y3Sh0KrrvuOmJjY/n888+9Zeeddx6RkZFcffXVvP/++zz55JP84Q9/GLDnvOKKK8jNzeX000/n2Wef5aOPPuL111/nl7/8JY899lif7zdr1ixqamo47bTT+Oc//8nixYt5+OGHefbZZwGro/yTTz5hzpw5LF68mNtvv50lS5YM2OvpDU0cPTiu7SsWNM2EPeuCHYpSqgdRUVHcdtttfmXJycm8/vrrFBQUcNFFF/HSSy/x97//fcCe0+l0snTpUs4++2xmzZrFOeecwy233MKWLVs48cQT+3y/0aNH89lnn5GcnMw111zDxRdfzPz58xk2bBhgJcc77riDP//5z8yYMYNdu3YN6OvpDTHm8F+HafLkyabr6IbeevW1f/D99dfj/vHbhIw8fWADUyoINm7cyNixY4MdhjoI9PRvQURWGmMmdy3XGkcPQmKsGafNdbpCrlJKgSaOHoXFWomjRZdWV0opQBNHj5xx1p4cbXXlQY5EKaUODpo4ehAbFcWr7dOojs7t+WSllDoCaOLoQVxkGHe1X8fOtLN7PlkppY4Amjh64N2To6klyJEopdTBQRNHD+IiHfw17M+c/vHlwQ5FKaUOCpo4ehAT4aCZCMJbdWl1pZQCTRw9coSGUB8Sh7NNl1ZXSinQxNErTQ4X4e5maG0MdihKKdvs2bMRkW4fL730UkBjeeqppw65Pc8PhK6O2wst4QnQBDRVQnhUsMNRStlcLhfvvffeXuUjR44MaBxPPfUUEyZM4KKLLgro8waLJo5eKI4azTshl/Cd0PBgh6KU8uFwOJg6dWqwwzjiaFNVL1TEjWVu+FUQc+Br7SulAuPhhx/G6XSyYcMGb9mKFStwOBw8/fTTADQ0NHDTTTcxevRooqKiyM3N5cYbb6S21n//9Y6ODh544AGOOuooIiIiyM7O5sorrwSs7WZXrlzJCy+84G0qe/755wP1MoNCaxy9EBfhYGdTndXHoU1VSh1UPHt8+3I4HNxxxx28/fbbzJw5k2XLltHe3s7MmTM555xzuOaaawBobGyko6ODOXPmkJKSwu7du5kzZw6XXXYZixYt8t7vuuuu48UXX+Suu+5i2rRpVFZWMn/+fADmzp3LJZdcwvDhw/nd734H7L1l7OFGE0cvpIc18Gjzf8Gqh2DKdcEOR6nB8dwFe5eNvwhO/Kn1R9PLl+19/NgfwnE/goYKePWKvY+fcDVMuARqCuCNbv7vnHQTjD6/3yFXVFR0u9f3jh07yMnJ4fnnn+fYY4/lgQceoKqqipKSEr9Nj1JSUvy2fG1vbyc3N5dTTjmF/Px8hg4dyqZNm3jmmWf485//zM033+w99/LLrbld48aNIzo6mpSUlCOm2UwTRy+ExSTgNoI0lNPzjsFKqUBxuVwsXrx4r/LMzEzA6iR/8MEHue222+jo6ODFF1/0HvOYN28ejz76KFu2bKGhocFbvnnzZoYOHcrSpUsBvE1TShNHr8RGRVJDNNH1FWj3uDpsXfWvfR8Lj9r/8eik/R93Ze//eD85HA4mT95rnyE/l1xyCbfddhuJiYlcdpl/renNN9/kiiuu4Gc/+xn3338/iYmJFBcXc/HFF9Pc3AxYtZro6Gji4uIGPP5DlXaO90KcM4xKE0t7vS6trtSh5vrrr2fo0KG0tLQwe/Zsv2OvvfYaU6ZMYe7cuZx//vlMmTKFhIQEv3OSkpJoaGjYq8P8SBbwxCEi40RkiYg0ikiRiNwrIqG9uG6yiLwvIhUiUikii0VkSiBijot0UEUs7oaKQDydUmqAvPjii7zzzju89NJLPPLIIzz00EOsWLHCe7ypqYmIiAi/a15++WW/n88880zvvfYlPDzcW0M5EgS0qUpEEoDFwAbge8AI4BGsBPbb/Vw3xL7uK8DTA/cL4H0ROdoYs2sw445zhvH39jO5IfcoAjutSCm1P+3t7Sxfvnyv8iFDhmCM4ZZbbuEXv/gFU6dOZerUqbzxxhvMnDmTVatW4XQ6Ofvss7nxxhuZM2cOU6ZM4d133/XrPAcYPXo01157LXfccQelpaWcdtppVFdXM3/+fF555RUAxowZw6JFi1i0aBFJSUnk5uaSlJQUkPcgKIwxAXsAdwNVQJxP2V1Ao29ZN9ddD3QA8T5lCXbZz3p63kmTJpkDsbag2gz75Ttm0briA7qPUgeDDRs2BDuEATFr1iwDdPu47777zLnnnmsmTJhgWlpavNcUFBSY+Ph4c/vttxtjjGlvbzd33HGHSUlJMbGxsWbGjBlm+fLlBjALFy70Xtfe3m7mzJljcnNzTVhYmMnKyjJXXnml9/i2bdvMWWedZeLi4gxgnnvuuYC9Dweip38LQJ7p5jNVrGOBISKfAEXGmB/4lA0FdgHfNcYs3Md1Pwf+CEQbY9rtsjCgHrjNGDN3f887efJkk5eX1++48ysaOfvhRfzveUmcO+1UEB1bpQ5dGzduZOzYscEOQx0Eevq3ICIrjTF7jT4IdB/HGGCTb4ExJh+rxjFmP9e9bp/ziIikikgq8BhW7eW1QYrVKy7SwY9Cl3DuRxdCky6vrpQ6sgU6cSQA3a1PXmUf65Yxpgg4A7gEKLEfM4BzjTFl3V0jIteKSJ6I5JWVdXtKr8VEOCg0dntlTcEB3UsppQ51wRiO213bmOyj3DookgHMB1YC59uPlcC/7KauvZ/EmKeMMZONMZNTUlIOKGBHaAg1YfY6VZo4lFJHuEAnjiogvptyF93XRDx+gTUC7FJjzHvGmPewah8dwJ0DHmU3JH6I9U1tYSCeTimlDlqBThyb6NKXYQ+1jaZL30cXY4D1xpg2T4ExphVYjzWkd9BlZw2hhTBM9e5APJ1SgyqQg2LUwelA/g0EOnH8GzhXRGJ9yi7H2ibp4/1ctwuYICLeFT9EJAKYAOwchDj3Mi4rnt+2XUXFsP4vyKbUwSAsLIympqZgh6GCrKmpqdsFInsj0InjCaAFeENEpovItcBs4FFjjHc+v4hsFZFnfK57GsgE3hSRC0TkO8BbQAbwVCACH5/p4rWO01njHh6Ip1Nq0KSmplJYWEhjY6PWPI5AxhgaGxspLCwkNbV/ewwFdOa4MaZKRM4C/gosxOrXeAwreXSNK9TnupUich4wC5hnF68FzjbGrBnsuAHGZsSSRiVVGz+CsZcH4imVGhSexfqKiopoa2vr4Wx1OAoLCyMtLa3fCzcGfHVcY8wG4MwezsnppmwJsGTvswMj1hnGTbEfc/HXr8NFl0JIj8trKXXQiouL09VeVb/p6rh9EJowhFDcULcn2KEopVTQaOLog9jUHADqS3cGNQ6llAomTRx9kDbUWhu3MH9LkCNRSqng0cTRB8OHjwagunhHkCNRSqng0a1j+yA5OZk7Q39JHMcTkB2klFLqIKSJo48qsqeztuzI2elLKaW60qaqPjrDtYfh5UtpbusIdihKKRUUmjj66PS6d5jjeIrNJXXBDkUppYJCE0cfRSQNI1Hq2VOuGzoppY5Mmjj6KDLZ2v6jqXxXkCNRSqng0MTRR1H2JMC2Kl1eXSl1ZNLE0UeOBHtDpxrd0EkpdWTSxNFXcdncHPMIH4dODXYkSikVFDqPo69CHVQlTKS2sT3YkSilVFBo4uiHaWYlRdV7gJODHYpSSgWcJo5+OLnhAyJaN2HMPYhIsMNRSqmA0j6OfmiPySCdCmqbdPc0pdSRRxNHf8QPJUpaqCgrDnYkSikVcJo4+iE0ZRQAjYUbghyJUkoFniaOfojMHAdAe9nmIEeilFKBp4mjH+LTczmx+W+sTLww2KEopVTAaeLoB1dUBFWhiZTVtwY7FKWUCjhNHP0QEiJ8L3ItJ215ONihKKVUwGni6KdjwndzWuV8aKkPdihKKRVQmjj6qTZ6uPVNuXaQK6WOLJo4+qk5fqT1jSYOpdQRRhNHP4UkjaDNhOIu/SbYoSilVEAFPHGIyDgRWSIijSJSJCL3ikhoL6+dISJfikiTiFSIyHsiEj3YMXcnyRXNVpNFS0NNMJ5eKaWCJqCJQ0QSgMWAAb4H3AvcAdzTi2uvAf4O/Bs4H7gG2EKQFmpMiYng/NYH2HHi7GA8vVJKBU2gP3SvByKBGcaYWuADEYkDZovIQ3bZXkQkGXgM+Lkx5v98Dr056BHvQ3JsBCCU1bcEKwSllAqKQDdVnQ8s6pIgXsFKJtP2c9337a8vDFZgfZUSE8HRso2xi34I5VuDHY5SSgVMoBPHGGCTb4ExJh9otI/tyxTgG+AnIlIgIm0i8oWInDR4oe5fSmwEboTUihVQuj5YYSilVMAFOnEkANXdlFfZx/YlHRgN/Bb4JXAh0AC8JyJp3V0gIteKSJ6I5JWVlR1Y1N2IjnBQHDbE+kEXO1RKHUGCMRzXdFMm+yj3CAFigJ8YY142xrwHXAR0ADd1+yTGPGWMmWyMmZySknKgMXcrJtZFpSMNynVIrlLqyBHoxFEFxHdT7qL7mohHpf31I0+B3U+yEhg3UMH1VUpMBLtDs6FME4dS6sgR6MSxiS59GSIyBIimS99HFxuxaiRdN/gWwD2QAfZFSmwEeWYMxA8NVghKKRVwgU4c/wbOFZFYn7LLgSbg4/1c9w5WkjjDUyAiLmASsGYQ4uyVMelx3Fd7AX9KnoUx+2tpU0qpw0egE8cTQAvwhohMF5FrgdnAo75DdEVkq4g84/nZGJMHvA08IyIzReQCYAHQBvwtkC/A1w1njGDG8Vn8afEWZr+9Drdbk4dS6vAX0MRhjKkCzgJCgYVYM8YfA2Z1OdVhn+Prx8BbwKPAfKykcaZ9z6AICw3hj5cczbLE2WTmPcDTn20PVihKKRUwAV+uwxizATizh3NyuimrB35mPw4aIaEhpCfG863m7TxZoOtWKaUOf7o67gCQrEmMNtspraoLdihKKTXoNHEMhOzJRJgWIqu3BDsSpZQadJo4BkLWJACyGzfQ3hG00cFKKRUQmjgGQkIOm4d+nx0mndI6XS1XKXV408QxEEQoPGkOy9zjKa5pCnY0Sik1qDRxDJAMVwTDZA97KnRklVLq8KaJY4AMqVzOxxG34969ItihKKXUoOp14hCR74iIJpp9iMqZDICzZFWQI1FKqcHVl0TwNlAoIg+KyNjBCuhQJdFJFIRkkFSzLtihKKXUoOpL4hgBPIW1jes6EVkmIj+19wxXQL5zDEObNgQ7DKWUGlS9ThzGmJ3GmFnGmFzgbGAr1jpTxSIyT0TO2P8dDn9lrqNJdldAbVGwQ1FKqUHTrz4LY8yHxpj/Bo7C2kzpR8BiEdkhIreJSMDXwDoYVGSdzs9ab6ElLLbnk5VS6hDVr8QhItNE5HngG2AC1tLm5wCvYa14++JABXgoiUkbxb/dUyhp7Lqwr1JKHT76MqpqmIj8j4hsAz4EhgDXAhnGmJ8bY5YYY+4CZgLfG5xwD24Z8U6GSgnu5Y+DbuyklDpM9aVJaTtQBDwPPGuM2bGP89YDR+RkhgxXJN8K2UDOl/8HJ1wAqWN6vkgppQ4xfUkcFwLvGWP2u4qfMWYzPlu8Hkky45181jEBwoBtH2riUEodlvoyqurdnpLGkS4q3EF9ZCZlEUOtxKGUUochnQk+wDJcTr6OOB52/Ye3vtzOnH/pvA6l1OFFE8cAy4yP5NOOiZiONuYteI8Xl+3CaEe5UuowckTOtxhM6S4n7+4aS8WwN1m5qRZwU9HQSnJMRLBDU0qpAaE1jgGW6XJS2gQLN9VyYk4iAIVVukeHUurwoYljgGW4IgG4OHEXz5nfkkgthdWaOJRShw9NHANsQpaL2AgH15wxluiSPM4IWU2RJg6l1GFEE8cAG50ey9ezz2H85NMxriF8L+wLCrSpSil1GNHEMQhEBP5n1d0AACAASURBVESQ8RdzknxNVUVJsENSSqkBo4ljMI2/GAcdDC9fGuxIlFJqwGjiGEyZx7E64Ry2NEYHOxKllBowmjgGkwjLjvkD7zRNpKGlPdjRKKXUgAh44hCRcSKyREQaRaRIRO4VkV5vYCEiISKyUkSMiHxnMGMdCJnxTpKooXz76mCHopRSAyKgM8dFJAFYDGzA2rNjBPAIVgL7bS9vcw2QNSgBDoLshEj+Hj6HuKVZMPb9YIejlFIHLNA1juuBSGCGMeYDY8wTWDsG3i4icT1dbCeeOcBvBjfMgZMZH8l77hOJL10BdSVsLqlj2sNLdW6HUuqQFejEcT6wyBhT61P2ClYymdaL6+8D/gMsGYTYBkVqrJN33SchGFj7KgvXFLGropG1hTXBDk0ppfol0IljDLDJt8AYkw802sf2SUSOBq4C7hy06AZBaIjQGD+C7ZETIO9ZPt5kzenQGodS6lAV6MSRAFR3U15lH9ufvwB/M8Zs7c0Tici1IpInInllZWV9DHNgZboiWRD2bUzlDkzxGkATh1Lq0BWM4bjdbU4h+yi3Dor8ABgN/L7XT2LMU8aYycaYySkpKX2PcgBlJUTyZvMk3j/rXdaa4YSHhlBU3RzUmJRSqr8CnTiqgPhuyl10XxNBRMKAh4EHgRARiQc8HenRIhI7GIEOpOz4SHbXdbAg30lyTDiTh8XrirlKqUNWoBPHJrr0ZYjIECCaLn0fPqKBbOBRrMRTBayxj70CrBqUSAdQZnwkbgNLNhTznPNPXNX2ijZVKaUOWYHeAfDfwC9EJNYYU2eXXQ40AR/v45p64IwuZenAP4BfAx8ORqADKSvB2qOjuQOSY8IYXrGAqrozaWnvIMLR67mPSil1UAh0jeMJoAV4Q0Smi8i1wGzgUd8huiKyVUSeATDGtBtjPvJ9AMvtU9caY74I7Evou6x4K3GIQMzJ1xLdVsn5IV9QUtMS5MiUUqrvApo4jDFVwFlAKLAQa/LfY8CsLqc67HMOC5l24jgmO57Y8efR6BrJjY63KapuAMAYwxXPruCNrwqCGaZSSvVKwEdVGWM2GGPONMZEGmMyjDG/M8Z0dDknxxhz5X7usdMYI8aYdwY94AHgDAtl+tg0fnjiUAgJof7EWxkdUgAbFwBQWtfCJ5vL+GxreZAjVUqpngW6j+OI9fTMyd7v4yZfzu/fXUZa2DFMBdbZs8j31OgQXaXUwU+XVQ8CZ0Q4b0VezPaGCADWFVrdO5o4lFKHAk0cQZIZH0n8nv/AG9exvtCawlJU04Qx+5wHqZRSBwVNHEGS4XJCbTF8/QqJBYsBaG5zU9PUFuTIlFJq/zRxBElmfCQvN55IR+JIrm15nklZUQAU+zRX1Ta3UVyjEwWVUgcXTRxBkhUfSW0rrBzzS4aH7OG2OGseo28/xwPvbuLHTx/001SUUkcYHVUVJJ65HS9XjqKm43jOLHiGFMb41Tg2FNWQX9mI220ICZFghaqUUn40cQSJJ3F8uKmU4shrOHN6E1VvxrHHbpoyxrC9rIG2DkNVYytJMRHBDFcppby0qSpIMuOdANQ1txOfPZrQE68hKTaSYnvxw/L6Vupa2gEoqdWlSZRSBw9NHEGSHB1BeKj19k/IcgEww7mSa7beAO0tbC+r955bUqfzO5RSBw9NHEESEiJk2LWOCVnW9iJRUbGMbl0PS+9ne3mD99zS2s7EsbG4lhPnLNbJgkqpoNHEEUSZLqufY3ymVeOozJrGa+Ys+Px/adn+OeEO69fj21S1clcVpXUtfFNSt/cNlVIqADRxBNGI1Giy4iNJjbU6vjNcTma3/BB3XDbnb72XsUmhJEWHU+JT4yiosvpAyuq030MpFRyaOILol+eNYf7PvoWINdQ23RVJA5EUTfsjKe1FfNe5htQ4p1+NY3dVIwCl2u+hlAoSTRxBFOsMI8NurgJ7GRJgc9SxfK/tfiqHX0hqbIRfkthXjWPxhhLdx1wpFRCaOA4i6XFW4vhiRyVrO4YxPDmG48N2Ele90XtOQaVV4/BNHG0dbq5/aSXPfbYjsAErpY5IOgHwIJJmJ45l2yoAyE2K4IzCe5nR1kxH/Qxawl1UNLQC1uZPHiW1zbS7jV+ZUkoNFq1xHETCHSEkx0Sw1t7YaURqPF8c+wCpVNHx6kwKyq3ysFCh3CdJeJYpKa/XxKGUGnyaOA4yGS4nxkBSdDiuqDBCh5zAr9uuITz/U+IW3YLgZlymy6+pqqi6+36Psjr/iYRKKTUQNHEcZNLtDvLhKdGA1Xz1uvs0tk64jfRdC7kk9FOOHxpPXUs7Ta3WVu2eGkdZlxrHA+9u5Kcv5gUweqXUkUATx0HGM7IqN7kzcQB8kX0lbw6/l3flNMZlWDPNPTUMz/pW1Y1ttLa7vffaVdlIYbXuKqiUGliaOA4ynTWOGACSY8IRgZK6VhbJKaQnxJDtqOay0I8oq7dqGkU+y49UNHTWOvbUNNPc5qbBrpkopdRA0MRxkPHUOIbbNQ5HqNVhXlrbTEF1I0MSojhq2/M8HPYUUXmPA1Bc00SovV9HeZ016srtNt4Z5759Hy3tHSxYU6S1EKVUv2niOMhMyU3i1FHJnJCT6C1Li4ugpLaZgqomshMiMdPv4Z2OKYxd+xB8+ijFVU0clRYL4K2FlDe00O62koNv4vhgQwk3/2MV64tqA/iqlFKHE00cB5nM+Ejm/WQKCdHh3rK0WCfbyhqobmxjSGIUCbHR3N7xczYmnwNL7uGm1qc5Nstq2vLUOEpqOpOFb+IotGeeF+vqukqpftLEcQhIjXOSb88Yz06IJDREiI+O5IW031Bz7HVMDdnIsRnWQomekVXFNZ3Lj5T5LFmyx26+0rWulFL9pYnjEJAW17lt7JCEKABS4yIobWhj/YS7uKR1NkPSUklzttFcUQDgt6JueX2r93vPPh6lPgsnGmO48rkVvL9+z6C+DqXU4SHgiUNExonIEhFpFJEiEblXREJ7uOYEEXlORLba130jIrNExBmouIPJMyQXrBoHQEpMBGV1LRTVNNOIk4z4SO5xvMBPN14JOz+juKYZR4iQbJ/n0Vnj6Cyrbmzjo2/K+HRLeWBekFLqkBbQxCEiCcBiwADfA+4F7gDu6eHSy4ERwIPAt4G/AbcDLw9asAcRT40jKjyURLvvI8VeNdczhyPD5WRR/A+oIxpe+C6jd7xAWmwEaXERfhMDPTUO3+arIrtZy7eWopRS+xLoRQ6vByKBGcaYWuADEYkDZovIQ3ZZdx40xpT5/PyRiDQDT4rIMGPMrkGOO6hSY60aR3ZCpHfvjtRYJ+X1rRRWN5EYHY4zLJTWhFFc1/ww72S/zPc2zWVI+Bc8H/VLdtRZ13T4LIToVwuxk0nXxPHeumKKa5q56uTcQX+NSqlDR6Cbqs4HFnVJEK9gJZNp+7qoS9LwWGV/TR248A5OnqYqT/8GWDWODrdhQ3Gtd+5HSmwEu+pD4fKX+HP4teS680mJcniTRHl9Cx1uQ4j4N1UVeROH/5IlLy3P58mPtw/qa1NKHXoCnTjGAJt8C4wx+UCjfawvTgLcwDcDE9rBKyk6nPDQEIYk+icOgI3Ftd7NoJJjwqlrbqe53c2TzWcxd+JrRCRmUVHfhHvpHyjbUwjAyNQYyupacNvzPPbYTVVldmLxKKpuorSumfaOzmVMlFIq0IkjAajuprzKPtYrIpIO/AaYt5/mrcNGSIjwzJWTuX7aCG+ZZ5/ytg5DZnxnjQNgR3kDja0dpCa4SI6JYIzZgXz6R46afyYzQj7h6CwX7W5DVaM12qq42qpxdLgNFXZ/iDGGwuom3Ma/drJpTy0X/O+n1DS2Df4LV0odlIIxHLe7tS5kH+V7nygSDrwK1AO37ee8a0UkT0Tyysq6a+k6tJw6KsW7jhV0JgnAp8ZhlXn280hzOUmJjWCtGc6uy96jOnIYj4Y/wS+KbmW87PQmBN/JgJ7mqoqGVlrsBRN954R8vrWC9UW1bNxz2OdrpdQ+BDpxVAHx3ZS76L4m4kesnuEXgfHAt40xVfs61xjzlDFmsjFmckpKSn/jPWj5Jo6uNY51duLIsBMHQGFYDs+OfoLftF9DYtMu/jfsL5TWemaRNzEsyWoG8wzXLfLZv9w3sXj2PPfMQPf4dEsZlQ2tKKUOf4FOHJvo0pchIkOAaLr0fezDY1jDeL9njOnN+YetqHAHMRHWoDhPjcOTJDw1jvS4zsRRVtdCSV0rH8deQPHM/3Bj2y2U1rViWuq4uPZlpmZa9/KMrPJNDJ6mLICCKmsGu29iqW9pZ+azK3j+P7rnuVJHgkAPx/038AsRiTXG1NlllwNNwMf7u1BE7gZ+DnzfGPPZ4IZ5aEiJjaC+pd07qiop2koSG+wFDNPinDS3W0uql9W1UFzTRHqck+TkVDaZoZTWtVC/4QNuCX2N5h3vk+I4l6rKdGAYhXZiCA0RvxrHbk+Nwydx5Fc04jbW/h++apvbaO8w3rknSqnDQ6BrHE8ALcAbIjJdRK4FZgOP+nZy2zPEn/H5+YfA/VjNVIUiMtXncfi1Q/VSSkwEIp17eIQ7QoiPCqOl3U1yTDjhjhBiIxyEO0Ior2+hpLaFdJfTW1spq2shP+0sLmi5n9rkY7nT8So/yfsuLH2AoqpGosJDyUmKYk9tZ5Lw1Dj8EkdlAwC7uySO37y5jp+88OVgvw1KqQALaOKw+yTOAkKBhVgzxh8DZnU51WGf43GO/fVKYFmXxwWDF/HBLc3lJD3OSVho56/R00HumfshIqTERFDqU+MAa1RWWV0LxdXNrDc5FF3wIrfH/4kNEcdA/ucU1bSQGR/J6NgWiuymqpqmNuqa24GuicNKGLu79HtsKKrhmz11fnt/uN2GraV1KKUOXYFuqsIYswE4s4dzcrr8fCVW0lA+bp0+ivI6/0l7KTERbC2t9zZfgdWkta2snuY2t7d24l2yxB4xlelyUpc4kd9WjuC9H02h8PEvGRfTwCPFM/mCibD5VxREnwBYM9iL7C1pRYRdFVbiKKtrobmtA2dYKB1uw+7KJlo73JTVt3hnv/9rbTE3v7KKT35xht+8FKXUoUNXxz2EjUiJYcrwJL+y5Fj/GgdYSWJTsfVXvidxpMY57VqItRhiUkwE6XFOa1SVI4Ki6iaS413kZV/BUe5t8PfLyP37KdwQ+jZnDHHQ3Ob2jqLK92mi8oy6Kqq2kgZYfSAeG4prMQY2l/jXOt5eXUiprpWl1CFBE8dhJsVuqupa4/B8iHvKU2MjKK21EkdanJPQECEtLoLqxjZqGtuoaGglMTmVnRNv4eSW/6Xy209SE5bGHY5XOTHbukdpwTZoa2J3ZaP3vrvtPpCdFQ3e59/lkzi2l9UD1iRFj7K6Fm55ZTXzlh/WS44pddjQxHGYSemuxhHTOecjzaePo6mtgy2ldd55IJ5jq3Zb02My4yPJcDlpw8GOtHN4cvhfmM7j5I4YDUDyR7/E/HEUN9Y+xsy0nYTSQYFd+9jpkxh8R1ttL7PKfRPH1lIrmWyzk4rHYx9sZvaC9f1+L5RSg0MTx2EmOcYa+uqZ2wGdzVcinSvtptpLtW8qriPdPteTOL7Kt+ZiWonDOlZc00xBVSMRCVnePUFWZPyIxuHf5ryQFVyffztfRtxA9vonAdhZ0YgzLIRMl5N8u/bR4Tbe2odvjcTTWb6ttLMMrP6Qd74u8iurbW7j9ZUFfh3uSqnA0sRxmJmck8gx2S7GZ8Z5yzw1jqToCMIdIXaZlSTa3YZMu5nJ0/+xKt+qcWTFR5Jh10aKq5spqGoiOyESV2QYUeGhrAw5mtWT7mdyy+NsmjaXVWHHUd5sLeFeVFrOXOfj/FfkF1SUlwDWUN7WDjfhoSHsLO+shXhqHDsqGryLLLa0d7CjvIHy+la/Gemv5RVwx2tr2FziXzsp77JAo1Jq8GjiOMzkJkfz9k2nkOAz6c7TfOXb75Hqsx2tJ2Gk2bWR1fnV3vkhsREOosNDKappshNHFCJCVnwkhdWN5Fc20kI4McdezAuZv+NF820AOsq3Mtn9NT+vfpDny/8LnjmHjo8eIo1KpgxPpKimieY2a3LiVruJqrXd7Z2xvqO8M4l4EgtYqwEDfOPTuV7T1MZpDy3ln1/uHoi3UCnVA00cRwDPSrq+iySmdrNIYlykA2dYCHUt7aTFWvNDRISM+Eg2FddR39LubabKjI+ksLqJ/MpGwkKFDFckQxIi2V3VSIfbsLQmnbmT3mH+8c/z1/aL6GhrZvjaP5EodZw1JpXj2EzNJ09A2Wa2ltR518raVm4liW/2dCaGLT7zPjbZiytu9jm+oaiWxtYO8nZV+r3uWW+v4675aw78DVRK+dHEcQTwTApM9+kwd0WGeZutPJ3jIuLt5/CUgVVT8XSYZ9ubSWUlRFJU3Ux+RSPZCVGEhghDEqOobmzjmz11tHUYcpLjiMyZymPtl7LpuwuZM24hxRHDOX5YAueGfknap7+Gv53AgtZreDzir/x36PtsL7HW2dpSUk9oiBAZFuqtcbR3uL1NVL41jg12LcQz5NjjvfV7eH9DiV9/SN7OSi55/HOaWjsO6D1V6kimieMIEBkeyhXfGsb5E9O9ZZ4Z5eBfE/Ekjiyf3QYzXE6a26zhvJ4aR1Z8JJUNrWzaU+udyOfZofCzrdYy9jnJ0d6aRH5FI2urw8hNjSUnOZoH2n/I36e8xa6T7me5exzDm9ZyQ9hCtlVYczlyv3mK/4ldwPcTvqFoTzFgdbi3tlt9JL7zQDxrc20trafNHnZcWtdMSW0L1Y1t3h0OAd5du4eVu6r4uqBzMebmtg6+/+Qylm+v6M/bq9QRJ+Azx1Vw3Pu9CXuVpcZZs8eTo/cerutb40j3GaHlSRJZ8VbZtrIGThqRDHQmlU+3lAOQkxRNVIS1csyuyka2lzVw6qgU4pxhJMdE8HVjEo5h3+WuthyWXj2N2a9+RrNdu8iu+YoTOlYR0mKgFvjLSNwp5wInc8aYFD7asJvG1naiwh1sKK4lNERo7XCzvayB0emxrC/q3C9kQ1GtN961hdX21xrv5MmvC2pYsaOSd9cWM9VnQuXsBesxxnCPz3tnjKG1w02Ew3dFHKWOLFrjOIJluiLJio8kJES8Zel2p7nng9Y6z0oisU4Hrsgw63hC5/GhnhqH/XXFjkoiw0JJi4sgzhlGQlQYG4pqKa1rYXhKNGAllR3lDWwrrfdui5uamsH28gaaWjv4QeOdPDH1QxYc8wQPtX2ftoSRVNQ1ERoifHtCKivDryf0r5PpePVKziqfx03Z20mixtsHsq7AavISgfVF1vftHW7WFdrH7aXnAVbbzXBrCjrL3G7Dm6sKWbCmyK+pa8GaIib/fvFeOyBuKKr11naUOtxp4jiC3XXeaP7yX8f7lXlrHD61DE9TVrZP81WmT2IZajdHJUSFER0eSku7m2FJ1ugr63g0n26xmq9GeBJHcjQ7KxrYWlrP8JRoHKEhDE+x9kJftbsKYyAnK4PI0Wcyt+Mi1p32BM+E/4jc5GiOTovkyfbvUBY1nI78L7kz9J/cVvobrghbwsbiOmisZOKae7nV9Qnfi99B/u58wKodNbV1EB4a4t2zBGD1bqsWsrGollZ718Pt5Q3UNLVR1djmN/P9w02l1DW381V+5x5iuysbueAvn/KPFfl+7+WnW8pYtk2bv9ThRxPHEWxYUjQTs11+ZbnJ1gd7rv0BD51JItunlpEWG0GoXVPx1DhExFvryEnqvH5YYhRV9l/ow1NivM9TUtvC2sIaRqRaZZ6k8t66PQAclRbLKPvYltJ6Nu2pZUx6LEPTk3lSLuWFIb9nwRmLOLr5/yi8+A1Wx59j1Tiq85lcu5hbW57gT02/4dFdl8CDuZSufAuA748JI7fyExqLNkJ7K6vzq4mJcNDa4faO5vJNDJ7EApC30ypfuavz+PLtFRjDXkniV6+vZdaCdX5ly7ZVcMWzK7wJysOzaKRShwJNHMrPmWNSWXTraYywP+Chs8YxxKfG4QgN8Y7S8l3l1pNccpJ9EoddIwmRzu89Caq0roWR9nN5ksqi9XsIDw0hJymKIYlRhDtCWJVfTUFVE2Mz4ggNEUalxvBNSb3VRBQWR/rEM0nIHs3G4lqqXOOY0Px/zDvpPRYe/Tfua/sxLUd9h1W1ccRGOLg8eSdPhz1C1FNTMXPS+UfT9bzleoQcKWZNQTXU7aFo80rSnO1EhYd6J0QWVTd5l5P3TSwrdljDgPN2VXk//HdXNlJY3cTmknr/CYwrd/PJ5jK/ZLS7spHTHlrK618V+v0u3ltXzCeby3r+pSkVYJo4lB8RYXR6rF9ZbISDW84axYzjs/zKs+IjSY4J925hC53NWTlJncnEUyPJTojydir71khG2rWKYUlROEKEktoWb/NVaIgwPDmaReutWsgYO7bRabFs3lPHhuIaxmTEEhoijMmIpaS2hU+2lAHCiOGjcE04l2c6vs3Ko2expCKJCVku0k+4mIta7uWTcfexfcy1rDEjyAhrxOmMskZbrXmFWzfP5Auu4HPH9fzX2p/A/KtZs2UnAOdmtVC3ex3tTVbtZMXOSsJCxdoYy16Xy3eE1pc7rcRijOHzrRV7Hf94cxntbsPSb0q9ZW634ddvruO+dzb4vedvrirg5D986Dec2BjDa3m7qW9pR6lA0MSheiQi3Hb2UUzI8m/WuvDYTC6bPMSvzNtU5VfjsL4f7tP8lZPcmVg8iSMsNMSbZI5K60xeo9JivX+1e5LaUemx7KltZs3uGsZlWMurjEm3vnr+ch+f6WKcvfTK6t3VbCyu4+hsFynJSRTFjOctcxqvu67k9o6bCb3+Y1KHjOTrghrqRl7AzW038fmwG9iVdCqVraG4C1fxZUEzUeGh3BX3AQtD7sDxYDbuP+TweN0tvJX4N8Dw5c4qKFhJ2doPODaylARHq7dGsqO8wVq2Hv/E8Zk9Cm3Ztgrc9mz59UW1VDa0sqW0nj0+w4nf+KqQwuomvtjRef2KHZX8Yv7XzFvmv7rwTX//ivvf3ehXtqemmYVr/Nf/UqqvNHGofvvvqcP45Xlj/MqmHZXMKSOT/ZJM1+YpgKhwB2lxEYSIf7mnucq31uPp54iNcHhHe422E0tTW4c3OYy1E8inW8oYkhiJK8oa9psWF8EbXxXS2uHm6Ox4ACZmuVhbWMPq3dWMzYjDGRbKMdkuNpfU8Z/yWBZ0nIT7lDsonvYwP2z9Dasu+pDl+fUcNzSeqJOu5ebWG1k16mZ2ZZxLkUlkaIwbV2Q4eTsrMZ89wg27buMtcyurHFdy+8qz4LkL+I/dB/I/2auYkP8SbatfpWP7JxRtW0N2ZKs9L8aqxXyypbOJyjOwoLG1nS/sJPSxTxPWh5usmspHPjWWivoW/rW2mFfzdtPuM9rrz0s28/N/rPLb5regqpGJsxfx+dZyv9/lW6sK+U+XsrYON6V1um/KkU7ncagBNTI1lpeumeJXlhobwU9OyeWiY/2bunKTo4kMC8UZ1jknYkRKNIs3diYL6Px+TEasd6TWUT6JxVPjSImNIDkmnPL6Vib6JK7xmS7vh+vR9mCACVkuln5TSmF1k7cJ7pjseNwGXlq+CxE4ZoiLRrtJ6LMt5WzaU8vPzxxF+shRLI+uICQ0iZhoB2+FFLH6mrOZPG8lX+6spPiSWdzx9bHcMCkKaovYum0rP0w/imXbysl0OZlhPiA+dDW8NQ+ABUBJ7ASmNP2az7eVM27ZHUzdvJMn41wUtcXgWPEZxE9nWdsEWtvdjIysZ9k3hXDheACW2K8tb1cVtc1txDnD+HBTKcZAdWMbq3ZXc0JOIh1uwwcbrAUnF28s4aqTcwH419fF1DW3M/+rAk4aac3JaWxt51dvfM2wxGgW3Xaa97383yVbeO4/O1l295nEOq2h2VUNrdz6z9X8z4Xj/PrG8nZWkhgd7v1jAKwmuHa38a5aoA5N+ttTg05E+N13xu01guvu88dy/4yJfmUTslyEhgjjfT74PU1ZnqYosOaWxEQ4CBH/cs/34zM7r/ckloSoMG/n/cQsF24Dja0dHDskAYCjh1jXfLa1nNFpscQ6w0iLc5LpcvLSF7twG5ick4CIMGlYAivzq1ixo5JJwxJwhIYwOSeRbWUNLNjlYJl7PGmnzCT01Nu5p30m/8n9Ocu2VXDSyGTkJx9wTMtTvHD8q7w58XFuab2ByDPuJDc5ms+3VdDmNjibSjnJrOa/zUIuLp2LyXuOj74pIyo8lIWOu3iv/jLcczJpf3QCj1TfymNZS+lwG/6zpRw+fZS25U/xw+g8poWuZV3eJ9BQzqr8KsrrWwkRvAkE4N/2KLYlG0u9tZOlm8pobnPzTUmdd/MtYwxvfFVIfUs7SzZ21m7eXl3Ix5vLeHl553Dk5rYOrnruS+6a/7Xf73fuR1s59aEPvQtcgpV4bnz5KwqqGv3O/XJnpd++LmAtzd+gfTlBpzUOFTTHDInfq+yCiRkcOyTebwJiTnI0p45K5tzx/kumjE6PpbqxlcjwzhrL2IxYPtta7tdU5lli/ujseG+Nxff4sXYcqbFOMlxOimuaOX5YQufxofG8u3YPIQLHDbXKjx+a4P3A/Z5dkzohxzr29Kc7SIwOZ1RqDEMSrA7/5z/fRVVjGyeNSMIVFc6QzEz+vceBMXHUpw8h7rhTOWnnWt5aVcgHl93HDSu/4h8zp1JQ2cB9ry/ntRMms3T+Tk4akUTtsN/w1w++5MKcCBwtVVRV7ebU0enEVjj4ZGMh52+4hx96gg8D1gFxP2dR2w9JCG3hM+dtlBY4aX8yk/ZwF1fvaWZt6jn8X+lo8jbvZmrjUoq/rOQcZwd7WiL4fEUkw6efyKqSNu+osn+tLeai46zX/bbdZ/KvtUX89oKxhIQISzaWUtfSTt6uKgqqrPXM3G7Dy1/kU1LbwtJNpZw/MQOA+SsL+NfaYrITIrn722MBqGtuUPTXbQAAFelJREFU44pnVjAx28Wr133L+7t4eNE3vP5VAZ/edYa3plpc08Rt/1zNH2Yc7de39vbqQoYnx/j9wVLb3EZFfatf86jqO61xqINKSIj4De8Fq9N83k+mcMqoZL/ye747nj9edoxf2amjUkiNjeDY7M6k5Kl9HOPzAZIWF0FyTASxTgfDfT5EPE1Zxw/tTBzH2TWScZlx3hFkvonlxNxEACZmuwh3hFBe38LU4YmICJHhoRyd7fIOqz3ZbgqampvEV/nVfJVf5X1dJ49MpqG1g79+uJXo8FAmDUvg1KNSqSWa51bXU1DVxOmjU0md9lPejPkBfwq9inscN3Nf/L0kn3Mnpx2VwuIt1Sy9bB0nNM/ly2+/yzuTn+OnrbezJ+ci3t9QwtThCTSOvIB17hwqOyKpqyphomznqonhOMNCWPH1elh4C9fsuYen+D0LIn7Hj7+8GNb8g4VripjgKGBt9I38etuP6HhiGs1Pf4frimdxeVoBJbUtrFm3Fv7zZyo+foIfOJdzZshX5H38DjRVsXz7/7d35+FRV+cCx7/vZLKQDbKRsCYQkLALhCWI7CKCKG6gVZTqU3G7alurXrHVXq1XxeLSYi1YSl1AKdZiUUBAlLBD2PclGwlbAiFkI+u5f/wmQ4YEIZhkLpn38zzzPHDm9yPn9Yzz5nfWU2Tn5uMv5/hySwbgmBGWZG2H/+XWTOdW+ot2HKOotJyNKaedZ9afKy1n3sZ0svKKnbPsAD5al8b65NPMWZvqLKtMJlP/vdPl8/Hil7u4+b1Ezp47v/J/Z0Yu3V9ayvYqU6SNMfxu4S6+3nHM5f7dR3NZuM112rQxxhrbumAdTnFZuXOyQ2OjiUNdtbq1aup8Aqg0+JoINk4dSVN/b2dZ2zB/3ryjB5MSYpxlIsJN3aIY062Fy5Yrld1WfS544gCIjw6t8rOD8fGy4WO3OZONr93LmZwSqux51a+d9efYiADnyvyE2DBKyiooLTcMciSThPZhiFi7/SbEhuFjtxHV1I8OzQOZv9n6ch3aKQIRYUinCFYfymZD8mmGxzUHYFin5mTlFfPu9+kU+oTRo/cAug24kWUV8by325e0U4Vc3y2WsIkz+L3vM7wS8geeCJjOlJBZtLzhCa7vGMH8w3a+u2klo4tfZ+eoz1jc/R2eLnmMo6ED+GbnMXq0a8G52NHsrGhHVkUQOWfPEiPHeXJQS/y8bezYtgmW/Y77T73D67zHbJ+3GL/tF5CZxBdbMhnrt509vg/yl+QbMK+1pnRaHH/JmcKkmFxO5hWza80iWPAQYd89wxsB8/i1fT5pC1+FgmyW7DpO8LkMRnlvZ/vqryFzCyXH97Jq0xa8KOdfWzKcXWDzNh6hwlj7kO10bCVz4uw5vtl5jIKScv6VlOFsn5mJyeQVlzErMdlZtiU9h4/WpfHaN3ud3XfGGJ77Yge//Hyby+SCBUkZ3PnBOhZVSTJFJeUMm/Y9ry/Z5/L5nL06hcc/3eKSZE6ePccLX+4kt8h1G5slu447k2alnIIS0k65dt8BDd59p11VyiNM6NumWtkr46tv/DgpIZpOUYEuXRk9WjdlZOfm3Nbr/OC+r92Lvu1CsNtsLhsexseEsik1x7mBIkD/9qF88MNh52aQAH3bhWITayFl3xgrIYUE+NClRTC7j55l8DURzmuv7xjOoZP5dGwe6FwnM7hjBPM2WslkeFwkAEMc92w7coYx3aPwtXsREx5A+4gA5m1MRwRGdmmOzSaMiItk0Y6jFJWW88TwjgDc2DWKZXtO8NqaPHL8O9C5/wiCzxTx6KbvKVxbzImzxQwYG09Y93G89vp3dA9sSnpxIUEt7CzoO5ARB7bw3mEvvIat5b3FW5n3QFf2pGQyd/UepppYFu/az0NxvTne9Hnmr9vHDS0CKMzL5UR+Nr8c24uvZh8hae9uOhdspmfRGULspdjthdjSDRWFP2fexmzuDtzO46VzIBuYBT7A18CfB3zFW+vzOfzFy3RJns0DJXbuDfAjt8ybJp8GwtPLmbvhKDdLIqMD91LyvS8mL5aCCm9idh8j2Pc2luw6zqn9awkrO8mGNZlcZyugMNeH9eu9GHTdENYnnyY58yR+wD/WHObFcd2pqDDMXGUlnFmJydzcowUiwj+TjnA09xwfr0vj0SGxhAT4kFtUyvRlB8gvLuPuQ224vqPVXu99d5C5G9IJD/TlVzdcA1jnzjzySRIJ7cOY9/AA52fh0U+T2Hc8j8RnhzknJyzdfZwn5m5h/pSEar9I1RdNHEpVEehrd34RV/K1e/HhA32rXfvBfX2cYyaVJg+MoWWzJi6zwvrFhNKvXajLAspgP2/iY0IJ9rO7zCob1CHcShwdXRPH39ekMrTT+bKBHcLxsgn+Pl7EO8ZWIoJ8ndOMR3Y+H8OIuObMSkyhd9tmzjPnR3aJ5HPHU8xox9jRiLjmeNmEQyfz+Vn/tti9bESHBdC5RTDf7jmBn7eNEXFW4hndLYqP16dRXmF45VZrdte4ni34eucxpn2fSVRkW2I79yK4dReeShSe+iqNwpJyBg8cSGT0WP6zfxUrCrxIzSlkSOcIxrTpzLieZbyZVM6Baz/mi+wM1v9mBGsOZfPsZxuYesjOhpTT3DjsZ2S1ncDTH6/mrh6hHDmRTUHeWZ4ZHc+Cgxv594nm+Le9g3X7jjA8OpDinDOcyD1LYDHM3ZjO8xGFXF+8n6LCfCo2J+JfVsSTXkK/+/7A/bM3cnzFDMJOLuIx4DHHIZoFywPguqN8mJjMu01mcYNZB0lgtnpTYfPh3ZJwXo2dydrDpzjx2ZNE5u+h+7EiPg/w5UyJjZS5/yHkFzP4ZH0at5d9TVu/XE58tRj6x5JXZuPM5hzstn7MWZPCo20zaCJlfLsqjT6SR36KNzt2NqFH956sPZzNvuQ0KrAxd/U+pgzvQjk2pi3dT2m5YfqyA3z8kOuMxvqiiUOpK1T5G19VkcF+TBoQ7VIW4Gt3GeCtNHtyX2yueYeHB7fn2jbNXAZ5B8aGc3vvVtzTr62zrGkTb0Z3jSIiyBdvr/M9zqO6RHLgRB7DOjV3lg2Pi2RWYgqjqkwuGNQhHD9vG5HBfnRuYU1tDgnwoV9MKOuSTzHWMXANcFO3KPYeO8uIzpEEOMZ4xvZowZy1qdZuxY5rh3ZqToCPF7lFpTwyJBawktl1HcJJPJhNm9AmxEdbs9LG92rFtKX7AbgrvjUAt/duzSfr0/ls0xFu6hZFWKAvo7pGMdUvgFcW7cNuE24e2JOIID/sHbx5+cAZzhS25Dc3dsLuF8DEvm15Y0khK8q6UxJUwcQHhnEiM5dJM9Yw8PNdZOUVE3rnVLzaT2fk/66gT+sQtqXn0C86kL90jGDoNRH8OnM8t3SeyLIdqcy6uwsbDx1l/qZ07txxlBX7TnJL77s4GjCUz9YeZETHYDJOnuaksfPXSX0Y/OZKNh8vp5+vLyVl+cSFl5Gbl09y5j5yCkr42+oUPg3cxjUlu/HKK4PlEARMtnVi9ISHeWLuVs4tfI4mhSk8CTzpOO1gx9fxmG7LeWfZQRb7TaUF2bAaWA0iXvxXWX8+a/8SiQezKXwvAX+Kwe4LXt5w7X3Q/+Fqn72fShOHUm5SdauWSmGBvs7ZRpX8vL2YPuHaatfOuLd3tbIpQ2IZ36uVy5nzA9qHMn1CT0Z3O584mvh4MXVMZyKCfF2emh4YGI3NBv3bnR/PGdezJTNWHmJClV0C+rQNoVWzJnSKCiLMcSCYn7cXo7pG8eXWTG65tqXz2lt6tiTxYDa392rt/Fm3XtuSaUv306Kpn7MLr1ebZrQLt7bbr+xa9PP24paeLfl0Qzo3do10PjFN7NuGHw5kYbeJM/Hc2ac1f/x2P8lZBTw7uhNeNqFH66Z0bRnM2sOniA7zZ0jHCGw2YUJ8G2cX06TrrO6h+wfG8PO/Z7FvK4zreT3h3XtxXWwpv96ygrWfb8fXbmPQmPsIC/Rlbfpa/pGWT25RKS+O7UyQnzeTBkTzxHdjaR3ShCbNvFj6xGD2pp5m8sz19JyzidMFJRQ88m8Ko4K47vXl9G7RhD0ZWYzqEsmrPVry+aYj/OLo0/Rp5cWeI1m8P7Ebq/Zm8LekXG74IZmNqac53OcpKgJL+Xj1AYZ1aMqBo6c41iSaDx+IZ8i0lawvjmF4jB+Ul0B5Kfi4TjSpK5o4lGpEfOy2arPSRITbe7eudm3VyQKVRndrwehuromrXXgAO14e5TKWY7MJ8x9JwN/b9UCr50bHMa5nC5fp1Df3aMnhrALuTzj/JNY6xJ8pQ9pzTfMg5y7LIsLDg9vzRVKGS1fdPf3a8s/NGTww8Hx9R3aOJCLIl/7tQp3JJCLIlxu6RLJi70lnkhMR7u0fzQtf7mTSgGjnRIh7+7dl5qpkOkUGkRBrjUcN6RhBTJg/qacKeWiQtTiyqb83t/VuxdwN6dzTr60zST40qB2PfrqFID87dzueBCclxPDBqmQycop4666e2GxC/3ah9GzdlO1HztCvXSjxjvGsSQntmLHyMCL+TB5h/QLw2NAO3DMrm82H4ZEhfQnqGsfg2FJe2L2SLUv2ERXsR/z4x/Hz9mLvsY3MPJBFhYFZ98cT4GtnyuBYHvzmPhbcleD8OfXGGNPoX3369DFKqatXUUlZtbITuUUm/1ypS1lW3jmzNT3Hpay4tNx8tC612r8xZ02K2ZB8yqXs293HzauLdruUpWTlm/EzVpvU7HxnWVl5hRk/Y7V5f+Uhl2tfWrjLDJ220hSXljvLluw6ZqKfW2RWHTjpLDt59pzp9OI35vFPk5xlFRUV5rYZq03ci4tNdt45Z/nby/ab6OcWmY/WpjjLNqeeNtHPLTK3/CnRVFRUGGOMKSwuM31eWWZ+Nmtdtf9WVwrYbGr4ThXTwGcAiEgX4E9AAnAG+BD4vTGm/BL3NQXeAcZjTSNeBDxpjLnkSTnx8fFm8+bNP7XqSin1oyoqDOXGuIw7gbW5ZOXxBJUOZ+XTPMjXZaws80wRp/KLnXuqgTW1d+G2TO7o09rl3/1kfRrxMSEuOyd8vD6N1OwCnr8prlodroSIJBlj4quVN2TiEJEQYDewB3gDiAX+CLxtjHnxEvcuAToBzwAVjvtPGGOuv9TP1cShlFK1d7HE0dBjHI8ATYDbjTFngWUiEgy8LCJvOsqqEZEE4EZgiDFmlaMsE9ggIiONMcsbqP5KKeXxGnrl+E3A0gsSxGdYyWTIJe47UZk0AIwxG4EUx3tKKaUaSEMnjjjAZQ2+MSYdKHS8d9n3Oey9xH1KKaXqWEMnjhCsAfEL5Tjeq7P7RORhEdksIpuzsvTcZqWUqivu2OSwptF4uUj5Fd9njJlpjIk3xsRHRETUdIlSSqkr0NCJIweofggDNKXmJ4pL3dfsEvcppZSqYw2dOPZxwZiEiLQBAqh5DOOi9zlcbOxDKaVUPWnoxLEYuFFEgqqUTQSKgB8ucV+UiAyqLBCReKC94z2llFINxB0LAPdgHWb5BtYX/3TgnaoLAEXkEPCDMeahKmVLgGtwXQB48nIWAIpIFpAGhGPt5O+pPDl+T44dPDt+T44dflr80caYaoPEDboA0BiTIyIjgD8D/8Ean3gbeLmGenldUHa349rZVNly5DJ/bgSAiGyuaRWkp/Dk+D05dvDs+D05dqif+Bt8d1xjzB5g+CWuiamh7Azwc8dLKaWUm+iZ40oppWrF0xLHTHdXwM08OX5Pjh08O35Pjh3qIf4G31ZdKaXU1c3TnjiUUkr9RJo4lFJK1YpHJA4R6SIiK0SkUESOisj/iMiF030bHRGZLCKmhtcj7q5bXRORDiLyVxHZLiLlIvJ9DdeIiLwgIkdEpEhEVonItW6obp27zPhTa/gsHHdDdeuUiNwlIl+JSKaI5ItIkojcc8E1jbLtLzP2Om/3Bp+O29Aciw6XYy08vJXzpw7agB89dbARGY61Or9SsrsqUo+6AmOA9YDPRa55Hvgt8BusrWp+BSwXkW7GmKv9C/Ry4geYi3V0c6WS+qxUA/kV1tk8v8Ra6DYGmCsi4caYylgba9tfTuxQ1+1e00HkjekF/DfWJonBVcqexToDJNhd9Wqg2Cdj7R4c6O66NECstip/XgB8f8H7fkAu8LsqZQFAFvCqu+tf3/E7ylOBt9xd13qIPbyGsrlASmNv+0vFXl/t7gldVVd66qC6ihhjKi5xyUAgGJhf5Z4CrB0MrvpTJC8j/kbLGFPTdhpbgeaOPzfatr+M2OuFJySOKz11sDE5LCJlIrJfRKa4uzJuEgeUAwcvKPe0UyQfFJESEckVkQUiEu3uCtWTgVjd0+B5bV819kp12u6NfoyDKz91sDE4htWvuxFr7697gA9ExN8Y87Zba9bwQoB8Y0z5BeU5gL+I+BhjGkN//49ZiDUGkgF0Bl4CEkWkuzEm1601q0OO/fBuBR50FHlM29cQO9RDu3tC4oArP3XwqmaMWQosrVK0WER8gRdF5F0P7N642OfgYu81KsaYp6r8NVFE1gLbsPZ/e8c9tapbIhKD1ce/0Bgzp8pbjb7tLxZ7fbS7J3RVXempg43VAiAUiHFzPRpaDhBUwzTsZkChMabUDXVyK2PMLmA/0NvddakLIhKKdT5POnBflbcafdv/SOzV1EW7e0LiuNJTBxu7RvFbVi3sw+qu63BBuZ4i2Qg+CyLij3XUgg8w1jH4XalRt/0lYv8xV9zunpA4rvTUwcbqDqz53mnurkgDWwucBe6qLHD8DzcODz1FUkS6AZ2AJHfX5acQETvwT6AjcJMx5uQFlzTatr+M2Gu65ye3uyeMcXyAdeDTv0Sk8tTBl4HpF0zRbXRE5AusgfEdWL9xTXS8nmxs4xuOL4Ixjr+2AoJF5E7H378xxhSKyOvAb0Ukh/OLwGy4Loy6Kl0qfmAYVhfGIuAo1m/bL2J1bcxp0MrWvfexYn8KCBWRAVXe22qMOdeI2/5HYwdGUh/t7u4FLA20SKYL8B3WU8Yx4BXAy931aoC4X8Pqyyx0xJ4ETHJ3veop1hisR++aXjGOawSYijW7pAhIBHq5u+4NET/QA1iBteitFDju+OJo6e6610HsqZ7a9peKvb7aXbdVV0opVSueMMahlFKqDmniUEopVSuaOJRSStWKJg6llFK1oolDKaVUrWjiUEopVSuaOJRyExGZICKT3V0PpWpL13Eo5SYisgDrBLeh7q6LUrWhTxxKKaVqRROHUm4gInOwNpwcIiLG8XrZvbVS6vJ4wiaHSv1/9ArQFutMiMccZRnuq45Sl08Th1JuYIw5LCKnAZsxZr2766NUbWhXlVJKqVrRxKGUUqpWNHEopZSqFU0cSrlPCeDn7kooVVuaOJRyn31AdxEZLyLxItLS3RVS6nJo4lDKfd4HvgVmA5uAh91bHaUuj245opRSqlb0iUMppVStaOJQSilVK5o4lFJK1YomDqWUUrWiiUMppVStaOJQSilVK5o4lFJK1YomDqWUUrXyfyyMBmH2wWRqAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "h = 0.21\n", "t,y = euler(t0,T,y0,h)\n", "print('Number of iterations=',len(t))\n", "plt.plot(t,y,te,ye,'--')\n", "plt.legend(('Numerical','Exact'))\n", "plt.xlabel('t')\n", "plt.ylabel('y')\n", "plt.title('Step size = ' + str(h));" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We will use a variable time step\n", "$$\n", "y_n = y_{n-1} + h_{n-1} f(t_{n-1}, y_{n-1})\n", "$$\n", "where\n", "$$\n", "h_{n-1} = \\frac{1}{|f_y(t_{n-1},y_{n-1})|} = \\frac{1}{10 t_{n-1} |y_{n-1}|}\n", "$$\n", "more sophisticated techniques are discussed in our Numerical methods for ODEs lecture." ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def aeuler(t0,T,y0):\n", " # Forward Euler with adaptive time-stepping\n", " t, y = [], []\n", " y.append(y0)\n", " t.append(t0)\n", " time = t0; n = 1\n", " while time < T:\n", " h = 1.0/np.abs(10*t[n-1]*y[n-1])\n", " y.append(y[n-1] + h*f(t[n-1],y[n-1]))\n", " time = time + h\n", " t.append(time)\n", " n = n + 1\n", " return np.array(t), np.array(y)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of iterations= 241\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t,y = aeuler(t0,T,y0)\n", "print('Number of iterations=',len(t))\n", "\n", "plt.plot(t,y,te,ye,'--')\n", "plt.legend(('Numerical','Exact'))\n", "plt.xlabel('t')\n", "plt.ylabel('y');\n", "\n", "plt.figure()\n", "plt.plot(range(len(t)-1),t[1:]-t[0:-1])\n", "plt.ylabel('Step size, h')\n", "plt.xlabel('Iteration');" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Now there seems to be a problem with our *explicit Euler* method and we consider a different version, namely, the **implicit Euler** scheme\n", "$$\n", "y(t+h)=y(t)+hf(t+h,y(t+h))\n", "$$\n", "and since the values $y(t)$ refer to exact solution evaluated at different times we now introduce the notation $y_k\\approx y(kh)$ and arrive at the first method for solving the ODE\n", "$$\n", "y_{k+1}=y_k+hf(t_{k+1},y_{k+1}).\n", "$$\n", "This in general means solving a system to obtain the new point $y_{k+1}$ and then we get for our particular problem\n", "$$\n", "y_{k+1}=y_k+hy_{k+1}\\Rightarrow y_{k+1}=\\frac{y_k}{1-h}\n", "$$" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def ieuler(t0,T,y0,h):\n", " N = int((T-t0)/h)\n", " y = np.zeros(N)\n", " t = np.zeros(N)\n", " y[0] = y0\n", " t[0] = t0\n", " for n in range(1,N):\n", " y[n] = y[n-1]/(1-h)\n", " t[n] = t[n-1] + h\n", " return t, y\n", "\n", "def yexact(t):\n", " return np.exp(t)\n", "\n", "def f(t,y):\n", " return y" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of iterations= 1000\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t0,y0,T = 0.0,1.0,5.0\n", "h = 0.005\n", "t,y = ieuler(t0,T,y0,h)\n", "t_ee,y_ee = euler(t0,T,y0,h)\n", "\n", "print('Number of iterations=',len(t))\n", "te = np.linspace(t0,T,100)\n", "ye = yexact(te)\n", "plt.plot(t,y,te,ye,t_ee,y_ee,'--')\n", "plt.legend(('Numerical (IE)','Exact','Numerical (EE)'))\n", "plt.xlabel('t')\n", "plt.ylabel('y')\n", "plt.title('Step size = ' + str(h));" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "For nonlinear systems the implicit Euler method requires solving nonlinear systems via a fixed point iteration or Newton's method." ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'y(t)')" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from scipy.integrate import odeint\n", "import numpy as N\n", "import scipy\n", "\n", "def f(y, t):\n", " \"\"\"this is the rhs of the ODE to integrate, i.e. dy/dt=f(y,t)\"\"\"\n", " return -2 * y * t\n", "\n", "y0 = 1 # initial value\n", "t0 = 0 # integration limits for t\n", "T = 2\n", "\n", "t = N.arange(t0, T, 0.01) # values of t for\n", " # which we require\n", " # the solution y(t)\n", "y = odeint(f, y0, t) # actual computation of y(t)\n", "\n", "import pylab # plotting of results\n", "pylab.plot(t, y)\n", "pylab.xlabel('t'); pylab.ylabel('y(t)')\n", "\n" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function odeint in module scipy.integrate.odepack:\n", "\n", "odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0, tfirst=False)\n", " Integrate a system of ordinary differential equations.\n", " \n", " .. note:: For new code, use `scipy.integrate.solve_ivp` to solve a\n", " differential equation.\n", " \n", " Solve a system of ordinary differential equations using lsoda from the\n", " FORTRAN library odepack.\n", " \n", " Solves the initial value problem for stiff or non-stiff systems\n", " of first order ode-s::\n", " \n", " dy/dt = func(y, t, ...) [or func(t, y, ...)]\n", " \n", " where y can be a vector.\n", " \n", " .. note:: By default, the required order of the first two arguments of\n", " `func` are in the opposite order of the arguments in the system\n", " definition function used by the `scipy.integrate.ode` class and\n", " the function `scipy.integrate.solve_ivp`. To use a function with\n", " the signature ``func(t, y, ...)``, the argument `tfirst` must be\n", " set to ``True``.\n", " \n", " Parameters\n", " ----------\n", " func : callable(y, t, ...) or callable(t, y, ...)\n", " Computes the derivative of y at t.\n", " If the signature is ``callable(t, y, ...)``, then the argument\n", " `tfirst` must be set ``True``.\n", " y0 : array\n", " Initial condition on y (can be a vector).\n", " t : array\n", " A sequence of time points for which to solve for y. The initial\n", " value point should be the first element of this sequence.\n", " This sequence must be monotonically increasing or monotonically\n", " decreasing; repeated values are allowed.\n", " args : tuple, optional\n", " Extra arguments to pass to function.\n", " Dfun : callable(y, t, ...) or callable(t, y, ...)\n", " Gradient (Jacobian) of `func`.\n", " If the signature is ``callable(t, y, ...)``, then the argument\n", " `tfirst` must be set ``True``.\n", " col_deriv : bool, optional\n", " True if `Dfun` defines derivatives down columns (faster),\n", " otherwise `Dfun` should define derivatives across rows.\n", " full_output : bool, optional\n", " True if to return a dictionary of optional outputs as the second output\n", " printmessg : bool, optional\n", " Whether to print the convergence message\n", " tfirst: bool, optional\n", " If True, the first two arguments of `func` (and `Dfun`, if given)\n", " must ``t, y`` instead of the default ``y, t``.\n", " \n", " .. versionadded:: 1.1.0\n", " \n", " Returns\n", " -------\n", " y : array, shape (len(t), len(y0))\n", " Array containing the value of y for each desired time in t,\n", " with the initial value `y0` in the first row.\n", " infodict : dict, only returned if full_output == True\n", " Dictionary containing additional output information\n", " \n", " ======= ============================================================\n", " key meaning\n", " ======= ============================================================\n", " 'hu' vector of step sizes successfully used for each time step.\n", " 'tcur' vector with the value of t reached for each time step.\n", " (will always be at least as large as the input times).\n", " 'tolsf' vector of tolerance scale factors, greater than 1.0,\n", " computed when a request for too much accuracy was detected.\n", " 'tsw' value of t at the time of the last method switch\n", " (given for each time step)\n", " 'nst' cumulative number of time steps\n", " 'nfe' cumulative number of function evaluations for each time step\n", " 'nje' cumulative number of jacobian evaluations for each time step\n", " 'nqu' a vector of method orders for each successful step.\n", " 'imxer' index of the component of largest magnitude in the\n", " weighted local error vector (e / ewt) on an error return, -1\n", " otherwise.\n", " 'lenrw' the length of the double work array required.\n", " 'leniw' the length of integer work array required.\n", " 'mused' a vector of method indicators for each successful time step:\n", " 1: adams (nonstiff), 2: bdf (stiff)\n", " ======= ============================================================\n", " \n", " Other Parameters\n", " ----------------\n", " ml, mu : int, optional\n", " If either of these are not None or non-negative, then the\n", " Jacobian is assumed to be banded. These give the number of\n", " lower and upper non-zero diagonals in this banded matrix.\n", " For the banded case, `Dfun` should return a matrix whose\n", " rows contain the non-zero bands (starting with the lowest diagonal).\n", " Thus, the return matrix `jac` from `Dfun` should have shape\n", " ``(ml + mu + 1, len(y0))`` when ``ml >=0`` or ``mu >=0``.\n", " The data in `jac` must be stored such that ``jac[i - j + mu, j]``\n", " holds the derivative of the `i`th equation with respect to the `j`th\n", " state variable. If `col_deriv` is True, the transpose of this\n", " `jac` must be returned.\n", " rtol, atol : float, optional\n", " The input parameters `rtol` and `atol` determine the error\n", " control performed by the solver. The solver will control the\n", " vector, e, of estimated local errors in y, according to an\n", " inequality of the form ``max-norm of (e / ewt) <= 1``,\n", " where ewt is a vector of positive error weights computed as\n", " ``ewt = rtol * abs(y) + atol``.\n", " rtol and atol can be either vectors the same length as y or scalars.\n", " Defaults to 1.49012e-8.\n", " tcrit : ndarray, optional\n", " Vector of critical points (e.g. singularities) where integration\n", " care should be taken.\n", " h0 : float, (0: solver-determined), optional\n", " The step size to be attempted on the first step.\n", " hmax : float, (0: solver-determined), optional\n", " The maximum absolute step size allowed.\n", " hmin : float, (0: solver-determined), optional\n", " The minimum absolute step size allowed.\n", " ixpr : bool, optional\n", " Whether to generate extra printing at method switches.\n", " mxstep : int, (0: solver-determined), optional\n", " Maximum number of (internally defined) steps allowed for each\n", " integration point in t.\n", " mxhnil : int, (0: solver-determined), optional\n", " Maximum number of messages printed.\n", " mxordn : int, (0: solver-determined), optional\n", " Maximum order to be allowed for the non-stiff (Adams) method.\n", " mxords : int, (0: solver-determined), optional\n", " Maximum order to be allowed for the stiff (BDF) method.\n", " \n", " See Also\n", " --------\n", " solve_ivp : Solve an initial value problem for a system of ODEs.\n", " ode : a more object-oriented integrator based on VODE.\n", " quad : for finding the area under a curve.\n", " \n", " Examples\n", " --------\n", " The second order differential equation for the angle `theta` of a\n", " pendulum acted on by gravity with friction can be written::\n", " \n", " theta''(t) + b*theta'(t) + c*sin(theta(t)) = 0\n", " \n", " where `b` and `c` are positive constants, and a prime (') denotes a\n", " derivative. To solve this equation with `odeint`, we must first convert\n", " it to a system of first order equations. By defining the angular\n", " velocity ``omega(t) = theta'(t)``, we obtain the system::\n", " \n", " theta'(t) = omega(t)\n", " omega'(t) = -b*omega(t) - c*sin(theta(t))\n", " \n", " Let `y` be the vector [`theta`, `omega`]. We implement this system\n", " in python as:\n", " \n", " >>> def pend(y, t, b, c):\n", " ... theta, omega = y\n", " ... dydt = [omega, -b*omega - c*np.sin(theta)]\n", " ... return dydt\n", " ...\n", " \n", " We assume the constants are `b` = 0.25 and `c` = 5.0:\n", " \n", " >>> b = 0.25\n", " >>> c = 5.0\n", " \n", " For initial conditions, we assume the pendulum is nearly vertical\n", " with `theta(0)` = `pi` - 0.1, and is initially at rest, so\n", " `omega(0)` = 0. Then the vector of initial conditions is\n", " \n", " >>> y0 = [np.pi - 0.1, 0.0]\n", " \n", " We will generate a solution at 101 evenly spaced samples in the interval\n", " 0 <= `t` <= 10. So our array of times is:\n", " \n", " >>> t = np.linspace(0, 10, 101)\n", " \n", " Call `odeint` to generate the solution. To pass the parameters\n", " `b` and `c` to `pend`, we give them to `odeint` using the `args`\n", " argument.\n", " \n", " >>> from scipy.integrate import odeint\n", " >>> sol = odeint(pend, y0, t, args=(b, c))\n", " \n", " The solution is an array with shape (101, 2). The first column\n", " is `theta(t)`, and the second is `omega(t)`. The following code\n", " plots both components.\n", " \n", " >>> import matplotlib.pyplot as plt\n", " >>> plt.plot(t, sol[:, 0], 'b', label='theta(t)')\n", " >>> plt.plot(t, sol[:, 1], 'g', label='omega(t)')\n", " >>> plt.legend(loc='best')\n", " >>> plt.xlabel('t')\n", " >>> plt.grid()\n", " >>> plt.show()\n", "\n" ] } ], "source": [ "help(scipy.integrate.odeint)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Solving the pendulum equation\n", "\n", "In this page, the second order differential equation for the angle $\\theta$ of a pendulum acted on by gravity with friction is solved . The equations can be written as follows:\n", "\\begin{align}\n", "\\theta'(t)&=\\omega(t)\\\\\n", "\\omega'(t)&=−b \\ \\omega(t)−c \\ \\mathrm{sin}(\\theta(t))\n", "\\end{align}\n", "hereafter, let:\n", "$$\n", "y(t)=\n", "\\left(\n", "\\begin{array}{c}\n", "\\theta(t)\\\\\n", "\\omega(t)\\\\\n", "\\end{array}\n", "\\right)\n", "$$\n", "with the boundary condition:\n", "$$\n", "y(0)=\n", "\\left(\n", "\\begin{array}{c}\n", "\\pi-0.1\\\\\n", "0\n", "\\end{array}\n", "\\right)\n", "$$\n", "Firstly, define the function which returns dydt." ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation\n", "from scipy.integrate import odeint\n" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def pend(y, t, b, c):\n", " # This is the right hand side function with two components\n", " theta, omega = y\n", " dydt = [omega, -b*omega - c*np.sin(theta)]\n", " return dydt" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "b = 0.25\n", "c = 5.0\n", "y0 = [np.pi - 0.1, 0.0]\n", "t = np.linspace(0, 20, 301)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "sol = odeint(pend, y0, t, args=(b, c))" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(t, sol[:, 0], 'b', label='theta(t)')\n", "plt.plot(t, sol[:, 1], 'g', label='omega(t)')\n", "plt.legend(loc='best')\n", "plt.xlabel('t')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(5, 5), facecolor='w')\n", "ax = fig.add_subplot(1, 1, 1)\n", "plt.rcParams['font.size'] = 15\n", "\n", "lns = []\n", "for i in range(len(sol)):\n", " ln, = ax.plot([0, np.sin(sol[i, 0])], [0, -np.cos(sol[i, 0])],\n", " color='k', lw=2)\n", " tm = ax.text(-1, 0.9, 'time = %.1fs' % t[i])\n", " lns.append([ln, tm])\n", "ax.set_aspect('equal', 'datalim')\n", "ax.grid()\n", "ani = animation.ArtistAnimation(fig, lns, interval=50)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "fn = 'odeint_single_pendulum_artistanimation'\n", "ani.save(fn+'.mp4',writer='ffmpeg',fps=1000/50)\n", "# ani.save(fn+'.gif',writer='imagemagick',fps=1000/50)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "#import subprocess\n", "#cmd = 'magick convert %s.gif -fuzz 10%% -layers Optimize %s_r.gif'%(fn,fn)\n", "#subprocess.check_output(cmd)" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.2" } }, "nbformat": 4, "nbformat_minor": 2 }