├── tutorial11 └── leaves.jpg ├── tutorial5.ipynb ├── tutorial2.ipynb ├── all.ipynb ├── tutorial4.ipynb ├── tutorial9.ipynb ├── newton_raphson_approximation.ipynb └── tutorial8.ipynb /tutorial11/leaves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruwanego/cm2607/HEAD/tutorial11/leaves.jpg -------------------------------------------------------------------------------- /tutorial5.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 103, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "# Assumptions" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 104, 17 | "outputs": [], 18 | "source": [ 19 | "import sympy as sym" 20 | ], 21 | "metadata": { 22 | "collapsed": false 23 | } 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 105, 28 | "outputs": [ 29 | { 30 | "data": { 31 | "text/plain": "{'integer': True,\n 'hermitian': True,\n 'complex': True,\n 'real': True,\n 'noninteger': False,\n 'rational': True,\n 'infinite': False,\n 'irrational': False,\n 'finite': True,\n 'algebraic': True,\n 'imaginary': False,\n 'extended_real': True,\n 'commutative': True,\n 'transcendental': False,\n 'positive': True,\n 'negative': False,\n 'extended_nonpositive': False,\n 'extended_negative': False,\n 'nonzero': True,\n 'nonpositive': False,\n 'extended_nonnegative': True,\n 'nonnegative': True,\n 'zero': False,\n 'extended_positive': True,\n 'extended_nonzero': True}" 32 | }, 33 | "execution_count": 105, 34 | "metadata": {}, 35 | "output_type": "execute_result" 36 | } 37 | ], 38 | "source": [ 39 | "x = sym.symbols(\"x\")\n", 40 | "# n = sym.Symbol('n')\n", 41 | "n = sym.Symbol('n', integer=True, positive=True)\n", 42 | "n.assumptions0" 43 | ], 44 | "metadata": { 45 | "collapsed": false 46 | } 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 106, 51 | "outputs": [ 52 | { 53 | "data": { 54 | "text/plain": "sin(n*x)", 55 | "text/latex": "$\\displaystyle \\sin{\\left(n x \\right)}$" 56 | }, 57 | "execution_count": 106, 58 | "metadata": {}, 59 | "output_type": "execute_result" 60 | } 61 | ], 62 | "source": [ 63 | "eq = sym.sin(n * x)\n", 64 | "eq" 65 | ], 66 | "metadata": { 67 | "collapsed": false 68 | } 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 107, 73 | "outputs": [ 74 | { 75 | "data": { 76 | "text/plain": "0", 77 | "text/latex": "$\\displaystyle 0$" 78 | }, 79 | "execution_count": 107, 80 | "metadata": {}, 81 | "output_type": "execute_result" 82 | } 83 | ], 84 | "source": [ 85 | "eq1 = eq.integrate((x, 0, 2 * sym.pi))\n", 86 | "eq1" 87 | ], 88 | "metadata": { 89 | "collapsed": false 90 | } 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "source": [ 95 | "# Functions" 96 | ], 97 | "metadata": { 98 | "collapsed": false 99 | } 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 108, 104 | "outputs": [ 105 | { 106 | "data": { 107 | "text/plain": "f" 108 | }, 109 | "execution_count": 108, 110 | "metadata": {}, 111 | "output_type": "execute_result" 112 | } 113 | ], 114 | "source": [ 115 | "f = sym.Function('f')\n", 116 | "f\n", 117 | "# g = sym.Symbol('g', cls='Function')" 118 | ], 119 | "metadata": { 120 | "collapsed": false 121 | } 122 | }, 123 | { 124 | "cell_type": "code", 125 | "execution_count": 109, 126 | "outputs": [ 127 | { 128 | "data": { 129 | "text/plain": "Derivative(f(x), x)", 130 | "text/latex": "$\\displaystyle \\frac{d}{d x} f{\\left(x \\right)}$" 131 | }, 132 | "execution_count": 109, 133 | "metadata": {}, 134 | "output_type": "execute_result" 135 | } 136 | ], 137 | "source": [ 138 | "f_ = sym.diff(f(x), x)\n", 139 | "f_" 140 | ], 141 | "metadata": { 142 | "collapsed": false 143 | } 144 | }, 145 | { 146 | "cell_type": "markdown", 147 | "source": [ 148 | "# f(x) = sin(x) => f`(x) - sin(x) = 0" 149 | ], 150 | "metadata": { 151 | "collapsed": false 152 | } 153 | }, 154 | { 155 | "cell_type": "code", 156 | "execution_count": 110, 157 | "outputs": [ 158 | { 159 | "data": { 160 | "text/plain": "-sin(x) + Derivative(f(x), x)", 161 | "text/latex": "$\\displaystyle - \\sin{\\left(x \\right)} + \\frac{d}{d x} f{\\left(x \\right)}$" 162 | }, 163 | "execution_count": 110, 164 | "metadata": {}, 165 | "output_type": "execute_result" 166 | } 167 | ], 168 | "source": [ 169 | "f2 = f_ - sym.sin(x)\n", 170 | "f2" 171 | ], 172 | "metadata": { 173 | "collapsed": false 174 | } 175 | }, 176 | { 177 | "cell_type": "code", 178 | "execution_count": 111, 179 | "outputs": [ 180 | { 181 | "data": { 182 | "text/plain": "Eq(f(x), C1 - cos(x))", 183 | "text/latex": "$\\displaystyle f{\\left(x \\right)} = C_{1} - \\cos{\\left(x \\right)}$" 184 | }, 185 | "execution_count": 111, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "f3 = sym.dsolve(f2, f(x))\n", 192 | "f3" 193 | ], 194 | "metadata": { 195 | "collapsed": false 196 | } 197 | }, 198 | { 199 | "cell_type": "code", 200 | "execution_count": 112, 201 | "outputs": [ 202 | { 203 | "data": { 204 | "text/plain": "f(x) - 2*Derivative(f(x), x) + Derivative(f(x), (x, 2))", 205 | "text/latex": "$\\displaystyle f{\\left(x \\right)} - 2 \\frac{d}{d x} f{\\left(x \\right)} + \\frac{d^{2}}{d x^{2}} f{\\left(x \\right)}$" 206 | }, 207 | "execution_count": 112, 208 | "metadata": {}, 209 | "output_type": "execute_result" 210 | } 211 | ], 212 | "source": [ 213 | "f4 = sym.Derivative(f(x), x, 2) - 2 * sym.Derivative(f(x), x) + f(x)\n", 214 | "f4" 215 | ], 216 | "metadata": { 217 | "collapsed": false 218 | } 219 | }, 220 | { 221 | "cell_type": "markdown", 222 | "source": [ 223 | "# Solve ordinary differential equation eq for function f(x)" 224 | ], 225 | "metadata": { 226 | "collapsed": false 227 | } 228 | }, 229 | { 230 | "cell_type": "code", 231 | "execution_count": 113, 232 | "outputs": [ 233 | { 234 | "data": { 235 | "text/plain": "Eq(f(x), (C1 + C2*x)*exp(x))", 236 | "text/latex": "$\\displaystyle f{\\left(x \\right)} = \\left(C_{1} + C_{2} x\\right) e^{x}$" 237 | }, 238 | "execution_count": 113, 239 | "metadata": {}, 240 | "output_type": "execute_result" 241 | } 242 | ], 243 | "source": [ 244 | "sym.dsolve(f4, f(x))" 245 | ], 246 | "metadata": { 247 | "collapsed": false 248 | } 249 | }, 250 | { 251 | "cell_type": "code", 252 | "execution_count": null, 253 | "outputs": [], 254 | "source": [], 255 | "metadata": { 256 | "collapsed": false 257 | } 258 | } 259 | ], 260 | "metadata": { 261 | "kernelspec": { 262 | "display_name": "Python 3", 263 | "language": "python", 264 | "name": "python3" 265 | }, 266 | "language_info": { 267 | "codemirror_mode": { 268 | "name": "ipython", 269 | "version": 2 270 | }, 271 | "file_extension": ".py", 272 | "mimetype": "text/x-python", 273 | "name": "python", 274 | "nbconvert_exporter": "python", 275 | "pygments_lexer": "ipython2", 276 | "version": "2.7.6" 277 | } 278 | }, 279 | "nbformat": 4, 280 | "nbformat_minor": 0 281 | } 282 | -------------------------------------------------------------------------------- /tutorial2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "# when using the package it is always better to import under an alias.\n", 12 | "# there are functions with the same name when using with numpy and can cause\n", 13 | "# conflicts and confusion.\n", 14 | "import sympy as sym" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "outputs": [], 21 | "source": [ 22 | "# defines x as a symbol.\n", 23 | "x = sym.symbols('x')" 24 | ], 25 | "metadata": { 26 | "collapsed": false 27 | } 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 3, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/plain": "2*x + 5", 36 | "text/latex": "$\\displaystyle 2 x + 5$" 37 | }, 38 | "execution_count": 3, 39 | "metadata": {}, 40 | "output_type": "execute_result" 41 | } 42 | ], 43 | "source": [ 44 | "# defines an equation in x, the symbol we defined before.\n", 45 | "eq = 2 * x + 5\n", 46 | "eq" 47 | ], 48 | "metadata": { 49 | "collapsed": false 50 | } 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 4, 55 | "outputs": [ 56 | { 57 | "data": { 58 | "text/plain": "7", 59 | "text/latex": "$\\displaystyle 7$" 60 | }, 61 | "execution_count": 4, 62 | "metadata": {}, 63 | "output_type": "execute_result" 64 | } 65 | ], 66 | "source": [ 67 | "# substitutes x = 1 in equation defined earlier.\n", 68 | "eq.subs(x, 1)" 69 | ], 70 | "metadata": { 71 | "collapsed": false 72 | } 73 | }, 74 | { 75 | "cell_type": "code", 76 | "execution_count": 5, 77 | "outputs": [ 78 | { 79 | "data": { 80 | "text/plain": "9", 81 | "text/latex": "$\\displaystyle 9$" 82 | }, 83 | "execution_count": 5, 84 | "metadata": {}, 85 | "output_type": "execute_result" 86 | } 87 | ], 88 | "source": [ 89 | "# substitutes x = 2 in equation defined earlier.\n", 90 | "eq.subs(x, 2)" 91 | ], 92 | "metadata": { 93 | "collapsed": false 94 | } 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": 6, 99 | "outputs": [ 100 | { 101 | "data": { 102 | "text/plain": "2*x + 3*y + 4*z", 103 | "text/latex": "$\\displaystyle 2 x + 3 y + 4 z$" 104 | }, 105 | "execution_count": 6, 106 | "metadata": {}, 107 | "output_type": "execute_result" 108 | } 109 | ], 110 | "source": [ 111 | "# define multiple symbols\n", 112 | "x, y, z = sym.symbols('x,y,z')\n", 113 | "eq1 = 2 * x + 3 * y + 4 * z\n", 114 | "eq1" 115 | ], 116 | "metadata": { 117 | "collapsed": false 118 | } 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 7, 123 | "outputs": [ 124 | { 125 | "data": { 126 | "text/plain": "2*x + 4*z + 3", 127 | "text/latex": "$\\displaystyle 2 x + 4 z + 3$" 128 | }, 129 | "execution_count": 7, 130 | "metadata": {}, 131 | "output_type": "execute_result" 132 | } 133 | ], 134 | "source": [ 135 | "eq2 = eq1.subs(y, 1)\n", 136 | "eq2" 137 | ], 138 | "metadata": { 139 | "collapsed": false 140 | } 141 | }, 142 | { 143 | "cell_type": "code", 144 | "execution_count": 8, 145 | "outputs": [ 146 | { 147 | "data": { 148 | "text/plain": "9", 149 | "text/latex": "$\\displaystyle 9$" 150 | }, 151 | "execution_count": 8, 152 | "metadata": {}, 153 | "output_type": "execute_result" 154 | } 155 | ], 156 | "source": [ 157 | "# It is also possible to substitute multiple variables at once:\n", 158 | "# substitute x = y = z = 1\n", 159 | "# pay attention to the format for multiple substitution\n", 160 | "eq1.subs([(x, 1), (y, 1), (z, 1)])" 161 | ], 162 | "metadata": { 163 | "collapsed": false 164 | } 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 36, 169 | "outputs": [ 170 | { 171 | "data": { 172 | "text/plain": "4*z + 5", 173 | "text/latex": "$\\displaystyle 4 z + 5$" 174 | }, 175 | "execution_count": 36, 176 | "metadata": {}, 177 | "output_type": "execute_result" 178 | } 179 | ], 180 | "source": [ 181 | "# You do not have to substitute all the variables\n", 182 | "eqZ = eq1.subs([(x, 1), (y, 1)])\n", 183 | "eqZ" 184 | ], 185 | "metadata": { 186 | "collapsed": false 187 | } 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 35, 192 | "outputs": [ 193 | { 194 | "data": { 195 | "text/plain": "[-5/4]" 196 | }, 197 | "execution_count": 35, 198 | "metadata": {}, 199 | "output_type": "execute_result" 200 | } 201 | ], 202 | "source": [ 203 | "# You can solve for the remaining variable\n", 204 | "sym.solve(eqZ, z)" 205 | ], 206 | "metadata": { 207 | "collapsed": false 208 | } 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 17, 213 | "outputs": [ 214 | { 215 | "data": { 216 | "text/plain": "[-5/2]" 217 | }, 218 | "execution_count": 17, 219 | "metadata": {}, 220 | "output_type": "execute_result" 221 | } 222 | ], 223 | "source": [ 224 | "# solve the first equation (2x + 5 = 0) for x\n", 225 | "sym.solve(eq, x)" 226 | ], 227 | "metadata": { 228 | "collapsed": false 229 | } 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 16, 234 | "outputs": [ 235 | { 236 | "data": { 237 | "text/plain": "[-3/2]" 238 | }, 239 | "execution_count": 16, 240 | "metadata": {}, 241 | "output_type": "execute_result" 242 | } 243 | ], 244 | "source": [ 245 | "# solve (2x + 5 = 2) for x\n", 246 | "# 2x + 5 - 2 = 0\n", 247 | "sym.solve(eq - 2, x)\n" 248 | ], 249 | "metadata": { 250 | "collapsed": false 251 | } 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": 19, 256 | "outputs": [ 257 | { 258 | "data": { 259 | "text/plain": "{x: 2, y: 3}" 260 | }, 261 | "execution_count": 19, 262 | "metadata": {}, 263 | "output_type": "execute_result" 264 | } 265 | ], 266 | "source": [ 267 | "# define simultaneous equations\n", 268 | "# 2x + 3y = 13 => 2x + 3y - 13 = 0\n", 269 | "# 3x - 5y = -9 => 3x - 5y + 9 = 0\n", 270 | "eq_a = 2 * x + 3 * y - 13\n", 271 | "eq_b = 3 * x - 5 * y + 9\n", 272 | "# solve\n", 273 | "sym.solve([eq_a, eq_b], (x, y))" 274 | ], 275 | "metadata": { 276 | "collapsed": false 277 | } 278 | }, 279 | { 280 | "cell_type": "code", 281 | "execution_count": 20, 282 | "outputs": [ 283 | { 284 | "data": { 285 | "text/plain": "3*x**2 - 5*x - 2", 286 | "text/latex": "$\\displaystyle 3 x^{2} - 5 x - 2$" 287 | }, 288 | "execution_count": 20, 289 | "metadata": {}, 290 | "output_type": "execute_result" 291 | } 292 | ], 293 | "source": [ 294 | "# Differentiation:\n", 295 | "eq_c = 3 * x ** 2 - 5 * x - 2\n", 296 | "eq_c" 297 | ], 298 | "metadata": { 299 | "collapsed": false 300 | } 301 | }, 302 | { 303 | "cell_type": "code", 304 | "execution_count": 23, 305 | "outputs": [ 306 | { 307 | "data": { 308 | "text/plain": "6*x - 5", 309 | "text/latex": "$\\displaystyle 6 x - 5$" 310 | }, 311 | "execution_count": 23, 312 | "metadata": {}, 313 | "output_type": "execute_result" 314 | } 315 | ], 316 | "source": [ 317 | "# differentiate with respect to x\n", 318 | "eq_diff = sym.diff(eq_c, x)\n", 319 | "eq_diff" 320 | ], 321 | "metadata": { 322 | "collapsed": false 323 | } 324 | }, 325 | { 326 | "cell_type": "code", 327 | "execution_count": 25, 328 | "outputs": [ 329 | { 330 | "data": { 331 | "text/plain": "0", 332 | "text/latex": "$\\displaystyle 0$" 333 | }, 334 | "execution_count": 25, 335 | "metadata": {}, 336 | "output_type": "execute_result" 337 | } 338 | ], 339 | "source": [ 340 | "# This differentiates the equation with respect to x.\n", 341 | "# It is also possible to apply higher order differentiation. It can be done in one of two ways:\n", 342 | "# 2nd order differentiation\n", 343 | "eq_diff_2ndOrder = sym.diff(eq, x, x)\n", 344 | "eq_diff_2ndOrder" 345 | ], 346 | "metadata": { 347 | "collapsed": false 348 | } 349 | }, 350 | { 351 | "cell_type": "code", 352 | "execution_count": 28, 353 | "outputs": [ 354 | { 355 | "data": { 356 | "text/plain": "0", 357 | "text/latex": "$\\displaystyle 0$" 358 | }, 359 | "execution_count": 28, 360 | "metadata": {}, 361 | "output_type": "execute_result" 362 | } 363 | ], 364 | "source": [ 365 | "# does the same thing, but more convenient for higher orders\n", 366 | "eq_diff_2ndOrder = sym.diff(eq, x, 2)\n", 367 | "eq_diff_2ndOrder" 368 | ], 369 | "metadata": { 370 | "collapsed": false 371 | } 372 | } 373 | ], 374 | "metadata": { 375 | "kernelspec": { 376 | "display_name": "Python 3", 377 | "language": "python", 378 | "name": "python3" 379 | }, 380 | "language_info": { 381 | "codemirror_mode": { 382 | "name": "ipython", 383 | "version": 2 384 | }, 385 | "file_extension": ".py", 386 | "mimetype": "text/x-python", 387 | "name": "python", 388 | "nbconvert_exporter": "python", 389 | "pygments_lexer": "ipython2", 390 | "version": "2.7.6" 391 | } 392 | }, 393 | "nbformat": 4, 394 | "nbformat_minor": 0 395 | } 396 | -------------------------------------------------------------------------------- /all.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [ 10 | { 11 | "data": { 12 | "text/plain": "
", 13 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAGdCAYAAAAmK7htAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZsUlEQVR4nO3dd3hUZd7G8e+ZyaSSSkiDAAGRXgQUQQEriIqFtbuWd13LKtjXvoruCnbZlbWui1gQdxdxdVUERbAgCAhKrwECSQiBkJ5MZuZ5/whEQkshyZxk7s91jZIzp/zOnCn3POc5z1jGGIOIiIiIDTj8XYCIiIjIfgomIiIiYhsKJiIiImIbCiYiIiJiGwomIiIiYhsKJiIiImIbCiYiIiJiGwomIiIiYhtB/i7gYD6fj8zMTCIjI7Esy9/liIiISC0YYygsLCQlJQWHo/7tHrYLJpmZmaSmpvq7DBEREamHjIwM2rVrV+/lbRdMIiMjgcodi4qK8nM1IiIiUhsFBQWkpqZWfY7Xl+2Cyf7TN1FRUQomIiIizcyxdsNQ51cRERGxDQUTERERsQ0FExEREbEN2/UxERERaWzGGDweD16v19+lNCtOp5OgoKBGHc5DwURERAKK2+0mKyuLkpISf5fSLIWHh5OcnExwcHCjrF/BREREAobP5yM9PR2n00lKSgrBwcEazLOWjDG43W527dpFeno6Xbp0OaaB1I5EwURERAKG2+3G5/ORmppKeHi4v8tpdsLCwnC5XGzduhW3201oaGiDb0OdX0VEJOA0xjf9QNHYj52OjIiIiNiGgomIiIjYhoKJiIiI2IaCiYiISDMwfvx4LMuqdktKSvJ3WQ1OV+WIiNiQr7iYvOnTiTz7bILbt/d3OWITPXv25Msvv6z62+l0+rGaxqFgIiJiQzuffZa90z9g10uT6bZ8mb/LadGMMZRW+GcE2DCXs07jqAQFBbXIVpIDKZiIiNhQyY+LATBlZX6upOUrrfDS49Ev/LLt1U+MJDy49h/FGzZsICUlhZCQEAYNGsSECRPo1KlTI1bY9NTHREREpBkYNGgQb7/9Nl988QVvvPEG2dnZDBkyhN27d/u7tAalFhMREQloYS4nq58Y6bdt19aoUaOq/t27d28GDx5M586dmTp1KnfffXdjlOcXCiYiIhLQLMuq0+kUu4iIiKB3795s2LDB36U0KJ3KERGxI2P8XYHYXHl5OWvWrCE5OdnfpTQoBRMREZFm4N5772X+/Pmkp6ezaNEiLrnkEgoKCrjuuuv8XVqDan5tVyIigaAOl5BKYNi+fTtXXnklubm5tGnThpNPPpmFCxfSoUMHf5fWoBRMRETsSKdy5CDTp0/3dwlNQqdyRERExDYUTERERMQ2FExERETENhRMRETsSJ1fJUApmIiI2JE6v0qAUjARERER21AwEREREdtQMBERERHbUDARERER21AwERERaQa++eYbRo8eTUpKCpZl8dFHH1W73xjD+PHjSUlJISwsjNNOO41Vq1b5p9hjoGAiIiLSDBQXF9O3b18mT5582PufeeYZXnjhBSZPnszixYtJSkri7LPPprCwsIkrPTb6rRwREZFmYNSoUYwaNeqw9xljmDRpEg8//DBjxowBYOrUqSQmJjJt2jRuvvnmpiz1mCiYiIhIYDMGKkr8s21XeIMMppeenk52djYjRoyomhYSEsLw4cNZsGCBgomIiEizUVECE1L8s+2HMiE44phXk52dDUBiYmK16YmJiWzduvWY19+U1MdERESkhbAOan0xxhwyze7UYiIiIoHNFV7ZcuGvbTeApKQkoLLlJDk5uWp6Tk7OIa0odqdgIiIigc2yGuR0ij+lpaWRlJTEnDlzOOGEEwBwu93Mnz+fp59+2s/V1Y2CiYiISDNQVFTExo0bq/5OT09n+fLlxMXF0b59e+68804mTJhAly5d6NKlCxMmTCA8PJyrrrrKj1XXnYKJiIhIM7BkyRJOP/30qr/vvvtuAK677jreeust7rvvPkpLS7n11lvJy8tj0KBBzJ49m8jISH+VXC8KJiIidmSMvysQmznttNMwR3leWJbF+PHjGT9+fNMV1QjqdFWOx+PhkUceIS0tjbCwMDp16sQTTzyBz+ermqelDIkrIiIiTa9OweTpp5/m1VdfZfLkyaxZs4ZnnnmGZ599lpdeeqlqnpYyJK6IiF81s0s8RRpKnYLJDz/8wIUXXsh5551Hx44dueSSSxgxYgRLliwBDh0St1evXkydOpWSkhKmTZvWKDsgItIi6VSOBKg6BZNTTz2Vr776ivXr1wPw888/891333HuuecCNQ+JKyIiInI0der8ev/995Ofn0+3bt1wOp14vV6efPJJrrzySqB+Q+KWl5dTXl5e9XdBQUGddkBERERajjq1mHzwwQe8++67TJs2jZ9++ompU6fy3HPPMXXq1Grz1WVI3IkTJxIdHV11S01NreMuiIiISEtRp2Dyxz/+kQceeIArrriC3r17c80113DXXXcxceJEoPqQuAc62pC4Dz74IPn5+VW3jIyM+uyHiEjLos6vEqDqFExKSkpwOKov4nQ6qy4XPnBI3P32D4k7ZMiQw64zJCSEqKioajcRkYCnzq8SoOrUx2T06NE8+eSTtG/fnp49e7Js2TJeeOEFfve73wGVp3BaypC4IiIi0vTqFExeeukl/vSnP3HrrbeSk5NDSkoKN998M48++mjVPC1lSFwREb/SqRwJUHU6lRMZGcmkSZPYunUrpaWlbNq0ib/85S8EBwdXzbN/SNysrCzKysqYP38+vXr1avDCRURaNJ3KkYN88803jB49mpSUFCzL4qOPPqp2f21GXi8vL2fcuHHEx8cTERHBBRdcwPbt25twL2pWp2AiIiIi/lFcXEzfvn2ZPHnyYe+vzcjrd955JzNnzmT69Ol89913FBUVcf755+P1eptqN2qkH/ETERFpBkaNGsWoUaMOe9/BI68DTJ06lcTERKZNm8bNN99Mfn4+b775Ju+88w5nnXUWAO+++y6pqal8+eWXjBw5ssn25WgUTEREJKAZYyj1lPpl22FBYUcc56suahp5/eabb2bp0qVUVFRUmyclJYVevXqxYMECBRMRERE7KPWUMmjaIL9se9FViwh3hR/zemoz8np2djbBwcHExsYeMs/B44/5k/qYiIiItBB1GXm9LvM0JbWYiIhIQAsLCmPRVYv8tu2GcODI68nJyVXTDxx5PSkpCbfbTV5eXrVWk5ycnCMOguoPajEREZGAZlkW4a5wv9waqqWiNiOvDxgwAJfLVW2erKwsVq5caatgohYTERGRZqCoqIiNGzdW/Z2ens7y5cuJi4ujffv2NY68Hh0dzQ033MA999xD69atiYuL495776V3795VV+nYgYKJiIhIM7BkyRJOP/30qr/vvvtuAK677jreeuutWo28/uKLLxIUFMRll11GaWkpZ555Jm+99RZOp7PJ9+dILGPsNbxgQUEB0dHR5Ofn6wf9RCRgbTpnFO4tWwDovnaNf4tpQcrKykhPTyctLY3Q0FB/l9MsHekxbKjPb/UxEREREdtQMBERsSN7NWaLNBkFExEREbENBRMRETuy0YBXIk1JwURERERsQ8FEREREbEPBRERERGxDwURERERsQ8FEREREbEPBRETEjjSOiRzEGMNNN91EXFwclmWxfPlyf5fUKPRbOSIiIs3ArFmzeOutt5g3bx6dOnUiPj7e3yU1CgUTERE70jgmcpBNmzaRnJzMkCFD/F1Ko9KpHBERO9KpHDnA9ddfz7hx49i2bRuWZdGxY0c6duzIpEmTqs3Xr18/xo8fX/W3ZVn84x//4OKLLyY8PJwuXbrw8ccfV1tm1apVnHfeeURFRREZGcnQoUPZtGlTE+zV4anFREREApoxBlNa6pdtW2FhWLVoHfvrX/9K586def3111m8eDFOp5MTTzyxVtt4/PHHeeaZZ3j22Wd56aWXuPrqq9m6dStxcXHs2LGDYcOGcdpppzF37lyioqL4/vvv8Xg8x7pr9aZgIiIiAc2UlrKu/wC/bLvrT0uxwsNrnC86OprIyEicTidJSUl12sb111/PlVdeCcCECRN46aWX+PHHHznnnHP4+9//TnR0NNOnT8flcgFw/PHH131HGpBO5YiIiLRgffr0qfp3REQEkZGR5OTkALB8+XKGDh1aFUrsQC0mIiIS0KywMLr+tNRv264vh8OBOagvUkVFxSHzHRw6LMvC5/MBEHYM228sCiYiIhLQLMuq1ekUu2nTpg1ZWVlVfxcUFJCenl6ndfTp04epU6dSUVFhm1YTncoRERFphs444wzeeecdvv32W1auXMl1112H0+ms0zrGjh1LQUEBV1xxBUuWLGHDhg288847rFu3rpGqrpmCiYiISDP04IMPMmzYMM4//3zOPfdcLrroIjp37lyndbRu3Zq5c+dSVFTE8OHDGTBgAG+88YZfW08sc/AJKj8rKCggOjqa/Px8oqKi/F2OiIhfbBp5Du6tWwHovnaNn6tpOcrKykhPTyctLY3Q0FB/l9MsHekxbKjPb7WYiIiIiG0omIiIiIhtKJiIiIiIbSiYiIiIiG0omIiIiIhtKJiIiEjAsdkFqc1KYz92CiYiIhIw9o/PUVJS4udKmq/9j11jjXWiIelFRCRgOJ1OYmJiqn7ELjw8HMuy/FxV82CMoaSkhJycHGJiYuo8ymxtKZiIiEhASUpKAqgKJ1I3MTExVY9hY1AwERGRgGJZFsnJySQkJBz213jlyFwuV6O1lOynYCIiIgHJ6XQ2+oes1J06v4qI2JBBV41IYFIwEREREdtQMBERsSELXSkigUnBRETEhnQqRwKVgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNhGnYPJjh07+O1vf0vr1q0JDw+nX79+LF26tOp+Ywzjx48nJSWFsLAwTjvtNFatWtWgRYuIiEjLVKdgkpeXxymnnILL5eLzzz9n9erVPP/888TExFTN88wzz/DCCy8wefJkFi9eTFJSEmeffTaFhYUNXbuISMtl/F2AiH8E1WXmp59+mtTUVKZMmVI1rWPHjlX/NsYwadIkHn74YcaMGQPA1KlTSUxMZNq0adx8880NU7WIiIi0SHVqMfn4448ZOHAgl156KQkJCZxwwgm88cYbVfenp6eTnZ3NiBEjqqaFhIQwfPhwFixYcNh1lpeXU1BQUO0mIhLwLH8XIOIfdQommzdv5pVXXqFLly588cUX3HLLLdx+++28/fbbAGRnZwOQmJhYbbnExMSq+w42ceJEoqOjq26pqan12Q8RkZZFp3IkQNUpmPh8Pvr378+ECRM44YQTuPnmm7nxxht55ZVXqs1nWdWjvjHmkGn7Pfjgg+Tn51fdMjIy6rgLIiIi0lLUKZgkJyfTo0ePatO6d+/Otm3bAEhKSgI4pHUkJyfnkFaU/UJCQoiKiqp2ExEJeDqVIwGqTsHklFNOYd26ddWmrV+/ng4dOgCQlpZGUlISc+bMqbrf7XYzf/58hgwZ0gDliogECJ3KkQBVp6ty7rrrLoYMGcKECRO47LLL+PHHH3n99dd5/fXXgcpTOHfeeScTJkygS5cudOnShQkTJhAeHs5VV13VKDsgIiIiLUedgsmJJ57IzJkzefDBB3niiSdIS0tj0qRJXH311VXz3HfffZSWlnLrrbeSl5fHoEGDmD17NpGRkQ1evIiIiLQsljHGVg2GBQUFREdHk5+fr/4mIhKwNo4YScW+/nvd167xczUiNWuoz2/9Vo6IiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIiI2IaCiYiIiNiGgomIiIjYhoKJiIgdGePvCkT8QsFEREREbEPBRETEjizL3xWI+IWCiYiIHelUjgQoBRMRERGxDQUTERERsQ0FExEREbENBRMRERGxDQUTERERsQ0FExEREbENBRMRERGxDQUTERERsQ0FExEREbENBRMRERGxDQUTERERsQ0FExEREbENBRMRERGxDQUTERERsQ0FExEREbENBRMRERGxDQUTERERsQ0FExEREbENBRMRERGxDQUTERE7MsbfFYj4hYKJiIiI2IaCiYiIHVmWvysQ8QsFExERO9KpHAlQCiYiIiJiGwomIiIiYhsKJiIiImIbCiYiIiJiGwomIiIiYhsKJiIiImIbCiYiInakcUwkQCmYiIjYkcYxkQClYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiJiR/qtHAlQCiYiIiJiG8cUTCZOnIhlWdx5551V04wxjB8/npSUFMLCwjjttNNYtWrVsdYpIhJYLMvfFYj4Rb2DyeLFi3n99dfp06dPtenPPPMML7zwApMnT2bx4sUkJSVx9tlnU1hYeMzFiogEDJ3KkQBVr2BSVFTE1VdfzRtvvEFsbGzVdGMMkyZN4uGHH2bMmDH06tWLqVOnUlJSwrRp0xqsaBEREWmZ6hVMbrvtNs477zzOOuusatPT09PJzs5mxIgRVdNCQkIYPnw4CxYsOOy6ysvLKSgoqHYTEQl4OpUjASqorgtMnz6dpUuXsmTJkkPuy87OBiAxMbHa9MTERLZu3XrY9U2cOJHHH3+8rmWIiLRsOpUjAapOLSYZGRnccccdvPfee4SGhh5xPuugpG+MOWTafg8++CD5+flVt4yMjLqUJCLNiK+8nIrMTH+XISI2VqdgsnTpUnJychgwYABBQUEEBQUxf/58/va3vxEUFFTVUrK/5WS/nJycQ1pR9gsJCSEqKqraTURaHmMMGTffwsYzz6J8c7q/yxERm6pTMDnzzDNZsWIFy5cvr7oNHDiQq6++muXLl9OpUyeSkpKYM2dO1TJut5v58+czZMiQBi9eRJqPoq/nUbJwIRhDRcY2f5cjIjZVpz4mkZGR9OrVq9q0iIgIWrduXTX9zjvvZMKECXTp0oUuXbowYcIEwsPDueqqqxquahFpVozPx66//vXXv9V/ombq/CoBqs6dX2ty3333UVpayq233kpeXh6DBg1i9uzZREZGNvSmRKSZKJw1i/J1636doGBSMz1GEqCOOZjMmzev2t+WZTF+/HjGjx9/rKsWkRbAeDzs+ttLB030Ty0iYn/6rRwRaVT5//0Y95YtOGNiCO7ced9UJRMROTwFExFpND63m9y//x2A1jfeiKNVhJ8rEhG7UzARkUaz99//piIzk6A2bYi9+ios9nXoVP8JETkCBRMRaRS+0lJyX30VgNZ/uAVHaOivV5oomIjIESiYiEijyJs2De+uXFxt2xJ7ySWVE/cFE10uLCJHomAiIg3OW1TE7tffACB+7Fis4GA/VyQizYWCiYg0uD1T3sKbn09wp05EXzD61zt0KkdEaqBgIiINypOXx5633gKgze3jsJzOX++sCiZNX5eINA8KJiLSoHJfeQVfcTEhPboTOWJE9Tv3j7KuFhMROQIFExFpMO6MDPLenw5Awj33YDmqv8VYvyaTJq5MRJoLBRMRaTC7/vo3qKggYsgQWp1yir/LEZFmSMFERBpE6apVFPzvfwAk3HvP4WdS51cRqYGCiYg0iF3PPw9A1OjRhPbocfiZFExEpAYKJiJyzIq++57iBT9guVy0ueP2I8+oAdZqT4+RBCgFExE5JsbnI2dfa0nsVVcS3K6dnysSkeZMwUREjknB//5H+Zo1OFq1ovUttxx9Zo1jUnv7HyuRAKNgIiL15nO72TXprwC0vvFGgmJjj76AxjGpPT1GEqAUTESk3vKmTaMiM5OghATirr2mxvktS+OYiMjRKZiISL148/PZ/cqrAMSPG4sjLKwWS+mqHBE5OgUTEamX3JdfwZufT0iX44i5+GJ/lyMiLYSCiYjUmXvLFvZMmwZAwn33YwUF1W5BjWNSe+r8KgFKwURE6mzns89VDj0/bCithp5a+wU1jknt6TGSAKVgIiJ1UrxwEUVffQVOJ4n331+3hXW5sIjUQMFERGrNeL3sfOopAGIvv5yQzp39XJGItDQKJiJSa/kzZ1K+di2OyEjix42t+wo0jomI1EDBRERqxVtUTM6+wdTib7215sHUDkedX0WkBgomIlIru994A29uLq4O7Ym7+qp6rcNCA6yJyNEpmIhIjSp27GDPlCkAJP7xj1jBwfVbkVpMRKQGCiYiUqOc51/AuN2En3QSrc4809/liEgLpmAiIkdVsngxBZ99BpZF4gP3H/B7N/WgcUxEpAYKJiJyRMbjIfvPfwEg5rLLCO3R49hWqFM5IlIDBRMROaK86R9Qvn49zuho2tx5x7GvUAOsiUgNFExE5LA8e/aw629/A6DNnXfU7/Lgg+nnX0SkBgomInJYu158EV9BASHduxNz2WUNu3KdyhGRI1AwEZFDlK5Ywd7/zAAg6U+PYDmdDbLeXzvOKpiIyOEpmIhINcbnq+zwagzRF15AeP/+Dbh2dX4VkaNTMBGRavJnfkTZL7/giIigzT33NOzKdblwrRm1KkmAUjARkSreggJynn8egPjbbsOVkODnikQk0CiYiEiVXS9NxrtnD8GdOhH326sbfgMax6TWLF3CJAFKwUREAChdtYq8994DIPHhh+r/ezhHo3FMRKQGCiYigvF6yX5sPPh8RJ13Hq1OOaVxNlR1UY6SiYgcnoKJiJD3/nTKVq7EERlJ4gP3N9p2jul3dgKMOr9KoFIwEQlwFTtz2PXiiwAk3H0XQW3aNP5G1WIiIkegYCIS4HY+NRFfcTGhffo0/Aivh9AAa7Wlzq8SqBRMRAJY0bffUvj5LHA6SX58fION8HpEuiqn1nQqRwKVgolIgPKVlZH9+BMAxF1zDaHduzf+RjXAmojUQMFEJEDlvvIqFdu3E5SURJtxY/1djhxEp3IkUCmYiASg8o0b2f3PfwKQ9MjDOCIimmbDGsek1nQqRwKVgolIgDE+H1l/ehQqKmh1+um0OvPMptu4xjERkRoomIgEmLz3plG6bBmO8HCS/vRIk44tYqnzq4jUQMFEJIC4t+8gZ/+YJX+8F1dKShNXoH4TInJ0CiYiAcIYQ/Zjj2FKSggfOJCYyy/3ZzV+3LaI2JmCiUiAyJ/5EcXff48VEkLSn5/Acvjh5a9TOSJSAwUTkQDg2bWLnU89BUCbcWMJSUvzTyEax0REaqBgIhIAsv/8F3wFBYT27Enc9df7rxBdLiwiNVAwEWnhCr6YTeHs2RAURPKTf8EKCvJ3SSIiR6RgItKCefLyyP7znwFofePvCe3Wzb8FaRwTEamBgolIC5b9xBN4c3MJPq4z8X/4g7/LUedXEamRgolIC1Xw2WeVvxwcFETKU0/jCA72d0kHDOamYCIih6dgItICVeTkVP1ycPwttxDWq6efK9pPLSa1dsBDpKuYJJAomIi0MMYYsv/0KN78fEJ79CD+5pv8XZKISK0pmIi0MPkffkjR/PlYwcGkPP0Ulsvl75J+pXFMak+j90uAUjARaUHc23ewc8JEANrccQchXbr4uaKDqPNr/ejxkgCiYCLSQhifj6yHH8ZXXExY//7EXX+dv0s6lPq+ikgN6hRMJk6cyIknnkhkZCQJCQlcdNFFrFu3rto8xhjGjx9PSkoKYWFhnHbaaaxatapBixaRQ+W98w4lixZhhYWRMnECltPp75IOZen8RL2oxUQCSJ2Cyfz587nttttYuHAhc+bMwePxMGLECIqLi6vmeeaZZ3jhhReYPHkyixcvJikpibPPPpvCwsIGL15EKpWtXUvOc88DkHj/fQR36ODnimqgD1oROYI6jU09a9asan9PmTKFhIQEli5dyrBhwzDGMGnSJB5++GHGjBkDwNSpU0lMTGTatGncfPPNDVe5iADgKy1lx733YioqaHXGGcRcfrm/SzoiS31MRKQGx9THJD8/H4C4uDgA0tPTyc7OZsSIEVXzhISEMHz4cBYsWHDYdZSXl1NQUFDtJiK1t/OZZ3Bv3ISzTTzJf/nzAYOY2ZE6mdTagQ+RgpwEkHoHE2MMd999N6eeeiq9evUCIDs7G4DExMRq8yYmJlbdd7CJEycSHR1ddUtNTa1vSSIBp3DuXPa+Px2AlKeeImjflwTb0uXCIlKDegeTsWPH8ssvv/D+++8fct/B39iMMUf8Fvfggw+Sn59fdcvIyKhvSSIBpSInh6yHHwEg7vrraXXKKX6uSBqUnRu+RBpRvX7/fNy4cXz88cd88803tGvXrmp6UlISUNlykpycXDU9JyfnkFaU/UJCQggJCalPGSIBy/h8ZD3wIN68PEK6d6fN3Xf5u6TaUR+T2tOpHAlQdWoxMcYwduxYPvzwQ+bOnUtaWlq1+9PS0khKSmLOnDlV09xuN/Pnz2fIkCENU7GIsGfq2xQvWIAVGkrb5561xQ/01UpVMPFvGSJiX3VqMbntttuYNm0a//3vf4mMjKzqNxIdHU1YWBiWZXHnnXcyYcIEunTpQpcuXZgwYQLh4eFcddVVjbIDIoGm9OefyXl+36XBD9xPSOfOfq6oDqr6viqZiMjh1SmYvPLKKwCcdtpp1aZPmTKF66+/HoD77ruP0tJSbr31VvLy8hg0aBCzZ88mMjKyQQoWCWTevXvZftdd4PEQOXKkrS8NPhx7XzFkYwpyEkDqFExq05PesizGjx/P+PHj61uTiByGMYbMBx/Ck5mFq337ZnBp8FHog1ZEjkC/lSPSTOyZ8hZFX3+NFRxMu0kv4myWrZAax0REjk7BRKQZKFm2jJwXXgAg8aEHCe3Rw88V1ZOuyqkXPVoSSBRMRGzOk5fHjrvvAY+HqHPPbXb9SqrRAGsiUgMFExEbMz4fmQ88gCcri+COHUl64onm269ERKQWFExEbCz31Vcpnv8NVkgIbf86CWerCH+XdGw0jkn9qIVJAoiCiYhNFc6bR+5LkwFIevRRQrt29XNFDUDjmIhIDRRMRGzIvWULmX+8D4wh9qorifnNGH+X1CAsdX4VkRoomIjYjLeomIyxY/EVFhLWvz+JDzzg75IajvrH1I+CnAQQBRMRGzHGkPXQQ7g3biIoIYF2f52E1Vx+B6cu9EErIkegYCJiI7vf+AeFs2eDy0Xbv04iqE0bf5fUwDTAmogcnYKJiE0Uffsdu158EYCkRx4h/IQT/FxRI9A4JvWjx0sCiIKJiA2Ub9rEjrvuAmOIufRSYi+/zN8lNQ5dLiwiNVAwEfEzT14eGbf8AV9REWEDBpD4p0f8XVLjUd/X+lGLiQQQBRMRP/K53WwfN46KjAxcqam0m/wSjpbY2fVg+qAVkSNQMBHxE2MM2Y8+RumSpThatSL1lZcJio31d1mNS+OYiEgNFExE/GT3P/5B/kcfgdNJ2xdfJOS44/xdUqPTAGt1cOBjpMdLAoiCiYgfFMyeza7nXwAg8aEHaTX0VD9X1FTUyUREjk7BRKSJlSxdSua9fwQg9qqriLv6aj9X5A9qAaiRRsmVAKVgItKEyjdtIuPW2zBuN61OP53Ehx70d0lNS+OY1N4Bj5EeLgkkCiYiTaRiZw7bbrwRX34+oX370PaF57GCgvxdVtNSHxMRqYGCiUgT8BYWknHTTXgyswju0IHUV1/FERbm77KankakF5EaKJiINDLjdrN93O2Ur1uHMz6e1Df/0fIvCz4S9ZuoJyU5CRwKJiKNyHi97Lj/fkoWLsQRHk7qa68S3K6dv8vyP53KEZEjUDARaSTG5yPr0Ucp/HxW5a8F/+1vhPXs6e+y/ErjmIhITRRMRBqBMYadTz1F/owPweGg7XPP0erUU/xdlv9Z6mRSLwpyEkAUTEQaQe5Lk8l7+x0Akp98kqiRI/xckV2oj4mIHJ2CiUgD2/3mP8l9+WUAEh95hJiLL/JvQTakcUxE5EgUTEQaUN7775Pz7LMAtLnrLuJ+G4ijuh6F+pjUjx4vCSAKJiLHIKMgg1eWv0J+eT573nuP7MefAKD1jTcSf/NNfq7OhqqCiX/LsLsKbwXFFUX+LkNaoFnps/hk0yf+LuOoAmzYSZGGdfvXt7Nx70ZCPvqKwdNXARB3w+9oc/ddfq7Mpqr6viqZHM2MDTNo6y4ixN+FSItS7i3nj9/8EZfHcGJ8f5Ki2/q7pMNSi4nIMdi4dyOjFvuqQknr399Awr33/npZrFSjx6V2Nu7dWH2Cgpw0gF0luwhxG+7/t4/sPz2K8fn8XdJhKZiI1NPrv7zOuT/6+L8vK1/crW+8kTb33KMP39rQB+0R/ZD5Az/Om050ib8rkZZkT9kefj/jSh6e7qXPFkPQN0twb9nq77IOS8FEpB72lO1h6yt/5fqvKkPJh0Ms2tx9l0JJTdT5tUYv/PNGHpvmxeU9YKIeLzlGr3/zPOOm5NJtBxSFwuIHzyWkU5q/yzos9TERqY3dm2DVhxDemm1pp/LePRfx24WVHxYzhlh8MMzBwwoltaAB1qopL4Sfp0N5AZ4eF/PX9//Ew9O9hHhgTTvovt3fBUqzZAys/RSyV0DaUD7KWk//Jz4kNRfyw+EvVzgZ1sm+v9elYCJSkzWfwIwbwVNKqbGYt7YtF/1c+cH67ukOPj7ZQZBDL6VaUXj7Vd4WePcS2L0BA3z0n1cYMcdFkA+WdraYdJGDd5731rQWkeq8FTDzFlj5HwDWzHmR6LmtSdoLuyPhiSudZLW2qPBW+LfOo9CpHJGjyfoZ/nMDeErZm9Sffy1P4cSfffgseHWUgyuemA6Ax+fRoGG1sS+YBPxjVVEK06+G3RsgMoXX8jvSfXZlKFnQ3SLmhQl0TepdNXvAP15Se1+OrwwljiBmRZ5A7pzKUJIdA189cAaXnHU7ABU+BROR5sfrqfzm4S1nTfuhzP54FyetM3gc8Mm5Xp6+ewodojtUze7xefxYbDMT6J+z856CnSspjmjDP3ekMvxzNw4D83vD6bdcyPldL8LlcPm7Smlutv4AP0wG4F9tzif+7Z3EF8L21lB0eSSPXPRXgh3BgIKJSPO05J+Qs5q1ztZsfnsTvTd7KXPB2isTuD0qh9AlU6p9eNj5hW4bGscEcjfCD38nH4v3f4pg8GcZAPw4LJZLemXT6Zf/gMdNkFPBROrA54XP/4gB3q3oQ7fJPxJRDhtSnbQbWcDo/HU4dyzBte955fa6/VvvUSiYiBykwutj+/bt+Ob+hfVFoez6JIRO2VAQBjuf+gOXXP8c4cbAyhkEl/86OqedX+h2YQXwVTnGGLLzyyj55H7Kyz18vbgdpyxz47Pgm8u6culLs4hvlQjFObDm46pvtiI1yS+tYNc3b2CyVvDfjEQGzMjF5YVFXS36vfcR3fteXDnjj29UfZmy8xcp9dgT2eenbXm8Nn8T327I5R7fW3QqNER9HUe8G3bEQfCLT3DOoEsrP1STekP2CpxrP8NhOfAZn61f6LYRgJ1fdxaU8dr8zXy2Iou0oqVMtL5hzXfJdN3ppTwIfr7tDG66ZXJlaOt/Lcx/Glb8B1dCgr9LFxsr93j5YHEGHyzOYEvmTr50TeCDDYn0Xe4E4PshMYx56RPiIuJh4P/Bsndg3We4eo0E7P1FSsFEAl5hWQWP/XcVHy7bAUCqlU187o+0+a4VTgOrUh08fdI47mJQ5QKWBT0vrrwUb/VHBDuCKfOW4fbZ94VuOwHQYmKM4e0ftjLx8zWUVfiw8HG/9x12zI+nY0FlC9yfTz+Drq1votzjI9TlrHxezX8aNn1FcOJV/t4FsamlW/O4+1/L2bq7chS+Pzj+zbIfw+i7tfIkyFtDUlje+0+cVRpGXASQ0h+i2kHBdly5GwB7t5joVI4EtIw9JVww+Xs+XLYDhwW/6RfL2O2TOf7bEJwGlvaL4d8XTmaXN5WHZq7gyU9XV14h0f3CyhVsno9r36XCdr78zj4CYxyTco+Xce8v47GPV1FW4aN/hxgmhr1L2uce4gogO87B/25+iFUh5zLjp+1c8fpC8ord0KYbxB8PXjeu4l2/rjAAgpzUzvQft3HZaz+wdXcJiVEhPNJzOyfN+4W0rQ7Kg2DOtecwJ+0B1u0sZvTk71i2La/yy1S38wAIzvoZsHeLiYKJBKw1WQWMeWUB6bnFtI0J461L2nLWO+Pos7gMgJXndubSd+cx/bbTuHfE8QC88W06L8xZD/HHQevjwHhx7fvQUItJLQTA5cLF5R5+99Zi/vdLFi6nxSPnHscNW/9O3/d/IcQD6zu76P7hx/z5lmuY9vuTiQ5zsTxjL7+bupiSCi8cX9nU7irK8fOeiN38/euNPPDhCrw+w+i+KTzXbRP9np9E0p7KMUrKXnqE2x96kc/vGMqADrEUlnm49s0fWbkjH7qfD4Brx0+Ava8iVDCRgLR5VxFX/2MRuwrL6ZYUyaRBxVi3Xk3HTSWUBsO2K9pyyfOfEBIUgmVZjD2jC09e3AuAl+Zu5F9LMqDjUABcvspBsOzcNGobLbyPSbnHy03vLOH7jbsJD3by2m86kfDS/9Hpo2UArBlgcfq0L0hK6gzA4M6t+dfNg4kOc7Fs217u/uBnzP7nlYKJHOC1+Zt49ot1ANw6PI2Rm18l9uFJRJTBtmRD0t8e4uTTrwYgMSqUd244iZM6xlFY7uHGt5ewK24AhMYQXF4I2PuLlIKJBJzs/DKuefNH9hS76dU2irHBs3CNu4/4fB85MVB2oZuRd79zyO/eXD2oA7ef2QWAR/+7kqzYgQC4PJUvcJ3KqYUWfCbH6zPc9cFyvt+4m4hgJy8MKsYx7hK6rMijwglrTy/j4gf+TFR0crXluiZF8s/rB+JyWsxalc17WSlgOXCV5f86UwtuYZKa/WtJBhM/XwvAfUMT6DblRjq/8w1OA2u7exl480kcN/iaasuEBwfxj+sH0rlNBFn5ZYyd/gum46lVLbx2fr9SMJGAUlBWwXX//JEde0vpEmP4v2VP0PlvMyub2DsaupyVw5Arnoeo5MMuf+eZXRjaJZ6yCh93LIwAINhTDqjFpE5a2AetMYbHP1nFZyuyCXZYPBj6Gcn3P0Libi+7I6FkVD4Xnz0Cq/dvDrv8gA5xPHRudwAen51BSXxvglvYYyT1M3ftTh78cAUAN3bYTq8n/48uv+yhwglrhpZz4dBgWl/4t8MuGxXq4vVrBxIR7GRR+h4WeHtUPa/UYiJiAxVeH7e++xPrdhbSx1rNQ58/Qo8F2/EBawdWMPqkLFKG/A56XnTEdTgcFi9e3o+EyBB+zA1mT1iHZvENxDZa6Dgmb36Xzts/bCXU5PPnrc8x4O05BHtgfRr0HJHNyZ06wLnPHnUd1w/pyMieiVR4DbOKjsPVsh4iqYeVO/IZO20ZXq+XmzwzOH/yJNrs8ZIbBd5z9jKmQwmOS/8JYTFHXEfnNq14dHQPACaujq96XlXYuPOrLheWgGCM4cl/f0eHzf9h6J4fGbQgnxAP7I0ATi3g4tgiGHQLjJxY47riW4Xwp/N7MO79Zcwu7kJwTOW3GTt/A7GLljjA2he/ZLBk1lTuKl9Iv0UZJOwx+CzYcJKb8zrm4mo3AK6cDqFRR12PZVn8+aJefL9xNx/nd2JImwMeoxb0eEntZO4t5dl/vs//lc+ny6qVdN1Y2Vl1fZphaP8c4qKi4bKpkHpSjeu6bGAqs1ftZO5aH2WEA+CuKGnU+o9FwAQTr8/L2ry1VHgr6NOmDw5LjUUBw+Nm6dv387uN01jxSwydNlYe+00dDP1P2kvKcSfBKXfAcWfWepXn90nmnYVb+X5rN1z8AuhUTq20sM6vm7+dTvfZD+LLsGi3JIQgX2XYdQ7N56IuqTDgXhh4AwTVbhTXhMhQbj/zOP72WQFDG7l2sa+izLXkvnkDt+Ruge+jiCkCjwO2nljOqJ4Ognv+Dobec8RTzgezLIuJY3pzxvN7WOHpBORS4S1v1H04FgETTCpKdnPF/64AYNFViwh3hfu5ImkShTvJe3MMZRu3kbUgjk4llS/wbaPSOGvcI4S2PQFcYXVerWVZjB/dk/97aRO9932ZdZfmNXDxLVkzbwHweSn86F48P77Hph/j6JhZGbg29Ixg4P33kNJzBES0rteqrx+SxvQfM8j1xeHDrfPtAcaz8iPK/n0LGWtb0ennyla2na0dRN7+G84/+3qITatXwE+ICuWus4/n5znHUxlM7PtFKnCCSYW36t/ugkzCWx/nx2qkSezdxo5Xz+PnhWWkrW0FQHaCi6g/P8J5wy875tX3SInirJP6sj2r8ttwec4a6HbMq23hWsA4Jt4KSj74HT989S3xi1vTzg0lwbD7los45+bHCXYe22/cBAc5+NP5PZjxSTKwtXJic368pNbMT2+z7J0HKVkUQ6c9+8LuaZ0YPOE12sS1O+b1Xze4AzcsOoEkzzeEGMBTDkEhx7zehhYwYTzHE4lj34t79U9f+bkaaWwmbyvzHh/F1hke0tYG4QPWj+pBv0/mMKABQsl+94zoShGRAGRs+rnB1ttiVfUx8W8Z9eatYO3fx7DgH4tJ/T6MMDdsTYsgYtprjLh14jGHkv1O75aAN7pzg6xLmoe8+S/x+cQnCP88ioQ9FvkRFrvG/57Rr/yvQUIJQJDTwa0XXcIdW1IZtmUoW3L2Nsh6G1rABJPObVoRtG931y6bi9fXXN8ZpSZbfvqMWb8dReLnPmILYWeMg9xn7+bCF2cQG53YoNuKiwimVXQSAN68jewtUQfYo2rGXUxKinbz6W2n4n5tI20zLcpc8PNVQzn9v9/SrdewBt/eSf0HVz1eP/68ssHXL/ZgjGHeS79j9b1/J22FCwewtH8S7f/3X4Zdcc8h4ykdq0Gd41l9yt848Zq/0DGlYd8PG0rABBOg6ttM2/K1zFi63c/VSEOrcJfx6RP/R95199Bxk8HjgE8HptJ2xucMH31jo203OakjALHk8crnSxptOy1CM70qZ9HMl/lx5FA6zSvA5YVfOoaw4YVnueLR1wkJrnsfpdpIiW9T9e8f5s/C7fE1ynbEf7atWcxnY04i8e8/EFdosSvK4t/XX8rV780lJblLo233vnO6cXpX+/56dWAFk32dHDtambz8xTKKy+37WwFSNz/OfI0FZ51Mp2kLCa2ArSnw5PkXc9ELM+jStn2jbjskLBoAjwXpP33J2uyCRt1ei9BMgknG2sV8cflpRD34Eom7DQXhMG1YFyoe+5DLzj6/Ubcd7AiuOuPVoWQlU75Pb9TtSdMpK8rn84euZe8l19JpTRFeC5b0Duft3z/Pw/c93uCtJM1NwHR+BXA5Kzv5eByG9kUreW1+V+4e0dXPVcmx2PjTXNY/8TBpa/cSCRSGwY4BhpfbPsRTvxvNcQmRjV6Dy+ECoMKyOMlazeMfr2bajYMC/s3lcJrLOCYFu7OZO3EcnT5fSXsveC3Y0MfDpx0vZOC5f+C3gzs1eg0up6vq3wMcGzj/qw1cfEJbEqJCG33b0ji8ngrm/fPPhL45g475lS1gm9sb0vt0YFG3x3nt2oE4HXrfCKxgcsAHyImOdfz9281ccVJ7UmIapylWGs+29Uv46ak/0uWHbNJM5SXAG/t4aNfZyZth4/nbDefSPfnoA1o1lP3PK7cFw51r+Mvm3cxamc2o3rUbYyCg2DyYFOXv5pvn76TNJ0voWlo5bVMHQ1LfIj513cQZF1zPVYMatwVuv2DHrx1p2zl2EeXO4elZ63j+sr5Nsn1pOD6fjwXvP4P79fdI2VnZUp8bBe4Ti9kRczJrut/Pm1ecQHBQQJ3EOKKACib7+5hUWBZnhW3g+UIfz32xjhcu7+ffwqRmXg+sn8WeZZ+x5JPvSfrFTdd9V4BvOM5Hzx757A4+jX+l3MQ/rh5CUnTTfavc/822wrLoYW0liiL+8ukaTu+WQKjL2WR1NA82/DaYuZyKlf9l0aezCPpuL2nFlZN3xkFYv0Ki49rxRPDD3HflKE7tEt9kZbmcLoxF1RVMJztWM+On1vz25Pac0D62yeqQeirciVk5g9XffErWF+m0zaw8kMUhkNO3nK6pFhO4kX5nXMFLpx+HQy0lVQIqmBzYYtLVu54wyvhw2Q6uP6UjfdrF+Lc4OTxj4OfpbP3fEyz/xUPaqiBS9wWSbe0Mpd0jWRM1gIkM4zdDB/D2WV1wOZv2W0dVi0lYLBZ7ObfVRqbvbcVr8zdzx1mN14GtOTN2uF44czmFH/+RbxdtImZlMK0LKz8Y9kTBrr5OdrbpxSfmFBKOO5nXLu5FcnTTtqy6HK5fHyUDVyVsYWb2UMZ/vIqZt56iDzK7Kt6Nd854fvjqY0pXhtEuy6ItUB4EW3pDWfsOzHMOYn30UP48ph+nHNd0Ybe5CMxgEpGAo3Qbd3XJZcKGdjz631V8+IcheqHbiDGGvIw17JxyE+lLcmi/0cnxpvLpuq5tEP/tOZB54ReD5WREt0TePacbndu08kut+5vcK6JSYEc6t6RuY/qafrw8byNj+rclNU6jDFexwamc4sJ8cv9zL+vmzCVudTBpZZV9z/ZGwOd9OzAj/rcUO2LplhDJ3Wcfz9k9Ev3SX8jlcHHgxef9PctpFXI9P2/P519LMrjipKY5pSS1U+Hxsvvbf7DpX8/hXuEkKbfydV/hhO+7RTG902/Y6uxJbLiLG05NY9LQTmpRPYKACib7T+W4E3tA7jauTtjM37Z1ZHnGXj5YksGVeqH7hTGGzbnFLNy8m58z9rI5cxcnrXuOfmu2kJppkUbli3dFu3Cmdz2dn1oNo2N8JDf1SuLygal08lMg2a/qVE6rysvvOuT/yOBO/8cPm3fz2MerePO6geoIu18TD7C2u6icH9P3sHhLHut35pO89m1O2TiPtI2Q6ql8P8iMcTKzez++SDifsLBYRvZI5KJ+bRnaJd6vx83lPCCYOENwFmXx2GAXf5zn5alZaxnRM4m4iIYZ0E3qpqzCy7Jte1mUvps1WQWUbl7AyPVvctxaN3HFlR+rJcHwefeOfJg6moLgjgzu3JpbeidzUb+2hAUrkBxNQAWTqhaTxO6wahYR27/jrrNv4c//W81Tn69lRI9EWrey3/C8LdXqzAI+/jmT//2Syfa8UlJL13Fh5ueM2bSd6BIAC48DFnePZt2pV5HYcyQ3pUTTp100ydGhtvmwr2oxCY8Fy4m1ZzMTfxvF2Vv3MHdtDnNW72REzyQ/V2kTTXDIdhWW879fMvnk50x+2raXcO8eRuTM4rpNy2mX++tYIJuTgvhhyGkED/o9w9rGMbZdNMe1aUVQE58KPJJgRzDF+/9o2x9yv2dMzAbeTOrB2uxCnv58LU9f0sefJQaUco+XuWty+OSXTOauzcFdXsaAwm/5zZZ59N5SimNf2N4bAd8O6ErhabfTIbUjr7aLoWdKFBEhAfVxe0wC6pHa/83Wvf93cnau5LqrQvnP0ijWZBUw4bO16vHeyDxeH1+s2smU79NZsjWPOM8Whu3+mnu3bKBr1q8N1/kRkDeoHV3veJLfda35Z739qSrwArQbCBmL6Ji/mBuHDuLleZt4/JPVDDkunlZ6Y2rUy4VXbM9nyvfpfPJLJnj2Mjh/Lo9m/MKALYUE7+uX5A6CjJ7hJP3frYwa8X+c57BHCDmc/c8rANoPhtzvcabP58mLL+M3r/zAB0sy+M2AdpyUFue/IgNATmEZ7y7cxrRFW8ktLKF72UJ+l7mQoZt3ElP86/N4a6pFyMUjOen68QwOj/Zjxc1fQL1TVn2AuEIguR9kLSdo0xz+ctFoLnl1ATN+2s6InomM1LfbBlda5mb2vK/5celifHkbOHX3Jq7dlkfnHb6qUf68FmxJ8xHaL5rh497CldzDrzXXVtUpQp8bOp8JGYtg/SzG/ea3fPxzZWvQnz9ZrW+3B2qgYGKM4Ydlv/Dtt1+Tm7mRpL1reSx7F923uAk/4Ffdc+IM+T1hyA0P0ffkaxtk240t2BlceVUO4OswBH4CNs9jwG9CueLEVKYvzuDef//MZ3cMVehtBJt3ZPHlnFmsXb+W2MI13LIzky7biknY++s8RWGQ1cVDl/PO4JyrX4IgnVprCI32bH755Zd59tlnycrKomfPnkyaNImhQ4c21uZqpSqYeCug+/mQtRzWfMKAq6/lpqGdeO2bzTz44QpOaB9DQqQGMWoIBRsXsvbTyZRuWEDQTgcjtgeRkFe9PT8ryYejfTm9+yTS68xx0PdKcDSfc7BBjsqXUYW3AnqdD/MmwKa5hJlSnr+0L1e8sZAPlmRwRvcEhd4GajHx5G1n9acvU7D0I/J3l9E3M5h2OyycB6x2b6ShoHMFnTtZDDvjWqwhYyG8+bQuHNhi4o07DqLbQ/422DSXh84bybcbctm2p4QnPlnFM5eopbdBVJSSPv89sr6eQuHOTFJ2uhiwzVkt5Ja7YGdHD/Edy+l3yhmceNo9kNTbfzW3QI0STD744APuvPNOXn75ZU455RRee+01Ro0axerVq2nf3n8dTPd/s80tzYVuo2HuX2DzPCjdy90jjuebDbmsySrgjveX8/YNJ/162anPC+s+h4yFlW+obQdA13PBVbvwUlbh5Zft+Szblsf2vFJ2F5djWRbhLidtY8PolhTJ4M7xRIe5al5ZA/D5DG6vD4/PEOSwGrRneHlpETtWLGDt52/iXrGK6GwPCbkWkYSw/5cZvBZktwsiqHcivYcOonvnvtDuRIhLa7A6mtL+U4S7Sndh2nTHik2DvHTYMJtBvcZw07BOvDZ/M/fP+IXuSVG0b33AVTpZP1c+t0rzIK4zdB8NUbUbmM3nM2zcVcSSLXmk5xaRXVCO1+fD5XSQFB1Kp/gIhnSOb7KrgoypfF55fQafgYhg56H9gKr+rlsw8fl8ZK9fxsYv32XXkm+J2F5EcrZFaw+05td+YTvjHZR3i6HzwB6cPOAUrORekHJCswq6+x048mtBRSHh3c+HhS/D6v8S1f18XrisMvT+a8l2Tu7UmjH9D/gF2qIcWPkh7NkEEW2gy9mVj0Mt5RSWsTg9j7XZBWTuLaPE7cHpsGgdEUxqXDgDOsTSp11Mk41S6vH6qPAaPD4fYS5ng/YDytu5jS3fzmTL1x/i3LaTxB0WsSUQy6/v7wXhsOf4CBL7ptF78FD6te0O7U+GkMYfWToQWcY0/MneQYMG0b9/f1555ZWqad27d+eiiy5i4sSJR122oKCA6Oho8vPziYpq2JE7H/3+UWZunAnAxcddTKdVn5KUn8mJpzxAxEk3s35nPle8toQSt5drB3fi8Qt6QvYKrA9vgl1rqq8sOhXOfBR6XQKHOU/t8xm+35TLnB9X4lj3P/qaNbS1cikzwWw2yczxDWCRrzuefdnQ6bDo3z6GYV3aMLxrG3qlRFdevlyWDzt+gp0rK/8dFAqxHStfFNFH/ylsYww7sneydfWP5G1fx+68PewocbKyJJZlno6U7nvhhbmcxEcGc1ybVnRNiqJbUiS92kbTKT4CR1E27FgCe9KhNA+3sdhtwnBXhJCfV8yunVm4d+biy8gkYvtu4nM91b617pcT4yC/b0dihp1G75FXERvftu4H0KbmbpvLHV/fAcCAxAEMKi0lbeM3HJ80gDaXv48DF1e8/gMrduRzfEIs//nDECJNMdan98DK/1RfWVAonHwrnHoXhB7++b8xp4j/LtlMzrLP6FW6mDQriyDLR7aJZZ63H3N9/Sjg1yuVOsVHMOz4Ngw/vg0nd2pdeUWAtwKyV0DmMijeVRm4IxOh7UBI7HXY5/SB8guL2bB6KXvSf2bXrhx2lXjYUBLJovKO5FJ5ft3ltIgND6Zj6wiOT6p8bvVZu5Dgp8YTcfJJtH/s95CzGkp243WXs4cwyr2hFJb6yNm5E3dmDuXbt+PK2k18dmm1b637FYRBTpd4gk/qT4/R15DadWAdjpy9+YyPFb16EuyFceNCuKDnObRf8jZtjZMuN35HdHR7nv7iZ16dv4VgZwjv33gy/VOjsRa9Cl89Dp6y6ivsei6c9Ti0Of6w29tb4uaT5Tv4efE8Ou76mq5WBjFWEXtNJD/6ujLbN5Ct5tcWv5hwF0O7VD6vhnWJrxwq35jKUL59KezdAhVlEN4aEntAu5Mg+OghubzCw8b1q8nZuJTd2RnsLighvTSMxaXJbDbJGBxYFkSHuUiJDqNrUiTHJ0bSPTmSPu1iiAt1VL5XZy6HomxMWQEFVhhFnhBKyix27y2kKCubsm0ZBO3YReTOIuIKDv1xRHcQZKSGQf+edDzrIrqdOpogl07T1KShPr8bPJi43W7Cw8P597//zcUXX1w1/Y477mD58uXMnz+/2vzl5eWUl//6jlNQUEBqamqDBxNTUcEP5w8nrzyvTstZBzw6DsvCwsIyPgz7LzCwsBxOsByAhcHgMwbjMziMFweVfSgcwIE/Gejct6zHsvBi4TNOjHFgWT4sfDgsU7msMRz4HXP/dh2Az7LAcmBZTrAsDBbGGIzxgjE4jI/930wP973Gi0XlVsBU9fQwOA0EmX3bNgaHAVcFhJZbhFbU/JgVh0Bua9iZHEXoSWcyaPRldOzUr+YFm6lvt3/LrV/dWqdlggzsPzZRlgvjcNDK68HncVNhgdNy4AiNISSsNV58+IyP8gofpSVugjz5xFCCAx9RPh9lloNSy8JrQYzXRxCwKyicYkIp9Ibg9kaC5cHlKCHMKiPGqiDElOHAR6jPUOqw8GARagxBGMocQVjBEeAKw+EKJzgonAJ3CeXlpbgqygn2lGJRjgODsSr3JchUrifEGIpxUUIw5QTjNqF4sLAsD6E+GLa2iGtnleMOMuS3ApcHgrwWYWUcNtAeqMIJ2fGwu3UIFcf3pseFV3DCoHNwNsPWkNr6uWd3gr2wrQ14armblql8Zjmo7GzsADDm1/csy4HDEVT1fgLg9RksnxfnvneD/ZvyUrmQw+x7D7MsfDjwGguDc986fTjw4bQMFvveM4CDP+4twFgOjOXA4XBgWQ68xmCMAZ8Py/gqn1P7ht9z7FvGt39ZLHyVW6j6P/v+68Dg2LftIK8huAKCPODy1O49a2cM7G7joKBtKu1GjGHIyMuIiIip3QMuVRoqmDT4qZzc3Fy8Xi+JiYnVpicmJpKdnX3I/BMnTuTxxx9v6DIOZQyxW/M4toGcD3wpHzjtaL9SXFNT5/51HuknzWta3neUZWu7/IH/r93yxSGQFwXlkT4qInyERngIjbTYFZHI3vZjOOm86zmnQ5vDLtvSxIXVvd+Cp/ITAoA9eMAHeRbgOuAlWVFQeTuQAwiGvCO8dDOqWv+9QDEEFeNgT9WUon23Gl/6pgzcZeA+KMg7992o6bSjZ9+tpGqKG1jfpvL1E+yxaLP30KVKQio7FBZHGtyRPoJaeQkL91IaEUtm60GknjmWSwf2sM0lvY0tNxpS9kD7XfVdw+HSng+qDd12sNq+Z3jrsbzZt9yRlq3N8jV9lz50eXdQ5emYknAoj/JiIn2EtfLgCA0jI/J4XCfewnlnnUmsxoWxhUbr/HrwuWVjzGHHnXjwwQe5++67q/7e32LS4IKCyHr8BqasmlJtcldXNOGFORAUQnT7IUSHJ+DYvZmyjIUEG0OOL54VwQPo1zGOtLgYPMaDyxGEMYYQr5eiTd8RvGctQcaDReU3RwO4nSFYCT0JaXcCFWExlfdZQYS5wnB73VR4yvEW7qDVnq0496RTVLQTH4YgIMwZSn5kB7ZbSawsi2VrsQPj2/dyNEFYlgeX5aYte2ln5RJv7SbWKiaECrw4qXBGUdwqBVdcW1onHUdwaBQVPjfWvhYfAMtdiCs/i/KC7QQV7cRblo/T68EKCqM8NBJvdDKl4alkmiS2FFaQWWLYWh5MtjueYmcMvn0dPoMsHz3joFNya4Z0S+X0rgm0iQyssWA6RHY4ZNrAmK7E7liGx7KI7XQWiYl9iCgvJm/pFCLKCykx4fzHnEPfrsdxaucUgpwGh+XAwiLM4aJozVc4NszC5dmLEwgxBi/gsZyYhN64jj8TK6kPOBz4jI+YkBgA8svz8RVmEZG9krDM5RTkrsfrLccA0Thxt+7G2uBOLC5rzw97wij1eDDGCb5gLGcZDmNoTy5dHRl0trJIsXIIt0pxGgceZxS7ojriSuhKQlo/Ilq3w7IsPD4PPuOrvIrEXYQrbwvenHWYvM14CzJxuYtxBYVRGBYFPdPIeKg1e4piSXeHsa2ojJwSi63lceQ72lDh3P/cMXRsZTg+MYL+XdpzerdEzktsZZuxa5rKn65x0jnr1w/i46I7E7Z7E16vm9ioVEITexHtDKdiyzd4CrMI9sFib0+c8Z3pmxpD64gI3N4KgiwnQY4gfHnbKU//nrDS7Kr3K69l4TSGsrB4XG37EpzUmwqHE2MM4UHhuJwuCt2FWJ4yrD1bCN+zGU/eVsoqivFZFuE+gzOiDZmhbdnmTeLnonDy3T6MCQJjgVUZQqKsIlKt3bQze4hz7CHcKifEePFYIRSGxmOi2hHepj3R8akEBYVQ7i0HU9nXxut1E1SyG0d+Ju7CHVhFOVjuEoIsi4rgcHwRbXCHJ1HoassWbxybi8vILnWQWRxKrpVAiTOyqn9TXLCXXgkuunZoy+ndU7i6Y5x+PM9mGjyYxMfH43Q6D2kdycnJOaQVBSAkJISQkMb/ILMcDsKHncrysqkAPDHkCS467iKs8gJ45RTIzwDfSjDxkP8NREF22hhGb72cXSVePs+AhL0h9E2NITIkiD2lblbuyCe3tB8xYYUMd/zM4Og99O6QQNdeAwnqOgJcdfhtDa8HSnZXLhPy64sIoLjcw0/b8li/s4htu4vZWVCOx+cjx2eoiAimqFUIIUmRdO8QS/u48EZ98y4u91Di9lLq9hIR4iQqzNXkv01jN62Cf+3PkRKRwgfnf0BMaAx8eDP8Mh32fgbHlVV2cvWUURHXhT9Yj5Cxw0XGLvhqkZMT2seQFB1KqdvL+p2FbNp1FkGcxhDHKk4O3cbAtuH06NGbVj1HQlRKzUXtv0jAmMqOtcYHYXHgcDAUuJHKDoVrsgpZsSOfrXuK2ZFXSrnHR4XXhxUSREGrEGLiwuneIZbuyVGN+uZd7vFSXO6luNyDy+kgOsyl0TGB0ggXyztXtshOP286PeN7wqqZ8O/roSIHWiVD5ldgbcfEhfFe+yf4YHVbKIVp66FX26iqn2rYtruElTvyqbDOplvENoYGrebkRB89jj+e5J5DKzvH1uW9o7wI3EWVz6ugYAYccFfGnhJ+2pbHltwStu4ppqjMg8dn2OGwKI8MoTgqlH6pMfRrH0NUaON1+vf6DEXlHkrcHjxeQ0y4i1YhQQEXcJubRuv8OmDAAF5++eWqaT169ODCCy/0a+fXCm8F13x+DamRqTw7/Nlf79i5Ct46H0orm7yxnDD0HjjtQfLLvLw0dwP/WpJBQdmhp2wiQ4I4vVsC1w7uwIAOsXrCB6i//vRXZqXP4r3z3iMudN+pnYpSeGcMbFvw64ydToffvIkvLI5/Lcng9W83s3lX8SHrczosBnaI5fITUzmvTzIhQfqQDkQ/ZP7Aw989zCMnP8IZ7c/49Y55T1delr5fdCr85k1oP4ilW/OY9OV6vtuYe9irsju3iWB03xSuHtQh4Fo3pXHZtvMrVF4ufM011/Dqq68yePBgXn/9dd544w1WrVpFhw6HNnsfqDGDyVEV7aq8QsLnheNHQnz1X4Utq/Dy09Y8NuQUUVbhJTLURZfEVvRtF6NmQDkybwWs+gjytkDqSZA2rNq3UmMMq7MKWJVZQF6xG5fTQcf4cPq3jyUmXOe75Si2LYT0byqv0ut6LoRU/82orPxSlm/bS0ZeZT+flJgweqVE0zE+wg/FSiCwdTCBygHWnnnmGbKysujVqxcvvvgiw4YNq3E5vwUTERERqTfbB5P6UjARERFpfhrq81vnIERERMQ2FExERETENhRMRERExDYUTERERMQ2FExERETENhRMRERExDYUTERERMQ2FExERETENhRMRERExDYUTERERMQ2FExERETENhRMRERExDaC/F3Awfb/pmBBQYGfKxEREZHa2v+5fay/DWy7YFJYWAhAamqqnysRERGRuiosLCQ6Orrey1vmWKNNA/P5fGRmZhIZGYllWYedp6CggNTUVDIyMo7pp5WbC+1vyxZI+xtI+wra35ZO+1udMYbCwkJSUlJwOOrfU8R2LSYOh4N27drVat6oqKiAeDLsp/1t2QJpfwNpX0H729Jpf391LC0l+6nzq4iIiNiGgomIiIjYRrMMJiEhITz22GOEhIT4u5Qmof1t2QJpfwNpX0H729JpfxuH7Tq/ioiISOBqli0mIiIi0jIpmIiIiIhtKJiIiIiIbSiYiIiIiG3YMpg8+eSTDBkyhPDwcGJiYg47z7Zt2xg9ejQRERHEx8dz++2343a7j7re8vJyxo0bR3x8PBEREVxwwQVs3769Efbg2MybNw/Lsg57W7x48RGXu/766w+Z/+STT27CyuunY8eOh9T9wAMPHHUZYwzjx48nJSWFsLAwTjvtNFatWtVEFdffli1buOGGG0hLSyMsLIzOnTvz2GOP1fjcbU7H9uWXXyYtLY3Q0FAGDBjAt99+e9T558+fz4ABAwgNDaVTp068+uqrTVTpsZk4cSInnngikZGRJCQkcNFFF7Fu3bqjLnOk1/batWubqOr6Gz9+/CF1JyUlHXWZ5nps4fDvS5Zlcdtttx12/uZ2bL/55htGjx5NSkoKlmXx0UcfVbu/vu+xM2bMoEePHoSEhNCjRw9mzpxZ59psGUzcbjeXXnopf/jDHw57v9fr5bzzzqO4uJjvvvuO6dOnM2PGDO65556jrvfOO+9k5syZTJ8+ne+++46ioiLOP/98vF5vY+xGvQ0ZMoSsrKxqt9///vd07NiRgQMHHnXZc845p9pyn332WRNVfWyeeOKJanU/8sgjR53/mWee4YUXXmDy5MksXryYpKQkzj777KrfWrKrtWvX4vP5eO2111i1ahUvvvgir776Kg899FCNyzaHY/vBBx9w55138vDDD7Ns2TKGDh3KqFGj2LZt22HnT09P59xzz2Xo0KEsW7aMhx56iNtvv50ZM2Y0ceV1N3/+fG677TYWLlzInDlz8Hg8jBgxguLi4hqXXbduXbVj2aVLlyao+Nj17NmzWt0rVqw44rzN+dgCLF68uNq+zpkzB4BLL730qMs1l2NbXFxM3759mTx58mHvr8977A8//MDll1/ONddcw88//8w111zDZZddxqJFi+pWnLGxKVOmmOjo6EOmf/bZZ8bhcJgdO3ZUTXv//fdNSEiIyc/PP+y69u7da1wul5k+fXrVtB07dhiHw2FmzZrV4LU3JLfbbRISEswTTzxx1Pmuu+46c+GFFzZNUQ2oQ4cO5sUXX6z1/D6fzyQlJZmnnnqqalpZWZmJjo42r776aiNU2LieeeYZk5aWdtR5msuxPemkk8wtt9xSbVq3bt3MAw88cNj577vvPtOtW7dq026++WZz8sknN1qNjSUnJ8cAZv78+Uec5+uvvzaAycvLa7rCGshjjz1m+vbtW+v5W9KxNcaYO+64w3Tu3Nn4fL7D3t+cjy1gZs6cWfV3fd9jL7vsMnPOOedUmzZy5EhzxRVX1KkeW7aY1OSHH36gV69epKSkVE0bOXIk5eXlLF269LDLLF26lIqKCkaMGFE1LSUlhV69erFgwYJGr/lYfPzxx+Tm5nL99dfXOO+8efNISEjg+OOP58YbbyQnJ6fxC2wATz/9NK1bt6Zfv348+eSTRz21kZ6eTnZ2drVjGRISwvDhw21/LA8nPz+fuLi4Guez+7F1u90sXbq02nEBGDFixBGPyw8//HDI/CNHjmTJkiVUVFQ0Wq2NIT8/H6BWx/KEE04gOTmZM888k6+//rqxS2swGzZsICUlhbS0NK644go2b958xHlb0rF1u928++67/O53vzvij8vu11yP7YHq+x57pGNe1/flZhlMsrOzSUxMrDYtNjaW4OBgsrOzj7hMcHAwsbGx1aYnJiYecRm7ePPNNxk5ciSpqalHnW/UqFG89957zJ07l+eff57FixdzxhlnUF5e3kSV1s8dd9zB9OnT+frrrxk7diyTJk3i1ltvPeL8+4/Xwc+B5nAsD7Zp0yZeeuklbrnllqPO1xyObW5uLl6vt07H5XCv5cTERDweD7m5uY1Wa0MzxnD33Xdz6qmn0qtXryPOl5yczOuvv86MGTP48MMP6dq1K2eeeSbffPNNE1ZbP4MGDeLtt9/miy++4I033iA7O5shQ4awe/fuw87fUo4twEcffcTevXuP+uWwOR/bg9X3PfZIx7yu78tN9uvC48eP5/HHHz/qPIsXL66xD8V+h0utxpga02xDLFNf9XkMtm/fzhdffMG//vWvGtd/+eWXV/27V69eDBw4kA4dOvDpp58yZsyY+hdeD3XZ17vuuqtqWp8+fYiNjeWSSy6pakU5koOPW1Mey4PV59hmZmZyzjnncOmll/L73//+qMva6djWpK7H5XDzH266nY0dO5ZffvmF77777qjzde3ala5du1b9PXjwYDIyMnjuuecYNmxYY5d5TEaNGlX17969ezN48GA6d+7M1KlTufvuuw+7TEs4tlD55XDUqFHVWukP1pyP7ZHU5z22Id6XmyyYjB07liuuuOKo83Ts2LFW60pKSjqkM01eXh4VFRWHpLUDl3G73eTl5VVrNcnJyWHIkCG12u6xqs9jMGXKFFq3bs0FF1xQ5+0lJyfToUMHNmzYUOdlj9WxHO/9V5ts3LjxsMFk/5UA2dnZJCcnV03Pyck54vFvbHXd38zMTE4//XQGDx7M66+/Xuft+fPYHkl8fDxOp/OQb0dHOy5JSUmHnT8oKOioodROxo0bx8cff8w333xDu3bt6rz8ySefzLvvvtsIlTWuiIgIevfufcTnYEs4tgBbt27lyy+/5MMPP6zzss312Nb3PfZIx7yu78tNFkzi4+OJj49vkHUNHjyYJ598kqysrKoHbfbs2YSEhDBgwIDDLjNgwABcLhdz5szhsssuAyArK4uVK1fyzDPPNEhdNanrY2CMYcqUKVx77bW4XK46b2/37t1kZGRUe2I1lWM53suWLQM4Yt1paWkkJSUxZ84cTjjhBKDyHPD8+fN5+umn61fwMarL/u7YsYPTTz+dAQMGMGXKFByOup9R9eexPZLg4GAGDBjAnDlzuPjii6umz5kzhwsvvPCwywwePJhPPvmk2rTZs2czcODAej3nm5IxhnHjxjFz5kzmzZtHWlpavdazbNkyWx3H2iovL2fNmjUMHTr0sPc352N7oClTppCQkMB5551X52Wb67Gt73vs4MGDmTNnTrVW8NmzZ9f9y3+duso2ka1bt5ply5aZxx9/3LRq1cosW7bMLFu2zBQWFhpjjPF4PKZXr17mzDPPND/99JP58ssvTbt27czYsWOr1rF9+3bTtWtXs2jRoqppt9xyi2nXrp358ssvzU8//WTOOOMM07dvX+PxeJp8H2vjyy+/NIBZvXr1Ye/v2rWr+fDDD40xxhQWFpp77rnHLFiwwKSnp5uvv/7aDB482LRt29YUFBQ0Zdl1smDBAvPCCy+YZcuWmc2bN5sPPvjApKSkmAsuuKDafAfuqzHGPPXUUyY6Otp8+OGHZsWKFebKK680ycnJtt5XYyqvBDvuuOPMGWecYbZv326ysrKqbgdqrsd2+vTpxuVymTfffNOsXr3a3HnnnSYiIsJs2bLFGGPMAw88YK655pqq+Tdv3mzCw8PNXXfdZVavXm3efPNN43K5zH/+8x9/7UKt/eEPfzDR0dFm3rx51Y5jSUlJ1TwH7++LL75oZs6cadavX29WrlxpHnjgAQOYGTNm+GMX6uSee+4x8+bNM5s3bzYLFy40559/vomMjGyRx3Y/r9dr2rdvb+6///5D7mvux7awsLDqsxWoeh/eunWrMaZ277HXXHNNtSvuvv/+e+N0Os1TTz1l1qxZY5566ikTFBRkFi5cWKfabBlMrrvuOgMccvv666+r5tm6das577zzTFhYmImLizNjx441ZWVlVfenp6cfskxpaakZO3asiYuLM2FhYeb8888327Zta8I9q5srr7zSDBky5Ij3A2bKlCnGGGNKSkrMiBEjTJs2bYzL5TLt27c31113na33zxhjli5dagYNGmSio6NNaGio6dq1q3nsscdMcXFxtfkO3FdjKi9ne+yxx0xSUpIJCQkxw4YNMytWrGji6utuypQph31uH/wdoTkf27///e+mQ4cOJjg42PTv37/a5bPXXXedGT58eLX5582bZ0444QQTHBxsOnbsaF555ZUmrrh+jnQcD3yeHry/Tz/9tOncubMJDQ01sbGx5tRTTzWffvpp0xdfD5dffrlJTk42LpfLpKSkmDFjxphVq1ZV3d+Sju1+X3zxhQHMunXrDrmvuR/b/Zc3H3y77rrrjDG1e48dPnx41fz7/fvf/zZdu3Y1LpfLdOvWrV7BzDJmX28kERERET9rlpcLi4iISMukYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitvH/22dqshN6MZoAAAAASUVORK5CYII=\n" 14 | }, 15 | "metadata": {}, 16 | "output_type": "display_data" 17 | } 18 | ], 19 | "source": [ 20 | "import matplotlib.pyplot as plt\n", 21 | "import numpy as np\n", 22 | "import sympy as sym\n", 23 | "\n", 24 | "# Define symbols\n", 25 | "x = sym.symbols('x')\n", 26 | "n = sym.symbols('n', integer=True, positive=True)\n", 27 | "\n", 28 | "# Initialize array to store Fourier series coefficients\n", 29 | "ms = np.empty(100, dtype=object)\n", 30 | "\n", 31 | "# Generate x values\n", 32 | "xrange = np.linspace(3 * np.pi, -3 * np.pi, 1000)\n", 33 | "\n", 34 | "# Initialize array to store function values for each iteration\n", 35 | "y = np.zeros([101, 1000])\n", 36 | "\n", 37 | "# Define the function equation\n", 38 | "eq = x ** 2\n", 39 | "\n", 40 | "# Calculate a0 coefficient\n", 41 | "a0 = (1 / (2 * sym.pi)) * eq.integrate((x, 0, sym.pi))\n", 42 | "\n", 43 | "# Store a0 in the array\n", 44 | "ms[0] = a0\n", 45 | "\n", 46 | "# Convert a0 to a numpy function and evaluate on xrange\n", 47 | "f = sym.lambdify(x, ms[0], 'numpy')\n", 48 | "y[0, :] = f(xrange)\n", 49 | "\n", 50 | "# Calculate Fourier series coefficients\n", 51 | "for m in range(1, 100):\n", 52 | " an = (1 / sym.pi) * sym.integrate((eq * sym.cos(n * x)), (x, 0, sym.pi)).subs(n, m)\n", 53 | " bn = (1 / sym.pi) * sym.integrate((eq * sym.sin(n * x)), (x, 0, sym.pi)).subs(n, m)\n", 54 | " ms[m] = ms[m - 1] + an * sym.cos(m * x) + bn * sym.sin(m * x)\n", 55 | "\n", 56 | " # Convert ms[m] to a numpy function and evaluate on xrange\n", 57 | " f = sym.lambdify(x, ms[m], 'numpy')\n", 58 | " y[m, :] = f(xrange)\n", 59 | "\n", 60 | "# Piecewise plotting\n", 61 | "for m in range(1000):\n", 62 | " if 0 < xrange[m] < np.pi:\n", 63 | " y[100, m] = xrange[m] ** 2\n", 64 | " elif 2 * np.pi < xrange[m] <= 3 * np.pi:\n", 65 | " y[100, m] = (xrange[m] - 2 * np.pi) ** 2\n", 66 | " elif -2 * np.pi < xrange[m] <= np.pi:\n", 67 | " y[100, m] = (xrange[m] + 2 * np.pi) ** 2\n", 68 | "\n", 69 | "# Plotting\n", 70 | "plt.plot(xrange, y[4, :])\n", 71 | "plt.plot(xrange, y[9, :])\n", 72 | "plt.plot(xrange, y[99, :])\n", 73 | "plt.plot(xrange, y[100, :])\n", 74 | "\n", 75 | "# Add legend\n", 76 | "plt.legend([\"5\", \"10\", \"100\", \"func\"])\n", 77 | "plt.show()\n" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": null, 83 | "outputs": [], 84 | "source": [], 85 | "metadata": { 86 | "collapsed": false 87 | } 88 | } 89 | ], 90 | "metadata": { 91 | "kernelspec": { 92 | "display_name": "Python 3", 93 | "language": "python", 94 | "name": "python3" 95 | }, 96 | "language_info": { 97 | "codemirror_mode": { 98 | "name": "ipython", 99 | "version": 2 100 | }, 101 | "file_extension": ".py", 102 | "mimetype": "text/x-python", 103 | "name": "python", 104 | "nbconvert_exporter": "python", 105 | "pygments_lexer": "ipython2", 106 | "version": "2.7.6" 107 | } 108 | }, 109 | "nbformat": 4, 110 | "nbformat_minor": 0 111 | } 112 | -------------------------------------------------------------------------------- /tutorial4.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 89, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np\n", 12 | "import sympy as sym\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "\n", 15 | "x = sym.symbols('x')" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 90, 21 | "outputs": [ 22 | { 23 | "data": { 24 | "text/plain": "2*x**4 + 5/(x + 1)**2 + 3/x**3", 25 | "text/latex": "$\\displaystyle 2 x^{4} + \\frac{5}{\\left(x + 1\\right)^{2}} + \\frac{3}{x^{3}}$" 26 | }, 27 | "execution_count": 90, 28 | "metadata": {}, 29 | "output_type": "execute_result" 30 | } 31 | ], 32 | "source": [ 33 | "eq = 2 * (x ** 4) + 3 / (x ** 3) + 5 / ((x + 1) ** 2)\n", 34 | "eq" 35 | ], 36 | "metadata": { 37 | "collapsed": false 38 | } 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 91, 43 | "outputs": [ 44 | { 45 | "data": { 46 | "text/plain": "x**2/2", 47 | "text/latex": "$\\displaystyle \\frac{x^{2}}{2}$" 48 | }, 49 | "execution_count": 91, 50 | "metadata": {}, 51 | "output_type": "execute_result" 52 | } 53 | ], 54 | "source": [ 55 | "sym.integrate(x)" 56 | ], 57 | "metadata": { 58 | "collapsed": false 59 | } 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 92, 64 | "outputs": [ 65 | { 66 | "data": { 67 | "text/plain": "2*x**5/5 + (-10*x**2 - 3*x - 3)/(2*x**3 + 2*x**2)", 68 | "text/latex": "$\\displaystyle \\frac{2 x^{5}}{5} + \\frac{- 10 x^{2} - 3 x - 3}{2 x^{3} + 2 x^{2}}$" 69 | }, 70 | "execution_count": 92, 71 | "metadata": {}, 72 | "output_type": "execute_result" 73 | } 74 | ], 75 | "source": [ 76 | "eq_int = sym.integrate(eq, x)\n", 77 | "eq_int" 78 | ], 79 | "metadata": { 80 | "collapsed": false 81 | } 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": 93, 86 | "outputs": [ 87 | { 88 | "data": { 89 | "text/plain": "1723/120", 90 | "text/latex": "$\\displaystyle \\frac{1723}{120}$" 91 | }, 92 | "execution_count": 93, 93 | "metadata": {}, 94 | "output_type": "execute_result" 95 | } 96 | ], 97 | "source": [ 98 | "eq_int.subs(x, 2) - eq_int.subs(x, 1)" 99 | ], 100 | "metadata": { 101 | "collapsed": false 102 | } 103 | }, 104 | { 105 | "cell_type": "code", 106 | "execution_count": 94, 107 | "outputs": [ 108 | { 109 | "data": { 110 | "text/plain": "1723/120", 111 | "text/latex": "$\\displaystyle \\frac{1723}{120}$" 112 | }, 113 | "execution_count": 94, 114 | "metadata": {}, 115 | "output_type": "execute_result" 116 | } 117 | ], 118 | "source": [ 119 | "eq.integrate((x, 1, 2))" 120 | ], 121 | "metadata": { 122 | "collapsed": false 123 | } 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 95, 128 | "outputs": [ 129 | { 130 | "data": { 131 | "text/plain": "1723/120", 132 | "text/latex": "$\\displaystyle \\frac{1723}{120}$" 133 | }, 134 | "execution_count": 95, 135 | "metadata": {}, 136 | "output_type": "execute_result" 137 | } 138 | ], 139 | "source": [ 140 | "sym.integrate(eq, (x, 1, 2))" 141 | ], 142 | "metadata": { 143 | "collapsed": false 144 | } 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 96, 149 | "outputs": [ 150 | { 151 | "data": { 152 | "text/plain": "exp(x)*sin(2*x)", 153 | "text/latex": "$\\displaystyle e^{x} \\sin{\\left(2 x \\right)}$" 154 | }, 155 | "execution_count": 96, 156 | "metadata": {}, 157 | "output_type": "execute_result" 158 | } 159 | ], 160 | "source": [ 161 | "eq_1 = sym.exp(x) * sym.sin(2 * x)\n", 162 | "eq_1" 163 | ], 164 | "metadata": { 165 | "collapsed": false 166 | } 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 97, 171 | "outputs": [ 172 | { 173 | "data": { 174 | "text/plain": "exp(2)*sin(4)/5 - E*sin(2)/5 + 2*E*cos(2)/5 - 2*exp(2)*cos(4)/5", 175 | "text/latex": "$\\displaystyle \\frac{e^{2} \\sin{\\left(4 \\right)}}{5} - \\frac{e \\sin{\\left(2 \\right)}}{5} + \\frac{2 e \\cos{\\left(2 \\right)}}{5} - \\frac{2 e^{2} \\cos{\\left(4 \\right)}}{5}$" 176 | }, 177 | "execution_count": 97, 178 | "metadata": {}, 179 | "output_type": "execute_result" 180 | } 181 | ], 182 | "source": [ 183 | "eq_1_1to2 = eq_1.integrate((x, 1, 2))\n", 184 | "eq_1_1to2" 185 | ], 186 | "metadata": { 187 | "collapsed": false 188 | } 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 98, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "text/plain": "E*(E*sin(4) - sin(2) + 2*cos(2) - 2*E*cos(4))/5", 197 | "text/latex": "$\\displaystyle \\frac{e \\left(e \\sin{\\left(4 \\right)} - \\sin{\\left(2 \\right)} + 2 \\cos{\\left(2 \\right)} - 2 e \\cos{\\left(4 \\right)}\\right)}{5}$" 198 | }, 199 | "execution_count": 98, 200 | "metadata": {}, 201 | "output_type": "execute_result" 202 | } 203 | ], 204 | "source": [ 205 | "eq_1_1to2.simplify()" 206 | ], 207 | "metadata": { 208 | "collapsed": false 209 | } 210 | }, 211 | { 212 | "cell_type": "markdown", 213 | "source": [ 214 | "# Numerical Eval" 215 | ], 216 | "metadata": { 217 | "collapsed": false 218 | } 219 | }, 220 | { 221 | "cell_type": "code", 222 | "execution_count": 99, 223 | "outputs": [ 224 | { 225 | "data": { 226 | "text/plain": "-8.0637827656458" 227 | }, 228 | "execution_count": 99, 229 | "metadata": {}, 230 | "output_type": "execute_result" 231 | } 232 | ], 233 | "source": [ 234 | "f = sym.lambdify(x, eq_1, 'numpy')\n", 235 | "f(2) - f(1)" 236 | ], 237 | "metadata": { 238 | "collapsed": false 239 | } 240 | }, 241 | { 242 | "cell_type": "code", 243 | "execution_count": 100, 244 | "outputs": [ 245 | { 246 | "data": { 247 | "text/plain": "-8.0637827656458" 248 | }, 249 | "execution_count": 100, 250 | "metadata": {}, 251 | "output_type": "execute_result" 252 | } 253 | ], 254 | "source": [ 255 | "f2 = sym.lambdify(x, eq_1_1to2, 'numpy')\n", 256 | "f(2) - f(1)" 257 | ], 258 | "metadata": { 259 | "collapsed": false 260 | } 261 | }, 262 | { 263 | "cell_type": "code", 264 | "execution_count": 101, 265 | "outputs": [ 266 | { 267 | "data": { 268 | "text/plain": "exp(sin(x))", 269 | "text/latex": "$\\displaystyle e^{\\sin{\\left(x \\right)}}$" 270 | }, 271 | "execution_count": 101, 272 | "metadata": {}, 273 | "output_type": "execute_result" 274 | } 275 | ], 276 | "source": [ 277 | "eg1 = sym.exp(sym.sin(x))\n", 278 | "eg1" 279 | ], 280 | "metadata": { 281 | "collapsed": false 282 | } 283 | }, 284 | { 285 | "cell_type": "code", 286 | "execution_count": 102, 287 | "outputs": [ 288 | { 289 | "data": { 290 | "text/plain": "Integral(exp(sin(x)), x)", 291 | "text/latex": "$\\displaystyle \\int e^{\\sin{\\left(x \\right)}}\\, dx$" 292 | }, 293 | "execution_count": 102, 294 | "metadata": {}, 295 | "output_type": "execute_result" 296 | } 297 | ], 298 | "source": [ 299 | "eg1.integrate(x)" 300 | ], 301 | "metadata": { 302 | "collapsed": false 303 | } 304 | }, 305 | { 306 | "cell_type": "code", 307 | "execution_count": 103, 308 | "outputs": [ 309 | { 310 | "data": { 311 | "text/plain": "Integral(exp(sin(x)), (x, 1, 2))", 312 | "text/latex": "$\\displaystyle \\int\\limits_{1}^{2} e^{\\sin{\\left(x \\right)}}\\, dx$" 313 | }, 314 | "execution_count": 103, 315 | "metadata": {}, 316 | "output_type": "execute_result" 317 | } 318 | ], 319 | "source": [ 320 | "eg1.integrate((x,1,2))" 321 | ], 322 | "metadata": { 323 | "collapsed": false 324 | } 325 | }, 326 | { 327 | "cell_type": "code", 328 | "execution_count": 104, 329 | "outputs": [ 330 | { 331 | "data": { 332 | "text/plain": "Integral(exp(sin(x)), x)", 333 | "text/latex": "$\\displaystyle \\int e^{\\sin{\\left(x \\right)}}\\, dx$" 334 | }, 335 | "execution_count": 104, 336 | "metadata": {}, 337 | "output_type": "execute_result" 338 | } 339 | ], 340 | "source": [ 341 | "sym.Integral(eg1,x)" 342 | ], 343 | "metadata": { 344 | "collapsed": false 345 | } 346 | }, 347 | { 348 | "cell_type": "markdown", 349 | "source": [ 350 | "# Plotting" 351 | ], 352 | "metadata": { 353 | "collapsed": false 354 | } 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 105, 359 | "outputs": [ 360 | { 361 | "data": { 362 | "text/plain": "sin(x**2 + 3*x) - cos(3*x)", 363 | "text/latex": "$\\displaystyle \\sin{\\left(x^{2} + 3 x \\right)} - \\cos{\\left(3 x \\right)}$" 364 | }, 365 | "execution_count": 105, 366 | "metadata": {}, 367 | "output_type": "execute_result" 368 | } 369 | ], 370 | "source": [ 371 | "eqn2 = sym.sin(x ** 2 + 3 * x) - sym.cos(3 * x)\n", 372 | "eqn2" 373 | ], 374 | "metadata": { 375 | "collapsed": false 376 | } 377 | }, 378 | { 379 | "cell_type": "code", 380 | "execution_count": 106, 381 | "outputs": [ 382 | { 383 | "data": { 384 | "text/plain": "sqrt(2)*sqrt(pi)*(-sin(9/4)*fresnelc(sqrt(2)*(2*x + 3)/(2*sqrt(pi))) + cos(9/4)*fresnels(sqrt(2)*(2*x + 3)/(2*sqrt(pi))))/2 - sin(3*x)/3", 385 | "text/latex": "$\\displaystyle \\frac{\\sqrt{2} \\sqrt{\\pi} \\left(- \\sin{\\left(\\frac{9}{4} \\right)} C\\left(\\frac{\\sqrt{2} \\cdot \\left(2 x + 3\\right)}{2 \\sqrt{\\pi}}\\right) + \\cos{\\left(\\frac{9}{4} \\right)} S\\left(\\frac{\\sqrt{2} \\cdot \\left(2 x + 3\\right)}{2 \\sqrt{\\pi}}\\right)\\right)}{2} - \\frac{\\sin{\\left(3 x \\right)}}{3}$" 386 | }, 387 | "execution_count": 106, 388 | "metadata": {}, 389 | "output_type": "execute_result" 390 | } 391 | ], 392 | "source": [ 393 | "eqn2I = eqn2.integrate(x)\n", 394 | "eqn2I" 395 | ], 396 | "metadata": { 397 | "collapsed": false 398 | } 399 | }, 400 | { 401 | "cell_type": "code", 402 | "execution_count": 107, 403 | "outputs": [], 404 | "source": [ 405 | "eqn2I_lmb = sym.lambdify(x, eqn2I)" 406 | ], 407 | "metadata": { 408 | "collapsed": false 409 | } 410 | }, 411 | { 412 | "cell_type": "code", 413 | "execution_count": 111, 414 | "outputs": [ 415 | { 416 | "data": { 417 | "text/plain": "array([-3.14159265, -3.11001886, -3.07844506, -3.04687127, -3.01529747,\n -2.98372368, -2.95214988, -2.92057608, -2.88900229, -2.85742849,\n -2.8258547 , -2.7942809 , -2.76270711, -2.73113331, -2.69955952,\n -2.66798572, -2.63641193, -2.60483813, -2.57326433, -2.54169054,\n -2.51011674, -2.47854295, -2.44696915, -2.41539536, -2.38382156,\n -2.35224777, -2.32067397, -2.28910017, -2.25752638, -2.22595258,\n -2.19437879, -2.16280499, -2.1312312 , -2.0996574 , -2.06808361,\n -2.03650981, -2.00493602, -1.97336222, -1.94178842, -1.91021463,\n -1.87864083, -1.84706704, -1.81549324, -1.78391945, -1.75234565,\n -1.72077186, -1.68919806, -1.65762426, -1.62605047, -1.59447667,\n -1.56290288, -1.53132908, -1.49975529, -1.46818149, -1.4366077 ,\n -1.4050339 , -1.3734601 , -1.34188631, -1.31031251, -1.27873872,\n -1.24716492, -1.21559113, -1.18401733, -1.15244354, -1.12086974,\n -1.08929595, -1.05772215, -1.02614835, -0.99457456, -0.96300076,\n -0.93142697, -0.89985317, -0.86827938, -0.83670558, -0.80513179,\n -0.77355799, -0.74198419, -0.7104104 , -0.6788366 , -0.64726281,\n -0.61568901, -0.58411522, -0.55254142, -0.52096763, -0.48939383,\n -0.45782003, -0.42624624, -0.39467244, -0.36309865, -0.33152485,\n -0.29995106, -0.26837726, -0.23680347, -0.20522967, -0.17365588,\n -0.14208208, -0.11050828, -0.07893449, -0.04736069, -0.0157869 ,\n 0.0157869 , 0.04736069, 0.07893449, 0.11050828, 0.14208208,\n 0.17365588, 0.20522967, 0.23680347, 0.26837726, 0.29995106,\n 0.33152485, 0.36309865, 0.39467244, 0.42624624, 0.45782003,\n 0.48939383, 0.52096763, 0.55254142, 0.58411522, 0.61568901,\n 0.64726281, 0.6788366 , 0.7104104 , 0.74198419, 0.77355799,\n 0.80513179, 0.83670558, 0.86827938, 0.89985317, 0.93142697,\n 0.96300076, 0.99457456, 1.02614835, 1.05772215, 1.08929595,\n 1.12086974, 1.15244354, 1.18401733, 1.21559113, 1.24716492,\n 1.27873872, 1.31031251, 1.34188631, 1.3734601 , 1.4050339 ,\n 1.4366077 , 1.46818149, 1.49975529, 1.53132908, 1.56290288,\n 1.59447667, 1.62605047, 1.65762426, 1.68919806, 1.72077186,\n 1.75234565, 1.78391945, 1.81549324, 1.84706704, 1.87864083,\n 1.91021463, 1.94178842, 1.97336222, 2.00493602, 2.03650981,\n 2.06808361, 2.0996574 , 2.1312312 , 2.16280499, 2.19437879,\n 2.22595258, 2.25752638, 2.28910017, 2.32067397, 2.35224777,\n 2.38382156, 2.41539536, 2.44696915, 2.47854295, 2.51011674,\n 2.54169054, 2.57326433, 2.60483813, 2.63641193, 2.66798572,\n 2.69955952, 2.73113331, 2.76270711, 2.7942809 , 2.8258547 ,\n 2.85742849, 2.88900229, 2.92057608, 2.95214988, 2.98372368,\n 3.01529747, 3.04687127, 3.07844506, 3.11001886, 3.14159265])" 418 | }, 419 | "execution_count": 111, 420 | "metadata": {}, 421 | "output_type": "execute_result" 422 | } 423 | ], 424 | "source": [ 425 | "x_vals = np.linspace(-np.pi, np.pi, 200)\n", 426 | "x_vals" 427 | ], 428 | "metadata": { 429 | "collapsed": false 430 | } 431 | }, 432 | { 433 | "cell_type": "code", 434 | "execution_count": 112, 435 | "outputs": [], 436 | "source": [ 437 | "y_vals = eqn2I_lmb(x_vals)" 438 | ], 439 | "metadata": { 440 | "collapsed": false 441 | } 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": 114, 446 | "outputs": [ 447 | { 448 | "data": { 449 | "text/plain": "
", 450 | "image/png": "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\n" 451 | }, 452 | "metadata": {}, 453 | "output_type": "display_data" 454 | } 455 | ], 456 | "source": [ 457 | "plt.plot(y_vals,x_vals)\n", 458 | "plt.show()" 459 | ], 460 | "metadata": { 461 | "collapsed": false 462 | } 463 | }, 464 | { 465 | "cell_type": "code", 466 | "execution_count": 110, 467 | "outputs": [], 468 | "source": [], 469 | "metadata": { 470 | "collapsed": false 471 | } 472 | } 473 | ], 474 | "metadata": { 475 | "kernelspec": { 476 | "display_name": "Python 3", 477 | "language": "python", 478 | "name": "python3" 479 | }, 480 | "language_info": { 481 | "codemirror_mode": { 482 | "name": "ipython", 483 | "version": 2 484 | }, 485 | "file_extension": ".py", 486 | "mimetype": "text/x-python", 487 | "name": "python", 488 | "nbconvert_exporter": "python", 489 | "pygments_lexer": "ipython2", 490 | "version": "2.7.6" 491 | } 492 | }, 493 | "nbformat": 4, 494 | "nbformat_minor": 0 495 | } 496 | -------------------------------------------------------------------------------- /tutorial9.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 11, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import matplotlib.pyplot as plt\n", 12 | "import numpy as np\n", 13 | "import sympy as sym" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 12, 19 | "outputs": [], 20 | "source": [ 21 | "x = sym.symbols('x')\n", 22 | "n = sym.symbols('n', integer=True, positive=True)\n", 23 | "\n", 24 | "ms = np.empty(100, dtype=object)\n", 25 | "xrange = np.linspace(3 * np.pi, -3 * np.pi, 1000)\n", 26 | "y = np.zeros([101, 1000])" 27 | ], 28 | "metadata": { 29 | "collapsed": false 30 | } 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 13, 35 | "outputs": [ 36 | { 37 | "data": { 38 | "text/plain": "x**2", 39 | "text/latex": "$\\displaystyle x^{2}$" 40 | }, 41 | "execution_count": 13, 42 | "metadata": {}, 43 | "output_type": "execute_result" 44 | } 45 | ], 46 | "source": [ 47 | "eq = x ** 2\n", 48 | "eq" 49 | ], 50 | "metadata": { 51 | "collapsed": false 52 | } 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": 14, 57 | "outputs": [ 58 | { 59 | "data": { 60 | "text/plain": "pi**2/6", 61 | "text/latex": "$\\displaystyle \\frac{\\pi^{2}}{6}$" 62 | }, 63 | "execution_count": 14, 64 | "metadata": {}, 65 | "output_type": "execute_result" 66 | } 67 | ], 68 | "source": [ 69 | "a0 = (1 / (2 * sym.pi)) * eq.integrate((x, 0, sym.pi))\n", 70 | "a0" 71 | ], 72 | "metadata": { 73 | "collapsed": false 74 | } 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": 15, 79 | "outputs": [ 80 | { 81 | "data": { 82 | "text/plain": "2*(-1)**n/n**2", 83 | "text/latex": "$\\displaystyle \\frac{2 \\left(-1\\right)^{n}}{n^{2}}$" 84 | }, 85 | "execution_count": 15, 86 | "metadata": {}, 87 | "output_type": "execute_result" 88 | } 89 | ], 90 | "source": [ 91 | "an = (1 / sym.pi) * sym.integrate((eq * sym.cos(n * x)), (x, 0, sym.pi))\n", 92 | "an" 93 | ], 94 | "metadata": { 95 | "collapsed": false 96 | } 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": 16, 101 | "outputs": [ 102 | { 103 | "data": { 104 | "text/plain": "(-(-1)**n*pi**2/n + 2*(-1)**n/n**3 - 2/n**3)/pi", 105 | "text/latex": "$\\displaystyle \\frac{- \\frac{\\left(-1\\right)^{n} \\pi^{2}}{n} + \\frac{2 \\left(-1\\right)^{n}}{n^{3}} - \\frac{2}{n^{3}}}{\\pi}$" 106 | }, 107 | "execution_count": 16, 108 | "metadata": {}, 109 | "output_type": "execute_result" 110 | } 111 | ], 112 | "source": [ 113 | "bn = (1 / sym.pi) * sym.integrate((eq * sym.sin(n * x)), (x, 0, sym.pi))\n", 114 | "bn" 115 | ], 116 | "metadata": { 117 | "collapsed": false 118 | } 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 17, 123 | "outputs": [], 124 | "source": [ 125 | "ms[0] = a0\n", 126 | "\n", 127 | "f = sym.lambdify(x, ms[0], 'numpy')\n", 128 | "y[0, :] = f(xrange)" 129 | ], 130 | "metadata": { 131 | "collapsed": false 132 | } 133 | }, 134 | { 135 | "cell_type": "markdown", 136 | "source": [ 137 | "# Calc. fourier series coefficients" 138 | ], 139 | "metadata": { 140 | "collapsed": false 141 | } 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 18, 146 | "outputs": [], 147 | "source": [ 148 | "for m in range(1, 100):\n", 149 | " ms[m] = ms[m - 1] + an.subs(n, m) * sym.cos(m * x) + bn.subs(n, m) * sym.sin(m * x)\n", 150 | " f = sym.lambdify(x, ms[m], 'numpy')\n", 151 | " y[m, :] = f(xrange)" 152 | ], 153 | "metadata": { 154 | "collapsed": false 155 | } 156 | }, 157 | { 158 | "cell_type": "code", 159 | "execution_count": 19, 160 | "outputs": [ 161 | { 162 | "data": { 163 | "text/plain": "(-4 + pi**2)*sin(x)/pi - pi*sin(2*x)/2 + (-4/27 + pi**2/3)*sin(3*x)/pi - pi*sin(4*x)/4 + (-4/125 + pi**2/5)*sin(5*x)/pi - pi*sin(6*x)/6 + (-4/343 + pi**2/7)*sin(7*x)/pi - pi*sin(8*x)/8 + (-4/729 + pi**2/9)*sin(9*x)/pi - pi*sin(10*x)/10 - 2*cos(x) + cos(2*x)/2 - 2*cos(3*x)/9 + cos(4*x)/8 - 2*cos(5*x)/25 + cos(6*x)/18 - 2*cos(7*x)/49 + cos(8*x)/32 - 2*cos(9*x)/81 + cos(10*x)/50 + pi**2/6", 164 | "text/latex": "$\\displaystyle \\frac{\\left(-4 + \\pi^{2}\\right) \\sin{\\left(x \\right)}}{\\pi} - \\frac{\\pi \\sin{\\left(2 x \\right)}}{2} + \\frac{\\left(- \\frac{4}{27} + \\frac{\\pi^{2}}{3}\\right) \\sin{\\left(3 x \\right)}}{\\pi} - \\frac{\\pi \\sin{\\left(4 x \\right)}}{4} + \\frac{\\left(- \\frac{4}{125} + \\frac{\\pi^{2}}{5}\\right) \\sin{\\left(5 x \\right)}}{\\pi} - \\frac{\\pi \\sin{\\left(6 x \\right)}}{6} + \\frac{\\left(- \\frac{4}{343} + \\frac{\\pi^{2}}{7}\\right) \\sin{\\left(7 x \\right)}}{\\pi} - \\frac{\\pi \\sin{\\left(8 x \\right)}}{8} + \\frac{\\left(- \\frac{4}{729} + \\frac{\\pi^{2}}{9}\\right) \\sin{\\left(9 x \\right)}}{\\pi} - \\frac{\\pi \\sin{\\left(10 x \\right)}}{10} - 2 \\cos{\\left(x \\right)} + \\frac{\\cos{\\left(2 x \\right)}}{2} - \\frac{2 \\cos{\\left(3 x \\right)}}{9} + \\frac{\\cos{\\left(4 x \\right)}}{8} - \\frac{2 \\cos{\\left(5 x \\right)}}{25} + \\frac{\\cos{\\left(6 x \\right)}}{18} - \\frac{2 \\cos{\\left(7 x \\right)}}{49} + \\frac{\\cos{\\left(8 x \\right)}}{32} - \\frac{2 \\cos{\\left(9 x \\right)}}{81} + \\frac{\\cos{\\left(10 x \\right)}}{50} + \\frac{\\pi^{2}}{6}$" 165 | }, 166 | "execution_count": 19, 167 | "metadata": {}, 168 | "output_type": "execute_result" 169 | } 170 | ], 171 | "source": [ 172 | "ms[10]" 173 | ], 174 | "metadata": { 175 | "collapsed": false 176 | } 177 | }, 178 | { 179 | "cell_type": "code", 180 | "execution_count": 20, 181 | "outputs": [ 182 | { 183 | "data": { 184 | "text/plain": "(-4 + pi**2)*sin(x)/pi - 2*cos(x) + pi**2/6", 185 | "text/latex": "$\\displaystyle \\frac{\\left(-4 + \\pi^{2}\\right) \\sin{\\left(x \\right)}}{\\pi} - 2 \\cos{\\left(x \\right)} + \\frac{\\pi^{2}}{6}$" 186 | }, 187 | "execution_count": 20, 188 | "metadata": {}, 189 | "output_type": "execute_result" 190 | } 191 | ], 192 | "source": [ 193 | "ms[1]" 194 | ], 195 | "metadata": { 196 | "collapsed": false 197 | } 198 | }, 199 | { 200 | "cell_type": "markdown", 201 | "source": [ 202 | "# Piecewise plotting" 203 | ], 204 | "metadata": { 205 | "collapsed": false 206 | } 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": 21, 211 | "outputs": [ 212 | { 213 | "data": { 214 | "text/plain": "
", 215 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAGdCAYAAAAmK7htAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZsUlEQVR4nO3dd3hUZd7G8e+ZyaSSSkiDAAGRXgQUQQEriIqFtbuWd13LKtjXvoruCnbZlbWui1gQdxdxdVUERbAgCAhKrwECSQiBkJ5MZuZ5/whEQkshyZxk7s91jZIzp/zOnCn3POc5z1jGGIOIiIiIDTj8XYCIiIjIfgomIiIiYhsKJiIiImIbCiYiIiJiGwomIiIiYhsKJiIiImIbCiYiIiJiGwomIiIiYhtB/i7gYD6fj8zMTCIjI7Esy9/liIiISC0YYygsLCQlJQWHo/7tHrYLJpmZmaSmpvq7DBEREamHjIwM2rVrV+/lbRdMIiMjgcodi4qK8nM1IiIiUhsFBQWkpqZWfY7Xl+2Cyf7TN1FRUQomIiIizcyxdsNQ51cRERGxDQUTERERsQ0FExEREbEN2/UxERERaWzGGDweD16v19+lNCtOp5OgoKBGHc5DwURERAKK2+0mKyuLkpISf5fSLIWHh5OcnExwcHCjrF/BREREAobP5yM9PR2n00lKSgrBwcEazLOWjDG43W527dpFeno6Xbp0OaaB1I5EwURERAKG2+3G5/ORmppKeHi4v8tpdsLCwnC5XGzduhW3201oaGiDb0OdX0VEJOA0xjf9QNHYj52OjIiIiNiGgomIiIjYhoKJiIiI2IaCiYiISDMwfvx4LMuqdktKSvJ3WQ1OV+WIiNiQr7iYvOnTiTz7bILbt/d3OWITPXv25Msvv6z62+l0+rGaxqFgIiJiQzuffZa90z9g10uT6bZ8mb/LadGMMZRW+GcE2DCXs07jqAQFBbXIVpIDKZiIiNhQyY+LATBlZX6upOUrrfDS49Ev/LLt1U+MJDy49h/FGzZsICUlhZCQEAYNGsSECRPo1KlTI1bY9NTHREREpBkYNGgQb7/9Nl988QVvvPEG2dnZDBkyhN27d/u7tAalFhMREQloYS4nq58Y6bdt19aoUaOq/t27d28GDx5M586dmTp1KnfffXdjlOcXCiYiIhLQLMuq0+kUu4iIiKB3795s2LDB36U0KJ3KERGxI2P8XYHYXHl5OWvWrCE5OdnfpTQoBRMREZFm4N5772X+/Pmkp6ezaNEiLrnkEgoKCrjuuuv8XVqDan5tVyIigaAOl5BKYNi+fTtXXnklubm5tGnThpNPPpmFCxfSoUMHf5fWoBRMRETsSKdy5CDTp0/3dwlNQqdyRERExDYUTERERMQ2FExERETENhRMRETsSJ1fJUApmIiI2JE6v0qAUjARERER21AwEREREdtQMBERERHbUDARERER21AwERERaQa++eYbRo8eTUpKCpZl8dFHH1W73xjD+PHjSUlJISwsjNNOO41Vq1b5p9hjoGAiIiLSDBQXF9O3b18mT5582PufeeYZXnjhBSZPnszixYtJSkri7LPPprCwsIkrPTb6rRwREZFmYNSoUYwaNeqw9xljmDRpEg8//DBjxowBYOrUqSQmJjJt2jRuvvnmpiz1mCiYiIhIYDMGKkr8s21XeIMMppeenk52djYjRoyomhYSEsLw4cNZsGCBgomIiEizUVECE1L8s+2HMiE44phXk52dDUBiYmK16YmJiWzduvWY19+U1MdERESkhbAOan0xxhwyze7UYiIiIoHNFV7ZcuGvbTeApKQkoLLlJDk5uWp6Tk7OIa0odqdgIiIigc2yGuR0ij+lpaWRlJTEnDlzOOGEEwBwu93Mnz+fp59+2s/V1Y2CiYiISDNQVFTExo0bq/5OT09n+fLlxMXF0b59e+68804mTJhAly5d6NKlCxMmTCA8PJyrrrrKj1XXnYKJiIhIM7BkyRJOP/30qr/vvvtuAK677jreeust7rvvPkpLS7n11lvJy8tj0KBBzJ49m8jISH+VXC8KJiIidmSMvysQmznttNMwR3leWJbF+PHjGT9+fNMV1QjqdFWOx+PhkUceIS0tjbCwMDp16sQTTzyBz+ermqelDIkrIiIiTa9OweTpp5/m1VdfZfLkyaxZs4ZnnnmGZ599lpdeeqlqnpYyJK6IiF81s0s8RRpKnYLJDz/8wIUXXsh5551Hx44dueSSSxgxYgRLliwBDh0St1evXkydOpWSkhKmTZvWKDsgItIi6VSOBKg6BZNTTz2Vr776ivXr1wPw888/891333HuuecCNQ+JKyIiInI0der8ev/995Ofn0+3bt1wOp14vV6efPJJrrzySqB+Q+KWl5dTXl5e9XdBQUGddkBERERajjq1mHzwwQe8++67TJs2jZ9++ompU6fy3HPPMXXq1Grz1WVI3IkTJxIdHV11S01NreMuiIiISEtRp2Dyxz/+kQceeIArrriC3r17c80113DXXXcxceJEoPqQuAc62pC4Dz74IPn5+VW3jIyM+uyHiEjLos6vEqDqFExKSkpwOKov4nQ6qy4XPnBI3P32D4k7ZMiQw64zJCSEqKioajcRkYCnzq8SoOrUx2T06NE8+eSTtG/fnp49e7Js2TJeeOEFfve73wGVp3BaypC4IiIi0vTqFExeeukl/vSnP3HrrbeSk5NDSkoKN998M48++mjVPC1lSFwREb/SqRwJUHU6lRMZGcmkSZPYunUrpaWlbNq0ib/85S8EBwdXzbN/SNysrCzKysqYP38+vXr1avDCRURaNJ3KkYN88803jB49mpSUFCzL4qOPPqp2f21GXi8vL2fcuHHEx8cTERHBBRdcwPbt25twL2pWp2AiIiIi/lFcXEzfvn2ZPHnyYe+vzcjrd955JzNnzmT69Ol89913FBUVcf755+P1eptqN2qkH/ETERFpBkaNGsWoUaMOe9/BI68DTJ06lcTERKZNm8bNN99Mfn4+b775Ju+88w5nnXUWAO+++y6pqal8+eWXjBw5ssn25WgUTEREJKAZYyj1lPpl22FBYUcc56suahp5/eabb2bp0qVUVFRUmyclJYVevXqxYMECBRMRERE7KPWUMmjaIL9se9FViwh3hR/zemoz8np2djbBwcHExsYeMs/B44/5k/qYiIiItBB1GXm9LvM0JbWYiIhIQAsLCmPRVYv8tu2GcODI68nJyVXTDxx5PSkpCbfbTV5eXrVWk5ycnCMOguoPajEREZGAZlkW4a5wv9waqqWiNiOvDxgwAJfLVW2erKwsVq5caatgohYTERGRZqCoqIiNGzdW/Z2ens7y5cuJi4ujffv2NY68Hh0dzQ033MA999xD69atiYuL495776V3795VV+nYgYKJiIhIM7BkyRJOP/30qr/vvvtuAK677jreeuutWo28/uKLLxIUFMRll11GaWkpZ555Jm+99RZOp7PJ9+dILGPsNbxgQUEB0dHR5Ofn6wf9RCRgbTpnFO4tWwDovnaNf4tpQcrKykhPTyctLY3Q0FB/l9MsHekxbKjPb/UxEREREdtQMBERsSN7NWaLNBkFExEREbEN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msuxPemkk8wtt9xSbVq3bt3MAw88cNj577vvPtOtW7dq026++WZz8sknN1qNjSUnJ8cAZv78+Uec5+uvvzaAycvLa7rCGshjjz1m+vbtW+v5W9KxNcaYO+64w3Tu3Nn4fL7D3t+cjy1gZs6cWfV3fd9jL7vsMnPOOedUmzZy5EhzxRVX1KkeW7aY1OSHH36gV69epKSkVE0bOXIk5eXlLF269LDLLF26lIqKCkaMGFE1LSUlhV69erFgwYJGr/lYfPzxx+Tm5nL99dfXOO+8efNISEjg+OOP58YbbyQnJ6fxC2wATz/9NK1bt6Zfv348+eSTRz21kZ6eTnZ2drVjGRISwvDhw21/LA8nPz+fuLi4Guez+7F1u90sXbq02nEBGDFixBGPyw8//HDI/CNHjmTJkiVUVFQ0Wq2NIT8/H6BWx/KEE04gOTmZM888k6+//rqxS2swGzZsICUlhbS0NK644go2b958xHlb0rF1u928++67/O53vzvij8vu11yP7YHq+x57pGNe1/flZhlMsrOzSUxMrDYtNjaW4OBgsrOzj7hMcHAwsbGx1aYnJiYecRm7ePPNNxk5ciSpqalHnW/UqFG89957zJ07l+eff57FixdzxhlnUF5e3kSV1s8dd9zB9OnT+frrrxk7diyTJk3i1ltvPeL8+4/Xwc+B5nAsD7Zp0yZeeuklbrnllqPO1xyObW5uLl6vt07H5XCv5cTERDweD7m5uY1Wa0MzxnD33Xdz6qmn0qtXryPOl5yczOuvv86MGTP48MMP6dq1K2eeeSbffPNNE1ZbP4MGDeLtt9/miy++4I033iA7O5shQ4awe/fuw87fUo4twEcffcTevXuP+uWwOR/bg9X3PfZIx7yu78tN9uvC48eP5/HHHz/qPIsXL66xD8V+h0utxpga02xDLFNf9XkMtm/fzhdffMG//vWvGtd/+eWXV/27V69eDBw4kA4dOvDpp58yZsyY+hdeD3XZ17vuuqtqWp8+fYiNjeWSSy6pakU5koOPW1Mey4PV59hmZmZyzjnncOmll/L73//+qMva6djWpK7H5XDzH266nY0dO5ZffvmF77777qjzde3ala5du1b9PXjwYDIyMnjuuecYNmxYY5d5TEaNGlX17969ezN48GA6d+7M1KlTufvuuw+7TEs4tlD55XDUqFHVWukP1pyP7ZHU5z22Id6XmyyYjB07liuuuOKo83Ts2LFW60pKSjqkM01eXh4VFRWHpLUDl3G73eTl5VVrNcnJyWHIkCG12u6xqs9jMGXKFFq3bs0FF1xQ5+0lJyfToUMHNmzYUOdlj9WxHO/9V5ts3LjxsMFk/5UA2dnZJCcnV03Pyck54vFvbHXd38zMTE4//XQGDx7M66+/Xuft+fPYHkl8fDxOp/OQb0dHOy5JSUmHnT8oKOioodROxo0bx8cff8w333xDu3bt6rz8ySefzLvvvtsIlTWuiIgIevfufcTnYEs4tgBbt27lyy+/5MMPP6zzss312Nb3PfZIx7yu78tNFkzi4+OJj49vkHUNHjyYJ598kqysrKoHbfbs2YSEhDBgwIDDLjNgwABcLhdz5szhsssuAyArK4uVK1fyzDPPNEhdNanrY2CMYcqUKVx77bW4XK46b2/37t1kZGRUe2I1lWM53suWLQM4Yt1paWkkJSUxZ84cTjjhBKDyHPD8+fN5+umn61fwMarL/u7YsYPTTz+dAQMGMGXKFByOup9R9eexPZLg4GAGDBjAnDlzuPjii6umz5kzhwsvvPCwywwePJhPPvmk2rTZs2czcODAej3nm5IxhnHjxjFz5kzmzZtHWlpavdazbNkyWx3H2iovL2fNmjUMHTr0sPc352N7oClTppCQkMB5551X52Wb67Gt73vs4MGDmTNnTrVW8NmzZ9f9y3+duso2ka1bt5ply5aZxx9/3LRq1cosW7bMLFu2zBQWFhpjjPF4PKZXr17mzDPPND/99JP58ssvTbt27czYsWOr1rF9+3bTtWtXs2jRoqppt9xyi2nXrp358ssvzU8//WTOOOMM07dvX+PxeJp8H2vjyy+/NIBZvXr1Ye/v2rWr+fDDD40xxhQWFpp77rnHLFiwwKSnp5uvv/7aDB482LRt29YUFBQ0Zdl1smDBAvPCCy+YZcuWmc2bN5sPPvjApKSkmAsuuKDafAfuqzHGPPXUUyY6Otp8+OGHZsWKFebKK680ycnJtt5XYyqvBDvuuOPMGWecYbZv326ysrKqbgdqrsd2+vTpxuVymTfffNOsXr3a3HnnnSYiIsJs2bLFGGPMAw88YK655pqq+Tdv3mzCw8PNXXfdZVavXm3efPNN43K5zH/+8x9/7UKt/eEPfzDR0dFm3rx51Y5jSUlJ1TwH7++LL75oZs6cadavX29WrlxpHnjgAQOYGTNm+GMX6uSee+4x8+bNM5s3bzYLFy40559/vomMjGyRx3Y/r9dr2rdvb+6///5D7mvux7awsLDqsxWoeh/eunWrMaZ277HXXHNNtSvuvv/+e+N0Os1TTz1l1qxZY5566ikTFBRkFi5cWKfabBlMrrvuOgMccvv666+r5tm6das577zzTFhYmImLizNjx441ZWVlVfenp6cfskxpaakZO3asiYuLM2FhYeb8888327Zta8I9q5srr7zSDBky5Ij3A2bKlCnGGGNKSkrMiBEjTJs2bYzL5TLt27c31113na33zxhjli5dagYNGmSio6NNaGio6dq1q3nsscdMcXFxtfkO3FdjKi9ne+yxx0xSUpIJCQkxw4YNMytWrGji6utuypQph31uH/wdoTkf27///e+mQ4cOJjg42PTv37/a5bPXXXedGT58eLX5582bZ0444QQTHBxsOnbsaF555ZUmrrh+jnQcD3yeHry/Tz/9tOncubMJDQ01sbGx5tRTTzWffvpp0xdfD5dffrlJTk42LpfLpKSkmDFjxphVq1ZV3d+Sju1+X3zxhQHMunXrDrmvuR/b/Zc3H3y77rrrjDG1e48dPnx41fz7/fvf/zZdu3Y1LpfLdOvWrV7BzDJmX28kERERET9rlpcLi4iISMukYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitqFgIiIiIrahYCIiIiK2oWAiIiIitvH/22dqshN6MZoAAAAASUVORK5CYII=\n" 216 | }, 217 | "metadata": {}, 218 | "output_type": "display_data" 219 | } 220 | ], 221 | "source": [ 222 | "for m in range(0, 1000):\n", 223 | " if 0 < xrange[m] < np.pi:\n", 224 | " y[100, m] = xrange[m] ** 2\n", 225 | " elif 2 * np.pi < xrange[m] <= 3 * np.pi:\n", 226 | " y[100, m] = (xrange[m] - 2 * np.pi) ** 2\n", 227 | " elif -2 * np.pi < xrange[m] <= np.pi:\n", 228 | " y[100, m] = (xrange[m] + 2 * np.pi) ** 2\n", 229 | "\n", 230 | "plt.plot(xrange, y[4, :])\n", 231 | "plt.plot(xrange, y[9, :])\n", 232 | "plt.plot(xrange, y[99, :])\n", 233 | "plt.plot(xrange, y[100, :])\n", 234 | "\n", 235 | "plt.legend([\"5\", \"10\", \"100\", \"func\"])\n", 236 | "plt.show()" 237 | ], 238 | "metadata": { 239 | "collapsed": false 240 | } 241 | }, 242 | { 243 | "cell_type": "code", 244 | "execution_count": 21, 245 | "outputs": [], 246 | "source": [], 247 | "metadata": { 248 | "collapsed": false 249 | } 250 | } 251 | ], 252 | "metadata": { 253 | "kernelspec": { 254 | "display_name": "Python 3", 255 | "language": "python", 256 | "name": "python3" 257 | }, 258 | "language_info": { 259 | "codemirror_mode": { 260 | "name": "ipython", 261 | "version": 2 262 | }, 263 | "file_extension": ".py", 264 | "mimetype": "text/x-python", 265 | "name": "python", 266 | "nbconvert_exporter": "python", 267 | "pygments_lexer": "ipython2", 268 | "version": "2.7.6" 269 | } 270 | }, 271 | "nbformat": 4, 272 | "nbformat_minor": 0 273 | } 274 | -------------------------------------------------------------------------------- /newton_raphson_approximation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyMAiQYluC6Df0euxtWNPB/Q", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": null, 32 | "metadata": { 33 | "colab": { 34 | "base_uri": "https://localhost:8080/", 35 | "height": 689 36 | }, 37 | "id": "_V1HnNGgpmoZ", 38 | "outputId": "b8eaec88-dfb1-439b-d47c-4aeaaa920924" 39 | }, 40 | "outputs": [ 41 | { 42 | "output_type": "stream", 43 | "name": "stdout", 44 | "text": [ 45 | "Iteration\t x_n\t\t x_(n+1)\t\t f(x_n)\t\t f'(x_n)\n", 46 | "1\t\t 1.500000\t 1.347826\t 0.875000\t 5.750000\n", 47 | "2\t\t 1.347826\t 1.325200\t 0.100682\t 4.449905\n", 48 | "3\t\t 1.325200\t 1.324718\t 0.002058\t 4.268468\n", 49 | "4\t\t 1.324718\t 1.324718\t 0.000001\t 4.264635\n", 50 | "5\t\t 1.324718\t 1.324718\t 0.000000\t 4.264633\n", 51 | "6\t\t 1.324718\t 1.324718\t 0.000000\t 4.264633\n" 52 | ] 53 | }, 54 | { 55 | "output_type": "display_data", 56 | "data": { 57 | "text/plain": [ 58 | "
" 59 | ], 60 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAIjCAYAAAAUdENlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABsoElEQVR4nO3dd3gUVd/G8XvTEyChhSYtCQoKSgdBEXyogkpRECsdReoDgogFUEQRsKGCWEBR7IVHUaQoRUGkKiqgVOlNIEAg9bx/zJsNIbuQQHYnk3w/1zXXzs7O7vz2ZJPcOTlzxmWMMQIAAAAcJMDuAgAAAICcIsQCAADAcQixAAAAcBxCLAAAAByHEAsAAADHIcQCAADAcQixAAAAcBxCLAAAAByHEAsAAADHIcQCuGiLFy+Wy+XSp59+ancp+V7lypXVvXt3u8vwatasWapWrZqCg4NVtGhRnx9v3rx5qlWrlsLCwuRyuXTs2DH3Y23btlWfPn1y/JrTpk1TxYoVlZiYmIuVAvAVQiwcY+bMmXK5XAoLC9OePXuyPN6sWTPVqFHDb/UkJCRozJgxWrx4sd+O6YnL5cq0REZGqmnTppo7d66tdeVlLpdLAwYMcN/fu3evxowZo/Xr19tXlKTly5drzJgxmQKZE2zatEndu3dXXFyc3njjDU2fPt2nxzty5Ii6dOmi8PBwvfrqq5o1a5YKFSokSfrpp580f/58Pfzwwzl+3e7duyspKUmvv/56bpfsM48++qhcLpfi4uJ08OBBr/u98cYbatq0qUqXLq3Q0FDFxMSoR48e2rFjh/+KzWX79u3TyJEjdeONN6pIkSJyuVy2/zyGfxFi4TiJiYl69tln7S5DCQkJGjt2bJ74odmyZUvNmjVL7777rkaMGKEtW7bolltu0XfffWd3aY6wd+9ejR07Nk+E2LFjx3oMsZs3b9Ybb7zh/6KyYfHixUpLS9NLL72k7t27q0uXLj493qpVq3TixAk99dRT6tWrl+655x4FBwdLkiZOnKjmzZurSpUqOX7dsLAwdevWTc8//7yMMblddq6bPn26xo8frxYtWmjfvn26+eabderUKY/7rlu3TjExMRoxYoSmTp2qe+65R99++63q16+vvXv3+rny3LF582ZNmDBBe/bs0dVXX213ObABIRaOU6tWLb3xxhuO/cHrC1dccYXuuece3XvvvXrssce0cOFCGWP00ksv2V1ageYtUFyM0NBQd1DLa9J7AHNzGEFCQkKOj3fw4EHNnTv3kkJ0ly5dtHPnTv3www8X/Rr+MHfuXD344IO66667NG/ePM2ZM0e///67unbtqtTU1Cz7v/baa5o5c6aGDRumnj176qmnntLcuXN1+PBhvfvuuza8g0tXt25dHTlyRH/99ZeGDh1qdzmwASEWjjNq1CilpqZmuzf2vffeU926dRUeHq7ixYura9eu2rVrl/vxl19+WYGBgZl6vyZPniyXy5XpB2NqaqqKFCmihx9+WDt27FB0dLQkaezYse5/5Y8ZM8a9//fff68mTZqoUKFCKlq0qNq3b6+NGzdmqm3MmDFyuVzasmWLunfvrqJFiyoqKko9evQ47y/xC7nyyitVsmRJbd26NdP2OXPmqF27dipXrpxCQ0MVFxenp556KssvvfShGWvWrFHjxo0VHh6umJgYTZs2zePx0tLS9PTTT6t8+fIKCwtT8+bNtWXLlkz7/P3337rttttUpkwZhYWFqXz58uratauOHz/u3iclJUVPPfWU4uLiFBoaqsqVK2vUqFFZxihWrlxZN998s3788Uc1aNBAYWFhio2NvahfxosXL1b9+vUlST169HB/LWfOnOneZ+XKlWrTpo2ioqIUERGhpk2b6qeffsr0Oulfyz///FN33XWXihUrpuuvv16S9Ntvv6l79+6KjY1VWFiYypQpo549e+rIkSOZnj98+HBJUkxMjLuO9H/3ehoTu23bNnXu3FnFixdXRESErr322izDSNLHLX/88ce58jU6V+XKlTV69GhJUnR0dJbvg9dee03Vq1dXaGioypUrp/79+2fpaT7783bDDTcoIiJCo0aN8ni8Zs2aqVu3bpKk+vXry+Vyudtl7ty5SklJUYsWLdz7G2N04403Kjo6OtO/25OSknT11VcrLi4u0x8bdevWVfHixTVnzhyv7zm3HTx4UNHR0WrWrFmmHuAtW7aoUKFCuuOOOzLtv3r1at1xxx3q2rWr3n33XQUGBqply5b63//+p0WLFql///7ZOm7lypUlKVeHr3z//fcKCAjQE088kWn77Nmz5XK5NHXq1Fw7VpEiRVS8ePFcez04kAEcYsaMGUaSWbVqlenZs6cJCwsze/bscT/etGlTU7169UzPGTdunHG5XOaOO+4wr732mhk7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fvx4j/sWK1ZMp0+fvmA73HfffVqwYMEFl/fffz9b9b/yyiuKiorS7bffrscff1z33nuv2rdvn63nZte3336rb775RpMnT1bFihVzddx2uoiICM2cOVMbN27UDTfcoLlz5+qFF15QxYoVc/1YKNiC7C4AuFiPPfaYZs2apWeffdbjCUx///23jDG6/PLLPT7/7JNkmjRpojFjxuj06dNatmyZypYtqzp16qhmzZpatmyZWrZsqR9//DFbJ4zs3LlTklS1atUsj1155ZX67rvvdOrUKfeUQJKy/HBP/0V89OhRRUZG6t9//1VSUpL78fDwcHfokKT27dtrwIABSkpK0qpVqzR+/HglJCRkCg+S9Mcff+ixxx7T999/nyUgnzvusVy5cplqlKwTyCRpx44d7hB2ofola4zn0KFD9fzzz+v9999XkyZNdOutt+qee+5xv4+dO3cqICAgy1nlZcqUUdGiRd3t6u2Y6cdNP2Zu+PvvvyXJPQbTk+PHj2cKTjExMVn2+ffffzV27Fh9+OGHWaZBOt940/PZuXOnGjZsmGX7lVde6X787CnncuNrlNP6pKzfByEhIYqNjc3y9bzssssyheyLZc4zq8Bbb72luLg4/f3331q+fHmmPy48vYbL5TrvsWJjYxUbG3vxxZ6jePHievnll9W5c2eVLl1aL7/8cq69drobb7xRknTTTTepffv2qlGjhgoXLpxpyrlzXejnjyfXXXed+vXrp1dffVWtW7dWz549L1jbyZMndfLkSff9wMBA97kHgCeEWDhWbGys7rnnHk2fPl0jR47M8nhaWppcLpe+/fZbBQYGZnm8cOHC7vXrr79eycnJWrFihZYtW+bupWrSpImWLVumTZs26dChQ5l6/nKTp/qkjF+mnTp10pIlS9zbu3XrlunEo/Lly7tPZmnbtq1KliypAQMG6MYbb1SnTp0kWSdvNG3aVJGRkXryyScVFxensLAwrV27Vg8//HCWHsXcrF+yTpbr3r275syZo/nz52vQoEF65pln9PPPP6t8+fLu/S4UHHJyzEuV3iYTJ05UrVq1PO5z9udIksdg1KVLFy1fvlzDhw9XrVq1VLhwYaWlpalNmzaX1O45kZtfI1/wFihzokSJEuf9I2bx4sXukwQ3bNigRo0aedzv6NGjioiIuGBN54Yub3ISxtKnxTt69Kh2797t0wtHxMXFqXbt2nr//ffPG2Iv9PPHk8TERPf0g1u3blVCQoIiIiLO+5xJkyZp7Nix7vuVKlVy9Dy28D1CLBztscce03vvvacJEyZkeSwuLk7GGMXExLh7EL1p0KCBQkJCtGzZMi1btsx9lvgNN9ygN954Q4sWLXLfT+ctbFWqVEmSNYfhuTZt2qSSJUtm6eG8kMmTJ2f65VyuXLnz7n///ffrhRde0GOPPaaOHTu6JwE/cuSIPv/880zvY/v27R5fY+/evVl6jP/66y9JGWc159TVV1+tq6++Wo899piWL1+u6667TtOmTdO4ceNUqVIlpaWl6e+//3b3JkrSgQMHdOzYMXe7+oK3r2VcXJwkKTIyMtMZ7zlx9OhRLVq0SGPHjs10xnZ6L2926vCkUqVKXj9j6Y9fjPN9jXLi7O+Ds3srk5KStH379otuz/OpVq2aPvvsM4+P7du3TwMHDlSrVq0UEhKihx56SK1bt/bYTtu3b8/0GfTm3NDlTXbD2Lx58/Tmm29qxIgRev/999WtWzetXLlSQUG++1V9+vTpC16hLKc/fyRp9OjR2rhxoyZNmqSHH35YI0eOvGDP8n333ZdpeExu/GGD/I0xsXC0uLg43XPPPXr99de1f//+TI916tRJgYGBGjt2bJbeOWNMpumNwsLCVL9+fX3wwQf6559/MvXEnj59Wi+//LLi4uJUtmxZ93PSexXOnZ6mbNmyqlWrlt55551Mj/3++++aP3++2rZtm+P3WbduXbVo0cK9XHXVVefdPygoSMOGDdPGjRvdUwWl98Sd3RZJSUl67bXXPL5GSkpKpisXpV/JKDo6WnXr1s1R/fHx8UpJScm07eqrr1ZAQID7F2h6u7z44ouZ9nv++eclSe3atcvRMXMiPaif+7WsW7eu4uLiNGnSJI89bocOHbrga3tqdynr+zxfHZ60bdtWv/zyi3vMtmTNSzt9+nRVrlz5gp+Rc2Xna5QTLVq0UEhIiF5++eVM7/2tt97S8ePHffL1bNSokY4ePepxXHSfPn2Ulpamt956S9OnT1dQUJB69erlsed+7dq1aty48QWPl5tjYo8dO6bevXurQYMGGj9+vN58802tXbvW67jdnEhJSfHYQ/3LL79ow4YNqlev3nmfn9OfPytXrtSkSZM0ZMgQDRs2TMOHD9crr7ySqTfXk9jY2EzHue666y785lCg0RMLx3v00Uc1a9Ysbd68WdWrV3dvj4uL07hx4/TII49ox44d6tChg4oUKaLt27friy++UN++ffXQQw+592/SpImeffZZRUVFua/+UqpUKVWtWlWbN2/OMkdneHi4rrrqKn300Ue64oorVLx4cdWoUUM1atTQxIkTddNNN6lRo0bq1auXTp8+rSlTpigqKirTHJq+1L17dz3xxBOaMGGCOnTooMaNG6tYsWLq1q2bBg0aJJfLpVmzZnn993u5cuU0YcIE7dixQ1dccYU++ugjrV+/XtOnT8/xpPvff/+9BgwYoM6dO+uKK65QSkqKZs2apcDAQN12222SpJo1a6pbt26aPn26e+jDL7/8onfeeUcdOnRwj+Xzhbi4OBUtWlTTpk1TkSJFVKhQITVs2FAxMTF68803ddNNN6l69erq0aOHLrvsMu3Zs0c//PCDIiMj9dVXX533tSMjI3XDDTfoueeeU3Jysi677DLNnz/fYw94+h8Hjz76qLp27arg4GDdcsstHnvuR44cqQ8++EA33XSTBg0apOLFi+udd97R9u3b9dlnn2UZD30h2fka5UR0dLQeeeQRjR07Vm3atNGtt96qzZs367XXXlP9+vV1zz335Pg1L6Rdu3YKCgrSwoUL1bdvX/f2GTNmaO7cuZo5c6Z7WMSUKVN0zz33aOrUqXrwwQfd+65Zs0b//vtvtk6oys0xsYMHD9aRI0e0cOFCBQYGqk2bNurdu7fGjRun9u3bq2bNmhf92idPnlSFChV0xx13qHr16ipUqJA2bNigGTNmKCoqSo8//niuvAfJOnGxW7duuvzyy/X0009LsubS/uqrr9SjRw9t2LAhx/+JOp/0/xD88ccfkqRZs2bpxx9/lGT9pw75nP8nRAAujrdpdYzJmF/03HlijTHms88+M9dff70pVKiQKVSokKlWrZrp37+/2bx5c6b95s6daySZm266KdP29Hlbz54fNd3y5ctN3bp1TUhISJbpthYuXGiuu+46Ex4ebiIjI80tt9xi/vzzz0zP9zQ10dnv1dNUS+eSh3li040ZMybTtDM//fSTufbaa014eLgpV66cGTFihPnuu++yTE2TPl3Z6tWrTaNGjUxYWJipVKmSeeWVVzK9fvr0TedOy7R9+/ZMU1Zt27bN9OzZ08TFxZmwsDBTvHhxc+ONN5qFCxdmel5ycrIZO3asiYmJMcHBwaZChQrmkUceyTT9lzHWdFPt2rXL8n6bNm1qmjZtelFtNmfOHHPVVVeZoKCgLNNtrVu3znTq1MmUKFHChIaGmkqVKpkuXbqYRYsWuffx9rU0xpjdu3ebjh07mqJFi5qoqCjTuXNns3fvXo9TtD311FPmsssuMwEBAZk+A+dOsWWMNWfo7bffbooWLWrCwsJMgwYNzNdff51pn9z+Gnlyvvf+yiuvmGrVqpng4GBTunRp069fP/c0dek8zfF8Puf7WXDrrbea5s2bu+/v2rXLREVFmVtuuSXLvh07djSFChUy27Ztc297+OGHTcWKFX02n6knc+bMyTKlnTHGxMfHm0qVKpmaNWtmmlc3pxITE83gwYPNNddcYyIjI01wcLCpVKmS6dWrV7Z+xuTEf//7XxMYGJhpDmVjjFm9erUJCgoy/fr1y9Xj6TxTmyH/cxnjgAtEA/CrZs2a6fDhw/r999/tLgXIkWXLlqlZs2batGmT15lJvElMTFTlypU1cuRIDR482EcVAsgtjIkFAOQbTZo0UatWrfTcc8/l+LkzZsxQcHCwx7l+AeQ99MQCyIKeWABAXkdPLAAAAByHnlgAAAA4Dj2xAAAAcBxCLAAAABynQF3sIC0tTXv37lWRIkVydHlHAAAA+IcxRidOnFC5cuXOe+GWAhVi9+7dqwoVKthdBgAAAC5g165d7qvseVKgQmyRIkUkWY0SGRnp8+MlJydr/vz5atWqVY4v05mf0S7e0Tae0S7e0Tae0S7e0Tae0S7e+btt4uPjVaFCBXdu86ZAhdj0IQSRkZF+C7ERERGKjIzkG+IstIt3tI1ntIt3tI1ntIt3tI1ntIt3drXNhYZ+cmIXAAAAHIcQCwAAAMchxAIAAMBxCtSY2OwwxiglJUWpqamX/FrJyckKCgrSmTNncuX18gvaxRIYGKigoCCmewMA4CIQYs+SlJSkffv2KSEhIVdezxijMmXKaNeuXQSVs9AuGSIiIlS2bFmFhITYXQoAAI5CiP1/aWlp2r59uwIDA1WuXDmFhIRccsBKS0vTyZMnVbhw4fNO1lvQ0C5WkE9KStKhQ4e0fft2XX755QW2LQAAuBiE2P+XlJSktLQ0VahQQREREbnymmlpaUpKSlJYWBgB5Sy0iyU8PFzBwcHauXOnuz0AAED2FNwE4UVBDlXwPz5vAABcHH6DAgAAwHEIsQAAAHAcQiwAAAAchxAL2x07dkz16tVTrVq1VKNGDb3xxht2lwQAAPI4ZieA7YoUKaKlS5cqIiJCp06dUo0aNdSpUyeVKFHC7tIAAEAeRU9sPjJlyhRVqlRJQUFB6tGjh0qVKqUdO3Zk+/ldu3bV5MmTfVegF4GBge5pzRITE2WMkTHG73UAAADnIMTmE7/++quGDh2qqVOnateuXSpWrJjat2+vypUrZ/s1HnvsMT399NM6fvy47wr14tixY6pZs6bKly+v4cOHq2TJkn6v4VItXbpUt9xyi8qVKyeXy6Uvv/zS7pIAAMi3CLH5xNdff60GDRqobdu2ioqK0ltvvaVevXrl6DVq1KihuLg4vffeez6q0ruiRYvq119/1fbt2zV79mwdOHDA7zVcqlOnTqlmzZp69dVX7S4FAIB8jxCbD1SpUkWPPfaYli9fLpfLpZIlSyo0NFTXXnttpv0++OADhYeHa9++fe5tPXr00DXXXOPufb3lllv04Ycf5mp9no7bv39/1apVK0uvb+nSpVWzZk0tW7bM5zWc+94v1U033aRx48apY8eOufJ6AADY7eBB6bXXAhQfH2J3KVkQYr0wRjp1yp4lp8NBly9frtjYWE2cOFH79u3TnXfeqbp162bZr2vXrrriiis0fvx4SdLo0aO1cOFCffvtt4qKipIkNWjQQL/88osSExOzPH/8+PEqXLjweZd//vnngscdM2aMFi9erLlz5yoqKkoHDhzQiRMnJEnHjx/X0qVLVbVq1Zw1wgVk570DAIDMPvhAGjIkUE8/3dDuUrJgdgIvEhKkwoUv9VUCJBXN8bNOnpQKFcr+/oULF9aOHTt0/fXXq0yZMjpy5IjKlSuXZT+Xy6Wnn35at99+u8qUKaMpU6Zo2bJluuyyy9z7lCtXTklJSdq/f78qVaqU6fkPPPCAunTpct5asnPcV155RXPnznUfd+fOnerbt6/7hK6BAwfq6quvzn4DZEN23jsAAMjsnXes26ZNd0u60tZazkWIzQd+++03SXIHv9OnTyssLMzjvjfffLOuuuoqPfnkk5o/f76qV6+e6fHw8HBJUkJCQpbnFi9eXMWLF7+oGs8+7rx583TllRnfCA0aNND69euz9TojR47UhAkTzrvPxo0bVa1atfPW4Om958YxAADILzZskNatk4KDja6/fo8IsQ4REWH1iF6KtLQ0xcfHKzIyUgEB2R+58f+zTWXb+vXrVaVKFRX6/+7bkiVL6ujRox73nTdvnjZt2qTU1FSVLl06y+P//vuvJCk6OjrLY+PHj3f/O96bP//8UxUrVszxcbNr2LBh6t69+3n3iY2N9bg9uzVcyjEAAMgvZs2ybm+6ySgyMsneYjwgxHrhcuXsX/qepKVJqanW6+Qgw+bY+vXrVbNmTff92rVre5xhYO3aterSpYveeustzZw5U48//rg++eSTTPv8/vvvKl++vMcpri52OMG5x33iiSf05ptvZvftZRIdHe0xYF9Idt77pR4DAID8IiVFSo8S99yTZm8xXhBi84H169fr1ltvdd9v3bq1HnnkER09elTFihWTJO3YsUPt2rXTqFGjdOeddyo2NlaNGjXS2rVrVadOHfdzly1bplatWnk8zsUMJ/B23IEDB6pJkyYX8W5zLrvv/VKdPHlSW7Zscd/fvn271q9fr+LFi3vsnQYAIK+aP1/at08qWVJq29Zo4UK7K8qK2QkcLi0tTRs2bMjUE3v11VerTp06+vjjjyVZQwTatGmj9u3ba+TIkZKkhg0b6qabbtKoUaPczztz5oy+/PJL9enTJ1dq83bcNm3a6KmnnsqVY1xsDee+99ywevVq1a5dW7Vr15YkDR06VLVr19YTTzyRq8cBAMDXZsywbu++WwrJe7NrSaIn1vECAgJ06tSpLNufeOIJDR8+XH369FHx4sW1adOmLPvMnTs30/0ZM2aoQYMGWeaXvVjejvv1118rPj4+V45xsTWc+95zQ7NmzbhcLgDA8Y4ckf73P2v9AqeI2IoQm0+1a9dOf//9t/bs2aMKFSpk6znBwcGaMmWKjysDAAB52ezZUlKSVKuWtSQn212RZ4TYfGzIkCE52r93796+KQQAADjGzJnWbY8etpZxQYyJBQAAgCTpt9+ktWul4GDprrvsrub8CLEAAACQlHFC1623WjMT5GWEWAAAACgpKWNu2Lw+lEAixAIAAEDS3LnS4cNSmTJS69Z2V3NhhFgAAAC4hxLce68U5IBT/wmx50hLy5uXVkP+xOcNAJAXHDggffONte6EoQQSU2y5hYSEKCAgQHv37lV0dLRCQkLkcrku6TXT0tKUlJSkM2fOKCCAvxfS0S6SMUZJSUk6dOiQAgICFJJXL4cCACgQ3ntPSk2VGjaUrrzS7mqyhxD7/wICAhQTE6N9+/Zp7969ufKaxhidPn1a4eHhlxyI8xPaJUNERIQqVqxYYMM8AMB+xmQMJXBKL6xEiM0kJCREFStWVEpKilJTUy/59ZKTk7V06VLdcMMNCg4OzoUK8wfaxRIYGKigoKACH+QBAPZavVr64w8pLEzq2tXuarKPEHsOl8ul4ODgXAlXgYGBSklJUVhYWIEOa+eiXQAAyDveftu67dRJioqyt5ac4H+YAAAABdTJk9L771vrvXrZW0tOEWIBAAAKqI8/lk6ckKpUkZo1s7uanCHEAgAAFFBvvGHd9u4tOe0cY4eVCwAAgNywYYP088/WhQ26d7e7mpwjxAIAABRA6b2w7dtLpUvbW8vFIMQCAAAUMKdPS7NmWet9+thby8UixAIAABQwn30mHTsmVaoktWxpdzUXhxALAABQwEyfbt068YSudA4tGwAAABdj0yZp2TIrvDrpMrPnIsQCAAAUIG++ad22aydddpm9tVwKQiwAAEABkZgozZxprffta2spl4wQCwAAUEB8+aV05IjVA9umjd3VXBrHhthnn31WLpdLQ4YMsbsUAAAAR0ifG7ZnT+siB07myBC7atUqvf7667rmmmvsLgUAAMARtmyRFi2SXC6pVy+7q7l0jguxJ0+e1N1336033nhDxYoVs7scAAAAR5g2zbpt08aaH9bpHNeR3L9/f7Vr104tWrTQuHHjzrtvYmKiEhMT3ffj4+MlScnJyUpOTvZpnenHOfsWFtrFO9rGM9rFO9rGM9rFO9rGs/zeLqdPS2+/HSTJpfvvT1Fyssn2c/3dNtk9jssYk/13YbMPP/xQTz/9tFatWqWwsDA1a9ZMtWrV0osvvuhx/zFjxmjs2LFZts+ePVsRERE+rhYAACBvWLSogqZMqaNSpU5p6tSFCgy0uyLvEhISdNddd+n48eOKjIz0up9jQuyuXbtUr149LViwwD0W9kIh1lNPbIUKFXT48OHzNkpuSU5O1oIFC9SyZUsFBwf7/HhOQbt4R9t4Rrt4R9t4Rrt4R9t4lt/bpXHjQK1eHaCnn07V8OFpOXquv9smPj5eJUuWvGCIdcxwgjVr1ujgwYOqU6eOe1tqaqqWLl2qV155RYmJiQo858+K0NBQhYaGZnmt4OBgv35A/X08p6BdvKNtPKNdvKNtPKNdvKNtPMuP7bJqlbR6tRQSIvXpE6jg4IvrhvVX22T3GI4Jsc2bN9eGDRsybevRo4eqVaumhx9+OEuABQAAgPTaa9Ztly5SdLS9teQmx4TYIkWKqEaNGpm2FSpUSCVKlMiyHQAAANaFDT780Fp/8EF7a8ltjptiCwAAANkzc6Z05oxUq5Z07bV2V5O7HNMT68nixYvtLgEAACBPSkuTpk611h980LrIQX5CTywAAEA+tGCBtHWrFBUl3XWX3dXkPkIsAABAPpR+Qlf37lKhQraW4hOEWAAAgHxm507p66+t9X797K3FVwixAAAA+cz06daY2ObNpapV7a7GNwixAAAA+ciZM1aIlfJvL6xEiAUAAMhXZs+WDh+WKlaU2re3uxrfIcQCAADkE8ZIL71krQ8YIAU5ejLV8yPEAgAA5BNLlki//SZFREi9e9tdjW8RYgEAAPKJF1+0bu+7TypWzNZSfI4QCwAAkA9s2yb973/W+qBB9tbiD4RYAACAfOCVV6wxsa1bS1deaXc1vkeIBQAAcLgTJ6S33rLWBw+2txZ/IcQCAAA43MyZUny8dWGD1q3trsY/CLEAAAAOlpYmTZlirQ8aJAUUkHRXQN4mAABA/vTtt9Lff0tRUdasBAUFIRYAAMDB0qfV6tNHKlzY1lL8ihALAADgUH/8IS1caA0hGDDA7mr8ixALAADgUC+8YN126CBVqmRrKX5HiAUAAHCgffukWbOs9WHD7K3FDoRYAAAAB5oyRUpKkho3tpaChhALAADgMCdPSlOnWuvDh9tbi10IsQAAAA7z1lvSsWPS5ZdLt9xidzX2IMQCAAA4SEpKxgldw4ZJgYH21mMXQiwAAICDfPKJtHOnFB1dsC5ucC5CLAAAgEMYI02aZK0PHCiFh9tbj50IsQAAAA7xww/S2rVWeO3Xz+5q7EWIBQAAcIiJE63bnj2lkiXtrcVuhFgAAAAH2LBBmjfPusTs0KF2V2M/QiwAAIADTJ5s3d52mxQba28teQEhFgAAII/bvVuaPdtaf+ghe2vJKwixAAAAedzEiVJystSsmdSggd3V5A2EWAAAgDzs4EHpjTes9UcftbeWvIQQCwAAkIe9+KJ0+rRUv77UvLnd1eQdhFgAAIA86tgx6dVXrfVHH5VcLlvLyVMIsQAAAHnUK69I8fFSjRrSLbfYXU3eQogFAADIg06etIYSSNKoUdb8sMhAcwAAAORB06dLR45IcXFS5852V5P3EGIBAADymMREadIka33kSCkoyN568iJCLAAAQB4zc6a0b59Uvrx03312V5M3EWIBAADykJQUacIEa334cCkkxN568ipCLAAAQB7ywQfS9u1SdLTUu7fd1eRdhFgAAIA8IjVVGj/eWv/vf6WICHvrycsIsQAAAHnEhx9KmzZJxYtL/fvbXU3eRogFAADIA1JSpCeftNYfekiKjLS3nryOEAsAAJAHzJ4t/fWXVKKENGCA3dXkfYRYAAAAm6WkSE89Za0PHy4VKWJvPU5AiAUAALDZe+9JW7ZIJUsyFja7CLEAAAA2Sk7OGAv78MNS4cL21uMUhFgAAAAbvfuuNS9sqVJSv352V+MchFgAAACbJCVJ48ZZ6w8/LBUqZG89TkKIBQAAsMnMmdKOHVKZMtIDD9hdjbMQYgEAAGyQlCQ9/bS1PnIkV+fKKUIsAACADd58U/rnH6lsWalvX7urcR5CLAAAgJ+dOpUxL+yjj0rh4fbW40SEWAAAAD976SVp/34pNlbq08fuapyJEAsAAOBHR45IEyZY6089JYWE2FuPUxFiAQAA/OjZZ6X4eKlmTalrV7urcS5CLAAAgJ/s3i1NmWKtP/OMFEASu2g0HQAAgJ+MHSslJko33CC1aWN3Nc7mmBD7zDPPqH79+ipSpIhKlSqlDh06aPPmzXaXBQAAkC2bNklvv22tP/OM5HLZW4/TOSbELlmyRP3799fPP/+sBQsWKDk5Wa1atdKpU6fsLg0AAOCCHntMSkuTbr1VatzY7mqcL8juArJr3rx5me7PnDlTpUqV0po1a3TDDTfYVBUAAMCFrVolffaZ1fs6frzd1eQPjgmx5zp+/LgkqXjx4l73SUxMVGJiovt+fHy8JCk5OVnJycm+LfD/j3P2LSy0i3e0jWe0i3e0jWe0i3e0jWe+bBdjpIcfDpQUoHvuSdMVV6TKSc3v789Mdo/jMsYYH9eS69LS0nTrrbfq2LFj+vHHH73uN2bMGI0dOzbL9tmzZyuCCxQDAAA/WL26lMaNa6SgoFS9+uoilS592u6S8rSEhATdddddOn78uCIjI73u58gQ269fP3377bf68ccfVb58ea/7eeqJrVChgg4fPnzeRsktycnJWrBggVq2bKng4GCfH88paBfvaBvPaBfvaBvPaBfvaBvPfNUuyclSnTpB2rzZpaFDU/Xss2m59tr+4u/PTHx8vEqWLHnBEOu44QQDBgzQ119/raVLl543wEpSaGioQkNDs2wPDg726zeuv4/nFLSLd7SNZ7SLd7SNZ7SLd7SNZ7ndLm+8IW3eLJUoIT3+eKCCgwNz7bX9zV+fmewewzEh1hijgQMH6osvvtDixYsVExNjd0kAAABeHTsmjR5trY8dKxUtamc1+Y9jQmz//v01e/ZszZkzR0WKFNH+/fslSVFRUQoPD7e5OgAAgMzGj5cOH5aqVZP69rW7mvzHMfPETp06VcePH1ezZs1UtmxZ9/LRRx/ZXRoAAEAm27ZJL71krU+aJDFyI/c5pifWgeefAQCAAmrkSCkpSWrRQmrb1u5q8ifH9MQCAAA4wU8/SZ98Yl3YYPJkLi/rK4RYAACAXJKWJg0daq336iVdc4299eRnhFgAAIBc8uGH0i+/SIUKSU89ZXc1+RshFgAAIBecPCmNGGGtjxwplSljbz35HSEWAAAgFzz9tLRnjxQTIw0bZnc1+R8hFgAA4BL99Zd1EpckvfiixBT2vkeIBQAAuATGSIMGScnJ0k03SbfcYndFBQMhFgAA4BLMmSN9950UEmJd4IAptfyDEAsAAHCRTp+Whgyx1h96SLr8clvLKVAIsQAAABfp2WelnTulChWkUaPsrqZgIcQCAABchG3bpAkTrPXnn7fmhoX/EGIBAAAuwn//KyUmSs2bS7fdZnc1BQ8hFgAAIIfmzpX+9z8pKEiaMoWTuexAiAUAAMiBkyelBx+01v/7X+nKK+2tp6AixAIAAOTAE09I//wjVaokjR5tdzUFFyEWAAAgm9asseaClaSpUzmZy06EWAAAgGxISZH69pXS0qSuXa2rc8E+hFgAAIBsePllae1aqWhR6cUX7a4GhFgAAIAL2LlTevxxa33iRKl0aXvrASEWAADgvIyR+veXEhKkJk2knj3trggSIRYAAOC8PvnEmhc2JER6/XUpgPSUJ/BlAAAA8OLff6VBg6z1Rx5hTti8hBALAADgxaBB0oEDUrVqVohF3kGIBQAA8ODLL6X337eGD7zzjhQaandFOBshFgAA4ByHD0v332+tjxghNWhgbz3IihALAABwjoEDpYMHpauuksaMsbsaeEKIBQAAOMtnn0kffigFBkozZzKMIK8KsrsAAAAAW6WmyrVkiS5bulTHkwupf78bJQXq4Yel+vXtLg7eEGIBAEDB9fnn0uDBCtq9W/UkSc9rlcprcoWX9MQTnWwuDufDcAIAAFAwff65dPvt0u7dmTZfpj16YdftCp37uU2FITsIsQAAoOBJTZUGD7auKXuOABm5XJKGDLH2Q55EiAUAAAXPsmVZemAzMUbatcvaD3kSIRYAABQ8+/bl7n7wO0IsAAAoeMqWzd394HeEWAAAUPA0aaK0y8orTS7Pj7tcUoUKUpMm/q0L2UaIBQAABU9goKZf9ZIkZQ2yrv+//+KL1hUPkCcRYgEAQIHz5ZdSvwWd1FmfKin6sswPli8vffqp1Il5YvMyQiwAAChQ9uyReve21quM6KSwfTuUsmCBVg8dqpQFC6Tt2wmwDsAVuwAAQIGRkiLdead05IhUp4701FOSAgNlmjbVnlOnVLNpU4YQOAQ9sQAAoMB4/HFr6tciRaSPPpJCQuyuCBeLEAsAAAqEb76Rnn3WWn/rLalKFXvrwaUhxAIAgHxv1y7p3nut9f79pc6d7a0Hl44QCwAA8rXkZOmOO6R//5Xq1pUmT7a7IuQGQiwAAMjXHn5YWrFCioqSPv5YCg21uyLkBkIsAADIt2bPll54wVqfMUOKjbW3HuQeQiwAAMiXfvstYz7YkSOljh3trQe5ixALAADynX//tULr6dNSq1bSuHF2V4TcRogFAAD5SmqqdPfd0rZtUuXK1pACrl+Q/xBiAQBAvvLEE9K8eVJ4uPTFF1KJEnZXBF8gxAIAgHxj9mxp/Hhrffp0qVYtW8uBDxFiAQBAvrBypdSzp7U+YoR0zz321gPfIsQCAADH27VLat9eSkyUbrklozcW+RchFgAAONqpU9Ktt0oHDkhXXy29/z4nchUEhFgAAOBYaWnSvfdK69dLpUpJX30lFSlid1XwhyC7CwAAAMi21FRp2TJp3z6pbFk99EUTffFFoEJCrJkIKlWyu0D4CyEWAAA4w+efS4MHS7t3uzf9V+W1Qy+pyzud1LixjbXB7wixAAAg7/v8c+n22yVjMm2+THv0mW6XK+RTSZ3sqQ22YEwsAADI21JTrR7YcwKsJAXISC5JQ4ZY+6HAIMQCAIC86/RpqWPHTEMIzuUyxppja9kyPxYGuzkuxL766quqXLmywsLC1LBhQ/3yyy92lwQAAHyhQwcpIsKaciA79u3zaTnIWxwVYj/66CMNHTpUo0eP1tq1a1WzZk21bt1aBw8etLs0AACQmzp0kObMydlzypb1SSnImxwVYp9//nn16dNHPXr00FVXXaVp06YpIiJCb7/9tt2lAQCA3HL6dM4CrMslVaggNWniu5qQ5zhmdoKkpCStWbNGjzzyiHtbQECAWrRooRUrVnh8TmJiohITE9334+PjJUnJyclKTk72bcH/f5yzb2GhXbyjbTyjXbyjbTyjXbxzQtsEDB2q7F5wK/1Ur9RJk2TS0qyrH1wEJ7SLXfzdNtk9jssYD6f65UF79+7VZZddpuXLl6tRo0bu7SNGjNCSJUu0cuXKLM8ZM2aMxo4dm2V7nTp1FMj16AAAyJNe2rxZjf6/4+lCjgUGanzlylpcvLiPq4K/pKamau3atTp+/LgiIyO97ueYntiL8cgjj2jo0KHu+/Hx8apQoYLmz59/3kbJLcnJyVqwYIFatmyp4OBgnx/PKWgX72gbz2gX72gbz2gX75zQNgGDBknTpmVr38LffKOnb7zxko/phHaxi7/bJj4+XiVLlrzgfo4JsSVLllRgYKAOHDiQafuBAwdUpkwZj88JDQ1VaGholu3BwcF+/YD6+3hOQbt4R9t4Rrt4R9t4Rrt4l5fbJunZ5xXw/yHWdb4dy5VTUPPmUi7+dzUvt4vd/NU22T2GY07sCgkJUd26dbVo0SL3trS0NC1atCjT8AIAAOBcyclSl27h+lLtJWWMefVoypRcDbBwFseEWEkaOnSo3njjDb3zzjvauHGj+vXrp1OnTqlHjx52lwYAAC5RYqJ0xx3WxAR3hn6pQ43ae+6JDQuTPvtM6sRlZgsyxwwnkKQ77rhDhw4d0hNPPKH9+/erVq1amjdvnkqXLm13aQAA4BKcPm1l0nnzpJAQ6YsvpFI3fWk9MHSotHq1VLSotd6qFT2wcFaIlaQBAwZowIABdpcBAAByycmT0q23Sj/8IIWHWz2xLVv+/4Ph4dLUqbbWh7zJcSEWAADkH8ePS23bSsuXS4ULS998wzULkD2EWAAAYIsDB6wAu3atNVLgu++kBg3srgpOQYgFAAB+t3Wr1Lq1dVuypLRggVSrlt1VwUkcNTsBAABwvrVrpcaNrQBbubL0008EWOQcIRYAAPjNokVS06bSwYNSzZrWWNgrrrC7KjgRIRYAAPjFu+9KN91kzUbQrJm0ZIlUtqzdVcGpCLEAAMCn0tKkRx+VunWzrsjVubM1H2xUlN2VwckIsQAAwGcSEqyrcI0fb90fNUr68EMpNNTeuuB8zE4AAAB8Yt8+qX17adUqKThYeuMNqzcWyA2EWAAAkOuWL5duv90KssWLW5eRveEGu6tCfsJwAgAAkGuMkaZNs07c2rdPql5dWrmSAIvcR4gFAAC54swZqXdvqV8/6wSu22+Xfv5ZqlLF7sqQHxFiAQDAJduyRbruOuntt6WAAGnCBOnjj6XChe2uDPkVY2IBXDRjrPke9++3lgMHpEOHpPh4azlxImM9MdHqmUlJybhNTZUCA6WgIOukj/Tb0FApMlIqUsS6LVQoQDt3VtbRoy6VLCmVKiWVLm0tYWF2twKADz+U+va1vudLlJA++EBq2dLuqpDfEWIBnNeJE1YPy9at0rZt1rJ1q7R9uzXeLSHBH1UESqqp6dOzPhIZmRFoy5SRKlWylsqVM9aZixLwjYQEacgQa9YBSWrSRJo9Wypf3tayUEAQYgFIsiYj//tv6bffrGXDBut2+/YLP7dwYStAlikjRUdbwfLspUgRKTzc6mk9u9c1MNDqjT27dzY52RpXl96Le+KEdOxYmv76a78KFy6jY8cCdOCA1eublJTR0/v3397rK1rUCrVXXGEtVatayxVXEHCBi7VunXTPPdKff0oul/TYY9ITT1jf24A/8FEDCqjjx60zhlessKbC+flnKwx6Eh0txcVZS2xsxnLZZVYPqK/HvCUnp+qbb1apbdu2Cg62hvIbY72H9EB74IC0d6+0c6e17Nhh3R45Ih07Jq1fby3nKl3aCrQ1akjXXGMtNWpYwRtAVikp1njXMWOs9dKlpfffl5o3t7syFDSEWKCASEiQli2TvvtOWrhQ+v13KwieLTxcuvpqK8idfVuihD01n4/LZfWwFi1qhVBvTp6U/vnHGgbx11/S5s0Zt/v2ZQTgpUszPy82NqMNrrlGqlXLCvEulw/fFJDHbdki3Xuv9UevJN12mzWdVsmS9taFgokQC+RTxkh//CF9+600f74VYBMTM+8TGys1aiQ1bmzdXn11/vtXYOHC0lVXWcu50ochbNyYMXzit9+sHt308b9z5mTsX7SoVK+etdSvb91WqECwRf6XkiK9/LL0+OPWH8SRkdIrr1jDCfj8wy45/nW1ceNGffjhh1q2bJl27typhIQERUdHq3bt2mrdurVuu+02hXJBZMAWxkhr10qffWYtf/2V+fHy5aXWra2zhps2tcawFmSRkVLdutZytiNHMkLthg3Sr79a68eOWb3YCxdm7FuqVOZQ27ChNfwCyC9+/dWa+3X1auv+f/4jzZghVaxob11AtkPs2rVrNWLECP3444+67rrr1LBhQ3Xs2FHh4eH6999/9fvvv+vRRx/VwIEDNWLECA0ZMoQwC/iBMdYJFrNnW8F1x46Mx0JDrXFqrVtLrVpZ/3an1+TCSpSwrjbUrFnGtuRkawjG6tXWdeBXr7YC7sGD0jffWEu6yy+3erfTl6uusubNBJzk9Gnpqaek556zTsCMipImT5Z69uTnCPKGbIfY2267TcOHD9enn36qokWLet1vxYoVeumllzR58mSNGjUqN2oE4MGhQ9J771k9Ihs2ZGyPiJDatrXGqrVrxwlKuSU4WKpd21r69LG2nT5t9dCmh9pffrGGJvz9t7W88461X1RUxrCNxo2lBg34uiDvMkb68kvpv/+1To6UrJ8nU6ZIZcvaWhqQSbZD7F9//aXg4OAL7teoUSM1atRIycnJl1QYgKxSU60ev7fflr7+2hqnJlk9ru3bS3fcIbVpYwVZ+F54uDV8oGHDjG1Hj1qzPvz0kzXrw8qV1iwK8+ZZi2T1yl5zjXT99db15G+4wTrDG7Db5s3SoEHWOHrJGvP90ktSx4721gV4ku0Qm50AK0kJCQmKiIjI9v4ALuz4cemtt6yekLOHC9SrJ/XoId15p1SsmG3l4SzFill/SLRpY91PSbF6ytND7fLlVu9W+pRfr7xi7Ve1qhVmmza1FiaLhz8dOSKNH2/9jElOlkJCpOHDpUcekQoVsrs6wLOLOg+5efPmevfdd3XZZZdl2v7LL7/onnvu0V/nnk0C4KL8/bd1RvCMGdKpU9a24sWl7t2t8Fqjhq3lIRuCgjKGIQwYYG3bs8cKs8uWWVN7/fab1QO2eXPGlY9iYqwwmx5sY2IYh4jcd/q0FVzHj7f+WJakm2+WXnhBqlLF3tqAC7moEBsWFqZrrrlGr732mu644w6lpaXpySef1Pjx4/Xggw/mdo1AgfPLLy5NmCB99VXGtquukgYPtqa0YbiAs112mdS5s7VI0r//Wj21S5ZYy9q11pXStm+XZs7MeM7ZoZaT9HApUlNdeucdl558Utq1y9p2zTXWSVytW9tbG5BdFxVi586dq1dffVU9e/bUnDlztGPHDu3cuVNff/21WrVqlds1AgXGsmUujR7dSL/+mvGt2a6ddW3y5s0JLflV8eLSLbdYi2Rdavenn6xe2iVLrBPH9uyxZqCYPdvap1QpK9Bef32ApEilpdlWPhwkJUV6912XHnvsP9q/3/o5U6GCNG6cdPfd1qWgAae46GnN+/fvr927d2vChAkKCgrS4sWL1bhx49ysDSgwfvxRevRRaenSIEmlFBhodO+9Lo0cef6rUSF/KlIk87jahATrCknpofbnn62pvT79VPr000BJN2rsWKMmTTJOFKtdO/9duAIXLynJ+gNo3Dhp69YgSYVVsqTRiBEuDRhgnaQIOM1F/Yg7evSoevfurUWLFun111/XkiVL1KpVKz333HMMJwBy4LffpFGjpLlzrfshIUb/+c8OvfxyeV1+OSdHwhIRYU0w/5//WPcTE63eWWv4QZqWLUvT0aNB+t//pP/9z9qncGHpuusyQm39+tYsFihYjh+XXn/dmmFg715rW8mSRu3a/akXX7xCRYvycwbOdVEhtkaNGoqJidG6desUExOjPn366KOPPtKDDz6ouXPnam76b2QAHu3cafW8zp5tzckYGCj16iWNHJmi3377TZUrc2o6vAsNtabnuv56acSIVH311bcqU6atli8P0tKl1gljx45J331nLZIUFiZde21GqG3UiLHV+dnWrdJrr1knCp44YW0rW9aa+7VPnxQtWbJFhQpdYW+RwCW6qBD7wAMP6NFHH1XAWZegueOOO3TdddepR48euVYckN+cOmWdOPHcc9KZM9a2O+6wropz+eXW1Da//WZvjXCewECj+vWNGjeWHnrImk/499+t4QfpQxAOHZIWL7YWyRpqUL9+xolijRtbF2WAc6WkWCeDTpuWMc+rJFWvbn0u7rrLmjqLadyRX1xUiH388cc9bi9fvrwWLFhwSQUB+ZEx0gcfSCNGWCfoSNYlTSdPlurUsbU05EOBgVLNmtYycKD1+du8OSPQLllifQ5XrLCWCROsCzDUqpW5p7ZMGbvfCbLjn3+seaTffDNjyIDLZc0yMHCgdNNNnBSK/CnbIfaff/5RxYoVs/3Ce/bsyTKPLFAQbdwoPfCAFSAkqXJlK7x27MgvFviHyyVVq2YtfftaoXbHDivMpvfWbt1qTe21dq304ovW8ypXtsJs+lKzpnX5XdjvyBHrxL7ZszN+tkhSdLQ1NKlPHyk21r76AH/IdoitX7++OnTooN69e6t+/foe9zl+/Lg+/vhjvfTSS+rbt68GDRqUa4UCTnPmjDWB+LPPWv++i4iwxsEOHWqNTwTs4nJZF0+IibEunCFZPbPpgfbHH6U//rCC7o4d1n8RJOsM9nr1MkLttdfSW+tP8fHWSaCzZ1uXME6/7LRk/WfngQesP45DQmwrEfCrbIfYjRs3aty4cWrZsqXCwsJUt25dlStXTmFhYTp69Kj+/PNP/fHHH6pTp46ee+45tW3b1pd1A3na999L998vbdli3b/5ZuvyopUq2VsX4M1ll1mXL77zTuv+8ePSL79kDDn4+WfrZLFly6wlXeXK1tjaOnWkunWt2xIl7HgH+dP27dY416+/tsYznz2etXZta5zrHXdYc70CBU22Q+zu3bs1ceJEPf300/rmm2+0bNky7dy5U6dPn1bJkiV19913q3Xr1qrBdTBRgJ08aY17nTrVul+unHXZ2E6dGDoAZ4mKklq2tBZJSkuT/vorI9SuWJG5t/aTTzKeW6mSFWjTQ23duta/uXFh6Re6+OEHK7j++Wfmx6+4wgqtd94pXXmlPTUCeUW2Q2zt2rW1f/9+RUdHa/jw4Vq1apVK8Oc24LZ0qdSjh7Rtm3W/Xz/pmWc44xv5Q0BAxrja9Elojh+XVq+W1qyxlrVrrf8+7NxpLZ9/nvH88uWlGjWspXp1a7nqKqlQIXveT14RHy8tX54xc8Tq1dbsEukCA6UmTaz/5txyixViAViyHWKLFi2qbdu2KTo6Wjt27FAa1zgEJFljX0eNsk6GMUaqWFF6+23rMrFAfhYVZX3Oz/6sHzsmrV+fEWrXrLF6cHfvtpZ58zK/RuXKGcG2WjWpShVrKV06//334sSJjDZJD/9//ZV1v8qVrTGurVpZV20rVszflQLOkO0Qe9ttt6lp06YqW7asXC6X6tWrp0AvF1nelt4VBeRzf/5p/VsvfW7X3r2tmQciI+2tC7BL0aJWAGvWLGPbiRPW98gff1jz1/7xh7UcOJAxHOHrrzO/TqFCVpiNi7NuY2Ks3twKFazb4sXzZshNS5P277fC6aZNmZedOz0/JzbWmqu3WTPrlrHzQPZkO8ROnz5dnTp10pYtWzRo0CD16dNHRYoU8WVtQJ5ljHUlnCFDpNOnrfF+M2dKnM8IZFWkiHUJ3Ouuy7z98OGMQPvHH1bw27LFmvf01Cnp11+txZOwMCvMli9vXYmqRAmpZEnrtkQJqWhRl7ZujdK2bVaPcUSENbtCTqcIS0uz/tuSkCD9+681tVX67ZEjVmDdtStj2bMn86wB56pQwZrhoW7djNuSJXNWEwBLji520KZNG0nSmjVrNHjwYEIsCqRjx6we188+s+63aiW98w5TDQE5VbKk1fPYtGnm7YmJVu/sli0Zy86dGUMSDh2ygmX6Y54FSWqmYcPO2RpkBdqICGsqKk+9uUlJ1h+np09bteRUQIDVc5w+hvjshcAK5J6LumLXjBkzcrsOwBF+/dWaaWDbNqtHZ/x4a97Xs67ADOAShYZKVataiydnzlhXptq92+r9PHjQ6tU9ciTj9tAho717E3XmTKhOn85Iqikp1slU8fE5r6tIkYye3hIlrCENpUpZvatnL2XLWmEZgG/xbQZk07vvWnO/njljnXjx8cfW/JgA/CsszBpHer4rUiUnp+ibb75T27ZtFRQUrMREa0hA+uKtl9UYq4c2PDzrQjAF8ha+JYELSEy0xr5Om2bdb9NGev99qxcGQN7nclnBNyyM71sgP+GfoMB5HDgg3XijFWBdLmnMGOuyj/wiBADAXvTEAl6sXy/deqs15q5oUet65TfdZHdVAABAoicW8Ojzz63pgHbtsq6Qs3IlARYAgLyEEAucxRhrxoHbbrNO/mjVSvr5Zy71CABAXkOIBf5fSoo1+8Cjj1r3Bw2yxr9yyUcAAPIexsQCsq4OdMcdVmh1uaQpU6T+/e2uCgAAeEOIRYF38KB0883SqlXWFDwffCB16GB3VQAA4HwIsSjQtm+XWraUtm61rsDz1VdSo0Z2VwUAAC6EEIsC688/rQC7d691nfN58ziBCwAAp+DELhRIa9ZIN9xgBdjq1aUffyTAAgDgJIRYFDjLlkn/+Y905IhUr560ZIlUrpzdVQEAgJwgxKJAWbhQat1aio+XmjaVFi2yxsICAABnIcSiwJg/X7rlFun0aaltW+nbb6XISLurAgAAF4MQiwJh/nypfXvpzBkryH7xhRQebndVAADgYhFike/Nny/deqsVYG+9Vfr0UykkxO6qAADApXBEiN2xY4d69eqlmJgYhYeHKy4uTqNHj1ZSUpLdpSGPW7DACq6JiVZP7CefEGABAMgPHDFP7KZNm5SWlqbXX39dVapU0e+//64+ffro1KlTmjRpkt3lIY/68UcruKYH2I8/JsACAJBfOCLEtmnTRm3atHHfj42N1ebNmzV16lRCLDxas0Zq1846ieummwiwAADkN44IsZ4cP35cxYsXP+8+iYmJSkxMdN+Pj4+XJCUnJys5Odmn9aUf5+xbWHzdLn/+KbVuHaT4eJduuCFNH36YKpdLcsKXgc+MZ7SLd7SNZ7SLd7SNZ7SLd/5um+wex2WMMT6uJddt2bJFdevW1aRJk9SnTx+v+40ZM0Zjx47Nsn327NmKiIjwZYmwyb59ERo1qomOHg3T5Zcf1dixyxURkWJ3WQAAIJsSEhJ011136fjx44o8z1yYtobYkSNHasKECefdZ+PGjapWrZr7/p49e9S0aVM1a9ZMb7755nmf66kntkKFCjp8+PB5GyW3JCcna8GCBWrZsqWCg4N9fjyn8FW77N8vNW0apO3bXape3WjhwhTHXciAz4xntIt3tI1ntIt3tI1ntIt3/m6b+Ph4lSxZ8oIh1tbhBMOGDVP37t3Pu09sbKx7fe/evbrxxhvVuHFjTZ8+/YKvHxoaqtDQ0Czbg4OD/foB9ffxnCI32+XECevkre3bpdhYacECl8qUcW6b85nxjHbxjrbxjHbxjrbxjHbxzl9tk91j2Bpio6OjFR0dna199+zZoxtvvFF169bVjBkzFBDgiNnB4AdJSVKnTtK6dVJ0tPTdd1LZsnZXBQAAfMkRJ3bt2bNHzZo1U6VKlTRp0iQdOnTI/ViZMmVsrAx2S0uTevaUFi6UChWS5s6VqlSxuyoAAOBrjgixCxYs0JYtW7RlyxaVL18+02MOPC8NuWjkSOn996WgIOtKXPXr210RAADwB0f8T7579+4yxnhcUHBNmyZNnGitv/WWdNZUwgAAIJ9zRIgFzjV/vjRggLX+1FPSfffZWw8AAPAvQiwc588/pc6dpdRUK7w++qjdFQEAAH8jxMJRDh2Sbr5Zio+XmjSRpk+XXC67qwIAAP5GiIVjnDkjdehgzQUbFyd9/rnkYRpgAABQABBi4QjGSP37S8uXS0WLWlNplSxpd1UAAMAuhFg4wtSp0ttvSwEB0scfS1Wr2l0RAACwEyEWed6yZdLgwdb6hAlSy5b21gMAAOxHiEWetnu3dPvtUkqK1LWrNGyY3RUBAIC8gBCLPOvMGem226SDB6VrrpHefJOZCAAAgIUQizwp/USuX36RiheXvvxSKlTI7qoAAEBeQYhFnjRtWsaJXB9+KMXE2F0RAADISwixyHNWrco4kevZZzmRCwAAZEWIRZ5y7JjUpYuUnGyNh33oIbsrAgAAeREhFnmGMVKvXtKOHdbwgbfe4kQuAADgGSEWecYrr1iXkg0Oti5oEBVld0UAACCvIsQiT1izJmPowKRJUr169tYDAADyNkIsbHf8uDUONilJ6thRGjjQ7ooAAEBeR4iFrYyReveWtm2TKldmHCwAAMgeQixsNW2a9Omn1jjYjz6SihWzuyIAAOAEhFjYZtMmaehQa33CBKlBA3vrAQAAzkGIhS2Sk13q1i1IZ85IrVplXNwAAAAgOwixsMVHH1XTunUuFS8uzZhhXV4WAAAgu4gO8LuffnLp888vlyRNny6VK2dzQQAAwHEIsfCr+HipR49ApaW5dN99abrtNrsrAgAATkSIhV8NGiTt2OFS6dKn9PzzqXaXAwAAHIoQC7/59FPpnXekgACjIUPWKjLS7ooAAIBTEWLhF3v3Svffb62PGJGmK6/8196CAACAoxFi4XPGSA88IP37r1S3rvT442l2lwQAAByOEAuf++AD6auvrKtyzZxp3QIAAFwKQix86sABaeBAa/2JJ6QaNeytBwAA5A+EWPhU//7WMIJataSHH7a7GgAAkF8QYuEzn3wiffaZFBRkXZWLYQQAACC3EGLhE4cOWb2wkvTII1ZPLAAAQG4hxMInBg+2gmyNGtJjj9ldDQAAyG8Isch1c+ZYMxIEBFjDCEJC7K4IAADkN4RY5Krjx6V+/az14cOlevXsrQcAAORPhFjkqkcflfbtky6/XBozxu5qAABAfkWIRa755Rfptdes9WnTpLAwe+sBAAD5FyEWuSIlRbr/fusSs/fcI/3nP3ZXBAAA8jNCLHLFlCnS+vVSsWLS5Ml2VwMAAPI7Qiwu2a5d0uOPW+vPPSeVKmVvPQAAIP8jxOKSDRoknTolXXed1LOn3dUAAICCgBCLS/K//0lffmldWvb11625YQEAAHyNyIGLdvKkNGCAtf7QQ1L16vbWAwAACg5CLC7ak09a42FjYjLGxAIAAPgDIRYXZfNm6cUXrfUpU6SICFvLAQAABQwhFjlmjDRkiJScLN18s9Sund0VAQCAgoYQixz7+mtp3jwpJER64QW7qwEAAAURIRY5cuaM1QsrSUOHSlWq2FoOAAAooAixyJEXXpC2bZPKlZMefdTuagAAQEFFiEW27d4tjRtnrT/3nFS4sL31AACAgosQi2x7+GEpIUFq3Fi66y67qwEAAAUZIRbZsmyZNHu25HJZU2q5XHZXBAAACjJCLC4oNVUaONBa79NHqlPH3noAAAAIsbigmTOlX3+VihbNGBMLAABgJ0IszuvkSemxx6z1J56QoqPtrQcAAEAixOICJk2S9u+XYmOlBx+0uxoAAAALIRZe7d0rTZxorT/7rBQaam89AAAA6Qix8OqJJ6wpta69Vrr9drurAQAAyOC4EJuYmKhatWrJ5XJp/fr1dpeTb/32m/T229b65MlMqQUAAPIWx4XYESNGqFy5cnaXke+NGCEZY/XANm5sdzUAAACZOSrEfvvtt5o/f74mTZpkdyn52nffWUtwsPTMM3ZXAwAAkFWQ3QVk14EDB9SnTx99+eWXioiIyNZzEhMTlZiY6L4fHx8vSUpOTlZycrJP6jxb+jH8cazckpoqPfRQkCSX+vVLVaVKacrt8p3YLv5C23hGu3hH23hGu3hH23hGu3jn77bJ7nFcxhjj41oumTFGbdu21XXXXafHHntMO3bsUExMjNatW6datWp5fd6YMWM0duzYLNtnz56d7SBc0CxcWFGvvFJbhQolaerUhYqM5JsZAAD4T0JCgu666y4dP35ckZGRXvezNcSOHDlSEyZMOO8+Gzdu1Pz58/Xxxx9ryZIlCgwMzHaI9dQTW6FCBR0+fPi8jZJbkpOTtWDBArVs2VLBwcE+P96lOn1auvLKIO3d69KECan673/TfHIcp7WLP9E2ntEu3tE2ntEu3tE2ntEu3vm7beLj41WyZMkLhlhbhxMMGzZM3bt3P+8+sbGx+v7777VixQqFnjNRab169XT33XfrnXfe8fjc0NDQLM+RpODgYL9+QP19vIv10kvW3LAVK0qDBwcqODjQp8dzSrvYgbbxjHbxjrbxjHbxjrbxjHbxzl9tk91j2Bpio6OjFZ2N65i+/PLLGjdunPv+3r171bp1a3300Udq2LChL0ssMOLjM07iGjOGCxsAAIC8zREndlWsWDHT/cKFC0uS4uLiVL58eTtKyncmT5b+/VeqVk269167qwEAADg/R02xBd84dEh6/nlr/amnpCBH/GkDAAAKMkfGlcqVK8sBkyo4xjPPSCdPSnXrSrfdZnc1AAAAF0ZPbAG3a5f02mvW+tNPc3lZAADgDITYAu7JJ6XERKlpU6lVK7urAQAAyB5CbAH211/SjBnW+vjx9MICAADnIMQWYE88YV1m9uabpcaN7a4GAAAg+wixBdT69dJHH1nrZ03BCwAA4AiE2AJq9GjrtmtXqWZNe2sBAADIKUJsAbR2rfS//0kBARlhFgAAwEkIsQXQk09at3feaV2hCwAAwGkIsQXMunXSnDnWTASPPWZ3NQAAABeHEFvA0AsLAADyA0JsAbJunfTll/TCAgAA5yPEFiDpvbBdu0pXXmlvLQAAAJeCEFtArF+f0Qv7+ON2VwMAAHBpCLEFRHov7B130AsLAACcjxBbAPz6q/TFF/TCAgCA/IMQWwCk98J26SJddZW9tQAAAOQGQmw+t2GD9Pnn9MICAID8hRCbzz37rHV7221S9er21gIAAJBbCLH52LZt0ocfWuujRtlbCwAAQG4ixOZjEydKaWlS69ZS7dp2VwMAAJB7CLH51L590ttvW+v0wgIAgPyGEJtPvfCClJQkNW4sNWlidzUAAAC5ixCbDx09Kk2daq0/8og1MwEAAEB+QojNh159VTp5UrrmGqldO7urAQAAyH2E2Hzm1CnpxRet9ZEj6YUFAAD5EyE2n3nzTenIESk2Vurc2e5qAAAAfIMQm48kJUmTJlnrDz8sBQXZWw8AAICvEGLzkfffl3bvlsqWlbp1s7saAAAA3yHE5hNpadKECdb60KFSaKi99QAAAPgSITafmDtX2rxZioqS7r/f7moAAAB8ixCbT0yebN3ef79UpIi9tQAAAPgaITYfWL1aWrLEOpFr4EC7qwEAAPA9Qmw+kN4L27WrVL68vbUAAAD4AyHW4f75R/rkE2t92DB7awEAAPAXQqzDvfSSlJoqNW8u1apldzUAAAD+QYh1sOPHpTfesNbphQUAAAUJIdbB3nhDOnFCuuoqqU0bu6sBAADwH0KsQyUnW0MJJKsX1uWytx4AAAB/IsQ61McfW5eYLV1auvtuu6sBAADwL0KsAxmTMa3WwIFcYhYAABQ8hFgHWrxYWrdOCg+XHnjA7moAAAD8jxDrQC++aN326CGVKGFrKQAAALYgxDrMtm3SV19Z64MG2VsLAACAXQixDvPqq9aY2NatpapV7a4GAADAHoRYBzl5UnrrLWudXlgAAFCQEWIdZNYs6ypdVapwcQMAAFCwEWIdwhjp5Zet9YEDpQC+cgAAoAAjCjnEwoXSpk1S4cJS9+52VwMAAGAvQqxDpPfC9ughRUbaWwsAAIDdCLEOsGWLNHeutT5ggL21AAAA5AWEWAdIn1brppukK66wuxoAAAD7EWLzuBMnpLffttaZVgsAAMBCiM3j3n1Xio+3emBbtbK7GgAAgLyBEJuHpaVJU6ZY60yrBQAAkIFYlId9/720ebNUpIjUrZvd1QAAAOQdhNg8bOpU6/a++6wgCwAAAAshNo/as0eaM8daf+ABe2sBAADIawixedSbb0qpqdL110s1athdDQAAQN5CiM2DUlKkN96w1vv1s7cWAACAvMhRIXbu3Llq2LChwsPDVaxYMXXo0MHuknziq6+s4QTR0dJtt9ldDQAAQN4TZHcB2fXZZ5+pT58+Gj9+vP7zn/8oJSVFv//+u91l+UT6CV09e0qhofbWAgAAkBc5IsSmpKRo8ODBmjhxonr16uXeftVVV9lYlW9s2SItWCC5XNL999tdDQAAQN7kiBC7du1a7dmzRwEBAapdu7b279+vWrVqaeLEiapxnrOeEhMTlZiY6L4fHx8vSUpOTlZycrLP604/Rk6ONXVqgKRAtW6dpvLlU+WHMv3uYtqloKBtPKNdvKNtPKNdvKNtPKNdvPN322T3OC5jjPFxLZfsww8/1J133qmKFSvq+eefV+XKlTV58mTNnz9ff/31l4oXL+7xeWPGjNHYsWOzbJ89e7YiIiJ8XXaOJSUFqFevVjpxIlSjRv2sBg0O2F0SAACAXyUkJOiuu+7S8ePHFRkZ6XU/W0PsyJEjNWHChPPus3HjRq1du1Z33323Xn/9dfXt21eS1ctavnx5jRs3Tvd7+b+7p57YChUq6PDhw+dtlNySnJysBQsWqGXLlgoODr7g/u+951LPnkGqUMHor79SFBjo8xJtkdN2KUhoG89oF+9oG89oF+9oG89oF+/83Tbx8fEqWbLkBUOsrcMJhg0bpu7du593n9jYWO3bt09S5jGwoaGhio2N1T///OP1uaGhoQr1cGZUcHCwXz+g2T1e+rRaffu6FBaW/7+B/P11cBLaxjPaxTvaxjPaxTvaxjPaxTt/tU12j2FriI2OjlZ0dPQF96tbt65CQ0O1efNmXX/99ZKsvwp27NihSpUq+bpMv/j1V2nFCikoSOrd2+5qAAAA8jZHnNgVGRmpBx54QKNHj1aFChVUqVIlTZw4UZLUuXNnm6vLHdOmWbcdO0plythbCwAAQF7niBArSRMnTlRQUJDuvfdenT59Wg0bNtT333+vYsWK2V3aJTt5UnrvPWv9gQfsrQUAAMAJHBNig4ODNWnSJE2aNMnuUnLdJ59YQbZKFenGG+2uBgAAIO9z1GVn86s337Rue/WyLnIAAACA8yPE2uzPP6Xly6XAQKlbN7urAQAAcAZCrM3eesu6vflmqWxZe2sBAABwCkKsjRITpXfesdb79LG3FgAAACchxNpozhzpyBHpssuk1q3trgYAAMA5CLE2Sj+hq0cP6yIHAAAAyB5CrE22b5cWLLDWe/a0txYAAACnIcTaZMYM67ZFCykmxt5aAAAAnIYQa4PUVOntt6313r3trQUAAMCJCLE2mDdP2rNHKlFC6tDB7moAAACchxBrg/QTuu67TwoNtbcWAAAAJyLE+tn+/dJXX1nrvXrZWwsAAIBTEWL97N13rTGx114rVa9udzUAAADORIj1I2OkmTOtdXphAQAALh4h1o9WrZI2bpTCw6XOne2uBgAAwLkIsX70zjvWbadOUlSUvbUAAAA4GSHWT86ckT74wFrv1s3eWgAAAJyOEOsnX30lHT0qlS8v/ec/dlcDAADgbIRYP0k/oeu++6TAQFtLAQAAcDxCrB/s22ddpUtiKAEAAEBuIMT6wQcfBCgtTWrUSLriCrurAQAAcD5CrI8ZI737rtXM3bvbWwsAAEB+QYj1sa1bi+rPP10KC5O6dLG7GgAAgPyBEOtj339fQZLUsaNUtKi9tQAAAOQXhFgfSkyUli4tL4kTugAAAHITIdaH5s516eTJEJUrZ9Sihd3VAAAA5B+EWB9KP6Hr7rvTmBsWAAAgFxFifWT/fum771ySpHvvTbO5GgAAgPyFEOsjp05JHTsaVa9+WNWq2V0NAABA/hJkdwH5VVycNHt2qr7++idJbe0uBwAAIF+hJ9bHAmhhAACAXEfEAgAAgOMQYgEAAOA4hFgAAAA4DiEWAAAAjkOIBQAAgOMQYgEAAOA4hFgAAAA4DiEWAAAAjkOIBQAAgOMQYgEAAOA4hFgAAAA4DiEWAAAAjkOIBQAAgOMQYgEAAOA4hFgAAAA4DiEWAAAAjkOIBQAAgOME2V2APxljJEnx8fF+OV5ycrISEhIUHx+v4OBgvxzTCWgX72gbz2gX72gbz2gX72gbz2gX7/zdNuk5LT23eVOgQuyJEyckSRUqVLC5EgAAAJzPiRMnFBUV5fVxl7lQzM1H0tLStHfvXhUpUkQul8vnx4uPj1eFChW0a9cuRUZG+vx4TkG7eEfbeEa7eEfbeEa7eEfbeEa7eOfvtjHG6MSJEypXrpwCAryPfC1QPbEBAQEqX768348bGRnJN4QHtIt3tI1ntIt3tI1ntIt3tI1ntIt3/myb8/XApuPELgAAADgOIRYAAACOQ4j1odDQUI0ePVqhoaF2l5Kn0C7e0Tae0S7e0Tae0S7e0Tae0S7e5dW2KVAndgEAACB/oCcWAAAAjkOIBQAAgOMQYgEAAOA4hFgAAAA4DiE2F+3YsUO9evVSTEyMwsPDFRcXp9GjRyspKem8zztz5oz69++vEiVKqHDhwrrtttt04MABP1XtH08//bQaN26siIgIFS1aNFvP6d69u1wuV6alTZs2vi3UBhfTNsYYPfHEEypbtqzCw8PVokUL/f33374t1M/+/fdf3X333YqMjFTRokXVq1cvnTx58rzPadasWZbPzAMPPOCnin3n1VdfVeXKlRUWFqaGDRvql19+Oe/+n3zyiapVq6awsDBdffXV+uabb/xUqX/lpF1mzpyZ5bMRFhbmx2r9Y+nSpbrllltUrlw5uVwuffnllxd8zuLFi1WnTh2FhoaqSpUqmjlzps/rtENO22bx4sVZPjMul0v79+/3T8F+8swzz6h+/foqUqSISpUqpQ4dOmjz5s0XfF5e+DlDiM1FmzZtUlpaml5//XX98ccfeuGFFzRt2jSNGjXqvM/773//q6+++kqffPKJlixZor1796pTp05+qto/kpKS1LlzZ/Xr1y9Hz2vTpo327dvnXj744AMfVWifi2mb5557Ti+//LKmTZumlStXqlChQmrdurXOnDnjw0r96+6779Yff/yhBQsW6Ouvv9bSpUvVt2/fCz6vT58+mT4zzz33nB+q9Z2PPvpIQ4cO1ejRo7V27VrVrFlTrVu31sGDBz3uv3z5ct15553q1auX1q1bpw4dOqhDhw76/fff/Vy5b+W0XSTrakNnfzZ27tzpx4r949SpU6pZs6ZeffXVbO2/fft2tWvXTjfeeKPWr1+vIUOGqHfv3vruu+98XKn/5bRt0m3evDnT56ZUqVI+qtAeS5YsUf/+/fXzzz9rwYIFSk5OVqtWrXTq1Cmvz8kzP2cMfOq5554zMTExXh8/duyYCQ4ONp988ol728aNG40ks2LFCn+U6FczZswwUVFR2dq3W7dupn379j6tJy/JbtukpaWZMmXKmIkTJ7q3HTt2zISGhpoPPvjAhxX6z59//mkkmVWrVrm3ffvtt8blcpk9e/Z4fV7Tpk3N4MGD/VCh/zRo0MD079/ffT81NdWUK1fOPPPMMx7379Kli2nXrl2mbQ0bNjT333+/T+v0t5y2S05+9uQXkswXX3xx3n1GjBhhqlevnmnbHXfcYVq3bu3DyuyXnbb54YcfjCRz9OhRv9SUVxw8eNBIMkuWLPG6T175OUNPrI8dP35cxYsX9/r4mjVrlJycrBYtWri3VatWTRUrVtSKFSv8UWKetnjxYpUqVUpVq1ZVv379dOTIEbtLst327du1f//+TJ+ZqKgoNWzYMN98ZlasWKGiRYuqXr167m0tWrRQQECAVq5ced7nvv/++ypZsqRq1KihRx55RAkJCb4u12eSkpK0Zs2aTF/rgIAAtWjRwuvXesWKFZn2l6TWrVvnm8+GdHHtIkknT55UpUqVVKFCBbVv315//PGHP8rN0wrC5+VS1apVS2XLllXLli31008/2V2Ozx0/flySzptd8srnJsivRytgtmzZoilTpmjSpEle99m/f79CQkKyjIUsXbp0vht3k1Nt2rRRp06dFBMTo61bt2rUqFG66aabtGLFCgUGBtpdnm3SPxelS5fOtD0/fWb279+f5V92QUFBKl68+Hnf41133aVKlSqpXLly+u233/Twww9r8+bN+vzzz31dsk8cPnxYqampHr/WmzZt8vic/fv35+vPhnRx7VK1alW9/fbbuuaaa3T8+HFNmjRJjRs31h9//KHy5cv7o+w8ydvnJT4+XqdPn1Z4eLhNldmvbNmymjZtmurVq6fExES9+eabatasmVauXKk6derYXZ5PpKWlaciQIbruuutUo0YNr/vllZ8z9MRmw8iRIz0O7j57OfcH5549e9SmTRt17txZffr0saly37qYdsmJrl276tZbb9XVV1+tDh066Ouvv9aqVau0ePHi3HsTPuLrtnEqX7dL37591bp1a1199dW6++679e677+qLL77Q1q1bc/FdwIkaNWqk++67T7Vq1VLTpk31+eefKzo6Wq+//rrdpSGPqlq1qu6//37VrVtXjRs31ttvv63GjRvrhRdesLs0n+nfv79+//13ffjhh3aXki30xGbDsGHD1L179/PuExsb617fu3evbrzxRjVu3FjTp08/7/PKlCmjpKQkHTt2LFNv7IEDB1SmTJlLKdvnctoulyo2NlYlS5bUli1b1Lx581x7XV/wZdukfy4OHDigsmXLurcfOHBAtWrVuqjX9JfstkuZMmWynKCTkpKif//9N0ffFw0bNpRk/VckLi4ux/XarWTJkgoMDMwyW8n5fj6UKVMmR/s70cW0y7mCg4NVu3ZtbdmyxRclOoa3z0tkZGSB7oX1pkGDBvrxxx/tLsMnBgwY4D6J9kL/ncgrP2cIsdkQHR2t6OjobO27Z88e3Xjjjapbt65mzJihgIDzd3bXrVtXwcHBWrRokW677TZJ1pmQ//zzjxo1anTJtftSTtolN+zevVtHjhzJFNzyKl+2TUxMjMqUKaNFixa5Q2t8fLxWrlyZ49kf/C277dKoUSMdO3ZMa9asUd26dSVJ33//vdLS0tzBNDvWr18vSY74zHgSEhKiunXratGiRerQoYMk6999ixYt0oABAzw+p1GjRlq0aJGGDBni3rZgwYI8//MkJy6mXc6VmpqqDRs2qG3btj6sNO9r1KhRlqmR8tvnJTetX7/esT9PvDHGaODAgfriiy+0ePFixcTEXPA5eebnjF9PI8vndu/ebapUqWKaN29udu/ebfbt2+dezt6natWqZuXKle5tDzzwgKlYsaL5/vvvzerVq02jRo1Mo0aN7HgLPrNz506zbt06M3bsWFO4cGGzbt06s27dOnPixAn3PlWrVjWff/65McaYEydOmIceesisWLHCbN++3SxcuNDUqVPHXH755ebMmTN2vQ2fyGnbGGPMs88+a4oWLWrmzJljfvvtN9O+fXsTExNjTp8+bcdb8Ik2bdqY2rVrm5UrV5off/zRXH755ebOO+90P37u99KWLVvMk08+aVavXm22b99u5syZY2JjY80NN9xg11vIFR9++KEJDQ01M2fONH/++afp27evKVq0qNm/f78xxph7773XjBw50r3/Tz/9ZIKCgsykSZPMxo0bzejRo01wcLDZsGGDXW/BJ3LaLmPHjjXfffed2bp1q1mzZo3p2rWrCQsLM3/88Yddb8EnTpw44f4ZIsk8//zzZt26dWbnzp3GGGNGjhxp7r33Xvf+27ZtMxEREWb48OFm48aN5tVXXzWBgYFm3rx5dr0Fn8lp27zwwgvmyy+/NH///bfZsGGDGTx4sAkICDALFy606y34RL9+/UxUVJRZvHhxptySkJDg3iev/pwhxOaiGTNmGEkel3Tbt283kswPP/zg3nb69Gnz4IMPmmLFipmIiAjTsWPHTME3P+jWrZvHdjm7HSSZGTNmGGOMSUhIMK1atTLR0dEmODjYVKpUyfTp08f9Cyo/yWnbGGNNs/X444+b0qVLm9DQUNO8eXOzefNm/xfvQ0eOHDF33nmnKVy4sImMjDQ9evTIFOzP/V76559/zA033GCKFy9uQkNDTZUqVczw4cPN8ePHbXoHuWfKlCmmYsWKJiQkxDRo0MD8/PPP7seaNm1qunXrlmn/jz/+2FxxxRUmJCTEVK9e3cydO9fPFftHTtplyJAh7n1Lly5t2rZta9auXWtD1b6VPi3UuUt6W3Tr1s00bdo0y3Nq1aplQkJCTGxsbKafNflJTttmwoQJJi4uzoSFhZnixYubZs2ame+//96e4n3IW245+3OQV3/OuIwxxpc9vQAAAEBuY3YCAAAAOA4hFgAAAI5DiAUAAIDjEGIBAADgOIRYAAAAOA4hFgAAAI5DiAUAAIDjEGIBAADgOIRYAAAAOA4hFgAAAI5DiAUAAIDjEGIBwGEOHTqkMmXKaPz48e5ty5cvV0hIiBYtWmRjZQDgPy5jjLG7CABAznzzzTfq0KGDli9frqpVq6pWrVpq3769nn/+ebtLAwC/IMQCgEP1799fCxcuVL169bRhwwatWrVKoaGhdpcFAH5BiAUAhzp9+rRq1KihXbt2ac2aNbr66qvtLgkA/IYxsQDgUFu3btXevXuVlpamHTt22F0OAPgVPbEA4EBJSUlq0KCBatWqpapVq+rFF1/Uhg0bVKpUKbtLAwC/IMQCgAMNHz5cn376qX799VcVLlxYTZs2VVRUlL7++mu7SwMAv2A4AQA4zOLFi/Xiiy9q1qxZioyMVEBAgGbNmqVly5Zp6tSpdpcHAH5BTywAAAAch55YAAAAOA4hFgAAAI5DiAUAAIDjEGIBAADgOIRYAAAAOA4hFgAAAI5DiAUAAIDjEGIBAADgOIRYAAAAOA4hFgAAAI5DiAUAAIDj/B8b7DyxfIn8gQAAAABJRU5ErkJggg==\n" 61 | }, 62 | "metadata": {} 63 | } 64 | ], 65 | "source": [ 66 | "# Import required libraries for plotting\n", 67 | "import matplotlib.pyplot as plt\n", 68 | "import numpy as np\n", 69 | "\n", 70 | "# Define the function and its derivative using lambda functions for simplicity\n", 71 | "# f represents the equation we want to find the root of (x^3 - x - 1 = 0)\n", 72 | "f = lambda x: x**3 - x - 1\n", 73 | "\n", 74 | "# def f(x):\n", 75 | "# return x**3 - x - 1\n", 76 | "\n", 77 | "# f_prime is the derivative of f, used to adjust our guesses in the Newton-Raphson method\n", 78 | "f_prime = lambda x: 3 * x**2 - 1\n", 79 | "\n", 80 | "# def f_prime(x):\n", 81 | "# return 3 * x**2 - 1\n", 82 | "\n", 83 | "# Starting point for our guess of the root, chosen as 1.5\n", 84 | "x0 = 1.5\n", 85 | "\n", 86 | "# Iteration parameters\n", 87 | "# tolerance defines how close we need to get to the actual root before stopping\n", 88 | "tolerance = 1e-20\n", 89 | "\n", 90 | "# max_iterations limits the number of times we'll try to find the root\n", 91 | "max_iterations = 15\n", 92 | "\n", 93 | "# List to store details of each iteration (for demonstration and later display)\n", 94 | "iterations = []\n", 95 | "\n", 96 | "# Newton-Raphson iteration loop\n", 97 | "for i in range(max_iterations):\n", 98 | " # Calculate the next guess using the Newton-Raphson formula:\n", 99 | " # x1 = x0 - f(x0) / f_prime(x0)\n", 100 | " x1 = x0 - f(x0) / f_prime(x0)\n", 101 | "\n", 102 | " # Store the current iteration details: iteration number, current guess, next guess,\n", 103 | " # function value at the current guess, and derivative value at the current guess\n", 104 | " iterations.append((i + 1, x0, x1, f(x0), f_prime(x0)))\n", 105 | "\n", 106 | " # Check if the change between our new guess and the old one is small enough (within tolerance)\n", 107 | " if abs(x1 - x0) < tolerance:\n", 108 | " # If so, we're close enough to the root, so break out of the loop\n", 109 | " break\n", 110 | "\n", 111 | " # Update x0 to be the new guess for the next iteration\n", 112 | " x0 = x1\n", 113 | "\n", 114 | "# Display the results without using pandas, printing each iteration in a readable format\n", 115 | "print(\"Iteration\\t x_n\\t\\t x_(n+1)\\t\\t f(x_n)\\t\\t f'(x_n)\")\n", 116 | "for iteration in iterations:\n", 117 | " print(f\"{iteration[0]}\\t\\t {iteration[1]:.6f}\\t {iteration[2]:.6f}\\t {iteration[3]:.6f}\\t {iteration[4]:.6f}\")\n", 118 | "\n", 119 | "# Generate values for x to plot the function\n", 120 | "x_values = np.linspace(-2, 2, 400)\n", 121 | "y_values = f(x_values)\n", 122 | "\n", 123 | "# Create the plot\n", 124 | "plt.figure(figsize=(8, 6))\n", 125 | "\n", 126 | "# Plot the function f(x)\n", 127 | "plt.plot(x_values, y_values, label=r\"$f(x) = x^3 - x - 1$\", color=\"blue\")\n", 128 | "\n", 129 | "# Highlight the x-axis for reference\n", 130 | "plt.axhline(0, color='black',linewidth=0.5)\n", 131 | "\n", 132 | "# Plot each Newton-Raphson iteration as a point\n", 133 | "for iteration in iterations:\n", 134 | " x_n = iteration[1]\n", 135 | " plt.plot(x_n, f(x_n), 'ro') # Red point for each guess\n", 136 | "\n", 137 | "# # Draw arrows to indicate the steps from one guess to the next\n", 138 | "# for i in range(len(iterations) - 1):\n", 139 | "# x_n = iterations[i][1]\n", 140 | "# x_next = iterations[i][2]\n", 141 | "# plt.annotate('', xy=(x_next, 0), xytext=(x_n, f(x_n)),\n", 142 | "# arrowprops=dict(arrowstyle='->', color='red'))\n", 143 | "\n", 144 | "# Add labels and a legend\n", 145 | "plt.xlabel(\"x\")\n", 146 | "plt.ylabel(\"f(x)\")\n", 147 | "plt.title(\"Newton-Raphson Iterations for f(x) = x^3 - x - 1\")\n", 148 | "plt.legend()\n", 149 | "plt.grid(True)\n", 150 | "\n", 151 | "# Display the plot\n", 152 | "plt.show()\n" 153 | ] 154 | } 155 | ] 156 | } -------------------------------------------------------------------------------- /tutorial8.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "outputs": [], 7 | "source": [ 8 | "import matplotlib.pyplot as plt\n", 9 | "import numpy as np\n", 10 | "# Import necessary libraries\n", 11 | "import sympy as sym" 12 | ], 13 | "metadata": { 14 | "collapsed": false 15 | } 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "outputs": [], 21 | "source": [ 22 | "# Step 1: Define the symbolic variable x\n", 23 | "x = sym.symbols('x')" 24 | ], 25 | "metadata": { 26 | "collapsed": false 27 | } 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 3, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/plain": "x**2*sin(0.5*x)", 36 | "text/latex": "$\\displaystyle x^{2} \\sin{\\left(0.5 x \\right)}$" 37 | }, 38 | "execution_count": 3, 39 | "metadata": {}, 40 | "output_type": "execute_result" 41 | } 42 | ], 43 | "source": [ 44 | "# Step 2: Define the function f(x) = x^2 * sin(0.5x)\n", 45 | "f = (x ** 2) * sym.sin(0.5 * x)\n", 46 | "f" 47 | ], 48 | "metadata": { 49 | "collapsed": false 50 | } 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 5, 55 | "outputs": [ 56 | { 57 | "data": { 58 | "text/plain": "array([None, None, None, None, None, None, None, None, None, None, None,\n None, None, None, None, None, None, None, None, None], dtype=object)" 59 | }, 60 | "execution_count": 5, 61 | "metadata": {}, 62 | "output_type": "execute_result" 63 | } 64 | ], 65 | "source": [ 66 | "# Step 3: Initialize an array to store Maclaurin series terms\n", 67 | "ms = np.empty(20, dtype=object)\n", 68 | "ms" 69 | ], 70 | "metadata": { 71 | "collapsed": false 72 | } 73 | }, 74 | { 75 | "cell_type": "code", 76 | "execution_count": 6, 77 | "outputs": [ 78 | { 79 | "data": { 80 | "text/plain": "array([-5. , -4.97995992, -4.95991984, -4.93987976, -4.91983968,\n -4.8997996 , -4.87975952, -4.85971944, -4.83967936, -4.81963928,\n -4.7995992 , -4.77955912, -4.75951904, -4.73947896, -4.71943888,\n -4.6993988 , -4.67935872, -4.65931864, -4.63927856, -4.61923848,\n -4.5991984 , -4.57915832, -4.55911824, -4.53907816, -4.51903808,\n -4.498998 , -4.47895792, -4.45891784, -4.43887776, -4.41883768,\n -4.3987976 , -4.37875752, -4.35871743, -4.33867735, -4.31863727,\n -4.29859719, -4.27855711, -4.25851703, -4.23847695, -4.21843687,\n -4.19839679, -4.17835671, -4.15831663, -4.13827655, -4.11823647,\n -4.09819639, -4.07815631, -4.05811623, -4.03807615, -4.01803607,\n -3.99799599, -3.97795591, -3.95791583, -3.93787575, -3.91783567,\n -3.89779559, -3.87775551, -3.85771543, -3.83767535, -3.81763527,\n -3.79759519, -3.77755511, -3.75751503, -3.73747495, -3.71743487,\n -3.69739479, -3.67735471, -3.65731463, -3.63727455, -3.61723447,\n -3.59719439, -3.57715431, -3.55711423, -3.53707415, -3.51703407,\n -3.49699399, -3.47695391, -3.45691383, -3.43687375, -3.41683367,\n -3.39679359, -3.37675351, -3.35671343, -3.33667335, -3.31663327,\n -3.29659319, -3.27655311, -3.25651303, -3.23647295, -3.21643287,\n -3.19639279, -3.17635271, -3.15631263, -3.13627255, -3.11623246,\n -3.09619238, -3.0761523 , -3.05611222, -3.03607214, -3.01603206,\n -2.99599198, -2.9759519 , -2.95591182, -2.93587174, -2.91583166,\n -2.89579158, -2.8757515 , -2.85571142, -2.83567134, -2.81563126,\n -2.79559118, -2.7755511 , -2.75551102, -2.73547094, -2.71543086,\n -2.69539078, -2.6753507 , -2.65531062, -2.63527054, -2.61523046,\n -2.59519038, -2.5751503 , -2.55511022, -2.53507014, -2.51503006,\n -2.49498998, -2.4749499 , -2.45490982, -2.43486974, -2.41482966,\n -2.39478958, -2.3747495 , -2.35470942, -2.33466934, -2.31462926,\n -2.29458918, -2.2745491 , -2.25450902, -2.23446894, -2.21442886,\n -2.19438878, -2.1743487 , -2.15430862, -2.13426854, -2.11422846,\n -2.09418838, -2.0741483 , -2.05410822, -2.03406814, -2.01402806,\n -1.99398798, -1.9739479 , -1.95390782, -1.93386774, -1.91382766,\n -1.89378758, -1.87374749, -1.85370741, -1.83366733, -1.81362725,\n -1.79358717, -1.77354709, -1.75350701, -1.73346693, -1.71342685,\n -1.69338677, -1.67334669, -1.65330661, -1.63326653, -1.61322645,\n -1.59318637, -1.57314629, -1.55310621, -1.53306613, -1.51302605,\n -1.49298597, -1.47294589, -1.45290581, -1.43286573, -1.41282565,\n -1.39278557, -1.37274549, -1.35270541, -1.33266533, -1.31262525,\n -1.29258517, -1.27254509, -1.25250501, -1.23246493, -1.21242485,\n -1.19238477, -1.17234469, -1.15230461, -1.13226453, -1.11222445,\n -1.09218437, -1.07214429, -1.05210421, -1.03206413, -1.01202405,\n -0.99198397, -0.97194389, -0.95190381, -0.93186373, -0.91182365,\n -0.89178357, -0.87174349, -0.85170341, -0.83166333, -0.81162325,\n -0.79158317, -0.77154309, -0.75150301, -0.73146293, -0.71142285,\n -0.69138277, -0.67134269, -0.65130261, -0.63126253, -0.61122244,\n -0.59118236, -0.57114228, -0.5511022 , -0.53106212, -0.51102204,\n -0.49098196, -0.47094188, -0.4509018 , -0.43086172, -0.41082164,\n -0.39078156, -0.37074148, -0.3507014 , -0.33066132, -0.31062124,\n -0.29058116, -0.27054108, -0.250501 , -0.23046092, -0.21042084,\n -0.19038076, -0.17034068, -0.1503006 , -0.13026052, -0.11022044,\n -0.09018036, -0.07014028, -0.0501002 , -0.03006012, -0.01002004,\n 0.01002004, 0.03006012, 0.0501002 , 0.07014028, 0.09018036,\n 0.11022044, 0.13026052, 0.1503006 , 0.17034068, 0.19038076,\n 0.21042084, 0.23046092, 0.250501 , 0.27054108, 0.29058116,\n 0.31062124, 0.33066132, 0.3507014 , 0.37074148, 0.39078156,\n 0.41082164, 0.43086172, 0.4509018 , 0.47094188, 0.49098196,\n 0.51102204, 0.53106212, 0.5511022 , 0.57114228, 0.59118236,\n 0.61122244, 0.63126253, 0.65130261, 0.67134269, 0.69138277,\n 0.71142285, 0.73146293, 0.75150301, 0.77154309, 0.79158317,\n 0.81162325, 0.83166333, 0.85170341, 0.87174349, 0.89178357,\n 0.91182365, 0.93186373, 0.95190381, 0.97194389, 0.99198397,\n 1.01202405, 1.03206413, 1.05210421, 1.07214429, 1.09218437,\n 1.11222445, 1.13226453, 1.15230461, 1.17234469, 1.19238477,\n 1.21242485, 1.23246493, 1.25250501, 1.27254509, 1.29258517,\n 1.31262525, 1.33266533, 1.35270541, 1.37274549, 1.39278557,\n 1.41282565, 1.43286573, 1.45290581, 1.47294589, 1.49298597,\n 1.51302605, 1.53306613, 1.55310621, 1.57314629, 1.59318637,\n 1.61322645, 1.63326653, 1.65330661, 1.67334669, 1.69338677,\n 1.71342685, 1.73346693, 1.75350701, 1.77354709, 1.79358717,\n 1.81362725, 1.83366733, 1.85370741, 1.87374749, 1.89378758,\n 1.91382766, 1.93386774, 1.95390782, 1.9739479 , 1.99398798,\n 2.01402806, 2.03406814, 2.05410822, 2.0741483 , 2.09418838,\n 2.11422846, 2.13426854, 2.15430862, 2.1743487 , 2.19438878,\n 2.21442886, 2.23446894, 2.25450902, 2.2745491 , 2.29458918,\n 2.31462926, 2.33466934, 2.35470942, 2.3747495 , 2.39478958,\n 2.41482966, 2.43486974, 2.45490982, 2.4749499 , 2.49498998,\n 2.51503006, 2.53507014, 2.55511022, 2.5751503 , 2.59519038,\n 2.61523046, 2.63527054, 2.65531062, 2.6753507 , 2.69539078,\n 2.71543086, 2.73547094, 2.75551102, 2.7755511 , 2.79559118,\n 2.81563126, 2.83567134, 2.85571142, 2.8757515 , 2.89579158,\n 2.91583166, 2.93587174, 2.95591182, 2.9759519 , 2.99599198,\n 3.01603206, 3.03607214, 3.05611222, 3.0761523 , 3.09619238,\n 3.11623246, 3.13627255, 3.15631263, 3.17635271, 3.19639279,\n 3.21643287, 3.23647295, 3.25651303, 3.27655311, 3.29659319,\n 3.31663327, 3.33667335, 3.35671343, 3.37675351, 3.39679359,\n 3.41683367, 3.43687375, 3.45691383, 3.47695391, 3.49699399,\n 3.51703407, 3.53707415, 3.55711423, 3.57715431, 3.59719439,\n 3.61723447, 3.63727455, 3.65731463, 3.67735471, 3.69739479,\n 3.71743487, 3.73747495, 3.75751503, 3.77755511, 3.79759519,\n 3.81763527, 3.83767535, 3.85771543, 3.87775551, 3.89779559,\n 3.91783567, 3.93787575, 3.95791583, 3.97795591, 3.99799599,\n 4.01803607, 4.03807615, 4.05811623, 4.07815631, 4.09819639,\n 4.11823647, 4.13827655, 4.15831663, 4.17835671, 4.19839679,\n 4.21843687, 4.23847695, 4.25851703, 4.27855711, 4.29859719,\n 4.31863727, 4.33867735, 4.35871743, 4.37875752, 4.3987976 ,\n 4.41883768, 4.43887776, 4.45891784, 4.47895792, 4.498998 ,\n 4.51903808, 4.53907816, 4.55911824, 4.57915832, 4.5991984 ,\n 4.61923848, 4.63927856, 4.65931864, 4.67935872, 4.6993988 ,\n 4.71943888, 4.73947896, 4.75951904, 4.77955912, 4.7995992 ,\n 4.81963928, 4.83967936, 4.85971944, 4.87975952, 4.8997996 ,\n 4.91983968, 4.93987976, 4.95991984, 4.97995992, 5. ])" 81 | }, 82 | "execution_count": 6, 83 | "metadata": {}, 84 | "output_type": "execute_result" 85 | } 86 | ], 87 | "source": [ 88 | "# Step 4: Create an array of 500 points from -5 to 5 for plotting\n", 89 | "x_values = np.linspace(-5, 5, 500)\n", 90 | "x_values" 91 | ], 92 | "metadata": { 93 | "collapsed": false 94 | } 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": 8, 99 | "outputs": [ 100 | { 101 | "data": { 102 | "text/plain": "array([[0., 0., 0., ..., 0., 0., 0.],\n [0., 0., 0., ..., 0., 0., 0.],\n [0., 0., 0., ..., 0., 0., 0.],\n ...,\n [0., 0., 0., ..., 0., 0., 0.],\n [0., 0., 0., ..., 0., 0., 0.],\n [0., 0., 0., ..., 0., 0., 0.]])" 103 | }, 104 | "execution_count": 8, 105 | "metadata": {}, 106 | "output_type": "execute_result" 107 | } 108 | ], 109 | "source": [ 110 | "# Step 5: Create a 2D array to store function values and approximations for plotting\n", 111 | "function_and_approximations = np.zeros([21, 500])\n", 112 | "function_and_approximations" 113 | ], 114 | "metadata": { 115 | "collapsed": false 116 | } 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 10, 121 | "outputs": [], 122 | "source": [ 123 | "# Step 6: Evaluate and store the function values at each point in x_values\n", 124 | "function_evaluation = sym.lambdify(x, f, 'numpy')\n", 125 | "function_evaluation\n", 126 | "function_and_approximations[20, :] = function_evaluation(x_values)" 127 | ], 128 | "metadata": { 129 | "collapsed": false 130 | } 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": 11, 135 | "outputs": [ 136 | { 137 | "name": "stdout", 138 | "output_type": "stream", 139 | "text": [ 140 | "1 : 0\n", 141 | "2 : 0\n", 142 | "3 : 0\n", 143 | "4 : 0.5*x**3\n", 144 | "5 : 0\n", 145 | "6 : -0.0208333333333333*x**5\n", 146 | "7 : 0\n", 147 | "8 : 0.000260416666666667*x**7\n", 148 | "9 : 0\n", 149 | "10 : -1.55009920634921e-6*x**9\n", 150 | "11 : 0\n", 151 | "12 : 5.38228891093474e-9*x**11\n", 152 | "13 : 0\n", 153 | "14 : -1.2232474797579e-11*x**13\n", 154 | "15 : 0\n", 155 | "16 : 1.96033249961201e-14*x**15\n", 156 | "17 : 0\n", 157 | "18 : -2.33372916620478e-17*x**17\n", 158 | "19 : 0\n", 159 | "20 : 2.14497166011469e-20*x**19\n" 160 | ] 161 | } 162 | ], 163 | "source": [ 164 | "# Step 7: Perform Taylor series expansion around x = 0\n", 165 | "for degree in range(20):\n", 166 | " # Calculate the nth derivative of f(x) at x = 0\n", 167 | " ms[degree] = f.diff(x, degree).subs(x, 0) * (\n", 168 | " x ** degree) / (np.math.factorial(degree))\n", 169 | "\n", 170 | " # Convert the symbolic expression to a NumPy function\n", 171 | " taylor_series_function = sym.lambdify(x, ms[degree], 'numpy')\n", 172 | "\n", 173 | " # Evaluate and store the approximation at each point in x_values\n", 174 | " function_and_approximations[degree, :] = taylor_series_function(x_values)\n", 175 | "\n", 176 | " # Print the Taylor series term for better understanding\n", 177 | " print(degree + 1, \":\", ms[degree])" 178 | ], 179 | "metadata": { 180 | "collapsed": false 181 | } 182 | }, 183 | { 184 | "cell_type": "code", 185 | "execution_count": 12, 186 | "outputs": [ 187 | { 188 | "data": { 189 | "text/plain": "
", 190 | "image/png": "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\n" 191 | }, 192 | "metadata": {}, 193 | "output_type": "display_data" 194 | } 195 | ], 196 | "source": [ 197 | "# Plotting\n", 198 | "plt.plot(x_values, function_and_approximations[0, :], label=\"Degree 1\")\n", 199 | "plt.plot(x_values, function_and_approximations[4, :], label=\"Degree 5\")\n", 200 | "plt.plot(x_values, function_and_approximations[9, :], label=\"Degree 10\")\n", 201 | "plt.plot(x_values, function_and_approximations[20, :], label=\"Function\")\n", 202 | "\n", 203 | "# Add labels and legend for clarity\n", 204 | "plt.xlabel('x')\n", 205 | "plt.ylabel('y')\n", 206 | "plt.legend()\n", 207 | "\n", 208 | "# Display the plot\n", 209 | "plt.show()" 210 | ], 211 | "metadata": { 212 | "collapsed": false 213 | } 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": null, 218 | "outputs": [], 219 | "source": [], 220 | "metadata": { 221 | "collapsed": false 222 | } 223 | } 224 | ], 225 | "metadata": { 226 | "kernelspec": { 227 | "display_name": "Python 3", 228 | "language": "python", 229 | "name": "python3" 230 | }, 231 | "language_info": { 232 | "codemirror_mode": { 233 | "name": "ipython", 234 | "version": 2 235 | }, 236 | "file_extension": ".py", 237 | "mimetype": "text/x-python", 238 | "name": "python", 239 | "nbconvert_exporter": "python", 240 | "pygments_lexer": "ipython2", 241 | "version": "2.7.6" 242 | } 243 | }, 244 | "nbformat": 4, 245 | "nbformat_minor": 0 246 | } 247 | --------------------------------------------------------------------------------