807 lines
165 KiB
Plaintext
807 lines
165 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "4ec40081b048ce2f34f3f4fedbb0be10",
|
|
"grade": false,
|
|
"grade_id": "cell-98f724ece1aacb67",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"# CDS: Numerical Methods Assignments\n",
|
|
"\n",
|
|
"- See lecture notes and documentation on Brightspace for Python and Jupyter basics. If you are stuck, try to google or get in touch via Discord.\n",
|
|
"\n",
|
|
"- Solutions must be submitted via the Jupyter Hub.\n",
|
|
"\n",
|
|
"- Make sure you fill in any place that says `YOUR CODE HERE` or \"YOUR ANSWER HERE\".\n",
|
|
"\n",
|
|
"## Submission\n",
|
|
"\n",
|
|
"1. Name all team members in the the cell below\n",
|
|
"2. make sure everything runs as expected\n",
|
|
"3. **restart the kernel** (in the menubar, select Kernel$\\rightarrow$Restart)\n",
|
|
"4. **run all cells** (in the menubar, select Cell$\\rightarrow$Run All)\n",
|
|
"5. Check all outputs (Out[\\*]) for errors and **resolve them if necessary**\n",
|
|
"6. submit your solutions **in time (before the deadline)**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "raw",
|
|
"metadata": {},
|
|
"source": [
|
|
"team_members = \"Koen Vendrig, Kees van Kempen\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "7317367b26066eae942edeea4e7d4280",
|
|
"grade": false,
|
|
"grade_id": "cell-e9dc85dd9ad77a5e",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"## Ordinary Differential Equations - Initial Value Problems\n",
|
|
"\n",
|
|
"In the following you will implement your own easy-to-extend ordinary differential equation (ODE) solver, which can be used to solve first order ODE systems of the form\n",
|
|
"\n",
|
|
"\\begin{align*}\n",
|
|
" \\vec{y}'(x) = \\vec{f}(x, \\vec{y}),\n",
|
|
"\\end{align*}\n",
|
|
"\n",
|
|
"for $x = x_0, x_1, \\dots, x_n$ with $x_i = i h$, step size $h$, and an initial condition of the form $\\vec{y}(x=0)$.\n",
|
|
"The solver will be capable of using single-step as well as multi-step approaches. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "910692c2f4b93f251a3a128caf2b0c37",
|
|
"grade": true,
|
|
"grade_id": "cell-acb87410eaef9fe1",
|
|
"locked": false,
|
|
"points": 0,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"from matplotlib import pyplot as plt\n",
|
|
"from matplotlib import gridspec"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "79e708efbac889db28e537bcf01e26c6",
|
|
"grade": false,
|
|
"grade_id": "cell-a27c54a734bf2232",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 1\n",
|
|
"\n",
|
|
"Implement the Euler method in a general Python function $\\text{integrator(x, y0, f, phi)}$, which takes as input a one-dimensional array $x$ of size $n+1$, the initial condition $y_0$, the *callable* function $f(x, y)$, and the integration scheme $\\Phi(x, y, f, i)$. It should return the approximated function $\\tilde{y}(x)$. \n",
|
|
"\n",
|
|
"The integration scheme $\\text{phi}$ is supposed to be a *callable* function as returned from another Python function $\\text{phi_euler(x, y, f, i)}$, where $i$ is the step number. In this way we will be able to easily extend the ODE solver to different methods."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "8396264309b023abf89a62200fa55379",
|
|
"grade": true,
|
|
"grade_id": "cell-1f9655333f2dc3cb",
|
|
"locked": false,
|
|
"points": 3,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def integrator(x, y0, f, phi):\n",
|
|
" \"\"\"\n",
|
|
" Numerically solves the initial value problem (IVP) given by ordinary differential\n",
|
|
" equation (ODE) f(x, y) = y' with initial value y0 using the integration scheme\n",
|
|
" provided by phi.\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" x: size n + 1 numerical array of x values\n",
|
|
" y0: an initial value to the function f\n",
|
|
" f: a callable function with signature (x, y), with x and y the current state\n",
|
|
" of the system, and f such that f(x, y) = y' in the ODE\n",
|
|
" phi: a callable function with signature (x, y, f, i), with x and y the current state\n",
|
|
" of the system, i the step number, and f as above, representing the integration\n",
|
|
" scheme to use\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" An n + 1 numerical array representing an approximate solution to y in y' = f(x, y)\n",
|
|
" given initial value y0, steps from x, and using integration scheme phi.\n",
|
|
" \"\"\"\n",
|
|
" \n",
|
|
" eta = np.zeros(len(x))\n",
|
|
" eta[0] = y0\n",
|
|
" \n",
|
|
" for i in range(1, len(eta)):\n",
|
|
" h = x[i] - x[i - 1]\n",
|
|
" eta[i] = eta[i - 1] + h*phi(x, eta, f, i)\n",
|
|
" \n",
|
|
" return eta"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "35d6f653b74f2c8e2ff509890754df72",
|
|
"grade": true,
|
|
"grade_id": "cell-04ac3a0537092706",
|
|
"locked": false,
|
|
"points": 3,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def phi_euler(x, y, f, i):\n",
|
|
" \"\"\"\n",
|
|
" Returns the integrator phi = f(x, y) for the Euler method to solve the ODE\n",
|
|
" y' = f(x, y).\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" x: size n + 1 numerical array of x values\n",
|
|
" y: size n + 1 numerical array of y values with estimates up to index i - 1\n",
|
|
" f: a callable function with signature (x, y), with x and y the current state\n",
|
|
" variables of the system, and f such that f(x, y) = y' in the ODE\n",
|
|
" i: the current step number to calculate phi for\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" The integrator phi(x, y, f, i) = f(x, y).\n",
|
|
" \"\"\"\n",
|
|
" \n",
|
|
" return f(x[i - 1], y[i - 1])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "a300f75f62faab4732ebcac7bde5e18e",
|
|
"grade": false,
|
|
"grade_id": "cell-047f2dfab5489a88",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 2 \n",
|
|
"\n",
|
|
"Debug your implementation by applying it to the following ODE\n",
|
|
"\n",
|
|
"\\begin{align*}\n",
|
|
" \\vec{y}'(x) = y - x^2 + 1.0,\n",
|
|
"\\end{align*}\n",
|
|
" \n",
|
|
"with initial condition $y(x=0) = 0.5$. To this end, define the right-hand side of the ODE as a Python function $\\text{ODEF(x, y)}$, which in this case returns $f(x,y) = y - x^2 + 1.0$. You can then hand over the function $\\text{ODEF}$ to the argument $\\text{f}$ of your $\\text{integrator}$ function.\n",
|
|
"\n",
|
|
"Plot the solution you found with the Euler method together with the exact solution $y(x) = (x+1)^2 - 0.5 e^x$.\n",
|
|
"\n",
|
|
"Then implement a unit test for your $\\text{integrator}$ function using this system."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "692bfda705027a7fa4452a7e03c8fa7d",
|
|
"grade": true,
|
|
"grade_id": "cell-8b8cb282dfe95a03",
|
|
"locked": false,
|
|
"points": 4,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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Bx/kiiuuSFC6Pc2YMYP//ve/lcuXXHIJTz311H4f70D3h7p9TVasWMGjjz5auTx79myuuuqqA+pXREREEuyQMezK7M740ld4feGGoNPsM81BbyRatGjB3LlzG+z4ZWVlpKTU37fDjBkzaNWqFUcffXS9HTMRKgr0888/H4Dc3Fxyc3MDTiUiIiL7JBQmffgkRr39R6559z1Oyzkr6ET7RCPojVyvXr3YtGkTEB3tPeGEE/bYJj8/n+985zsMGzaMYcOG8d577wFwww03cNFFFzFq1Cguuuii3faZMWMGxx9/PBMmTKBPnz5MnjyZRx55hOHDhzNw4EC++OKLGo+9YsUK7rnnHm699VYGDx7MO++8A8DMmTM5+uij6dOnT+VouLtz7bXXMmDAAAYOHMi0adMq26+44gr69evHSSedxMaNG6t9/7fffjv9+/cnJyeHc889F4AtW7Zw5plnkpOTw8iRI/nss8/22K/qiHyrVq0AmDx5Mu+88w6DBw/m1ltvZcaMGZx++um1HveGG25g0qRJnHDCCfTp04fbb799bx+biIiINLDQ0IsotzCHrX2GL/ILg46zTzSCvo/+8MICFq7dVq/H7N+tDdefcUSt2+zatYvBgwdXLl933XWcc845dTr+1Vdfzc9+9jOOOeYYVq1axdixY1m0aBEACxcu5N1336VFixZ77Pfpp5+yaNEi2rdvT58+ffj+97/PRx99xN///nfuuOMObrvtthqP/cMf/pBWrVrxi1/8AoD77ruPdevW8e6777J48WLGjx/PWWedxTPPPMPcuXP59NNP2bRpE8OGDeO4447j/fffZ8mSJSxcuJANGzbQv39/Jk2atEfGm266iS+//JL09HS2bt0KwPXXX8+QIUN47rnneOutt7j44ovr/NeHm266iVtuuYUXX3wRiP6iUqG24y5evJi3336b7du3069fP370ox/pkooiIiJBat2Z0r6n8d0lb3H3+0v59fghQSeqMxXojcSBTHF54403WLhwYeXytm3bKCyM/iY5fvz4aotzgGHDhtG1a1cAvvGNb3DKKacAMHDgQN5+++29HruqM888k1AoRP/+/dmwITof7N133+W8884jHA7TuXNnjj/+eGbNmsXMmTMr27t168bo0aOrPWZOTg4XXHABZ555JmeeeWblMZ9++mkARo8ezebNm9m27cB/qart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RJKICnQRERERkSSiAl1EREREJImoQBcRERERSSIq0EVEREREkogKdBER2S9mNszMPjOzDDPLNLMFZjYg6FwiIo2dblQkIiL7zcz+BGQALYA8d/+fgCOJiDR6KtCr6NChg/fq1SvoGCIiIiLSxM2ZM2eTu3es2p4SRJhk1qtXL2bPnh10DBERERFp4sxsZXXtmoMuIiIiIpJEVKCLiIiIiCQRFegiInXUa/JLXP/8/KBjiIhIE6c56CIi+2Dq+yv5wwRdSVCkMSotLSUvL4+ioqKgo0gzk5GRQXZ2NqmpqXXaXgW6iIiINAt5eXm0bt2aXr16YWZBx5Fmwt3ZvHkzeXl59O7du077aIqLiIiINAtFRUVkZWWpOJeEMjOysrL26S83KtBFRESk2VBxLkHY1+87FegiIiIiIklEBbqIiIhIkmnVqlWt67du3cpdd91Vubx27VrOOuusBsuzYsUKBgw48BPkb7jhBm655ZZat5k7dy4vv/zyAfe1L775zW+ydevWPdrrkrchqEAXERERSTB3JxKJ7Pf+VQv0bt268dRTT9VHtMAdaIFeVla2z/u8/PLLtGvXbr/7rG8q0EVEREQSYMWKFfTr14+LL76YAQMGsHr1am6++WaGDRtGTk4O119//R77FBYWMmbMGIYOHcrAgQN5/vnnAZg8eTJffPEFgwcP5tprr91thHvkyJEsWLCg8hgnnHACs2fPZseOHUyaNInhw4czZMiQymPVpT+IFr4XXHABhx9+OGeddRY7d+6szNK/f39ycnL4xS9+UfleR48eTU5ODmPGjGHVqlV79FWRC2DTpk306tWLkpISfv/73zNt2jQGDx7MtGnT6pR7xowZHHvssYwfP57+/ftTXl7OtddeW/m1/ec//wnAunXrOO644xg8eDADBgzgnXfeAaBXr15s2rQJgD//+c8ceuihHHPMMSxZsqTWvECNfR0IXWZRREREmp0/vLCAhWu31esx+3drw/VnHFHrNkuXLmXq1KmMHDmS1157jaVLl/LRRx/h7owfP56ZM2dy3HHHVW6fkZHBs88+S5s2bdi0aRMjR45k/Pjx3HTTTcyfP5+5c+cC0YK4wjnnnMMTTzzBH/7wB9atW8e6devIzc3l17/+NaNHj+b+++9n69atDB8+nJNOOonMzMy99gewZMkS7rvvPkaNGsWkSZO46667uPTSS3n22WdZvHgxZlY5TeTKK69k4sSJTJw4kfvvv5+rrrqK5557bq9fw7S0NG688UZmz57NP/7xD4A65Qb4+OOPmT9/Pr1792bKlCm0bduWWbNmUVxczKhRozjllFN45plnGDt2LL/5zW8oLy+v/CWjwpw5c3j88ceZO3cuZWVlDB06lCOPPLLWzPfdd1+1fdX1korV0Qi6iIiISIIcfPDBjBw5EoDXXnuN1157jSFDhjB06FAWL17M0qVLd9ve3fn1r39NTk4OJ510EmvWrGHDhg219nH22WdXTnd54oknKuemv/baa9x0000MHjyYE044gaKioj1Gtmvrr0ePHowaNQqACy+8kHfffZe2bduSkZHB9773PZ555hlatmwJwPvvv8/5558PwEUXXcS7776731+zuuQGGD58eGVR/Nprr/HQQw8xePBgRowYwebNm1m6dCnDhg3jgQce4IYbbmDevHm0bt16t2O88847fOtb36Jly5a0adOm8peTveWrrq8DkfARdDPrWcdNt7p7/f5qKyIiIgJ7HeluKPGjvu7Oddddxw9+8IMat3/kkUfIz89nzpw5pKam0qtXr71eT7t79+5kZWXx2WefMW3aNO65557K/p5++mn69eu3X/1VvVSgmZGSksJHH33Em2++yVNPPcU//vEP3nrrrb1+HQBSUlIq5+HX9p7qkhv2/NrecccdjB07do/tZs6cyUsvvcQll1zCNddcw8UXX3xAeWvra38FMYI+FXgw9lzT40HgzACyiYiIiCTE2LFjuf/++yksLARgzZo1bNy4cbdtCgoK6NSpE6mpqbz99tusXLkSgNatW7N9+/Yaj33OOefw17/+lYKCAnJycir7u+OOO3B3AD755JM99qupP4BVq1bx/vvvA/Doo49yzDHHUFhYSEFBAd/85je59dZb+fTTTwE4+uijefzxx4Fo0X/sscfu0VevXr2YM2cOwG4nuFZ9b3XJXdXYsWO5++67KS0tBeDzzz9nx44drFy5ks6dO3PZZZfx/e9/n48//ni3/Y477jiee+45du3axfbt23nhhRf2mremvg5EwkfQ3f3ERPcpIiIikmxOOeUUFi1axFFHHQVEL6348MMP06lTp8ptLrjgAs444wwGDhxIbm4uhx12GABZWVmMGjWKAQMGcOqpp/KTn/xkt2OfddZZXH311fzud7+rbPvd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\n",
|
|
"text/plain": [
|
|
"<Figure size 864x576 with 3 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" For the given initial value problem y' = (x + 1)^2 + 1.0, taking x from 0 to 10 in 3000 steps,\n",
|
|
" we find a large deviation between exact and estimate solutions at the point that y' = 0.\n",
|
|
" We could fix this by taking some other measure, like the absolute difference, but as\n",
|
|
" the solutions decrease so hard, that will suck later on.\n",
|
|
" \n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# This here is for debugging. We thought the keep it here,\n",
|
|
"# as debugging was part of the task.\n",
|
|
"\n",
|
|
"def ODEF(x, y):\n",
|
|
" return y - x**2 + 1.0\n",
|
|
"\n",
|
|
"x = np.linspace(0, 10, 3000)\n",
|
|
"y0 = .5\n",
|
|
"\n",
|
|
"eta = integrator(x, y0, ODEF, phi_euler)\n",
|
|
"y_exact = (x + 1)**2 - 0.5*np.exp(x)\n",
|
|
"\n",
|
|
"fig = plt.figure(figsize=(12, 8))\n",
|
|
"gs = gridspec.GridSpec(3, 1, height_ratios=[2, 1, 1])\n",
|
|
"\n",
|
|
"# Above plots\n",
|
|
"ax0 = plt.subplot(gs[0])\n",
|
|
"ax0.plot(x, eta, label=\"Euler method solution\")\n",
|
|
"ax0.plot(x, y_exact, label=\"exact solution\")\n",
|
|
"ax0.legend()\n",
|
|
"plt.title(\"Solutions to $y' = y - x^2 + 1.0$\")\n",
|
|
"plt.xlabel(\"x\")\n",
|
|
"ax0.set_ylabel(\"y(x)\")\n",
|
|
"\n",
|
|
"# Relative absolute residue plots\n",
|
|
"ax1 = plt.subplot(gs[1])\n",
|
|
"ax1.plot(x, np.abs(eta/y_exact - 1), label=\"relative absolute residue\")\n",
|
|
"ax1.legend()\n",
|
|
"ax1.set_ylabel(\"$|\\eta(x)/y(x) - 1|$\")\n",
|
|
"\n",
|
|
"# Absolute residue plots\n",
|
|
"ax2 = plt.subplot(gs[2])\n",
|
|
"ax2.plot(x, np.abs(eta - y_exact), label=\"absolute residue\")\n",
|
|
"ax2.legend()\n",
|
|
"ax2.set_ylabel(\"$|\\eta(x) - y(x)|$\")\n",
|
|
"\n",
|
|
"plt.show()\n",
|
|
"\n",
|
|
"print(\"\"\"\n",
|
|
" For the given initial value problem y' = (x + 1)^2 + 1.0, taking x from 0 to 10 in 3000 steps,\n",
|
|
" we find a large deviation between exact and estimate solutions at the point that y' = 0.\n",
|
|
" We could fix this by taking some other measure, like the absolute difference, but as\n",
|
|
" the solutions decrease so hard, that will suck later on.\n",
|
|
" \"\"\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "aea0c6713e9bd3871c2e93e65e93d903",
|
|
"grade": true,
|
|
"grade_id": "cell-715c304f22415d45",
|
|
"locked": false,
|
|
"points": 3,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def test_integrator():\n",
|
|
" def ODEF(x, y):\n",
|
|
" return y - x**2 + 1.0\n",
|
|
" \n",
|
|
" x = np.linspace(0, 3, 100000)\n",
|
|
" y0 = .5\n",
|
|
"\n",
|
|
" eta = integrator(x, y0, ODEF, phi_euler)\n",
|
|
" y_exact = (x + 1)**2 - 0.5*np.exp(x)\n",
|
|
" \n",
|
|
" # Assert the relative error of the approximation is lower than TOL.\n",
|
|
" TOL = 1e-4\n",
|
|
" assert np.all(np.abs(eta/y_exact - 1) < TOL)\n",
|
|
" \n",
|
|
"test_integrator()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "8048460a3a4d5e94b9e9f086d90ff0d0",
|
|
"grade": false,
|
|
"grade_id": "cell-99399435c164c96d",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 3\n",
|
|
"\n",
|
|
"Extend the set of possible single-step integration schemes to the modified Euler (Collatz), Heun, and 4th-order Runge-Kutta approaches by implementing the functions $\\text{phi_euler_modified(x, y, f, i)}$, $\\text{phi_heun(x, y, f, i)}$, and $\\text{phi_rk4(x, y, f, i)}$. These can be used in your $\\text{integrator}$ function instead of $\\text{phi_euler}$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "dc82ac823cbd262952a6990776e26d09",
|
|
"grade": true,
|
|
"grade_id": "cell-ea865d2efbc574d6",
|
|
"locked": false,
|
|
"points": 9,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def phi_euler_modified(x, y, f, i):\n",
|
|
" h = x[i]-x[i-1]\n",
|
|
" phi = f(x[i-1]+0.5*h, y[i-1]+0.5*h*f(x[i-1],y[i-1]))\n",
|
|
" return phi\n",
|
|
" \n",
|
|
"def phi_heun(x, y, f, i):\n",
|
|
" h = x[i]-x[i-1]\n",
|
|
" phi = 0.5*(f(x[i-1],y[i-1])+f(x[i-1]+h,y[i-1]+h*f(x[i-1],y[i-1])))\n",
|
|
" return phi\n",
|
|
" \n",
|
|
"def phi_rk4(x, y, f, i):\n",
|
|
" h = x[i]-x[i-1]\n",
|
|
" k1 = f(x[i-1],y[i-1])\n",
|
|
" k2 = f(x[i-1]+0.5*h,y[i-1]+0.5*h*k1)\n",
|
|
" k3 = f(x[i-1]+0.5*h,y[i-1]+0.5*h*k2)\n",
|
|
" k4 = f(x[i-1]+h,y[i-1]+h*k3)\n",
|
|
" phi = (1/6)*(k1+2*k2+2*k3+k4)\n",
|
|
" return phi"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "996fa4ae58be6c15aed465d8d7e5618e",
|
|
"grade": false,
|
|
"grade_id": "cell-a783908a0db32a24",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 4\n",
|
|
"\n",
|
|
"Add the possibility to also handle the following multi-step integration schemes:\n",
|
|
"\n",
|
|
"\\begin{align*}\n",
|
|
" \\Phi_{AB3}(x, y, f, i) = \n",
|
|
" \\frac{1}{12} \\left[ \n",
|
|
" 23 f(x_i, y_i) \n",
|
|
" - 16 f(x_{i-1}, y_{i-1})\n",
|
|
" + 5 f(x_{i-2}, y_{i-2})\n",
|
|
" \\right]\n",
|
|
"\\end{align*}\n",
|
|
"\n",
|
|
"and\n",
|
|
"\n",
|
|
"\\begin{align*}\n",
|
|
"\\Phi_{AB4}(x, y, f, i) = \n",
|
|
" \\frac{1}{24} \\left[ \n",
|
|
" 55 f(x_i, y_i) \n",
|
|
" - 59 f(x_{i-1}, y_{i-1})\n",
|
|
" + 37 f(x_{i-2}, y_{i-2})\n",
|
|
" - 9 f(x_{i-3}, y_{i-3})\n",
|
|
" \\right]\n",
|
|
"\\end{align*}\n",
|
|
" \n",
|
|
"In these cases the initial condition $\\text{y0}$ must be an array consisting of several initial values corresponding to $y_0$, $y_1$, $y_2$ (and $y_3$). Use the Runga-Kutta method to calculate all of the initial values before you start the AB3 and AB4 integrations."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "d301f6514b2bc50a77d929518f6928df",
|
|
"grade": true,
|
|
"grade_id": "cell-0bd05d93759bd652",
|
|
"locked": false,
|
|
"points": 6,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def phi_ab3(x, y, f, i):\n",
|
|
" # The first three y values are to be calculated using the Runga-Kutta method.\n",
|
|
" if i < 3:\n",
|
|
" return phi_rk4(x, y, f, i)\n",
|
|
" \n",
|
|
" phi = (1/12)*( 23*f(x[i - 1], y[i - 1]) - 16*f(x[i - 2], y[i - 2]) + 5*f(x[i - 3], y[i - 3]) )\n",
|
|
" return phi\n",
|
|
"\n",
|
|
"# TODO: AB4 looks a bit off in the plots in task 5.\n",
|
|
"def phi_ab4(x, y, f, i):\n",
|
|
" # The first three y values are to be calculated using the Runga-Kutta method.\n",
|
|
" if i < 4:\n",
|
|
" return phi_rk4(x, y, f, i)\n",
|
|
" \n",
|
|
" phi = (1/24)*( 55*f(x[i - 1], y[i - 1]) - 59*f(x[i - 2], y[i - 2]) + 37*f(x[i - 3], y[i - 3]) - 9*f(x[i - 4], x[i - 4]) )\n",
|
|
" return phi"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "c621385b0e71eb6fd2e4d6041268bd15",
|
|
"grade": false,
|
|
"grade_id": "cell-3fac52fc46f0a497",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 5\n",
|
|
"\n",
|
|
"Plot the absolute errors $\\delta(x) = |\\tilde{y}(x) - y(x)|$ with a $y$-log scale for all approaches with $0 \\leq x \\leq 2$ and a step size of $h=0.02$ for the ODE from task 2."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "22f375f78eeb46befb192c08db0f48e9",
|
|
"grade": true,
|
|
"grade_id": "cell-e61d969c23914a5f",
|
|
"locked": false,
|
|
"points": 4,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAH0CAYAAAD/taEiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACicklEQVR4nOzdd3yV9fn/8dcn55zkZE/2CpuwRxCU4aAyFHBvUWtdVVvqt1ptawu21trqz7rrqBYXuIuIGwUVUCDBoECQvVf2HifnfH5/nBDDCISQcDLez8cjD3Lu+z73fd137oQrn1z39THWWkRERERE5PgFBToAEREREZGmSsm0iIiIiEgdKZkWEREREakjJdMiIiIiInWkZFpEREREpI6UTIuIiIiI1JGSaRERERGROlIyLSIijZ4x5hRjzDfGmK+MMXOMMa5AxyQiAkqmRUSkadgBnGWtHQtsBc4LbDgiIn5KpkWkWTPGbDXG/OwE3r/GGHNG/UUUWMaYycaY8EDHcbystXustSWVL8sBXyDjERE5QMm0iDQJxpjRxpilxpg8Y0y2MWaJMWZ4PR/jsMTbWtvPWruoPo9zvDHUs0cBZwPuv0EZY7oA44H362FftxtjUowxZcaYWbXYPs4Y8z9jTJExZpsx5soTjUFEmr4m+wNVRFoOY0wUMB/4JfAmEAyMAcoCGVdTY4zpA3xtrc0LdCx1UXkfvAJcZ631HGPbmQDW2plH2Ww3cD8wAQitRQhP4R8VbwMMBj4wxqyy1q6pxXtFpJnSyLSINAW9AKy1c6y1XmttibX2U2vt9wDGmCRjzCJjTG5lWcbUmnZkjLHGmB7VXs8yxtxvjHkF6Ay8b4wpNMb8rnJ91UjxsY5Tue2dxpjvK0fQ3zDGuCvX3W2M2WWMKTDG/GiMGXeE2GqKoVbnZ4yJMMZ4jTHtqi3rb4zZY4yJBM4Cnq3NBT/K9TvWMU5k3/80xsyt9vohY8znxphgY4wTeB24z1r744kc5wBr7bvW2rlAVi1iCwcuAv5krS201i4G5gHT6iMWEWm6lEyLSFOwHvAaY14yxkwyxsQeWFHZ1eF94FOgNfAr4DVjTO/jOYC1dhqwHZhirY2w1v6z+vrjOM6lwESgKzAQuK5ym9uB4dbaSPwjoVtrE8PxnJ+1thBYBwyttvhB4AFrbQEQaa399tD3GWPmVybqR/qYf5zHOBH/AM40xgwxxtyC/zpeaK0tB64ARgB/qvzF4rITPNbx6gVUWGvXV1u2Cuh3kuMQkUZGybSINHrW2nxgNGCB54EMY8w8Y0wbYCQQATxorS231n6BvyTkinoOo7bHedxau9tam40/CR4MeIEQoK8xxmWt3Wqt3VTPxz1gBZWJrjFmLNCXytFoa+0/jvQGa+1ka21MDR+Tj+cYJ8JamwX8C3gJ+D1wzoGSFGvtK9baeGvtGZUfb5zo8Y5TBJB/yLI84IRG40Wk6VMyLSJNgrU23Vp7nbW2I9AfaI//Ybr2wA5rbfXuDtuADvUcQm2Ps7fa58VAhLV2I/AbYCaw3xjzujGmfT0f94CqRBf4J/6yhPJaHqu2anWMyhFkW8PH4hr2/R0wAPi9tXbH8QRVfYQduAe4p6YR9jooBKIOWRYFnOhovIg0cUqmRaTJsdauA2bhT6p3A52MMdV/nnUGdtXw9mIgrNrrttV3fZTDHu9xDo15trV2NNCl8jhHHCU+QgzHe9wVwFBjzEWAG5h9rNiMMR9V1mgf6eOjuh6jcgTZ1PAx+ghxDAD+jX9k+vpjxX2E41WNsOMvPXnwGCPsx2M94DTG9Ky2bBCghw9FWjgl0yLS6Blj+hhjfmuM6Vj5uhP+ModvgWX4E+TfGWNcxt8Tegr+h9WOJA240hjjMMZMBE6vtm4f0K2G9x3vcarH39sYc5YxJgQoBUqouU/yoTEc73FX4f8F4f/hH9092i8IAFhrJ1XWaB/pY1J9HONYjDEd8JfF3ALcCgwwDdzf2xjjrHxA1AE4jDHuygcdD2OtLQLeBf5ijAk3xozCP3HMKw0Zo4g0fkqmRaQpKMD/8NkyY0wR/iR6NfDbyvKCKcAkIBN4GrimcvT6SKZXbp8LXAXMrbbu78C9lWUBd1Z/Ux2OU10I/pHSTPxlIK3x1wQfyUExHO9xrbVlwA/AVmvtkUaVT1h9H8P4W959CDxirZ1nrS0GHgL+dqL7PoZ78f9icw9wdeXn91aL6yNjzB+qbX8r/hZ6+4E5wC/VFk9ETD0MKIiISCNhjAkGNgKXHqlzR1M5hohIU6GRaRGR5mUGsKSBk9yTcQwRkSZBybSISDNgjBlqjMkDxuLvRd0kjyEi0tSozENEREREpI40Mi0iIiIiUkdKpkVERERE6qjRJNPGmG7GmBeMMW8HOhYRERERkdpo0JppY8yLwGRgv7W2f7XlE4HH8DfK/4+19sFq69621l5cm/0nJCTYxMTE+g1aREREROQQqampmdbaVocuP+JMT/VoFvAk8PKBBcYYB/AUcDawE1hhjJlnrV17vDtPTEwkJSWlnkIVERERETkyY8y2Iy1v0DIPa+1XQPYhi08BNlprN1fO7PU6/ilZRURERESalEDUTHcAdlR7vRPoYIyJN8Y8AwwxxtQ0zS7GmJuMMSnGmJSMjIyGjlVEREREpEYNXeZRa9baLOCWWmz3HPAcQHJysppki4iIiEjABCKZ3gV0qva6Y+WyeuHxeNi5cyelpaX1tUuRKm63m44dO+JyuQIdioiIiDQCgUimVwA9jTFd8SfRlwNX1tfOd+7cSWRkJImJiRhj6mu3IlhrycrKYufOnXTt2jXQ4YiIiEgj0KA108aYOcA3QG9jzE5jzC+stRXA7cAnQDrwprV2TX0ds7S0lPj4eCXSUu+MMcTHx+uvHiIiIlKlQUemrbVX1LD8Q+DDhjquEmlpKLq3REREpLpGMwOi1M7cuXNZu/a4W3IfZtGiRUyePPmo2+Tm5vL0009Xvd69ezcXX1yr+XREREREWgQl001MfSXTtXFoMt2+fXvefluzvYuIiEhgNOTM3XWlZLoBvPrqq5xyyikMHjyYm2++Ga/Xy4oVKxg4cCClpaUUFRXRr18/Vq9eTWFhIePGjWPo0KEMGDCA9957r2o/L7/8MgMHDmTQoEFMmzaNpUuXMm/ePO666y4GDx7Mpk2bDjruW2+9Rf/+/Rk0aBBjx44F/DXkP//5zxkwYABDhgxh4cKFh8U7c+ZMHn744arX/fv3Z+vWrdxzzz1s2rSJwYMHc9ddd7F161b69+9/1P3OmjWLCy+8kIkTJ9KzZ09+97vf1fv1FRERkZbB+izluwsp+HonmbPWsP+J7wId0mEaTZ/p42GMmQJM6dGjx1G3u+/9NazdnV+vx+7bPooZU/rVuD49PZ033niDJUuW4HK5uPXWW3nttde45pprmDp1Kvfeey8lJSVcffXV9O/fn4qKCv73v/8RFRVFZmYmI0eOZOrUqaxdu5b777+fpUuXkpCQQHZ2NnFxcUydOpXJkycfsdziL3/5C5988gkdOnQgNzcXgKeeegpjDD/88APr1q1j/PjxrF+/vlbn+uCDD7J69WrS0tIA2Lp1a9W6o+03LS2N7777jpCQEHr37s2vfvUrOnXqdIQjiIiIiPzEWkvF/mLKNuVRtimXsi15+IorAHAmhBLSPRpb4cM4G894cJNMpq217wPvJycn3xjoWA71+eefk5qayvDhwwEoKSmhdevWAPz5z39m+PDhuN1uHn/8ccB/0/zhD3/gq6++IigoiF27drFv3z6++OILLrnkEhISEgCIi4s75rFHjRrFddddx6WXXsqFF14IwOLFi/nVr34FQJ8+fejSpUutk+mjOdp+x40bR3R0NAB9+/Zl27ZtSqZFRETkMNZavFmllG7KpWyzP4H2FXoAcMSE4E6KJ6R7NCHdY3BGhwQ42iNrksl0bR1tBLmhWGu59tpr+fvf/37YuqysLAoLC/F4PJSWlhIeHs5rr71GRkYGqampuFwuEhMT69x67ZlnnmHZsmV88MEHDBs2jNTU1Fq9z+l04vP5ql6faOu3kJCfbnaHw0FFRcUJ7U9ERESaj4rc0p9Gnjfl4c0rAyAoMhh3jxhCuscQ0i0aZ3xogCOtncYzRt5MjBs3jrfffpv9+/cDkJ2dzbZt2wC4+eab+etf/8pVV13F3XffDUBeXh6tW7fG5XKxcOHCqm3POuss3nrrLbKysqr2AxAZGUlBQcERj71p0yZGjBjBX/7yF1q1asWOHTsYM2YMr732GgDr169n+/bt9O7d+6D3JSYmsnLlSgBWrlzJli1bjnms2uxXRERExFtQTnHafnLe3cCeh1aw98EV5Ly1ntIfswnuHEnM+d1p89thtPvDKcRd3ofw4W2bTCINzXxkOhD69u3L/fffz/jx4/H5fLhcLp566im+/PJLXC4XV155JV6vl9NOO40vvviCq666iilTpjBgwACSk5Pp06cPAP369eOPf/wjp59+Og6HgyFDhjBr1iwuv/xybrzxRh5//HHefvttunfvXnXsu+66iw0bNmCtZdy4cQwaNIg+ffrwy1/+kgEDBuB0Opk1a9ZBI8cAF110ES+//DL9+vVjxIgR9OrVC4D4+HhGjRpF//79mTRpErfddlvVe2699dZj7ldERERaHl+xh7LNef7SjU15VOwvBsC4HYR0jSbi1PaEdI/B1SYME9T0528wjbHFSG0lJyfblJSUg5alp6eTlJQUoIikJdA9JiIi8hNfWQVlW/OryjY8uwvBgnEFEdw1mpBu0bh7xOBqH9Gkk2djTKq1NvnQ5RqZFhEREZFasx4fZdt/Sp7LdxSAz4LDENIliqifdSGkezTBHSMbVdeNhqJkWkRERERqZL0+yncWVibPuZRty4cKC0EQ3DGSyNM7+jtudInCuByBDvekUzItIiIiIlWsz+LZW+RPnDfmUrYlH1vuBcDVLpyIke0J6RFDSGIUQW6lkroCIiIiIi2YtZaKzJKqso2yTbkHTZQSNrS1f+S5WwyOcFeAo218mmQyXdsZEEVERETkcBW5ZT+NPG/KxZtfDoAjOhh3nzj/yHMjniilMWmSyXRjngFRREREpLHxFnl+qnnelEdFZgkAQeFOQrrFENIjBnf3GBzxboxpuh03AqFJJtONncPhYMCAAVWvL7/8cu65554at581axYpKSk8+eSTJyM8ERERaeZ8ZV7KtuRVjTx79hQBYEL8vZ7DR7QjpEfz6fUcSEqmG0BoaChpaWkNtv+KigqcTn3pRERExM9W+Cjfnk/pxkPa1TkNIZ2jiBrfhZDuMf52dQ4lz/VJGdlJlJiYSEpKCgkJCaSkpHDnnXeyaNGig7bJyMjglltuYfv27QA8+uijjBo1ipkzZ7Jp0yY2b95M586dmTNnTgDOQERERBoD67N4dvvb1ZVuzKV8az7W4wMDro6RRI6tbFeX2DLb1Z1MzTuZ/uge2PtD/e6z7QCY9OBRNykpKWHw4MFVr3//+99z2WWX1Wr306dP54477mD06NFs376dCRMmkJ6eDsDatWtZvHgxoaFNZ756EREROXEHddzYkEvp5jxsSWXHjdZhhA9vS0j3GEK6RRMU2rzTu8ZGV7sBnEiZx4IFC1i7dm3V6/z8fAoLCwGYOnWqEmkREZEWwptfTumBjhsbc/DmHei4EUJo33jclR03HFHBAY60ZWveyfQxRpBPNqfTic/nA6C0tPSI2/h8Pr799lvcbvdh68LDwxs0PhEREQkcX2lFVZ/n0o25VOwvBiAozOkfde7u77rhVMeNRqV5J9ONTGJiIqmpqUyaNIl33nnniNuMHz+eJ554grvuuguAtLS0g0pGREREpHmwFT7KtuVXjjznUr6zACwYVxDBXaMJH9bG33GjXbg6bjRiSqYbwKE10xMnTuTBBx9kxowZ/OIXv+BPf/oTZ5xxxhHf+/jjj3PbbbcxcOBAKioqGDt2LM8888zJCVxEREQajPVZPHuKKNuYc/BDg0EQ3DGSyDM74e4RQ3DnKIwzKNDhSi0Za22gY6iz5ORkm5KSctCy9PR0kpKSAhSRtAS6x0REpLYqskr87eoq+z1XTdPdOsxf89yj8qFBt8Y3GztjTKq1NvnQ5U3yK6fpxEVERKQxqpppcKO/7tmb7X9GyhH10zTd7h4xOKI0TXdz0SSTaU0nLiIiIo2B9Xgp21I5WcrGHDy7K2cadDsI6RZD5OgO/ocGW4XqocFmqkkm0yIiIiKBYH0Wz67CquS5bFs+VFhwGII7RxF1dhdCesYQ3EEzDbYUSqZFREREjqKq7nlDDqWbfposxdU2nIiR7XH3jCG4azRBwZppsCVSMi0iIiJSja/YU/XQ4EF1z9HB/slSelZOlhKpyVJEybSIiIi0cFX9njfkUroxB8+uQn+/5xAHId2i/XXPPWNwJqjuWQ6nZFpERERaFGstFfuKKd2QQ+mGXMq35P3U77lTFFHjOhPSM5bgjqp7lmNTMt3IJSYmkpKSQkJCAqeddhpLly4F4K677uLDDz/knHPOoXv37oSFhXHNNdfUer8REREUFhYettzhcDBgwICq15dffjn33HNPjfuZNWsWKSkpPPnkk8dxVgfbs2cPN954I/Pnzwdg+fLl3Hnnnezbt4+wsDCGDRvG448/TlhY2DFjmDlzJhEREdx55501Hm/u3Ln06tWLvn371rjNk08+SVhYGNdff32dz0tERBoPb345pRtyKks3cvAVeABwtgolLLkN7p6x6vcsdaI7pgk5kEgDPPfcc2RnZ+Nw1O/DDqGhoaSlpdXrPqurqKjA6Tz4tnvkkUe48UZ/l8N9+/ZxySWX8Prrr3PqqacC8Pbbb1NQUFBjMn285s6dy+TJk4+aTF9//fWMGjVKybSISBPlK/dStiXPX7qxIYeKfcUABIU7CekR658wpWcszhj1e5YT06yT6X8s/wfrstfV6z77xPXh7lPurnH91q1bmThxIiNHjmTp0qUMHz6cn//858yYMYP9+/fz2muvccopp5Cdnc3111/P5s2bCQsL47nnnmPgwIFkZWVxxRVXsGvXLk499VSqz1B5YDR56tSpFBYWMmzYMH7/+9+Tnp5eNRq7adMmbrvtNjIyMggLC+P555+nT58+bNmyhSuvvJLCwkLOO++84z7v6iPkKSkp3HnnnSxatOigbTIyMrjlllvYvn07AI8++iijRo1i5syZbNq0ic2bN9O5c2fmzJlz0Pveeecd7r//fgCeeuoprr322qpEGuDiiy8GqPGa1eT555/nueeeo7y8nB49evDKK6+QlpbGvHnz+PLLL7n//vt56qmnuO2226re88MPP7B582a6dOlCYmIiy5cv55RTTjnu6yUiIifXgam6SzfkULYhh7Kt+eC14DSEJEYTPrQ1IT1icbULxwSpdEPqjyZ+bwAbN27kt7/9LevWrWPdunXMnj2bxYsX8/DDD/PAAw8AMGPGDIYMGcL333/PAw88UFWicd999zF69GjWrFnDBRdcUJWYVjdv3ryqEeTLLrvsoHU33XQTTzzxBKmpqTz88MPceuutAEyfPp1f/vKX/PDDD7Rr167G2EtKShg8eHDVxxtvvFHr854+fTp33HEHK1as4J133uGGG26oWrd27VoWLFhwWCK9ZcsWYmNjCQnxjwysXr2aYcOGHXH/NV2zmlx44YWsWLGCVatWkZSUxAsvvMBpp53G1KlTeeihh0hLS2PUqFGkpaWRlpbGjTfeyEUXXUSXLl0ASE5O5uuvv671+YuIyMnlzSujKGUfWXPWsedv37L/ie/I/3grvqIKIk5rT8L1/ekw41Ra3TCAyNM7EdwhQom01LtmPTJ9tBHkhtS1a9equuN+/foxbtw4jDEMGDCArVu3ArB48WLeeecdAM466yyysrLIz8/nq6++4t133wXg3HPPJTY2ttbHLSwsZOnSpVxyySVVy8rKygBYsmRJ1fGmTZvG3Xcf+dqcSJnHggULWLt2bdXr/Pz8qrrsqVOnEhoaeth79uzZQ6tWrWq1/5quWU1Wr17NvffeS25uLoWFhUyYMKHGbZcsWcLzzz/P4sWLq5a1bt2adevq9y8bIiJSd1WlG+v9Dw5W7K8s3Yhw4e4VR0gvf/mGWtbJydQkk2ljzBRgSo8ePQIdyhEdGGUFCAoKqnodFBRERUVFgx3X5/MRExNTYzJ8Iu18nE4nPp8PgNLS0hqP/+233+J2uw9bFx4efsT3hIaGHrS/fv36kZqaWqdSlENdd911zJ07l0GDBjFr1qzDylIO2LNnD7/4xS+YN28eERERVctLS0uP+AuAiIicHNZn8ewt8k+Wsr566UYQIV2jCE9ug7tXLM42YWpZJwHTJMs8rLXvW2tvio6ODnQodTZmzBhee+01ABYtWkRCQgJRUVGMHTuW2bNnA/DRRx+Rk5NT631GRUXRtWtX3nrrLcDf+mfVqlUAjBo1itdffx2g6rjHIzExkdTUVICq0eFDjR8/nieeeKLqdW1GuHv16lU1Wg9w++2389JLL7Fs2bKqZe+++y779u2r8ZrVpKCggHbt2uHxeA4658jISAoKCgDweDxccskl/OMf/6BXr14HvX/9+vX079//mOcgIiL1x1tQTtHKfWS/vo49Dyxj/+PfkfdRtdKNX/Snw4yRtPrFACLHdsTVNlyJtARUk0ymm4OZM2eSmprKwIEDueeee3jppZcAf13wV199Rb9+/Xj33Xfp3Lnzce33tdde44UXXmDQoEH069eP9957D4DHHnuMp556igEDBrBr164a339ozfSBtngzZsxg+vTpJCcn19hB5PHHHyclJYWBAwfSt29fnnnmmWPGGx4eTvfu3dm4cSMAbdq04fXXX+fOO++kd+/eJCUl8cknnxAZGVnjNavJX//6V0aMGMGoUaPo06dP1fLLL7+chx56iCFDhrB06VJSUlKYMWNG1Tnv3r0b8Jd+nH322cc8BxERqTvr8VG6MYfcD7ew79GV7PnbMnLeXE/phlzcPWKIvaQX7f4wgja/GUrMud1w94zFuDRttzQepnq3iKYmOTnZpqSkHLQsPT2dpKSkAEUkdfG///2P1NTUqo4ejcF3333HI488wiuvvHLYOt1jIiJ1Z62lIqPEX7axIYeyzZUTpjgMIV2i/HXPPdV1QxofY0yqtTb50OVNsmZampcLLriArKysQIdxkMzMTP76178GOgwRkWbBV+yhdFMuZetzKV2fgzfP/3C8MyGU8OFtCekVS0jXaIJCNOIsTY+SaWkUqrfRawxU3iEiUnfWZynfWeDvurE+h/IdBWDBuB24u8cQclYn3D1jccYd/sC6SFOjZFpEREROmDevjNLKrhulG3KxJRVgwNUxksgzO+HuFUtwpyiMQ6Ub0rwomRYREZHjZit8lG3N89c+r8/Bs7ey53NkMKF943H3iiGkRyyOcFeAIxVpWEqmRUREpFYqMv0PDpauz6FsU+5PDw4mRhE9KZGQXnG42qrns7QsSqYbQERERNXMfwCzZs0iJSWFJ598MoBRiYiIHB9fuZeyzXmU/pjtf3Awyz/JliPeTVjlhCkh3WL04KC0aEqmRUREBKhsW7e/2D/6/GMOZVvywGsxriBCuscQOaqDf8bBBM0OKydHRUUF6at+YO2yFLK3bsdbXMrtTz4U6LAOomT6JMvIyOCWW25h+/btADz66KOMGjWKmTNnEhERwZ133glA//79mT9/PgCTJk1i9OjRLF26lA4dOvDee+9pmmsREakXvtIKyjblUvqjv3zDm1vZtq51GBGntfePPidGY1ya503qn8fjYeW3y9mUmkbu9l1U5BZgy8qwPg/WluGzxUBFtXc48Xg8uFyNpxa/WSfTex94gLL0dfW6z5CkPrT9wx+Ous2BWQQPyM7OZurUqQBMnz6dO+64g9GjR7N9+3YmTJhAenr6Ufe3YcMG5syZw/PPP8+ll17KO++8w9VXX33C5yIiIi2PtRbP3mJKf8ymbH0OZVvzwWcxIQ5CesQQeVYn3L3icMaEBDpUaQY8Hg+rv1vFumUp5GzZgSc3Hw5KlosA7yHvCiHIhOIwwYQEBRPsKCfCVUhCaBaJCR5oZBMONutkOlBCQ0NJS0uren2gZhpgwYIFrF27tmpdfn7+QfXVR9K1a9eq5HzYsGFs3bq1vkMWEZFmzFdaQemG3KoE2ptfDoCrXTiRYzrg7h1LcJcojEOjz3L8dm7bzoovvmT/j5soy8rBlpRivdWT5YpD3hGCozJZdjtcBAeVExVcQOuwLHq28dC+Y1uIbg0xnSC600//RncEZ+P7Ja9ZJ9PHGkEOBJ/Px7fffovbfXCjeqfTic/nq3pdWlpa9XlIyE83jsPhoKSkpOEDFRGRJqv66HPpj9mUbyvwjz67Hbh7xuLuFYu7dyyOqMaXmEjjU1ZaRuripWxIWUnBzr14C4qwnnLwleOjBGsPzUtcBJkwHMZFSFAMwQ5/stwqNJNebSro0LktxLSFmC4Q0/mnj8h2ENT0HmZt1sl0YzR+/HieeOIJ7rrrLgDS0tIYPHgwiYmJVTXSK1euZMuWLYEMU0REmhhfWQVlGyprn3/MPnj0eWxH/+hzZ02aIkeWmZHBtwsWsmf1Okr2Z1WOLpfXUIphMCYcByEEm3CCnSGEBxcRH5JD94RiEjvH4IpvDbFd/AnzgX8j24Gj+aWeTfKMjDFTgCk9evQIdCjH7fHHH+e2225j4MCBVFRUMHbsWJ555hkuuugiXn75Zfr168eIESPo1atXoEMVEZFGrKrzRmXyXLY13995I8SBu2cM7t5xGn2Wg+zctp3lCxay78eNeDJzKx/0K8dnS7C26JCtnQSZcH8pRpALt7OU6JB8OkRm06+zi4h20RDbCWITISax8t9OjbIMo6EZ28iKuI9HcnKyPVCLfEB6ejpJSUkBikhaAt1jIhIovnLvT5031mVXdd5wtQ0jpHdcZecN1T63ZDu3bWfZZ1+wf91GPNmVCbO3HB/FRyjHcFfWLjtxBVUQ5iomwZ1Nt/hiuneNwZXQA+ISIbar/yOuK4TGQgudlMcYk2qtTT50eZMcmRYREWkpKrJKKF2XTcmPOZRtzoUKiwkOIqRHLJFndsLdW503WprMjAyWfPwZe1evozQzB0pLKxPmEqwtPmhbY0IJIpRgE0Gw0014cAFtQrPp2bacLl07QlzbykS5mz9ZjukCLncNR5YjUTItIiLSiNgKH2Vb8ihdl03pjzlUZPpHE52tQokY2R53n8q+z06NPjdnxSUlfLNgIVtWfEfx3gxscYk/Ya4qyaheWeDGYcIINuG4nCFEVCbMfTpW0LFLJ4jr6E+U47r5P6I7Ncva5UDRlRQREQkwb34ZpetyKPkxm7INudhyLzgNId1iiDi1He4+cTjjNVlXc5T+w1pWLviC3E3bqSgowJaXY20pPlvIwQ/9uXCYcFwmFJfDRbirmDZhmfRuV06Xbp0gvoM/UY7vDnHd/W3kmmBnjKZIybSIiMhJZn2W8p0F/tHnddl4dvsf/nJEBxM2pBXu3nGE9IghKFjJUHNQVFzMko8/Y1vqKkr2ZWJLKkeZKcLa0mpbBlU+9BdCiCOGUEcJ8aE59GhdSM+uCbjatIH4Hv6PuG7+kgyNMAecvgIiIiInga+0gtL1OVXlG74iDxgI7hxF1IRE3H3icLUNw7TQh7uag13btrP4g0/J/HEjFbn52PKyGkaZQ3CYcIJNBCGuEKJD8ukYlc2A7qFEtu/gH11O6PlT0uzSXyUaMyXTIiIiDcSTUexPntOzq6btDgpzEtIrltA+cYT0jMUR7gp0mHKcVq9MY+Xni8jbvANfQWFlLXPxIe3lDEEmAocJwe2IIcxZTEJoFn3al9Gte0dMqy6VCXNP/79h8S22S0ZTp2S6gXi9XpKTk+nQoUPVZCyPPvooN910E2FhYQBEREQccyrxukpMTCQlJYWEhIQ6vf+6667jyy+/JDo6GmstjzzyCOPGjavnKGvnwHTsTz75JD6fj5///Oc4HA5eeOGFI47g5ObmMnv2bG699VYAtm7dytKlS7nyyitPdugi0sLYCh9lW/MoTfeXb1Rk+f+E72wTRuTYDrj7xBHcSROnNAUVFRWkfrOMtYuWULBjN7aoGOstO0JphpMgE4HLhBHsDCYyOJ8OkVkM6h5MTKeO/kQ5oZf/IzYRnMGBOiVpIEqmG8hjjz1GUlIS+fn5VcseffRRrr766qpkur5UVFTgdJ7Yl9Lr9eJwHFyb99BDD3HxxRezcOFCbrrpJjZs2HBCxzhR1lpuueUWPB4P//3vf2v8U2hubi5PP/30Qcn07NmzlUyLSIPwFpZX9X0uXZ+DLfM/POjuHkPEaH8C7YxVq7HGyuPxkPL1UtZ+tZSiXXuxxf6k2WuLgLJqWwbjMBEEm0hCXCHEhuTQJT6PQb1iCW7X7qeEuVVviGijUeYWRMl0A9i5cycffPABf/zjH3nkkUcA/8yHu3fv5swzzyQhIYGFCxcC8Mc//pH58+cTGhrKe++9R5s2bQ7aV3Z2Ntdffz2bN28mLCyM5557joEDBzJz5kw2bdrE5s2b6dy5M08++SRXXHEFu3bt4tRTT6X6ZDyvvvoqjz/+OOXl5YwYMYKnn34ah8NBREQEN998MwsWLOCpp55i9OjRRzyfU089lV27dgEHjxIDTJ48mTvvvJMzzjiDiIgIpk+fftj5bNq0iauuuoqioiLOO+88Hn300aoR+Yceeog333yTsrIyLrjgAu67774ar+uvf/1rsrKyeOONNwgKCmLmzJlERERw5513AtC/f3/mz5/PPffcw6ZNmxg8eDBnn302X3/9Nenp6QwePJhrr72WCy64gGnTplFU5P9z3JNPPslpp5123F9nEWmZrLVU7CumJD2b0vQsyncUgIWgyGDCBrXC3UcPDzZG/pHmb1mzcAmFO3ZXS5oLgfJqW4bgNOG4gyJxO4OJc2fRo00RfXq1xdUuERJ6+xPmhJ7gjg7Q2Uhj0qyT6a/fXE/mjvoto0joFMGYS48+1fdvfvMb/vnPf1JQUFC17Ne//jWPPPIICxcurCq9KCoqYuTIkfztb3/jd7/7Hc8//zz33nvvQfuaMWMGQ4YMYe7cuXzxxRdcc801pKWlAbB27VoWL15MaGgov/71rxk9ejR//vOf+eCDD3jhhRcA/2x9b7zxBkuWLMHlcnHrrbfy2muvcc0111BUVMSIESP4f//v/x31fD7++GPOP//8Y16bms5n+vTpTJ8+nSuuuIJnnnmmavtPP/2UDRs2sHz5cqy1TJ06la+++oqxY8cetu/Zs2eTlJTEokWLjjkK/+CDD7J69eqq67Ro0SIefvjhqnKb4uJiPvvsM9xuNxs2bOCKK67g0Jk0RUSqsxU+yjbnUZKe5Z95MKdy5sEOEUSN6+x/eLB9BCZIo5GNwdq0Vaz4+HPytuzAFhZVS5qrjzQfSJqjcDvLiA/LolfbUnr2bI+rXU9o1eenpFkPAMpRNOtkOhDmz59P69atGTZsGIsWLTrqtsHBwUyePBmAYcOG8dlnnx22zeLFi3nnnXcAOOuss8jKyqoqHZk6dSqhof5v8K+++op3330XgHPPPZfY2FgAPv/8c1JTUxk+fDgAJSUltG7dGgCHw8FFF11UY3x33XUXf/jDH9i5cyfffPPNMc+9pvP55ptvmDt3LgBXXnll1Ujyp59+yqeffsqQIUMAKCwsZMOGDUdMpocOHcq6detYvnw5o0aNOmYsR+PxeLj99ttJS0vD4XCwfv36E9qfiDRP3iJP5cODWZSu9/d+Nq4gQnrEEHlmJ0L7xOGI0syDgbR7xy6+fm8+Ges24s0rwFaU4bNFh8wC6C/PCAmKItRZSnxoFr3aldCzZwdc7XtVJs19/EmzU19POX7NOpk+1ghyQ1iyZAnz5s3jww8/pLS0lPz8fK6++mpeffXVw7Z1uVxVdb8Oh4OKiorjOlZ4ePgxt7HWcu211/L3v//9sHVut/uwOunqDtRMP/HEE1x//fWkpqbidDrx+XxV25SW/vQQxvGej7WW3//+99x8880HLX/qqad4/vnnAfjwww8B6NOnD3/5y1+49NJL+eSTT+jXr99RYzmaf/3rX7Rp04ZVq1bh8/lwu1XLKCKV5RsZJZSmZ1GyNpvy7fn+8o2oyt7PfeJw94jBuFS+cbIVFRfz5fsfsW1FGuUZWdjy0sqZAAuqbeXAYSIJNuGEOF3EunPo3rqA/n3a4GrfDVr3rUyae2m6bKlXzTqZDoS///3vVYnrgfKCA4l0ZGQkBQUFx9VhY8yYMbz22mv86U9/YtGiRSQkJBAVFXXYdmPHjmX27Nnce++9fPTRR+Tk5AAwbtw4zjvvPO644w5at25NdnY2BQUFdOnSpdYx3H777bz44ot88sknJCYm8vTTT+Pz+di1axfLly8/5vtHjhzJO++8w2WXXcbrr79etXzChAn86U9/4qqrriIiIoJdu3bhcrm47bbbuO222w7bz2mnnca///1vJk+ezJdffkliYmJV6cbKlSvZsmUL8NN1PuDQ13l5eXTs2JGgoCBeeuklvF4vItIyWa/9qftGelZV9w1Xhwgiz+pMaFIcrg4R6v18Eq1OTWPFR59RsG0ntrgYn7cUny0AfhqgCTKROI2bYIeT6JB8OsXkMrRvNGEdO0ObvtA6yV/bHBIRuBORFkPJ9El00003MXHiRNq3b1/1AOKxzJw5k+uvv56BAwcSFhbGSy+9dMTtZsyYwRVXXEG/fv047bTT6Ny5MwB9+/bl/vvvZ/z48fh8PlwuF0899dRxJdPGGO69917++c9/smDBArp27Urfvn1JSkpi6NChx3z/gS4mf/vb35g4cSLR0f4HNsaPH096ejqnnnoq4G8V+Oqrr1aVoRzJlClTyMzMZOLEiXz22We8/PLL9OvXjxEjRtCrl/8vEfHx8YwaNYr+/fszadIkHnjgARwOB4MGDeK6667j1ltv5aKLLuLll19m4sSJtRrhF5Hmo2rylLVZlPyYgy2pAIchpHsMEWM64k6KwxmtP/c3tIL8Ar743zx2pa3Gk5WL9ZQeVqJhjBsH4YQ4ogl3FdM2IoshPR207t4dWverTJz7QlhcAM9EWjpTvetDU5OcnGwPfXAsPT2dpKSkAEUkR1JcXExoaCjGGF5//XXmzJnDe++9F+iw6kz3mEjTU5FbSml6NiVrsyjbnAdeS1C4E3efeEKT/JOnBIWofKOhpH+/hm/nf0TBlh3YomJ8vpLK0eYDfxkMqhxtDsbtLCfOnU1Sh2L6JCUS1K4/tOnvT5pjOqvlnASMMSbVWpt86HKNTEuDS01N5fbbb8daS0xMDC+++GKgQxKRZs5ai2d3ESVrsyhNz8Kz298K09kqlIhRHQjtG0dw5yh136hnHo+HLz/8hA1LllG+LwvKS/HaooNmBjww2ux2xhDhKqRjdDbDkiKISuwCbfpB2/7+Eg3VNUsT0SSTaWPMFGBKjx49Ah2K1MKYMWNYtWpVoMMQkWbOeivb163NonRtNt68MjAQ3DmK6EldcfeNw9WqfifNasmyM7P5/J257PthLd7cAmxFKV5bwE89mw1BJhKXCSPE6SIuNJuk9iX0SkrA1XEQtBngT5w1wYk0cU0ymbbWvg+8n5ycfGOgYxERkcDxlVZQ+mOOP4H+MRtbWtm+rmcsUWf7+z87IjR984navHETi9+dR+6GbdiiosoyjXzgQEclJw4ThdsRRZirmHYRWQztHUzrHh39CXPbAdAqSaPN0iw1yWRaRERaLm9+OSXpWZSsyaJsU25V/XNovwRC+8YT0lOzD56IH1K/Y/n8TyjatgtbWozXV3xQC7qfyjRiiQrJp0tcDsMGtCa0cx9oO9CfPMd00WiztBhKpkVEpNHz7C/2jz6vqZy+G3DEu4k4rT2hfeMJ7qL657pYsfgb0j5eQMmuvdjSkiPUN4fjNKGEOJ3EunP8DwX2bY2r05DKxHmAOmlIi6dkWkREGh3rs5TvLPC3r1uTRUVGCQCujhFEje9CaL94nK3D1P/5OCz78mtWfbKQ0t378JWV4LOFB7Wh89c3hxLidJEQnsXARA89+nWDdoP8H637QrBqzkUOpWS6gcydO5cLLriA9PR0+vTpw9atW0lKSqJ3795YawkPD+e///0vvXv3Zvny5dx0002A/wn0mTNncsEFFwT4DERETq6qBwjXZFGyNgtffjkEQUi3GCJOa487KR5njPo/18aKxd+Q9tFnlOyqKXGOwmXCCXU5aRWexdCehk5JnX5KnFv1BocrgGcg0nQomW4gc+bMYfTo0cyZM4f77rsPgO7du5OWlgbAs88+ywMPPMBLL71E//79SUlJwel0smfPHgYNGsSUKVNwOvXlEZHmzVfupWx9jj+BTs/GllZgXEG4e8Xi7p9AaO9YgsKU1B3N6tQ0vp33AcXb9/hrnI+SOLcJz2RYbyftk7pAu8HQfjDE94Ag1ZiL1JWytQZQWFjI4sWLWbhwIVOmTKlKpqvLz88nNjYWgLCwn/5sVlpaqj9bikiz5iv2UJKe7X+AcEMO1uMjKMxJaN84Qvsn4O4Zg3EpuTuSzRs38eWb/6Ng0zZsSTFeXxHWFlat95dq+BPn1hFZJPdy0D4p0Z80txtcmTgHBSp8kWapWSfTC2c9x/5tm+t1n627dOPM62466jbvvfceEydOpFevXsTHx5Oamkp8fDybNm1i8ODBFBQUUFxczLJly6res2zZMq6//nq2bdvGK6+8olFpEWlWvPnllKzNomRNJmWb8sBncUQHE5bchtB+CYR0jcY4NJBQXWZGBp/NeYuMNRuwBYX4fEWV7ej8jInAady4nU5ah2cxpBd06dsF2g/xf8R314izyEmgjK0BzJkzh+nTpwNw+eWXM2fOHG6//faDyjzeeOMNbrrpJj7++GMARowYwZo1a0hPT+faa69l0qRJuN3qxykiTVdFdiklazIpWZ1F+fZ8sOBMCCVybAdC+yXg6hihv8RVKistY8G777H1m1QqcnLxVRTjs3kc6ONsjBuniSDMGUecO5tBiWX0GtwLOgz1J84JvcGh/9JFAqFZf+cdawS5IWRnZ/PFF1/www8/YIzB6/VijOG22247aLupU6fy85///LD3JyUlERERwerVq0lOPmz6dxGRRs2zv5iSHzIpWZNZNYW3q304UT/rQmh/deA4IHXpMlLe/5jS3Xux5SV4ffn8NHOgC6eJwu2MJTokj97tCxk4uAOuLsOh/VD/lNtOPYgp0lg062Q6EN5++22mTZvGs88+W7Xs9NNPZ8eOHQdtt3jxYrp37w7Ali1b6NSpE06nk23btrFu3ToSExNPZtgiInVircWzu4iS1ZmUrM6samEX3DmS6HO6+lvYxYcGOMrA2rd3L5+99ibZ6ZuwxYWH1DkbHCYatyOKCFcRXRKyOWVILGFdh0GHYf7OGiERAY1fRI5OyXQ9mzNnDnffffdByy666CL+/ve/V9VMW2sJDg7mP//5D+BPrB988EFcLhdBQUE8/fTTJCQkBCJ8EZFjstZSvqOgMoHOwptdCgZCukb7J1HpF48jqmWOnHo8Hha+/zEbv1qCJzPnCOUa/klQQl0O2kZkMWJAMK379PEnzh2GQUTrwJ6AiBw3Y60NdAx1lpycbFNSUg5alp6eTlJSUoAikpZA95i0RNZnKd+e7y/hWJ2JN68cHIaQ7jGE9U/A3TcOR0RwoMM86bZt3sIXs9+mYPM2fCXF+Gw+1pZWrnXiNFEEOwyxoTn071xK/2EDoEMydEyGuO7qrCHShBhjUq21h9XgamRaRESOyPosZVvyqkagfQXl4DS4e8YSNT6B0KS4FtUD2uPx8MV7H7Dxq2+oyMrB5z0w6uwflAoyUQSbSMJDHHSKzeHUoTGE9zjFnzi3GwSull3uItJcKZkWEZEq1msp25zrT6DXZOEr9PgnUekdS+iABNx94ggKaRn/dezZtZvPXn2d3B+3YEuK8B406ux/SDDUGUtcWDbDevnoPqg7dBzu/4hqF9DYReTkaRk/EUVEpEbW66NsU+UI9JpMfEUVmOAg3H3i/Al07ziCgpt/v+JvF37Jd/M/o3xfxmG1zkEmsmrUuUt8NiOHtyKs20h/4tx2gKbeFmnBlEyLiLRABxLo4u8zKF2bha+4AhPswJ0UR9iABNy9Y5v1LITFJSV89Mob7EpdhS0owOsrwNqiyrUOnCYatzOGuNBchvSooNfQHtDpFOh4CkS2CWjsItK4KJkWEWkhqkagK/tA+4orMCEOQpMqR6B7Nd8Eevf2HXzyyhvkb9yCLS3G68vjQF9nY0JxmnDCXA46xGQyalgronqPgE4joO1AcLa8BytFpPaUTIuINGNVNdCVXTgOjECH9o0jdECrygS6+XWU+G7ZCpa9+z5lu/djPcV4bS4/lWz4+zpHBhfQu0MBQ4d3x9VtlD95jukMmlRGRI6DkukGMnfuXC644ALS09Pp06cPW7duJSkpid69e2OtJTw8nP/+97/07t276j3bt2+nb9++zJw5kzvvvDOA0YtIU1bVheP7DH8CXVRZwtG3soSjmY1AV1RU8OUHH7NuwVdUZOfg8xbhs/mVa/0lG2HOWOLDshmeZOk6uC90HuGvd3ZHBzR2EWn6lEw3kDlz5jB69GjmzJnDfffdB0D37t1JS0sD4Nlnn+WBBx7gpZdeqnrP//3f/zFp0qRAhCsiTZz1Wcq35VP8fQYlP2T+1IUjKY6wga2aVQ10eWk5H73xJtu+ScXm51fWOxdXrg3GFRRFuDOG9lGZjEqOJDZpBHQe6S/Z0IOCIlLPlEw3gMLCQhYvXszChQuZMmVKVTJdXX5+PrGxsVWv586dS9euXQkPDz+ZoYpIE1Y1E+EqfwLtzS/3J9B94ggd2Hy6cBTkF/DBS7PZv2oNtqiQCl8eUAaAMWG4TBjhriASW+UwemR7gnuMgS6nQVw3lWyISINr1sl07vubKN9ddOwNj0Nw+3BipnQ/6jbvvfceEydOpFevXsTHx5Oamkp8fHzVdOIFBQUUFxezbNkywJ98/+Mf/+Czzz7j4Ycfrtd4RaR5sdbi2V3kH4H+PgNvThk4DO7ecUQPTMCdFE9QSNNOoLOzsvlw1qtkr1mPr6QIry8X8ABgTCQhQVFEhhTSu0Mew0b0wtV9DHQ+FSLbBjRuEWmZmmQybYyZAkzp0aNHoEM5ojlz5jB9+nQALr/8cubMmcPtt99+UJnHG2+8wU033cTHH3/MzJkzueOOO4iIiAhg1CLSmHn2F1O8KoOSVRlUZJZAkMHdM4aon3UhtF88Qe4m+eMcgMyMDD588RVy1m3Clh5InisA/6yCbkc00e58BnYtZeDIXtBllL9NXWhMIMMWEQHAWGsDHUOdJScn25SUlIOWpaenk5SUFKCIIDs7m44dO9KqVSuMMXi9XowxfPnll0yZMoXVq1cDUFJSQnx8PMXFxYwZM4YdO3YAkJubS1BQEH/5y1+4/fbbA3YeUrNA32PSclRkl1Yl0J69RWAgpFs0oQNbEdo/AUd406z/zczI4IP/vEzej5vxlRXh9eUAXsDfaSMkyEVMaC7Dennpfcpp/pKNjsMhOCywgYtIi2aMSbXWJh+6vOkOZTRSb7/9NtOmTePZZ5+tWnb66adXJcsHLF68mO7d/eUiX3/9ddXymTNnEhERoURapIXyFpT7SzjSMijfUQBAcOdIoqd0I2xAKxxRTa/ncXZmNvNffInc9I34Sg9NnmMIdcQSG5bD8CRDj+GDocto6DAUnCEBjVtEpDaUTNezOXPmcPfddx+07KKLLuLvf/97Vc20tZbg4GD+85//BChKEWlMfMUeStZkUbwqg7JNuWDB1S6cqImJhA1shTPOHegQj0tBXj7zXniJrB9+xFdaeFDZhqMyeY4Ly+GUfkF0Sx4CiWOg3WBNjiIiTZLKPESOk+4xqQ/W46UkPZvitAxKf8wGr8UR7yZsUCvCBrfG1brplDQUFRczf9ar7Fu5Gl9RwUEPDB4o24gNy2V4EvQ4ZQwkjoX2g9WmTkSaFJV5iIgEmPVayjblUpy2n5I1WdgyL0GRwUSMbOdPoDtGYJpAKzePx8PHb7zDlq+XYfPzDmpVd+CBwRh3PsP6VNBn5ODK5HmIRp5FpFlSMi0i0oCqekGnZVD8fYZ/MhW3g9ABCYQNbk1It2hMUONPoL/6+DO+n/8p3uwcvL78qklSjAknJCiKKHc+g7uXMXDUAOg6xv/AoGqeRaQFUDItItIAPBnFFKdlUJK2n4qsUnAaQvvEETa4Ne4+cRhnUKBDPKq1363iq9feomzPfnzeAnzW/zCkMW5cJpKIEENSpwKGjeqJq+eZ/j7P6rYhIi1Qs0ymrbVN4k+l0vQ05WcMpOEd6MRR/N1+PDsL/a3suscQeWYnQvsnNOpe0Pv37uOD518if8MWfOWF+GxO5RoXrqBoIl2Grq1zGDO2M8G9x/l7PavPs4hI80um3W43WVlZxMfHK6GWemWtJSsrC7e7aXVWkIblK/dSujaL4u/2U7ohB3zgah9O9DldCRvUCkd04yx1KCst4/2XZ7N72Up8xQXVOm4E4TQxhLniaB+TxRmnJRDZ/2zoOlYzDIqIHEGzS6Y7duzIzp07ycjICHQo0gy53W46duwY6DAkwKzPUrYxl+Lv9lOyJhNb7sMRE0Lk2E6EDWmFq014oEM8om+++JKV735ARXY2Xl8u1pYC/ocGQx0xxIfnMGpoKB2HjYFuZ0J8d9CghIjIUTW7ZNrlctG1a9dAhyEizVD5niKKv9tH8XcZ+ArKMW4HYYNbEza4NcGJUY3uQcI9u3bzwbP/pWjLdnyeQnw2D/ip7jnKDUN6ljFwzBDodha0GwSOZvffgohIg9JPTRGRo/Dml1Octp/ilfv9U3oHGdy9Ywkb2prQPvEYV+N5kNDj8fD+y7PZ+U1KZb/nAzMNOnCaGCKCo0lsncPpp3cluM/ZkDgKghvnKLqISFOhZFpE5BAH6qCLVu6nbEOOf0bCTpHEnNed0IGtcIQ3nslG1nyXxpevvIln7/6DWtYdKN1oHZHDmJExtBk6AbqdAVHtAxuwiEgzo2RaRAR/HXT51jyKVu6n5IdMbJnXXwd9RifChrbG1apxtH0rKi7mvWdfJHNVOr7SArw2B7BACMFBUUS6YUD3EoadMQy6j4O2AyGo8Yyei4g0N0qmRaRFq8gqoWjlfopX7sObU4YJrpxQZWhrQro2jglVli9eyoo35lKRlUWFN5cDsw06TCzhzhg6xudw5hkdCe83ERJHQ0hkQOMVEWlJlEyLSIvjK62g5IdMilL3Ub41398PukcM0eMTcfeLJyjYEdD4ioqK+N8zL5D1/Tp8ZQVVPZ+NCSUkKIro0HxGDAii16ix0GMcxHULaLwiIi2ZkmkRaRGsz1K2OZfi1P2UrM7Eenw4W4USNTGRsCGtcQa4H/SqFSksfvUtKjKyqPDm4B99NjhMLBGuWBJbZXPmuB4E953on23QGRzQeEVExE/JtIg0axVZJRSl7qN45X68uWX+dnZDWxM2rA3BnSIDNrmTx+Ph3ednsW95WmXtczbgb1sXEhRFTGg+pw1y0m30WdDjZxCt/uYiIo2RkmkRaXZ8Zd7KMo69lG+pLOPoGUv0pERC+yYErJ3dlg2b+OT5lyjbtQevN6+q84Z/9DmOTgnZ/OxnPQnuNwk6jdTos4hIE6BkWkSaBWst5dvyKUrZR8n3mdhyL854N1ETuhA2tE3Ayjg+f28+a+Z/hq8wD68vG/ABwQQHRRPlhlP6+Ug6fSz0HA+xXQISo4iI1J2SaRFp0rz55RSt3Edxyj4qMkswwUGEDmxFeHIbgrtEnfQyjqKiIt596nmyV/+IrzwPn80HKvs+O2NpF53NuDM7EjVoMnQdA67QkxqfiIjUr6Mm08YYNzAZGAO0B0qA1cAH1to1DR+eiMjhrNdH6bpsilbso3R9NvggODGK2DM6EjqgFUEhJ7cbx6Yf1/Ppcy9TvmdvtYcHg3CaWCKDo0hKLGTUhOHQayK06gMBqtMWEZH6V2MybYy5D38ivQhYBuwH3EAv4MHKRPu31trvT0KcIiJ4MoopWrGP4pX78BV6CIoMJnJsR8KGtTnpk6osnP8xP8z7GF9BbrXyDf/EKbGh+YweHkriqHP9Dw+GxZ3U2ERE5OQ52sj0cmvtjBrWPWKMaQ10boCYRESq+Mq9lHyfSdGKvZRvy4cgcPeJJ3x4G9y94jCOkzPKe6D7xt5l3+Ery8dncwF/+UaYM5b2sdn8bFw3wgdP8beuczSeKcdFRKTh1JhMW2s/AH+ph7W2tPo6Y0yCtXY//tFqEZF6V76rkKLleyhOy8CWeXEmhBI9KZGwoW1wRJ6cLhfZWdn874lnKdy4BW9FHtYWAQaniSUiOJo+XQoZPWE4ps+5kNBT5RsiIi1QbR5AXGGMudFa+y2AMeYi4O/4yz1EROqNr7SC4rT9FC3fi2d3ETiDCBuQQPgpbQlOPDkPE27esJFPnvkv5Xv2UeHNBsoBJ66gGKLclpEDDX3OmujvvhGe0ODxiIhI41abZPpK4EVjzCL8DyHGA2c1ZFAi0nJYaynfXkDR8r2UfJ+B9fhwtQsn5rzuhA1uTVBowzcdSl36LUtffQtfTjYVvmzAC7gJCYomPiKPs8a0ps3IC6Dr6eByN3g8IiLSdBzzfylr7Q/GmL8BrwAFwFhr7c4Gj0xEmjVfsYfi7/ZTuHwvFfuKMcEOwoa0JvyUtrg6RDT4KPTn8+azZt6n/v7PNgsAYyIIdcTQPi6Hsyf0InzwBdBhGAQFZpIXERFp/I6ZTBtjXgC6AwPxl3bMN8Y8Ya19qqGDE5HmpWpileV7Kf4+Eyp8uDpGEHNhD8IGtSIopOFGoSsqKvjwtTfYunAp3tK8ag8QRhPujKV7+zzOOGcYrv7nQStVsYmISO3U5n+uH4AbrLUW2GKMGQE80rBhiUhz4iup8I9CL9vjH4UOcRA+rDXhp7QjuENEgx3X4/Hw7nP/9XfgqDaBisPEERUcTd9uxYw69wzocy5EtW+wOEREpPmqTZnHo4e8zgN+0VABiUjzYK3Fs7OQwmV7KFlVWQvdMYLYC3sSOqjhJlYpKynl7aeeIzNtTWUHjkL8HTjiiHZHkNzPx8Dxk6DXBPV/FhGRE3a0SVveB54DPrbWeg5Z1w24DthqrX2xQSMUkSbFV+71d+T4dg+e3UWY4KCqWujgjpENcszikhLeeuzf5K5eh7ciF2uLgSBcQXFEuS2nDgmm98/Ohx5nQ0jDjYSLiEjLc7SR6RuB/wP+ZYzJATLwz4CYCGwCnrTWvtfgEYpIk+DZW0Thsj0Ur9yPLfPiahtOzPmVHTnc9V8LXVRUxJv/eor8dRvxVuRgbQngwBUUS0yoZczISLqecQl0O1MdOEREpMEcbdKWvcDvjDE7ga/xJ9IlwHrrH/YJGGPMFGBKjx49AhmGSItnK3yUrM6k8Ns9lG/NB6chbEArwke2I7hzZL135KhKoNM34vUeSKD9PaDjwixnjImn45hLIHEsOE/OxC4iItKy1Wa4qDXwFrASeBFY1aAR1YK19n3g/eTk5BsDHYtIS1SRW0rRsr0UrdiLr9CDI95N9DldCRvWBkd4/U6jXVRczNuP/ZvcNT9WG4H2J9Dx4ZazTm9Fu9GXQ5dR4Gj4ntQiIiLV1eYBxHuNMX8CxgM/B540xrwJvGCt3dTQAYpI42B9lrJNuRR+s4fSdH9fZnefOCJObU9IjxhMUP2NQpeXlvPmk/8mK21NtRron0agx53Z+qcEOqhhHmQUERGpjVoN41hrrTFmL7AXqABigbeNMZ9Za3/XkAGKSGD5SisoStlH0bd7qMgsISjcReTpnQg/pS3OuPqrRfZ4PLz97xfYvyINrycHa4s4UAMdG2Y56/QEOoy9Qgm0iIg0KrWZtGU6cA2QCfwHuMta6zHGBAEbACXTIs2QZ28Rhd/spvi7/dhyH8GdI4m9rDdhAxIwzvqbEXDurFfZtnAJ3rJcrC3gQBeOmFDLGaNj6HzmldBltEo4RESkUarN/05xwIXW2m3VF1prfcaYyQ0TlogEgvVaStZmUfTNbso25/kfKBzUmohT29VrW7tP353Huvc/wVuSi8/mUdUHOjScsadG0m3c5dD1dHDUb/21iIhIfatNzfSMo6xLr99wRCQQvEUeilbspeibPXjzynDEhBA9KZGw5Lb19kDh8q+X8O3Lb+IryMZrcwBwmjii3JGcMsTFgEmXQ/ezwBlSL8cTERE5GfR3U5EWrHx3IYVLd1OclgEVPkK6RxMztRvupPh6eaBw07p1fPzkC3iyMvD6sgCLw8QQ6YphSF8Pw6eeB70mQnD4iZ+MiIhIACiZFmlhDpRyFC7dRfmWfIwriPBhrYk4tT2utiee1GZnZvPWQ49Run0nFb5MwIsxEYQ7Y+ndpZAzL5kIfSZDaMwJH0tERCTQlEyLtBC+kgqKVuylcOluvLllOGJDiD6nK+HJbQgKO7FSjrLSMt547Glyvk+noiILKMMYN25HLF1a5zHholG4Bl8CkW3r52REREQaCSXTIs2cJ6OYwiW7KV65z9+Vo2s0MZO74e574qUcH8x+k40fL8RbnoO1hYCT4KBYWkfnMWnqQKJGXAXx3evnRERERBohJdMizZC1lrKNuRQu3kXpjzngMIQNbk3EqPYEt484oX2vWr6CL//zGt78LHw2hwOdOGLCffzszHZ0OOsaaD8U6nkqcRERkcZIybRIM2I9PorT9lO4ZBeevcUERbiI+llnwke2wxERXOf9Zu7fz1v/fJzyXbsr66B9BJloooKjGTHEwcAp06DbGeoFLSIiLY7+5xNpBryF5RR9u4fCb/fgK/TgahtO7MW9CBvcqs4TrHg8Ht564lkyUr+vVgcdRpgzlh6dijj78smQNBlC6q//tIiISFOjZFqkCfPsL6bw610UfbcPKizuPnFEjO5ASPdoTB3LLBZ/uoCVr8/FW5yNz+YDDoKD4mgbk8+5Fw4n7JQrIbpD/Z6IiIhIE6VkWqSJsdZStimPwq93+uuhnUGED2tDxOgOuFqF1Wmfe3fv4d1/Pkb5vr14fZkAOEwccaERnHV6K7pMuB7aDVYdtIiIyCGUTIs0Edbro+T7TAq+3olndxFB4SdWD+3xeHjrqWfJWPE9FRWZQDnGhBPujGNA73JGXXoZ9DgbnHWvtRYREWnulEyLNHK+sgqKlu+jcMkuvLllOFuFEnthT8KGtMa4jr8eOnXptyx5YTbeoszKMg5/O7t2cflMuWw0IcOuhPD4+j8RERGRZkjJtEgj5c0vo3DJbgqX7cGWegnuGkXM1O64+8Qdd3/ogvwCXn/wEYq3bKvqxuEwccSGRnLmGQl0nXgTtB3QMCciIiLSjCmZFmlkPPuLKfhqJ8Xf7QefJbR/AhFjOhDSOeq49/XJO3NZ994neMuzsLYYY9yEOmPp3bWEcVddAj0nqIxDRETkBCiZFmkkyrbnU7BoJ6XpWeAIInx4WyLHdMAZH3pc+9m3dy/vPPhotYcJDa6geOIjLedeOISYUT+HqHYNcxIiIiItjJJpkQCy1lL6Yw4FX+6gfEs+JtRJ5JmdiDit/XE/VDh31qtsW/A1FZ5M/D2hI4hwxXLKEAdDLr4ZOo9UNw4REZF6pmRaJACs11LyQwYFi3bi2VuEIzqY6HO7EX5KW4JCHLXez+7tO/jfPx/Hk7kPr80GgggOiqdtXAFTrxpHyNBLwR3dcCciIiLSwimZFjmJrMdH0cp9FHy5E292Kc7WocRe0ouwQcc3U+H/XnyZ7V8srhyFLifIRBEVEs2Y0yLpc94vod2ghjsJERERqaJkWuQk8JVVUPTtXgoW78RX4MHVMYKYc5NwJ8XXujPHnl27effBR/Fk7D1oFLpDq0KmTJuIa9DFEFy3SVtERESkbpRMizQgX7GHgiW7KVy6G1tSQUiPGCIv60hI95haT/f9wZy32PjBgqpaaP8odAxjRkfT57zboE3fhj0JERERqZGSaZEG4C0op2DxLoq+2YMt9+LuG0/UmZ0I7hRZq/fn5WQz+/7/R9nuXZUdOfyj0O1bFTD1mkn+UWjX8XX5EBERkfqnZFqkHlXkllH41U4Kl+8Fr4/Qga2IOrMTrrbhtXr/0s++YMWrb+Ety8TaEowJJ9IVy4gRYQy65FfQtn8Dn4GIiIgcDyXTIvWgIruUgkU7KErdBxbChrYm8oxOuBKOPXrs8Xh49cFHyF/7IxW+DMDiDEqgTQxMnfYzwpKvgJCIBj8HEREROX5KpkVOQEVmCfkLd1D83T4wxj/Ryhkdcca4j/neTevW8eEj/6YiPwOfzQdCCHPGMag/nDbtdugwTH2hRUREGjkl0yJ14MkopuCLHRSn7QdHEBGntidybEcc0SHHfO8Hs99g04ef4/FkAB4cJpb48EjOuaA/rc+6BcLjG/4EREREpF4omRY5Dp79xRR8sZ3iVRkYZxARozv4k+jIo89WWFRUxGv3P0Tx1q0HPVCY2LGYKTdOgx4/g6Da95kWERGRxkHJtEgtHJZEj+1I5JgOx5zy+8fVa/j0X8/gKcrA2kKMCSPCFcvoUdH0u/QOiO9+ks5AREREGoKSaZGjqGsS/cHsN9n04QI8nv1ABQ4TR3xUOFOvPp3oU6+F4Np19xAREZHGTcm0yBF4Mkso+Hw7xWn7a51EezweXvrLPyncuBGvLwMIIiQonu6dS5h0y42QOFoPFIqIiDQzSqZFqqnILiX/8+0Uf7cP4wgiYkxlTfRRkug9O3fxzt/+H56cvfhsPsaEEuGK47RR0Qy4/LcQm3jyTkBEREROKiXTIvgnWylYuJ2iFfsgCH93jjM6HfXBwmWLvmbZi7PxlO3HP813DPHhkZx/1anEjL5evaFFRERaACXT0qJ5C8opWLiDwmV7AAg/pS1RZ3Y6aou7t5/7L7sWLaHCux/w4QpKoGNrF1NuvgpXnwnqyiEiItKCKJmWFslX7KHgq10ULtmF9foIG9qGqHGdccYeebIVj8fDS3/9J4UbNlS2tnPidsQxsH8QY35xJ7Tpe3JPQERERBoFJdPSovjKvBQu2UXBVzuxpV5CB7Ui6uwuNU77nZWRyZz7HsSTuQefzfPXQwfHctb4DvS84LcQ0eokn4GIiIg0JkqmpUWwFT4Kv91DwcId+Io8uJPiiBqfSHC7I7eo27B2LR89/DQVxfuxtpggE01ceCTnXz2G2DHXg+vY04WLiIhI86dkWpo167MUf7ef/M+24c0tI6RbNFETEwnpHHXE7ZcuWEjKS6/jKd8PeHCaeNq2Mlz4yytxJU1SPbSIiIgcRMm0NEvWWkrTs8n7ZCsV+4pxdYgg9qKehPSIwRyh1/O8l15jyycLKx8qtAQHJdA90cM5v7oD2g8+6fGLiIhI06BkWpqdsq155H20lfJt+TgTQom7sg+h/RMwQYcn0a898gSZK76jwrefAw8VDhkawmm/+L36Q4uIiMgxKZmWZsOzv5i8j7ZQmp5NUFQwMRf0IDy5DcZxcGmGf6bCf1C4cQNeXxYQQrgrnrHj2tH30rsgPD4wJyAiIiJNjpJpafK8+WXkL9hO0Yq9mGAHURMSiRjVnqBgx0HbFRUV8fKf/kbp7u34bC7GhBEZEsOkiwfSaeLtEBwWoDMQERGRpkrJtDRZvtIKCr7cSeHiXVifJeK09kSe1RlHuOug7fJysnnl3r/hydqNzxYQZCKJDYvm/OvOJG70teBw1XAEERERkaNTMi1NjvVailbsIf+z7fiKPIQOakX0+C444w/uFb1vzx7emvkPyvP2YG0RQSaa1lFRXHjrpYQPmqrOHCIiInLClExLk2GtpXRdNnkfbqEio4TgrlHEnNOP4E6RB223c+s2/vfXh/EU7cXaEhwmljbxDi6+4xe4epwJR+jmISIiIlIXSqalSSjfVUjeB5sp25yHMyGU+Gl9cfeNO6jN3eYNG5n/wL/wFO8DSnGaeDq0dXHeb27F1fXUwAUvIiIizZaSaWnUvHll5H2yleLv9hMU6iRmanfCR7Q9qEPHpnXr+PDBxykv2QeU4TQJdO7k5oLf3gVt+wcueBEREWn2lExLo+Qr91L49S4KFu3wP1w4piNRZ3YiKPSnW3bd6jV8+vCTeEr2AeW4ghJI7BLO1N/+AVr1ClzwIiIi0mIomZZGxVpLyaoM8j7aijevjND+8URP6nrQw4Ub1qbz0T8fPyiJ7t4Nzv2/P0F898AFLyIiIi1Oo0mmjTHhwNNAObDIWvtagEOSk6x8RwG572+ifHsBrvbhxF3Wi5BuMVXrN6/fwAcP/KuqnMMVlED37oZzfztDsxWKiIhIQDRoMm2MeRGYDOy31vavtnwi8BjgAP5jrX0QuBB421r7vjHmDUDJdAvhzS8n7+MtFK/cT1Cki9iLexI2tE3V9N/bNm7mvb89XPlgYWUS3S2Sc+/6C8R0DmzwIiIi0qI19Mj0LOBJ4OUDC4wxDuAp4GxgJ7DCGDMP6Aj8ULmZt4HjkkbAVvgoXLKL/M93YL0+Is/oSOSZnQgK8d+We3bu4u0Zf6e8cC9QijMogW6JkUz53UyNRIuIiEij0KDJtLX2K2NM4iGLTwE2Wms3AxhjXgfOw59YdwTSAM2m0cyVrMsmb/5mKjJLcCfFEXNuN5wJ/rro7MxsZv/hPsrzd2NtCU4TT2KXMM67ewbEdQ1w5CIiIiI/CUTNdAdgR7XXO4ERwOPAk8aYc4H3a3qzMeYm4CaAzp31J/6mxpNZQt77myj9MQdnq1ASft4Pd+84AAry8nn5D/dRlrULawtxmDg6dnBz8R//rAcLRUREpFFqNA8gWmuLgJ/XYrvngOcAkpOTbUPHJfXDV+6lYOEOCr7aiXEGEX1OVyJOa49xBlFWWsaLf5hJ6e5t+Gw+DhNDm9YxXHzPnbg6DAx06CIiIiI1CkQyvQvoVO11x8pl0gxZayldk0Xu/M14c8sIG9Ka6EldcUQFU1FRwUt//jsF69fhtTkEmShax8Zw+R9+g6tzcqBDFxERETmmQCTTK4Cexpiu+JPoy4ErAxCHNDBPZgm58zZRtj4HV9sw4m4aSEi3aABmP/Ik+1eswOvLwphwYiNiuOx3NxLe+/QARy0iIiJSew3dGm8OcAaQYIzZCcyw1r5gjLkd+AR/a7wXrbVrGjIOObmsx0v+wh0UfFlZ0jG5GxGntsc4DO+/MofNH35GhW8/xriJcsdy4e0XEJ98ARgT6NBFREREjktDd/O4ooblHwIfNuSxJTBKf8wm571NeLNL/SUd53TFERnMskVfs+z5l/BU7AOchLvimXT1aXQZfyMEqXmLiIiINE2N5gFEadq8eWXkzt9MyQ+Z/i4dNwzA3SOGzes3MP+2/4enbC/gw+1I4PTJPel/2V3gcAU6bBEREZETomRaToj1Wgq/2U3+p9uwPkvU+C5Eju1IfkEu/7np15W9oksJDmrFwFNiOP22+yE4PNBhi4iIiNQLJdNSZ+U7C8h5dwOe3UW4e8cSM7U7NsrJ83/4M0XbN+GzBf4JV7pHc94f/wHhCYEOWURERKReNclk2hgzBZjSo0ePQIfSIvnKvOR/to3CJbsIiggm7qo+hPZP4M2nnmXP4m/w2iyCTBRt4mO5bOa9uFr3DHTIIiIiIg3CWNt05z1JTk62KSkpgQ6jRSlZl03u3I14c8sIH9GW6IldWfzlF6S9/AYe7z6McRMZGsplv7ueqKQzAx2uiIiISL0wxqRaaw+bCKNJjkzLyectKCf3/U2UfJ+Js3UYrW4ZSAa5vHLzbZUPF0KoM4EJV4+m+8RfqM2diIiItAhKpuWorLUUp+4nd/5mbIWXqLO7EDwigRfu+ROlmTuwtpjgoFYMGd2O0TfPBGdwoEMWEREROWmUTEuNKrJLyfnfBso25BKcGEXsRT158+XnyHg+Fa/NwWFi6dw1igtnPAShsYEOV0REROSkUzIth7G+ynZ3n2wFDDHndSctbw0rpz9eWRcdSmxkHFfN/B0hHfsHOlwRERGRgFEyLQfx7C8m550NlG/LJ6RXLIyN5b9/+yvlxXsAS5gzgXNumkCX0484uaWIiIhIi6JkWgD/5CsFX+8kf8E2goIdxF7aizlvPknBpxvx2QJcQQkMGdWRMb+cCQ7dNiIiIiKgZFqoHI1+az3lOwpw94vnO5PO2oeeo8KXQZCJon27VlzxwP+DsLhAhyoiIiLSqCiZbsGsz1L49S7yPttKULADxiUw5+VHKS/fAziICInn0t/fRGzSqECHKiIiItIoNclkWjMgnjhPRuVo9PYCQpJi+WD122S/kI61RQQHteK0yf0YduVv1S9aRERE5Cg0A2ILc6BTR95HWzGuIHa0y2HZwrcqSzqi6dg5jEvufxSCwwMdqoiIiEijoRkQhYrcMnLeXk/ZxlxM13A++PZlCtZuAYKIcCdw+Z9vJ7r7YfeIiIiIiNRAyXQLYK2l+Lv95M7bBD7LWuePrFn4OT5bQHBQK06Z1JcR0+5USYeIiIjIcVIy3cx5izzk/m8DJauz8MQZPv/hLfLKNxFkImnbrg1X/eNRCIkMdJgiIiIiTZKS6Was5Mdsct5aj6+kgrUlP7A69Qss5YS6Erjodz+nzcDTAx2iiIiISJOmZLoZsh4feR9toXDpbkpCylm8fT7Z5RtwmDiShvVgwm8fgKCgQIcpIiIi0uQpmW5mPHuLyJqzjop9xWwsWsd3Wz/EZ4OIjkhg2oN/IaRV50CHKCIiItJsKJluJqy1FC7ZTd7HWyj3lrNs36fsLl5NcFArxlx6KoMvvCnQIYqIiIg0O0qmmwFvQTnZb62nbH0Oe0p2sGz/XMqtoXWbtkx7+HEIDgt0iCIiIiLNkpLpJq50Qw7Zb/yIp7CUtKyv2Zi/jBBHK87/1SV0O+2cQIcnIiIi0qw1yWRa04mD9frI/2wb+Yt2UlCew9L971JQUU7n7l245K+PgaNJfmlFREREmhRNJ94EVeSUkj1nHeXbC9hUsJrvsj4l2BnDxff+ktZ9Tgl0eCIiIiLNjqYTbyZKVmeS+UY6FWXlrMj8iF3Fe+jatxvn/+lhzWAoIiIicpIpmW4ibIWPvA/9vaNzyvaxdP97+IyTafffTUKPgYEOT0RERKRFUjLdBFTklLL7PysJyvLyY94Kfsj5jsR+bTn/3n9qNFpEREQkgJRMN3IlP2az979pWJ+PFRkfkeXJ5pq/301c1/6BDk1ERESkxVMy3UhZn2X3u6uxKbkUleXwTcZnxHYP49aZL2o0WkRERKSRUDLdCHkLykl/6DNiyqPYXLCKNbmrOO+eG2g/YESgQxMRERGRapRMNzI5a/eQ+d/viTChLM9eQElMJr984lkICgp0aCIiIiJyCCXTjciKp+fTZlsEXl85SzM+ZcQN4+gzVrMYioiIiDRWSqYbgfLiMlLufZ3Owd3YU7KV9PJvuPa/j4HDFejQREREROQolEwH2I9LvqPs7S10DulGeu53uEc7uebqpwMdloiIiIjUQpNMpo0xU4ApPXr0CHQoJ2T+zMfpU9SbSFcUy7M/Z8KDvyQ8rk2gwxIRERGRWmqST7VZa9+31t4UHR0d6FDqpDC/gM9ufYKBJYMo95axNvwbLnxuphJpERERkSamSY5MN2XL536Ia1EhSVGD2V64kXbX9ubc4X8KdFgiIiIiUgdKpk+i9373MP3sAJzBCXxfuJhJj92FcehLICIiItJUKZM7CbL2ZvDDX99hWOQIcsszyei6h3N+9ftAhyUiIiIiJ0jJdAP76tW3iUk19Ijsx+aCdHpNH0v/XhcEOiwRERERqQdKphvQvLseoh+DMU5IK/2KyU/+AYwJdFgiIiIiUk+UTDeA/OwcUv40h6GRI8kpyyCnbw6Tb/xjoMMSERERkXqmZLqerZj3Ec4vCugVOYAtBT/S8zdjGdCzV6DDEhEREZEGoGS6Hr3/x/9Hn/J+uIITSCtawuQn71ZZh4iIiEgz1iQnbWlsysvK+OTWRxlUkYzHV87GdulMfuIeJdIiIiIizZxGpk/QzvR0dj69gn5Rw9hZtIXWP+/Hz4ZODXRYIiIiInISKJk+AYv+8zKt1kbRPqwLawtSOOORXxIc4g50WCIiIiJykiiZrqP3f/cP+tmhWIdllfmWKU/dHeiQREREROQkUzJ9nEqLivj6rhcYHHkquZ4scgcVM+U6JdIiIiIiLZGS6eO04A9PMjjqNLYXbqLLr05jQG+1vRMRERFpqZpkNw9jzBRjzHN5eXkn/dg/e+B2vitfSvL/u4IOSqRFREREWjRjrQ10DHWWnJxsU1JSAh2GiIiIiDRzxphUa23yocub5Mi0iIiIiEhjoGRaRERERKSOlEyLiIiIiNSRkmkRERERkTpSMi0iIiIiUkdKpkVERERE6kjJtIiIiIhIHSmZFhERERGpIyXTIiIiIiJ11KRnQDTGZADbAnDoBCAzAMdtynTNjp+u2fHTNTt+umbHT9fs+OmaHR9dr+N3Mq5ZF2ttq0MXNulkOlCMMSlHmk5SaqZrdvx0zY6frtnx0zU7frpmx0/X7Pjoeh2/QF4zlXmIiIiIiNSRkmkRERERkTpSMl03zwU6gCZI1+z46ZodP12z46drdvx0zY6frtnx0fU6fgG7ZqqZFhERERGpI41Mi4iIiIjUkZJpEREREZE6UjJ9CGPMRGPMj8aYjcaYe46wPsQY80bl+mXGmMRq635fufxHY8yEkxp4ANXimv2fMWatMeZ7Y8znxpgu1dZ5jTFplR/zTm7kgVOLa3adMSaj2rW5odq6a40xGyo/rj25kQdOLa7Zv6pdr/XGmNxq61rcfWaMedEYs98Ys7qG9cYY83jl9fzeGDO02rqWeo8d65pdVXmtfjDGLDXGDKq2bmvl8jRjTMrJizqwanHNzjDG5FX7/vtztXVH/Z5ujmpxve6qdq1WV/7siqtc11LvsU7GmIWVecQaY8z0I2wT2J9n1lp9VH4ADmAT0A0IBlYBfQ/Z5lbgmcrPLwfeqPy8b+X2IUDXyv04An1OjeSanQmEVX7+ywPXrPJ1YaDPoZFes+uAJ4/w3jhgc+W/sZWfxwb6nBrDNTtk+18BL1Z73RLvs7HAUGB1DevPAT4CDDASWFa5vEXeY7W8ZqcduBbApAPXrPL1ViAh0OfQCK/ZGcD8Iyw/ru/p5vJxrOt1yLZTgC+qvW6p91g7YGjl55HA+iP8nxnQn2camT7YKcBGa+1ma2058Dpw3iHbnAe8VPn528A4Y4ypXP66tbbMWrsF2Fi5v+bumNfMWrvQWltc+fJboONJjrGxqc19VpMJwGfW2mxrbQ7wGTCxgeJsTI73ml0BzDkpkTVS1tqvgOyjbHIe8LL1+xaIMca0o+XeY8e8ZtbapZXXBPSzDKjVfVaTE/k52GQd5/Vq8T/HAKy1e6y1Kys/LwDSgQ6HbBbQn2dKpg/WAdhR7fVODv+CVW1jra0A8oD4Wr63OTre8/4F/t8eD3AbY1KMMd8aY85vgPgao9pes4sq/1z1tjGm03G+t7mp9XlXlhF1Bb6otrgl3mfHUtM1ban32PE69GeZBT41xqQaY24KUEyN1anGmFXGmI+MMf0ql+k+OwpjTBj+pO+daotb/D1m/KW1Q4Blh6wK6M8zZ33vUKQmxpirgWTg9GqLu1hrdxljugFfGGN+sNZuCkyEjcr7wBxrbZkx5mb8fw05K8AxNRWXA29ba73Vluk+k3pjjDkTfzI9utri0ZX3WGvgM2PMuspRyJZuJf7vv0JjzDnAXKBnYENqEqYAS6y11UexW/Q9ZoyJwP/LxW+stfmBjqc6jUwfbBfQqdrrjpXLjriNMcYJRANZtXxvc1Sr8zbG/Az4IzDVWlt2YLm1dlflv5uBRfh/42zujnnNrLVZ1a7Tf4BhtX1vM3U85305h/xptIXeZ8dS0zVtqfdYrRhjBuL/njzPWpt1YHm1e2w/8D9aRpnfMVlr8621hZWffwi4jDEJ6D47lqP9HGtx95gxxoU/kX7NWvvuETYJ6M8zJdMHWwH0NMZ0NcYE47+ZD33yfx5w4GnQi/E/HGArl19u/N0+uuL/zXv5SYo7kI55zYwxQ4Bn8SfS+6stjzXGhFR+ngCMAtaetMgDpzbXrF21l1Px14gBfAKMr7x2scD4ymXNXW2+NzHG9MH/kMk31Za11PvsWOYB11Q+BT8SyLPW7qHl3mPHZIzpDLwLTLPWrq+2PNwYE3ngc/zX7IjdGloaY0zbyueKMMacgj/vyKKW39MtkTEmGv9fcN+rtqzF3mOV988LQLq19pEaNgvozzOVeVRjra0wxtyO/0I78HcDWGOM+QuQYq2dh/8L+ooxZiP+hwgur3zvGmPMm/j/k64Abjvkz8zNUi2v2UNABPBW5c/U7dbaqUAS8Kwxxof/B+yD1tpmn+TU8pr92hgzFf+9lI2/uwfW2mxjzF/x/0cE8JdD/gzYLNXymoH/+/H1yl9wD2iR95kxZg7+TgoJxpidwAzABWCtfQb4EP8T8BuBYuDnleta5D0Gtbpmf8b/jMzTlT/LKqy1yUAb4H+Vy5zAbGvtxyf9BAKgFtfsYuCXxpgKoAS4vPL784jf0wE4hZOqFtcL4ALgU2ttUbW3tth7DP8AyDTgB2NMWuWyPwCdoXH8PNN04iIiIiIidaQyDxERERGROlIyLSIiIiJSR0qmRURERETqSMm0iIiIiEgdKZkWEREREakjJdMiIiIiInWkZFpEREREpI6UTIuIiIiI1JGSaRERERGROlIyLSIiIiJSR0qmRURERETqSMm0iIiIiEgdKZkWEREREakjJdMiIiIiInWkZFpEREREpI6UTIuIiIiI1JGSaRERERGROlIyLSIiIiJSR0qmRURERETqSMm0iIiIiEgdKZkWEREREakjJdMiIiIiInWkZFpEREREpI6cgQ7gRCQkJNjExMRAhyEiIiIizVxqamqmtbbVocubdDKdmJhISkpKoMMQERERkWbOGLPtSMtV5iEiIiIiUkdKpkVERERE6kjJtIiIiIg0CdbaQIdwmCZdM30kHo+HnTt3UlpaGuhQpBlyu9107NgRl8sV6FBERERaDJ/Xy8qP5rH9hzQuuHsGJqjxjAc3u2R6586dREZGkpiYiDEm0OFIM2KtJSsri507d9K1a9dAhyMiItIi7Nuyic+ee4J9mzfSbehwyktLCQkLC3RYVZpdMl1aWqpEWhqEMYb4+HgyMjICHYqIiEiz5ykrZelbs0n9YC6hkVFM/s3d9Bo5utHleM0umQYa3UWW5kP3loiISMPbumolC/7zFHn79zHgrPGMvep63BERgQ7riJplMh1oDoeDAQMGVL2+/PLLueeee2rcftasWaSkpPDkk0+ejPBEREREGqWi3By+fPVF0r9eSGy7Dlw64+906jvg2G8MICXTDSA0NJS0tLQG239FRQVOp750IiIi0jxYn4/vP/+Er+fMwlNaxsgLL2PEBZfhDA4OdGjH1HgehWwBEhMTyczMBCAlJYUzzjjjsG0yMjK46KKLGD58OMOHD2fJkiUAzJw5k2nTpjFq1CimTZt2MsMWERERaTD7t25mzp/vYsF/nqJ1l25c89ATjLpsWpNIpEEj0w2ipKSEwYMHV73+/e9/z2WXXVar906fPp077riD0aNHs337diZMmEB6ejoAa9euZfHixYSGhjZE2CIiIiInTXlpCUvfms3KD9/DHRHJpNv+j6QxZza555OadTJ93/trWLs7v1732bd9FDOm9DvqNidS5rFgwQLWrl1b9To/P5/CwkIApk6dqkRaREREmjRrLeu/XcKiV/5DYVYmA8dNZPSV1xIaERno0OqkWSfTjY3T6cTn8wHUOKmMz+fj22+/xe12H7YuPDy8QeMTERERaUhZu3bwxX+fZfsPabRK7Mbk6XfToXdSoMM6Ic06mT7WCPLJlpiYSGpqKpMmTeKdd9454jbjx4/niSee4K677gIgLS3toJIRERERkaamvLSEb999g9T5c3GFhHDWz29m0NnnEORwBDq0E6YHEBvAgZrpAx8H2uLNmDGD6dOnk5ycjKOGm+fxxx8nJSWFgQMH0rdvX5555pmTGbqIiIhIvbHW8uM3i/nv//2SFe+9TdLoM7j+0WcZMnFKs0ikAYy1NtAx1FlycrJNSUk5aFl6ejpJSU37zwXSuOkeExERObaMbVtYOOs5dqz9gVaJ3Rh3/S+bdEmHMSbVWpt86PJmXeYhIiIiIidXSUE+S958je8/+4iQ8HDG/eJWBo6b0GxGog+lZFpERERETpjP62XVgo9Y+uZrlBUXMWj8OZx26VVNtktHbSmZFhEREZETsu2HNBa9/B8yt2+lc/+BnHntTSR0Tgx0WCeFkmkRERERqZPs3Tv58pUX2LxyBVGt2jDl/35Pz1NOa3ITr5yIE06mjTGda7lprrW2fmdQEREREZGTrqSwgG/ens2qTz/EGRzMmCuvY+ikqU1mCvD6VB8j0y8BFjjaryAWmAW8XA/HExEREZEA8FZ4WPXph3zz9hzKiosZcNZ4Trv0KsJjYgMdWsCccDJtrT2zPgIRERERkcbJWsuGZUv4es5L5O7dQ+cBgznjmhto1ULqoo+m3idtMcaEG2OaZ++TAEhMTCQzMxOA0047rWr5XXfdRb9+/bjrrrt45plnePnl4xv0j4iIOOJyh8Nx0IQzDz744FH3M2vWLG6//fbjOvah9uzZw+TJk6teL1++nLFjx9K7d2+GDBnCDTfcQHFxca1imDlzJg8//PBRjzd37lzWrl171G2efPJJXnzxxeM4CxERkeZp14/pzPnzXbz/rwdxOF1ccPcMLv7jX5VIV6qPmukg4HLgKmA4UA6EGGMygA+AZ621G2u5LzfwFRBSGdvb1toZJxpjc7F06dKqz5977jmys7NrnEmxrkJDQ0lLS6vXfVZXUVGB03nwbffII49w4403ArBv3z4uueQSXn/9dU499VQA3n77bQoKCggLC6uXGObOncvkyZPp27dvjdtcf/31jBo1iuuvv75ejikiItLU5OzZxdezX2LD8qWEx8Zx9k2/ov8ZP2u2/aLrqj5GphcC3YHfA22ttR2tta2A0cC3wD+MMVfXcl9lwFnW2kHAYGCiMWZkPcR40mzdupU+ffpw3XXX0atXL6666ioWLFjAqFGj6NmzJ8uXLwcgOzub888/n4EDBzJy5Ei+//57ALKyshg/fjz9+vXjhhtuoPoMlQdGk6dOnUphYSHDhg3jjTfeOGg0dtOmTUycOJFhw4YxZswY1q1bB8CWLVs49dRTGTBgAPfee+9xn1f1EfKUlBTOOOOMw7bJyMjgoosuYvjw4QwfPpwlS5YA/tHiadOmMWrUKKZNm3bY+9555x0mTpwIwFNPPcW1115blUgDXHzxxbRp06bGa1aT559/nuHDhzNo0CAuuugiiouLWbp0KfPmzeOuu+5i8ODBLFmy5KCReIfDwbZt2wgLCyMxMbHq6yUiItJSFOXmsOCFfzPrt7ey9fvvOO3Sq/jFo88164lXTkR9PID4M2ut59CF1tps4B3gHWOMqzY7sv7MsbDypavyo+7znX90D+z9oc5vP6K2A2DS0UsfNm7cyFtvvcWLL77I8OHDmT17NosXL2bevHk88MADzJ07lxkzZjBkyBDmzp3LF198wTXXXENaWhr33Xcfo0eP5s9//jMffPABL7zwwmH7nzdvHhEREVUjyDNnzqxad9NNN/HMM8/Qs2dPli1bxq233soXX3zB9OnT+eUvf8k111zDU089VWPsJSUlDB48uOr173//ey677LJaXZrp06dzxx13MHr0aLZv386ECRNIT08HYO3atSxevJjQ0NCD3rNlyxZiY2MJCQkBYPXq1Vx77bVH3H9N16wmF154YdWI97333ssLL7zAr371K6ZOncrkyZO5+OKLAar28dRTT/Hll1/SpUsXAJKTk/n666855ZRTanX+IiIiTVlZcREp779Lygdz8VVUMOCsCZx68RUt+uHC2qiPBxA9AMaYx4Df2OpDqYdsUxuV9dapQA/gKWvtskPW3wTcBNC5c2278p1cXbt2ZcCAAQD069ePcePGYYxhwIABbN26FYDFixfzzjvvAHDWWWeRlZVFfn4+X331Fe+++y4A5557LrGxtb+BCwsLWbp0KZdccknVsrKyMgCWLFlSdbxp06Zx9913H3EfJ1LmsWDBgoNqkfPz8yks9P9uNHXq1MMSafDXS7dq1apW+6/pmtVk9erV3HvvveTm5lJYWMiECRNq3HbJkiU8//zzLF68uGpZ69atq0b2RUREmquK8nLSPv2AZXPforQgn96njmHU5dOIbds+0KE1CfU5aUsBMM8Yc7m1tsgYMwH4s7V21PHsxFrrBQYbY2KA/xlj+ltrV1db/xzwHEBycvLRR62PMYLcUA6MsgIEBQVV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\n",
|
|
"text/plain": [
|
|
"<Figure size 864x576 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"algos = [\n",
|
|
" (phi_euler, \"Euler\"),\n",
|
|
" (phi_euler_modified, \"modified Euler (Collatz)\"),\n",
|
|
" (phi_heun, \"Heun\"),\n",
|
|
" (phi_rk4, \"4th order Runge-Kutta\"),\n",
|
|
" (phi_ab3, \"AB3\"),\n",
|
|
" (phi_ab4, \"AB4\"),\n",
|
|
"]\n",
|
|
"\n",
|
|
"def ODEF(x, y):\n",
|
|
" return y - x**2 + 1.0\n",
|
|
"\n",
|
|
"h = .02\n",
|
|
"x = np.arange(0, 2, h)\n",
|
|
"y = (x + 1)**2 - 0.5*np.exp(x)\n",
|
|
"eta = np.zeros(len(x))\n",
|
|
"\n",
|
|
"fig = plt.figure(figsize=(12, 8))\n",
|
|
"gs = gridspec.GridSpec(2, 1, height_ratios=[2, 1])\n",
|
|
"\n",
|
|
"ax0 = plt.subplot(gs[0])\n",
|
|
"ax0.plot(x, y, label=\"exact solution\")\n",
|
|
"ax0.set_yscale(\"log\")\n",
|
|
"ax0.set_title(\"Solutions to $y' = y - x^2 + 1.0$\")\n",
|
|
"\n",
|
|
"\n",
|
|
"ax1 = plt.subplot(gs[1])\n",
|
|
"ax1.set_ylabel(\"$\\delta(x) = |\\~y(x) - y(x)|$\")\n",
|
|
"\n",
|
|
"\n",
|
|
"for alg, alg_name in algos:\n",
|
|
" eta = integrator(x, y0, ODEF, alg)\n",
|
|
" ax0.plot(x, eta, label=alg_name)\n",
|
|
" ax1.plot(x, np.abs(eta - y), label=alg_name)\n",
|
|
"\n",
|
|
"ax0.legend()\n",
|
|
"plt.xlabel(\"x\")\n",
|
|
"ax0.set_ylabel(\"y(x)\")\n",
|
|
"ax1.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "9fd7c159424b1d536c11d53764cce54c",
|
|
"grade": false,
|
|
"grade_id": "cell-3c99ac2c49457d60",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 6\n",
|
|
"\n",
|
|
"Study the accuracies of all approaches as a function of the step size $h$. To this end use your implementations to solve\n",
|
|
"\n",
|
|
"\\begin{align*}\n",
|
|
" \\vec{y}'(x) = y\n",
|
|
"\\end{align*}\n",
|
|
" \n",
|
|
"with $y(x=0) = 1.0$ for $0 \\leq x \\leq 2$. \n",
|
|
"\n",
|
|
"Plot $\\delta(2) = |\\tilde{y}(2) - y(2)|$ as a function of $h$ for each integration scheme."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "0060c86da7630a17a6da4769bb0c728f",
|
|
"grade": true,
|
|
"grade_id": "cell-552ef9b066bc9b1c",
|
|
"locked": false,
|
|
"points": 4,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 864x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# We assume the definitions of the previous block as not to copy everything.\n",
|
|
"\n",
|
|
"h_list = 2/np.arange(1, 100)\n",
|
|
"y2 = np.zeros(len(h_list))\n",
|
|
"\n",
|
|
"plt.figure(figsize=(12, 8))\n",
|
|
"plt.ylabel(\"$\\delta(2) = |\\~y(2) - y(2)|$\")\n",
|
|
"\n",
|
|
"for alg, alg_name in algos:\n",
|
|
" for i in range(len(h_list)):\n",
|
|
" x = np.arange(0, 2, h_list[i])\n",
|
|
" y = np.zeros(len(x))\n",
|
|
" y[0] = y0\n",
|
|
" \n",
|
|
" eta = integrator(x, y0, ODEF, alg)\n",
|
|
" y2[i] = eta[-1]\n",
|
|
" plt.loglog(h_list, y2 - y[-1], label=alg_name)\n",
|
|
"\n",
|
|
"plt.xlabel(\"h\")\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "0e3fcb92129c0b3ef4e2b8f99a38ddef",
|
|
"grade": false,
|
|
"grade_id": "cell-3070782f40a2599f",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"### Task 7\n",
|
|
"\n",
|
|
"Apply the Euler and the Runga-Kutta methods to solve the pendulum problem given by\n",
|
|
"\n",
|
|
"\\begin{align*}\n",
|
|
" \\vec{y}'(x) = \\vec{f}(x, \\vec{y})\n",
|
|
" \\quad \\leftrightarrow \\quad \n",
|
|
" \\begin{pmatrix}\n",
|
|
" y_0'(x) \\\\\n",
|
|
" y_1'(x)\n",
|
|
" \\end{pmatrix}\n",
|
|
" =\n",
|
|
" \\begin{pmatrix}\n",
|
|
" y_1(x) \\\\\n",
|
|
" -\\operatorname{sin}\\left[y_0(x) \\right]\n",
|
|
" \\end{pmatrix}\n",
|
|
"\\end{align*}\n",
|
|
" \n",
|
|
"To this end the quantities $\\text{x}$ and $\\text{y0}$ in your $\\text{integrator}$ function must become vectors. Depending on your implementation in task 1 you might have to define a new $\\text{integrator}$ function that can handle this type of input.\n",
|
|
"\n",
|
|
"Plot $y_0(x)$ for several oscillation periods. Does the Euler method behave physically?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {
|
|
"deletable": false,
|
|
"nbgrader": {
|
|
"cell_type": "code",
|
|
"checksum": "9cb9ca1fb8e9c0722a7e6b5ec0ff0c2a",
|
|
"grade": true,
|
|
"grade_id": "cell-3a89944b55976666",
|
|
"locked": false,
|
|
"points": 4,
|
|
"schema_version": 3,
|
|
"solution": true,
|
|
"task": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def ODEF(x, y):\n",
|
|
" # TODO: Docstring.\n",
|
|
" return np.array([y[1], -np.sin(y[0])])\n",
|
|
"\n",
|
|
"h = .02\n",
|
|
"x = np.arange(0, 2, h)\n",
|
|
"y = (x + 1)**2 - 0.5*np.exp(x)\n",
|
|
"eta = np.zeros(len(x))\n",
|
|
"\n",
|
|
"fig = plt.figure(figsize=(12, 8))\n",
|
|
"gs = gridspec.GridSpec(2, 1, height_ratios=[2, 1])\n",
|
|
"\n",
|
|
"ax0 = plt.subplot(gs[0])\n",
|
|
"ax0.plot(x, y, label=\"exact solution\")\n",
|
|
"ax0.set_yscale(\"log\")\n",
|
|
"ax0.set_title(\"Solutions to $y' = y - x^2 + 1.0$\")\n",
|
|
"\n",
|
|
"\n",
|
|
"ax1 = plt.subplot(gs[1])\n",
|
|
"ax1.set_ylabel(\"$\\delta(x) = |\\~y(x) - y(x)|$\")\n",
|
|
"\n",
|
|
"\n",
|
|
"for alg, alg_name in algos:\n",
|
|
" eta = integrator(x, y0, ODEF, alg)\n",
|
|
" ax0.plot(x, eta, label=alg_name)\n",
|
|
" ax1.plot(x, np.abs(eta - y), label=alg_name)\n",
|
|
"\n",
|
|
"ax0.legend()\n",
|
|
"plt.xlabel(\"x\")\n",
|
|
"ax0.set_ylabel(\"y(x)\")\n",
|
|
"ax1.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|