{ "cells": [ { "cell_type": "markdown", "id": "ea34a549", "metadata": {}, "source": [ "# Computer Lab - Semester 1" ] }, { "cell_type": "markdown", "id": "d3d61058", "metadata": {}, "source": [ "## Programs" ] }, { "cell_type": "markdown", "id": "e8044d45", "metadata": {}, "source": [ "### Sum and average of a list of numbers\n", "\n", "Here, I like to demonstrate how a list of numbers can be prepared with the help of `random` function. This function is available in python and NumPy package. One can use any one of them.\n", "\n", "Next, I shall demonstrate sum of numebrs can be done by writing a simple code from scratch or one can take the help of `sum` function which is available in python..\n", "\n", "After that average of the numbers can be obtained." ] }, { "cell_type": "code", "execution_count": 15, "id": "0a62e872", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([41, 33, 15, 29, 35, 91, 83, 12, 6, 90])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "a = np.random.randint(100, size=10);a" ] }, { "cell_type": "code", "execution_count": 18, "id": "25789f40", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sum = 435\n", "Average = 43\n" ] } ], "source": [ "# Sum and average from scratch\n", "Sum = 0\n", "\n", "for i in range(len(a)):\n", " Sum += a[i]\n", "\n", "print('Sum = %d'%Sum)\n", "\n", "avg = Sum/len(a) # average calculation\n", "print('Average = %d'%avg)" ] }, { "cell_type": "code", "execution_count": 21, "id": "bdffcd6d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sum = 435\n", "Average = 43\n" ] } ], "source": [ "# sum and average using function\n", "\n", "s = sum(a)\n", "print(\"Sum = %d\"%s)\n", "\n", "avg1 = s/len(a)\n", "print('Average = %d'%avg)" ] }, { "cell_type": "markdown", "id": "cc862022", "metadata": {}, "source": [ "### Largest of a given list of numbers and its location in the list" ] }, { "cell_type": "code", "execution_count": 27, "id": "c5b873d2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Maximum number in the list = 91\n", "Index position of maximum value in the list is 5\n" ] } ], "source": [ "max = a[0] # Initialisation\n", "\n", "# Loop to check each element in the list\n", "for i in range(len(a)):\n", " if a[i] > max:\n", " max = a[i]\n", " else:\n", " max = max \n", "\n", "# Displaying the result\n", "print(\"Maximum number in the list = \",max)\n", "\n", "# Finding the index position\n", "for i in range(len(a)):\n", " if a[i] == max:\n", " print(\"Index position of maximum value in the list is \" +str(i))\n", " break" ] }, { "cell_type": "markdown", "id": "314888ad", "metadata": {}, "source": [ "### Sorting of numbers in ascending descending order\n", "\n", "Bubble sorting will be implemented. It is a sorting algorithm which repeatedly swaps adjacent elements if they are in wrong order." ] }, { "cell_type": "code", "execution_count": 30, "id": "7d740101", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The sorted list is \n", " [ 6 12 15 29 33 35 41 83 90 91]\n" ] } ], "source": [ "n = len(a)\n", "# scan across the list\n", "for i in range(n-1):\n", " # compare two adjacent elements\n", " # swap if the element found is smaller than the previous one\n", " for j in range(n-i-1):\n", " if a[j+1]\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 32, "id": "37d7f018", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The value of pi is 3.112\n" ] } ], "source": [ "import numpy as np\n", "\n", "# Generate coordinate points\n", "N = 1000 # N represents the number of coordinate points\n", "points = np.random.uniform(-1, 1, size=(N,2)) \n", "x, y = points[:, 0], points[:, 1]\n", "\n", "# Count the points within circle\n", "points_in = 0\n", "for i in range(N):\n", " if x[i]**2 + y[i]**2 <= 1:\n", " points_in += 1\n", "\n", "# The value of pi\n", "pi = 4*(points_in/N)\n", "print(\"The value of pi is \",pi)" ] }, { "cell_type": "markdown", "id": "7a2f65b7", "metadata": {}, "source": [ "## Solution of Algebraic and Transcendental equations by Bisection, Newton Raphson and Secant methods" ] }, { "cell_type": "markdown", "id": "24435218", "metadata": {}, "source": [ "### Algebric Equations\n", "\n", "#### Quadratic Equations" ] }, { "cell_type": "markdown", "id": "886f9cd9", "metadata": {}, "source": [ "A quadratic equation is represented by\n", "\\begin{align}\n", "ax^2 + bx + c = 0\n", "\\end{align}\n", "\n", "and its solution is given by\n", "\n", "\\begin{align}\n", "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n", "\\end{align}\n", "\n", "We may find three different types of solutions depending on the values of $a$, $b$ and $c$.\n", "\n", "\\begin{align}\n", "\\text{roots}(r1,r2)=\n", "\\begin{cases}\n", "\\text{two real roots} & \\text{if}~~ \\sqrt{b^2 - 4ac}>0\\\\\n", "\\text{real equal roots} & \\text{if}~~\\sqrt{b^2 -4ac}=0 \\\\\n", "\\text{two complex roots} & \\text{if}~~\\sqrt{b^2 - 4ac}<0\n", "\\end{cases}\n", "\\end{align}\n", "\n", "We may write following piece of code to find the roots of a quadratic equation and to ascertain the nature of the roots." ] }, { "cell_type": "code", "execution_count": 37, "id": "66fe2e6d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Roots are complex\n", " and the values are [(0.5+0.8660254037844386j), (0.5-0.8660254037844386j)]\n" ] } ], "source": [ "a, b, c = 1, -1, 1\n", "d_square = b**2 - 4*a*c\n", "root_type=[\"equal\", \"real\", \"complex\"]\n", "pm = np.array([1, -1])\n", "\n", "if d_square == 0:\n", " r = -b/(2*a)\n", " print(root_type[0], r)\n", "elif d_square > 0:\n", " r1, r2 = (-b + pm*sqrt(d_square))/(2*a)\n", " print(\"Roots are \"+str(root_type[1])+\"\\n and the values are \"+str([r1, r2]))\n", "else:\n", " r1, r2 = (-b + pm*sqrt(d_square))/(2*a)\n", " print(\"Roots are \"+str(root_type[2])+\"\\n and the values are \"+str([r1, r2]))\n" ] }, { "cell_type": "markdown", "id": "5bca9117", "metadata": {}, "source": [ "### Simultaneous Linear Equations\n", "\n", "A set of $n$ simultaneous linear equations with $n$ unknown variables can be represented as\n", "\\begin{equation}\n", "\\begin{aligned}\n", "a_{11}x_1 + a_{12}x_2 + \\cdots + a_{1n}x_n = b_1, \\\\\n", "a_{21}x_1 + a_{22}x_2 + \\cdots + a_{2n}x_n = b_2, \\\\\n", "\\vdots \\hspace{2cm} \\vdots \\\\\n", "a_{n1}x_1 + a_{n2}x_2 + \\cdots + a_{nn}x_n = b_n, \n", "\\end{aligned}\n", "\\end{equation}\n", "In matrix notation, we can write the set of equations as\n", "\\begin{align}\n", "&\\underbrace{\\begin{pmatrix}\n", "a_{11} & a_{12} & \\cdots & a_{1n} \\\\\n", "a_{21} & a_{22} & \\cdots & a_{2n} \\\\\n", "\\vdots & \\vdots & \\vdots & \\vdots \\\\\n", "a_{n1} & a_{n2} & \\cdots & a_{nn} \n", "\\end{pmatrix}}_{{A}}\n", "\\underbrace{\\begin{pmatrix}\n", "x_1 \\\\\n", "x_2 \\\\\n", "\\vdots \\\\\n", "x_n\n", "\\end{pmatrix}}_{{X}}=\n", "\\underbrace{\\begin{pmatrix}\n", "b_1 \\\\\n", "b_2 \\\\\n", "\\vdots \\\\\n", "b_n\n", "\\end{pmatrix}}_{{b}}\\\\\n", "&\\textbf{AX=b}\n", "\\end{align}\n", "\n", "Multiplying both sides of the equaion with $A^{-1}$ we get\n", "\n", "\\begin{align}\n", "A^{-1}AX = A^{-1}b \\implies X = A^{-1}b\n", "\\end{align}\n", "\n", "so, multiplying coefficient matrix $b$ with inverse of the matrix $A$, we can obtain the solution matrix $X$.\n", "\n", "We can demonstrate with an example.\n", "\n", "Solve the following set of linear equations.\n", "\\begin{align}\n", "x + 2y + z = 7\\\\\n", "2x-2y - z = 5 \\\\\n", "x + 4y -3z = 6 \n", "\\end{align}\n" ] }, { "cell_type": "code", "execution_count": 38, "id": "ac26ba46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "the solution matrix: [4. 1.1 0.8]\n" ] } ], "source": [ "import numpy as np\n", "a = np.array([[1, 2, 1], [2, -2, -1], [1, 4, -3] ])\n", "b = np.array([7, 5, 6])\n", "a_inv = np.linalg.inv(a)\n", "x = np.matmul(a_inv,b)\n", "print(\"the solution matrix: \",x)" ] }, { "cell_type": "markdown", "id": "56ae901c", "metadata": {}, "source": [ "### Root finding - Bisection method" ] }, { "cell_type": "code", "execution_count": 40, "id": "fc49be65", "metadata": {}, "outputs": [], "source": [ "\n", "import numpy as np\n", "\n", "def rootBisection(f, a, b, tol):\n", "\tfa, fb = f(a), f(b)\n", "\twhile abs(a-b)>tol:\n", "\t\tn = 1\n", "\t\tm = (a+b)/2\n", "\t\tfm = f(m)\n", "\t\tif np.sign(fa) == np.sign(fm):\n", "\t\t\ta, fa = m, fm\n", "\t\telse:\n", "\t\t\tb, fb = m, fm\n", "\t\tn += 1\n", "\treturn m" ] }, { "cell_type": "markdown", "id": "ca095d42", "metadata": {}, "source": [ "We now run the following code with a given function ($f$) whose root is to be evaluated using the function `rootBisection(f, a, b, tol)` within the interval (a, b) with a given tolerance value (`tol`)." ] }, { "cell_type": "code", "execution_count": 41, "id": "4b465945", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The root of the function is 0.6953125\n" ] } ], "source": [ "f = lambda x : np.exp(x) - 2\n", "tol = 0.01\n", "a, b = -2, 2\n", "root = rootBisection(f, a, b, tol)\n", "print(\"The root of the function is \",root)" ] }, { "cell_type": "markdown", "id": "f20d531b", "metadata": {}, "source": [ "The following piece of code helps us to understand, how we do approach towards the root. If the code appears little complicated for beginners, then, one can igonore the code and concentrate on the graphics." ] }, { "cell_type": "code", "execution_count": 42, "id": "96bb214e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(-1, 2, 'Root approx. at 0.6875')" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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TAOeABr7XIvfThgQZjYiry9qZouARSdVkYiIT37Em4yvDd5a08VdnlpPzrmW+VWIiIifDLgV2IM3KV9JX6sJhryeXpvhnLssXyoREfHRq8A7QBLQwOdagiKvAfEf4H3nXJ8j73DOXeqcmx2ZsqQwKlmyJC1atKBp06ZcddVVbNu27aReZ8KECWzcuDGyxfls27ZtjB49+pj3f/jhhzRo0IC6devyxBNPHPNxr732Go0bN6ZJkyZcf/31Wfv/7//+jyZNmtCoUSPuuOMOzIwdO3bQokWLrFulSpUYMmQI4H3G0dHRWfe99NJLEXuvhdEG4A68mVrv9LmWQDGzPN2AYXjTk9yWud0UL3gzgKV5fb1I3i666CIT/5xxxhlZv9944432t7/97aRep0OHDjZ//vxIlXVCGRkZdvDgwXw9xpo1a6xJkyZh70tPT7c6derYqlWrbN++fRYTE2NLly496nErVqywFi1a2C+//GJmZps3bzYzszlz5ljbtm0tPT3d0tPTrU2bNjZjxoyjnt+yZUubNWuWmZmNHz/eBg0aFKF3V7gdNLOOZlbWzFb4XItfgBQL852a5xFcZvYo3iiw55xzs4CFmSHxR6BZBDJLioCLL76YDRs2ALBw4ULatGlDTEwMvXr14tdffz3m/qlTp5KSkkJ8fDwtWrRgz549OV533LhxxMXF0bx5c/r06cPu3bsBGDBgALfddhuxsbHUr1+fd9/1ZoafMGECPXv2JBQKUa9ePf76V28dsB9++IEGDRpw44030rRpU9atW8e9995L06ZNadasGVOmeCO077zzTh599FEAPvroI9q3b09GRsYx3/fOnTvp2LEjLVu2pFmzZrz11lsA3H///axatYoWLVpw77335njOvHnzqFu3LnXq1OH000/nuuuuy3reke990KBBVKhQAYBzzz0XAOcce/fuZf/+/ezbt48DBw5QuXLlHM9dsWIFP/30E+3atTvuf7fi6J94F8Q9C9Tzt5TgCZcax7sBFYAn8fpyMoDZwGl5fZ38uKkF4a9DLYj09HTr27evffDBB2Zm1qxZM5s5c6aZmT300EN25513Hnf/8VoQW7duzfo9MTHRnnvuOTMz69+/v3Xp0sUOHjxoK1assKpVq9qePXts/Pjxdt5559nWrVtt9+7d1qRJE5s/f76tWbPGnHM2d+5cMzObOnWqderUydLT023Tpk1WvXp127hxo+3atcsaN25sn332mdWvX99Wrlx53M/gwIEDtn37djMz27Jli11wwQWWkZFx3BbE66+/bgMHDszanjhxYti/7nv27Gn33nuvtW3b1lq3bp31+ZqZ3XPPPVauXDk7++yz7cEHHzzquX/961/tnnvuydo+9Lk0a9bM+vTpY2vXrj3u+yqqFphZKTPrZWYZPtfiJyLRgnDOPQKswRsJNhyv1RCLF8IR5Zyr7pyb4Zz7zjm31DmnU4MBt2fPHlq0aMF5553H5s2b6dy5M9u3b2fbtm106NABgP79+/P5558fc/+JLFmyhHbt2tGsWTOSk5NZunRp1n3XXnstJUqUoF69etSpU4f//c9bgLBz585UrFiRsmXL0rt3b2bP9rrKatasSZs2bQCYPXs2/fr1o2TJklSuXJkOHTowf/58oqKiGDduHJ07d2bw4MFccMEFx63PzHjwwQeJiYmhU6dObNiwgc2bN+f9wwwjPT2d77//npkzZzJp0iRuueUWtm3bxsqVK1m2bBnr169nw4YNfPbZZ3zxxRc5njt58mT69euXtX3VVVfxww8/sHjxYjp37kz//v0jUmNhsgu4Hu8q4HEUn0WA8iKvp5gexOuormtmfzGzCcDvgP7OuSnOuVIRrC0duMfMGuMNSx7knCvu160EWtmyZVm4cCFpaWmYGc8//3zEjzFgwABGjRpFamoqDz/8MHv3Hr5+07mc/8QPbR9r/xlnnJGrY6amplKxYsVcdZwnJyezZcsWFixYwMKFC6lcuXKOGsOpWrUq69aty9pev349VatWPepx1apVo0ePHpQqVYratWtTv359vv/+e958803atGnDmWeeyZlnnknXrl2ZO3du1vMWLVpEeno6F110Uda+ihUrUrp0aQBuvvlmFixYcML3VtTcDawA/g1U9LmWoMprQDQysz+Z2aZDO8zsU+AyoAPwYaQKM7MfzeybzN93AMuAo//VSOBERUXx3HPPMXz4cM444wwqVKiQ9Rftv//9bzp06EC5cuXC7gc466yz2LFjR9jX3rFjB1WqVOHAgQMkJyfnuO/1118nIyODVatWsXr1aho08AYrfvzxx/zyyy/s2bOH6dOnc8kllxz1uu3atWPKlCkcPHiQLVu28Pnnn9OqVSvS0tIYPnw43377LR988AFff/31cd/79u3bOffc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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "f = lambda x:np.exp(x)-2\n", "tol = 0.1\n", "a, b = -2, 2\n", "\n", "x = np.linspace(-2.1, 2.1, 1000)\n", "plt.plot(x, f(x), color='cyan')\n", "plt.axhline(0, ls=':', color='k')\n", "plt.xticks([-2, -1, 0, 1, 2])\n", "plt.xlabel(r\"$x$\", fontsize=16)\n", "plt.ylabel(r\"$f(x)$\", fontsize=16)\n", "\n", "# Find the root using \"Bisection method\" and visualize\n", "fa, fb = f(a), f(b)\n", "plt.plot(a, fa, 'ko')\n", "plt.plot(b, fb, 'ko')\n", "plt.text(a, fa+0.5, \"a\", ha='center', fontsize=16)\n", "plt.text(b, fb+0.5, \"b\", ha='center', fontsize=16)\n", "\n", "\n", "n =1\n", "while (b-a) > tol:\n", "\tm = (a+b)/2\n", "\tfm = f(m)\n", "\tplt.plot(m, fm, 'bo')\n", "\tplt.text(m, fm-0.5, '$m_%d$'%n, ha = 'center')\n", "\t\n", "\tn +=1\n", "\t\n", "\tif np.sign(fa) == np.sign(fm):\n", "\t\ta, fa = m, fm\n", "\telse:\n", "\t\tb, fb = m, fm\n", "plt.plot(m, fm, 'r*')\n", "plt.text(m, fm-0.5, '$m_{}$'+str(n), ha = 'center') \n", "plt.annotate(\"Root approx. at \"+str(m),xy=(m,fm), xytext=(-1, 2), arrowprops=dict(arrowstyle='->'))" ] }, { "cell_type": "markdown", "id": "bd5495d6", "metadata": {}, "source": [ "The original idea of the above graphics is due to Mark Johansson." ] }, { "cell_type": "markdown", "id": "0d8c9499", "metadata": {}, "source": [ "### Root finding - Newton-Raphson method" ] }, { "cell_type": "code", "execution_count": 43, "id": "eadf96d3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Root = 0.693\n" ] } ], "source": [ "def rootNewtonRaphson(f, x0, tol):\n", "\tx = sp.symbols('x')\n", "\tf_prime = sp.diff(f, x)\n", "\t\n", "\tf = sp.lambdify(x, f, 'numpy')\n", "\tf_prime = sp.lambdify(x, f_prime, 'numpy')\n", "\t\n", "\twhile f(x0)> tol:\n", "\t\txnew = x0 - (f(x0)/f_prime(x0))\n", "\t\tx0 = xnew\n", "\treturn x0\n", "\n", "import sympy as sp\n", "\n", "x = sp.symbols('x')\n", "f = sp.exp(x) -2\n", "x0 = 1.4\n", "tol = 1e-4\n", "root = rootNewtonRaphson(f, x0, tol)\n", "print(\"Root = %0.3f\"%root)" ] }, { "cell_type": "markdown", "id": "4f69af4f", "metadata": {}, "source": [ "The following piece of code helps us to understand the real approach to locate the root. However, if the code appears difficult, one may ignore it for the time being, and concentrate on the graphics." ] }, { "cell_type": "code", "execution_count": 44, "id": "6600b9d2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 3, 'Root is found approx. at 0.693')" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import sympy as sp\n", "x = sp.symbols('x')\n", "f = sp.Function('f')\n", "f = sp.exp(x) - 2\n", "f_prime = sp.diff(f, x)\n", "\n", "f = sp.lambdify(x, f, 'numpy')\n", "f_prime = sp.lambdify(x, f_prime, 'numpy')\n", "\n", "x = np.linspace(-1, 2.1, 1000)\n", "xk = 2\n", "tol = 0.01\n", "\n", "plt.plot(x, f(x), ls='-', color='blue')\n", "plt.axhline(0, ls=':', color='k')\n", "\n", "n = 1\n", "while f(xk)> tol:\n", "\tplt.plot([xk, xk], [0, f(xk)], ls=':', color='gray')\n", "\tplt.plot(xk, f(xk), marker='o', color='blue')\n", "\tplt.text(xk, -0.5, \"$x_{%d}$\"%n)\n", "\txnew = xk - (f(xk)/f_prime(xk))\n", "\tplt.plot([xk, xnew], [f(xk), 0], ls='-',color='gray')\n", "\txk = xnew\n", "\tn += 1\n", "plt.plot(xk, f(xk), marker='*', color='red')\n", "plt.annotate(\"Root is found approx. at %0.3f\"%xk, xy=(xk, f(xk)), xytext=(0, 3), arrowprops=dict(arrowstyle='->'))" ] }, { "cell_type": "markdown", "id": "6ca447ac", "metadata": {}, "source": [ "The original idea of the above graphics is due to Mark Johansson." ] }, { "cell_type": "markdown", "id": "4eaa4318", "metadata": {}, "source": [ "### Practical Problems\n", "\n", "#### I) $\\tan x = x$" ] }, { "cell_type": "code", "execution_count": 7, "id": "482951af", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Root = 4.493\n", "Root (interms of pi/2) = 2.861\n", "Root = 7.725\n", "Root (interms of pi/2) = 4.918\n", "Root = 10.904\n", "Root (interms of pi/2) = 6.942\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAGKCAYAAACGrtITAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABfh0lEQVR4nO2deXxU1dnHv0NC2JV9KVGBoBCIIUBwRQwKylaVxa3ihopSrVi11VdxQX3FWkWsO62+tdBKXYogAioCVRG1MQRkERGhsonsgezLff94cpnJMJNkJvfOnXvzfD+f+Uzmzp2ZA7+5Z37nOc95js8wDBRFURRFUYJp4HQDFEVRFEWJT9QkKIqiKIoSEjUJiqIoiqKERE2CoiiKoighUZOgKIqiKEpIEqN4jW3LIYYNG8bixYvtentFURRFUULjC3UwriIJe/fudboJiqIoiqJUElcmQVEURVGU+EFNgqIoiqIoIVGToCiKoihKSNQkKIqiKIoSEjUJiqIoiqKERE2CoiiKoighUZOgKIqiKEpI1CQoiqIoihISNQmKoiiKooRETYKiKIqiKCFRk6AoiqIoSkjUJCiKoiiKEhI1CYqiKIqihERNgqIoiqIoIVGTECMOHYKKCqdboVhBYSEUFzvdCsUKysrg8GGnW6FYxcGDTrfAe6hJiAGHD0NyMsyd63RLFCsYOxZ+/WunW6FYwcsvwymnON0KxQo2bYI2bWDVKqdb4i3UJMSAffvgyBHYudPplihWsHWraukVtm6Fn34Cw3C6JUpd2bZNorV6bVqLmoQYUFAg9+XlzrZDsYaCAtXSK+i16R1US3tQkxAD8vPlvqzM2XYo1pCfr1p6Bb02vYNqaQ9qEmKAOlxvoZEE76DXpndQLe1BTUIMML+86nDdj2GInqqlN9Br0zuolvagJiEGqMP1DkVFcq9aegO9Nr2DamkPlpiECRMm0L59e9LS0o4ee/jhh+ncuTMZGRlkZGSwcOFCKz7KleiX1zuolt5C9fQOqqU9WGISrrvuOhYvXnzM8d/+9rfk5uaSm5vLiBEjrPgoV6IJNd5BtfQWqqd3UC3twRKTMGjQIFq3bm3FW3kSdbjeQbX0Fqqnd1At7cHWnITnn3+e9PR0JkyYwIEDB0KeM3PmTDIzM8nMzGTPnj12NscxNKHGO6iW3kL19A6qpT3YZhImTZrE5s2byc3NpVOnTtx1110hz5s4cSLZ2dlkZ2fTrl07u5rjKOpwvYNq6S1UT++gWtqDbSahQ4cOJCQk0KBBA2666Sa++uoruz4q7lGH6x1US+9gLmcF1dMLqJb2YJtJ2LVr19G/586dW2XlQ33DTKhRh+t+VEvvUFLi11H1dD96bdpDohVvcuWVV7J8+XL27t1LcnIyU6dOZfny5eTm5uLz+ejSpQuvvPKKFR/lSjQM5h1US+9gagmqpxfQa9MeLDEJb7zxxjHHbrjhBive2hNoGMw7qJbeIdAkqJ7uR69Ne9CKizFAHa53UC29g0YSvIVem/agJiEGqMP1Dqqld9BIgrfQa9Me1CTEAHW43kG19A4aSfAWem3ag5qEGKBZt95BtfQOppagenoBvTbtQU1CDNAwmHdQLb2DTjd4h9JSuYFqaTVqEmKAhsG8g2rpHXS6wTsUFvr/Vi2tRU1CDNDRp3dQLb2DRhK8g2ppH2oSbKaiwu9y1eG6n8DOqKLCuXYodUcjCd5BtbQPNQk2o2Ewb6HJbt5BtfQOqqV9qEmwGQ2DeQvV0zuolt5BtbQPNQk2o2Ewb6F6egfV0juolvahJsFm1OF6C9XTO6iW3kG1tA81CTajDtdbqJ7eQbX0DqqlfahJsBnzy9u4sTpcL1BQIFqC6ul2VEvvoP2sfahJsBkz6/a449Thuh3DED2PO04eq57uRrX0DtrP2oeaBJsxHW6LFvrldTvFxWIUWrSQx6qnuykoUC29gvaz9qEmwWbML+9xx2kYzO0Eagmqp9spKFAtvUKgSVAtrUVNgs2ow/UOgVqC6ul2NJLgHQoKoFEjSEpSLa1GTYLNaCTBO2gkwVtoJME7FBRA06aQmKhaWo2aBJvRhBrvEKglqJ5uRxMXvUN+vpiEhATV0mrUJNhMQYG428aN9cvrdnS6wVvodIN3KCiAZs3UJNhBotMN8DoaBvMOOt3gLXS6wTsE9rPFxU63xlrKgf8A7wM9gati/PkaSbAZ88urDtf9aCTBO5SWijFQLb2B1/rZPOBt4DqgE3AmMA0xC7FGIwk2o5EE76CRBO9gatm8Ofh8qqXb8UI/uwlYgEQM/g2UAa2A4cAo4EKgtQPtUpNgM5pQ4x3MxEUdfbofU0u9Nr1Bfj60bSt/u0XLUuAzxBgsAL6rPN4buAsYiUQQnP6RdvrzPY/XwmD1meBIgurpXkwt9dr0BmY/W1wc31ruBRYhpmAxMq2QBGQBv0GMQVenGhcGNQk2Y2bdujkMpgg63eAdTC312vQGZj9bXh5fWhrAN8gUwgJgZeWxjsClyDTCEKC5Uw2sBWoSbKagADp21NGKFygokPnrZs3kserpXjSS4C3MSEJ+vvNaFgLL8E8jbKs83h94EPgl0Bf3rBpQk2AzgQk15eWyQZDP53SrlGgI1BLia8SiREagSdBIgvtxOnFxB/5owRLEKDQFhgIPINMIv4h9syxBTYLNBOYkAFRU+P9W3EWwlk6PWJTo0UiCdygvl1yEWGpZAWTjjxasqjx+EnA9Ei3IAhrb3xTbUZNgM+bqhsDRp5oEdxJKS8WdBK5u0EiCu4lVVOgw8BFiChYCu5Epg7OAJ5D8gl6A1wLFbpkWcS2B5UJBRyxuRrX0DoGJixpJsIeioiJOO+00+vTpQ+/evXnooYfCnlteXk7fvn0ZNWoUABs3biQjI+Po7bjjjmPGjBkhX2unlpuBPwEXAG2AscBcYDAwG/gZ+BS4B1m66DWDABpJsBXD0BC1l1AtvYNON9hPo0aNWLp0Kc2bN6e0tJSBAwcyfPhwzjjjjGPOffbZZ0lNTSUvLw+AHj16kJubC4iB6Ny5M6NHjw75OVZqWQp8jr+o0YbK46nAZGQa4Szq1w+nRhJspKhI7jVE7Q00cdE7aOKi/fh8Ppo3l8V9paWllJaW4guRtb19+3bef/99brzxxpDv8/HHH5OSksJJJ50EwObNm2nXrh1dunSpjDS0BlKAvKi03Af8HbgSaI/kEjwLdK68/x5YD/wRGET9MgigJsFWgh0u6IjFzWgkwTuY12aTJhpJsJPy8nIyMjJo3749Q4cO5fTTTz/mnDvuuIMnn3ySBg1C/xzNmTOHK6+88ujjlJQUBg4cyKxZs8jNzaV793TgXdq2Pa5WWhrAOuAPwDmIMRiPLFscDbyDGIePgNsR+1GfUZNgI8HJUaAjFjejiYveIT9ftm9v0EAjCXaSkJBAbm4u27dv56uvvmLt2rVVnl+wYAHt27enf//+IV9fUlLC/PnzufTSS6scX7duHWlpaQBs2bIB6FFtVKgIqXB4G9ANSAPuBQqAKcCXwE7gNWAM0CLqf7H3qG+Rk5gSGEkw3a2OWNyLRhK8g6klaCQhFrRs2ZLBgwezePHioz/uACtWrGD+/PksXLiQoqIi8vLyGD9+PLNnzwZg0aJF9OvXjw4dOhx9TWFhIUVFRbRq1Ypt27bRonkbJh94jH6/X0F50tm8WDoFSGInsgphARIVKACaIBUO7wNGIFMKSvVoJMFGgrNuQTsjN6OrG7yDqSWoSbCLPXv2cPDgQUB+2D/66CN69uxZ5Zxp06axfft2tm7dypw5czjvvPOOGgSAN954o8pUA8D69etJTU0FYMOaNfTf+T0P8ijHZS/l/M8fZVtiR84oKaEzcBNSw+A6xDDsA+ZXHleDUDvUJNhIcHIUaFjTzWjioncIjCTodIM97Nq1i8GDB5Oens6AAQMYOnTo0SWOI0aMYOfOndW+Pj8/n48++ogxY8ZUOR441dDgrbfILS9lI7L80Ae0KjrAzY89xjRk34StwAvIlstNLP0X1g90usFGNHHRO+hyVm+h0w32k56ezqpVq0I+t3DhwmOOZWVlkZWVdfRxs2bN2Ldv3zHnDbzmGg4BFwL3bNvGZo6tT3Dtis91BGwR+v9oIxpJ8A6lpfJDolp6A40kuIcy4BP8BYtSkFUH/wVKzz475GsqzjgrVs3zPGoSbCRwdYOOPt2NauktzJUqoJGEeGQ/8A/gV8gSxXOBZ5BNkmYAm4BvgQunTKGwcSt+zfP8mucxgAO0ouR3U5xpuAdRk2AjwXvWg3ZGbkW19BaBiYvmDq2KcxhIwaInkYJF7YCrkB0VLwbeBvYiqxQmA93NFyYl8b+3/cQaMmh6Yju+GPIAHfiJ8oSkWP8TPIvmJNhIqJwEDWu6E9XSWwTnJKiWsacYWI5/i+Utlcf7IksURwEDqHkke6QkiXUtz+az/8KMGZdRtkT1tBI1CTaiiYveQbX0Fpq46Ay7qFq7IB9ZcXA+UtxoBJAc4XsGawmqp5WoSbCRggKp6JaUpMlubifQJPh8oqtq6V40cTE2VCB1ChZU3rIrj58AXINECwZTt6WJBQVw5AhMnAh9+8ox1dM6LMlJmDBhAu3bt69SSWv//v0MHTqUk08+maFDh3LgwAErPspVmMlRPp86XLcTmLgIOvp0O5q4aB9HgHlIwaJkIBOYCjQE/hfIRVYmvIhEDupauyA/Hxo1gjZttJ+1A0tMwnXXXcfixYurHHviiSc4//zz2bRpE+effz5PPPGEFR/lKoJHK6AO160ERhJAR59uprRUbqqldWwFngeGAW2BS4A3gYHAX4HdyBbM9wF9OLauQV0oKICUFJg2TftZO7BkumHQoEFs3bq1yrF58+axfPlyAK699lqysrL4wx/+YMXHuYbg0q+gDtetBK5uAB19upnCQrlXLaOnHPgC/zSCuW1Td+DXyDTCQCAWawy0n7UX23ISdu/eTadOnQDo2LEju3fvDnnezJkzmTlzJiC1vr2EJtR4h+BIgv6wuBfVMjoOAB8gpmARUssgEVmyOB0YCZziQLsKCuDHH+H66+H88+WY6mkdMUlc9Pl8+HyhA0wTJ05k4sSJAGRmZsaiOTFDpxu8g043eAfVsnYYwEb80YLPkAhCWyRSMBIpjXy8Uw2spKAAWrSAE07QftYObCum1KFDB3bt2gXIRh/t27e366PiFo0keAcdfXoH1TI8JUgBozuAk4FU4HdIFOH3SF7BT8DrwGU4bxBA9Dz9dHjkEe1n7cA2k3DRRRfx+uuvA/D6669z8cUX2/VRcUtgBrU6XHdjrm5o3FjudfTpXoJXqtR3LXcD/weMBdoAQ4FXgJ7ICoT/AquBx4EzgQRnmhkW7WftxZLphiuvvJLly5ezd+9ekpOTmTp1Kvfeey+XXXYZr776KieddBJvvvmmFR/lKjShxjuYUaEGlbZaR5/upb4noRrIMkRzGuGryuOdkVLIo4DzgKZONC4KCgpg2TIYPx4uu0yO1Sc97cYSk/DGG2+EPP7xxx9b8fauJVROgn553UmglqD1/t1MqJwEr2tZAHyM3xjsRJYhngY8iuQXZGDt0sRYUFEBRUXQoQP06KH9rB1oxUUbCZWToGEwdxJsErTev3sJlZPgRS3/i39fhGVAEdACuAD4JTAc2WHRzZjLWYcPh9/9Dj74QB57UU+nUJNgI5q46B1CmQTV0p14NXGxHPgSf7Tgm8rjKcAtyDTCOcSmdkGsCKUleEPPeEFNgk0YhibUeIlALUGT3dyMlxIXDwIfIqZgIbAPSSw8B3gKmUbogfumEWqLqeXf/gaffgq33CKP3apnPKImwSaKi8UoqMP1BhpJ8A5ujiQYwHf4owWfIhGENsg+CGbtgpYOtS/WmFqmpEB6uvazdqAmwSaCM6g1ocbdFBRAy5b+x/Uh2c2ruC1xsQQxA6Yx+L7yeBpSu2AUcDrxtzQxFpha/upXMGoUrFwpj+NZT7ehJsEmws2VaRjMnRQUwC9+4X/s1WS3+kBBgewaaF6TCQmSJW8YsmNrPPAzUvp4AVIK+TDQCFma+FskYnCSY62LH7SftR/biinVdzShxlvodIN3CKUlOKunWbvgMeAMoCNwHVLh8Epk6+V9SN7Br1GDYGL2s48+CmPHxoeWXkMjCTYRKjkK1OG6FU1c9A6htATRMzGGPWIBsBT/NMKOyuOnAQ8jyxQz8G7SoRWY/Wy/ftCpk/azdqAmwSY0kuAtNJLgHZyMJGzDX7vgY6R2QXOkdsEoJPmwg/3N8AxmPztpEnTvDmsr96zWa9M61CTYRLjERXW47iSwxDaInmYhF8VdhNIS7Lk2y5Gyx2a0YE3l8W7AzfhrFzSy/qPrBdrP2o/mJNiERhK8Q2mpdDoaSbCPbdu2MXjwYHr16kXv3r159tlnw55bXl5O3759GTVq1NFjBw8eZNy4cfTs2ZPU1FRWmmnuIbA7knAIeAu4FsktOAv4A9AK+COwHlmhMAMYghqEumD2sxMmwEUXaT9rBxpJsIlgk2BuDKRfXvcRrCXE/7I5t5GYmMjTTz9Nv379OHz4MP3792fo0KH06tXrmHOfffZZUlNTycvLO3ps8uTJDBs2jLfffpuSkhIKTNFCEGofDqibnpvwRws+AcoQUzAcyS24sPKxYi2mzEOHikHQpebWo5EEmwj+YfH5dNmcWwllElRLa+nUqRP9+vUDoEWLFqSmprJjx45jztu+fTvvv/8+N95449Fjhw4d4pNPPuGGG24AICkpiZaVRS02b95Mu3bt6NKlCxkZGbRu3Zrs7BQaNvQbjGiWzZUi+yHchVQ0PAW4E9l2+S6krsHPwN+BK1CDYBcFBWIM7rwTJk/WJZB2oCbBJoJXN4CGqN2Kahlbtm7dyqpVqzj99NOPee6OO+7gySefpEEDf9e1ZcsW2rVrx/XXX0/fvn258cYbya8ULSUlhYEDBzJr1ixyc3NJT0+nY8d3Of74446+vrYh6r3ALOByoC1Ss+B5oCvwHPADsBZ4AhiIhmljQfBKFZ1usB41CTYRLkStDtd9qJax48iRI4wdO5YZM2Zw3HHHVXluwYIFtG/fnv79+1c5XlZWRk5ODpMmTWLVqlU0a9aMJ5544ujz69atIy0tDYANGzZQVtYj7BLIQAwk0XAacDayY+I1yHTCZcBcpHbBYuA2xCwoscWcOho+XG6auGg9anZtoqBAphgaN/Yf09GnOwnOoAbV0g5KS0sZO3YsV111FWPGjDnm+RUrVjB//nwWLlxIUVEReXl5jB8/nqeeeork5OSjkYdx48YdNQmFhYUUFRXRqlUrtm3bRtu2bdmzA8Z98yCcvwLOPpuGXaYASZSXQyEyjWDmF2yr/Oz+wEPIaoS+6OgqXjBXqvzyl/JYIwnWoybBJkyHG1jmVZPd3IkmLtqPYRjccMMNpKamcuedd4Y8Z9q0aUybNg2A5cuX89RTTzF79mwATjjhBDZu3EiPHj34+OOPjyY8rl+/ntTUVECiCKk9evDp+o60+s8BedOlSxnX7Hmuv/4nbuqQxBeIUWgGDEWMwQigk23/cqUumP3sr38tjw8elHu9Nq1DDbFNBGdQgya7uRVNXLSfFStWMGvWLJYuXUpGRgYZGRksXLgQgBEjRrBz585qX//cc89x1VVXkZ6eTm5uLvfddx9QdaqhSZMm5Cxbxm4OVKli2Cj/AFOSH+O7JLgRmT7Yi0wn3IAahHgm3HJWvTatQyMJNhGcUAMaonYrmrhoPwMHDsQwjJDPmWYhkKysLLKyso4+zsjIIDs7+5jzrrnmGgDygJ/POYf3MvrRc/lShvARAEsYCsDZT3/O6Esh/dQ6/kOUmGL2s0OGyOP58+Ver03rUJNgE6EiCZrs5k40cdGdbMafW/BvZNniEwPPptfypVzOP6ucu6LgLC5SPV1HQYHs2XDxxfJYExetR02CTQSXfgUdfboVTVx0B6XACvzGYGPl8V74t1fuNH4KBx57nhv5y9Eph9JmrXgsfwojVU/XYfazN90kj81rUq9N61CTYBPhIgn65XUfmrgYv+xFcggWVN4fApKALOBWxBh0Czh/XVkSHfiJ3LGP0fvg53DWWXzcfwpllySpni4kuJ/VyrbWoybBJgoKoHXrqsc02c2dmCahSRP/MdXSGQxgHf5owUqgAtk5cQxSAnkI0CLM6wsKoIwkrtj4CG3awPJHIOFDeU71dB+mSTDTU5Yv12vTatQk2ERBASQnVz2mIWp3UlAg9S4CivypljGkCH/tgveB/1Ye7wc8gNQu6EftlmqZhm/ECKhcGalr612MaRKuu85/TK9Na1GTYBOhVjdosps7US1jz07EECwAlgAFQFOkdsEUpHbBL6J4X3OlypgxYFZ91mQ3d1JREdok6LVpLWoSbEITF72Damk/FUA2fmOQU3n8JOB6JLdgMNA45KtrjxlJSEqSLcAbNtRIglspKpL7Zs1ES/DrqVpah5oEm9AlkN5BtbSHw8BHiClYiOyg2AA4E9kkaRSyMsEX7g2iwDQJkybJFNLy5RpJcCuBCcVDpdzFUT1VS+tQk2ADhhG+4qI6XPcRTkuQkGcDrVtaa37An3S4HFm22BIYhpiCYUAbGz/f/GEZPx4qd5PWSIJLCTQJATuHaz9rMWoSbKC0VL6kugTSG4SLJIDoqSYhPKXA5/iTDjdUHk8FJiPG4CygYYzaY/6wXHMNmJtMBmqpuIdAk3DFFf7j2s9ai5oEGwhVxhd0aY5byc+HFkFr6gJrxDeM1S+cSzC3TzZrFxxETEAWcDNiDFIcapt5bQZG+7TevzsJ7GcDDYP2s9aiJsEGQhXfAQ2DuZWCAujQoeoxDVH7MYD1+KcRPkcSEdsBlyCm4ALC1y6IJQUFYurMMr7munpQLd1GYD87YoT8beqpWlqHmgQbCFXGFyQMVlwc+/YodSPU6ob6nuxWhOyHYBqDrZXH+wL3IcZgAPG3zayp5aRJ/mP1XUu3EtjPBuupWlqHmgQb0EiCt6gucbE+6bkLWYWwAFmVkA80QSoc/g9SuyA57KvjA1PLyy/3H6uPWnqBwH42WE/V0jrUJNhAOJOgCTXupKbERa9SAazCHy0wN2I+AbgaKYE8GDEKbsHU8tAheXz88fVDSy8S2M8G66laWoeaBBvQxEVvEarioleT3Y4gFQ7fr7ztQuoUnAE8jhQ1OhVraxfEElPLUDkJXtPS6wT2s8F6qpbWoSbBBnS6wTuUlsrNy9MNW/FHC5YBJcBxVK1d0M6pxlmMGUm4/Xb/MS9pWZ8I7GeD9VQtrUNNgg1Ul7ioDtddFBbKvZcSF8uAL/Abg3WVx08BbkOiBecQu9oFscRMXBwzxn/MzVrWZwL72WA9VUvrUJNgAxpJ8A7VaQnu0fMAUrPgfWARsB+5+AcBNyDG4BTHWhc7zC3c9+6Vx23buk9LRSgoEO0aNjxWT9XSOtQk2IAmLnqH6rSE+NXTAL7FHy1YAZQDbZGEw1HIjorHO9VAhzCnG8aNk8eBezfEq5ZKaEwtfb5j9VQtrUNNgg1UN/rUMJi7qCmSEE96FgOf4DcGP1QezwDuxV+7IMGJxsUJ5g/LXXf5j8WjlkrNBK46CtZTtbQONQk2YGbdNg7a11YdrvsIt1IlXkafP1G1dsERZDvlIcDvkGmEExxrXfxhrm745S/9x+JFSyUyAlcdBeupJsE61CTYQEEBNGly7MY/6nDdR7xFEgyq1i74T+XxZOAq/LULmoZ8tWKOPn/6SR537KiRBLcSGEkI1rOoyLl2eQ01CTYQqowvaEKNGwm3UiWWyW75VK1dsBOpU3A68BgyjZCOe2sXxIqKCvnxaNbMv2ug7t3gXgL72WA9VUvrUJNgA6Eq9IGGwdxITYmLdun5X6rWLihGahdciEwhDAfa2/PRnsVcztq0Kdx7r/94gwaS/KbXprsI7GcD9dR+1lrUJNhAOJOgDtd9xGoJZDlVaxesrTx+MjAJmUYYCCRZ83H1kkAthw2r+pxem+6joADaVzrlQD1VS2ux3SR06dKFFi1akJCQQGJiItnZ2TW/yOXs3w8tQuyLq4mL1jBhwgQWLFhA+/btWbt2bdjzysvLyczMpHPnzixYsICioiIGDRpEcXExZWVljBs3jqlTp1b7Wfv3y32wnlYkux0EPkBMwUL8tQvOAaZTf2oXxIpALbdtk79PqMzq1GvTfezfDykp8negnqqltcQkkrBs2TLatm0bi49yHMOA1ath1Khjn9PERWu47rrruO2227jmmmuqPe/ZZ58lNTWVvLw8ABo1asTSpUtp3rw5paWlDBw4kOHDh3PGGWeEfY81a6BDB2jTpurxaJLdDGAj/mjBZ/hrF4yqvF1A/atdECvWrJH7tDS4+mr5e/lyuddr013k5cEPP8D118vjQD1VS2vR6QaL2bkT9uyBfv2OfU7DYNYwaNAgtm7dWu0527dv5/333+f+++9n+vTpAPh8Ppo3bw5AaWkppaWl+HyS7rd582bOOOMMmjVrRsuWLfnxxx9p1aoVTZqsol+/4/AFZQXWdrqhhKq1CzZXHk8H7kGiBadTv2sXxIqcHKnO17s3TJlS9Tm9Nt3F6tVyb/azgXqqltbSoOZT6obP5+OCCy6gf//+zJw585jnZ86cSWZmJpmZmezZs8fu5tjO11/LfSiTYIbBDCO2baqP3HHHHTz55JM0CFqHWl5eTkZGBu3bt2fo0KGcfvrpAKSkpDBw4EBmzZpFbm4u6enpzJnzLt9+e1xYLSH0iGU38FdgHBIlGAq8DPQAXkSSElcD/wuchRqEWPH11xJFaNQIhgyRm4kmu7mL4H42UE/V0lpsNwmfffYZOTk5LFq0iBdeeIFPPvmkyvMTJ04kOzub7Oxs2rVz/15zOTmSKd2nz7HPmaPPiorYtqm+YeYr9O/f/5jnEhISyM3NZfv27Xz11VdVchrWrVtHWloaABs2bKCkpAfl5eGjQlBp+pDaBY8iUYGOwPXASuBKYD6wD1m+OAk40bJ/qVJbDEOuTVPLH36Qm4mOPt1FTg506iR1EaCqnqqltdhuEjp37gxA+/btGT16NF999ZXdH+koOTnQs2foOgla2S02rFixgvnz59OlSxeuuOIKli5dyvjx46uc07JlSwYPHszixYsBKCwspKioiFatWrFt2zbatm3LN9/IWoJQJqG0ITAKnk+Tiob9gAcrn3sEyAG2A68gKxNCfB2UGLJtG+zb59dywgS5mWiym7sINHxQVU/V0lpsNQn5+fkcPnz46N8ffvjh0ZGaVwn+8gaild1iw7Rp09i+fTtbt25lzpw5nHfeecyePZs9e/Zw8OBBQEzBRx99RM+ePQFYv349qampgEQRUnv0oPPMB1meeD4nvfYglJTwI/ASkmA4+FTgPfgkWaIHryIlkr8EHgD6osWN4omcHLk3r82pU+Vmoslu7qGgADZsqNrPBuqpWlqLrSZh9+7dDBw4kD59+nDaaacxcuRIhgUvUPYQu3fDjh3hTYJGEqzhyiuv5Mwzz2Tjxo0kJyfz6quvAjBixAh27twZ9nW7du1i8ODBpKenM2DAAIYOHcqoymUogVMNTRITyZk3j+6rHmVQ2VJ49FEOdexISkkJvwY2AJceBIbAn9+Fd4AJQAcb/81K3cjJkaJJ6eny+Nxz5Waio0/3sGaNTNkG9rOBeqqW1mLr6oZu3bqx2kxDrQesWiX3IabCAY0kWMUbb7wR8vjChQuPOZaVlUVWVhYA6enprDJFCsJcTnkIaL18OZsrKqpEAo47cIB/P/YYrR95hB7Apr0w+2PwXV+Hf4gSM3JyoFcvf1GsjRvlvkcPudfRp3swo0KB/WygnqqltegSSAsxv7wZGaGf1xrx8cl3yPLE95HliotXrKAXkMUyAJYzGB9w1uefH32NaukucnJg6FD/45tvlvvAOgmqpTvIyYG2bSE52X8sUE/V0lrUJFhITg507w7Hh6mGY3e9f6V2lCCFjMzaBZsqj6cBdwEnn302LF3K49xX9YVnnXX0T9XSPezaJbfA8PTjj1c9R5fNuQcz7yuwdkmgnqqltahJsJCcHBgwIPzzOvp0jj3AIsQUfADkAY2ALGAyUtSoi3nylCnk/+F5zixZ6X+DVq2qVGxRLd2DOcMUaBIC/B6go0+3UFwMa9fCXXdVPR6op2ppLWoSLOLAAdiyxR/2CoUmLsYOA1iDfxrhi8pjnYDLkRUK5xNmaWJSEsP7/sQF/53JJSflknbBL8QgJPm3V1It3UOoaUCzPIa52EqT3dzBunVQWnpscnignqqltahJsIjgJVah0MRFeykEluI3BpV7vjAAeBiJFvSj5qWJZWWQvSaJH1rfxpLGsPyRY89RLd3D11/DKadU3aTrttvkXvducBfhKtoG6mlGEgyDY8qpK5GjJsEiIjEJ6nKtYztiCBYAHyNGoRmyUdJDiDHoGOF7btwIhYVw000wYkToc1RL95CTc+z0wh//WPWxhqjdQU6O5Hx161b1eKCegZVtzb+V6FGTYBE5OXDSScfuFhiIJrvVnXLgP/iTDs0Ftl2BmxBTcC6SbxAtpuG79FJZNhcK1dId7N0LP/4Iv/lN1ePBuUOa7OYOQiUtQlU9A69NNQl1R02CRVRXadFER5/RkQd8iJiChUgSYgJwNvAkkl/QE+sqHObkQJMmEk3IzQ29pFW1dAehkhZBdAW/thpJiH9KS2X3R3NqIZBAPfXatBY1CRaQlwfffeff0zwcmuxWezbhn0b4N1AGtAKGI9GCYUBrmz47J0c6GzOD2py3DkS1dAdmVKhv36rH77hD7k1tExOhpCRWrVKi4dtvZXVDqMFYoJ56bVqLmgQLCN7bPBya7BaeUqrWLviu8nhv4E5kk6QzsP8LW1Eho89rroEbbwx/nmrpDnJyoGtXWcEayIwZVR9r4mL8U13eV6Ceem1ai5oEC6hN0iKoww1mL/7aBYuRaYUkYDDwGyRi0DXGbdq8GQ4fFi3DVc4EDWm6hXDTgMHa6rK5+CcnR3bXPfnkY58L1FP7WWtRk2ABwXubh6O+O1wD+Ab/NMLKymMdgUuR3IIhQHOnGkhVw/ef/8jfoQpk+XyyYVB91dINHDoE338P14fYXyNYW40kxD/mNGCoZMRAPet7P2s1ahIsoDZJi1A/R5+FwDL8tQt+rDyeiX+JYj9s3o40AnJypGZSr15wwQVyLFROAmiyW7xjJrOFujZ/9zu5170b3IE5DThhQujnA/Wsj/2snahJqCMFBbB+PYwZU/O59SUMtgN/tGAJ/toFQ4AHgRFI5cN4JCdHthNOSoLnn6/+XA1RxzfVTQMGa6taxjebNkF+fvgddgP1rC/9bKxQk1BHVq8+dm/zcHg1DFaB1C4wjYG5GfNJwA3INMK5QGNHWld7Kirkh2XcOHlsluwNh4ao45vsbNkpsH37Y58L1la1jG+ys+U+XD8bqKdX+1mnUJNQR2bPllFncEW3UHjJ4R4GPsI/jfAzMmVwFvAEMo3QG+tqF8SCRYtg/3447zx5bO4MHU5bHX3GL4cOwfz54SN8wdqqlvHN7NmS85WaGvr5QD291M/GA2oS6sD+/fB//wfjx0O7djWf73aHuxl/tGA5smyxJVKzYCRSw6CagpNxz/TpMvI0f1juq9wpurqcBLdq6XX+8hc4cgQmTw79fLC2qmX8sm4dLF4Mjz3mNwDBBOrp9n423lCTUAdeeUWq8v32t7U7320JNaXA5/iNwYbK4z2R7ZV/iUQOvPAlys2FpUvhySehYUM59sor1b9Gk93ik7IyePZZyMoKH54O1la1jF9mzJAKqNXtsBuop9v62XjHC/27I5SUwHPPwdChNc9dm7ih3v8+pGaBWbvgINAQyAJuQSIGKQ61zU6eeUbWYN90k/9Yjx7Vv0br/ccn77wD27ZVn3garK1qGZ/8/DPMmgXXXQdt24Y/L1BPN/SzbkJNQpT885+waxe89lrtXxOPDtcA1uGPFnyOJCK2B0YjpuACoEW4N/AAO3fCG2/ALbdAy5b+4//+t9yfe27o1+noM/4wDHj6aejeHUaNCn9esLaqZXzy0ktSitksuxyOQD3jsZ91M2oSosAwZP66Vy+48MLavy5eEmqKkJwC0xhsrTzeF7gPmUbIJH5qF9jNCy/IqCN4/vqhh+Q+XE6CJrvFH59/LoV1XnhBil2FI1hb1TL+KCoSHUeOhJ49qz83UM946We9gpqEKFi+XOaw//znY7csrQ4nE2p2IjsoLkBWJRQATYChiDEYAXSOfbMcJz8fXn4ZLrkEUoLmUWqKEmmyW/wxfbrs03DttdWfF6ytahl//P3vsGcP3HlnzecG6qmJi9aiJiEKpk+X1QxXXRXZ62LpcCuAHPwbJn1defxE4DqkdkEWYhTqM3/7m6xSCdURdetW/Wt19BlfbN4Mc+fCvfdKfkl1BGurWsYXZrS2Tx8YPLjm8wP11EiCtahJiJCNG2HBAglvNYnwF9Zuh3sEiRK8X3n7CZkyOBOYhuQXpOGu2gV2UlEhCYsDBsDZZx/7/JIlcj9kSOjX6+gzvvjTn+QH4rbbaj43WFvVMr748EOpZPv667WL1gbqqZEEa1GTECHPPguNGsGkSZG/1o6Emh+oWrugBDgeuBDJLRgGVJMUXK9ZuFDKvb7xRuiO6LHH5L46k6Cjlfjg4EEJOV9xBfziFzWfH6ytahlfPPOMbJp3xRW1Oz9QT01ctBY1CRHw5ZdSpOXaa6FDh8hfb0UYrAzZPdGcRlhfebwnsr3yKOBsZNmiEp68PLjrLjjxRBg7NvQ5s2ZV/x4aoo4f7r5biifVtmZJsLaqZfzwzjvwwQfw+ONSzbY2BOqp0w3WoiahluzdC5deCp07S8GdaIg2DLafqrULDiAm4FxgIjKN0D26JtVLDEN2k9u8WQooNQzjqE44ofr30RB1fPDaa/Dqq3D//dC3b+1eE6xtQoJMPxlGZMnIirV8951s7X366WLia0ugnjrdYC1qEmpBebkkKf78M6xYIdnT0VBbh2sg1Q3NaMEKJBGxHXAx/toFx0XXjHrPjBkyWvnjH2HQoPDnLV4s98OGhX5eR5/Ok5sLt94K558PU6fW/nXB2gZem+FK/yr2kp8vUb2kJHjrrdpHEaCqnhpJsBa9HGrBI49IIs3MmeG3Kq0N1TncYqrWLthSeTwDWaI4ChhA/aldYBeffSZ7z48eXfNI5Ykn5D6cSdBIgrMcPCg/Km3aSF6JeX3VhmBtA69NNQmxxzAkz2vdOplqqCmKF0ygnhpJsBa9HGpg0SJ49FHJQ7jxxrq9V3BCzS6q1i7IR5YkDgHuRWoXJNftI5UAdu+Gyy6Drl1lY66awspz5lT/vCa7OUdFhVyTP/4In3xSuw3WAgnWVpPdnGXmTMkrmDpVSt1HSqCeqqW1qEmohq1bZYfHU0+FF1+s+1xlg0SgH3x4JrwNVG6RzgnANUi0YDBau8AOSkslU/rAATF+xx9f82s6dqz++cREqQqnxJ4nn5StoGfMgDPPjPz1wdpqiNo5/vMfuP12iQJMmRLdewTqqVpai5qEMHzzjZQDLSuDt9+Gpk2je58jwBIqaxc0BL6GZQacATyGLFM8Fa1dYCd5eRJBWL4c/vpXKdBSG957T+5/+cvQz+t0Q+wxDMl6nzJFNL399ujeJ1hbDVE7w7JlsjV7x44we3b1pbSrI1BP1dJa1CSE4MMPYdw4aNFCflhOPjmy12/Fn3S4DKldcBxSs+DNq+HONHjqHkubrIRh+3Yxe+vWSRntmsr1BvL003IfziRo4mJsKS2VTbhee00ifH/5S/TRvWBtdfQZe/72N5nCPflkeP99yS2JlkA9VUtrUZMQxKuvyr7lvXvLFze5FkkBZcAX+I3BusrjJwO3IdMIA4GGPnjnDWikBiEm5OaKQTh8WAonXXBBZK9/++3qn9dIQuw4dEiM+5Il8OCD8PDDdZv+C9ZWR5+xwzAk92DqVDjvPFlpFLj7ajQE6qlaWouahErKy+GBB2DaNNnZ8c034bhq1hgeAD5ATMEipJZBInAOMAFZptgjxOs02S02vP++5CC0bCkrGtLTI3+P6vavB9UyVmzZIiPEjRsl4fS66+r+nsHaarJbbCgslEHYrFmi4yuvRLbUMRyBeqqW1qImAVi9WsJe2dly/+KLxxbYMYCN+KMFnwHlSMnjkUhuwQVISeTqSExUh2sn+/ZJ9b2//hUyMsQs1KZMbyj+9S+5HzMm9POqpb2Ul8Nzz0n+QWKirIU//3xr3jtYWzNErXrax9KlYhC+/16WlU+ZYl3hqkA9VUtrqdcmobBQQl5PPSXzYXPmSDKU+cUtAT7Bbww2V77uVOAeZBrhNCCC5dk6+rQJwxD9Jk+WFQz/8z8SGYp0E65A/vQnuQ9nElRL+1i9Gm66STLfhw+Hl16Ck06y7v2DtdXRp33s3y/G/f/+T7ZjX7LEOrNnEqinamkt9dIkGIYU7LjtNinNO2GCVN9r3Rp2469d8CGyOqExcD5wN1K74MQ6fLYmu1nPpk1iDhYtkh0dlyyJbnohmHnzqn9etbSevDyZ8nvqKals+o9/yLSR1aWSg7XVZDfrqaiQIld33ikRvnvuiW733NoQqKdqaS31yiQYhvyAPPwwfP45dO8OHy+FVoPhBcQYfFV5bmfgKmQq4XwgyhWQx6DJbtbx/fey+9vs2dC4sayZv+22yCrvVUdNtRRUS+vIy5OphaeflkjQddf5I3x2EKytJrtZR0WFJBJOnSrbPWdmyqAsI8O+zwzUU7W0lnphEgwDPv5YzMGKFfCL7jBpIZRcANckwA6kTsEA4FFkGqEP9tQu0NFn3dm8WczBrFmSOzJ5spRarqn4UaT8859yf/nloZ9XLevO4cN+c7B/vyQoPvRQ3cqf14ZgbXX0WXcqKmSlwtSpsuQ4NVWmAMeNs864hyNQT9XSWjxtEvLzJVz5wguw+gC0HA+9/w6bT4SXfNACuBCJFgwHotj9OWJ09BkdFRUSBXrhBViwQDKib78dfv97682ByUsvyX04k6BaRs+GDfL/+/rrEkUYNUrMQWZmbD4/WFsdfUbP/v1Su+Kll+CHH8QcvPGG7JprtzkwCdRTtbQWT5qEjRvhhZfhtXWQnwWN3wROgYNAG+AWJFpwDmDB6puI0GS3yNi/X35IXnpJcg/atYN774Xf/MY+c2CycGH1z6uWkVFaKpXxXnhBMt2TkiRRePLk2JkDk2BtNdktMgwDvv5aVoK98YaUJz/nHMknGTs2dubAJFBP1dJaPGMS9u6F/5sLM7fC9z2A+4G2kFBZAtlcpngKzpZA1hB1zRQXy0U/e7ZEDUpK4KyzZLpo7Fho1Cg27aipFLdqWTOGISsUZs2S0PPevXDiiVJa+YYboH17Z9oVrK2GqGvHtm3w97+LnuvXQ7NmUsX017+2Jlk4WgL1NEs7q5bW4GqTkHcY/vIJvLobNnQD43ogEZoWwAgfXApc4IOWDrczEA1Rh6a8XIoezZkjhaz275cfkF//WjohO5OewjF7ttyPHx/6edUyPBs3io5//7v83agRXHQRXHONLGmM9UgzmGBtNUQdnr17ZfXA3/8uZeoNQ0z7Sy/BlVfWbrM0uwnU0+fTa9NKXGcS9hyC6f+BNwtgSy8wRsrxtrvg4v0woT2c3jSy2gWxREeffsrK4N//lkzof/0Lfv5ZlkddcglcfbVsGZvo4Df0L3+R+3AmQbX0Yxgysnz7bbmtXSvHBw2SNfLjxtW99K6VBGurkYSq/PwzzJ0rWi5bJv8vKSmSNzJ+vPwdT4TSU7W0Btu74MWLFzN58mTKy8u58cYbuffeeyN+j9yd8My38EFD2N0HGAIUwUk/wJjv4bau0K2T5U23hfrucI8ckeVQ8+fLVML+/RIqHDVKfkiGD4fmzZ1upfDRR9U/X9+1LC+HlStllDl/Pnz3nYzizjlHituMGQOdOzvdytAEa6uRBMn5mTdPbp9/LsnCJ58s9Q3GjZNontX1KqwilJ71WUsrsdUklJeXc+utt/LRRx+RnJzMgAEDuOiii+jVq1e1r6sw4M2N8Odd8GVbyO8N/AISfoJT18PVLeGWU6BF9W8Tl9THZLft26U88vz5shS1uFgK5YwaJVGDYcOi34rbToJLcwdTH7U8fFhWmbz3npi8PXvk/2nwYElANLf9jXeCta2PyW7l5fDFF6LjvHmy4gRkK/UpUyT/59RT49cYBBJKz/qkpZ3YahK++uorunfvTrdu3QC44oormDdvXkiTsLcAduZDr0/gu+5Q3hPoCc3Ww5DP4JZkGN0VGrigA6qO+hAGq6iQfTDMH5LcXDnetStMmgQXXwwDBzo7lVAb/vpXuQ+3oVB90BJkg6UFC+S2fLkkkh5/PIwYIVoOGxYf89KREKxtfZluOHhQInkLFkiF0n375N8+aJBsw33RRdCli9OtjJxQenpdy1hhaze9Y8cOTjjhhKOPk5OT+fLLL0OeO/5L2NUMdvWFX6yDYT/Ab3tAmgujBdXh1TDY4cMS8luwQKIGP/8sWcZnnw1/+IMUyenZ0x2jEpOaTEJCgszFV1T4M6q9gDmNYBqDdZV7n/foIUtPR40SXWuKtMQzwdp6ebrhu+/8Wn76qfwb27QRkzdqlOx66zaTF0woPb2opWHEvg/1GYYR0QuGDRtm7N27t1bnHjhwgLy8PE6q3Jll37595Ofnc+KJ/t0P9uzZw969eylPaEJJ4WH6pJ9Kgot+SCLl22+hvLyE3r1jXaHBekpK4NAhGZ0cPixf4IQE2WK7ZUsoLd1Hhw421dWNA3btgp07oV8/d5mfUFRU+LU8dMg/CmvRQn5AKir206lTa0fbaCcFBRJub9cujxNPrGaPeJdw5IhoefCgTO+BlC5v2RIM4yDJyS2da1wMWL0aGjcuokePxk43pc4UF/u1bN68ap7Pnj17aNeunSWf8/XXX39gGMawY54wDCPSW635/PPPjQsuuODo48cff9x4/PHHw57ftGnTSN7elZxzjmE0b/4fp5sRNevWGcajjxpG//6GIbbAMLp3N4w77zSMZcsMo6TEf27//v0da2csmDZN/v0FBU63JDp+/tkwZs40jBEjDKNRI/m3tGplGOPHG8Y//2kYBw74z/W6lqtXy7+/W7ffOd2UqCgsNIz58w3j+usNo107+bc0bGgYQ4caxnPPGcYPP/jP9bqWhmEYnTsbRps27zrdjKioqDCMr74yjHvvNYzUVH8/26ePYbz0UtVzLdYy5G++rdMNAwYMYNOmTWzZsoXOnTszZ84c/vGPf9j5kXGPzH26JzZtGPDNN/6lbRs2yKj5jDOkutrFF7tvGsEq3DiP/dNPstz07bdl+WlFBXTrJvUoLrrIHbkidmD+mw3DPddmYSEsXixavveeRPOOPx5GjhQt3ZgrYhVu62crKuDLL/397I8/yr/h3HMlj+uii6zdKj0SbO0OEhMTef7557nwwgspLy9nwoQJ9O7d286PjHtkHjteqzj42bJFCpSYxXAaNJAv7G23wejR0MklS07txC3z2Hl50vHMnu0vhtOzJ9x/v2Swp6fXT5MXiL+4U3xfm2VlskJo1ix4913Zn6ZtW9lOe9w4WWXi5lwRq3BLP7t2rWj5j3/IKrCkJLjgAnj0UcnjatXK6RbGoE7CiBEjGDFiRK3Obdu2rc2tcZ6EBGjXLj5/YQ8dkt3UZs2S6ocAWVnw29+KMYi0hO7EiRMtb2M8Ec/L5srKJIt91ixZ3lZUJGveH3xQNt6J1KvXFy2zsoY425AwrF4Nf/ub/Jj89JPkFlx1lex9ce65kUV/vK4liJ4pKac43YyQ7N4thn3WLNE1MVGiPk88IYmkkUR/YqFlXAUWrUrAiGcSE6FNG4cK1odhzRrZdGf2bEngSk2V2vpXXSV19qPF651RPE43/PyzVJ97+WWps9+mjeyRcPXVcNpp0UcM6ouWgwYNdrYhARQXSwTohRdktUnDhjKVcPXVch/tHiZe1xJEzy5dujvdjKMYBqxYIVq+845sdjZggBQdu+IK2bguGuqdSagPxMvSnLIy6YCef16+vI0bw69+JWulMzM1/Fwb4mm64csvpcN56y3pgM4/H2bMkJFJkvsX0thOPGm5Y4f8mPzlL1Ks6uST4ZlnxBy08e5iIUuJl362sFAiBi+8IIOx44+HW2+Fm2+WKT83oCYhxjhd5KOsTLZ2ffRRKcOakgJPPQXXXw+tvbvCzRbiIZLwxReyO+YHH8jS01tukSREt3RA8UI8aLljh4ScZ86U63TUKPlBGTLEW3U4YoHT/WxhIfz5z6Lnrl1SxXLmTBmINWvmXLuiQU1CjHHK4ZaVyQ6Ljz4qxVX69JEs94sv1g4oWpwcfX7xBUydKtntbdvCk09KFnS87HvhNpzUcscOKTg2c6b8sF1/PfzP/0iFUiU6nOpni4rEHEybJuYgK0uSv7OyXBydDbc2spqbLSxatMho1KiRkZKSYkybNs2uj3GURYsWGc2azTdatNhpdOnSxVi/fn1MPvfzzw0jLc2/1nbuXMMoL7fns77//nujbdu2xkknnWT06dPHaNWqldGtWzfj0KFD9nxgDCksLDQGDBhgpKenG7169TIuueRtAwzj1Vf/bXTr1s246qqrbNd1507DuPRS0bJtW8N48knDOHzYuvf/8ccfjaysLCM1NdXo1auXMWPGDOvePM446aSTjLS0NKNPnz5Gnz7nGWAYt9yyPmZaFhdLzZFGjQwjMdEwbrrJMLZsse79g7+vDz74oHVvHkd8++23lRrKrUWLFsaJJ+4y+vf/OWZaGobUqTjhBLk2zz1X6sZYTVlZmZGRkWGMHDnS+jcP85sfFyahrKzM6Natm5GWlmYUFxcb6enpxrp16+z4KEfZsGGDkZ6+2jjxxFLj7rvvtv3zDh0yjFtvNQyfT768b79tnzkI5JJLLjE++eQTwzAM49xzzzXWrFlj/4fGgIqKCuNw5S9ySUmJkZIyxQDDWLhwszF16lRj27ZttulaXi6Fj44/Xn5UHnnEWnNgsnPnTuPrr782DMMw8vLyjJNPPtmT16JhiEnYs2ePYRiGcfCg9Ib33POT7VoahmGsXOk37pdeWrXYkVUEf19PO+00Y+XKldZ/UBxRVlZmdOjQwejfv9A488wjMdFy1y6/cU9LM4ylS237KOPpp582rrzyypiahLgINJsbQTVq1IikpKSjG0F5jdWrV9OmTUsKC0vo06ePrZ81fz706gUvvij19tetkzXxsZhaWLduHWlpaQBs2LCBHj162P+hMcDn89G8Mp5fWlpKeXkJAOvWbaRPnz7k5OTYouvGjbL+feJE6NtXEqAeeMCeqYVOnTrRr18/AFq0aEFqaio7duxg8+bNtGvXji5dupCRkUHr1q1JSUkhLy/P+kY4gDndsH37Llu1PHxYrsezzpIyu++9B2++ac/UQvD3tbS0FJ/P52ktP/74Y1JSUmjatDGHDh2xVUvDkOTS1FTpbx97DL7+Wq5VO9i+fTvvv/8+N95449FjsdAyLkxCqI2gduzY4WCL7GHNmjW0b9+KsjKDAwcO2PIZZWXSCV18sSQirlwJzz4rNfhjQWFhIUVFRbRq1Ypt27bRtm1bkjyUXl9eXk5GRgbt27cnI0OKDWzcuImMjAz2799vua5vvQUZGWIM/vIXWLoUTonR8u+tW7eyatUqTj/9dFJSUhg4cCCzZs0iNzeX9PR03n33XY47zr37HPh8Pi644AL69+/P66+/CsCOHbtt03LjRjF5L7wgRcnWr5fkRDsJ/L4OHTrUs1qazJkzhyuvvJLERDh8uMA2LQsKZNB1002S37VmjRQns7Oru+OOO3jyySdpEDDSi4mW4UIM1dws56233jJuuOGGo3Wo//a3vxm33nqrHR/lOBMnGkaHDva89+HDhjFqlIS97rqr6j4KsSI7O/vofh0ffPCBMXbs2Ng3IgYcOHDASEu73wDDqIzOW0pFhWH84Q+i5cCBEtKMJYcPHzb69etnvPPOO0ePnXzyycb+/fsNwzCM9u3bG8XFxbFtlMVs377dMAzD2L17t3Hqqf0MkBwBO/j3v2VfjHbtDOPTT+35jOo4cOCAkZWVZXzzzTeGYXhPS8MwjOLiYqNNmzbGTz/9ZAwZYhhnnmnP5/z0k2EMGGAYDRoYxvTpsZnCfe+994xJkyYZhmEYy5YtqzLdYKGW8Tvd0LlzZ7Zt23b08fbt2+kcuNWVR/D5fMyc+QK7d+/B5/MdvVnBzp2yJ/zChfDSS7Ks0YnyrIFTDU2aNCEnJ4dvv/029g2xmZYtW9Knj0QS+vcfUEXPuupaViZLGe+5RwqtfPQRdOxoVctrprS0lLFjx3LVVVcxZswYwJsRIrOPad++PaNHXwTAAw88ZKmWIFUShw6FDh1kVcrAgXVuesS0bNmSwYMHs3jxYk9qCbBo0SL69etHhw4dSEyElSu/tFzL9etl35p162DuXKlGG4sp3BUrVjB//ny6dOnCFVdcwdKlSxk/fnxstAznHqq5WU5paanRtWvXKomLa9euteOjHOc3v5ERhZWsWSOJic2bG8bChda+t+Ln559/Ng5Ubo1YUFBg9O59pwGShGYVhw4ZxoUXSgThvvtiM0oJpKKiwrj66quNyZMnVznutQjRkSNHjLy8vKN/n3nmmYbPV2E88IB1n1FRIZEJMIysLMOoHOzFjODv68CBA4333nvPc1qaXH755cZrr71mGIZhjBwpO9VayccfS+Jwx46GkZ1t7XtHQmAkwWIt4zeSYG4EtWnTJlJTU7nssss8uRHUu+++y7JlH3H4cAEffvihJe+5aZNEEMrL4dNPYfhwS95WCcGuXbsYPHgw6enpDBgwgP79+wKwdOkn3HTTTVx++eV10rWkRPRbskTWWv/v/8a+hsWKFSuYNWsWS5cuJSMjg4yMDBYuXOi5CNHu3bsZOHAgffr04bTTTmPkyJEkJPhYv36jJVqC1LF44AEYP17qWcR6s57g7+vQoUMZNWqU57QEyM/P56OPPjoa+UpIgH37Dlmm5Wefyf4KyckSDerf34pW152YaBnOPVRzs436sM/53XcbRtOmFcaECRPq/F75+YZx6qmG0bq1PUuolOpZulRGicuXy+P9+/fXSdfbb5f3mzPHogYqEdG4sWH8/vfyd121XLhQtLz2WokoKLFlzBhZjmgYdddy1y7D6NTJME4+OfbRoBgT8jdfKy7GmIQEKC4u59Zbb63T+xiGVNhbuxYWLdLqbE4QXKXvsccei1rXf/5T9l644w64/HJr2qdERmCVvrpouXWrRA/69JH8INdW2nMxVmlZVgZXXinLVT/4ID62bo41cTHdUF8wDINPPvkYw2hwdC16tPz5z7J17EMPwYUXWtRAJSLMev9lZQb33HMPw4cPj0rXDRtkp8azz5byyoozJCbWXcviYtmKu7xcNlBr0sSGhio1Ins31E1LgClTYPlyeOUVOPVUa9voFjSSEEOee+45tmxpTEXF+bz00stMmnRLVO+TnS21EC68UOY8FWcwIwn/+td8srOXcOjQIb7//ntuuaX2uh45IuutmzWTaIITK1IUISEBVq1aQ35+dFqCRIKys+Hdd6F7/OxUXO9ISID9+/NYsiR6LefNkz01br5ZduCsr/gMw4j0NRG/oLZkZmaSnZ1t19vHBY88IqP/sjL/j0wk7N8P/frJdMPXX8vmPoozZGfLnvDz58Mvfxn56w1DdoV7801Z5njeeda3Uak97duLYXvppehe/7e/wbXXytLVJ56wtm1KZFx3HSxbBv/9b3Sv//57yMyUbbo//RQaN7a0efFKyIkxjSTEmMAtaaMxCXfeKTURPvtMDYLT1HV74bfekp05H39cDUI8UJfthXfvlhyhrCwpz6s4S123ip4wQVYWvfVWvTEIYVGTEGMCk90irXmxY4dsO3rbbXDaada3TYmMumwvbBjwxz9Cz54y8lScpy7bC7/4IhQWynbPidqrOk5dtPziC4ke/OlP0KWLpc1yJfp1jjF1GX0+/zxUVMDkyda2SYmOumj52WcyXfHyy7GvhaCEJtrRZ2GhmIRf/lLC04rz1CWS8Mwz0LIlXH+9pU1yLdo9xZhoR59HjsgPypgx6m7jhbpEEqZPhzZt6ndCVLwR7ehz9mzYu1emApX4IFott26VVSkTJ9qzy6obUZMQY6Idfb7+uqzV1Y4ofohWy++/l8zpSZOgaVPr26VERzSjz4oKGXn26yeVT5X4INpIwnPPSWTvN7+xvk1uRacbYow5+ozkC1xeDjNmyMYiZ55pS7OUKIhGS5Ctuxs2hDrW01IsJiEhci0/+EDqXMyerUWT4olotMzLk/ozl10m5ZcVQSMJMSaaEPWCBTL61ChCfBGNlgcOwGuvydLHWO7sqNRMNCHq6dOhc2cpoKTED9Fo+eqrcPiw7Oyo+FGTEGOiCVFPnw4nnQSjR9vTJiU6otFy5kwoKNCOKB6JNES9Zo1sxvWb30S+Ukmxl0i1LCuTCN+gQVIfQfGjJiHGRDr6zM6GTz6B22/XpVXxRqRalpTIsqrzz4f0dPvapURHpKPPZ56RnJKJE+1rkxId5nRDbWsFzp0rhZfUvB+L/uzEmEhHn888Ay1aSG1/Jb6IVMu33pJCWH/+s31tUqInktHnrl1Ss2TixPq56U+8Y16bFRW1K1o3fTqkpERXOdXraCQhxkSS7LZjh5TsvfFGOP54e9ulRE6kiYvPPCPFk4YNs69NSvREkuz20ksSddCaJfFJJNfmF1/I7Y47oquC63XUJMSYSELUy5bJedddZ2uTlCiJRMt9+2SvjWuv1eJJ8Uok0w0ffggDB2rxpHglkmvzww9lZYrWLAmNdlcxJpIQdU6ObDXbq5e9bVKiIxItV62S+wED7GuPUjdqO91QVgarV6uW8Uyk/WyPHhqtDYeahBgTicPNyYE+fTRhMV6JVEuAvn3ta49SN2obSfj2WygqkgJKSnwS6bWpWoZHTUKMqa3DrajQL2+8E8m859dfSznt1q1tbZJSB2obSfj6a7nXazN+qW0/u2cPbNumWlaHmoQYU1uHu3mzFPbQL2/84vNJfoGOVrxBbSMJOTmy9PGUU+xvkxIdte1nzQifXpvhUZMQY2rrcPXL6w5qM/o8dEgqZqqW8U1tIwk5OZCRoZnw8Uyk/axOA4ZHTUKMqW2IOidHqrj17m1/m5Toqc2yudxcuVeTEN/URsuKCklCVS3jm0j62W7dZGtoJTRqEmJMJGGwU0/Vcq/xTm1C1BoVcge10XLTJsjPh/79Y9MmJToi6WdVy+pRkxBjahMGMwydw3YLtQlR5+TIJkAdOsSmTUp01FZL0Gsz3qlNP3vgAPzwg2pZE2oSYkxtHO6PP8L+/frldQO1jSSolvFPbbVs1AhSU2PTJiU6atPP6jRg7VCTEGNq43B1tOIeahp95ufLunrVMv6pbSQhPR0aNoxNm5ToiKSf1aTF6lGTEGNqk1CTkyPnnXpqbNqkRE9NyW5r1kiym5qE+KcmLXUa0D3Utp894QRo1y42bXIrahJiTG3CYDk5Uoq5SZPYtEmJnppC1BoVcg81abl1Kxw8qFq6gdr2s6plzahJiDE1hcEMQyq66ZfXHdQUov76axmpdO4cuzYp0VEbLUGvTTdQUz97+DBs3Kha1gY1CTGmJoe7axfs3q3LctxCbSIJ/ftLdUYlvqmNlomJOg3oBmrqZ1evlgGZ9rM1oyYhxtTkcDU87S6qG30WFcG6daqlW6gpkpCTA2lpsrpBiW+0n7UONQkxpqaEmpwcGXX26RO7NinRU12y29q1MpLRjsgdVKelJi26i9r0sx07QqdOsWuTW1GTEGNqCoOZe5s3bx67NinRU12IWkcr7qI6LXfskB0DVUt3UJt+VrWsHbaZhIcffpjOnTuTkZFBRkYGCxcutOujXEVtwmD65XUP1YWoc3KkJnyXLrFskRItNWkJem26her62cJCWL9etawtiXa++W9/+1vuvvtuOz/CdVTncHVvc/dRUyShXz9NWnQLCQlS08IwjtUsJ0e2BU9Pd6ZtSmRU189+842YB+1na4dON8SY6hzuqlVyr19e9xBu9FlaKoWUVEv3UN21mZMDPXtCs2axbZMSHTVpCXpt1hZbTcLzzz9Peno6EyZM4MCBAyHPmTlzJpmZmWRmZrJnzx47mxMXVOdwtUyo+wgXSdiwAYqLdYmVm6jp2lQt3UNNWrZpAyeeGNs2uZU6mYQhQ4aQlpZ2zG3evHlMmjSJzZs3k5ubS6dOnbjrrrtCvsfEiRPJzs4mOzubdvWgPmZNDjclRfc2dxPhIgk6WnEf4a7N3bslcVG1dA819bM6DVh76pSTsGTJklqdd9NNNzFq1Ki6fJRnqG5pzpo1uvTRbSQkyNRCMGvWQNOm0L177NukREe4a/Obb+Rer033EE5LwxA9b7899m1yK7ZNN+zatevo33PnziUtLc2uj3IV1YXBDh2Ctm1j2x6lboSbbjh0CFq3lmQ3xR2EuzYPHZJ7vTbdQzgti4qgpES1jATbVjf8/ve/Jzc3F5/PR5cuXXjllVfs+ihXYf5ohIokFBTI6FNxD+GmG1RL9xEuRF1QIPeqp3tQLa3DNpMwa9Ysu97a1fh8oUefhgH5+frldRvhIgmqpfsIN/rMz5d71dM9qJbWocFQBwg1+iwtlWP65XUXGknwDjr69A6qpXWoSXCAUDXizS+vrsN2F+Hq/RcUqJZuI1yym/6wuI+atNRrs/aoSXCAUCFq7YjcSbjpBo0kuI9wIeqCAmjYUG6KO6hOS9BrMxLUJDhAqBC1fnndiU43eIfqQtSqpbvQ6QbrUJPgABpJ8A4aSfAO1Y0+VUt3oZEE61CT4AChRp+adetOwkUSdHWD+wg3+lQt3Ud1WoLqGQlqEhxAExe9gyYueofqkt1US3ehSajWoSbBARITNQzmFUJpWVYmVd1US3dhjj51usH9VKclqOmLBDUJDlBdJEE7I3cRSsvCQrlXLd1FdaNP1dJdhKtsq/1s5KhJcABNXPQOqqV30MRFbxHu2mzQAJKSnGmTG1GT4ACauOgdVEvvoImL3iLctdm0qW4THQlqEhxAR5/eQbX0DhpJ8Bbhrk3VMjLUJDhAdcWUmjSJfXuU6KlOS02OchfVFeBRLd1HuGtTTUJkqElwgHCJi02a+BNuFHegSajeQRMXvUW4a1MNX2ToT5IDaBjMOyQkyDbfFRX+Y2oS3Emo6YaKClmtolq6D+1nrUFNggNUl1CjuItQIWpNXHQnobTU5azuRftZa1CT4ADqcL1DqNGnRhLciWrpLbSftQY1CQ4QLqFG58rcR6jRpyYuuhPV0lto4qI1qElwgHAJNfrldR+hkt109OlOVEtvoYmL1qAmwQHC7d2gHZH7CFUjXpezupPqtNRr031oP2sNahIcQCMJ3iHc6DMpyf+jo7gDjSR4C+1nrUFNggOESqjRrFt3EirZTbV0J+G0BNXTjQT3s4ah12Y0qElwAE2o8Q7hkt1US/dRXeKi6uk+gvvZ4mIxCqplZKhJcIBwS3M0ocZ9hFs2p1q6j+qWQKqe7iO4n1XDFx1qEhxAIwneQSMJ3kEjCd4iuJ9VwxcdahIcIDihprRUbtoRuY9wyW6qpfvQxEVvEdzPqpbRoSbBATQM5h00cdE7aOKitwjuZ1XL6FCT4ADhwmD65XUfOt3gHcJpmZAADRs60yYlerSftQY1CQ4QLpKgc2XuQxMXvUN1Wvp8zrRJiR6N2FqDmgQHUIfrHTSS4B00v8RbaD9rDWoSHEATaryD/rB4hwYNJGKgWnqDcP2sRvkiQ02CAwTXFFeT4F7C1ftXLd1JqGtTtXQn2s9ag5oEBwh2uJp1616CIwnl5VBUpFq6lVDXpmrpTrSftQY1CQ6gCTXeITjZrbBQ7lVLdxLq2lQt3Yn2s9agJsEBtBKYdwhOXFQt3U2oa1O1dCehtPT5oHFj59rkRtQkOIAZBjMMeawO170ETzeolu4mVLKbaulOwmmpy1kjQ02CA5ijz4oKudcfFvcSnLioWrobTVz0DqqlNahJcIDg0aeZUNOkiTPtUaInnJbaGbkTTVz0DqqlNahJcIDgZLeCAmjUyH9ccQ+htATtjNyKJi56B9XSGtQkOECoZDdNjnInmrjoLQKT3QxDr003EypxUU1C5KhJcIBQo0/98roTjSR4i8DRZ1GR3KuW7kQjCdagJsEBQo0+9cvrTsJFElRPdxI4+lQt3Y0uZ7UGNQkOEGrZnHZE7kSXQHqLwGQ31dLd6HJWa1CT4ADBy+Y069a9hNISVE+3ErhsTrV0N8FLILWfjQ41CQ4QavSpYTB3opEEbxEqkqDXpjvRSII11MkkvPXWW/Tu3ZsGDRqQnZ1d5blp06bRvXt3evTowQcffFCnRnoNTVz0DqG0bNhQbor7CEx2U8PnbkJVtlUtIyexLi9OS0vjX//6FzfffHOV4+vXr2fOnDmsW7eOnTt3MmTIEL777jsStBAAoImLXkK19BaauOgdAivbNmig12a01CmSkJqaSo8ePY45Pm/ePK644goaNWpE165d6d69O1999VVdPspTaOKid1AtvYUmLnqHwGuztFTudeoocmzJSdixYwcnnHDC0cfJycns2LEj5LkzZ84kMzOTzMxM9uzZY0dz4g5NXPQOqqW30MRF7xB4baqW0VOjSfD5fEt8Pt9a85aWlkZaWhrz5s2zpAETJ04kOzub7Oxs2rVrZ8l7xjs6+vQOqqW30EiCdwi8NlXL6KkxJ8EwjCHBh2p6TefOndm2bdvRx9u3b6dz586Rt86jBCa7lZVBSYmGwdxKqMRF1dK9hEpcVD3dSeC1qSYhemyZbrjooouYM2cOxcXFbNmyhU2bNnHaaafZ8VGuJDDZrbBQ/tYvrzvRSIK30MRF7xDYz6qW0VMnkzB37lySk5NZuXIlI0eO5MILLwSgd+/eXHbZZfTq1Ythw4bxwgsv6MqGADQM5h18PsmcVpPgDYKnGxo0gKQkZ9ukREeoflajQpFTpyWQo0ePZvTo0SGfu//++7n//vvr8vaeJTChRk2C+wlMdlOT4G5CaenzOdsmJTq0n7UGrbjoAIEOV7Nu3U/g6FNXN7gb1dI7aD9rDWoSHCBUQo2GwdxLcLKbauleVEvvoImL1qAmwQE0ocZbBCe7qZbuRbX0DtrPWkOdchKU6Ah0uGaHpF9e92KOPisqZLWKaulegiMJqqV70UiCNahJcIBAh1tSIn/rl9e9mKPPoiJ5rFq6F40keIdQkQSdPoocnW5wAE2o8RZmsptq6X40cdE7hOpnGzd2rj1uRU2CA+jSHG9hLptTLd2PLmf1DsH9bJMmUvdCiQz9L3MALfLhLczRp2rpfoKLKamW7iW4n1XDFx1qEhwgVEJNkybOtUepG2aym0YS3I8mLnqH4H5WtYwONQkOEJxQk5TkP6a4DzPZTU2C+9HERe8Q3M+qltGhJsEBNAzmLYKnG1RP92JqaRh6bbqd4H5Wp46iQ02CAwQm1GgGtfsxk910dYP7MbUsLpa6F6qle9F+1hrUJDiAOlxvoYmL3kG19A4asbUGNQkOoAk13kITF71DQoJEEDQq5H60n7UGNQkOoAk13kITF72DeW0ePiz3qqV70X7WGtQkOICGwbyFJi56B/PaVJPgfrSftQY1CQ6gCTXeIjBxMSEBGjZ0ukVKtJjXZl6e3Ou16V6C+1nNL4kONQkOoA7XWwRGEpo2BZ/P6RYp0WJem2oS3I/2s9agJsEBgmuKq8N1N4F7N6iW7iY4kqB6uhdTy8JCuT7VJESHmgQHMDcZUYfrDYIjCYp70ZwE76BaWoOaBIcIXDanX153o1p6B51u8A6qpTWoSXCIxEQoLYWiIv3yup3AJZCqpbvRJZDeIVhLnTqKDjUJDpGQoB2RVzCnG3SlivvR0ad3UC2tQU2CQyQmanKUV9DERe8QmLjo80Hjxs62R4keXc5qDWoSHEIjCd5BExe9Q2Cymy5ndTeauGgNiU43oL6SkKAO1yuYiYu6zMr9BIaoVUt3o9MN1qAmwSESE9XhegUzcbG4WLV0O4HJbqqlu9EkVGvQ6QaH0EiCd9DERe+gkQTvEBxJ0Hyh6FCT4BCauOgdzOWsmrjofgKT3VRLd6OJi9agJsEhNHHROyQkSBQBVEu3E5y4qLgXs7Kt9rN1Q02CQyQmSk1x0C+v21EtvUNgvX/V0v0EXptNmjjbFreiJsEhzBELaGfkdlRL76BaegtTz0aNqmqr1B41CQ6hnZF3UC29g2rpLUw9VcvoUZPgEIkBi0/1C+xuVEvvoFp6C1NPTUKNHjUJDmE63IYN5aa4l8DRp3ZG7ka19BYaSag7ahIcwnS4+uV1Pzr69A6qpbfQfrbuaMVFh1CH6x2inccuLS1l+/btFBUVWd+oekDjxo1JTk6moYWhOM1J8Bbaz9YdNQkOoV9e7xDtD8v27dtp0aIFXbp0wac7CUWEYRjs27eP7du307VrV8veV02Ct9B+tu7odINDaBjMO0Qboi4qKqJNmzZqEKLA5/PRpk0by6MwOt3gLTRxse6oSXAI0+Hql9f91CXZTQ1C9Njxf6eJi95CIwl1R02CQ2gkwTvo6NM7qJbeQvvZuqMmwSHU4XoHU8sGDSApydm2KHVDcxK8hfazdUdNgkOow/UOgVrq7IG70UiCt9B+tu6oSXAIdbjeQbWEgwcP8uKLLzrdjDqjkQRvoddm3VGT4BD65fUOqqWaBCU+0QTxuqN1EhxCl+Z4Byu0vOMOyM21ojV+MjJgxoyazxs8eDD33XcfQ4cOZcqUKRw6dIjnnnsuos+699572bx5MxkZGQwdOpQ//vGPXHLJJWzbto2ioiImT57MxIkT2bp1K8OHD2fgwIF8/vnndO7cmXnz5tEkYB9fK9oTLYHTDXptuh+dbqg7dTIJb731Fg8//DAbNmzgq6++IjMzE4CtW7eSmppKjx49ADjjjDN4+eWX695aD6GjT+/gdi2nTp3Kgw8+yM8//8yqVauYP39+lefPOeccDh8+fMzrnnrqKYYMGQLAE088wdq1a8kNcDqvvfYarVu3prCwkAEDBjB27FgANm3axBtvvMGf//xnLrvsMt555x3Gjx9f6/bYiUYSvIXbr814oE4mIS0tjX/961/cfPPNxzyXkpJSpcNQqqIO1ztYoWVtRvx2MWjQIAzDYPr06SxfvpyEwF9K4NNPP43qff/0pz8xd+5cALZt28amTZvo2LEjXbt2JSMjA4D+/fuzdevWiNpjJ5q46C20n607dTIJqampVrWj3qEO1zu4XctvvvmGXbt20aZNG1q0aHHM87WJJASzfPlylixZwsqVK2natClZWVlHqyM2atTo6HkJCQkUFhZG1B47CfQjjRvH9KMVG3D7tRkP2Ja4uGXLFvr27cu5555b7Uhk5syZZGZmkpmZyZ49e+xqTtyhX17v4GYtd+3axVVXXcW8efNo3rw5ixcvPuacTz/9lNzc3GNugQahRYsWVYzEoUOHaNWqFU2bNuXbb7/liy++sKw9dmJq2aSJ1L1Q3I2br814ocbLwOfzLfH5fGvNW1paGmlpacybNy/sazp16sSPP/7IqlWrmD59Or/61a/Iy8sLee7EiRPJzs4mOzubdu3aRf8vcRmauOgd3KplQUEBY8aM4emnnyY1NZUHHniAqVOnRvVebdq04eyzzyYtLY3f/e53DBs2jLKyMlJTU7n33ns544wzYtqeaNFseG/h1msznqhxusEwjOB4olHTaxo1anQ0pNi/f39SUlL47rvvjiY2KupwvYRbtWzatCkrV648+njQoEFVHkfKP/7xjyqPFy1aFPK8tWvXHv377rvvtq090dCggRTEcpuWSmjcem3GE7YE1Pbs2UN5eTkAP/zwA5s2baJbt252fJRr0YQa76BaeovERNXSK+i1WXfqZBLmzp1LcnIyK1euZOTIkVx44YUAfPLJJ6Snp5ORkcG4ceN4+eWXad26tSUN9grqcL2DauktEhJUS6+g12bdqdPqhtGjRzN69Ohjjo8dO/bommglNOpwvYNq6S00kuAd9NqsO5q/6xDqcL2DauktNJLgHfTarDtqEhxCs6i9g2rpLRISVEuvkJAg27cn1ilmXr9Rk+AQGgbzDqqlt9DpBu+gWtYdNQkO0a4dtGihIxYv0KaNLJvr1MnplihW0K6daukV2rWDX/zC6Va4Gw3COMSECTBqFDRs6HRLlLrSpQt8/z107ep0SxQr+PhjaN7c6VYoVvDQQ3DXXU63wt2oSXCIpCRITna6FYpV1LUMyB1ArgXtCCQDmFGL86zamtnJLZ6tpEMHp1ugWEWzZhqtrStqEhSlnmPFVtG1eR9FUdyHzzBqrLIcTMQvqC2ZmZlkZ2fb9faKElds2LAhbnZSPffcczly5AjLly+v086LVr1PbYmn/0NFcTm+UAc1kqAo9Ryrtop2cotnRVHsQVc3KEo9xqqtop3e4llRFHtQk6Ao9RSrtmaOhy2eFUWxB81JUBSH0Pn0uqP/h4piGSFzEjSSoCiKoihKSNQkKIqiKIoSEjUJiuIgUUz3KZXo/52i2I+aBEVxiMaNG7Nv3z79sYsCwzDYt28fjRs3dropiuJptE6CojhEcnIy27dvZ8+ePU43xZU0btyYZK1trii2oiZBURyiYcOGdNVdoRRFiWN0ukFRFEVRlJCoSVAURVEUJSRqEhRFURRFCUk0FRdtw+fzLTYMY5jT7VAURVEUJc5MgqIoiqIo8YNONyiKoiiKEhI1CYqiKIqihERNgqIoiqIoIVGToCiKoihKSNQkKIqiKIoSkv8HF04+rWQgeaYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import sympy as sp\n", "import matplotlib.pyplot as plt\n", "\n", "def figure():\n", "\tfig, ax = plt.subplots(figsize=(9, 7))\n", "\t# set the x-spine\n", "\tax.spines['left'].set_position('zero')\n", "\t\n", "\t# turn off the right spine/ticks\n", "\tax.spines['right'].set_color('none')\n", "\tax.yaxis.tick_left()\n", "\t\n", "\t# set the y-spine\n", "\tax.spines['bottom'].set_position('zero')\n", "\t\n", "\t# turn off the top spine/ticks\n", "\tax.spines['top'].set_color('none')\n", "\tax.xaxis.tick_bottom()\n", "\t\n", "def rootNewtonRaphson(f, x0, tol):\n", "\tx = sp.symbols('x')\n", "\tf_prime = sp.diff(f, x)\n", "\t\n", "\tf = sp.lambdify(x, f, 'numpy')\n", "\tf_prime = sp.lambdify(x, f_prime, 'numpy')\n", "\t\n", "\twhile abs(f(x0))> tol:\n", "\t\txnew = x0 - (f(x0)/f_prime(x0))\n", "\t\tx0 = xnew\n", "\treturn x0\n", "\n", "x = sp.symbols('x')\n", "f = sp.tan(x) - x\n", "tol = 1e-4\n", "figure()\n", "x = np.arange(0, 4*np.pi, 4*np.pi/100)\n", "plt.plot(x, np.tan(x), color='blue', label='$x=\\\\tan x$')\n", "plt.plot(x, x, color='cyan', label='$x=x$')\n", "for n in range(3, 9, 2):\n", "\tx0 = (n*np.pi/2)*0.999\n", "\troot = rootNewtonRaphson(f, x0, tol)\n", "\tprint(\"Root = %0.3f\"%root)\n", "\tprint(\"Root (interms of pi/2) = %0.3f\"%(root*2/np.pi))\n", "\tplt.plot(root, np.tan(root), 'ro', markersize=5)\n", "\tplt.plot(root, root, 'ro', markersize=5)\n", "\tplt.plot([root, root], [0, root], ls=':', color='blue')\n", "\tplt.text(root-0.8, root+0.1, ''+str(round((root/np.pi),2))+'$\\pi$')\n", "plt.xticks(np.arange(0, 4*np.pi+np.pi/2, np.pi/2), ('$0$', '$\\\\frac{\\pi}{2}$', '$\\pi$', '$3\\\\frac{\\pi}{2}$', '$2\\pi$', '$5\\\\frac{\\pi}{2}$', '$3\\pi$', '$7\\\\frac{\\pi}{2}$', '$4\\pi$'))\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a209675f", "metadata": {}, "source": [ "#### II) $I = I_0\\left[\\frac{\\sin\\alpha}{\\alpha}\\right]^2$\n", "\n", "The above expression can be simplied as\n", "\\begin{equation}\n", "\\sin \\alpha = \\sqrt{m}\\alpha \n", "\\end{equation}\n", "where, $(I/I_0) =m $.\n", "\n", "Consider, $m=2$ and writing $x$ inplace of $\\alpha$, we obtain\n", "\\begin{equation}\n", "x = \\sqrt{2}\\sin x\n", "\\end{equation}" ] }, { "cell_type": "code", "execution_count": 10, "id": "301adae6", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def f(x):\n", " return x - np.sqrt(2)*np.sin(x)\n", "\n", "def df(x):\n", " return 1 - np.sqrt(2)*np.cos(x)\n", "\n", "def NewtonRaphson(f, df, x, tol):\n", " dx = f(x)/df(x)\n", " iter = 0\n", " while (abs(dx) >= tol):\n", " x = x - dx\n", " dx = f(x)/df(x)\n", " iter += 1\n", " return iter, x\n", "\n", "x = np.linspace(0, np.pi, 1000)\n", "\n", "fig, ax = plt.subplots()\n", "ax.spines['bottom'].set_position('zero')\n", "ax.spines['top'].set_position('zero')\n", "ax.spines['left'].set_position('zero')\n", "ax.spines['right'].set_position('zero')\n", "ax.plot(x, np.sqrt(2)*np.sin(x), color='blue', label=\"$y = \\sqrt{2}\\sin(x)$\")\n", "ax.plot(x, x, color='red', label=\"$y=x$\")\n", "plt.xticks(np.arange(0, 3*np.pi/2, np.pi/2), ('$0$', '$\\\\frac{\\pi}{2}$', '$\\pi$'))\n", "ax.legend(loc='upper right')\n", "plt.axvline(x=np.pi/2, color='k', linestyle=\":\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "9940d4f6", "metadata": {}, "source": [ "## Ordinary Differential Equations\n", "\n", "#### Problem - 1\n", "\n", "Solve the coupled first order differential equations\n", "\\begin{align}\n", "&\\frac{dx}{dt} = y + x - \\frac{x^3}{3} \\\\\n", "&\\frac{dy}{dt} = -x\n", "\\end{align}\n", "\n", "for four initial conditions $x(0) = 0$, $y(0) = -1, -2, -3, -4$. Plot x vs y for each of the\n", "four initial conditions on the same screen for $0 \\le t \\le 15$." ] }, { "cell_type": "code", "execution_count": 11, "id": "aaee62b1", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy.integrate import odeint\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 20, "id": "a52b0693", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.linspace(0, 15, 100)\n", "for y0 in range(-1, -5, -1):\n", " x0\n", " z0 = [x0, y0]\n", "\n", " def model(z, t):\n", " x, y = z\n", " dx_dt = y + x - x**3/3\n", " dy_dt = -x\n", " dz_dt = np.array([dx_dt, dy_dt])\n", " return dz_dt\n", "\n", " sol = odeint(model, z0, t)\n", " x, y = sol[:, 0], sol[:, 1]\n", " plt.plot(x, y, label='y = '+str(y0))\n", " plt.xlabel('x', fontsize=14)\n", " plt.ylabel('y', fontsize=14)\n", " plt.legend()\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "4cbd8b77", "metadata": {}, "source": [ "#### Problem - 2\n", "\n", "The ordinary differential equation describing the motion of a pendulum is\n", "$$\\theta^{\\prime\\prime} = -\\sin \\theta $$\n", "\n", "The pendulum is released from rest at an angular displacement $\\alpha$, i.e. $\\theta(0) = \\alpha$, $\\theta^{\\prime}(0)=0$. Use the RK4 method to solve the equation for $\\alpha$ = 0.1, 0.5 and 1.0\n", "and plot $\\theta$ as a function of time in the range $0 \\le t \\le 8\\pi$. Also, plot the analytic\n", "solution valid in the small $\\theta$ ($\\sin \\theta \\approx \\theta$).\n", "\n", "The given equation is a second order differential equation. This, we have to break up into two first order differential equations. Consider,\n", "\\begin{align}\n", "&\\frac{d\\theta}{dt} = \\omega \\\\\n", "&\\frac{d\\omega}{dt} = -\\sin \\theta\n", "\\end{align}\n", "So, we can represent these two equations by a single equation such that\n", "\\begin{align}\n", "\\frac{d}{dt}\n", "\\begin{bmatrix}\n", "\\theta \\\\\n", "\\omega\n", "\\end{bmatrix}=\n", "\\begin{bmatrix}\n", "\\omega \\\\\n", "-\\sin \\theta\n", "\\end{bmatrix}\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 45, "id": "7e58ae6b", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.linspace(0, 8*np.pi, 100)\n", "dt = (t[-1] - t[0])/len(t)\n", "\n", "z = np.zeros([len(t), 2]) # to store the values \n", " # of theta and omega\n", "\n", "\n", "def model(z, t):\n", " theta, omega = z\n", " dtheta_dt = omega\n", " domega_dt = -np.sin(theta)\n", " dz_dt = np.array([dtheta_dt, domega_dt])\n", " return dz_dt\n", "\n", "def rk4(z, t):\n", " k1 = model(z, t)\n", " k2 = model(z + k1*dt/2, t + dt/2)\n", " k3 = model(z + k2*dt/2, t + dt/2)\n", " k4 = model(z + k3*dt, t + dt)\n", " z = z + (1/6)*(k1 +2*(k2 + k3) + k4)*dt\n", " return z\n", "\n", "for theta0 in [0.1, 0.5, 1.0]:\n", " omega0 = 0\n", " z[0] = [theta0, omega0] # initial state of oscillation\n", " \n", " for i in range(len(t)-1):\n", " z[i+1] = rk4(z[i], t[i])\n", " \n", " theta, omega = z[:, 0], z[:, 1]\n", "\n", " plt.plot(t, theta, label='$\\\\theta_0 = $'+str(theta0))\n", "\n", "plt.legend(loc= 'upper right')\n", "plt.xlabel('t', fontsize=14)\n", "plt.ylabel('$\\\\theta(t)$', fontsize=14)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "b03711ea", "metadata": {}, "source": [ "#### Problem - 3\n", "\n", "Solve the differential equation:\n", "\\begin{align}\n", "x^2\\frac{d^2y}{dx^2} - 4x(1+x)\\frac{dy}{dx} + 2(1 + x)y = x^3\n", "\\end{align}\n", "\n", "with the boundary conditions:\n", "\n", "at $x = 1$, $y = (1/2) e^2$, $dy/dx = - (3/2) e^2– 0.5$, in the range $1\\le x \\le 3$. Plot $y$ and $\\frac{dy}{dx}$ against $x$ in the given range. Both should appear on the same graph.\n", "\n", "Let us break up the given second order differential equation into two first order differential equations -\n", "\\begin{align}\n", "&\\frac{dy}{dx} = z \\\\\n", "&\\frac{dz}{dx} = \\frac{4(1+x)}{x}z - \\frac{2(1+x)}{x^2}y +x\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 77, "id": "89a41868", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(1, 3, 100)\n", "y0 = (1/2)*np.e**2\n", "z0 = -(3/2)*np.e**2 - 0.5\n", "u0 = [y0, z0]\n", "\n", "def model(u, x):\n", " y, z = u\n", " dy_dx = z\n", " dz_dx = 4*(1+x)*z/x - 2*(1+x)*y/x**2 + x\n", " du_dx = np.array([dy_dx, dz_dx])\n", " return du_dx\n", "\n", "sol = odeint(model, u0, x)\n", "y, z = sol[:, 0], sol[:, 1]\n", "\n", "plt.plot(x, y, color='blue', label='$y$')\n", "plt.plot(x, z, color='red', label='$\\\\frac{dy}{dx}$')\n", "plt.legend()\n", "plt.xlabel('x')\n", "plt.ylabel(\"$y$ and $\\\\frac{dy}{dx}$\")\n", "plt.show()" ] } ], "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.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }