{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 12 Root Finding\n", "\n", "An important tool in the computational tool box is to find roots of equations for which no closed form solutions exist:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to find the roots $x_0$ of\n", "\n", "$$\n", "f(x_0) = 0\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem: Projectile range \n", "The equations of motion for the projectile with linear air resistance (see *11 ODE applications*) can be solved exactly.\n", "\n", "As a reminder: the linear drag force is\n", "\\begin{align}\n", "\\mathbf{F}_1 &= -b_1 \\mathbf{v}\\\\\n", "b &:= \\frac{b_1}{m}\n", "\\end{align}\n", "\n", "Equations of motion with force due to gravity $\\mathbf{g} = -g \\hat{\\mathbf{e}}_y$\n", "\n", "\\begin{align}\n", "\\frac{d\\mathbf{r}}{dt} &= \\mathbf{v}\\\\\n", "\\frac{d\\mathbf{v}}{dt} &= - g \\hat{\\mathbf{e}}_y -b \\mathbf{v} \n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analytical solution of the equations of motion\n", "(Following Wang Ch 3.3.2)\n", "\n", "Solve $x$ component of the velocity \n", "\n", "$$\n", "\\frac{dv_x}{dt} = -b v_x\n", "$$\n", "\n", "by integration:\n", "\n", "$$\n", "v_x(t) = v_{0x} \\exp(-bt)\n", "$$\n", "\n", "The drag force reduces the forward velocity to 0.\n", "\n", "Integrate again to get the $x(t)$ component\n", "\n", "$$\n", "x(t) = x_0 + \\frac{v_{0x}}{b} \\left[1 - \\exp(-bt)\\right]\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Integrating the $y$ component of the velocity\n", "\n", "$$\n", "\\frac{dv_y}{dt} = -g - b v_y\n", "$$\n", "\n", "gives\n", "\n", "$$\n", "v_y = \\left(v_{0y} + \\frac{g}{b}\\right) \\exp(-bt) - \\frac{g}{b}\n", "$$\n", "\n", "and integrating again\n", "\n", "$$\n", "y(t) = y_0 + \\frac{v_{0y} + \\frac{g}{b}}{b} \\left[1 - \\exp(-bt)\\right] - \\frac{g}{b} t\n", "$$\n", "\n", "(Note: This shows immediately that the *terminal velocity* is\n", "\n", "$$\n", "\\lim_{t\\rightarrow\\infty} v_y(t) = - \\frac{g}{b},\n", "$$\n", "\n", "i.e., the force of gravity is balanced by the drag force.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Analytical trajectory " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To obtain the **trajectory $y(x)$** eliminate time (and for convenience, using the origin as the initial starting point, $x_0 = 0$ and $y_0 = 0$. Solve $x(t)$ for $t$\n", "\n", "$$\n", "t = -\\frac{1}{b} \\ln \\left(1 - \\frac{bx}{v_{0x}}\\right)\n", "$$\n", "\n", "and insert into $y(t)$:\n", "\n", "$$\n", "y(x) = \\frac{x}{v_{0x}} \\left( v_{0y} + \\frac{g}{b} \\right) + \\frac{g}{b^2} \\ln \\left(1 - \\frac{bx}{v_{0x}}\\right)\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the analytical solution $y(x)$ for $\\theta = 30^\\circ$ and $v_0 = 100$ m/s." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "plt.style.use('ggplot')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `y_lindrag()` should compute $y(x)$. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def y_lindrag(x, v0, b1=0.2, g=9.81, m=0.5):\n", " b = b1/m\n", " v0x, v0y = v0\n", " return x/v0x * (v0y + g/b) + g/(b*b) * np.log(1 - b*x/v0x)\n", "\n", "def initial_v(v, theta):\n", " x = np.deg2rad(theta)\n", " return v * np.array([np.cos(x), np.sin(x)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The analytical function drops *very* rapidly towards the end ($> 42$ m – found by manual trial-and-error plotting...) so in order to nicely plot the function we use a fairly coarse sampling of points along $x$ for the range $0 \\le x < 42$ and very fine sampling for the last 2 m ($42 \\le x < 45$):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "X = np.concatenate([np.linspace(0, 42, 100), np.linspace(42, 45, 10000)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Evaluate the function for all $x$ values:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/sm/37rm_wm16tq9qsf4n5md98ph0000gp/T/ipykernel_61984/482518341.py:4: RuntimeWarning: invalid value encountered in log\n", " return x/v0x * (v0y + g/b) + g/(b*b) * np.log(1 - b*x/v0x)\n" ] } ], "source": [ "Y = y_lindrag(X, initial_v(100, 30), b1=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(The warning can be ignored, it just means that some of our `X` values were not approriate and outside the range of validity – when the argument of the logarithm becomes ≤0).\n", "\n", "To indicate the ground we also plot a dashed black line: note that the analytical solution goes below the dashed line." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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HnGpIrjB5uU6N+PcvEGSZM46R2bSDTJx8S5XBgBwW52Dzty5c3X99derbdu24aznuHXs2FH/8z//E/rYx52mmxT7+ToFH79fKtzPbRwAoCFE98pV3YNOQUGBbrnlFl166aUaN26cYmJiwlnXMfP5fEpJSXHlc8M9trxc9vknZFe/5DR07iHfDXNk2mS4WxgAeEYTX7qaN2+eXnrpJS1dulRr167VjBkz1Ldv33DWdkyysrI0c+ZM+f1+9ezZU5MmTap1lqm8vFzl5eWhj40xSkhICP05XA69Fptgw89m7VTw4bukb7ZJkszoS+S77Jqj3saBMYksjEdkYTwiSySNhzEmIuqoK2PreaBIdna2HnnkEa1fv14jRozQ1VdfrcTExHDVV6vPPvtMpaWlysjIUEFBgV544QXt3LlT99xzj1q0qP5S4h/v6+natavmzZvXKPWi/grfWKH8B/4kW1IsX1KKWv7id0o4fajbZQGA5+y8+nwF83LV9v+eUmz33m6XU2f1DjqHvPPOO1q0aJGstbr66qs1fHjj75MoKSnRT3/6U40bN05jx46ttk9NMzo5OTlV7tVVX8YYpaenKysri8PpwsCWFCv41N9l339DkmR6nyjf9bfIpB77rUYYk8jCeEQWxiOyRMJ4VMy5VirIU8xv75fp1M2VGmrj9/vVunXro/cL1yccNmyY+vbtq3nz5unBBx/Um2++qRkzZigjo/H2TMTHx6tTp07avXt3jX0CgYACgeqXOBrii8lay5tGPdlvtir48J+lPTsl45O5+EqZMZdLvpg6/dsyJpGF8YgsjEdkiYTxsNZG9f2u6hV0cnNztXnzZn355ZfavHmzduzYoWAwqNjYWO3evVu33nqrJk2aVOPsSriVl5dr586druwVQvhZa2XfWCG79DGpokJKTXNmcXqd4HZpANCERG/IkeoRdH7yk58oLy9PkpSQkKDevXvriiuuUN++fdW9e3f5fD7985//1DPPPKPS0lJddtllYSv6kEWLFunUU09VWlqa9u7dq+eff17FxcWuLJshvOyBfQounC/960OnYeDp8k39mUxikruFAUCTEb0bkA9X56DTvXt3XXTRRerbt6+6dOlS7Y7siy++WH6/X8uWLWuQoJOXl6f7779f+/btU1JSknr27Km5c+ce05odIpfdvEHBR/8i5edKfr/MhGkyIy+M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n6yMjAxlZGRo0qRJio+P11dffcVYuKikpETz58/XzJkz1bx581A7YxIeBJ0wq6io0LZt2zRw4MAq7QMGDNCmTZtcqgqSlJ2drYKCgipjEwgE1K9fP8amkRQVFUmSEhMTJTEmbgoGg3r33XdVWlqqXr16MRYuevTRRzVo0CANGDCgSjtjEh7s0Qmzffv2KRgMKjk5uUp7cnKyCgoK3CkKkhT6969ubFhWbHjWWi1cuFB9+vRRp06dJDEmbvjmm2902223qby8XPHx8ZozZ446dOgQ+o+TsWhc7777rrZv364777zziMf4/ggPZnQaiDHmmNrQ+H48DhwO3jgWLFigb775Rj//+c+PeIwxaTwZGRm6++67NXfuXJ177rl64IEH9N1334UeZywaT25urp544gn99Kc/VWxsbI39GJP6YUYnzJKSkuTz+Y6Yvdm7d+8RqRyNKyUlRZLzU1Jqamqofd++fYxNA3vsscf0ySef6Pbbb1erVq1C7YxJ4/P7/UpPT5ckde/eXVu3btXKlSs1btw4SYxFY9q2bZv27t2r//7v/w61BYNB/ec//9Err7yi++67TxJjUl/M6ISZ3+9Xt27dtH79+irt69evV+/evV2qCpLUpk0bpaSkVBmbiooKbdy4kbFpINZaLViwQB9++KF++9vfqk2bNlUeZ0zcZ61VeXk5Y+GCE088UX/+85911113hX51795dQ4cO1V133aW2bdsyJmHAjE4DGDt2rObPn69u3bqpV69eev3115Wbm6vRo0e7XZrnlZSUKCsrK/Rxdna2vv76ayUmJiotLU1jxoxRZmam2rVrp/T0dGVmZiouLk5Dhw51sWrvWrBggdauXatf/vKXSkhICM10NmvWTLGxsTLGMCaN6Omnn9agQYPUqlUrlZSU6N1339WGDRt02223MRYuSEhICO1XOyQuLk4tWrQItTMm9cfdyxvIoQMD8/Pz1bFjR1177bXq16+f22V53oYNG3T77bcf0T58+HDNnj07dPjW66+/rsLCQvXo0UPTp08/4s0G4TFx4sRq22fNmqURI0ZIEmPSiP72t7/p3//+t/Lz89WsWTN17txZ48aNC13tw1i473e/+526dOlyxIGBjEndEXQAAIBnsUcHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHgKcsXbpUv/jFLxQMBsP2mm+88YZmzpypkpKSsL0mgMZB0AHgGXl5eVq2bJmuuOIK+Xzhe3sbPny44uPjtXz58rC9JoDGQdAB4BkrV65U8+bNdfrpp4f1dWNiYnTOOedo5cqVKi0tDetrA2hYBB0AESM/P19XX3217rvvvirtn3zyiSZNmqRnnnmmxudWVFRozZo1Gjp06BGzOYsXL9bEiRO1Y8cO3XPPPbr22mt13XXXaeHChaqsrNSuXbs0d+5cXXPNNZo9e7aWLVt2xOsPGzZMxcXFevfdd8PydwXQOPxuFwAAh6SmpmrcuHFasmSJLr74YnXr1k0bNmzQPffco9GjR2vSpEk1Pverr77S/v37dcIJJ9TY595779WwYcN0zjnnaP369Vq+fLkqKyv1xRdf6Nxzz9VFF12ktWvX6qmnnlJ6eroGDx4cem5KSooyMjL06aefauTIkWH9ewNoOMzoAIgoF110kVJSUvTUU09py5Ytuuuuu3TWWWfpuuuuq/V5mzdvliR17dq1xj7nnHOOLrvsMg0YMEBTpkxRly5d9Morr2jSpEm64IILNGDAAM2cOVNJSUl65513jnh+165dtWnTpvr9BQE0KoIOgIgSFxenK6+8Ul988YVuv/12nXTSSbrxxhtljKn1efn5+TLGKCkpqcY+J598cpWP27dvL2OMTjrppFBbTEyM0tPTlZube8Tzk5OTtW/fPlVWVh7fXwqAawg6ACJOu3btJEnGGM2ePfuYrqAqKytTTExMrX0TExOrfOz3+xUbG6vY2Ngj2svLy494fiAQkLW22scARCaCDoCI8vXXX2vevHnq3bu3SkpK9MYbbxzT81q0aKGKiooGPevmwIEDCgQCio+Pb7DPASC8CDoAIsahq5969eql//3f/9Wpp56qJUuWqKio6KjPbd++vSRpz549DVZfdna2OnTo0GCvDyD8CDoAIkJ2drb+8Ic/KCMjQ7fccov8fr+uuuoqFRYW6oUXXjjq8/v16yfJufqqIQSDQW3ZsqXWq7oARB6CDgDX5efn6w9/+IOSkpL0q1/9KrRnpn379jr77LP18ssvKzs7u9bXSEtLU9++ffXRRx81SI0bN25UUVGRhg4d2iCvD6BhGGutdbsIAAiHDz74QPfdd58efPBBtWzZMqyvPX/+/NCsE4DowYwOAM8YPHiwunfvrszMzLC+blZWlt577z1dddVVYX1dAA2PoAPAM4wxmjlzplJTU8N69/Lc3FxNnz5dffr0CdtrAmgcLF0BAADPYkYHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB4FkEHAAB41v8HNfRrgC92bSgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(X, Y)\n", "plt.xlabel(\"$x$ (m)\")\n", "plt.ylabel(\"$y$ (m)\")\n", "plt.hlines([0], X[0], X[-1], colors=\"k\", linestyles=\"--\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compare to the numerical solution (from **11 ODE Applications**):" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import ode\n", "\n", "def simulate(v0, h=0.01, b1=0.2, g=9.81, m=0.5):\n", " def f(t, y):\n", " # y = [x, y, vx, vy]\n", " return np.array([y[2], y[3], -b1/m * y[2], -g - b1/m * y[3]])\n", "\n", " vx, vy = v0\n", " t = 0\n", " positions = []\n", " y = np.array([0, 0, vx, vy], dtype=np.float64)\n", " \n", " while y[1] >= 0:\n", " positions.append([t, y[0], y[1]]) # record t, x and y\n", " t += h\n", " y[:] = ode.rk4(y, f, t, h)\n", " \n", " return np.array(positions)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "r = simulate(initial_v(100, 30), h=0.01, b1=1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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u3dvrrzySuz2U39bTqcTp9NZedswDEJCQiq/9pRj+/LkPqVm1CfeRf3hXdQf3sXy/jj+eQ3ffl34dNC59NJLadasGWFhYWzfvp0333yTjIwMbrvttlM+ZsGCBcybN6/ydlpaGtOnTychIaFWakxKSqqV/cq5U594F/WHd1F/eBer+qOsOJ/Dv3wdGhpKbHKyJXV4gmGapml1EcebM2dOlSByMo899hjNmzc/Yfu3337LjBkzmDVrFhERESd97KlGdDIzM3G5XDUr/jiGYZCUlER6ejpe9iOut9Qn3kX94V3UH97F6v4w9+2i/KE7Kmq58BICxk2t8xpOx263n9EghdeN6FxyySVccMEF1bY51TfWqlUrANLT008ZdBwOBw6H46T31caLyTRNvWl4GfWJd1F/eBf1h3exqj+qPKdZO38f64rXBZ3IyEgiIyPP6bG7du0CICYmxpMliYiIiI/yuqBzprZu3crWrVvp0KEDoaGhbN++nddee41u3boRHx9vdXkiIiLiBXw26Njtdr755hvmzZuH0+kkISGBQYMGMXz4cKtLExERES/hs0GnWbNmTJs2zeoyRERExItprSsRERHxWwo6IiIi4rcUdERERMRvKeiIiIiI31LQEREREb+loCMiIiJ+S0FHRERE/JaCjoiIiPgtBR0RERHxWwo6IiIi4rcUdERERMRvKeiIiIiI31LQEREREb+loCMiIiJ+S0FHRERE/Jbd6gJERETEy8QlYpvyt8qvfZmCjoiIiFRhhIZBl15Wl+EROnQlIiIifktBR0RERPyWgo6IiIj4LQUdERER8VsKOiIiIuK3FHRERETEbynoiIiIiN9S0BERERG/paAjIiIifktBR0RERPyWgo6IiIj4LQUdERER8VsKOiIiIuK3tHr5L+z22vlR1NZ+5dypT7yL+sO7qD+8i/rj1M70Z2OYpmnWci0iIiIiltChq1pSXFzMn//8Z4qLi60uRX6hPvEu6g/vov7wLuoPz1HQqSWmabJr1y40YOY91CfeRf3hXdQf3kX94TkKOiIiIuK3FHRERETEbyno1BKHw8HIkSNxOBxWlyK/UJ94F/WHd1F/eBf1h+foqisRERHxWxrREREREb+loCMiIiJ+S0FHRERE/JaCjoiIiPgtLaJRS5YsWcKiRYvIycmhUaNG3HjjjbRt29bqsvze5s2bWbRoEbt27eLo0aPcc8899OjRo/J+0zSZO3cuy5Yto6CggJYtWzJp0iQaN25sYdX+a8GCBaxevZoDBw4QGBhIq1atGDt2LCkpKZVt1Cd155NPPuGTTz4hMzMTgEaNGjFy5Ei6dOkCqC+stmDBAt566y0uu+wybrzxRkB94gka0akFK1eu5NVXX+Waa65h+vTptG3bln/84x9kZWVZXZrfKy0tJTU1lYkTJ570/oULF/Lhhx8yceJEHnvsMaKjo3n00Uc1zXot2bx5M0OHDmXatGncf//9uN1uHn30UUpKSirbqE/qTmxsLDfccAOPPfYYjz32GB06dOCJJ55g3759gPrCStu3b2fp0qU0bdq0ynb1Sc0p6NSCDz74gIsuuohBgwZVjubEx8fzySefWF2a3+vSpQvXX389PXv2POE+0zRZvHgxV199NT179qRJkyZMnTqV0tJSli9fbkG1/u++++5jwIABNG7cmNTUVKZMmUJWVhY7d+4E1Cd1rVu3bnTt2pWUlBRSUlIYPXo0wcHBbNu2TX1hoZKSEp599lkmT55MWFhY5Xb1iWco6HiYy+Vi586ddOrUqcr2jh07smXLFouqEoCMjAxycnKq9I3D4aBdu3bqmzpSVFQEQHh4OKA+sZLb7WbFihWUlpbSqlUr9YWFXn75Zbp06ULHjh2rbFefeIbO0fGwvLw83G43UVFRVbZHRUWRk5NjTVECUPnzP1nf6LBi7TNNk9dee402bdrQpEkTQH1ihb1793LffffhdDoJDg7mnnvuoVGjRpV/ONUXdWvFihXs2rWLxx577IT79PvhGRrRqSWGYZzRNql7v+0HTQ5eN2bNmsXevXv5wx/+cMJ96pO6k5KSwpNPPsm0adO4+OKL+fe//83+/fsr71df1J2srCxeffVVbr/9dgIDA0/ZTn1SMxrR8bDIyEhsNtsJoze5ubknpHKpW9HR0UDFp6SYmJjK7Xl5eeqbWvbKK6+wZs0aHnroIeLi4iq3q0/qnt1uJykpCYDmzZuzY8cOFi9ezPDhwwH1RV3auXMnubm5/OUvf6nc5na7+emnn/j44495+umnAfVJTWlEx8PsdjvNmjVj/fr1VbavX7+e1q1bW1SVACQmJhIdHV2lb1wuF5s3b1bf1BLTNJk1axarVq3i73//O4mJiVXuV59YzzRNnE6n+sIC5513Hv/85z954oknKv81b96cvn378sQTT9CgQQP1iQdoRKcWDBs2jGeffZZmzZrRqlUrli5dSlZWFkOGDLG6NL9XUlJCenp65e2MjAx2795NeHg48fHxXHbZZSxYsIDk5GSSkpJYsGABQUFB9O3b18Kq/desWbNYvnw59957LyEhIZUjnaGhoQQGBmIYhvqkDr355pt06dKFuLg4SkpKWLFiBZs2beK+++5TX1ggJCSk8ny1Y4KCgoiIiKjcrj6pOa1eXkuOTRh49OhRGjduzIQJE2jXrp3VZfm9TZs28dBDD52w/cILL2Tq1KmVk28tXbqUwsJCWrRowaRJk054sxHPGDVq1Em3T5kyhQEDBgCoT+rQf/7zHzZu3MjRo0cJDQ2ladOmDB8+vPJqH/WF9R588EFSU1NPmDBQfXLuFHRERETEb+kcHREREfFbCjoiIiLitxR0RERExG8p6IiIiIjfUtARERERv6WgIyIiIn5LQUdERET8loKOiIiI+C0FHREREfFbCjoiIiLitxR0RMSvzJs3jz/+8Y+43W6P7fOzzz5j8uTJlJSUeGyfIlI3FHRExG9kZ2ezcOFCrrvuOmw2z729XXjhhQQHB7No0SKP7VNE6oaCjoj4jcWLFxMWFkaPHj08ut+AgAAGDx7M4sWLKS0t9ei+RaR2KeiIiNc4evQo48aN4+mnn66yfc2aNYwePZq33nrrlI91uVx8/vnn9O3b94TRnDlz5jBq1Cj27NnDjBkzmDBhAjfddBOvvfYa5eXlHDx4kGnTpjF+/HimTp3KwoULT9h/v379KC4uZsWKFR75XkWkbtitLkBE5JiYmBiGDx/O3LlzufLKK2nWrBmbNm1ixowZDBkyhNGjR5/ysdu2bSM/P5/27dufss3MmTPp168fgwcPZv369SxatIjy8nI2bNjAxRdfzBVXXMHy5ct54403SEpKomfPnpWPjY6OJiUlhbVr13LRRRd59PsWkdqjER0R8SpXXHEF0dHRvPHGG2zfvp0nnniCCy64gJtuuqnax23duhWAtLS0U7YZPHgwI0aMoGPHjowdO5bU1FQ+/vhjRo8ezaWXXkrHjh2ZPHkykZGRfP311yc8Pi0tjS1bttTsGxSROqWgIyJeJSgoiOuvv54NGzbw0EMP0blzZ2677TYMw6j2cUePHsUwDCIjI0/ZpmvXrlVuN2zYEMMw6Ny5c+W2gIAAkpKSyMrKOuHxUVFR5OXlUV5efnbflIhYRkFHRLxOcnIyAIZhMHXq1DO6gqqsrIyAgIBq24aHh1e5bbfbCQwMJDAw8ITtTqfzhMc7HA5M0zzpfSLinRR0RMSr7N69m+nTp9O6dWtKSkr47LPPzuhxERERuFyuWp3rpqCgAIfDQXBwcK09h4h4loKOiHiNY1c/tWrVigceeIBu3boxd+5cioqKTvvYhg0bAnD48OFaqy8jI4NGjRrV2v5FxPMUdETEK2RkZPDII4+QkpLC3Xffjd1uZ8yYMRQWFvLuu++e9vHt2rUDKq6+qg1ut5vt27dXe1WXiHgfBR0RsdzRo0d55JFHiIyM5M9//nPlOTMNGzZk4MCBfPTRR2RkZFS7j/j4eNq2bct3331XKzVu3ryZoqIi+vbtWyv7F5HaYZimaVpdhIiIJ3z77bc8/fTTPP/888TGxnp0388++2zlqJOI+A6N6IiI3+jZsyfNmzdnwYIFHt1veno6K1euZMyYMR7dr4jUPgUdEfEbhmEwefJkYmJiPLp6eVZWFpMmTaJNmzYe26eI1A0duhIRERG/pREdERER8VsKOiIiIuK3FHRERETEbynoiIiIiN9S0BERERG/paAjIiIifktBR0RERPyWgo6IiIj4LQUdERER8Vv/H5vFrwjCbZCbAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(X, Y, lw=2, label=\"analytical\")\n", "plt.plot(r[:, 1], r[:, 2], '--', label=\"RK4\")\n", "plt.legend(loc=\"best\")\n", "plt.xlabel(\"$x$ (m)\"); plt.ylabel(\"$y$ (m)\")\n", "plt.hlines([0], X[0], X[-1], colors=\"k\", linestyles=\"--\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The RK4 solution tracks the analytical solution perfectly (and we also programmed it to not go below ground...)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OPTIONAL: Show the residual\n", "\n", "$$\n", "r = y_\\text{numerical}(x) - y_\\text{analytical}\n", "$$" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "residual = r[:, 2] - y_lindrag(r[:, 1], initial_v(100, 30), b1=1)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(r[:, 1], residual)\n", "plt.xlabel(\"$x$ (m)\"); plt.ylabel(\"residual $r$ (m)\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predict the range $R$\n", "How far does the ball or projectile fly, i.e., that value $x=R$ where $y(R) = 0$:\n", "\n", "$$\n", "\\frac{R}{v_{0x}} \\left( v_{0y} + \\frac{g}{b} \\right) + \\frac{g}{b^2} \\ln \\left(1 - \\frac{bR}{v_{0x}}\\right) = 0\n", "$$\n", "\n", "This *transcendental equation* can not be solved in terms of elementary functions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use a **root finding** algorithm." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Root-finding with the Bisection algorithm\n", "**Bisection** is the simplest (but very robust) root finding algorithm that uses trial-and-error:\n", "\n", "* bracket the root\n", "* refine the brackets\n", "* see first part in [12_rootfinding.pdf (PDF)](12_rootfinding.pdf)\n", "\n", "More specifically: \n", "1. determine a bracket that contains the root: $a < x_0 < b$ (i.e., an interval $[a, b]$ with $f(a) > 0$ and $f(b) < 0$ or $f(a) < 0$ and $f(b) > 0$)\n", "2. cut bracket in half: $x' = \\frac{1}{2}(a + b)$\n", "3. determine in which half the root lies: either in $[a, x']$ or in $[x', b]$: If $f(a) f(x') > 0$ then the root lies in the right half $[x', b]$, otherwise the left half $[a, x']$.\n", "4. Change the boundaries $a$ or $b$.\n", "5. repeat until $|f(x')| < \\epsilon$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Implementation of Bisection\n", "\n", "- Test that the initial bracket contains a root; if not, raise a `ValueError`.\n", "- If either of the bracket points is a root then return the bracket point.\n", "- Allow `Nmax` iterations or until the convergence criterion `eps` is reached.\n", "- Raise a `RuntimeWarning` if no root was found after `Nmax` iterations, but print the best guess and the error.\n", "\n", " NOTE: It's better to fail with an exception than to return incorrect values. Calling code can always use `try... except` to catch your exception." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def bisection(f, a, b, Nmax=100, eps=1e-14):\n", " \"\"\"Find root for function f(x), bracketed by a <= x <= b.\"\"\"\n", " \n", " fa, fb = f(a), f(b)\n", " if np.abs(fa) < eps:\n", " return a\n", " if np.abs(fb) < eps:\n", " return b\n", " \n", " if (fa*fb) > 0:\n", " raise ValueError(f\"bisect: Initial bracket [{a}, {b}] \"\n", " f\"does not contain a single root\")\n", "\n", " for iteration in range(Nmax):\n", " x = (a + b)/2\n", " fx = f(x)\n", " if np.abs(fx) < eps:\n", " break\n", " if f(a) * fx < 0:\n", " # root between a and x: need to change right boundary b <- x\n", " b = x\n", " else:\n", " # root between x and b: need to change left boundary a <- x\n", " a = x\n", " else:\n", " raise RuntimeError(f\"bisect: no root found after {Nmax} iterations (eps={eps}); \"\n", " f\"best guess is {x} with error {fx}\")\n", " return x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple test for `bisection`\n", "\n", "It's always a good idea to test new code on input where you know the answer.\n", "\n", "We need a function with known roots, e.g.\n", "\n", "$$\n", "p(x) = (x + 1)(x - 2)x\n", "$$\n", "\n", "with roots -1, 0, 2." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def p(x):\n", " return (x+1)*(x-2)*x" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGdCAYAAAAvwBgXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHrklEQVR4nO3dd3xV9f3H8de5K/cmITsQKCiIojgQFJXiTyuogIgDUFxVqeIoVKVuqlVBKUXrHnWh4EBFhlpciLgHKiooUECRoRBJIDu5yR3n90eGUGbg3nzveD8fDx8l6c097w+HhDdnfI9l27aNiIiIiAEO0wFEREQkeamIiIiIiDEqIiIiImKMioiIiIgYoyIiIiIixqiIiIiIiDEqIiIiImKMioiIiIgYoyIiIiIixqiIiIiIiDEu0wF2RUlJCcFgMOLvm5+fT1FRUcTfN1ZovviX6DMm+nyQ+DNqvvgXjRldLhfZ2dm79tqIbjlKgsEggUAgou9pWVbTeyfi43Y0X/xL9BkTfT5I/Bk1X/yLhRl1akZERESMURERERERY1RERERExBgVERERETFGRURERESMURERERERY1RERERExBgVERERETFGRURERESMURERERERY1RERERExBgVERERETFGRURERCQJuX74gczRo2HyZLM5jG5dREREjPDMn0/qtGmwcSP0728sh46IiIiIJCH3woX1vzjiCKM5VERERESSkOebb+p/ceSRRnOoiIiIiCQZq6YG17Jl9R/oiIiIiIi0JPf332OFQoTatIHf/c5oFhURERGRJONuOC0TOPRQsCyjWVREREREkkzjhaqBHj0MJ1ERERERSTqeb78FoK57d6M5QEVEREQkqVglJbhWrQIaTs0YpiIiIiKSRDwNp2WCnTphZ2WZDYOKiIiISFJxx9BpGVARERERSSqN14cEVERERESkRdn2b0dEYuD6EFARERERSRqOdetwFhVhO50EDj7YdBygBYvIrFmzGDZsGJMNP25YREQkWTWelgkecAD4fGbDNGiRIvLDDz8wd+5c9t5775bYnIiIiGxD40JmsXKhKrRAEfH7/Tz44INcdtllpKWlRXtzIiIish2NT9yNhRVVG7mivYEnn3ySHj160K1bN2bOnLnD1wYCAQKBQNPHlmXhazh0ZEV4LfzG94v0+8YKzRf/En3GRJ8PEn9GzRdnwmHcixYB9XfMWJYVEzNGtYh88skn/PTTT0yYMGGXXj9r1iymT5/e9HGnTp2YOHEi+fn50YpIQUFB1N47Fmi++JfoMyb6fJD4M2q+OLF0KVRWQmoq+X/4A7h+qwAmZ4xaESkuLmby5MncdNNNeDyeXfqawYMHM2jQoKaPGxtaUVERwWAwovksy6KgoIDCwkJs247oe8cCzRf/En3GRJ8PEn9GzRdffHPmkAXUHXwwG4uKgOjN6HK5dvkgQtSKyMqVKykrK+PGG29s+lw4HGbp0qW89dZbTJ06FYdjy0tU3G43brd7m+8XrT8Etm0nxB+w7dF88S/RZ0z0+SDxZ9R88WHzFVX/dx6TM0atiBxyyCH861//2uJz//73v2nXrh2nnXbaViVEREREoifWlnZvFLUi4vP52Guvvbb4XEpKCq1atdrq8yIiIhJFtbW4lywBYmdp90Y6LCEiIpLg3EuXYtXVEcrOJhRjBwOifvvu5m677baW3JyIiIjw22mZQPfuEGO3I+uIiIiISIKLtSfubk5FREREJME1Le0eI0/c3ZyKiIiISAKzKipwrVgB6IiIiIiItDD3okVYtk3wd78jHMWVyneXioiIiEgC8zSclonFoyGgIiIiIpLQ3I1P3FURERERkZbWdKGqioiIiIi0JEdREa5ffsG2LALdupmOs00qIiIiIgmqcSGz4H77Yaenmw2zHSoiIiIiCSqWFzJrpCIiIiKSoGJ5IbNGKiIiIiKJyLbxNN4x06OH4TDbpyIiIiKSgJyrV+MoLcX2eAh07Wo6znapiIiIiCSgxtMygYMOAo/HcJrtUxERERFJQE2nZWL4+hBQEREREUlIsb6QWSMVERERkUQTDOJetAiI7QtVQUVEREQk4biWL8fh9xNu1YrgPvuYjrNDKiIiIiIJpmkhs27dwBHbf9XHdjoRERFptsYn7sb69SGgIiIiIpJwPF9+CUBdz56Gk+ycioiIiEgCsUpKcK9YAUBARURERERakuerrwAIdO5MOCfHcJqdUxERERFJII1FpO6IIwwn2TUqIiIiIgmk6foQFRERERFpUXV1eBqfMRMH14eAioiIiEjCcH//PZbfTyg7m2Dnzqbj7BIVERERkQTReFom0LMnWJbhNLtGRURERCRBxNuFqqAiIiIikhhsO+4uVAUVERERkYTgXL0aZ1ERtsdDXbdupuPsMhURERGRBNB0fcghh4DXazjNrlMRERERSQDxeFoGVEREREQSQjxeqAoqIiIiInHPKi3FvWwZEB9P3N2cioiIiEic8yxYAECwUyfCeXmG0zSPioiIiEici9fTMgCuaL75nDlzmDNnDkVFRQC0b9+eM844gx49ekRzsyIiIkml6ULVODstA1EuIjk5OZx77rkUFBQA8MEHH3DnnXdy55130qFDh2huWkREJDkEAri/+QbQEZGt9PyfZnbOOecwZ84cVqxYoSIiIiISAe7Fi3H4/YSzsgjuu6/pOM0W1SKyuXA4zGeffUZtbS1dunTZ5msCgQCBQKDpY8uy8Pl8Tb+OpMb3i/T7xgrNF/8SfcZEnw8Sf0bNFxuarg/p2RPL6WzW18bCjJZt23Y0N7BmzRpuuukmAoEAXq+XK6+8ksMOO2ybr502bRrTp09v+rhTp05MnDgxmvFERETi25lnwvTp8I9/wJgxptM0W9SLSDAYpLi4mKqqKubPn8+7777L2LFjad++/Vav3d4RkaKiIoLBYERzWZZFQUEBhYWFRPm3wAjNF/8SfcZEnw8Sf0bNFwNsm9aHHYbz11/ZOHMmdb16NevLozWjy+UiPz9/114bsa1ubwMuV9PFqp07d+bHH3/kjTfe4NJLL93qtW63G7fbvc33idYfAtu2Y/cPWARovviX6DMm+nyQ+DNqPnOca9bg/PVXbLeb2m7dYDdzmpyxxdcRsW17i6MeIiIisnuaHnR38MHQcE1lvIlqEZk6dSpLly5lw4YNrFmzhhdeeIHFixdzzDHHRHOzIiIiSSFeH3S3uaiemikrK+Ohhx6ipKSE1NRU9t57b2666Sa6desWzc2KiIgkhXheUbVRVIvIn//852i+vYiISNKyystx/fe/QHyuqNpIz5oRERGJQ56vv8aybYJ77024dWvTcXabioiIiEgciufny2xORURERCQOJcKFqqAiIiIiEn+Cwbh+0N3mVERERETijHvJEhzV1YQzMwlu5/lt8UJFREREJM40nZY5/HBwxPdf5fGdXkREJAklyoWqoCIiIiISX2w7YS5UBRURERGRuOL85RechYXYLheBHj1Mx9ljKiIiIiJxpHFZ98DBB2PH6YPuNqciIiIiEkcS6foQUBERERGJK57584HEuD4EVERERETihmPTJtxLlwJQ16uX4TSRoSIiIiISJzyffQZA4IADCOflGU4TGSoiIiIicSLlk08AqO3d23CSyFERERERiROeTz8FoE5FRERERFqSY8MG3CtWYFsWtQlyfQioiIiIiMSFputDDjoIOzvbcJrIURERERGJA43XhyTSaRlQEREREYkLiXihKqiIiIiIxDzHunW4Vq3CdjioO+oo03EiSkVEREQkxqU03C0T6NYNOyPDcJrIUhERERGJcY1FpPboow0niTwVERERkRiXiOuHNFIRERERiWHONWtwrV2L7XIlzIPuNqciIiIiEsMaj4YEunfHTksznCbyVERERERiWKLetttIRURERCRW2fZvF6qqiIiIiEhLcv70E87CQmyPh7qePU3HiQoVERERkRjVtKz74YeDz2c4TXSoiIiIiMSoRD8tAyoiIiIiscm2m564m4jrhzRSEREREYlBrhUrcBYVYXu91PXoYTpO1KiIiIiIxKCm1VSPOAJSUgyniR4VERERkRiU6OuHNFIRERERiTXhcFJcqAoqIiIiIjHHtXQpjtJSwqmpBA491HScqHJF881nzZrFF198wS+//ILH46FLly788Y9/pF27dtHcrIiISFxrPBpSd9RR4HYbThNdUS0iS5YsoX///nTu3JlQKMSLL77IHXfcwT333IPX643mpkVEROJW0/UhRx9tOEn0RbWI3HTTTVt8PHLkSEaMGMHKlSs58MADo7lpERGR+BQK4Zk/H0js9UMaRbWI/K/q6moA0tPTt/n/BwIBAoFA08eWZeFrWNLWsqyIZml8v0i/b6zQfPEv0WdM9Pkg8WfUfNHhXrwYR3k54YwMgoccEtXtx8I+tGzbtltiQ7Ztc+edd1JVVcW4ceO2+Zpp06Yxffr0po87derExIkTWyKeiIhIbLjrLrj+ejjlFHjtNdNpoq7FjohMmjSJNWvWbLeEAAwePJhBgwY1fdzY0IqKiggGgxHNY1kWBQUFFBYW0kJdrEVpvviX6DMm+nyQ+DNqvujIfustvED54YdTtX59VLcVrRldLhf5+fm79tqIbXUHnnrqKRYsWMDYsWPJzc3d7uvcbjfu7VwdHK0/BLZtJ+Q3UCPNF/8SfcZEnw8Sf0bNF0GBAJ7PPwfA37t3i23X5D6M6joitm0zadIk5s+fzy233ELr1q2juTkREZG45l64EEd1NaHsbIJdu5qO0yKiWkQmTZrERx99xFVXXYXP56O0tJTS0lLq6uqiuVkREZG41LR+yO9/D47kWHM0qqdm5syZA8Btt922xedHjhzJcccdF81Ni4iIxJ1kWdZ9c1EtItOmTYvm24uIiCQOvx/3l18CybF+SKPkOO4jIiIS41Lmz8fh9xMqKCDYpYvpOC1GRURERCQGpMybB4C/Tx9I0EXitkVFREREJAakvP8+ALV9+pgN0sJURERERAxzrl2L+4cfsJ1Oav/v/0zHaVEqIiIiIoalvPceAHU9e2JnZhpO07JURERERAxrLCK1Sbi0hYqIiIiISbW1pHz8MQD+vn0Nh2l5KiIiIiIGeb78sn5Z9/x8ggceaDpOi1MRERERMci7+WmZJFnWfXPJN7GIiEgMabxt159kt+02UhERERExxPHLL7j/+19sh4PaY481HccIFRERERFDvB98AECgRw/s7GzDacxQERERETGk8bbdZD0tAyoiIiIiZgQCpHz0EZB8y7pvTkVERETEAM+CBTgqKgjl5BDo1s10HGNURERERAxISfLbdhsl7+QiIiIGeZN4WffNqYiIiIi0MMevv+JevBjbslRETAcQERFJNo2LmAW6dSOcm2s2jGEqIiIiIi2s6bRMEt8t00hFREREpCUFg6R8+CGQ3OuHNFIRERERaUHub77BUVZGOCuLQI8epuMYpyIiIiLSgppOyxx7LDidhtOYpyIiIiLSgpqetpvkd8s0UhERERFpIY7iYjwLFwJaP6SRioiIiEgLSWl82u5BBxFu08ZwmtigIiIiItJC9LTdramIiIiItIRQqOn6EK0f8hsVERERkRbgXrQIZ0kJ4VatqDv8cNNxYoaKiIiISAtoetruMceA2204TexQEREREWkBWtZ921REREREoszatAn3t98CWj/kf6mIiIiIRJl37lyscJhA166E27UzHSemqIiIiIhEmffNNwHwn3SS4SSxR0VEREQkiqyqKrwNT9utURHZioqIiIhIFKW89x6W309w770Jdu1qOk7MURERERGJIu9bbwENp2Usy3Ca2OOK5psvWbKE1157jZ9++omSkhKuvfZajjzyyGhuUkREJHbU1eGdOxeAmgEDDIeJTVE9IlJbW0vHjh256KKLorkZERGRmJTyySc4KioItW5NQKupblNUj4j06NGDHj16RHMTIiIiMavpbpn+/cGhqyG2JapFpLkCgQCBQKDpY8uy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94oV5A0divPnn03HEok5qS+8gBUMUnvEEQQPPNB0nKSkIhInWk2YgOX3U9urF/6BA03HkTgQ6tyZ4lmzCO61F65Vq8gdMgTnTz+ZjiUSO4JB0p57DoDqCy80HCZ5qYjEAfdXX5E6axa2ZVF+2226olt2WahDB4pnziTQuTOuX34hb+hQXMuXm44lEhO877yDs7CQUG4uNfoHnjEqIrEuHCbzttsAqD7rLAKHHGI2j8SdcNu2bJwxg0DXrjh//ZXcoUNxff+96VgixqU9/TQA1WefrafrGqQiEuN8r7yC55tvCKelUXH99abjSJwK5+dTPG0adYceinPTJvKGDcP9zTemY4kY4/76a1I++QTb5dJKqoapiMQwq7qajPHjAai84grCbdoYTiTxzM7JYeOLL1LXsyeOsjJyzz4bz/z5pmOJGJH+0EMA1AweTKh9e8NpkpuKSAxLe/RRnIWFBNu3p/KSS0zHkQRgZ2SwcepUao8+GkdlJTnnnovn449NxxJpUa7//hff229jWxaVf/mL6ThJT0UkRjnWrSP94YcBKL/5ZvB6DSeSRGGnpbFxyhT8ffvi8PvJvfBCUj780HQskRbTeDTEP3AgwX33NZxGVERiVMaECTj8fmqPPBL/oEGm40ii8fnY9OST+I8/HsvvJ2f4cFLee890KpGoc65ahe/VV4H6U95inopIDHJ//TWpM2fW3647dqxu15XoSElh0xNPUNO/P1ZtLTkXXUTKu++aTiUSVemPPIIVDuPv00d3IcYIFZFYY9tk3norADVnnkmgWzfDgSShpaRQ8uij1AwciFVXR87FF5MyZ47pVCJR4Vi/ntSXXwag8sorDaeRRioiMcb36qt4vv6acGoq5TfcYDqOJAOPh5JHHqFm0CCsQICcSy/F++abplOJRFz6Y49h1dVRe9RR1B15pOk40kBFJIZYNTW0arxd9y9/IVxQYDiRJA23m5KHH6b6tNOwAgGyL78c7+uvm04lEjGOTZtIbVjOXdeGxBYVkRiS9uijuNatI/i731F56aWm40iycbkofeABqocMwQoGyf7zn/G+9prpVCIRkTZpEo6aGuoOOYTa444zHUc2oyISIxzr1/92u+5NN4HPZziRJCWXi9L77qP6zDOxQiGyR43CN2uW6VQie8SqqGhazr3yiit0A0CMURGJEa0eeKC+rffsif/UU03HkWTmdFJ6991UnX02VjhM1pVX4psxw3Qqkd2W9swzOMrKCOy7L/6TTjIdR/6HikgMcBQWkvriiwCUjxmjti7mOZ2U3XUXVeedV19GrroKX8PdBiJxpaaGtMcfB6By1Chw6K+9WKM9EgPSH330tyu5e/UyHUeknsNB2T//SdUf/4hl22T99a/4pk0znUqkWVJffBFncTHB9u2pGTzYdBzZBhURwxwbN5L67LMAVF51leE0Iv/D4aBswgSqLrigvoxcfTW+l14ynUpk19TVkf7IIwBU/vnP4HYbDiTboiJiWNrjj+Pw+6k79FBqjz3WdByRrTkclP3jH1QNH15fRq65htQXXjCdSmSnfLNm4Vq3jlB+PtVnnWU6jmyHiohBVmkpaZMnAw1HQ3RtiMQqy6LsjjuovOii+jJy7bWkTp1qOpXI9oVCTXciVl52me5EjGEqIgalPf00jspKAl274j/xRNNxRHbMsigfN47Kiy8GIOu665oWiBKJNd433sD944+EMzOpPv9803FkB1REDLEqK0l/8kkAKq64QldyS3xoeBBj5YgRAGTdcEPTNU4iMSMcptWDDwJQddFF2OnphgPJjuhvP0NSn30WR2kpwX32wT9okOk4IrvOsii/7TYqL7kEgKwbbyR1yhTDoUR+45s1C/fixYTT06m86CLTcWQnVERMqKkh/dFHgYajIU6n4UAizWRZlN96a/25dyDrb38jtWHlShGTrJoaMiZMAOpXUbVzcgwnkp1RETEg7YUX6u9r79BB97VL/LIsyv/+9/rbIoGsm28m7YknDIeSZJf22GM4168n2L590ylEiW0qIi2ttva3+9pHjdJ97RLfLIvym26i4i9/ASDztttIazjaJ9LSHL/++tszu/72N/B6DSeSXaEi0sJSp0/HuX49oYICqocNMx1HZM9ZFhU33kjF6NEAZN5+O+kPPWQ2kySlVnfdhaO6mrrDDtMzu+KIK5pvPnPmTL7++mtWrVqFy+VicsOaGUkrGGz6AV15+eWQkmI4kEiEWBYV112H7XKR8a9/1Z+jDwapbCgnItHmWry46ZldZbfeqnWZ4khUj4gEg0F69epFv379ormZuOF75RVca9YQys2l+rzzTMcRibjKv/6V8uuvByDjrrtodffdYNuGU0nCs20yx47Fsm1qTj2VQM+ephNJM0T1iMiwhlMP77//fjQ3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LNzqupBp06ZFa7MRkfLhhziqqwm1basn7YpIdKSkUHfssdQdeyzlY8fi+vFHUt55p748rF6Nc/VqHJWVOAsLcRYWwvz5u7UZ2+EgcMgh1B11FHW9elF7xBEqHhJTolZEjjvuOI5ruNUr3vjefBOAmoEDdVpGRKLPsgjuuy/BffelqvFzto2jpATn6tVNxcS1ejXONWvqVzf1+er/S0sjnJqKnZaGnZpa/19aGuG0NIJdu1LXsyf2DpZNEDEtftZabymBAN45cwCdlhERgyyLcE4O4ZwcAj16mE4jEjXxc/VoC/F89hmO0tL6RcyOPNJ0HBERkYSmIvI/Gk/L+AcM0NMkRUREokxFZHPhMN633gJ0WkZERKQlqIhsxrNgAc4NGwi3akXtThZtExERkT2nIrIZb8MiZv4TTwSPx3AaERGRxKci0si28TZeHzJwoOEwIiIiyUFFpIH7++9xrV1L2OulNk7XPxEREYk3KiINGk/L1Pbti72Hz3YQERGRXaMi0kCnZURERFqeigjgWrEC94oV2G43/uOPNx1HREQkaaiIsNlpmWOOwc7IMJxGREQkeaiIsNlpGS1iJiIi0qKSvog4167F89132A4H/v79TccRERFJKklfRBqPhtQddRTh3FzDaURERJKLisjrrwO6W0ZERMSE5C4i69fj/uorAGoGDDAcRkREJPkkdxF59VUs26auRw/C7dqZTiMiIpJ0kruIzJgB6LSMiIiIKUlbRKySEnjvPUCnZURERExJ2iLifecdCIUIdO1KaJ99TMcRERFJSslbRBpWU9VpGREREXOSsohYlZWkfPABoCIiIiJiUlIWkZR587Bqa2HffQkecIDpOCIiIknLZTqACYHu3am4/npa7bUXWBbYtulIIiIiSSkpi0hor72oHD2aVm3bwvr1puOIiIgkraQ8NSMiIiKxQUVEREREjFEREREREWNURERERMQYFRERERExRkVEREREjFEREREREWNURERERMQYFRERERExRkVEREREjFEREREREWNURERERMQYFRERERExJi6evutyRS9mNN87Fmi++JfoMyb6fJD4M2q++BfpGZvzfpZt23ZEty4iIiKyi5L21ExNTQ033HADNTU1pqNEheaLf4k+Y6LPB4k/o+aLf7EwY9IWEdu2+emnn0jUA0KaL/4l+oyJPh8k/oyaL/7FwoxJW0RERETEPBURERERMSZpi4jb7eaMM87A7XabjhIVmi/+JfqMiT4fJP6Mmi/+xcKMumtGREREjEnaIyIiIiJinoqIiIiIGKMiIiIiIsaoiIiIiIgxib+AfoOZM2fy9ddfs2rVKlwuF5MnT97p1zz88MN88MEHW3xuv/32Y/z48VFKuWd2Z0bbtnn55Zd59913qaysZL/99uPiiy+mQ4cO0Q/cTJWVlTz99NN89dVXAPTs2ZOLLrqItLS07X5NrO/Dt99+m9dee43S0lLat2/P8OHD6dq163Zfv2TJEqZMmcLPP/9MdnY2p556Kv369WvBxM3TnPkWL17M2LFjt/r8vffey+9+97toR222JUuW8Nprr/HTTz9RUlLCtddey5FHHrnTr4mX/dfc+eJt/82aNYsvvviCX375BY/HQ5cuXfjjH/9Iu3btdvh18bQPd2dGE/sxaYpIMBikV69edOnShXnz5u3y13Xv3p2RI0c2fRzLDz/anRlfffVVXn/9dUaOHEnbtm2ZOXMmd9xxB/fddx8+ny/KiZvngQceYOPGjdx0000APPbYYzz44IPceOONO/y6WN2Hn376KZMnT2bEiBHsv//+zJ07l3/84x/ce++95OXlbfX6DRs2MGHCBI4//niuuOIKli1bxpNPPklGRga9evUyMMGONXe+Rvfddx+pqalNH2dkZLRE3Garra2lY8eO9OnTh7vvvnunr4+3/dfc+RrFy/5bsmQJ/fv3p3PnzoRCIV588UXuuOMO7rnnHrxe7za/Jt724e7M2Kgl92Ns/ERuAcOGDQPg/fffb9bXuVwusrKyIh8oCpo7o23bvPHGGwwePJijjjoKgFGjRnHJJZfw8ccfc+KJJ0YrarP9/PPPfPvtt4wfP5799tsPgMsuu4ybb76ZdevW7bDhx+o+nD17Nn379uX4448HYPjw4SxcuJA5c+Zw7rnnbvX6OXPmkJeXx/DhwwFo3749P/74I//5z39i8odgc+drlJmZucOjXLGiR48e9OjRY5dfH2/7r7nzNYqX/df4D5pGI0eOZMSIEaxcuZIDDzxwm18Tb/twd2Zs1JL7MWmKyO5asmQJI0aMIC0tja5du3LOOeeQmZlpOlZEbNiwgdLSUg499NCmz7ndbg488ECWLVsWU0Vk+fLlpKamNpUQgC5dupCamsqyZct2WERicR8Gg0FWrlzJ6aefvsXnu3XrxrJly7b5NStWrKBbt25bfK579+689957BIPBmDnSA7s3X6Prr7+eQCBA+/btGTJkCAcffHAUk7aceNp/eyJe9191dTUA6enp231NvO/DXZmxUUvux9j+XTOsR48e/P73vycvL48NGzbw0ksvMW7cOP75z38mxEp7paWlAFv9pZyZmUlxcbGBRNtXWlq6zfKQmZnZNMe2xOo+LC8vJxwOb/P3fnvzbOv3IDMzk1AoREVFBdnZ2dGK22y7M192djaXXnop++yzD8FgkA8//JDbb7+dW2+9daf/eosH8bT/dkc87z/btpkyZQoHHHAAe+2113ZfF8/7cFdnNLEf47qITJs2jenTp+/wNRMmTKBz58679f69e/du+vVee+1F586dGTlyJF9//XXTqYxoi/aMAJZlbfFxSy62u6vzbY9t21vl31ws7MMd2Vb2Hc2zvX21o68xqTnztWvXbosjW126dKG4uJj//Oc/Mf8X2a6Kt/3XHPG8/yZNmsSaNWsYN27cTl8br/twV2c0sR/juogMGDCAo48+eoevyc/Pj9j2srOzyc/PZ/369RF7z52J5oyN102UlpZu0eTLy8tb7NTFrs63evVqysrKtvr/mpvVxD7cloyMDBwOx1ZHB8rKyrY7T1ZW1lavLy8vx+l07tKh1pa0O/NtS5cuXfjoo48inM6MeNp/kRIP+++pp55iwYIFjB07ltzc3B2+Nl73YXNm3JZo78e4LiIZGRktekV2RUUFGzdubNHDb9GcsXXr1mRlZbFo0SI6deoE1J/bX7JkCeedd15Utvm/dnW+Ll26UF1dzQ8//MC+++4L1J+vra6uZv/999/l7ZnYh9vicrnYZ599WLRo0Ra3RC5atIgjjjhim1+z3377sWDBgi0+t3DhQvbZZ5+YOze9O/Nty08//RSTFxrvjnjaf5ESy/vPtm2eeuopvvjiC2677TZat26906+Jt324OzNuS7T3Y9IsaFZcXMyqVasoLi4mHA6zatUqVq1ahd/vb3rN6NGj+eKLLwDw+/0888wzLF++nA0bNrB48WImTpxIq1atdrpWgCnNndGyLAYOHNh0r/maNWt4+OGHSUlJ4f/+7/9MjbFN7du3p3v37jz22GMsX76c5cuX89hjj3HYYYdtcRgxnvbhoEGDePfdd5k3bx4///wzkydPpri4uOki4alTp/LQQw81vb5fv34UFxc3rWEwb9485s2bxymnnGJqhB1q7nyvv/46X3zxBevXr2ft2rVMnTqV+fPnM2DAAFMj7JDf72/6HoP6i78bv/8g/vdfc+eLt/03adIkPvroI6666ip8Ph+lpaWUlpZSV1fX9Jp434e7M6OJ/Rh7FS5KXnrppS0Wtrr++usBuPXWWznooIMAWLduXdNVxQ6Hg7Vr1/Lhhx9SVVVFdnY2Bx10EKNHj4659TUaNXdGgNNOO426ujqefPJJqqqq2HfffbnpppticsYrr7ySp556qmkxssMPP5yLL754i9fE0z7s3bs3FRUVzJgxg5KSEjp06MCYMWOaTrWVlJRscdFw69atGTNmDFOmTOHtt98mOzubP/3pTzF52yA0f75gMMizzz7Lpk2b8Hg8dOjQgRtvvJHDDjvM1Ag79OOPP26x8NMzzzwDwB/+8AdGjRoV9/uvufPF2/6bM2cOALfddtsWnx85ciTHHXccEP/fg7szo4n9aNkteWWiiIiIyGaS5tSMiIiIxB4VERERETFGRURERESMURERERERY1RERERExBgVERERETFGRURERESMURERERERY1RERERExBgVERERETFGRURERESMURERERERY/4fbMvY41QuAb4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X = np.linspace(-1.5, 2.5, 50)\n", "X0 = np.array([-1, 0, 2])\n", "plt.plot(X, p(X), 'r-')\n", "plt.plot(X0, p(X0), 'r*');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now find some roots with `bisection`:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.9999999999999998, -1.3322676295501877e-15)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x0 = bisection(p, 0.3, 3)\n", "x0, p(x0)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.0000000000000022, -6.661338147750959e-15)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x0 = bisection(p, -100, -0.5)\n", "x0, p(x0)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, -0.0)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x0 = bisection(p, -0.5, 0.5)\n", "x0, p(x0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All the roots are accurate to the given precision." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also check that we correctly raise a `ValueError` if the bracket is incorrect:\n", "\n", "```python\n", "x0 = bisection(p, -1.5, 1)\n", "```\n", "```python\n", "---------------------------------------------------------------------------\n", "ValueError Traceback (most recent call last)\n", "Input In [38], in \n", "----> 1 x0 = bisection(p, -1.5, 1)\n", "\n", "Input In [12], in bisection(f, a, b, Nmax, eps)\n", " 8 return b\n", " 10 if (fa*fb) > 0:\n", "---> 11 raise ValueError(f\"bisect: Initial bracket [{a}, {b}] \"\n", " 12 f\"does not contain a single root\")\n", " 14 for iteration in range(Nmax):\n", " 15 x = (a + b)/2\n", "\n", "ValueError: bisect: Initial bracket [-1.5, 1] does not contain a single root\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Finding the range with the bisection algorithm\n", "\n", "Define the trial function `f`.\n", "\n", "Note that our `y_lindrag()` function depends on `x` **and** `v` but `bisect()` only accepts functions `f` that depend on a *single variable*, $f(x)$. We therefore have to wrap `y_lindrag(x, v)` into a function `f(x)` that sets `v` already to a value *outside* the function: [Python's scoping rules](https://stackoverflow.com/questions/291978/short-description-of-the-scoping-rules#292502) say that inside the function `f(x)`, the variable `x` has the value assigned to the argument of `f(x)` but any other variables such as `v` or `b1`, which were *not defined inside `f`*, will get the value that they had *outside `f`* in the *enclosing code*. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def f(x):\n", " b1 = 1.\n", " v0 = initial_v(100, 30)\n", " return y_lindrag(x, v0, b1=b1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, it is a bit messy to rely on using variables from outside the scope. It is cleaner to only use variables defined _inside_ the function. We can achieve this effect by using _keyword arguments_ where we set the default value to the value that we want to use inside our function: In this case, `b1` and `v0` are set as keyword arguments, with the understanding that when `f(x)` is called later, the keyword arguments are never changed and keep their defaults:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "v0 = initial_v(100, 30)\n", "b1 = 1.0\n", "\n", "def f(x, v0=v0, b1=b1):\n", " return y_lindrag(x, v0, b1=b1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The initial bracket $[a_\\text{initial}, b_\\text{initial}]$ is a little bit difficult for this function: choose the right bracket near the point where the argument of the logarithm becomes 0 (which is actually the maximum $x$ value $\\lim_{t\\rightarrow +\\infty} x(t) = \\frac{v_{0x}}{b}$):\n", "\n", "$$\n", "b_\\text{initial} = \\frac{v_{0x}}{b} - \\epsilon'\n", "$$\n", "\n", "where $\\epsilon'$ is a small number." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "43.30067423347077" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# use v0 and b1 from above!\n", "\n", "m = 0.5\n", "b = b1/m\n", "bisection(f, 0.1, v0[0]/b - 1e-12, eps=1e-6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that this solution is *not* the maximum value $\\lim_{t\\rightarrow +\\infty} x(t) = \\frac{v_{0x}}{b}$:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "43.30127018922194" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v0[0]/b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Find the range as a function of the initial angle " ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/sm/37rm_wm16tq9qsf4n5md98ph0000gp/T/ipykernel_61984/482518341.py:4: RuntimeWarning: divide by zero encountered in log\n", " return x/v0x * (v0y + g/b) + g/(b*b) * np.log(1 - b*x/v0x)\n" ] } ], "source": [ "b1 = 1.\n", "m = 0.5\n", "b = b1/m\n", "speed = 100\n", "u = []\n", "for theta in np.arange(1, 90):\n", " v0 = initial_v(speed, theta)\n", " def f(x, v0=v0, b1=b1):\n", " return y_lindrag(x, v0, b1=b1)\n", " R = bisection(f, 0.1, v0[0]/b - 1e-16, eps=1e-5)\n", " u.append((theta, R))\n", "u = np.array(u)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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IiIiUuPoDI6IiIjUOCo4IiIiUuOo4IiIiEiNo/WfK0lRUREvvfQSABdffLGW1g5iGqvgpHEJXhqb4KRxOTjdZFwOCxcu5PXXXyczM5NmzZoxePBgjjrqKAA+/vhjjDFERkaSk5ND3759PU5bM6WlpbF06VI2b95MREQE7du355JLLqFJkyalzznYOIHGqqqlpaXx8ssv069fPwYPHlx6XOPinR07dvDiiy+yYsUKCgoKSE5O5rrrrqNNmzaAxsYLxcXFzJkzh8WLF5OZmUm9evXo06cP5513Ho7jv7iicakYXaI6TJ9++inPPvss5513HpMnT+aoo47i3nvvZfv27QC4rovjOLiui+u6HqetuVatWsVZZ53FxIkTGTVqFK7rMmHCBPbs2QMcepxAY1WV1q1bx/vvv0/Lli3LHNe4eCcnJ4fRo0cTHh7OXXfdxbRp07j00kuJiYkBNDZemT9/Pu+99x5XXnklDz74IJdccgmvv/4677zzDqBxqQwqOIfpzTffpG/fvpx22mmlTbphw4a8++67AJx88sn8+OOP/PDDD5xyyikep625UlNT6dOnD82bN6dVq1YMHTqU7du3s379euDQ4wQaq6qyZ88eHnnkEYYMGUJsbGyZxzQu3pk/fz4NGjRg6NChtG3blkaNGtG5c2eSkpIAjY1X1q5dy7HHHkuPHj1o1KgRJ5xwAl26dOGnn34CNC6VQRfsDkNRURHr16/nn//8Z5njXbp0Yc2aNYB/QaY/n46X6pGXlwdAXFzcYY0TaKyqyowZM+jevTtdunRh3rx5pcc1Lt766quv6Nq1K9OmTWPVqlXUr1+fM888k9NPP11j46EjjzyS9957jy1bttCkSRM2btzImjVruOyyyzQulUQF5zBkZ2fjui7x8fFljsfHx5OZmelNKMFay3PPPceRRx5JixYt2LFjh8bJI5988gkbNmxg0qRJ+zymnx9vbdu2jffee49zzjmHAQMGsG7dOp555hl8Ph+dO3fW2HgkJSWFvLw8br755tLLTBdddBG9evXS/8sqiQpOORhjDuuYVI+nn36aTZs2MX78+DLHNU7Va/v27Tz77LOkpqYSERFxwOdpXLzhui5HHHEEF198MQCtW7fml19+4d1336Vz586AxsYLn376KYsXL+bGG2+kefPmbNy4kWeffZZ69erRpUsXQONSUSo4h6Fu3bo4jrNPc87KytqnYUv1mDlzJsuWLWPcuHE0aNAA0Dh5Zf369WRlZTFy5MjSY67rsnr1at555x1eeOEFjYuH6tWrR7Nmzcoca9asGV988YV+Zjz04osvkpKSwsknnwxAixYtyMjI4LXXXqNXr14al0qggnMYwsPDadOmDStXruT4448vPb5y5UqOO+44D5PVPtZaZs6cydKlSxk7diyNGjUqfUzj5I3OnTvzwAMPlDn2+OOP06RJE1JSUvD5fBoXD3Xo0IEtW7aUObZlyxYSExP1M+Oh/Pz80ungJRzHwVqrcakkKjiHqX///jzyyCO0adOG9u3b8/7777N9+3bOOOMMr6PVKk8//TRLlixhxIgRREdHl/4LJyYmhoiICI2TB6Kjo2nRokWZY5GRkdSpU6f0uMbFO+eccw6jR49m3rx5nHTSSaxbt45FixZxzTXXABobrxxzzDHMmzePhg0b0qxZMzZu3Mibb77JqaeeCmhcKoMW+iuHkkWXdu7cSfPmzbnsssvo2LGj17FqlYEDB+73+NChQ+nTpw+gcQoGY8eOpVWrVvtd6E/jUv2WLVvGSy+9RHp6Oo0aNeKcc87h9NNPL31cY1P9du/ezaxZs1i6dClZWVnUr1+fk08+mQsuuKB0RWKNS8Wo4IiIiEiNo4X+REREpMZRwREREZEaRwVHREREahwVHBEREalxVHBERESkxlHBERERkRpHBUdERERqHBUcERERqXFUcERERKTGUcERERGRGkcFR6QW+PDDDxk4cCDbtm3zOsphmz17NgMHDiQ7O9vrKOVWVX/eeXl5PP/881x33XUMGjSIO++8k7Vr11bq5xCpKVRwRERCQHZ2NqNHj2b16tVcdtll3Hbbbbiuy3333UdOTo7X8USCTrjXAURE5NAee+wxwL9Te2RkJAB16tThrrvu4quvvqJPnz4ephMJPio4IrVQeno68+bN44cffmDHjh3ExsbSunVrLr74Ylq0aFH6vOnTp7Nq1SqmT59e5vWzZ89m7ty5zJ49e59jU6dO5dVXX+Xrr78mIiKC7t27M3jwYGJiYkqfu3nzZubMmcP3339Pbm4u8fHxHH300QwZMgSfz1fmc2VlZTFz5syDvl+gX195c3/55ZfMmjWLLVu2UL9+ffr160dOTs4+fxb7s3XrVmbPns23335LXl4ejRs35qyzzuLvf//7QV8H8N1337F8+XJSU1NLyw1A48aNAfjtt98O+R4itY0KjkgttGPHDuLi4rj44oupW7cuOTk5fPTRR9x1113cf//9NGnSJOD3njp1KieddBJ9+/Zl06ZNvPzyywAMHToUgI0bNzJmzBjq1KnDwIEDSU5OZufOnXz11VcUFRXtU3AO9X6V9fUd6vOsWLGCBx54gI4dOzJ8+HBc1+WNN94gMzPzkH8mv/76K6NGjaJhw4ZceumlJCQksGLFCp555hl27drFv/71r4O+/v333ycxMZGjjz6a4uLi0uO7d+8GICws7JAZRGobFRyRWqhjx4507Nix9GPXdenRowe33nor7733HpdddlnA7923b1/+8Y9/ANClSxfS09P54IMPuO666zDG8PzzzxMWFsakSZOoW7du6et69+4d0PtV1td3qM8za9Ys6tevT2pqKuHh/v91duvWjWHDhh3yz+S5554jOjqa8ePHl54R6tKlC0VFRbz22mucffbZxMXF7fe1ruvyzTffkJuby8UXX7zf5zRq1OiQGURqGxUckVqouLiY+fPns3jxYtLT08ucFdi8eXOF3vvYY48t83HLli0pLCwkKyuL6OhoVq1aRd++fcuUm0DfLyEhYb+vCeTrO9jniYqKYv369Zx11lml5QYgKiqKY445hg8//PCA+QsKCvjuu+8444wziIyMLJOle/fuvPPOO/z444907959v6/fsmULubm5XHjhhXTr1q3MY++88w4fffQRbdu2PeDnF6mtVHBEaqHnnnuOhQsXkpKSQseOHYmLi8MYwxNPPEFBQUGF3vuvZyJKLjkVFBTgui6u61K/fv1Keb8DCeTrO9jnKS4uxlq730IVHx9/0Pw5OTkUFxfzzjvv8M477+z3Obt27Trg6zMyMgBo164dRxxxRJnHfvnlFxo3blyhS4oiNZUKjkgttHjxYk455ZR9Lnns2rWL2NjY0o99Ph+FhYX7vP5gfyEfTFxcHI7jsGPHjoBef7gO9+s7XLGxsRhj9nu/zaHuwYmNjcVxHP72t79x1lln7fc5B7vEVHLGx3HKruqxceNG1q9fz6BBgw4eXqSW0jo4IrWQMabMpRaA5cuX71M8GjVqRFZWVpm/xIuKivjmm28C+rwRERF07NiRzz77rEoX8Dvcr+9wRUVF0aZNG7788kuKiopKj+/Zs4fly5cf9LWRkZEcffTRbNiwgZYtW3LEEUfs81+dOnUO+PqS8rNp06bSY8XFxTzzzDM0atTosGZhidRGOoMjUgv16NGDjz76iKZNm9KyZUvWr1/P66+/ToMGDco876STTmLWrFk8/PDDnHvuuRQWFvL222/jum7An/vSSy9lzJgxpKamkpKSQlJSEllZWXz11Vdcc801REdHV/TLO+yvrzwuvPBCJk2axMSJEzn77LNLZ1FFRUUdcqG9yy+/nNGjRzNmzBjOPPNMEhMT2b17N+np6Sxbtoy77777gK9t0aIFbdq04dVXXyU+Pp6YmBjefPNNfv31V0aPHl1m2riI/EEFR6QWuvzyywkPD+e1115jz549tG7dmttuu41XXnmlzPMaNWrEiBEjePnll5k2bRr16tXjnHPOITs7m7lz5wb0uVu1asW9997L7Nmzefnll9m9ezcJCQl06tRpn7MugTrcr688unXrxq233srs2bN56KGHSEhI4Mwzz2Tnzp18/PHHB31ts2bNmDx5Mq+++iqvvPIKWVlZxMbGkpycfMCbi//s1ltv5cknn+SJJ57A5/PRrVs3Jk2apNlTIgdhrLXW6xAiIqGoqKiIESNGUL9+fUaNGuV1HBH5E53BERE5TI8//jhdunShXr16ZGZm8t5777F582YGDx7sdTQR+QsVHBGRw7R7925eeOEFsrOzCQsLo02bNtx555106dLF62gi8he6RCUiIiI1jqaJi4iISI2jgiMiIiI1jgqOiIiI1DgqOCIiIlLjqOCIiIhIjaOCIyIiIjWOCo6IiIjUOCo4IiIiUuOo4IiIiEiNo4IjIiIiNY4KjoiIiNQ4/x/4rcy2rE57BAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(u[:, 0], u[:, 1])\n", "plt.xlabel(r\"launch angle $\\theta$\")\n", "plt.ylabel(r\"range $R$ (m)\");\n", "# make labels with degree signs\n", "ax = plt.gca()\n", "ax.xaxis.set_major_formatter(plt.matplotlib.ticker.StrMethodFormatter(r\"{x:g}$\\!^\\circ$\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a function `find_range()` to calculate the range for a given initial velocity $v_0$ and plot $R(\\theta)$ for $10\\,\\text{m/s} ≤ v_0 ≤ 100\\,\\text{m/s}$.\n", "\n", "For some angles, our algorithm might not convert with the default `Nmax`. In order to avoid our code stopping with the `RuntimeError` exception, we catch the exception and just print a message, using the `try/except/else` block (note that the `else` is code that is only executed if the `try` succeeded). " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "def find_range(speed, b1=1, m=0.5):\n", " b = b1/m\n", " u = []\n", " for theta in np.linspace(1, 90, 90):\n", " v0 = initial_v(speed, theta)\n", " def f(x, v0=v0, b1=b1):\n", " return y_lindrag(x, v0, b1=b1)\n", " try:\n", " R = bisection(f, 0.01, v0[0]/b - 1e-12, eps=1e-5)\n", " except RuntimeError:\n", " print(f\"NOTE: bisect did not converge for {theta}\")\n", " else:\n", " u.append((theta, R))\n", " return np.array(u)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/sm/37rm_wm16tq9qsf4n5md98ph0000gp/T/ipykernel_61984/482518341.py:4: RuntimeWarning: invalid value encountered in log\n", " return x/v0x * (v0y + g/b) + g/(b*b) * np.log(1 - b*x/v0x)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for speed in (10, 25, 50, 75, 100):\n", " u = find_range(speed)\n", " plt.plot(u[:, 0], u[:, 1], label=\"{} m/s\".format(speed))\n", "plt.legend(loc=\"best\")\n", "plt.xlabel(r\"launch angle $\\theta$\")\n", "plt.ylabel(r\"range $R$ (m)\");\n", "plt.gca().xaxis.set_major_formatter(plt.matplotlib.ticker.StrMethodFormatter(r\"{x:g}$\\!^\\circ$\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a bonus, find the dependence of the *optimum launch angle* on the initial velocity, i.e., that angle that leads to the largest range:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.argmax(u[:, 1])" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/sm/37rm_wm16tq9qsf4n5md98ph0000gp/T/ipykernel_61984/482518341.py:4: RuntimeWarning: invalid value encountered in log\n", " return x/v0x * (v0y + g/b) + g/(b*b) * np.log(1 - b*x/v0x)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n", "NOTE: bisect did not converge for 90.0\n" ] }, { "data": { "image/png": "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pHv37jzyyCMt6qJkfzLtoqDfBbBrG1Z2Jmbs9XZHEhERCUh+Kz4lJSV069atznKHo+EHle69997zbjN27FjGjh3b4H23ViZtONaubdUPLVXxEREROSO/nerq168fH3zwQa1lK1asqPUYCWk6JnU4GAMH9mAVHLc7joiISEDyW/G56667WL16NQ888ABlZWX84he/4J///GejJi+U+jPR7aF3dcm0stfbnEZERCQw+e1UV2xsLL/5zW/48ssvOX78OB06dKB3794+neoS35i0DKy9OVjZmXDFD+2OIyIiEnD8VnwAcnJyWLduHUVFRcTExFBRUeGd00eankkbjrXwFdi3C+tEYfVRIBEREfHy2+GYZcuW8fvf/56oqCjS0tKIiori5ZdfZtmyZf76CDkPE9sRkvuCZWFt0ekuERGR/+S3Iz7/+Mc/eOKJJ0hISPAu+973vseTTz7JD3+o0y7NxaRnYB3Yg7V5LdYFF367whECMbF6KJ+IiAQ1vxWfkJAQYmNjay1r3749Tqdfz6bJeZi0DKzFc2DP53gevqv2urHXYW64w55gIiIiAaDRp7oKCgooKCjghz/8IbNnz/bOuJyTk8NLL72koz3NzHSMx1xyGbhCv/3lrH4embX2Y6wW8vBVERGRptDowzH/Odngtm3bar3eunUrV199dWM/RhrAceeDcOeD3tdWVRWeX0yBkydgz+cwcKht2UREROzU6OKzcOFCf+SQJmRCQjBDL8Zas6L6kRYqPiIiEqQ0yU6QMGkZQPXkhpanyuY0IiIi9mjwEZ9Tp06xefNmvv76a5xOJ506daJ3797Ex8c3RT7xl/4p0Cay+nTXvl3QV/MriYhI8GlQ8dmzZw+zZs2ipKSkzrr4+HiuuOIKxo4dS2hoqN8Cin8YpxMzZBjW+k+wstdjVHxERCQINehU15w5c+jYsSPPPPMMr776Ki+//DIAo0aNok2bNrzxxhs89NBD5ObmNklYaRyT/t3TXR6b04iIiDS/BhWff/3rX9x888306tWLyMhI4uLiALj66qt59tlnmTVrFu3bt+epp54iPz+/SQJLIwwcCmERUJgPB/bYnUZERKTZNaj4REVFUVFRcdb1PXr04IknniApKYk333yz0eHEv4wrFDPkIkBPcBcRkeDUoOIzfPhw3nnnHSorK8++Q4eDcePGsWXLlkaHE//79u6uTCzLsjmNiIhI82pQ8bnxxhspLy/nkUceYceOHWf9H+fp06fPWY7ERoPTIDQU8r+G3P12pxEREWlWDbqrKyIigieffJI//vGPzJw5k06dOgHVszWXlpbicDjIzc1lyZIlDBgwoEkCS+OYsHAYnA7Z66snM0zqZXckERGRZtPgeXzatWvHww8/zOeff87HH39MSUlJnet5evbsyX//93/7LaT4l0nLqL6zKzsTa8JtemK7iIgEDZ8fWTF48GAGDx6MZVkcOXKE48eP43a76dy5M927d/dnRvEzk3IRltMJeYfhSC50TbI7koiISLNo9LO6jDF07dqVrl27+iOPNAMT0QYGpsL2zVhZmRgVHxERCRJ6VleQ+nYyw0ybk4iIiDQfFZ8gZYZcDCEhcPhfWHmH7Y4jIiLSLFR8gpRpGwn9UgAd9RERkeCh4hPETPpwQLM4i4hI8Gh08Tl16hRbt25lzZo1Z3xquwQuM/QSMA741z6s/K/tjiMiItLkGnVX1+LFi3n33Xe9z+969tlniYyM5KmnniIlJYUJEyb4I6M0ERMVA30Hwe4dWNnrMVdNsDuSiIhIk/L5iM/y5ctZvHgxl112GQ8//HCtdWlpaWRnZzc6nDQ9k1ZzukvX+YiISOvnc/H58MMPGTduHFOnTmXIkCG11nXp0oWjR482Opw0vZriw5dfYBV+Y28YERGRJuZz8Tl27FidwlMjIiKCU6dO+RxKmo+J6QC9+gNgbdFFziIi0rr5XHzatGnDiRMnzrju2LFjREVF+RxKmpdJ+/dkhlk63SUiIq2bz8Vn8ODBvPvuu5SVlXmXGWOoqqrio48+OuvRIAk83tNde3OwiotszSIiItKUfC4+N910E/n5+fy///f/eO2114Dq634effRR8vLyuOGGG/wWUpqWiesMSb3B8mCt/wTrm2Pf/jqlKQpERKT18Pl29vj4eH79618zd+5cli9fDsDq1asZNGgQ999/P3FxcX4LKU3PpGdg/Wsf1uI5WIvnfLvC4cDxy99g/n0dkIiISEvWqHl8unXrxvTp06msrOTkyZNERkYSGhrqr2zSjMzwy7DWrICigm8Xeqqgqgpr3ccqPiIi0io0qvjUcLlcxMbG+mNXYhMT04GQZ/6v1jJr1zY8sx/D2rIB69Z7MSEhNqUTERHxjwYVn/z8/AbtXKe7Wri+gyGyHZQUw96d0D/F7kQiIiKN0qDiM23atAbtfOHChQ3aXgKLCQnBDLkYa93HWFmZGBUfERFp4RpUfO69996myiEByqSPqC4+WzZg3fJjjKPRz7UVERGxTYOKz+jRo5sohgSsASkQ0RZOFMD+L6D3QLsTiYiI+Ez/fJdzMk4XZshFAFhZeqSFiIi0bD7f1XXTTTeddZ0xhrZt29KzZ0/Gjx/P4MGDff0YCQAmLQNrw6dY2ZlYk6ZijLE7koiIiE98PuIzceJEOnbsSGRkJKNGjWL8+PF873vfIzIykri4OC699FIKCgqYOXMm27dv92dmaW6DUiEsHAqOw8F9dqcRERHxmc9HfCIjI4mJieG3v/0t4eHh3uVlZWX8+te/JjY2lueee46ZM2eyZMkSUlJ0R1BLZULDMBdciPXZWqzsTExyH7sjiYiI+MTnIz4ffPAB1157ba3SAxAeHs61117L8uXLCQkJ4corr+TAgQONDio28z7BfR2WZdkcRkRExDc+F5+CggJCzjKTb0hICEVFRQDExMTgdrt9/RgJEOaCdHCFwvE8OHTQ7jgiIiI+8bn4JCQk8MEHH1BVVVVreVVVFe+//z4JCQkAFBUVERUV1biUYjsTHgGD0gDqPsH9ZLHN6UREROrH52t8Jk2axAsvvMBPf/pTLrroIqKjozlx4gSbN2+moKCAn//85wBs376dvn37+i2w2MekD8faugHro3exPnq31jrHvY9g0obblExERKR+fC4+F110EQ8//DALFy7kgw8+8C7v1asX//3f/83QoUMBuOeeexodUgKDGXoJVmJPOHro24UeD1S58axZToiKj4iIBLhGPZ196NChDB06lPLyckpLS2nbti1hYWH+yiYBxoRHEPLYS7WWWXmH8Dx2H+zajnWqBNMm0p5wIiIi9eCXmZvDwsKIjY1V6QlCJr4bJCRClRtr22a744iIiJxTo4741CguLqaioqLO8ri4OH/sXgKcScvAOpKLlbUOhl9mdxwREZGz8rn4nD59mrlz57Ju3bozlh6AhQsX+hxMWg6TnoH13puwcwtW2SlMeBu7I4mIiJyRz8Vnzpw5rF27ljFjxpCUlITT6ZeDR9ISdU2CTglw7AjWjizMRZfanUhEROSMfG4r2dnZ3HrrrVxzzTX+zCMtkDGm+lb3D96GrExQ8RERkQDl88XNlZWVJCYm+jOLtGCm5pEWOz7DKi+3OY2IiMiZ+Vx8UlNT2bVrlz+zSEuW1Bs6dIKKctiZbXcaERGRM/K5+EycOJHMzEzee+89jh49SklJSZ1fdnK73bz22mu89tprelZYMzDGeGdutrIzbU4jIiJyZj5f41PzSIrXX3+d119//Yzb+HpX19KlS9m0aROHDx8mNDSUvn37ctttt3mf/7Vo0SIWL15c6z3R0dH85S9/8b7OzMwkOTmZsLAwVq9ezZgxY3zKIvVn0jKqH2exfTNWZSXG5bI7koiISC0+F5+JEydijPFnFq+cnBzGjh1Lr169qKqq4s0332TmzJnMnj2b8PBwALp3785jjz3mfY/DUfvglcfjweVy4fF48Hg8TZJT/kPPfhATC0UFsGsrpFxkdyIREZFaGvWQ0qYyffr0Wq/vu+8+7rrrLvbv38/AgQOB6qITExNz1n2MGDGCefPmAXDrrbc2WVb5lnE4MKnDsf75D6yNq6pvc6/hcmGi2tsXTkREBD/N3NzUTp06BUBk5LfPgcrLy+Puu+/G6XTSp08fbrnlFjp37uxd73K5mDJlyjn3W1lZSWVlpfe1MYaIiAjvz9JwJn1EdfHZtBpr0+pa6xyT78YxZlzd9/x7rDXmzU9jbx+NvX009vYJhLE3lmVZvr756NGjfPTRRxw+fLjO7M3GGB5//PFGB7Qsi+eee47S0lKeeuopALZs2UJ5eTkJCQkUFRWxZMkSDh8+zOzZs2nXrl299/2f1wolJycza9asRmcOZlZVFccfu5+KXdu+XebxgLsSV1Iv4v9Xs3mLiIh9fC4+ubm5TJ8+ndjYWPLy8khKSuLkyZMUFBTQoUMHOnfuzBNPPNHogK+88gpbtmzhqaeeokOHDmfcpqysjPvvv5/x48czblzdIwpnc7YjPsePH9edYH5klZZQ9f9ug6oqQmb+GRPftdZ6Ywzx8fHk5eXRiB4uPtDY20djbx+NvX2aauydTicdO3as37a+fsiCBQsYMmQIDz74IJMnT+aee+6hZ8+eZGdn86c//Ymbb77Z1117/fWvfyUrK4sZM2actfQAhIeHk5iYyNGjRxu0f5fLhessdx7pPwY/atMW+qfAzi14stbhuObGM25mWZbG3SYae/to7O2jsbePnWPv8zw+Bw4cYPTo0d7zdDVfIC0tjWuvvZb58+f7HMqyLF599VU2btzI448/TqdOnc65fWVlJYcPH6Z9e108G6i8MztnaY4fERGxj8/Fp7S0lMjISBwOByEhIZSWlnrX9ezZkwMHDvgc6tVXX2XNmjX87Gc/IyIigqKiIoqKirzXEb322mvk5ORw7Ngx9u7dywsvvMDp06cZNWqUz58pTcukXgLGAblfYh3PszuOiIgEKZ9PdcXGxlJcXAxAfHw8OTk5pKSkANXX/9TMt+OLFStWAPDkk0/WWn7fffcxevRoCgoK+N3vfkdxcTFRUVH06dOHp59+ut7n96T5mXbR0HcQ7N6BtWU95qrr7I4kIiJByOfi069fP/bs2cOwYcMYOXIkb731FkVFRTidTj799FMuvdT3J3QvWrTonOsfeOABn/ct9jHpGVi7d2BlrwcVHxERsYHPxef666+nsLAQgAkTJlBUVMTatWsxxjB8+HB+9KMf+S2ktA4m9RKs+f8ffPkFVkE+JjbO7kgiIhJkfC4+8fHxxMfHA9WzKE+dOpWpU6f6LZi0PiamA/QeAPt2YW3ZgLm8/lMPiIiI+IPPFzeL+MJ7d5ee4C4iIjZQ8ZFmZdKGV/+wdydWcaG9YUREJOio+EizMh06QVJvsCysLRvtjiMiIkFGxUeanUkfAYC1eQ3WN8ewvjmG+9hRrKJvNIuqiIg0qRbxdHZpXUz6cKwlc2H3DjwP3wVAzcNGzNUTMRP/y75wIiLSqumIjzQ70ykBc/EocIXW/gVYa1dgVVXZnFBERForvxzxKS4u9j5O4rvi4jRPi5yZ466fe382xhDfqSOHJl8JJSdhz+cwYIiN6UREpLXyuficPn2auXPnsm7dujOWHoCFCxf6HEyCiwlxYoZegrX2I6zs9RgVHxERaQI+F585c+awdu1axowZQ1JSEk6nLheSxjHpGdXFZ8t6rFt+jHHoTKyIiPiXz20lOzubW2+9lWuuucafeSSImQFDIKItnCiEL7+APgPtjiQiIq2Mz/+krqysJDEx0Z9ZJMgZpwszZBigmZ1FRKRp+Fx8UlNT2bVrlz+ziGDSq2d2trIzNaePiIj4XYNOdZWUlHh/njhxIi+88AIRERGkp6fTrl27OttHRkY2PqEEl4GpEBYOBflwcC8k97U7kYiItCINKj533nlnnWWvv/46r7/++hm3111d0lAmNAyTclH1rM5ZmRgVHxER8aMGFZ+JEydijGmqLCJA9YNMrc1rqk93Tfwv/ZkTERG/aVDxmTRpUlPlEPnW4PTqmZyP58FXByCxp92JRESklfD54ma3201ZWdkZ15WVleF2u30OJcHNhEfAoDRAd3eJiIh/+Vx8/vznP/PnP//5jOv+7//+j1deecXnUCImPQMAKyvT+wR365tjWAXHdbeXiIj4zOcJDHNycpg8efIZ16WnpzN//nyfQ4mYlIuwQpyQd8j7BHfvuotHYb7zrC8REZH68vmIz4kTJ2jfvv0Z18XExFBUVOTrrkUwbdpiLr8WQs/wBPfP1mKVlpxnDyIiInX5fMSnTZs25OXlMWjQoDrr8vLyiIiIaFQwEceNd8CNd9RaVvXk/XD4X1jbNmEyxtiUTEREWiqfj/gMGjSId955p9akhlA9yeE777zD4MGDGx1O5D+ZtG9ndhYREWkon4/4TJo0iUceeYSf/vSnZGRkEBsbyzfffMOGDRtwu9269V2ahEnLwPr7m7BzC1bZKUx4G7sjiYhIC+Jz8UlISGDGjBm89tprrFy5Eo/Hg8PhYODAgdx+++0kJCT4M6dIta5J0LkrfH0Ya/tnmGHfszuRiIi0ID4XH4AePXrw+OOPU1FRQUlJCZGRkYSGhvorm0gdxpjqmZ0/WFx9ukvFR0REGsDna3y+KzQ0lNjYWJUeaRY1c/ywIwurvNzeMCIi0qI06ohPjeLiYioqKuosj4uL88fuRWpL7AUdOsE3x2BnFqRl2J1IRERaCJ+Lz+nTp5k7dy7r1q07Y+kBPZ1dmoYxBpOegbXiHays9RgVHxERqSefi8+cOXNYu3YtY8aMISkpCafTLwePROrFpP27+GzfhFVZiXG57I4kIiItgM9tJTs7m1tvvZVrrrnGn3lE6ie5L8TEQlEB5GyFIRfZnUhERFoAny9urqysJDEx0Z9ZROrNOByYVE1mKCIiDePzEZ/U1FR27dqlGZrFNiZ9BNY//4G1dSPW8TxwnKPHh4VjIqOaL5yIiAQkn4vPxIkTeeGFF4iIiCA9PZ127drV2SYyMrJR4UTOqc8AaBcNJ0/gefTH593cMe1RzNBLmiGYiIgEKp+Lz89//nMAXn/9dV5//fUzbqO7uqQpGUcI5uqJWMsWgKfq7Bt6PFDlxrN6BSEqPiIiQa1RR3yMMf7MItJgjqsmwFUTzrmNdfQrPI9Pg5ytWKdKMW3aNks2EREJPI16SKlIS2C6dIcu3eHoV1jbN2MuGW13JBERsYlfHlkhEuhM2r/vAMvSHWAiIsHM5yM+N91003m30TU+EihM+gisfyyCndlYZacx4RF2RxIRERv49Rqf4uJitm/fjsfj4Xvf01OzJYB06wEd4+F4HnyeBReOtDuRiIjYwO/X+Ljdbp5++mmio6N9DiXib8aY6sdcLF+Clb0eo+IjIhKU/H6Nj9Pp5Oqrr+a9997z965FGsWkVz/M1Nq+Gaui3OY0IiJihya5uDk0NJTCwsKm2LWI73r0gdg4KC+DnC12pxERERv4vfgUFxezbNkyEhIS/L1rkUapOd0FYGWttzmNiIjYwedrfKZNm1bn4ubKykqKi4sxxvDLX/6y0eFE/M2kZWB9vAxr2yYsdyXG6bI7koiINCOfi8/AgQPrFB+Xy0XHjh3JyMigU6dOjQ4n4ne9+kN0ezhRCLu2wwXpdicSEZFm1KgjPiItjXE4MKnDsT59H2vjp5DQ/dxvaBeNCQ1rlmwiItL0fC4+Ii2VSaspPquwNq4698ZRMTh+/b+YNpHNE05ERJqUHlkhwafvYOh3AbhCz/3LGCguwtq60e7EIiLiJ4064nP06FE++ugjDh8+TEVFRa11xhgef/zxRoUTaQomJISQh54+73aeZfOx/v4mVvZ6yLi8GZKJiEhT8/mIT25uLr/85S/Jyspi69atlJaWkpeXR05ODl9//TWWZfkzp0izq7n1nZ1bsE6fsjeMiIj4hc/FZ8GCBQwZMoTZs2cDcM899/CnP/2J//mf/6GyspKbb77ZbyFFbNE1CTolgLsSa/tmu9OIiIgf+Fx8Dhw4wOjRo723tNcc4UlLS+Paa69l/vz5/kkoYhNjzLePucjWhIciIq2Bz8WntLSUyMhIHA4HISEhlJaWetf17NmTAwcO+CWgiJ1qig+fZ2GV6/leIiItnc/FJzY2luLiYgDi4+PJycnxrsvNzSU8PLzx6UTsltgLOnSCinLYmWV3GhERaSSf7+rq168fe/bsYdiwYYwcOZK33nqLoqIinE4nn376KZdeeqk/c4rYouZ0l7XiHayszG8veBYRkRbJ5+Jz/fXXe5/APmHCBIqKili7di3GGIYPH86PfvQjv4UUsZNJ+3fx2b4Zq7IS49LzvUREWiqfi098fDzx8fEAOBwOpk6dytSpU/0WrLHcbrf3AuvJkyfjdGqSavFRcl+I6QBF30DOVhhykd2JRETERw1qA/n5+Q3aeVxcXIO2r7F06VI2bdrE4cOHCQ0NpW/fvtx2220kJCR4t1m+fDnLli2jqKiIbt26MWXKFAYMGOBdn5mZSXJyMmFhYaxevZoxY8b4lEXEOBzVj7n45D2srHUYFR8RkRarQcWnoQ8mXbhwYYO2r5GTk8PYsWPp1asXVVVVvPnmm8ycOZPZs2cTHh5OZmYmc+bM4a677qJfv358/PHHPPPMM7z44ovesuXxeHC5XHg8Hjwej085RGqYtIzq4rNtE5bbjdERRBGRFqlBf3vfe++9TZWjlunTp9d6fd9993HXXXexf/9+Bg4cyHvvvceYMWO4/PLqxwhMmTKFbdu2sWLFCiZPngzAiBEjmDdvHgC33nprs+SWVqzPAGgXDSdPYGWtg94Dzv+e74poowediogEgAYVn9GjRzdRjHM7dar6cQGRkZG43W7279/PhAkTam2TkpLC7t27va9dLhdTpkw5534rKyuprKz0vjbGEBER4f1ZmkfNWAfymJsQJ1bacKxVH2K98gINfiBLSAghDz+HSe7bFPF81hLGvrXS2NtHY2+fQBj7gD9eb1kWc+fOpX///iQmJlJQUIDH4yE6OrrWdtHR0RQVFTVo30uXLmXx4sXe18nJycyaNYuOHTv6I7o0UM3F8oGq4sb/4viOz7BKTjbofZbbDVVVhG/JJDZjVBOla5xAH/vWTGNvH429fewc+4AvPq+++iq5ubk89dRTtZafqS02tEFed911jBs3rs77jx8/jtvt9iGt+MIYQ3x8PHl5eYH9cNvwSBzP/a3Bb/N8noXnpScpXbuSsgk/wjhCmiCcb1rM2LdCGnv7aOzt01Rj73Q6633QIqCLz1//+leysrKYMWMGHTp0ACAqKgqHw1Hn6M6JEyfqHAU6H5fLhessc7LoP4bmZ1lW6xz3fhdARFsoLsLauwv6DrI7UR2tduxbAI29fTT29rFz7H1+ZEVTsiyLV199lY0bN/L444/TqVMn7zqn00nPnj3Zvn17rfds376dfv36NXdUkfMyThdmyDAArOxMm9OIiAS3gCw+r776KmvWrOFnP/sZERERFBUVUVRUREVFBQDjxo1j5cqVfPLJJxw6dIg5c+aQn5/PlVdeaXNykTP77lPeLU2vICJim4A81bVixQoAnnzyyVrL77vvPkaPHk1GRgYnT57k7bffprCwkO7du/PII4/oomQJXINSISwCCvPh4F7oqaOTIiJ2CMiZmxctWnTebcaOHcvYsWN92r9IczOuUEzKhVib12BlZ2JUfEREbBGQMzeLtEYmbXh18cnKxJo4RXOIiIjYICBnbhZplQanQ2go5H8NX+2HxF52JxIRCTotYuZmkdbAhEfAoDTYsgEraz1GxUdEpNkF5F1dIq2VSau5u2ud5g8REbFBo+7qOnr0KB999BGHDx/23mpewxjD448/3qhwIq2NSbkIK8QJeYfhyFfQNdHuSCIiQcXn4pObm8v06dOJjY0lLy+PpKQkTp48SUFBAR06dKBz587+zCnSKpg2bWHgUNjxGdb6lXDZDxq2A1coJiqmKaKJiAQFn4vPggULGDJkCA8++CCTJ0/mnnvuoWfPnmRnZ/OnP/2Jm2++2Z85RVoNk56BteMzrOVLsZYvbfj7b70Xx+jvN0EyEZHWz+drfA4cOMDo0aO9t+TWXK+QlpbGtddey/z58/2TUKSVManDoVsPcIU27FdI9b9TrNUf2vsFRERaMJ+P+JSWlhIZGYnD4SAkJITS0lLvup49e7J48WK/BBRpbUybtoQ88fsGv886WYznodvhqwNYx/MwHeObIJ2ISOvm8xGf2NhYiouLAYiPjycnJ8e7Ljc3l/Dw8ManExEv0y4K+g4G9LBTERFf+XzEp1+/fuzZs4dhw4YxcuRI3nrrLYqKinA6nXz66adceuml/swpIlTfDm99sR0rKxPGXm93HBGRFsfn4nP99ddTWFgIwIQJEygqKmLt2rUYYxg+fDg/+tGP/BZSRKqZ1EuwFvx/cGAPVsFxTKwezCsi0hA+F5/4+Hji46uvMXA4HEydOpWpU6f6LZiI1GViYqHXANiXg5W9HnPFD+2OJCLSomjmZpEWxqQPB3Sdj4iIL1R8RFoYk1r92Av27cI6UWhvGBGRFqZRj6zYtGkTa9eu5fjx41RWVtZaZ4zh+eefb1Q4EanLdOgIyX2rr/PZsh4z+hq7I4mItBg+F59ly5Yxb948oqKiiI+P1+3rIs3IpA3HOrAHK3s9qPiIiNSbz8Vn+fLlXHbZZfz4xz/G4dAZM5HmZNIysN6eC7t3YJ0srp7jR0REzsvnxlJSUsLIkSNVekRsYDp1gW7J4PFgbd1gdxwRkRajURMYHjp0iMGDB/szj4jUk0nPwDp0AGvzGqyBQxv4ZgPt47zP2hMRCRY+F58pU6bw/PPPExcXx9ChQ3E6G3WdtIg0kEnPwHp3Huzahufhuxr+/uFj4M4HmyCZiEjgatQEhhdccAHPP/88xhjCwsLqbDN37txGhRORszNdumMuHIm1bVPD3mhZ4K7E2rwaa/LdTRNORCRA+Vx83njjDZYvX06PHj3o2rWrjviI2MBx9y8b/B7LsvA8fh/kHcbavgl69mqCZCIigcnntvLpp58yfvx4Jk+e7M88ItLEjDHVd4W9/1b1w04n3GJ3JBGRZuPzLVkej4eUlBR/ZhGRZmLSqmd/tj7PwlN22uY0IiLNx+fik5KSwp49e/yZRUSaS2JPiOsMFRWUfbbO7jQiIs3G5+Jzww03sGbNGt5//33y8vIoKSmp80tEAlPN6S6A0+s+sTmNiEjz8fkan1/84hdA9Z1bZ7t7a+HChb7uXkSamEkbjrViKac3r8Vxy93gdNkdSUSkyflcfCZOnKjJz0RasuS+0L4DVuE3WDu3YIYMszuRiEiT87n4TJo0yZ85RKSZGYej+u6ulX/HyspU8RGRoNCg4pOfn09MTAxOp5P8/Pzzbh8XF+dzMBFpeo70DKpW/h1r20YsdyVGp7tEpJVrUPGZNm0aTz/9NL1792batGnn3V7X+IgEuN4DcMTE4ikqgC+2w+B0uxOJiDSpBhWfe++9l86dO3t/FpGWzThCCB8+mtIPlmBlr8eo+IhIK9eg4jN69Ogz/iwiLVebEZdXF58tG7C+fwM4fJ7loporFBMV45dsIiL+5vPFzTk5OfTs2ZPw8PA668rKyti/fz8DBw5sVDgRaXphF6RD23ZQUozn0R/7ZZ/mR/fh+N7VftmXiIg/+fxPuxkzZnDo0KEzrjty5AgzZszwOZSINB/jdOK4eiKEhYMrtHG/Qqr/LWWtWm7ztxIRObMmeaS62+3G0djD5SLSbBzfn4i5+vpG78cqLsLz0BTI/RLreB6mY3zjw4mI+FGDis+pU6c4deqU93VRUVGd29orKipYtWoVMTExfgkoIi2HiYqBvoNg9w6sLesxV11ndyQRkVoaVHz+8Y9/sHjxYu/r559//qzbXned/sITCUYmbTjW7h1YWZmg4iMiAaZBxWfIkCGEh4djWRbz5s3j6quvrjNJocvlIjExURc2iwQpkzYca8H/wf7dWAX5mFhNZCoigaNBxadv37707dsXgPLyci6//HJiY2ObJJiItEwmpgP06g9ffoG1ZQPm8nF2RxIR8fL54uYbb7wRj8fD2rVr2blzJydPnqRdu3YMGjSI4cOHExIS4s+cItKCmLQMrC+/wMrOBBUfEQkgPhef4uJinnnmGQ4cOIDD4aBdu3acPHmSTz75hL///e9Mnz6dqKgof2YVkRbCpA3HeuuvsHcnVnEhJqq93ZFERIBGFJ+5c+dy5MgR7r//fjIyMnA4HHg8HjIzM/nLX/7C3Llzuf/++/2ZVURaCBPXGZJ6w7/2YW3ZiBmlyQxFJDD4PNlOVlYWN998MyNHjvTO2eNwOBg5ciSTJk0iKyvLbyFFpOUx6RkA1ae7REQChM/Fx7IsunXrdsZ13bt3x7Isn0OJSMtn0qqLD19sxyoptjeMiMi/+Vx8LrjgAnbs2HHGddu3b2fQoEE+hxKRls90ToCuSeDxYG3bZHccERGgEdf43HDDDfz2t7/F4/EwcuRIYmJiKCoqYs2aNWzatImHHnqIkpIS7/aRkZF+CSwiLYdJH4F1+F9Ym9Zg9U9png8NC8dE6sYKETkzY/l4Tuqmm25q0PYLFy705WNscfz4cSorK+2OETSMMXTp0oWjR4/qFGkza+qxtw7n4nnyJ37f7zkZg+P+xzEXpDfv5zaQ/tzbR2Nvn6Yae5fLRceOHeu1rc9HfCZOnIgxxte3i0gwSOgO6Rmw/bPm+TxPFVRV4VmznJAALz4iYg+fi8+kSZP8mUNEWiFjDCH3PNxsn2fl7sfz6wdgZzZWeRkmLLzZPltEWgafL27+riNHjrBnzx6OHj3qj92JiPimezJ0jIeKCvhcU2qISF0+H/EBWL9+Pa+//jrffPONd1mHDh24/fbbueSSSxodTkSkIYwx1bNGL1+KlZWJSR9hdyQRCTA+H/HJzs7mpZdeok2bNtx666385Cc/YfLkybRp04aXXnqJLVu2+DOniEi91JQda/tnWJUVNqcRkUDj8xGfpUuXMmTIEB5++GHvzM0AP/zhD3nmmWdYsmQJqampfgkpIlJvPfpAbBwU5MPOLTD0YrsTiUgA8fmIz8GDB7nqqqtqlR6oPtQ8duxYDh482NhsIiINZozBpA4H9LgMEanL5+LjcDhwu91nXOd2u+sUIhGR5lLzuAxr6yYst+bkEpFv+dxOevXqxbJly6ioqH0OvbKykr///e/07t270eFERHzSuz9Et4fTpfDFdrvTiEgAadQ8Pk899RQ/+clPuOSSS7yPrNi4cSMlJSU8/vjj/szZYG63m/nz5wMwefJknM5G3cAmIi2IcYRgUi/B+vQDrOz1mMGazFBEqvncBvr378+vfvUr5s2bx/Lly4Hqc+t9+vThZz/7Gf369fM5VE5ODsuWLePAgQMUFhby0EMPMWzYMO/6RYsWsXjx4lrviY6O5i9/+Yv3dWZmJsnJyYSFhbF69WrGjBnjcx4RaXlMWkZ18dmyHuvWezEhIXZHEpEA0KjDIAMHDuTpp5+mvLyc0tJS2rZtS1hYWKNDlZeX06NHDy677DJeeOGFM27TvXt3HnvsMe/r/7ymyOPx4HK58Hg8eDyeRmcSkRam72CIbAclJ2HP5zBgiN2JRCQA+OX8T1hYmF8KT43U1NTz3grvcDiIiYk56/oRI0Ywb948AG699Va/ZRORlsGEhGCGXoK19iOsjZ9Cpy7N88ERbTFt2jbPZ4lIg7XYC1/y8vK4++67cTqd9OnTh1tuuYXOnTt717tcLqZMmXLOfVRWVtZ6CrsxhoiICO/P0jxqxlpj3vxa+9ib9Izq4rNuJda6lc3zoSFOQqa/gEnsee5srXzsA5nG3j6BMPbG8udz4ZvApEmT6lzjs2XLFsrLy0lISKCoqIglS5Zw+PBhZs+eTbt27eq97/+8Vig5OZlZs2b5Nb+I2MeqrOT49Puo2JvTPJ/ndoOnisjxt9D+xz9vls8UkYZpkcXnP5WVlXH//fczfvx4xo0bV+99n+2Iz/Hjx886R5H4nzGG+Ph48vLyCPA/jq2Oxt6/PFs34vnDTIiNI2TWX8/5r1qNvX009vZpqrF3Op107Nixftv67VNtFB4eTmJiYoOfDu9yuXC5XGdcp/8Ymp9lWRp3m2js/WTgUAiLgIJ8rAN7ILnved+isbePxt4+do59q5heubKyksOHD9O+fXu7o4hIEDOuUEzKhQBYWetsTiMiZxKQxaesrIyDBw96n/d17NgxDh48SH5+PgCvvfYaOTk5HDt2jL179/LCCy9w+vRpRo0aZWNqEZHqC6oBrOz1OpogEoAC8lTXl19+yYwZM7yvX3vtNQBGjRrFtGnTKCgo4He/+x3FxcVERUXRp08fnn766Xqf3xMRaTKD0yE0FI7nwVcH4Dx3d4lI8wrI4jNo0CAWLVp01vUPPPBA84UREWkAExYOg9Jgywas7Mzz3tYuIs0rIE91iYi0ZN6nw2dl2pxERP6Tio+IiJ+ZlIvA6YS8Q1hHcu2OIyLfoeIjIuJnpk1bGDAUACtbR31EAomKj4hIE/De3aXTXSIBRcVHRKQJmCHDwOGAQwexjh2xO46I/FtA3tUlItLSmcgo6J8COVux1n0C37vqPzYwuEPA+uZY0873YxzQvoMeyCnybyo+IiJNxKRlYOVsxXp/Edb7dafoaNhDdhqR43tjMT+a1kyfJhLYVHxERJqIuXAk1ifvVU9meKb1xjTt0R7LAncl1oZ/Yk26s3qOIZEgp+IjItJETNtIQmb84czrjKFLly4cPXq0ycqPZVl4Hv0x5H8Nn2fDvy+4FglmurhZRKSVMsZ8O5mibqsXAVR8RERaNZM2HABr22asygqb04jYT8VHRKQ1S+4L7eOg/DTkbLU7jYjtVHxERFox43B8e9RHkymKqPiIiLR2357u2ojlrrQ5jYi9VHxERFq73gOgXTScKoUvdtidRsRWKj4iIq2ccYR8e9RHd3dJkFPxEREJAt7b2rduxKqqsjmNiH1UfEREgkHfwdC2HZw8AXt32p1GxDYqPiIiQcA4nZihwwCd7pLgpkdWiIgECZM+AmvdSqzsDVhXXQeB/MT2NpGYiDZ2p5BWSMVHRCRY9B8CEW3gRAGeR/7b7jTn5nTi+NWLmK5JdieRVkbFR0QkSBiXC3PVdVgfvg0ej91xzq7KDW43VuZKzI1T7U4jrYyKj4hIEHGMuwnG3WR3jHOysjPx/Ok3WFmZWDfcgQnkU3LS4ujiZhERCSyD0iE0DL45Brn77U4jrYyKj4iIBBQTFgaD0wGwstbZnEZaGxUfEREJOCb93xMuZq/Hsiyb00hrouIjIiIBx6RcCE4XfH0YjuTaHUdaERUfEREJOCa8DQxKBcDK0oSL4j8qPiIiEpD0YFVpCio+IiISkMyQiyEkBA7/CyvvsN1xpJVQ8RERkYBk2kZC/xRAR33Ef1R8REQkYJm0f9/dpet8xE9UfEREJGCZ1EvAOCD3S6zjeXbHkVZAj6wQEZGAZdpFQ99BsHsH1vpPYMQVftipwR0C1jfHAmOOoNCw6u8pzULFR0REAppJz8DavQPr729i/f1Nv+zzqF/24j/mzgdxXHKZ3TGCgoqPiIgENHPRpVj/fB/yv/bfPo0JjKM9Hg9UubFWLwcVn2ah4iMiIgHNREYR8tQf/bc/Y+jSpQtHjx61vfxY3xzH8/CdsG8X1olCTHR7W/MEA13cLCIiYhPToSMk9wXLwtqywe44QUHFR0RExEaaobp5qfiIiIjYqGauInbvwCoptjdMEFDxERERsZHp1AW6J4PHg7V1o91xWj0VHxEREZt5Z6jOXm9zktZPxUdERMRmJv3fp7tytmKdKrE3TCun4iMiImIz06U7dOlePafP9s12x2nVVHxEREQCQM1RHytLp7uakoqPiIhIAPDe3bUzG6vstL1hWjEVHxERkUDQrQd0jIfKCqwdWXanabX0yAoREZEAYIzBpI/A+vBtrE2rsHr2tTuS/xlDVXiorRFUfERERAKEScvA+vBt2LoRTyud0+eb1Ith2q9s+3wVHxERkUDRozekXAS7ttmdpMkYp8vWz1fxERERCRDGGELuf8zuGE3GGEPHLl04evSobRl0cbOIiIgEDRUfERERCRoqPiIiIhI0VHxEREQkaKj4iIiISNBQ8REREZGgoeIjIiIiQaPVzuPjdruZP38+AJMnT8bpbLVfVUREROopINtATk4Oy5Yt48CBAxQWFvLQQw8xbNiwWtssX76cZcuWUVRURLdu3ZgyZQoDBgzwrs/MzCQ5OZmwsDBWr17NmDFjmvtriIiISIAJyFNd5eXl9OjRg6lTp55xfWZmJnPmzOH6669n1qxZDBgwgGeeeYb8/HzvNh6PB4fDgcfjwePxNFd0ERERCWABWXxSU1O5+eabufjii8+4/r333mPMmDFcfvnl3qM9cXFxrFixwrvNiBEj2Lt3L1988QWjRo1qrugiIiISwALyVNe5uN1u9u/fz4QJE2otT0lJYffu3d7XLpeLKVOmnHNflZWVVFZWel8bY4iIiPD+LM2jZqw15s1PY28fjb19NPb2CYSxb3HFp7i4GI/HQ3R0dK3l0dHRFBUVNWhfS5cuZfHixd7XycnJzJo1i44dO/ojqjRQfHy83RGClsbePhp7+2js7WPn2Le44lPjTG2xoQ3yuuuuY9y4cXXef/z4cdxud+MCSr0ZY4iPjycvLw/LsuyOE1Q09vbR2NtHY2+fphp7p9NZ74MWLa74REVF4XA46hzdOXHiRJ2jQOfjcrlwuVx1luvWd3uEhITYHSFoaezto7G3j8bePv4e+4b8f7vF/R/e6XTSs2dPtm/fXusW9+3bt3PRRRf55TPat2/vl/1Iw+gUo3009vbR2NtHY28fO8c+IO/qKisr4+DBgxw8eBCAY8eOcfDgQe/t6uPGjWPlypV88sknHDp0iDlz5pCfn8+VV15pY2rx1enTp/mf//kfTp8+bXeUoKOxt4/G3j4ae/sEwtgH5BGfL7/8khkzZnhfv/baawCMGjWKadOmkZGRwcmTJ3n77bcpLCyke/fuPPLII2rvLZRlWRw4cEDn2m2gsbePxt4+Gnv7BMLYB2TxGTRoEIsWLTrnNmPHjmXs2LHNlEhERERag4A81SUiIiLSFFR8xHYul4sbbrjhjHfYSdPS2NtHY28fjb19AmHsjaWTnCIiIhIkdMRHREREgoaKj4iIiAQNFR8REREJGio+IiIiEjQCch4faX2WLl3Kpk2bOHz4MKGhofTt25fbbruNhIQE7zaWZfHWW2+xcuVKSkpK6NOnD3feeSfdu3e3MXnrs3TpUhYsWMA111zDlClTAI19UyooKOCNN95g69atVFRU0KVLF+6991569uwJaOybSlVVFW+99RZr1qyhqKiI9u3bM3r0aK6//nocjup/82vs/SMnJ4dly5Zx4MABCgsLeeihh2o9Uqo+41xZWcnrr7/OunXrqKioYPDgwdx111106NDB73l1xEeaRU5ODmPHjuXpp5/mV7/6FR6Ph5kzZ1JWVubd5t133+Uf//gHU6dO5dlnnyUmJoaZM2dqWnk/2rdvHx9//DFJSUm1lmvsm0ZJSQmPPfYYTqeTRx99lNmzZ3P77bfTpk0b7zYa+6bx7rvv8tFHH3HnnXfy4osvctttt7Fs2TI+/PDDWtto7BuvvLycHj16MHXq1DOur884z5kzh02bNvGzn/2Mp556irKyMn7zm9/g8Xj8nlfFR5rF9OnTGT16NN27d6dHjx7cd9995Ofns3//fqD6XwTvv/8+1113HRdffDGJiYlMmzaN8vJy1q5da3P61qGsrIyXX36Zu+++m7Zt23qXa+ybzrvvvkuHDh2477776N27N506deKCCy4gPj4e0Ng3pT179nDhhReSlpZGp06duOSSS0hJSeHLL78ENPb+lJqays0338zFF19cZ119xvnUqVN88skn3H777aSkpJCcnMz9999Pbm4u27dv93teFR+xxalTpwCIjIwEqh9EW1RUxJAhQ7zbuFwuBg4cyO7du23J2Nq88sorpKamkpKSUmu5xr7pfPbZZ/Ts2ZPZs2dz11138ctf/pKPP/7Yu15j33T69+/P559/zpEjRwA4ePAgu3fvJjU1FdDYN5f6jPP+/fupqqqq9XdTbGwsiYmJ7Nmzx++ZdI2PNDvLspg7dy79+/cnMTERgKKiIgCio6NrbRsdHU1+fn5zR2x11q1bx4EDB3j22WfrrNPYN51jx47x0Ucf8YMf/IDrrruOffv28be//Q2Xy8WoUaM09k1o/PjxnDp1igcffBCHw4HH4+Hmm29m5MiRgP7cN5f6jHNRURFOp9P7D+HvblPzfn9S8ZFm9+qrr5Kbm8tTTz1VZ50xptZrTSzeePn5+cyZM4fp06cTGhp61u009v7n8Xjo1asXkydPBiA5OZmvvvqKFStWMGrUKO92Gnv/y8zMZM2aNfz0pz+le/fuHDx4kDlz5ngvcq6hsW8evoxzU/1eqPhIs/rrX/9KVlYWM2bMqHW1fkxMDID37osaxcXFdf6lIA2zf/9+Tpw4wcMPP+xd5vF42LVrFx9++CEvvfQSoLFvCu3bt6dbt261lnXr1o2NGzcC+nPflN544w3Gjx/PiBEjAEhMTOT48eO88847jB49WmPfTOozzjExMbjdbkpKSmod9SkuLqZfv35+z6RrfKRZWJbFq6++ysaNG3n88cfp1KlTrfWdOnUiJiam1oVsbrebnJycJvmDH0wuuOACfvvb3/Lcc895f/Xq1YuRI0fy3HPP0blzZ419E+nXr5/3GpMaR44coWPHjoD+3Del8vJy723rNRwOh/cogsa+edRnnHv27ElISEitbQoLC8nNzaVv375+z6QjPtIsXn31VdauXcsvf/lLIiIivOdt27RpQ2hoKMYYrrnmGpYuXUqXLl2Ij49n6dKlhIWFec/Ji28iIiK811LVCAsLo127dt7lGvum8YMf/IDHHnuMJUuWkJGRwb59+1i5ciU//vGPAfTnvgmlp6ezZMkS4uLi6NatGwcPHuS9997jsssuAzT2/lRWVkZeXp739bFjxzh48CCRkZHExcWdd5zbtGnDmDFjeP3112nXrh2RkZG8/vrrJCYm1rkZwx/0dHZpFpMmTTrj8vvuu897vr1mkquPP/6Y0tJSevfuzZ133lnnf9rSeE8++SQ9evSoM4Ghxt7/srKymD9/Pnl5eXTq1Ikf/OAHXHHFFd71Gvumcfr0aRYuXMimTZs4ceIEsbGxjBgxghtuuAGns/rf/Bp7/9i5cyczZsyos3zUqFFMmzatXuNcUVHBG2+8wdq1a2tNYBgXF+f3vCo+IiIiEjR0jY+IiIgEDRUfERERCRoqPiIiIhI0VHxEREQkaKj4iIiISNBQ8REREZGgoeIjIiIiQUPFR0RERIKGio+IiIgEDRUfERERCRoqPiIB6tNPP2XSpEkcO3as0e/dvXs3ixYtorS0tEk/pzVZtGjRWZ8x19wWL17Mgw8+iMfj8fu+PR4Pd911F++99169tv/kk0+4++67KSsr83sWkeag4iMSoNLS0pg5cybt27dv9Ht3797N4sWLz1h8GvM50vQKCgp49913uemmm3A4/P9Xdk5ODsXFxVx88cX12n7UqFGEh4ezbNkyv2cRaQ4qPiIBKioqir59++JyuZr0vY35HGl677//Pm3btmXYsGFNsv8NGzbQq1cvOnbsWK/tQ0JCuOKKK3j//fcpLy9vkkwiTclpdwARObNPP/2U//3f/+UPf/gDnTp1YtGiRSxevJgXXniBt99+my1bthAaGkpqaipTpkyhTZs2Z3zvp59+yuLFiwH4yU9+4t3miSeeYNCgQXU+Jy8vjyVLlvDFF19QUFBA27ZtSU5OZvLkySQmJvr0XYqLi1mwYAFbt27lxIkTREREkJCQwI033khKSor3u82aNYu3336bHTt2AJCens6UKVOIioqqtb+jR4+yaNEiduzYwalTp+jcuTNjx47l6quv9mm77OxsFixYwOHDh2nfvj1jx46t93d79tlnOXLkCC+//HKt5ZZl8eijj+J0Ovn1r3/dkOHycrvd/POf/+Syyy6rc7SnZsyef/553n77bbZt24bD4WD06NHcdtttfP311/ztb39j9+7dtGvXjquuuorx48fXybh582a+//3ve5ed7/cK4NJLL+WNN95g3bp1jBkzxqfvJmIXFR+RFuaFF14gIyODMWPGkJuby4IFCwC47777zrj95ZdfTklJCR9++CEPPfQQMTExAHTr1u2M2xcUFBAZGcnkyZOJioqipKSEVatW8eijj/Lcc8+RkJDQ4Mwvv/wyBw4c4OabbyYhIYHS0lIOHDhASUlJre1++9vfMnz4cK688kq++uorFi5cyOHDh3n66adxOqv/ujp06BC/+tWviIuL4/bbbycmJoatW7fyt7/9jZMnT3LjjTc2aLsdO3bw3HPP0bdvXx544AE8Hg/vvvsuJ06cqNd369GjB1u3bqWsrIzw8HDv8lWrVrF//36eeeaZBo9Xjb1793Ly5EkGDRp01m1efPFFLr30Uq644gq2b9/OsmXLqKqqYseOHVx11VVce+21rF27lnnz5hEfH1/rlNbu3bspLCystaw+v1cxMTEkJCSQnZ2t4iMtjoqPSAszZswYfvjDHwKQkpJCXl4e//znP7n33nsxxtTZvkOHDsTFxQHV/5Pu1KnTOfc/cOBABg4c6H3t8XhIS0vj5z//OR999BH/9V//1eDMu3fvZsyYMVxxxRXeZRdddFGd7YYNG8Ztt90GwJAhQ4iJieH3v/8969ev59JLLwVg7ty5RERE8NRTT3mPcqWkpOB2u3nnnXf4/ve/T2RkZL23e/PNN4mOjuZXv/oVoaGh3s+eNm1avb5bUlISlmXx1Vdf0adPHwDKyspYsGABo0aNolevXkD1kZQ//vGP5OTkEBsby5133uk9gnI2e/bsASA5Ofms21xxxRWMGzfO+/22b9/uLbk1p8cGDRpEdnY2a9asqVVyNmzYQGJiIl26dPEuq+/vVXJysvfInEhLomt8RFqYCy+8sNbrpKQkKisr632E4nyqqqpYsmQJDz74ILfccgs333wzkydP5ujRoxw+fNinffbu3ZtVq1bx9ttvs2fPHtxu9xm3qyk3NYYPH05ISAg7d+4EoKKigs8//5yLLrqIsLAwqqqqvL9SU1OprKxk79699d6urKyMffv2cfHFF3tLD0BERATp6en1+m49evQAIDc317vsnXfe4fTp09xyyy3eZa+88goxMTG88sor/OhHP+LFF1/k5MmT59x3YWEhxpg6p/q+Ky0trdbrrl27Yoxh6NCh3mUhISHEx8eTn59fa9tNmzbVuai5vr9X0dHRFBcXU1VVdc7vIBJodMRHpIWJjIys9brmouSKigq/7H/u3LksX76c8ePHM3DgQCIjIzHG8Oc//9nnz3jggQdYsmQJn3zyCQsXLiQ8PNx7dKfm1BtQ62eo/h92ZGSktyCUlJRQVVXFhx9+yIcffnjGzzp58mS9tystLcWyrDqfe6YsZxMfH09YWJi3+OTn5/Pee+8xceJE751yZWVlbN68mZdffpmwsDAuvPBCkpKS2Lx58zlPFVVUVBASEnLOu7n+88+D0+kkNDS0VpGrWX769Gnv63379pGfn1+n+NT398rlcmFZFpWVlYSEhJx7kEQCiIqPiNSyZs0aRo0axeTJk2stP3nyJG3btvVpn1FRUUyZMoUpU6aQn5/PZ599xrx58zhx4gTTp0/3bldUVERsbKz3dVVVFSUlJbRr1w6Atm3b4nA4+N73vnfWC5A7depEaGhovbZzuVwYYygqKqqz/kzLzsThcNC9e3dv8Zk3bx4xMTHe009QfZF1eHi495QjQGJiIocOHTrnvtu1a4fb7a5z/ZA/bNiwgS5dutS5YL2+v1clJSW4XC6/5xJpaio+IkGgIUeFjDHeC4lrZGdnU1BQQHx8fKOzxMXFcfXVV7Njxw52795da92aNWvo2bOn9/X69eupqqryXnMUFhbGoEGDOHDgAElJSXVyfld9t+vduzcbN27ktttu8x4lOX36NFlZWfX+TklJSWzatIk9e/aQmZnJgw8+WGt6gLKyslp33UH16bTznerq2rUrAF9//TVJSUn1zlMfGzduZPjw4efc5ly/V8eOHTvrBfIigUzFRyQI1Pyr/v3332f06NGEhISQkJBAREREnW3T0tJYtWoVXbt2JSkpif3797Ns2TI6dOjg02efOnWKGTNmMGLECLp27UpERAT79u1j69atdU6zbNq0iZCQEFJSUrx3dSUlJZGRkeHd5o477uCxxx7j8ccf56qrrqJjx46cPn2avLw8srKyeOKJJxq03U033cTTTz/NzJkzGTdunPeurrCwsDp3nZ1NUlISK1eu5E9/+hMDBgzgkksuqbU+PDycU6dO1Vp2+vTp8x4tqSl8e/fu9WvxOXjwIF9//XWdnPX9vfJ4POzbt093dEmLpOIjEgQGDRrEhAkTWLVqFStXrsSyLO88Pv/pjjvuwOl08s4771BWVkZycjIPPfQQb775pk+f7XK56N27N2vWrOHYsWNUVVURFxfH+PHj68wr8/Of/5y33nqLFStWYIzxzuPz3SM23bp188738+abb3LixAnatm1Lly5dSE1NbfB2KSkp/OIXv2DhwoW89NJLxMTEcNVVV1FRUeGd/+h8ai5wPnLkCD/72c/qrO/SpQtlZWV888033gL51Vdf1bmY+z/FxcUxYMAANm/eXOsuq8basGEDHTt2rHV0Der/e5WTk8OpU6cYOXKk3zKJNBdjWZZldwgRCW41k/G98sor57yDqSWbPXs2bdq0YerUqezYsYM//OEP/O53vzvv992wYQMvvfQS//u//1vr+qfGePDBB0lNTeX222/36f0vv/wyx44d83liRhE76XZ2EZFmcNddd1FYWMjUqVOZO3cuDzzwQL1K3sUXX0yvXr1YunSp37K8+OKLPpeevLw8MjMzufXWW/2WR6Q56VSXiEgziIqK4pFHHmnw+4wx3H333Xz22Wd4PJ4meVBpQ+Tn53PnnXfSv39/W3OI+EqnukRERCRo6FSXiIiIBA0VHxEREQkaKj4iIiISNFR8REREJGio+IiIiEjQUPERERGRoKHiIyIiIkFDxUdERESChoqPiIiIBA0VHxEREQka/z8icoeUXDkw5gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "velocities = np.linspace(5, 100, 100)\n", "results = [] # (speed, theta_opt)\n", "for speed in velocities:\n", " u = find_range(speed)\n", " thetas, ranges = u.transpose()\n", " # find index for the largest range and pull corresponding theta\n", " theta_opt = thetas[np.argmax(ranges)]\n", " results.append((speed, theta_opt))\n", "results = np.array(results)\n", "\n", "plt.plot(results[:, 0], results[:, 1]) \n", "plt.xlabel(r\"initial speed $v_0$ (m/s)\")\n", "plt.ylabel(r\"optimal launch angle $\\theta_\\mathrm{best}$\");\n", "plt.gca().yaxis.set_major_formatter(plt.matplotlib.ticker.StrMethodFormatter(r\"{x:g}$\\!^\\circ$\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The launch angle decreases with the velocity.\n", "\n", "The steps in the graph are an artifact of choosing to only calculate the trajectories for integer angles (see `for theta in np.linspace(1, 90. 90)` in `find_range()`)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Newton-Raphson algorithm\n", "(see derivation in class and in the second part of [12_rootfinding.pdf (PDF)](12_rootfinding.pdf)\n", " or [Newton's Method](http://mathworld.wolfram.com/NewtonsMethod.html) on MathWorld)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Activity: Implement Newton-Raphson\n", "1. Implement the Newton-Raphson algorithm\n", "\n", " `while` $|f(x)| > \\epsilon$\n", " \n", " $\\Delta x = -\\frac{f(x))}{f'(x)}$\n", " \n", " $x \\leftarrow x + \\Delta x$\n", " \n", " Use the *central difference* algorithm with step size $h$ to compute $f'(x)$. (In other cases you might want to use the analytical derivative if it is available.) \n", "2. Test with $g(x)$.\n", "\n", " $$\n", " g(x) = 2 \\cos x - x\n", " $$\n", " \n", "3. Bonus: test performance of `newton_raphson()` and `bisection()` (e.g. for our function $g(x)$).\n", " * Under which circumstances is bisection faster than Newton-Raphson?\n", " * Can you *combine* the two algorithms to create a root finder that is faster than either by itself?" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "def g(x):\n", " return 2*np.cos(x) - x" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGdCAYAAAAvwBgXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGjklEQVR4nO3dd3hUVeLG8e+5mTRKgEAgIC0EAmIBFFRABEUUBRQs2BXLqgu6umvv4qqI61rW9nNVlmWtkSYiCqIIKApWwC4IKiUQDKEnJLnn98dIBA0hgcycKe/neXhkJif3vuc6Gd7cucVYay0iIiIiDniuA4iIiEj8UhERERERZ1RERERExBkVEREREXFGRUREREScURERERERZ1RERERExBkVEREREXFGRUREREScURERERERZwKuA1TF+vXrKS0trfHlZmRkkJ+fX+PLjRbxPn/QNtD843v+oG0Q7/OH0GyDQCBAgwYNqja2RtccIqWlpZSUlNToMo0x5cuOx9vtxPv8QdtA84/v+YO2QbzPHyJjG+ijGREREXFGRUREREScURERERERZ1RERERExBkVEREREXFGRUREREScURERERERZ1RERERExBkVEREREXEmpFdWnTRpEgsWLGDlypUkJSWRk5PDueeeS7NmzUK5WhEREYkSIS0iX331FccffzzZ2dmUlZXx0ksvcffdd/Pggw+SkpISylWLiIhIFAhpEbnlllt2eTx8+HAuueQSfvjhBzp27BjKVYuIiEgUCOtN77Zu3QpAnTp1Kvx6SUnJLje3M8aQmppa/veaYktLKPu/0WwbcjameXaNLTea7NieNbldo028bwPNP77nD9oG8T5/iIxtYGyYbrdnreX+++9ny5Yt3HXXXRWOyc3NZfz48eWPs7KyGD16dI1n2ThhHBvG/Au8BBr8+TrqnHhaja9DRERE9ixsReSZZ57hs88+46677qJhw4YVjtndHpH8/HxKS0trLIstLcEf9zh23tvB9Rw/BO/UYRgvfk4iMsaQmZlJXl5eXN/+Op63geYf3/MHbYN4nz+EbhsEAgEyMjKqNrbG1lqJMWPG8MknnzBy5MjdlhCAxMREEhMTK/xajb5IEgJ4F15F7Tbt2Pjc/2GnT6Isfw3exX/FJCXX3HqigLU2bn8Ad4j3baD5x/f8Qdsg3ucPbrdBSHcBWGt59tlnmT9/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xvals = np.linspace(0, 7, 30)\n", "plt.plot(xvals, np.zeros_like(xvals), 'k--')\n", "plt.plot(xvals, g(xvals))" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "def newton_raphson(f, x, h=1e-3, Nmax=100, eps=1e-14):\n", " \"\"\"Find root x0 so that f(x0)=0 with the Newton-Raphson algorithm\"\"\"\n", " for iteration in range(Nmax):\n", " fx = f(x)\n", " if np.abs(fx) < eps:\n", " break\n", " df = (f(x + h/2) - f(x - h/2))/h\n", " Delta_x = -fx/df\n", " x += Delta_x\n", " else:\n", " raise RuntimeError(f\"Newton-Raphson: no root found after {Nmax} iterations (eps={eps}); \"\n", " f\"best guess is {x} with error {fx}\")\n", " return x" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0298665293222586\n" ] } ], "source": [ "x0 = newton_raphson(g, 2)\n", "print(x0)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.661338147750939e-16" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(x0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But note that the algorithm only converges well near the root. With other values it might not converge at all:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "ename": "RuntimeError", "evalue": "Newton-Raphson: no root found after 100 iterations (eps=1e-14); best guess is 66991.66522480128 with error -106154.40543292962", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[48], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mnewton_raphson\u001b[49m\u001b[43m(\u001b[49m\u001b[43mg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1000\u001b[39;49m\u001b[43m)\u001b[49m\n", "Cell \u001b[0;32mIn[29], line 11\u001b[0m, in \u001b[0;36mnewton_raphson\u001b[0;34m(f, x, h, Nmax, eps)\u001b[0m\n\u001b[1;32m 9\u001b[0m x \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m Delta_x\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNewton-Raphson: no root found after \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mNmax\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m iterations (eps=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00meps\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m); \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbest guess is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with error \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m x\n", "\u001b[0;31mRuntimeError\u001b[0m: Newton-Raphson: no root found after 100 iterations (eps=1e-14); best guess is 66991.66522480128 with error -106154.40543292962" ] } ], "source": [ "newton_raphson(g, -1000)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0298665293222589" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newton_raphson(g, 10)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0298665293222589" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newton_raphson(g, 15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look how Newton-Raphson iterates: also return all intermediate $x$ values:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "def newton_raphson_with_history(f, x, h=1e-3, Nmax=100, eps=1e-14):\n", " xvals = []\n", " for iteration in range(Nmax):\n", " fx = f(x)\n", " if np.abs(fx) < eps:\n", " break\n", " df = (f(x + h/2) - f(x - h/2))/h\n", " Delta_x = -fx/df\n", " x += Delta_x\n", " xvals.append(x)\n", " else:\n", " raise RuntimeError(f\"Newton-Raphson: no root found after {Nmax} iterations (eps={eps}); \"\n", " f\"best guess is {x} with error {fx}\")\n", " return x, np.array(xvals)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root x0 = 1.0298665293222589 after 4 iterations\n", "root x0 = 1.0298665293222589 after 58 iterations\n", "root x0 = 1.0298665293222589 after 21 iterations\n", "root x0 = 1.0298665293222589 after 49 iterations\n" ] } ], "source": [ "x = {}\n", "\n", "x0, xvals = newton_raphson_with_history(g, 1.5)\n", "x[1.5] = xvals\n", "print(\"root x0 = {} after {} iterations\".format(x0, len(xvals)))\n", "\n", "x0, xvals = newton_raphson_with_history(g, 5)\n", "x[5] = xvals\n", "print(\"root x0 = {} after {} iterations\".format(x0, len(xvals)))\n", "\n", "x0, xvals = newton_raphson_with_history(g, 10)\n", "x[10] = xvals\n", "print(\"root x0 = {} after {} iterations\".format(x0, len(xvals)))\n", "\n", "x0, xvals = newton_raphson_with_history(g, 1500)\n", "x[1500] = xvals\n", "print(\"root x0 = {} after {} iterations\".format(x0, len(xvals)))" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for xstart in sorted(x.keys()):\n", " plt.semilogx(x[xstart], label=str(xstart))\n", "plt.legend(loc=\"best\")\n", "plt.xlabel(\"iteration\")\n", "plt.ylabel(\"current guess for root $x_0$\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performance comparison" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "def g(x):\n", " return 2*np.cos(x) - x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Starting away from the root:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "293 µs ± 11.3 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" ] } ], "source": [ "%timeit newton_raphson(g, 3.5, eps=1e-14)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "120 µs ± 1.42 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] } ], "source": [ "%timeit bisection(g, 0, 3.5, eps=1e-14)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Newton-Raphson can take a while to find the root." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start closer to the root:" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16.8 µs ± 581 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit newton_raphson(g, 1.5, eps=1e-14)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "123 µs ± 1.68 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] } ], "source": [ "%timeit bisection(g, 0, 1.5, eps=1e-14)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When close to a root, N-R is fast." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Combining `bisection` and `newton_raphson`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Best of both worlds:\n", "1. Use *bisection* to get close to the root (let's say, with $\\epsilon=0.1$).\n", "2. Refine with N-R to close to machine precision ($\\epsilon = 10^{-14}$)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "18.3 µs ± 276 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit x0 = bisection(g, 0, 3.5, eps=0.1)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initial guess 1.0390625\n" ] } ], "source": [ "# find initial guess\n", "x0 = bisection(g, 0, 3.5, eps=0.1)\n", "print(f\"Initial guess {x0}\")" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12.8 µs ± 463 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit newton_raphson(g, x0, eps=1e-14)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When starting from the initial bisection guess `x0`, N-R is very fast to converge." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's measure the complete combined algorithm:" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "31.2 µs ± 544 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] } ], "source": [ "%%timeit\n", "x0 = bisection(g, 0, 3.5, eps=0.1)\n", "newton_raphson(g, x0, eps=1e-14)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By combining *bisection* with *Newton-Raphson* we found the root in 31 µs to machine precision instead of 120 µs (bisection alone) or 293 µs (Newton-Raphson alone)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.7" } }, "nbformat": 4, "nbformat_minor": 4 }