diff --git a/code/BDATAFML.ipynb b/code/BDATAFML.ipynb new file mode 100644 index 00000000..9fe1ec4c --- /dev/null +++ b/code/BDATAFML.ipynb @@ -0,0 +1,370 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "from modsim import *\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pandas import read_csv\n", + "\n", + "import csv\n", + "results = TimeSeries()\n", + "filename_csv = \"data/book1.csv\"\n", + "tables = read_csv(filename_csv, header=0, index_col=0, decimal='.')\n", + "tables = tables.dropna()\n", + "\n", + "type(tables)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tables.columns = ['colonies']\n", + "num_col = tables.colonies\n", + "num_col[1974]\n", + "type(num_col)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-36.046511627906973" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_estimates(table):\n", + " \n", + " plot(table, ':', color='darkblue', label='colonies')\n", + " \n", + " decorate(xlabel='Year',\n", + " ylabel='Number of Colonies (thousands)')\n", + "\n", + "\n", + "newfig()\n", + "plot_estimates(tables)\n", + "\n", + "\n", + "t0 = tables.index[0]\n", + "t_end = tables.index[-1]\n", + "p0 = num_col[t0]\n", + "p_end = num_col[t_end]\n", + "type(t0)\n", + "t0, t_end\n", + "\n", + "total_growth = p_end - p0\n", + "elapsed_time = t_end - t0\n", + "annual_growth = total_growth / elapsed_time\n", + "annual_growth" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'update_func2' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSystem\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0malpha\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m.00001\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbeta\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m.00001\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[0mupdate_func2\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum_col\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtables\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mresults\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'update_func2' is not defined" + ] + } + ], + "source": [ + "def update_func_q(num_col, year, system):\n", + " \"\"\"Compute the population next year.\n", + " \n", + " pop: current population\n", + " t: current year\n", + " system: system object containing parameters of the model\n", + " \n", + " returns: population next year\n", + " \"\"\"\n", + " pop = num_col\n", + " net_growth = system.alpha * pop + system.beta * pop**2\n", + " return pop + net_growth\n", + "\n", + "results = System(alpha=.00001, beta=.00001)\n", + "update_func2(num_col, tables.index, results)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bees = System(t0 = tables.index[0],#start\n", + "t_middle = \n", + "t_end = tables.index[-1], #stop\n", + "p0 = num_col[first_year], #initial population\n", + "p_end = num_col[last_year], #final population\n", + "t = tables.index,\n", + "alpha=.00001, beta=.00001)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#quadratic\n", + "def update_func_q(pop, t, system):\n", + " \"\"\"Compute the population next year.\n", + " \n", + " pop: current population\n", + " t: current year\n", + " system: system object containing parameters of the model\n", + " \n", + " returns: population next year\n", + " \"\"\"\n", + " net_growth = system.alpha * pop + system.beta * pop**2\n", + " return pop + net_growth\n", + " \n", + "def run_simulation(system, update_func):\n", + " \"\"\"Simulate the system using any update function.\n", + " \n", + " Adds TimeSeries to `system` as `results`.\n", + " \n", + " system: System object\n", + " update_func: function that computes the population next year\n", + " \"\"\"\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = update_func(results[t], t, system)\n", + " system.results = results\n", + " \n", + " \n", + "def plot_results(system, title=None):\n", + " \"\"\"Plot the estimates and the model.\n", + " \n", + " system: System object with `results`\n", + " \"\"\"\n", + " newfig()\n", + " plot_estimates(tables)\n", + " plot(system.results, '--', color='gray', label='model')\n", + " decorate(xlabel='Year',\n", + " ylabel='Bee population (thousands)',\n", + " title=title)\n", + " \n", + "bees.alpha = -0.02\n", + "bees.beta = 0.000001\n", + "run_simulation(bees, update_func_q)\n", + "plot_results(bees)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t_middle = tables.index[30]\n", + "t_end = tables.index[-1]\n", + "p_middle = num_col[t_middle]\n", + "p_end = num_col[t_end]\n", + "type(t_middle)\n", + "t_middle, t_end\n", + "\n", + "total_growth2 = p_end - p_middle\n", + "elapsed_time2 = t_end - t_middle\n", + "annual_growth2 = total_growth2 / elapsed_time2\n", + "annual_growth2\n", + "\n", + "def run_simulation(system, update_func):\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = update_func(results[t], t, system)\n", + " system.results = results\n", + "\n", + "def run_simulation2(system, update_func):\n", + " results = TimeSeries()\n", + " results[system.t_middle] = system.p_middle\n", + " for t in linrange(system.t_middle, system.t_end):\n", + " results[t+1] = update_func(results[t], t, system)\n", + " system.results = results\n", + " \n", + "run_simulation2(bees, update_func_q)\n", + "plot_results(bees)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 't_middle' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 18\u001b[0m \u001b[0mt_middle\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtables\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m30\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[0mp0\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnum_col\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mt0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m#initial population\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[0mp_middle\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnum_col\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mt_middle\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 21\u001b[0m \u001b[0mp_end\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnum_col\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mt_end\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m#final population\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[0malpha\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m.0018\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 't_middle' is not defined" + ] + } + ], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Simulate the system using any update function.\n", + " \n", + " Adds TimeSeries to `system` as `results`.\n", + " \n", + " system: System object\n", + " update_func: function that computes the population next year\n", + " \"\"\"\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = update_func(results[t], t, system)\n", + " system.results = results\n", + " \n", + "bees = System(t0 = tables.index[0], #start\n", + "t = tables.index,\n", + "t_end = tables.index[-1], #stop\n", + "t_middle = tables.index[30],\n", + "p0 = num_col[t0], #initial population\n", + "p_middle = num_col[t_middle],\n", + "p_end = num_col[t_end], #final population\n", + "alpha = .0018,\n", + "beta = 0.0001)\n", + " \n", + "bees.t_end = 2067\n", + "bees.p_end = 0\n", + " \n", + "array1 = linspace(-.005, 0.006, 25)\n", + "array2 = linspace(-0.000003, 0.00000001, 25)\n", + "matrix_results = np.zeros((25,25))\n", + " \n", + "def plot_results(system, title=None):\n", + " \"\"\"Plot the estimates and the model.\n", + " \n", + " system: System object with `results`\n", + " \"\"\"\n", + " newfig()\n", + " plot_estimates(tables)\n", + " plot(system.results, '--', color='gray', label='model')\n", + " decorate(xlabel='Year',\n", + " ylabel='Bee population (thousands)',\n", + " title=title)\n", + " \n", + "newfig()\n", + "for i in range(25):\n", + " bees.alpha = array1[i]\n", + " for n in range(25):\n", + " bees.beta = array2[n]\n", + " run_simulation(bees, update_func_q)\n", + " matrix_results[i][n] = bees.results[2067]\n", + " #print(bees.results[2067])\n", + " #plot_results(bees)\n", + " \n", + "#print(matrix_results)\n", + "plt.imshow(matrix_results, cmap='hot', interpolation='nearest', origin='lower')\n", + "plt.show\n", + "decorate(xlabel='Beta',\n", + " ylabel='Alpha',\n", + " title='Bee Population in 2067')\n", + "savefig('bee_heat_map.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/code/Chap02mine.ipynb b/code/Chap02mine.ipynb new file mode 100644 index 00000000..cbfbe82c --- /dev/null +++ b/code/Chap02mine.ipynb @@ -0,0 +1,2222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 2: Simulation\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll start with the same code we saw last time: the magic command that tells Jupyter where to put the figures, and the import statement that gets the functions defined in the `modsim` module." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## More than one System object\n", + "\n", + "Here's the code from the previous chapter, with two changes:\n", + "\n", + "1. I've added DocStrings that explain what each function does, and what parameters it takes.\n", + "\n", + "2. I've added a parameter named `system` to the functions so they work with whatever `System` object we give them, instead of always using `bikeshare`. That will be useful soon when we have more than one `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_steps(system, num_steps=1, p1=0.5, p2=0.5):\n", + " \"\"\"Simulate the given number of time steps.\n", + " \n", + " system: bikeshare System object\n", + " num_steps: number of time steps\n", + " p1: probability of an Olin->Wellesley customer arrival\n", + " p2: probability of a Wellesley->Olin customer arrival\n", + " \"\"\"\n", + " for i in range(num_steps):\n", + " step(system, p1, p2)\n", + " plot_system(system)\n", + " \n", + "def step(system, p1=0.5, p2=0.5):\n", + " \"\"\"Simulate one minute of time.\n", + " \n", + " system: bikeshare System object\n", + " p1: probability of an Olin->Wellesley customer arrival\n", + " p2: probability of a Wellesley->Olin customer arrival\n", + " \"\"\"\n", + " if flip(p1):\n", + " bike_to_wellesley(system)\n", + " \n", + " if flip(p2):\n", + " bike_to_olin(system)\n", + " \n", + "def bike_to_wellesley(system):\n", + " \"\"\"Move one bike from Olin to Wellesley.\n", + " \n", + " system: bikeshare System object\n", + " \"\"\"\n", + " move_bike(system, 1)\n", + " \n", + "def bike_to_olin(system):\n", + " \"\"\"Move one bike from Wellesley to Olin.\n", + " \n", + " system: bikeshare System object\n", + " \"\"\"\n", + " move_bike(system, -1)\n", + " \n", + "def move_bike(system, n):\n", + " \"\"\"Move a bike.\n", + " \n", + " system: bikeshare System object\n", + " n: +1 to move from Olin to Wellesley or\n", + " -1 to move from Wellesley to Olin\n", + " \"\"\"\n", + " system.olin -= n\n", + " system.wellesley += n\n", + " \n", + "def plot_system(system):\n", + " \"\"\"Plot the current system of the bikeshare system.\n", + " \n", + " system: bikeshare System object\n", + " \"\"\"\n", + " plot(system.olin, 'rs-', label='Olin')\n", + " plot(system.wellesley, 'bo-', label='Wellesley')\n", + " \n", + "def decorate_bikeshare():\n", + " \"\"\"Add a title and label the axes.\"\"\"\n", + " decorate(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can create more than one `System` object:" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare1 = System(olin=10, wellesley=2)\n", + "bikeshare1" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare2 = System(olin=10, wellesley=2)\n", + "bikeshare2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And whenever we call a function, we indicate which `System` object to work with:" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bike_to_olin(bikeshare1)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bike_to_wellesley(bikeshare2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And you can confirm that the different systems are getting updated independently:" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin11
wellesley1
\n", + "
" + ], + "text/plain": [ + "olin 11\n", + "wellesley 1\n", + "dtype: int64" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare1" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Negative bikes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the code we have so far, the number of bikes at one of the locations can go negative, and the number of bikes at the other location can exceed the actual number of bikes in the system.\n", + "\n", + "If you run this simulation a few times, it happens quite often." + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_system(bikeshare)\n", + "decorate_bikeshare()\n", + "run_steps(bikeshare, 60, 0.4, 0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But this is relatively easy to fix, using the `return` statement to exit the function early if the update would cause negative bikes.\n", + "\n", + "If the second `if` statement seems confusing, remember that `n` can be negative." + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(system, n):\n", + " # make sure the number of bikes won't go negative\n", + " olin_temp = system.olin - n\n", + " if olin_temp < 0:\n", + " return\n", + " \n", + " wellesley_temp = system.wellesley + n\n", + " if wellesley_temp < 0:\n", + " return\n", + " \n", + " # update the system\n", + " system.olin = olin_temp\n", + " system.wellesley = wellesley_temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now if you run the simulation again, it should behave." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_system(bikeshare)\n", + "decorate_bikeshare()\n", + "run_steps(bikeshare, 60, 0.4, 0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The variables `olin` and `wellesley` are created inside `move_bike`, so they are local. When the function ends, they go away.\n", + "\n", + "If you try to access a local variable from outside its function, you get an error:" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'olin' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;31m# NameError: name 'olin' is not defined\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0molin\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'olin' is not defined" + ] + } + ], + "source": [ + "# If you remove the # from the last line in this cell and run it, you'll get\n", + "# NameError: name 'olin' is not defined\n", + "\n", + "olin" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add print statements in `move_bike` so it prints a message each time a customer arrives and doesn't find a bike. Run the simulation again to confirm that it works as you expect. Then you might want to remove the print statements before you go on." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison operators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `if` statements in the previous section used the comparison operator `<`. The other comparison operators are listed in the book.\n", + "\n", + "It is easy to confuse the comparison operator `==` with the assignment operator `=`.\n", + "\n", + "Remember that `=` creates a variable or gives an existing variable a new value." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whereas `==` compared two values and returns `True` if they are equal." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x == 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use `==` in an `if` statement." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if x == 5:\n", + " print('yes, x is 5')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if you use `=` in an `if` statement, you get an error." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# If you remove the # from the if statement and run it, you'll get\n", + "# SyntaxError: invalid syntax\n", + "\n", + "if x >= 5:\n", + " print('yes, x is greater than or equal to 5')\n", + "else:\n", + " print('no')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add an `else` clause to the `if` statement above, and print an appropriate message.\n", + "\n", + "Replace the `==` operator with one or two of the other comparison operators, and confirm they do what you expect." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have a working simulation, we'll use it to evaluate alternative designs and see how good or bad they are. The metric we'll use is the number of customers who arrive and find no bikes available, which might indicate a design problem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we'll make a new `System` object that creates and initializes the system variables that will keep track of the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we need a version of `move_bike` that updates the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(system, n):\n", + " olin_temp = system.olin - n\n", + " if olin_temp < 0:\n", + " system.olin_empty += 1\n", + " return\n", + " \n", + " wellesley_temp = system.wellesley + n\n", + " if wellesley_temp < 0:\n", + " system.wellesley_empty += 1\n", + " return\n", + " \n", + " system.olin = olin_temp\n", + " system.wellesley = wellesley_temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now when we run a simulation, it keeps track of unhappy customers." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nsmVLyL6vvPLKvvzZf/vb31i+fDnHHXccN998M2+88QZZWVksXLiw1fHGjRvHunXrQo61cuVK7r77\n7n1lJk6ciFKKl19+mQ8++IBTTz019CCNjXY2yxhhhEQqkZYWmojoq68kj/eOHTLCWLpUWi9D3Cgp\ngTVrZCD36ae2TJ4/P7H1SjaKi+GGG+Dvf5fvzhxpTZ8+nXnz5jFo0CDGOux4ubm5HHroocyfP3/f\n/IjCwkJOOOEEbrjhBhYtWsSGDRu4++67ef7550P29aJHjx6cd9553HXXXbz++uts3LiRJ598kvvv\nv58RI0YAsGnTJm6++WY++ugjNm3axLx586iurubAAw9sdbxLLrmE1157jYcffph169axcOFCbrzx\nRnJzc0NGNaeddhqPPvooo0aNYn9n6oCqKvjwQ/mEMwy1A6NuSjX695cRRDg2bxZPKA/DmKHjbNok\naiaQie/V1dCnj0yENyQH06dPp7a2llmzZrXaNmPGDD744AMOO+ywfetuvfVW7rrrLq677jqqq6sZ\nO3Ys9913X0iZcMyZM4esrCzuvPNOtm/fzogRI7jlllv2GZOvv/567rjjDq666ioqKyspLCzktttu\nY6pHuuSjjjqKO++8k4cffph7772X/v37c8opp3DllVeGlDvxxBO54447Wo8iysul1xIISDvgnIDb\nAdICXUA9oZQaBax96623GD58eKKrEz8uvlgcz9esgT17ZN3atfI9ZIg9zJw8WdxjjU0i5lxxBbzx\nhv179GgYMUJUKjfckLh6GboPK1eu5NRTT2XRokX7DORcdBF89BFYxvZevWx/4wjtQFlZGcceeyzA\naK31Oq8yZiSRaqSnSywni9275XvIEOnmggw7zRyKuOCyT7JrlwgJj06rwRBTysvL+fzzz3niiSeY\nNWuWLSBA1EtOb6yaGrFPZGV1+LzGJtFVcNoqKisTV48uTkuLREjp1UtMRC0tcN55Xde7yZA87Nix\ng2uvvZbm5mauvfba0I3udz4QkM5iDDAjiVQikvqopgauukoejvR0cHhEGGJDQ4No+gYPlo/FgAGJ\nq5Oh+zB58uSQkCMhnHACfPZZ6LqZM+Gsszp8Xt8jCaXUUUqp6cHlkUqpl5VSy5VS17a1r6ET6NlT\nFOMg3VuTwS7mWG6vbszkd0NCaWmBlStbr4/Rg+lLSCilzgXeASxz+kPAMcA64Cal1G9iUhtDx3BG\n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\n7nSDZskAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_system(bikeshare)\n", + "decorate_bikeshare()\n", + "run_steps(bikeshare, 60, 0.4, 0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the simulation, we can print the number of unhappy customers at each location." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin_empty" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.wellesley_empty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Let's add a \"clock\" to keep track of how many time steps have elapsed:\n", + "\n", + "1. Add a new system variable named `clock` to `bikeshare`, initialized to 0, and \n", + "\n", + "2. Modify `step` so it increments (adds one to) `clock` each time it is invoked.\n", + "\n", + "Test your code by adding a print statement that prints the value of `clock` at the beginning of each time step." + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "ename": "IndentationError", + "evalue": "unexpected indent (, line 10)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m10\u001b[0m\n\u001b[1;33m bikeshare.clock =+ 1\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m unexpected indent\n" + ] + } + ], + "source": [ + "# Here's a copy of step to get you started\n", + "bikeshare = System(Wellesley=10, Olin=2, clock=0)\n", + "def step(system, p1=0.5, p2=0.5):\n", + " \"\"\"Simulate one minute of time.\n", + " \n", + " system: bikeshare System object\n", + " p1: probability of an Olin->Wellesley customer arrival\n", + " p2: probability of a Wellesley->Olin customer arrival\n", + " \"\"\"\n", + " bikeshare.clock =+ 1\n", + " print (clock)\n", + " if flip(p1):\n", + " bike_to_wellesley(system)\n", + " \n", + " if flip(p2):\n", + " bike_to_olin(system)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(wellesley=10, olin=2, clock=0)\n", + "def step(system, p1=0.5, p2=0.5):\n", + " if flip(p1):\n", + " bike_to_wellesley(system) \n", + " if flip(p2):\n", + " bike_to_olin(system)\n", + " bikeshare.clock += 1 \n", + " print(bikeshare.clock)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "step(bikeshare)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "step(bikeshare)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the simulation, check the final value of `clock`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(bikeshare.clock)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Now suppose we'd like to know how long it takes to run out of bikes at either location. Modify `move_bike` so the first time a student arrives at Olin and doesn't find a bike, it records the value of `clock` in a system variable.\n", + "\n", + "Hint: create a system variable named `t_first_empty` and initialize it to `-1` to indicate that it has not been set yet.\n", + "\n", + "Test your code by running a simulation for 60 minutes and checking the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bikeshare = System(wellesley=10, olin=2, clock=0, wellesley_empty=0, olin_empty=0, t_first_empty=-1)\n", + "def move_bike(system, n):\n", + " \n", + " olin_temp = system.olin - n\n", + " \n", + " if olin_temp < 0:\n", + " system.olin_empty += 1\n", + " \n", + " if system.t_first_empty == -1:\n", + " system.t_first_empty = system.clock\n", + " print(system.t_first_empty, system.clock)\n", + " print('ran out at olin')\n", + " return\n", + " \n", + " wellesley_temp = system.wellesley + n\n", + " \n", + " if wellesley_temp < 0:\n", + " system.wellesley_empty += 1\n", + " \n", + " if system.t_first_empty == -1:\n", + " system.t_first_empty = system.clock\n", + " print(system.t_first_empty, system.clock)\n", + " print('ran out at olin')\n", + " return\n", + " \n", + " system.olin = olin_temp\n", + " system.wellesley = wellesley_temp\n", + " \n", + "for i in range(0,60):\n", + " step(bikeshare)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the simulation, check the final value of `t_first_empty`." + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'System' object has no attribute 't_first_empty'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbikeshare\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mt_first_empty\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 3079\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3080\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3081\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3082\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3083\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'System' object has no attribute 't_first_empty'" + ] + } + ], + "source": [ + "print(bikeshare.t_first_empty)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we go on, let's put `step` and `move_bike` back the way we found them, so they don't break the examples below." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step(system, p1=0.5, p2=0.5):\n", + " if flip(p1):\n", + " bike_to_wellesley(system)\n", + " \n", + " if flip(p2):\n", + " bike_to_olin(system)\n", + "\n", + "def move_bike(system, n):\n", + " olin_temp = system.olin - n\n", + " if olin_temp < 0:\n", + " system.olin_empty += 1\n", + " return\n", + " \n", + " wellesley_temp = system.wellesley + n\n", + " if wellesley_temp < 0:\n", + " system.wellesley_empty += 1\n", + " return\n", + " \n", + " system.olin = olin_temp\n", + " system.wellesley = wellesley_temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Returning values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a simple function that returns a value:" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def add_five(x):\n", + " return x + 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's how we call it." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = add_five(3)\n", + "y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you run a function on the last line of a cell, Jupyter displays the result:" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add_five(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "But that can be a bad habit, because usually if you call a function and don't assign the result in a variable, the result gets discarded.\n", + "\n", + "In the following example, Jupyter shows the second result, but the first result just disappears." + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add_five(3)\n", + "add_five(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "When you call a function that returns a variable, it is generally a good idea to assign the result to a variable." + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8 10\n" + ] + } + ], + "source": [ + "y1 = add_five(3)\n", + "y2 = add_five(5)\n", + "\n", + "print(y1, y2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a function called `make_system` that creates a `System` object with the system variables `olin=10` and `wellesley=2`, and then returns the new `System` object.\n", + "\n", + "Write a line of code that calls `make_system` and assigns the result to a variable." + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system():\n", + " system = System(olin=10, wellesley=2)\n", + " return system" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare = make_system()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running simulations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we go on, I want to update `run_steps` so it doesn't always plot the results. The new version takes an additional parameter, `plot_flag`, to indicate whether we want to plot.\n", + "\n", + "\"flag\" is a conventional name for a boolean variable that indicates whether or not a condition is true.\n", + "\n", + "This version of `run_steps` works even if `num_steps` is not an integer. It uses the `int` function to round down. See https://docs.python.org/3/library/functions.html#int" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_steps(system, num_steps=1, p1=0.5, p2=0.5, plot_flag=True):\n", + " \"\"\"Simulate the given number of time steps.\n", + " \n", + " `num_steps` should be an integer; if not, it gets rounded down.\n", + " \n", + " system: bikeshare System object\n", + " num_steps: number of time steps\n", + " p1: probability of an Olin->Wellesley customer arrival\n", + " p2: probability of a Wellesley->Olin customer arrival\n", + " plot_flag: boolean, whether to plot\n", + " \"\"\"\n", + " for i in range(int(num_steps)):\n", + " step(system, p1, p2)\n", + " if plot_flag:\n", + " plot_system(system) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now when we run a simulation, we can choose not to plot the results:" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0)\n", + "run_steps(bikeshare, 60, 0.4, 0.2, plot_flag=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But after the simulation, we can still read the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin_empty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's wrap all that in a function." + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation():\n", + " system = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0)\n", + " run_steps(system, 60, 0.4, 0.2, plot_flag=False)\n", + " return system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And test it." + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin0
wellesley12
olin_empty6
wellesley_empty1
\n", + "
" + ], + "text/plain": [ + "olin 0\n", + "wellesley 12\n", + "olin_empty 6\n", + "wellesley_empty 1\n", + "dtype: int64" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_simulation()" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12 0\n" + ] + } + ], + "source": [ + "print(system.olin_empty, system.wellesley_empty)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we generalize `run_simulation` to take `p1` and `p2`, we can use it to run simulations with a range of values for the parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(p1=0.4, p2=0.2):\n", + " bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0)\n", + " run_steps(bikeshare, 60, p1, p2, plot_flag=False)\n", + " return bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When `p1` is small, we probably don't run out of bikes at Olin." + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = run_simulation(p1=0.2)\n", + "system.olin_empty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When `p1` is large, we probably do." + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = run_simulation(p1=0.6)\n", + "system.olin_empty" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "**Exercise:** Write a version of `run_simulation` that takes all five model parameters as function parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "def run_simulation(p1=0.4, p2=.02, olin=10, wellesley=2, num_steps=60):\n", + " bikeshare = System(olin=olin, wellesley=wellesley, \n", + " olin_empty=0, wellesley_empty=0)\n", + " run_steps(bikeshare, num_steps, p1, p2, True)\n", + " return bikeshare" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_simulation()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## More for loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`linspace` creates a NumPy array of equally spaced numbers." + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , 0.25, 0.5 , 0.75, 1. ])" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p1_array = linspace(start=0, stop=1, num=5)\n", + "p1_array" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use an array in a `for` loop, like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n", + "0.25\n", + "0.5\n", + "0.75\n", + "1.0\n" + ] + } + ], + "source": [ + "for p1 in p1_array:\n", + " print(p1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This will come in handy in the next section." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The function `linspace` is part of NumPy. [You can read the documentation here](https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html).\n", + "\n", + "Use `linspace` to make an array of 10 equally spaced numbers from 1 to 10 (including both)." + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n", + "2.0\n", + "3.0\n", + "4.0\n", + "5.0\n", + "6.0\n", + "7.0\n", + "8.0\n", + "9.0\n", + "10.0\n" + ] + } + ], + "source": [ + "floopy_array = linspace(start=1, stop=10, num=10)\n", + "for floopy in floopy_array:\n", + " print(floopy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The `modsim` library provides a related function called `linrange`. You can view the documentation by running the following cell:" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function linrange in module modsim:\n", + "\n", + "linrange(start=0, stop=None, step=1, **kwargs)\n", + " Returns an array of evenly-spaced values in the interval [start, stop].\n", + " \n", + " This function works best if the space between start and stop\n", + " is divisible by step; otherwise the results might be surprising.\n", + " \n", + " By default, the last value in the array is `stop` (at least approximately).\n", + " If you provide the keyword argument `endpoint=False`, the last value\n", + " in the array is `stop-step`. \n", + " \n", + " start: first value\n", + " stop: last value\n", + " step: space between values\n", + " \n", + " Also accepts the same keyword arguments as np.linspace. See\n", + " https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html\n", + " \n", + " returns: array or Quantity\n", + "\n" + ] + } + ], + "source": [ + "help(linrange)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `linrange` to make an array of numbers from 1 to 11 with a step size of 2." + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n", + "3.0\n", + "5.0\n", + "7.0\n", + "9.0\n", + "11.0\n" + ] + } + ], + "source": [ + "floppy_array = linrange(start=1, stop=11, step=2)\n", + "for floppy in floppy_array:\n", + " print(floppy)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Sweeping parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following example runs simulations with a range of values for `p1`; after each simulation, it prints the number of unhappy customers at the Olin station:" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p1_array = linspace(0, 1, 11)\n", + "p1_array" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0\n", + "0.1 0\n", + "0.2 0\n", + "0.3 6\n", + "0.4 6\n", + "0.5 20\n", + "0.6 26\n", + "0.7 36\n", + "0.8 34\n", + "0.9 46\n", + "1.0 50\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for p1 in p1_array:\n", + " system = run_simulation(p1=p1)\n", + " print(p1, system.olin_empty)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can do the same thing, but plotting the results instead of printing them.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n/wegFnUa+pk1egAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "for p1 in p1_array:\n", + " system = run_simulation(p1=p1)\n", + " plot(p1, system.olin_empty, 'rs', label='olin')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we should decorate the figure. This version of `decorate_bikeshare` takes `xlabel` as a parameter, for reasons you will see soon." + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def decorate_bikeshare(xlabel):\n", + " decorate(title='Olin-Wellesley Bikeshare',\n", + " xlabel=xlabel, \n", + " ylabel='Number of unhappy customers')" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\ProgramData\\Miniconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:545: UserWarning: No labelled objects found. Use label='...' kwarg on individual plots.\n", + " warnings.warn(\"No labelled objects found. \"\n" + ] + }, + { + "data": { + "image/png": "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\nF9cT5AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "decorate_bikeshare(xlabel='Arrival rate at Olin (p1 in customers/min)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Wrap this code in a function named `parameter_sweep` that takes an array called `p1_array` as a parameter. It should create a new figure, run a simulation for each value of `p1` in `p1_array`, and plot the results.\n", + "\n", + "Once you have the function working, modify it so it also plots the number of unhappy customers at Wellesley. Looking at the plot, can you estimate a range of values for `p1` that minimizes the total number of unhappy customers?" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def parameter_sweep(p1_array):\n", + " for p1 in p1_array:\n", + " run_simulation(p1, p1, 10, 2, 60)\n", + " \n", + "parameter_sweep(p1_array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "**Exercise:** Write a function called `parameter_sweep2` that runs simulations with `p1=0.2` and a range of values for `p2`.\n", + "\n", + "Note: If you run `parameter_sweep2` a few times without calling `newfig`, you can plot multiple runs on the same axes, which will give you a sense of how much random variation there is from one run to the next. " + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n62TSidqpZJ43z1kdo6ILFuvzg4OF29C2g42dgQFpW9sOl10pCO7MTcVkGxzMn7ouDoTpM5EpdNM0\nvwTcCNwALLcsK9TztqNDYkdHvbSrVAxDwohGmWVG0dHhxHguZvQmk4Uzpah284bXVcH+lfwqzncY\nI3tM5qPmZim4tVVMPXdGgdZWX3NvpjFIqzE227Vf23qzASmiyhKj4pUHaQPDkL9k0slaNCabU7Yc\ndW7aNP/Y427CZr3p6HCs6mJJT/z6ipLrrW+VELDqFimZUyk519XltH+xPj9zZuHtB0HHjuqTqm5R\n7kNTdoYaZ268sgXJdlQrwmYfi6QapmleCnwVuMKyrIssywr9rF22TCzNuOy8a2oSeaLMMqNYtkwC\n7gdJNdfcXDj7kMrycsABuZ1SdVgl/7JlYz9TDJUZKefabk3nFd6n8O7ET2hnJwkjt0v4tW2+eNNR\nZYlZtqx4Nig3SjGprEVjsjlly1Hn5s3zTwnoLi9s1ptlyxxFW2hsKEXt7Suqf6iUdAolM8itdD+b\ni/X57u7C7Rh07Cxb5vTTYuM+TL9V4+bAA/0TXnhl6+72dz3FAd8xWAivUz3sX2dn56GdnZ3pzs7O\nH3d2ds7y/LUX+J7vKpczz5SJi1qtclGTYaecUtlVLhdcIDPY3hUR4Ky4mDBBZv+LTaL19dn21Vc7\nE4rz59v2ZZeNlf+WW+ScWk2jVhG0tsp/9wqbMTPsn/60zJq5Z17VJKl6PXFi7qRoW5ttNzfba1rP\nt2cnB+wWY5fdltptnzr38bxte9ZZUofJk+V/1KtczjjDaQP3ffdb5TJ5sm2fc05uO/7yl3JPFi+2\n7Xe9K/dcX59tH3+8/yqXZFIm3kqpz+rVcr1p02TStanJWeGiZJ4+PX9fUf3j/PPlv1fmfOcKsWaN\nyORuR9VvTjgheDl33JFbt3Hjxq5ymTrVtt/2NmeVS7FJRPdKmzVrZNVXS4t0x+OO85ft5JNzV+2o\nukydOnYFWDX1UNhVLlGsXD0bSALnZf/cfBmx3APR1QX/7/9FIFGJ/Nu/wZNPyuuLLpLsQZVi9mz/\nDDdTp8LXvx6urK4u+RsZEX8gSCYddxJkEB/pqafmL+ed74Szz85zctWq4oK8/rqkV1Icfzzcey/d\nZBh87I88v2MmvOMd/MM/LOXgg/2LOOooaQNF1FliZszIbYOrr5Y+587a4+bSSyUtm8KdUWfBgtxM\n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\nrtFoNA3C/wf9BMPt+e0jnwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def parameter_sweep2(p1_array):\n", + " for p1 in p1_array:\n", + " run_simulation(0.2, p1, 10, 2, 60)\n", + " \n", + "parameter_sweep(p1_array)" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Hold `p1=0.4` and `p2=0.2`, and sweep a range of values for `num_steps`.\n", + "\n", + "Hint: You will need a version of `run_simulation` that takes `num_steps` as a parameter.\n", + "\n", + "Hint: Because `num_steps` is supposed to be an integer use `range` rather than `linrange`." + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "p2_array = range(1, 20, 2)\n", + "\n", + "def run_simulation(p1=0.4, p2=.02, olin=10, wellesley=2, num_steps=p2_array):\n", + " bikeshare = System(olin=olin, wellesley=wellesley, \n", + " olin_empty=0, wellesley_empty=0)\n", + " run_steps(bikeshare, num_steps, p1, p2, True)\n", + " return bikeshare\n", + "\n", + "def parameter_sweep3(p2_array):\n", + " for p2 in p2_array:\n", + " run_simulation(0.4, 0.2, 10, 2, p2)\n", + " \n", + "parameter_sweep(p2_array)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "collapsed": true, + "scrolled": false + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "**Exercise:** The code below runs a simulation with the same parameters 10 times and computes the average number of unhappy customers.\n", + "\n", + "1. Wrap this code in a function called `run_simulations` that takes `num_runs` as a parameter.\n", + "\n", + "2. Test `run_simulations`, and increase `num_runs` until the results are reasonably consistent from one run to the next.\n", + "\n", + "3. Generalize `run_simulations` so it also takes the initial value of `olin` as a parameter.\n", + "\n", + "4. Run the generalized version with `olin=12`. How much do the two extra bikes decrease the average number of unhappy customers.\n", + "\n", + "5. Make a plot that shows the average number of unhappy customers as a function of the initial number of bikes at Olin." + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "num_runs = 10\n", + "total = 0\n", + "for i in range(num_runs):\n", + " system = run_simulation(p1=0.4, p2=0.2, olin=10, wellesley=2, num_steps=60)\n", + " total += system.olin_empty + system.wellesley_empty\n", + "total / num_runs" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#I don't understand the question, this seems impossible. I will fix during/before checkin" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "collapsed": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/ModSimProj3.ipynb b/code/ModSimProj3.ipynb new file mode 100644 index 00000000..7121fa42 --- /dev/null +++ b/code/ModSimProj3.ipynb @@ -0,0 +1,1864 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "m = UNITS.meter\n", + "s = UNITS.seconds\n", + "kg = UNITS.kilogram" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(height = 4000 * m,\n", + " v_init = 0 * m / s,\n", + " g = 9.8 * m/s**2,\n", + " mass = 85 * kg, #person avg weight with avg weight chute\n", + " surface_area_person = 1.75 * m**2,\n", + " surface_area_chute = 18 * m**2,\n", + " rho = 1.112 * kg/m**3,\n", + " v_term_person = 54.2 * m / s,\n", + " v_term_chute = 8 * m / s,\n", + " duration = 300 * s)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition, starting_free_fall):\n", + " unpack(condition)\n", + " \n", + " init = State(y=height, v=v_init)\n", + " C_d_person = 2 * mass * g / (rho * surface_area_person * v_term_person**2)\n", + " C_d_chute = 2 * mass * g / (rho * surface_area_chute * v_term_chute**2)\n", + " ts = linspace(0, duration, 201)\n", + " opening_duration = 20 * s\n", + " \n", + " return System(init=init, g=g, mass=mass, rho=rho, \n", + " C_d_person=C_d_person, C_d_chute = C_d_chute, \n", + " surface_area_person=surface_area_person, \n", + " surface_area_chute = surface_area_chute, \n", + " ts=ts, free_fall=starting_free_fall, opening_duration=opening_duration)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = make_system(condition, starting_free_fall = 40)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_position(results):\n", + " \n", + " plot(system.results.y, label='y')\n", + " \n", + " decorate(xlabel='Time (s)',\n", + " ylabel='Position (m)')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " y, v = state\n", + " unpack(system)\n", + " \n", + " \n", + " \n", + " F_drag_person = 1/2 * rho * v**2 * surface_area_person * C_d_person\n", + " \n", + " F_drag_chute = 1/2 * rho * v**2 * surface_area_chute * C_d_chute\n", + " \n", + " a_drag_person = F_drag_person / mass\n", + " \n", + " a_drag_chute = F_drag_chute / mass\n", + " \n", + " delta_surface_area = (surface_area_chute / (opening_duration)) \n", + " #change 90 to parmeter when sweeping\n", + " \n", + " surface_area_changing = delta_surface_area * (t - free_fall) + surface_area_person\n", + " \n", + " F_drag_chute_changing = 1/2 * rho * v**2 * surface_area_changing * C_d_chute\n", + " \n", + " a_drag_chute_changing = F_drag_chute_changing / mass\n", + "\n", + " if t <= free_fall:\n", + " dydt = v\n", + " dvdt = -g + a_drag_person\n", + " elif t <= (free_fall + opening_duration):\n", + " dydt = v\n", + " dvdt = -g + a_drag_person + a_drag_chute_changing\n", + " else:\n", + " dydt = v\n", + " dvdt = -g + a_drag_person + a_drag_chute\n", + "\n", + " \n", + " return dydt, dvdt" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def parameter_sweep():\n", + " newfig()\n", + " free_fall = linspace(10 * s, 70 * s, 7)\n", + " \n", + " for i in free_fall:\n", + " system = make_system(condition, i)\n", + " run_odeint(system, slope_func)\n", + " plot_position(system.results)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results = run_odeint(system, slope_func)\n", + "print(system.results)\n", + "plot_position(system.results)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/code/Project 2.ipynb b/code/Project 2.ipynb new file mode 100644 index 00000000..c92c8a87 --- /dev/null +++ b/code/Project 2.ipynb @@ -0,0 +1,129 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "init = State(temp=T1)\n", + "\n", + "coffee = System(init=init,\n", + " volume=300,\n", + " r=r_coffee,\n", + " T_env=T_env,\n", + " t0=0, \n", + " t_end=30,\n", + " dt=1)\n", + "\n", + "def update(state, system):\n", + " unpack(system)\n", + " T = state.temp\n", + " T += -r * (T - T_env) * dt\n", + "\n", + " return State(temp=T)\n", + "\n", + "\n", + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add a TimeFrame to the System: results\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " unpack(system)\n", + " \n", + " frame = TimeFrame(columns=init.index)\n", + " frame.loc[t0] = init\n", + " ts = linrange(t0, t_end-dt, dt)\n", + " \n", + " for t in ts:\n", + " frame.loc[t+dt] = update_func(frame.loc[t], system)\n", + " \n", + " system.results = frame\n", + " \n", + "def final_temp(system):\n", + " \"\"\"Final temperature.\n", + " \n", + " If system has no results, return initial temp.\n", + " \n", + " system: System object.\n", + " \n", + " returns: temperature (degC)\n", + " \"\"\" \n", + " if hasattr(system, 'results'):\n", + " return system.results.temp[system.t_end]\n", + " else:\n", + " return system.init.temp\n", + " \n", + "def make_system(T_init=90, r=0.01, volume=300, t_end=30):\n", + " \"\"\"Runs a simulation with the given parameters.\n", + "\n", + " T_init: initial temperature in degC\n", + " r: heat transfer rate, in 1/min\n", + " volume: volume of liquid in mL\n", + " t_end: end time of simulation\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " init = State(temp=T_init)\n", + " \n", + " system = System(init=init,\n", + " volume=volume,\n", + " r=r,\n", + " T_env=22, \n", + " t0=0,\n", + " t_end=t_end,\n", + " dt=1)\n", + " return system\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/code/chap01_fig01.pdf b/code/chap01_fig01.pdf new file mode 100644 index 00000000..52cb2073 Binary files /dev/null and b/code/chap01_fig01.pdf differ diff --git a/code/chap01mine.ipynb b/code/chap01mine.ipynb new file mode 100644 index 00000000..f1c73177 --- /dev/null +++ b/code/chap01mine.ipynb @@ -0,0 +1,2307 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 1: Modeling\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jupyter\n", + "\n", + "Welcome to Modeling and Simulation, welcome to Python, and welcome to Jupyter.\n", + "\n", + "This is a Jupyter notebook, which is a development environment where you can write and run Python code. Each notebook is divided into cells. Each cell contains either text (like this cell) or Python code (like the cell below this one).\n", + "\n", + "### Selecting and running cells\n", + "\n", + "To select a cell, click in the left margin next to the cell. You should see a blue frame surrounding the selected cell.\n", + "\n", + "To edit a code cell, click inside the cell. You should see a green frame around the selected cell, and you should see a cursor inside the cell.\n", + "\n", + "To edit a text cell, double-click inside the cell. Again, you should see a green frame around the selected cell, and you should see a cursor inside the cell.\n", + "\n", + "To run a cell, hold down SHIFT and press ENTER. If you run a text cell, it will typeset the text and display the result.\n", + "\n", + "If you run a code cell, it runs the Python code in the cell and displays the result, if any.\n", + "\n", + "To try it out, edit this cell, change some of the text, and then press SHIFT-ENTER to run it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding and removing cells\n", + "\n", + "You can add and remove cells from a notebook using the buttons in the toolbar and the items in the menu, both of which you should see at the top of this notebook.\n", + "\n", + "You might want to try the following exercises:\n", + "\n", + "1. From the Insert menu select \"Insert cell below\" to add a cell below this one. By default, you get a code cell, and you can see in the pulldown menu that says \"Code\".\n", + "\n", + "2. In the new cell, add a print statement like `print('Hello')`, and run it.\n", + "\n", + "3. Add another cell, select the new cell, and then click on the pulldown menu that says \"Code\" and select \"Markdown\". This makes the new cell a text cell.\n", + "\n", + "4. In the new cell, type some text, and then run it.\n", + "\n", + "5. Use the arrow buttons in the toolbar to move cells up and down.\n", + "\n", + "6. Use the cut, copy, and paste buttons to delete, add, and move cells.\n", + "\n", + "7. As you make changes, Jupyter saves your notebook automatically, but if you want to make sure, you can press the save button, which looks like a floppy disk from the 1990s.\n", + "\n", + "8. Finally, when you are done with a notebook, selection \"Close and Halt\" from the File menu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using the notebooks\n", + "\n", + "The notebooks for each chapter contain the code from the chapter along with addition examples, explanatory text, and exercises. I recommend you read the chapter first to understand the concepts and vocabulary, then run the notebook to review what you learned and see it in action, and then attempt the exercises.\n", + "\n", + "The notebooks contain some explanatory text, but it is probably not enough to make sense if you have not read the book. If you are working through a notebook and you get stuck, you might want to re-read (or read!) the corresponding section of the book.\n", + "\n", + "If you try to work through the notebooks without reading the book, you're gonna have a bad time. If you have previous programming experience, you might get through the first few notebooks, but sooner or later, you will get to the end of your leash, and you won't like it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importing modsim\n", + "\n", + "The following cell imports `modsim`, which is a collection of functions we will use throughout the book. Whenever you start the notebook, you will have to run the following cell. It does two things:\n", + "\n", + "1. It uses a Jupyter \"magic command\" to specify whether figures should appear in the notebook, or pop up in a new window.\n", + "\n", + "2. It imports everything defined in `modsim`.\n", + "\n", + "Select the following cell and press SHIFT-ENTER to run it." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "If this cell runs successfully, it produces no output other than this message.\n" + ] + } + ], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# To switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib qt5\n", + "\n", + "from modsim import *\n", + "\n", + "print('If this cell runs successfully, it produces no output other than this message.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The penny myth\n", + "\n", + "The following cells contain code from the beginning of Chapter 1.\n", + "\n", + "`modsim` defines `UNITS`, which contains variables representing pretty much every unit you've ever heard of. The following to lines create new variables named `meter` and `second`." + ] + }, + { + "cell_type": "code", + "execution_count": 275, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "meter = UNITS.meter\n", + "second = UNITS.second" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To find out what units are defined, type `UNITS.` in the next cell and then press TAB. You should see a pop-up menu with a list of units." + ] + }, + { + "cell_type": "code", + "execution_count": 276, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m UNITS.\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "UNITS." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a variable named `a` and display its value:" + ] + }, + { + "cell_type": "code", + "execution_count": 277, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "9.8 meter/second2" + ], + "text/latex": [ + "$9.8 \\frac{meter}{second^{2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 277, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = 9.8 * meter / second**2\n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Create `t` and display its value:" + ] + }, + { + "cell_type": "code", + "execution_count": 278, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "4 second" + ], + "text/latex": [ + "$4 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 278, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = 4 * second\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "If you create a variable and don't display the value, you don't get any output:" + ] + }, + { + "cell_type": "code", + "execution_count": 279, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "156.8 meter" + ], + "text/latex": [ + "$156.8 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 279, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h = a * t**2\n", + "h" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Add a second line to the previous cell to display the value of `h`.\n", + "\n", + "Now let's solve the falling penny problem. The following lines set `h` to the height of the Empire State Building and compute the time it would take a penny to fall, assuming constant acceleration." + ] + }, + { + "cell_type": "code", + "execution_count": 280, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "8.817885349720552 second" + ], + "text/latex": [ + "$8.817885349720552 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 280, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h = 381 * meter\n", + "t = sqrt(2 * h / a)\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Given `t`, we can compute the velocity of the penny when it lands." + ] + }, + { + "cell_type": "code", + "execution_count": 281, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "86.41527642726142 meter/second" + ], + "text/latex": [ + "$86.41527642726142 \\frac{meter}{second}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 281, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = a * t\n", + "v" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "We can convert from one set of units to another like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 282, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mile = UNITS.mile\n", + "hour= UNITS.hour" + ] + }, + { + "cell_type": "code", + "execution_count": 283, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "193.30546802805438 mile/hour" + ], + "text/latex": [ + "$193.30546802805438 \\frac{mile}{hour}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 283, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.to(mile/hour)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** In reality, air resistance prevents the penny from reaching this velocity. At about 20 meters per second, the force of air resistance equals the force of gravity and the penny stops accelerating.\n", + "\n", + "As a simplification, let's assume that the acceleration of the penny is `a` until the penny reaches 20 meters per second, and then 0 afterwards. What is the total time for the penny to fall 381 meters?" + ] + }, + { + "cell_type": "code", + "execution_count": 284, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "20.070408163265306 second" + ], + "text/latex": [ + "$20.070408163265306 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 284, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vmax = 20 * meter/second\n", + "t1 = vmax / a\n", + "h1 = a * t1**2 / 2\n", + "h2 = h - h1\n", + "t2 = h2 / vmax\n", + "ttotal = t1 + t2\n", + "ttotal\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modeling a bikeshare system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll start with a `System` object that represents the number of bikes at each station." + ] + }, + { + "cell_type": "code", + "execution_count": 285, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2, babson=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you display the value of a `System` object, it lists the system variables and their values (not necessarily in the order you defined them):" + ] + }, + { + "cell_type": "code", + "execution_count": 286, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
babson0
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "babson 0\n", + "dtype: int64" + ] + }, + "execution_count": 286, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can access the system variables using dot notation." + ] + }, + { + "cell_type": "code", + "execution_count": 287, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 287, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin" + ] + }, + { + "cell_type": "code", + "execution_count": 307, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 307, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.wellesley" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** What happens if you spell the name of a system variable wrong? Edit the previous cell, change the spelling of `wellesley`, and run the cell again.\n", + "\n", + "The error message uses the word \"attribute\", which is another name for what we are calling a system variable. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add a third attribute called `babson` with initial value 0, and print the state of `bikeshare` again." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting\n", + "\n", + "`newfig` creates a new figure, which should appear either in the notebook or in a new window, depending on which magic command you ran in the first code cell.\n", + "\n", + "`plot` adds a data point to the figure; in this example, you should see a red square and a blue circle representing the number of bikes at each station." + ] + }, + { + "cell_type": "code", + "execution_count": 308, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "newfig()\n", + "plot(bikeshare.olin, 'rs-')\n", + "plot(bikeshare.wellesley, 'bo-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use the operators `+=` and `-=` to increase and decrease the system variables. The following lines move a bike from Olin to Wellesley." + ] + }, + { + "cell_type": "code", + "execution_count": 309, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 309, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin -= 1\n", + "bikeshare.wellesley += 1\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the following lines plot the updated state of the system. You should see two new data points with lines connecting them to the old data points." + ] + }, + { + "cell_type": "code", + "execution_count": 310, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "plot(bikeshare.olin, 'rs-')\n", + "plot(bikeshare.wellesley, 'bo-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** In the cell below, write a few lines of code to move a bike from Wellesley to Olin and plot the updated state." + ] + }, + { + "cell_type": "code", + "execution_count": 311, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare.olin -= 1\n", + "bikeshare.wellesley += 1\n", + "\n", + "plot(bikeshare.olin, 'rs-')\n", + "plot(bikeshare.wellesley, 'bo-')" + ] + }, + { + "cell_type": "code", + "execution_count": 312, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "plot(bikeshare.olin, 'rs-')\n", + "plot(bikeshare.wellesley, 'bo-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Functions\n", + "\n", + "Now we can take the code we've written so far and encapsulate it in functions." + ] + }, + { + "cell_type": "code", + "execution_count": 313, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def bike_to_wellesley():\n", + " bikeshare.olin -= 1\n", + " bikeshare.wellesley += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you define a function, it doesn't run the statements inside the function, yet." + ] + }, + { + "cell_type": "code", + "execution_count": 314, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_state():\n", + " plot(bikeshare.olin, 'rs-', label='Olin')\n", + " plot(bikeshare.wellesley, 'bo-', label='Wellesley')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now when we run the functions, it runs the statements inside." + ] + }, + { + "cell_type": "code", + "execution_count": 315, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin7
wellesley5
\n", + "
" + ], + "text/plain": [ + "olin 7\n", + "wellesley 5\n", + "dtype: int64" + ] + }, + "execution_count": 315, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_wellesley()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should see two more data points that represent the current state of the system. If the figure is embedded in the notebook, you might have to scroll up to see the change.\n", + "\n", + "One common error is to omit the parentheses, which has the effect of looking up the function, but not running it." + ] + }, + { + "cell_type": "code", + "execution_count": 316, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bike_to_wellesley()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The output indicates that `bike_to_wellesley` is a function defined in a \"namespace\" called `__main__`, but you don't have to understand what that means." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Define a function called `bike_to_olin` that moves a bike from Wellesley to Olin. Run the new function and print or plot the results to confirm that it works." + ] + }, + { + "cell_type": "code", + "execution_count": 317, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin7
wellesley5
\n", + "
" + ], + "text/plain": [ + "olin 7\n", + "wellesley 5\n", + "dtype: int64" + ] + }, + "execution_count": 317, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def bike_to_olin():\n", + " bikeshare.olin += 1\n", + " bikeshare.wellesley -= 1\n", + "bike_to_olin()\n", + "plot(bikeshare.olin, 'rs-', label='Olin')\n", + "plot(bikeshare.wellesley, 'bo-', label='Wellesley')\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we go on, let's start with a new state object and a new plot." + ] + }, + { + "cell_type": "code", + "execution_count": 299, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since we have two similar functions, we can create a new function, `move_bike` that takes a parameter `n`, which indicates how many bikes are moving, and in which direction." + ] + }, + { + "cell_type": "code", + "execution_count": 300, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(n):\n", + " bikeshare.olin -= n\n", + " bikeshare.wellesley += n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `move_bike` to write simpler versions of the other functions." + ] + }, + { + "cell_type": "code", + "execution_count": 301, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def bike_to_wellesley():\n", + " move_bike(1)\n", + " \n", + "def bike_to_olin():\n", + " move_bike(-1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we define these functions, we replace the old definitions with the new ones.\n", + "\n", + "Now we can test them and update the figure." + ] + }, + { + "cell_type": "code", + "execution_count": 302, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 302, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_wellesley()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, each time you run `plot_state` you should see changes in the figure." + ] + }, + { + "cell_type": "code", + "execution_count": 303, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 303, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_olin()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this point, `move_bike` is complicated enough that we should add some documentation. The text in triple-quotation marks is in English, not Python. It doesn't do anything when the program runs, but it helps people understand what this function does and how to use it." + ] + }, + { + "cell_type": "code", + "execution_count": 304, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(n):\n", + " \"\"\"Move bikes.\n", + " \n", + " n: number of bikes: positive moves from Olin to Wellesley;\n", + " negative moves from Wellesley to Olin\n", + " \"\"\"\n", + " bikeshare.olin -= n\n", + " bikeshare.wellesley += n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whenever you make a figure, you should put labels on the axes to explain what they mean and what units they are measured in. Here's how:" + ] + }, + { + "cell_type": "code", + "execution_count": 305, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, you might have to scroll up to see the effect.\n", + "\n", + "And you can save figures as files; the suffix of the filename indicates the format you want. This example saves the current figure in a PDF file." + ] + }, + { + "cell_type": "code", + "execution_count": 318, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap01_fig01.pdf\n" + ] + } + ], + "source": [ + "savefig('chap01_fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The following function definitions start with print statements so they display messages when they run. Run each of these functions (with appropriate arguments) and confirm that they do what you expect.\n", + "\n", + "Adding print statements like this to functions is a useful debugging technique. Keep it in mind!" + ] + }, + { + "cell_type": "code", + "execution_count": 319, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike_debug(n):\n", + " print('Running move_bike_debug with argument', n)\n", + " bikeshare.olin -= n\n", + " bikeshare.wellesley += n\n", + " \n", + "def bike_to_wellesley_debug():\n", + " print('Running bike_to_wellesley_debug')\n", + " move_bike_debug(1)\n", + " \n", + "def bike_to_olin_debug():\n", + " print('Running bike_to_olin_debug')\n", + " move_bike_debug(-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 320, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running move_bike_debug with argument 1\n" + ] + } + ], + "source": [ + "move_bike_debug(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 321, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running bike_to_wellesley_debug\n", + "Running move_bike_debug with argument 1\n" + ] + } + ], + "source": [ + "bike_to_wellesley_debug()" + ] + }, + { + "cell_type": "code", + "execution_count": 322, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running bike_to_olin_debug\n", + "Running move_bike_debug with argument -1\n" + ] + } + ], + "source": [ + "bike_to_olin_debug()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conditionals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The function `flip` takes a probability and returns either `True` or `False`, which are special values defined by Python.\n", + "\n", + "In the following example, the probability is 0.7 or 70%. If you run this cell several times, you should get `True` about 70% of the time and `False` about 30%." + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "flip(0.7)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Modify the argument in the previous cell and see what effect it has.\n", + "\n", + "In the following example, we use `flip` as part of an if statement. If the result from `flip` is `True`, we print `heads`; otherwise we do nothing." + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "if flip(0.7):\n", + " print('heads')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With an else clause, we can print heads or tails depending on whether `flip` returns `True` or `False`." + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "heads\n" + ] + } + ], + "source": [ + "if flip(0.7):\n", + " print('heads')\n", + "else:\n", + " print('tails')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's get back to the bikeshare system. Again let's start with a new `System` object and a new plot." + ] + }, + { + "cell_type": "code", + "execution_count": 359, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose that in any given minute, there is a 70% chance that a student picks up a bike at Olin and rides to Wellesley. We can simulate that like this." + ] + }, + { + "cell_type": "code", + "execution_count": 360, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 360, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if flip(0.7):\n", + " bike_to_wellesley()\n", + " print('Moving a bike to Wellesley')\n", + "\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And maybe at the same time, there is also a 60% chance that a student at Wellesley rides to Olin." + ] + }, + { + "cell_type": "code", + "execution_count": 361, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 361, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if flip(0.6):\n", + " bike_to_olin()\n", + " print('Moving a bike to Olin')\n", + "\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can wrap that code in a function called `step` that simulates one time step. In any given minute, a student might ride from Olin to Wellesley, from Wellesley to Olin, or both, or neither, depending on the results of `flip`." + ] + }, + { + "cell_type": "code", + "execution_count": 352, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step():\n", + " if flip(0.7):\n", + " bike_to_wellesley()\n", + " print('Moving a bike to Wellesley')\n", + " \n", + " if flip(0.6):\n", + " bike_to_olin()\n", + " print('Moving a bike to Olin')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you run `step` a few times, it should update the current figure. In each time step, the number of bikes at each location might go up, down, or stay the same." + ] + }, + { + "cell_type": "code", + "execution_count": 362, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Moving a bike to Olin\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin11
wellesley1
\n", + "
" + ], + "text/plain": [ + "olin 11\n", + "wellesley 1\n", + "dtype: int64" + ] + }, + "execution_count": 362, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "step()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function labels the axes and adds a legend to the figure." + ] + }, + { + "cell_type": "code", + "execution_count": 365, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def decorate(): \n", + " legend(loc='best')\n", + " label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, when you define a function, it has no effect until you run it." + ] + }, + { + "cell_type": "code", + "execution_count": 366, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "decorate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Change the argument of `legend` to `'random string'` and run `decorate` again. You should get an error message that lists the valid location where you can put the legend." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again let's start with a new `System` object and a new plot." + ] + }, + { + "cell_type": "code", + "execution_count": 367, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can make `step` more general by adding parameters. Because these parameters have default values, they are optional." + ] + }, + { + "cell_type": "code", + "execution_count": 368, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step(p1=0.5, p2=0.5):\n", + " print('p1 ->', p1)\n", + " print('p2 ->', p2)\n", + " if flip(p1):\n", + " bike_to_wellesley()\n", + " \n", + " if flip(p2):\n", + " bike_to_olin()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I added print statements, so each time we run `step` we can see the arguments.\n", + "\n", + "If you provide no arguments, you get the default values:" + ] + }, + { + "cell_type": "code", + "execution_count": 369, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.5\n", + "p2 -> 0.5\n" + ] + } + ], + "source": [ + "step()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you provide one argument, it overrides the first parameter." + ] + }, + { + "cell_type": "code", + "execution_count": 370, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.5\n" + ] + } + ], + "source": [ + "step(0.4)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you provide two arguments, they override both." + ] + }, + { + "cell_type": "code", + "execution_count": 371, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(0.4, 0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can specify the names of the parameters you want to override." + ] + }, + { + "cell_type": "code", + "execution_count": 372, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(p1=0.4, p2=0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which means you can override the second parameter and use the default for the first." + ] + }, + { + "cell_type": "code", + "execution_count": 373, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.5\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(p2=0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can combine both forms, but it is not very common:" + ] + }, + { + "cell_type": "code", + "execution_count": 374, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(0.4, p2=0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One reason it's not common is that it's error prone. The following example causes an error." + ] + }, + { + "cell_type": "code", + "execution_count": 375, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you remove the # at the beginning of the next line and run it, you get\n", + "# SyntaxError: positional argument follows keyword argument\n", + "\n", + "#step(p1=0.4, 0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the error message, you might infer that arguments like `step(0.4, 0.2)` are called \"positional\" and arguments like `step(p1=0.4, p2=0.2)` are called \"keyword arguments\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a version of `decorate` that takes an optional parameter named `loc` with default value `'best'`. It should pass the value of `loc` along as an argument to `legend.` Test your function with different values of `loc`. [You can see the list of legal values here](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.legend)." + ] + }, + { + "cell_type": "code", + "execution_count": 376, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def decorate(loc = 'best'): \n", + " legend(loc = 'best')\n", + " label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "code", + "execution_count": 377, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "decorate(loc = 'best')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## For loop" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we go on, I'll redefine `step` without the print statements." + ] + }, + { + "cell_type": "code", + "execution_count": 378, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step(p1=0.5, p2=0.5):\n", + " if flip(p1):\n", + " bike_to_wellesley()\n", + " \n", + " if flip(p2):\n", + " bike_to_olin()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And let's start again with a new `System` object and a new figure." + ] + }, + { + "cell_type": "code", + "execution_count": 379, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()\n", + "decorate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use a for loop to move 4 bikes from Olin to Wellesley." + ] + }, + { + "cell_type": "code", + "execution_count": 380, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i in range(4):\n", + " bike_to_wellesley()\n", + " plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or we can simulate 4 random time steps." + ] + }, + { + "cell_type": "code", + "execution_count": 381, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i in range(4):\n", + " step()\n", + " plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If each step corresponds to a minute, we can simulate the rest of the hour like this." + ] + }, + { + "cell_type": "code", + "execution_count": 382, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i in range(52):\n", + " step(p1=0.4, p2=0.2)\n", + " plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Combine the examples from the previous two sections to write a function named `run_steps` that takes three parameters, named `num_steps`, `p1`, and `p2`. It should use a for loop to run `step` the number of times specified by `num_steps`, passing along the specified values of `p1` and `p2`. After each step, it should plot the updated state.\n", + "\n", + "Test your function by creating a new `System` object, creating a new figure, and running `run_steps`." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'plot_state' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mbikeshare\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSystem\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0molin\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwellesley\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mnewfig\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mplot_state\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 8\u001b[0m \u001b[0mdecorate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[0mrun_steps\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'plot_state' is not defined" + ] + } + ], + "source": [ + " def run_steps(num_steps = 5, p1 = .5, p2 = .5):\n", + " for i in range(num_steps):\n", + " step(p1, p2)\n", + " plot_state()\n", + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()\n", + "decorate()\n", + "run_steps()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "heads\n", + "tails\n", + "heads\n", + "heads\n", + "heads\n", + "tails\n", + "heads\n", + "heads\n", + "heads 6\n", + "tails 2\n", + "dtype: int64\n" + ] + }, + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "penny = System(heads=0, tails=0)\n", + "def flip_count(n,p):\n", + " for i in range (n):\n", + " if flip(p):\n", + " penny.heads +=1\n", + " print ('heads')\n", + " else:\n", + " penny.tails +=1\n", + " print ('tails')\n", + "flip_count(8,0.5)\n", + "print(penny)\n", + "8#just practice from class, not part of assignment" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "penny = System(heads=0, tails=0)\n", + "def update_heads(penny, n):\n", + " penny.heads += n\n", + "def flip_until_tails(system, p):\n", + " print(p)\n", + " for i in range (100):\n", + " if flip(p):\n", + " update_heads(system, 1)\n", + " print ('heads')\n", + " else:\n", + " system.tails += 1\n", + " print('tails')\n", + " return" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5\n", + "heads\n", + "heads\n", + "heads\n", + "tails\n" + ] + } + ], + "source": [ + "flip_until_tails(penny, .5)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
heads3
tails1
\n", + "
" + ], + "text/plain": [ + "heads 3\n", + "tails 1\n", + "dtype: int64" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "penny" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap03-fig01.pdf b/code/chap03-fig01.pdf new file mode 100644 index 00000000..2269ae06 Binary files /dev/null and b/code/chap03-fig01.pdf differ diff --git a/code/chap03-fig02.pdf b/code/chap03-fig02.pdf new file mode 100644 index 00000000..366d3d90 Binary files /dev/null and b/code/chap03-fig02.pdf differ diff --git a/code/chap03-fig03.pdf b/code/chap03-fig03.pdf new file mode 100644 index 00000000..fea587fa Binary files /dev/null and b/code/chap03-fig03.pdf differ diff --git a/code/chap03-fig04.pdf b/code/chap03-fig04.pdf new file mode 100644 index 00000000..e7136092 Binary files /dev/null and b/code/chap03-fig04.pdf differ diff --git a/code/chap03-fig05.pdf b/code/chap03-fig05.pdf new file mode 100644 index 00000000..34f558fb Binary files /dev/null and b/code/chap03-fig05.pdf differ diff --git a/code/chap03.ipynb b/code/chap03.ipynb index f692fa8b..86efd7da 100644 --- a/code/chap03.ipynb +++ b/code/chap03.ipynb @@ -89,6 +89,7 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -108,6 +109,7 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -148,8 +150,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 7, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 8, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "table2" @@ -164,8 +176,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 8, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 9, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "census = table2.census\n", @@ -183,8 +205,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 9, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 10, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "census.values" @@ -199,8 +231,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 10, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 11, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "census.index" @@ -221,8 +263,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 11, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 12, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "type(table2)" @@ -230,8 +282,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 12, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 13, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "type(census)" @@ -239,8 +301,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 13, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 14, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "type(census.index)" @@ -248,8 +320,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 14, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 15, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "type(census.values)" @@ -298,6 +380,7 @@ "cell_type": "code", "execution_count": 17, "metadata": { + "collapsed": true, "scrolled": false }, "outputs": [], @@ -347,8 +430,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 19, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 20, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "max(abs(census - un) / un) * 100" @@ -369,6 +462,7 @@ "cell_type": "code", "execution_count": 21, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -380,6 +474,7 @@ "cell_type": "code", "execution_count": 22, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -391,6 +486,7 @@ "cell_type": "code", "execution_count": 23, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -400,8 +496,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 23, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 24, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -423,8 +529,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 24, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 25, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "census[1950]" @@ -439,8 +555,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 25, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 26, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "census[2015]" @@ -455,8 +581,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 26, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 27, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "first_year = census.index[0]\n", @@ -475,8 +611,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 27, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 28, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "total_growth = census[last_year] - census[first_year]\n", @@ -512,8 +658,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 29, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 30, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "results[1950] = census[1950]\n", @@ -548,8 +704,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 31, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 32, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "newfig()\n", @@ -579,8 +745,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 32, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 33, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -702,8 +878,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 37, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 38, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "run_simulation1(system)\n", @@ -719,8 +905,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 38, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 39, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "help(decorate)" @@ -730,6 +926,7 @@ "cell_type": "code", "execution_count": 40, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -761,8 +958,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 41, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 42, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -834,8 +1041,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 44, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 45, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "run_simulation2(system)\n", @@ -874,8 +1091,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 46, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 47, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -926,8 +1153,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 48, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 49, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "update_func1" @@ -942,8 +1179,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 49, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 50, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "type(update_func1)" @@ -1006,8 +1253,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 52, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 53, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "plot_results(system, title='Proportional model, factored')" @@ -1064,8 +1321,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 54, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 55, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "system.alpha = system.birth_rate - system.death_rate\n", @@ -1099,8 +1366,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 56, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 57, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -1150,8 +1427,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 58, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 59, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "system.alpha = 0.025\n", @@ -1192,8 +1479,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 60, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 61, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "newfig()\n", @@ -1232,8 +1529,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 62, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 63, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "-system.alpha / system.beta" @@ -1259,8 +1566,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 63, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 64, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -1279,8 +1596,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 65, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 66, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -1302,8 +1629,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 66, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 67, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "table1 = tables[1]\n", @@ -1319,8 +1656,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 67, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 68, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "table1.tail()" @@ -1402,6 +1749,7 @@ "cell_type": "code", "execution_count": 72, "metadata": { + "collapsed": true, "scrolled": false }, "outputs": [], @@ -1422,8 +1770,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 72, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 73, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "newfig()\n", @@ -1455,8 +1813,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 74, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 75, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" @@ -1464,8 +1832,18 @@ }, { "cell_type": "code", +<<<<<<< HEAD +<<<<<<< HEAD + "execution_count": 75, + "metadata": { + "collapsed": true + }, +======= +======= +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "execution_count": 76, "metadata": {}, +>>>>>>> 545f93a6710b0dad19a3e391f04c72c290c12945 "outputs": [], "source": [ "# Solution goes here" diff --git a/code/chap03mine.ipynb b/code/chap03mine.ipynb new file mode 100644 index 00000000..20785bc4 --- /dev/null +++ b/code/chap03mine.ipynb @@ -0,0 +1,4337 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 3: Explain\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# To switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pandas is a module that provides tools for reading and processing data. The `read_html` reads a web page from a file or the Internet and creates one DataFrame for each table on the page." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from pandas import read_html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The data directory contains a downloaded copy of https://en.wikipedia.org/wiki/World_population_estimates" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "filename = 'data/World_population_estimates.html'\n", + "tables = read_html(filename, header=0, index_col=0, decimal='M')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`tables` is a sequence of DataFrame objects. We can select the DataFrame we want using the bracket operator. The tables are numbered from 0, so `table2` is actually the third table on the page.\n", + "\n", + "`head` selects the header and the first five rows." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
United States Census Bureau (2015)[18]Population Reference Bureau (1973–2015)[6]United Nations Department of Economic and Social Affairs (2015)[7]Maddison (2008)[8]HYDE (2007)[15]Tanton (1994)[9]Biraben (1980)[10]McEvedy & Jones (1978)[11]Thomlinson (1975)[12]Durand (1974)[13]Clark (1967)[14]
Year
195025576286542.516000e+0925251490002.544000e+092.527960e+092.400000e+092.527000e+092.500000e+092.400000e+09NaN2.486000e+09
19512594939877NaN25728509172.571663e+09NaNNaNNaNNaNNaNNaNNaN
19522636772306NaN26192920682.617949e+09NaNNaNNaNNaNNaNNaNNaN
19532682053389NaN26658653922.665959e+09NaNNaNNaNNaNNaNNaNNaN
19542730228104NaN27131720272.716927e+09NaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " United States Census Bureau (2015)[18] \\\n", + "Year \n", + "1950 2557628654 \n", + "1951 2594939877 \n", + "1952 2636772306 \n", + "1953 2682053389 \n", + "1954 2730228104 \n", + "\n", + " Population Reference Bureau (1973–2015)[6] \\\n", + "Year \n", + "1950 2.516000e+09 \n", + "1951 NaN \n", + "1952 NaN \n", + "1953 NaN \n", + "1954 NaN \n", + "\n", + " United Nations Department of Economic and Social Affairs (2015)[7] \\\n", + "Year \n", + "1950 2525149000 \n", + "1951 2572850917 \n", + "1952 2619292068 \n", + "1953 2665865392 \n", + "1954 2713172027 \n", + "\n", + " Maddison (2008)[8] HYDE (2007)[15] Tanton (1994)[9] \\\n", + "Year \n", + "1950 2.544000e+09 2.527960e+09 2.400000e+09 \n", + "1951 2.571663e+09 NaN NaN \n", + "1952 2.617949e+09 NaN NaN \n", + "1953 2.665959e+09 NaN NaN \n", + "1954 2.716927e+09 NaN NaN \n", + "\n", + " Biraben (1980)[10] McEvedy & Jones (1978)[11] Thomlinson (1975)[12] \\\n", + "Year \n", + "1950 2.527000e+09 2.500000e+09 2.400000e+09 \n", + "1951 NaN NaN NaN \n", + "1952 NaN NaN NaN \n", + "1953 NaN NaN NaN \n", + "1954 NaN NaN NaN \n", + "\n", + " Durand (1974)[13] Clark (1967)[14] \n", + "Year \n", + "1950 NaN 2.486000e+09 \n", + "1951 NaN NaN \n", + "1952 NaN NaN \n", + "1953 NaN NaN \n", + "1954 NaN NaN " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table2 = tables[2]\n", + "table2.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`tail` selects the last five rows." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
United States Census Bureau (2015)[18]Population Reference Bureau (1973–2015)[6]United Nations Department of Economic and Social Affairs (2015)[7]Maddison (2008)[8]HYDE (2007)[15]Tanton (1994)[9]Biraben (1980)[10]McEvedy & Jones (1978)[11]Thomlinson (1975)[12]Durand (1974)[13]Clark (1967)[14]
Year
201169440555836.986951e+096997998760NaNNaNNaNNaNNaNNaNNaNNaN
201270223492837.057075e+097080072417NaNNaNNaNNaNNaNNaNNaNNaN
201371010278957.136796e+097162119434NaNNaNNaNNaNNaNNaNNaNNaN
201471787228937.238184e+097243784000NaNNaNNaNNaNNaNNaNNaNNaN
201572564900117.336435e+097349472000NaNNaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " United States Census Bureau (2015)[18] \\\n", + "Year \n", + "2011 6944055583 \n", + "2012 7022349283 \n", + "2013 7101027895 \n", + "2014 7178722893 \n", + "2015 7256490011 \n", + "\n", + " Population Reference Bureau (1973–2015)[6] \\\n", + "Year \n", + "2011 6.986951e+09 \n", + "2012 7.057075e+09 \n", + "2013 7.136796e+09 \n", + "2014 7.238184e+09 \n", + "2015 7.336435e+09 \n", + "\n", + " United Nations Department of Economic and Social Affairs (2015)[7] \\\n", + "Year \n", + "2011 6997998760 \n", + "2012 7080072417 \n", + "2013 7162119434 \n", + "2014 7243784000 \n", + "2015 7349472000 \n", + "\n", + " Maddison (2008)[8] HYDE (2007)[15] Tanton (1994)[9] \\\n", + "Year \n", + "2011 NaN NaN NaN \n", + "2012 NaN NaN NaN \n", + "2013 NaN NaN NaN \n", + "2014 NaN NaN NaN \n", + "2015 NaN NaN NaN \n", + "\n", + " Biraben (1980)[10] McEvedy & Jones (1978)[11] Thomlinson (1975)[12] \\\n", + "Year \n", + "2011 NaN NaN NaN \n", + "2012 NaN NaN NaN \n", + "2013 NaN NaN NaN \n", + "2014 NaN NaN NaN \n", + "2015 NaN NaN NaN \n", + "\n", + " Durand (1974)[13] Clark (1967)[14] \n", + "Year \n", + "2011 NaN NaN \n", + "2012 NaN NaN \n", + "2013 NaN NaN \n", + "2014 NaN NaN \n", + "2015 NaN NaN " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table2.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Long column names are awkard to work with, but we can replace them with abbreviated names." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "table2.columns = ['census', 'prb', 'un', 'maddison', \n", + " 'hyde', 'tanton', 'biraben', 'mj', \n", + " 'thomlinson', 'durand', 'clark']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the DataFrame looks like now. \n", + "\n", + "Some of the values use scientific notation; for example, `2.544000e+09` is shorthand for $2.544 \\cdot 10^9$ or 2.544 billion.\n", + "\n", + "`NaN` is a special value that indicates missing data." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
censusprbunmaddisonhydetantonbirabenmjthomlinsondurandclark
Year
195025576286542.516000e+0925251490002.544000e+092.527960e+092.400000e+092.527000e+092.500000e+092.400000e+09NaN2.486000e+09
19512594939877NaN25728509172.571663e+09NaNNaNNaNNaNNaNNaNNaN
19522636772306NaN26192920682.617949e+09NaNNaNNaNNaNNaNNaNNaN
19532682053389NaN26658653922.665959e+09NaNNaNNaNNaNNaNNaNNaN
19542730228104NaN27131720272.716927e+09NaNNaNNaNNaNNaNNaNNaN
19552782098943NaN27616509812.769074e+09NaNNaNNaNNaNNaNNaNNaN
19562835299673NaN28115720312.822502e+09NaNNaNNaNNaNNaNNaNNaN
19572891349717NaN28630427952.879934e+09NaNNaNNaNNaNNaNNaNNaN
19582948137248NaN29160301672.939254e+09NaNNaNNaNNaNNaNNaNNaN
19593000716593NaN29703958142.995909e+09NaNNaNNaNNaNNaNNaNNaN
19603043001508NaN30260029423.041507e+093.042000e+09NaNNaNNaNNaNNaNNaN
19613083966929NaN30828302663.082161e+09NaNNaNNaNNaNNaNNaNNaN
19623140093217NaN31410715313.135787e+09NaNNaNNaNNaNNaNNaN3.036000e+09
19633209827882NaN32011782773.201354e+09NaNNaNNaNNaNNaNNaNNaN
19643281201306NaN32637388323.266477e+09NaNNaNNaNNaNNaNNaNNaN
19653350425793NaN33291224793.333138e+09NaNNaNNaNNaNNaNNaNNaN
19663420677923NaN33974752473.402224e+09NaNNaNNaNNaNNaNNaN3.288000e+09
19673490333715NaN34685217243.471464e+09NaNNaNNaNNaNNaNNaNNaN
19683562313822NaN35416748913.543086e+09NaNNaNNaNNaNNaNNaNNaN
19693637159050NaN36161087493.615743e+09NaNNaNNaNNaNNaNNaNNaN
19703712697742NaN36911726163.691157e+093.710000e+09NaN3.637000e+09NaN3.600000e+093,600,000,000– 3,700,000,0003.632000e+09
19713790326948NaN37667543453.769818e+09NaNNaNNaNNaNNaNNaNNaN
19723866568653NaN38428736113.846499e+09NaNNaNNaNNaNNaNNaNNaN
19733942096442NaN39191823323.922793e+093.923000e+09NaNNaNNaNNaNNaN3.860000e+09
19744016608813NaN39953049223.997677e+09NaNNaNNaNNaNNaNNaNNaN
19754089083233NaN40710204344.070671e+09NaNNaNNaN3.900000e+094.000000e+09NaNNaN
19764160185010NaN41461358504.141445e+09NaNNaNNaNNaNNaNNaNNaN
19774232084578NaN42208167374.213539e+09NaNNaNNaNNaNNaNNaNNaN
19784304105753NaN42956648254.286317e+09NaNNaNNaNNaNNaNNaNNaN
19794379013942NaN43715278714.363144e+09NaNNaNNaNNaNNaNNaNNaN
....................................
19864940571232NaN49533767104.920968e+09NaNNaNNaNNaNNaNNaNNaN
19875027200492NaN50453158715.006672e+09NaNNaNNaNNaNNaNNaNNaN
19885114557167NaN51382146885.093306e+09NaNNaNNaNNaNNaNNaNNaN
19895201440110NaN52300000005.180540e+09NaNNaNNaNNaNNaNNaNNaN
19905288955934NaN53208166675.269029e+095.308000e+09NaNNaNNaNNaNNaNNaN
19915371585922NaN54089087245.351922e+09NaNNaNNaNNaNNaNNaNNaN
19925456136278NaN54948995705.435722e+09NaNNaNNaNNaNNaNNaNNaN
19935538268316NaN55788651095.518127e+09NaNNaNNaNNaNNaNNaNNaN
19945618682132NaN56610863465.599396e+09NaNNaNNaNNaNNaNNaNNaN
199556992029855.760000e+0957418224125.681575e+09NaNNaNNaNNaNNaNNaNNaN
19965779440593NaN58210167505.762212e+09NaNNaNNaNNaNNaNNaNNaN
199758579725435.840000e+0958986883375.842122e+09NaNNaNNaNNaNNaNNaNNaN
19985935213248NaN59753036575.921366e+09NaNNaNNaNNaNNaNNaNNaN
19996012074922NaN60514780105.999622e+09NaNNaNNaNNaNNaNNaNNaN
200060885713836.067000e+0961277004286.076558e+096.145000e+09NaNNaN5.750000e+09NaNNaNNaN
200161652192476.137000e+0962041470266.154791e+09NaNNaNNaNNaNNaNNaNNaN
200262420163486.215000e+0962808538176.231704e+09NaNNaNNaNNaNNaNNaNNaN
200363185909566.314000e+0963579917496.308364e+09NaNNaNNaNNaNNaNNaNNaN
200463956995096.396000e+0964357055956.374056e+09NaNNaNNaNNaNNaNNaNNaN
200564730447326.477000e+0965140946056.462987e+09NaNNaNNaNNaNNaNNaNNaN
200665512635346.555000e+0965932279776.540214e+09NaNNaNNaNNaNNaNNaNNaN
200766299137596.625000e+0966731059376.616689e+09NaNNaNNaNNaNNaNNaNNaN
200867090497806.705000e+0967536492286.694832e+09NaNNaNNaNNaNNaNNaNNaN
200967882143946.809972e+0968347219336.764086e+09NaNNaNNaNNaNNaNNaNNaN
201068663323586.892319e+096916183482NaNNaNNaNNaNNaNNaNNaNNaN
201169440555836.986951e+096997998760NaNNaNNaNNaNNaNNaNNaNNaN
201270223492837.057075e+097080072417NaNNaNNaNNaNNaNNaNNaNNaN
201371010278957.136796e+097162119434NaNNaNNaNNaNNaNNaNNaNNaN
201471787228937.238184e+097243784000NaNNaNNaNNaNNaNNaNNaNNaN
201572564900117.336435e+097349472000NaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

66 rows × 11 columns

\n", + "
" + ], + "text/plain": [ + " census prb un maddison hyde \\\n", + "Year \n", + "1950 2557628654 2.516000e+09 2525149000 2.544000e+09 2.527960e+09 \n", + "1951 2594939877 NaN 2572850917 2.571663e+09 NaN \n", + "1952 2636772306 NaN 2619292068 2.617949e+09 NaN \n", + "1953 2682053389 NaN 2665865392 2.665959e+09 NaN \n", + "1954 2730228104 NaN 2713172027 2.716927e+09 NaN \n", + "1955 2782098943 NaN 2761650981 2.769074e+09 NaN \n", + "1956 2835299673 NaN 2811572031 2.822502e+09 NaN \n", + "1957 2891349717 NaN 2863042795 2.879934e+09 NaN \n", + "1958 2948137248 NaN 2916030167 2.939254e+09 NaN \n", + "1959 3000716593 NaN 2970395814 2.995909e+09 NaN \n", + "1960 3043001508 NaN 3026002942 3.041507e+09 3.042000e+09 \n", + "1961 3083966929 NaN 3082830266 3.082161e+09 NaN \n", + "1962 3140093217 NaN 3141071531 3.135787e+09 NaN \n", + "1963 3209827882 NaN 3201178277 3.201354e+09 NaN \n", + "1964 3281201306 NaN 3263738832 3.266477e+09 NaN \n", + "1965 3350425793 NaN 3329122479 3.333138e+09 NaN \n", + "1966 3420677923 NaN 3397475247 3.402224e+09 NaN \n", + "1967 3490333715 NaN 3468521724 3.471464e+09 NaN \n", + "1968 3562313822 NaN 3541674891 3.543086e+09 NaN \n", + "1969 3637159050 NaN 3616108749 3.615743e+09 NaN \n", + "1970 3712697742 NaN 3691172616 3.691157e+09 3.710000e+09 \n", + "1971 3790326948 NaN 3766754345 3.769818e+09 NaN \n", + "1972 3866568653 NaN 3842873611 3.846499e+09 NaN \n", + "1973 3942096442 NaN 3919182332 3.922793e+09 3.923000e+09 \n", + "1974 4016608813 NaN 3995304922 3.997677e+09 NaN \n", + "1975 4089083233 NaN 4071020434 4.070671e+09 NaN \n", + "1976 4160185010 NaN 4146135850 4.141445e+09 NaN \n", + "1977 4232084578 NaN 4220816737 4.213539e+09 NaN \n", + "1978 4304105753 NaN 4295664825 4.286317e+09 NaN \n", + "1979 4379013942 NaN 4371527871 4.363144e+09 NaN \n", + "... ... ... ... ... ... \n", + "1986 4940571232 NaN 4953376710 4.920968e+09 NaN \n", + "1987 5027200492 NaN 5045315871 5.006672e+09 NaN \n", + "1988 5114557167 NaN 5138214688 5.093306e+09 NaN \n", + "1989 5201440110 NaN 5230000000 5.180540e+09 NaN \n", + "1990 5288955934 NaN 5320816667 5.269029e+09 5.308000e+09 \n", + "1991 5371585922 NaN 5408908724 5.351922e+09 NaN \n", + "1992 5456136278 NaN 5494899570 5.435722e+09 NaN \n", + "1993 5538268316 NaN 5578865109 5.518127e+09 NaN \n", + "1994 5618682132 NaN 5661086346 5.599396e+09 NaN \n", + "1995 5699202985 5.760000e+09 5741822412 5.681575e+09 NaN \n", + "1996 5779440593 NaN 5821016750 5.762212e+09 NaN \n", + "1997 5857972543 5.840000e+09 5898688337 5.842122e+09 NaN \n", + "1998 5935213248 NaN 5975303657 5.921366e+09 NaN \n", + "1999 6012074922 NaN 6051478010 5.999622e+09 NaN \n", + "2000 6088571383 6.067000e+09 6127700428 6.076558e+09 6.145000e+09 \n", + "2001 6165219247 6.137000e+09 6204147026 6.154791e+09 NaN \n", + "2002 6242016348 6.215000e+09 6280853817 6.231704e+09 NaN \n", + "2003 6318590956 6.314000e+09 6357991749 6.308364e+09 NaN \n", + "2004 6395699509 6.396000e+09 6435705595 6.374056e+09 NaN \n", + "2005 6473044732 6.477000e+09 6514094605 6.462987e+09 NaN \n", + "2006 6551263534 6.555000e+09 6593227977 6.540214e+09 NaN \n", + "2007 6629913759 6.625000e+09 6673105937 6.616689e+09 NaN \n", + "2008 6709049780 6.705000e+09 6753649228 6.694832e+09 NaN \n", + "2009 6788214394 6.809972e+09 6834721933 6.764086e+09 NaN \n", + "2010 6866332358 6.892319e+09 6916183482 NaN NaN \n", + "2011 6944055583 6.986951e+09 6997998760 NaN NaN \n", + "2012 7022349283 7.057075e+09 7080072417 NaN NaN \n", + "2013 7101027895 7.136796e+09 7162119434 NaN NaN \n", + "2014 7178722893 7.238184e+09 7243784000 NaN NaN \n", + "2015 7256490011 7.336435e+09 7349472000 NaN NaN \n", + "\n", + " tanton biraben mj thomlinson \\\n", + "Year \n", + "1950 2.400000e+09 2.527000e+09 2.500000e+09 2.400000e+09 \n", + "1951 NaN NaN NaN NaN \n", + "1952 NaN NaN NaN NaN \n", + "1953 NaN NaN NaN NaN \n", + "1954 NaN NaN NaN NaN \n", + "1955 NaN NaN NaN NaN \n", + "1956 NaN NaN NaN NaN \n", + "1957 NaN NaN NaN NaN \n", + "1958 NaN NaN NaN NaN \n", + "1959 NaN NaN NaN NaN \n", + "1960 NaN NaN NaN NaN \n", + "1961 NaN NaN NaN NaN \n", + "1962 NaN NaN NaN NaN \n", + "1963 NaN NaN NaN NaN \n", + "1964 NaN NaN NaN NaN \n", + "1965 NaN NaN NaN NaN \n", + "1966 NaN NaN NaN NaN \n", + "1967 NaN NaN NaN NaN \n", + "1968 NaN NaN NaN NaN \n", + "1969 NaN NaN NaN NaN \n", + "1970 NaN 3.637000e+09 NaN 3.600000e+09 \n", + "1971 NaN NaN NaN NaN \n", + "1972 NaN NaN NaN NaN \n", + "1973 NaN NaN NaN NaN \n", + "1974 NaN NaN NaN NaN \n", + "1975 NaN NaN 3.900000e+09 4.000000e+09 \n", + "1976 NaN NaN NaN NaN \n", + "1977 NaN NaN NaN NaN \n", + "1978 NaN NaN NaN NaN \n", + "1979 NaN NaN NaN NaN \n", + "... ... ... ... ... \n", + "1986 NaN NaN NaN NaN \n", + "1987 NaN NaN NaN NaN \n", + "1988 NaN NaN NaN NaN \n", + "1989 NaN NaN NaN NaN \n", + "1990 NaN NaN NaN NaN \n", + "1991 NaN NaN NaN NaN \n", + "1992 NaN NaN NaN NaN \n", + "1993 NaN NaN NaN NaN \n", + "1994 NaN NaN NaN NaN \n", + "1995 NaN NaN NaN NaN \n", + "1996 NaN NaN NaN NaN \n", + "1997 NaN NaN NaN NaN \n", + "1998 NaN NaN NaN NaN \n", + "1999 NaN NaN NaN NaN \n", + "2000 NaN NaN 5.750000e+09 NaN \n", + "2001 NaN NaN NaN NaN \n", + "2002 NaN NaN NaN NaN \n", + "2003 NaN NaN NaN NaN \n", + "2004 NaN NaN NaN NaN \n", + "2005 NaN NaN NaN NaN \n", + "2006 NaN NaN NaN NaN \n", + "2007 NaN NaN NaN NaN \n", + "2008 NaN NaN NaN NaN \n", + "2009 NaN NaN NaN NaN \n", + "2010 NaN NaN NaN NaN \n", + "2011 NaN NaN NaN NaN \n", + "2012 NaN NaN NaN NaN \n", + "2013 NaN NaN NaN NaN \n", + "2014 NaN NaN NaN NaN \n", + "2015 NaN NaN NaN NaN \n", + "\n", + " durand clark \n", + "Year \n", + "1950 NaN 2.486000e+09 \n", + "1951 NaN NaN \n", + "1952 NaN NaN \n", + "1953 NaN NaN \n", + "1954 NaN NaN \n", + "1955 NaN NaN \n", + "1956 NaN NaN \n", + "1957 NaN NaN \n", + "1958 NaN NaN \n", + "1959 NaN NaN \n", + "1960 NaN NaN \n", + "1961 NaN NaN \n", + "1962 NaN 3.036000e+09 \n", + "1963 NaN NaN \n", + "1964 NaN NaN \n", + "1965 NaN NaN \n", + "1966 NaN 3.288000e+09 \n", + "1967 NaN NaN \n", + "1968 NaN NaN \n", + "1969 NaN NaN \n", + "1970 3,600,000,000– 3,700,000,000 3.632000e+09 \n", + "1971 NaN NaN \n", + "1972 NaN NaN \n", + "1973 NaN 3.860000e+09 \n", + "1974 NaN NaN \n", + "1975 NaN NaN \n", + "1976 NaN NaN \n", + "1977 NaN NaN \n", + "1978 NaN NaN \n", + "1979 NaN NaN \n", + "... ... ... \n", + "1986 NaN NaN \n", + "1987 NaN NaN \n", + "1988 NaN NaN \n", + "1989 NaN NaN \n", + "1990 NaN NaN \n", + "1991 NaN NaN \n", + "1992 NaN NaN \n", + "1993 NaN NaN \n", + "1994 NaN NaN \n", + "1995 NaN NaN \n", + "1996 NaN NaN \n", + "1997 NaN NaN \n", + "1998 NaN NaN \n", + "1999 NaN NaN \n", + "2000 NaN NaN \n", + "2001 NaN NaN \n", + "2002 NaN NaN \n", + "2003 NaN NaN \n", + "2004 NaN NaN \n", + "2005 NaN NaN \n", + "2006 NaN NaN \n", + "2007 NaN NaN \n", + "2008 NaN NaN \n", + "2009 NaN NaN \n", + "2010 NaN NaN \n", + "2011 NaN NaN \n", + "2012 NaN NaN \n", + "2013 NaN NaN \n", + "2014 NaN NaN \n", + "2015 NaN NaN \n", + "\n", + "[66 rows x 11 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use dot notatio to select a column from a DataFrame. The result is a Series." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Year\n", + "1950 2557628654\n", + "1951 2594939877\n", + "1952 2636772306\n", + "1953 2682053389\n", + "1954 2730228104\n", + "1955 2782098943\n", + "1956 2835299673\n", + "1957 2891349717\n", + "1958 2948137248\n", + "1959 3000716593\n", + "1960 3043001508\n", + "1961 3083966929\n", + "1962 3140093217\n", + "1963 3209827882\n", + "1964 3281201306\n", + "1965 3350425793\n", + "1966 3420677923\n", + "1967 3490333715\n", + "1968 3562313822\n", + "1969 3637159050\n", + "1970 3712697742\n", + "1971 3790326948\n", + "1972 3866568653\n", + "1973 3942096442\n", + "1974 4016608813\n", + "1975 4089083233\n", + "1976 4160185010\n", + "1977 4232084578\n", + "1978 4304105753\n", + "1979 4379013942\n", + " ... \n", + "1986 4940571232\n", + "1987 5027200492\n", + "1988 5114557167\n", + "1989 5201440110\n", + "1990 5288955934\n", + "1991 5371585922\n", + "1992 5456136278\n", + "1993 5538268316\n", + "1994 5618682132\n", + "1995 5699202985\n", + "1996 5779440593\n", + "1997 5857972543\n", + "1998 5935213248\n", + "1999 6012074922\n", + "2000 6088571383\n", + "2001 6165219247\n", + "2002 6242016348\n", + "2003 6318590956\n", + "2004 6395699509\n", + "2005 6473044732\n", + "2006 6551263534\n", + "2007 6629913759\n", + "2008 6709049780\n", + "2009 6788214394\n", + "2010 6866332358\n", + "2011 6944055583\n", + "2012 7022349283\n", + "2013 7101027895\n", + "2014 7178722893\n", + "2015 7256490011\n", + "Name: census, Length: 66, dtype: int64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census = table2.census\n", + "census" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A Series object has two parts, `values` and `index`.\n", + "\n", + "The `values` part is an array." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2557628654, 2594939877, 2636772306, 2682053389, 2730228104,\n", + " 2782098943, 2835299673, 2891349717, 2948137248, 3000716593,\n", + " 3043001508, 3083966929, 3140093217, 3209827882, 3281201306,\n", + " 3350425793, 3420677923, 3490333715, 3562313822, 3637159050,\n", + " 3712697742, 3790326948, 3866568653, 3942096442, 4016608813,\n", + " 4089083233, 4160185010, 4232084578, 4304105753, 4379013942,\n", + " 4451362735, 4534410125, 4614566561, 4695736743, 4774569391,\n", + " 4856462699, 4940571232, 5027200492, 5114557167, 5201440110,\n", + " 5288955934, 5371585922, 5456136278, 5538268316, 5618682132,\n", + " 5699202985, 5779440593, 5857972543, 5935213248, 6012074922,\n", + " 6088571383, 6165219247, 6242016348, 6318590956, 6395699509,\n", + " 6473044732, 6551263534, 6629913759, 6709049780, 6788214394,\n", + " 6866332358, 6944055583, 7022349283, 7101027895, 7178722893,\n", + " 7256490011], dtype=int64)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census.values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `index` part is yet another kind of object, an `Int64Index`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960,\n", + " 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971,\n", + " 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982,\n", + " 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993,\n", + " 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,\n", + " 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015],\n", + " dtype='int64', name='Year')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census.index" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you ever wonder what kind of object a variable refers to, you can use the `type` function.\n", + "\n", + "The result indicates what type the object is, and the module where that type is defined.\n", + "\n", + "DataFrame, Series, and Int64Index are defined by Pandas.\n", + "\n", + "array is defined by NumPy." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(table2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(census)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.indexes.numeric.Int64Index" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(census.index)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(census.values)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This function plots the estimates generated by the US Censis and UN DESA, and labels the axes.\n", + "\n", + "`1e9` is scientific notation for $1 \\cdot 10^9$ or 1 billion." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_estimates(table):\n", + " \"\"\"Plot world population estimates.\n", + " \n", + " table: DataFrame with columns 'un' and 'census'\n", + " \"\"\"\n", + " un = table.un / 1e9\n", + " census = table.census / 1e9\n", + " \n", + " plot(census, ':', color='darkblue', label='US Census')\n", + " plot(un, '--', color='green', label='UN DESA')\n", + " \n", + " decorate(xlabel='Year',\n", + " ylabel='World population (billion)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can plot the estimates." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEPCAYAAACqZsSmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdUFdf6//H3oXepggg2BHuhqGAh9hqJJZoI9l7Sbkyu\nJvFrmteSxNi9aqyJMYmaYIlRkxi714YYxVCsKCpVeoczvz/8ebxcJB4UOJTntRZrwZ4zM88ofM6c\nmT17qxRFURBCCFGj6Om6ACGEEBVPwl8IIWogCX8hhKiBJPyFEKIGMtB1AdrIyckhLCwMBwcH9PX1\ndV2OEEJUeoWFhSQkJNCyZUtMTEyKLa8S4R8WFkZQUJCuyxBCiCrn22+/xcfHp1h7lQh/BwcH4OFB\nODk56bgaIYSo/GJjYwkKCtLk5/+qEuH/6FKPk5MTLi4uOq5GCCGqjpIulcsNXyGEqKLupd8jPjP+\nmdaV8BdCiCroRvINPj/5OUtPLyUlJ6XU60v4CyFEFROVFMWS/ywhKz+LpKwk1oWso7Qj9Uj4CyFE\nFeNg5oClsSUAlsaWjGg5ApVKVaptSPgLIUQVY2Nqw1u+b1HHzJVBtSfgWsu11NuQ8BdCiEouvzC/\n2GWd2ua1mdvtfaKvKGRm5pV6mxL+QghRiUWnRPPJ0U84dedUsWV6enoMHOjGwYO3Sr3dKtHPXwgh\nahq1oubX67+yO2I3akXNd5e/I/22JX06tSpyfd/KyphBg9xLvX0JfyGEqGSSs5PZdHETkYmRAGRm\n5XMjKpnY2FNYG9jj6+tc5PV6eqW72QsS/kIIUamE3g/l6z+/Jis/S9NWmGhD43t9MVVb8/33ETRt\naou1dfHB2kpDwl8IISqB3IJcdvy1g+PRxzVtKpWKfo370atnX+b/6xzJyTn0798IKyvj596fhL8Q\nQujYndQ7rL+wntiMWBQe9uqxNbVlgucE3O0eXs+fOLEVRkb6ODtblMk+K7S3z5kzZ2jSpMkTv0aP\nHl2RpVQ63bt3Z/Xq1Voty83NZfny5fTp04eWLVvSoUMHpk2bRlhY2FP3k5GRwdKlS+nXrx9t2rTB\n39+fmTNncvPmzTI7FiGE9tSKmjXn1xCbEUtuXiFXwpIwS27I3BfmaoIfoEGDWmUW/FDB4e/p6cmJ\nEyeKfC1atAg9PT0mTZpUkaVUae+//z4HDhzggw8+4MCBA2zYsAFTU1NGjhzJ9evXS1wvMTGRIUOG\ncOTIEWbOnMnPP//MsmXLSE9P59VXX+Xq1asVeBRCCAA9lR6j2owiK6uAP0MeYH+3M7mnvXkQV1i+\n+y3Xrf8PIyMjHBwcNF8mJiZ88cUXTJgwgS5dulRkKVVWRkYG+/bt45133sHf3x8XFxdatmzJ559/\njp2dHdu3by9x3Y8++ghFUdi6dSs9e/bE1dUVT09PVq1ahaOjI4sWLarAIxFCPNLUvinj24+iv8Uk\nnPJboKhVREY+KNd96vQhr9WrV2NkZMSMGTN0WUaVo6enx4kTJygsfHxmoK+vz5YtW5g8efIT10lI\nSODQoUOMGTMGC4uiHx0NDQ1ZvHgxc+bM0bRFRUUxYcIEzaWhuXPnkpaWplnevXt3Nm7cyNSpU2nT\npg2dOnVi5cqVmuWJiYm89tprtG/fnrZt2zJ27FjCw8M1y5s0acLu3buL1PHfbTdu3GD8+PF4eXnh\n7e3N9OnTiYmJeYZ/LSEqj/zCfL4P+56w+OKXaLs17MobE/ypU8ect9/2pkeP+uVai87CPykpia1b\ntzJjxgxMTU3LZR97915nypRfmTLlV/buLX45ZMeOSM3y3367VWz51q1/aZYfP148eNavv6RZfvbs\n/fI4hGIsLCwIDAzk22+/xd/fn3/+85/s2LGDe/fu4eLigp2d3RPXCw8PR61W06ZNmycud3d3p0GD\nBgDExcUxatQoPDw8CA4OZvny5Vy7do3XXnutyDrLli2jW7du/Pzzz4wdO5YVK1Zw/vx5AD7++GMK\nCgr47rvv+OmnnzA3N+f111/X+jjfeecdnJ2dCQ4O5ttvvyU5OZn3339f6/WFqGzupd9j/vH5HL55\nmPXnN3LkP8Uvszo6mvPhhx3x8LAt93pK1dsnJyeHuLg40tPTsbGxwcHBASMjo2fa8XfffYednR0B\nAQHPtH5NNmfOHFq3bs3OnTv55Zdf2L17NyqVit69e/Ovf/0LS0vLYus8Omu3srJ66va3bduGi4sL\ns2bN0rQtWbIEf39/QkND8fT0BKBbt2688sorAEyaNIl169Zx8eJFfHx8iI6OpkmTJri4uGBsbMwn\nn3zCtWvXUKvV6Ok9/ZwjOjqaTp06UbduXQwMDPj8889JTEzU6t9HiMpEURSO3DrCzr92UqAuIDUt\nl7OR94lM2Y6TzVSaNi16wlba0Tmf1VPDPy8vj507d/Lzzz9z6dKlYpca2rdvT58+fRg8eHCp3gj2\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_estimates(table2)\n", + "savefig('chap03-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From here on, we will work in units of billions." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "un = table2.un / 1e9" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "census = table2.census / 1e9" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This expression computes the elementwise differences between the series, then divides through by the UN value to produce relative errors, then finds the largest element.\n", + "\n", + "So the largest relative error between the estimates is about 1.3%." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2862470293832287" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max(abs(census - un) / un) * 100" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Break down that expression into smaller steps and display the intermediate results, to make sure you understand how it works.\n", + "\n", + "Where in the series is the largest relative error between the two estimates, near the beginning or the end?\n", + "\n", + "When I computed relative errors, I used `un` as the denominator. But that was an arbitraty choice. What happens if we use `census` instead? How much difference does it make." + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Year\n", + "1950 0.032480\n", + "1951 0.022089\n", + "1952 0.017480\n", + "1953 0.016188\n", + "1954 0.017056\n", + "1955 0.020448\n", + "1956 0.023728\n", + "1957 0.028307\n", + "1958 0.032107\n", + "1959 0.030321\n", + "1960 0.016999\n", + "1961 0.001137\n", + "1962 0.000978\n", + "1963 0.008650\n", + "1964 0.017462\n", + "1965 0.021303\n", + "1966 0.023203\n", + "1967 0.021812\n", + "1968 0.020639\n", + "1969 0.021050\n", + "1970 0.021525\n", + "1971 0.023573\n", + "1972 0.023695\n", + "1973 0.022914\n", + "1974 0.021304\n", + "1975 0.018063\n", + "1976 0.014049\n", + "1977 0.011268\n", + "1978 0.008441\n", + "1979 0.007486\n", + " ... \n", + "1986 0.012805\n", + "1987 0.018115\n", + "1988 0.023658\n", + "1989 0.028560\n", + "1990 0.031861\n", + "1991 0.037323\n", + "1992 0.038763\n", + "1993 0.040597\n", + "1994 0.042404\n", + "1995 0.042619\n", + "1996 0.041576\n", + "1997 0.040716\n", + "1998 0.040090\n", + "1999 0.039403\n", + "2000 0.039129\n", + "2001 0.038928\n", + "2002 0.038837\n", + "2003 0.039401\n", + "2004 0.040006\n", + "2005 0.041050\n", + "2006 0.041964\n", + "2007 0.043192\n", + "2008 0.044599\n", + "2009 0.046508\n", + "2010 0.049851\n", + "2011 0.053943\n", + "2012 0.057723\n", + "2013 0.061092\n", + "2014 0.065061\n", + "2015 0.092982\n", + "Length: 66, dtype: float64" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "abs(census - un)\n", + "#this represents the annual difference (positive b/c the absolute value) between census and un." + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Year\n", + "1950 1.286247\n", + "1951 0.858540\n", + "1952 0.667365\n", + "1953 0.607232\n", + "1954 0.628640\n", + "1955 0.740425\n", + "1956 0.843928\n", + "1957 0.988701\n", + "1958 1.101054\n", + "1959 1.020766\n", + "1960 0.561750\n", + "1961 0.036871\n", + "1962 0.031146\n", + "1963 0.270201\n", + "1964 0.535045\n", + "1965 0.639908\n", + "1966 0.682939\n", + "1967 0.628856\n", + "1968 0.582745\n", + "1969 0.582126\n", + "1970 0.583151\n", + "1971 0.625807\n", + "1972 0.616597\n", + "1973 0.584666\n", + "1974 0.533223\n", + "1975 0.443692\n", + "1976 0.338849\n", + "1977 0.266959\n", + "1978 0.196499\n", + "1979 0.171246\n", + " ... \n", + "1986 0.258520\n", + "1987 0.359053\n", + "1988 0.460423\n", + "1989 0.546078\n", + "1990 0.598794\n", + "1991 0.690025\n", + "1992 0.705441\n", + "1993 0.727689\n", + "1994 0.749047\n", + "1995 0.742263\n", + "1996 0.714242\n", + "1997 0.690252\n", + "1998 0.670935\n", + "1999 0.651132\n", + "2000 0.638560\n", + "2001 0.627448\n", + "2002 0.618347\n", + "2003 0.619705\n", + "2004 0.621627\n", + "2005 0.630170\n", + "2006 0.636478\n", + "2007 0.647257\n", + "2008 0.660376\n", + "2009 0.680460\n", + "2010 0.720789\n", + "2011 0.770837\n", + "2012 0.815290\n", + "2013 0.852981\n", + "2014 0.898165\n", + "2015 1.265152\n", + "Length: 66, dtype: float64" + ] + }, + "execution_count": 144, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "abs(census - un)/un *100\n", + "#This represents the annual margin of error in the data. \n", + "#Note that un being the denominator suggests that we assume it is the more accurate estimate." + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2862470293832287" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max(abs(census - un)/un) *100\n", + "#This represents the highest percent error found for any one year in the table above." + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2813631502151765" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max(abs(un - census)/census) *100\n", + "#This makes a small difference in percent error, in this case negligeable. \n", + "#But we should always consider which is the denominator for the sake of accuracy." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Constant growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can select an element from a series using bracket notation and one of the elements from the index. Here's the first element:" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.5576286540000002" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census[1950]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the last element." + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.2564900110000004" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census[2015]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But we can get the first and last years from the index itself:" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1950, 2015)" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "first_year = census.index[0]\n", + "last_year = census.index[-1]\n", + "first_year, last_year" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And use them to look up the first and last elements.\n", + "\n", + "Then we can compute the average annual growth in billions of people per year." + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.07229017472307693" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_growth = census[last_year] - census[first_year]\n", + "elapsed_time = last_year - first_year\n", + "annual_growth = total_growth / elapsed_time\n", + "annual_growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's create a `TimeSeries` to contain values generated by a linear growth model." + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "results = TimeSeries()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initially the Series is empty, but we can initialize it so the starting value, in 1950, is the 1950 population estimated by the US Census." + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
19502.557629
\n", + "
" + ], + "text/plain": [ + "1950 2.557629\n", + "dtype: float64" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[1950] = census[1950]\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After that, the population in the model grows by a constant amount each year." + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for t in linrange(1950, 2015):\n", + " results[t+1] = results[t] + annual_growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the results looks like, compared to the actual data." + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nBM33y9YAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_estimates(table2)\n", + "plot(results, '--', color='gray', label='model')\n", + "decorate(xlabel='Year', ylabel='World population (billion)')\n", + "savefig('chap03-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model fits the data pretty well after 1990, but not so well before." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Try fitting the model using data from 1965 to the present, and see if that does a better job.\n", + "\n", + "Hint: Copy the code from above and make a few changes.\n", + "\n", + "Make sure your model starts in 1950, even though the estimated annual growth is based on later data. You might have to shift the first value in the series up or down to match the data." + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nP6re9AM4WjhPAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "first_year = census.index[15]\n", + "last_year = census.index[-1]\n", + "first_year, last_year\n", + "\n", + "total_growth = census[last_year] - census[first_year]\n", + "elapsed_time = last_year - first_year\n", + "annual_growth = total_growth / elapsed_time\n", + "annual_growth\n", + "\n", + "results[1950] = census[1950] - .3\n", + "\n", + "for t in linrange(1950, 2015):\n", + " results[t+1] = results[t] + annual_growth\n", + " \n", + "newfig()\n", + "plot_estimates(table2)\n", + "plot(results, '--', color='gray', label='model')\n", + "decorate(xlim = [1950, 2015], xlabel='Year', ylabel='World population (billion)')\n", + "savefig('chap03-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Now with system objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can rewrite the code from the previous section using system objects." + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "t0 = census.index[0]\n", + "t_end = census.index[-1]\n", + "total_growth = census[t_end] - census[t0]\n", + "elapsed_time = t_end - t0\n", + "annual_growth = total_growth / elapsed_time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the system object." + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = System(t0=t0, \n", + " t_end=t_end,\n", + " p0=census[t0],\n", + " annual_growth=annual_growth)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we can encapsulate the code tha runs the model in a function that stores the resulting Series as a new system variable." + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation1(system):\n", + " \"\"\"Runs the constant growth model.\n", + " \n", + " Adds TimeSeries to `system` as `results`.\n", + " \n", + " system: system object\n", + " \"\"\"\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = results[t] + system.annual_growth\n", + " system.results = results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also encapsulate the code that plots the results." + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_results(system, title=None):\n", + " \"\"\"Plot the estimates and the model.\n", + " \n", + " system: System object with `results`\n", + " \"\"\"\n", + " newfig()\n", + " plot_estimates(table2)\n", + " plot(system.results, '--', color='gray', label='model')\n", + " decorate(xlabel='Year', \n", + " ylabel='World population (billion)',\n", + " title=title)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nDf5KKTUE/S/ueJcybGcgtAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_simulation1(system)\n", + "plot_results(system, title='Constant growth model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`plot_results` uses `decorate`, which takes parameters that specify the title of the figure, labels for the $x$ and $y$ axis, and limits for the axes. To read the documentation of `decorate`, run the cells below." + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function decorate in module modsim:\n", + "\n", + "decorate(**kwargs)\n", + " Decorate the current axes.\n", + " \n", + " Call decorate with keyword arguments like\n", + " \n", + " decorate(title='Title',\n", + " xlabel='x',\n", + " ylabel='y')\n", + " \n", + " The keyword arguments can be any of the axis properties\n", + " defined by Matplotlib. To see the list, run plt.getp(plt.gca())\n", + " \n", + " In addition, you can use `legend=False` to suppress the legend.\n", + " \n", + " And you can use `loc` to indicate the location of the legend\n", + " (the default value is 'best')\n", + "\n" + ] + } + ], + "source": [ + "help(decorate)" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " adjustable = box\n", + " agg_filter = None\n", + " alpha = None\n", + " anchor = C\n", + " animated = False\n", + " aspect = auto\n", + " autoscale_on = True\n", + " autoscalex_on = True\n", + " autoscaley_on = True\n", + " axes = Axes(0.125,0.125;0.775x0.755)\n", + " axes_locator = None\n", + " axis_bgcolor = (1.0, 1.0, 1.0, 1.0)\n", + " axisbelow = True\n", + " children = [\n", + " label = \n", + " legend = None\n", + " legend_handles_labels = ([], [])\n", + " lines = \n", + " navigate = True\n", + " navigate_mode = None\n", + " path_effects = []\n", + " picker = None\n", + " position = Bbox(x0=0.125, y0=0.125, x1=0.9, y1=0.88)\n", + " rasterization_zorder = None\n", + " rasterized = None\n", + " renderer_cache = None\n", + " shared_x_axes = \n", + " xlabel = \n", + " xlim = (0.0, 1.0)\n", + " xmajorticklabels = \n", + " xminorticklabels = \n", + " xscale = linear\n", + " xticklabels = \n", + " xticklines = \n", + " xticks = [ 0. 0.2 0.4 0.6 0.8 1. ]\n", + " yaxis = YAxis(54.000000,36.000000)\n", + " yaxis_transform = BlendedGenericTransform(BboxTransformTo(Transforme...\n", + " ybound = (0.0, 1.0)\n", + " ygridlines = \n", + " ylabel = \n", + " ylim = (0.0, 1.0)\n", + " ymajorticklabels = \n", + " yminorticklabels = \n", + " yscale = linear\n", + " yticklabels = \n", + " yticklines = \n", + " yticks = [ 0. 0.2 0.4 0.6 0.8 1. ]\n", + " zorder = 0\n" + ] + }, + { + "data": { + "image/png": "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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.getp(plt.gca())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The constant growth model doesn't make a lot of sense, because it seems like the number of deaths and births should depend on the size of the population. As a small improvement, let's write a version of `run_simulation1` where the number of deaths is proportional to the size of the population, but the number of births is constant. This model doesn't make a lot of sense, either, but it's a good exercise.\n", + "\n", + "Write a function called `run_simulation1b` that implements a model where the number of births is constant, but the number of deaths is proportional to the current size of the population. Set the death rate to `0.01`, which means that 1% of the population dies each year; then choose the number of annual births to make the model fit the data as well as you can.\n", + "\n", + "Hint: It probably won't fit very well." + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def run_simulation1b(system):\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " births = system.birthrate\n", + " deaths = system.deathrate * results[t]\n", + " results[t+1] = results[t] + births - deaths\n", + " system.results = results\n", + " plot_results(system)\n", + " \n", + "system.birthrate = 0.115\n", + "system.deathrate = 0.01\n", + "\n", + "run_simulation1b(system)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Proportional death, proportional birth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's get to a more realistic model where the number of births and deaths is proportional to the current population." + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation2(system):\n", + " \"\"\"Runs the constant growth model.\n", + " \n", + " Adds TimeSeries to `system` as `results`.\n", + " \n", + " system: system object\n", + " \"\"\"\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " births = system.birth_rate * results[t]\n", + " deaths = system.death_rate * results[t]\n", + " results[t+1] = results[t] + births - deaths\n", + " system.results = results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I kept the death rate at 1% and chose the birth rate to fit the data." + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system.death_rate = 0.01\n", + "system.birth_rate = 0.027" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_simulation2(system)\n", + "plot_results(system, title='Proportional model')\n", + "savefig('chap03-fig03.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model fits the data pretty well for the first 20 years, but not so well after that." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** In this implementation, we compute the number of deaths and births separately, but since they are both proportional to the current population, we can combine them.\n", + "\n", + "Write a function called `run_simulation2b` that implements a model with a single parameter, `alpha`, that represents the net growth rate, which is the difference between the birth and death rates. For example, if `alpha=0.01`, the population should grow by 1% per year.\n", + "\n", + "Choose the value of `alpha` that fits the data best." + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def run_simulation2b(system, n):\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " alpha = n\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = results[t] * (1 + alpha)\n", + " system.results = results\n", + " plot_results(system)\n", + " \n", + "\n", + "run_simulation2b(system, .0175)" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Factoring out the update function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The functions that run the model all look the same except the body of the loop. So we can factor that part out into a function." + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update_func1(pop, t, system):\n", + " \"\"\"Compute the population next year.\n", + " \n", + " pop: current population\n", + " t: current year\n", + " system: system object containing parameters of the model\n", + " \n", + " returns: population next year\n", + " \"\"\"\n", + " births = system.birth_rate * pop\n", + " deaths = system.death_rate * pop\n", + " print(t)\n", + " print(pop)\n", + " return pop + births - deaths" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the name `update_func1` refers to a function object." + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "update_func1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which we can confirm by checking its type." + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "function" + ] + }, + "execution_count": 172, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(update_func1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`run_simulation` takes the update function as a parameter and calls it just like any other function." + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Simulate the system using any update function.\n", + " \n", + " Adds TimeSeries to `system` as `results`.\n", + "\n", + " system: System object\n", + " update_func: function that computes the population next year\n", + " \"\"\"\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = update_func(results[t], t, system)\n", + " system.results = results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we use it." + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1950.0\n", + "2.557628654\n", + "1951.0\n", + "2.60110834112\n", + "1952.0\n", + "2.64532718292\n", + "1953.0\n", + "2.69029774503\n", + "1954.0\n", + "2.73603280669\n", + "1955.0\n", + "2.78254536441\n", + "1956.0\n", + "2.8298486356\n", + "1957.0\n", + "2.87795606241\n", + "1958.0\n", + "2.92688131547\n", + "1959.0\n", + "2.97663829783\n", + "1960.0\n", + "3.02724114889\n", + "1961.0\n", + "3.07870424842\n", + "1962.0\n", + "3.13104222065\n", + "1963.0\n", + "3.1842699384\n", + "1964.0\n", + "3.23840252735\n", + "1965.0\n", + "3.29345537032\n", + "1966.0\n", + "3.34944411161\n", + "1967.0\n", + "3.40638466151\n", + "1968.0\n", + "3.46429320075\n", + "1969.0\n", + "3.52318618517\n", + "1970.0\n", + "3.58308035032\n", + "1971.0\n", + "3.64399271627\n", + "1972.0\n", + "3.70594059245\n", + "1973.0\n", + "3.76894158252\n", + "1974.0\n", + "3.83301358942\n", + "1975.0\n", + "3.89817482044\n", + "1976.0\n", + "3.96444379239\n", + "1977.0\n", + "4.03183933686\n", + "1978.0\n", + "4.10038060559\n", + "1979.0\n", + "4.17008707588\n", + "1980.0\n", + "4.24097855617\n", + "1981.0\n", + "4.31307519163\n", + "1982.0\n", + "4.38639746988\n", + "1983.0\n", + "4.46096622687\n", + "1984.0\n", + "4.53680265273\n", + "1985.0\n", + "4.61392829783\n", + "1986.0\n", + "4.69236507889\n", + "1987.0\n", + "4.77213528523\n", + "1988.0\n", + "4.85326158508\n", + "1989.0\n", + "4.93576703202\n", + "1990.0\n", + "5.01967507157\n", + "1991.0\n", + "5.10500954779\n", + "1992.0\n", + "5.1917947101\n", + "1993.0\n", + "5.28005522017\n", + "1994.0\n", + "5.36981615891\n", + "1995.0\n", + "5.46110303361\n", + "1996.0\n", + "5.55394178519\n", + "1997.0\n", + "5.64835879553\n", + "1998.0\n", + "5.74438089506\n", + "1999.0\n", + "5.84203537027\n", + "2000.0\n", + "5.94134997157\n", + "2001.0\n", + "6.04235292108\n", + "2002.0\n", + "6.14507292074\n", + "2003.0\n", + "6.2495391604\n", + "2004.0\n", + "6.35578132612\n", + "2005.0\n", + "6.46382960867\n", + "2006.0\n", + "6.57371471201\n", + "2007.0\n", + "6.68546786212\n", + "2008.0\n", + "6.79912081577\n", + "2009.0\n", + "6.91470586964\n", + "2010.0\n", + "7.03225586943\n", + "2011.0\n", + "7.15180421921\n", + "2012.0\n", + "7.27338489093\n", + "2013.0\n", + "7.39703243408\n", + "2014.0\n", + "7.52278198546\n", + "2015.0\n", + "7.65066927921\n" + ] + } + ], + "source": [ + "run_simulation(system, update_func1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember not to put parentheses after `update_func1`. What happens if you try?" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEjCAYAAADaCAHrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXlclNX6wL8z7LKqbBqIuB0Vd0Att7S00rTtauWS3n5W\nt2zX0rzlNcvMut1WW9U2NU3LzNKy1EwzM1cU5OAGigoCsu/DzO+PdxgZGGBQQJDz/Xz4zMzZ3ud9\nZ3je8z7nOc+jM5lMKBQKhaJpob/SAigUCoWi/lHKX6FQKJogSvkrFApFE0Qpf4VCoWiCKOWvUCgU\nTRCl/BUKhaIJ4nilBVCAEOIzYHK5YiOQCxwB3pdSfl7fctUGQgh/IFdKmWv+/BkwWUqpu8JyNQg5\nKkMI8RvQVkrZtj76mfs+BTwL+ABvSyln1XSMasb3BFyllCm1Oe6l0tB/A3WNmvk3LJ4CJpn/pgCz\nARPwmRBi+hWU65IQQtwCSMCvTPFHaOenaEAIIboD/wPigceANbU8fjgQC4TV5riKS0fN/BsW30kp\n48sWCCGWADHAHCHEe1LKwisi2aXRD20WaUFK+Sfw55URR1EF3c2vr0gp19fR+K3rYFzFJaJm/g0c\nKWU+sB7wQs2aFHWHs/k1+4pKoag31My/cWA0vzoCCCHigV/Qbt7jgTSgl5QyVQgxCPgP0N/cZzcw\nV0r5e+lg5v6/os3A/w0EAAeA56WUW8seuAbjlZfnADDK3OSkEGKblPJ6W3ZWIUQI8DJwM+CJZip6\nT0r5SZk2n5llmAT8F4hEU1SrgJnmm2Rp22HAM0BftJvmeeAHc7uMipfXNuZjRgAPmY/ZCzgHvAis\nAOYB96Mpzk3AI1LKtDL9uwMvAdcDLsBB4FUp5XfljnOjeayeQBLwSiXydAXmA0PNx9wPzJNS/mzv\nOVUy7m/AEPPHrUIISr8fIcRY4FHzubsBZ4DVwAtln0KFEJ3N5zAMcDLL9oKUcrsQYi7ab6h0/ITS\nNYkafvfvmM8f4F4p5U9CiCC063WLuf8R4L9SyuXlzjEcWABcC2QB7wFN0tZfipr5N3CEEHo05VGI\nZv4p5V6gB/Ak8IlZ8Y8BfgPaoCmdl8zvN5vryjIcWIRm230B8Ad+FkKUKgFqOJ6VPGj/pGvNdU9x\n8Z+2/PmFAn8Dt5n7PQNcAD4WQrxWrrk/mpKNBZ4A/kCzT79YZrwRaDcid2AO8DjaDetB4GNbMlRD\nK7Qbx3ZgOmAAlgI/oim6ecByYBzaDaJUjkhgF5rp6w209RtnYK0QYlqZdjcCGwFv4Hm0m9k7aDcd\nyrTrjnaz7oqm7P6NpmQ3CCHuvoTzKst8Ll6bVzCvyQghpgJfAxnATGAGkID2Hb1URraOwF9o1+M9\n87m2AH4xX4dvy43/pLlfTb77NmjXZ655rF1CiNbm496Ids1mAKnAMiHEM2XkCwO2AV3Mcn+A9l3e\nWfNLdfWgZv4Ni+ZCiBzze0egLZri7Am8KaXMKdPWDbhNSnkWQAjhiKbMzwARUsosc/lHwGHgfSHE\nRillsbl/G+CO0lmoEOJLIA54Fbj2EsazksfcNgq4AxtrGWVYALQEIqWU+8z9FgHrgBlCiM+llNGl\n1wd4XEr5rvnzJ0KIGGACmpcK5ut1GrhRSllkLvtACPEn2uyyprQAHpNSvmeWLR5N8XcCROnsVwjR\nCxhRpt+7aE9skVLKRHObD9BuWK8LIVZJKVPRrvc54Noy1/gXYAuaIis7XgrQp4zn1Lvmdm8LIdaW\nOd8aIaX8RQhxDdoN8hcp5W/mquloN5zbpZQm8zHfB06iXcvSa/4y2o0oXEp5zNxuJXAceEZKOc58\n/cuPX5Pv3g34p5RyVancQoi3AFegm5TyXJn+y4GXzP3Po00OTMB1UsrT5nZr0J5Omyxq5t+w2If2\nD56CphD+RJsVvQuUd7s7VlbRAn2AILRH5qzSQrOZ4z3gGqxnk7FlzQ9m97svgX5m98yajldenmoR\nQjigmYZ+Lv3nNx/DiDYb1QHlnzC+Lvf5IBBY5vOtaErIogiFEC3RHvU9aiJfGdaWeR9nft1YbvH9\nJNpTAkKIALQZ/5elih9ASlkAvI6myIabr3M48FW5a7wViCon/xBgA+AmhPAVQviiLaavRTPbRV7i\nuVVFD2BkqeI34w+kY76W5ifTkcCGUsVvPoc0YCDak1cFLvG7L2tq1AO3m8uKy1yTlsA3aGa24eZ2\nN5nlO13mOLHAZZnLGjtq5t+wmAgkm9+XoD1uHzErjfKcL/c51PwqbbQ9Yn4N4aKnTYyNdkfR/ulC\nLmG88vLYgy+aEqnuGGUp7yNeSJlJjJSyRAjRTgjxEtoCeXu0G9XlkFzmvcH8Wv58S7hoQ25bKo6N\nscqeV+m5HbfRLhbtBgLaOYBm4nqsEhnboD1V1BpSymIhRIQQ4l6gM9ABTfmDZv4BTdl6oP12yvc/\nXMXwl/Ldl73mvmimstvNf7ZoU0a+yq5x+RtMk0Ep/4bFH1WYR8pTUu5zVYtXpcqxrFnAlonAoczY\nNR2vvDz2UNNjlM4MK0UIMQNtdi3R7PTfoNmFH0MzD9UYKaXBRnFViTDsPa/SMdyqaAcXv5dFwHc2\n2gJEV1J+yZjNSo+iLd7+ifZkuBPtya9NOdlqmhjkUr77sr+x0uOuQds7YosT2H+NmxxK+V89xJtf\nO6PZTMsizK+ny5S1pyId0ZT4SS66/tk73qWQgraLubONuhofQwjhimbf3QqMKKu0zU8C9UW8+bW6\n84pHU04dbbRrZ2M8g5TyV6vBNA+gUCDv0kS1jdkL51E009V95erKmtlSgXxs/J7MN+JWUkpbGxQv\n97tPQTtnJxvXpA2a2TIXzfMsi+qvcZOjSd/5rjL2oq0TPCKE8CotNL9/xFy3t0z7SCFE/zLtAtDM\nTluklOmXMJ4tSmdqNn9n5pncRmCEEKJPmWPo0LxLTGiLq/biBjQD4sop/l6YXRnNC9l1ipQyCdgD\nTDS7IpbK4Qw8jWaq+sW84Pu7uV1AmXbXoimv0vHOmcebYvZwKW3nhOZ5tIban8i1ML9amQeFECPR\nFKmjWTYDmgfWSCFEcJl2zdG8d0oVrNVv4XK/e/NxNwCjhBA9y1X/D20txNe8XrEWuNns9VN6nLZc\ndEVukqiZ/1WC2T77OJqr4B4hxGJz1VS0nZX/KGcyKQQ2CiHeRJu5TUP7x5xxiePZotQ+/4zZM+h7\nG21mobkI/mY2M5xD8xAaBvxPSmlrbcImUsp0IcRfwP1CiCw00083s8ylsnqiLVjWNY+jeeL8bfaQ\nyUa7uYajeSyV7jeYjmae2mX2VHFH81hKrWS8vebx0tDca/sBz5XdX1AW801lOBAlpYyy1aYSYoBT\nwGzzE1Ui2r6JKUAB2nUs5Tk009puIcR7aDPtB9Bs7c+b25T+Fh4WQgRKKVdw+d99af/fzdcuAW3B\n/1bgozKeQi+gKfpt5t+7Ae16ZqMtDDdJ1Mz/KkJKuQbN3fAs2qaa2WgmnKHlNxah+aDPQnO/m4P2\nzz6grIKo4Xi2WIm2meyfwMJKZD6OpsA2AP8CXkPzYvm/SswF1TEWzUx1P/AWmuJ7lYv2/mGXMGaN\nMYexGID2dDQDzR2yAM1t8t0y7faiPZWcQPNhn2p+/bmS8fag3TBeR7tRTJFSvlqFKF3QbPU18mk3\nezKNRLP1P4G2hyHc/H4m4GXeOIWU8gja5qndaO6f89AU+cAyCngzmqfWKOA9IYTr5X73Zfr/iHaz\neQvtSeNptMlMabvTaNfuD7N804HP0fYWNFl0KoF708Psqx4vpbz+ykqiqA+EEE8AzaSUC660LIqG\ng5r5KxRXMUILozwRzSyjUFhQyl+huLpxBz6WUm650oIoGhZqwVehuIoxex41adu2wjaNwuYvhHBB\n275+jkvbTKRQKBRNDQe0kCN/Sxt5QBrLzD8SzR1OoVAoFDVjELCjfGFjUf7nAJYvX05gYGB1bRUK\nhaLJk5SUxIQJE8CsP8vTWJR/CUBgYCBBQUHVtVUoFArFRWyaypW3j0KhUDRScnJyKCy8tLTeSvkr\nFApFIyQvL48///yTP/74g7y8msf1U8pfoVAoGhkFBQXs2rWLgoICcnNz2b17NzX13FTKX6FQKBoR\nRUVF7Nq1i9zcXAD0ej3dunVDp6tZPnql/BUKhaIRERcXR3Z2NgA6nY7w8HB8fX1rPI5S/gqFQtGI\n6NKlC/7+/uh0Onr37n3J7u+NxdVToVAoFICDgwORkZGkpaXh5+d3yeOomb9CoVA0YGwt5Or1+stS\n/KCUv0KhUDRYTCYT+/fv5/jx47U+tjL7KBQKRQPEZDIRFRXFmTNnOHPmDCUlJXTs2LHGXj2VoWb+\nCoVC0cAwmUxER0dz6tQpS9ml7uStDKX8FQqFogFhMpk4cuQIJ0+etJQFBwdfki9/VSjl30AYNmwY\n77//vl11hYWFvPPOO9x0001069aNfv368fDDD3P48OFqj5OTk8Nbb73FLbfcQs+ePRk8eDDTp0+3\n+qEpFIorg8lkQkppZeNv3bo1PXv2rFXFD0r5N0pmz57NTz/9xL///W9++uknlixZgpubGxMnTqxy\nYSg1NZU777yT3377jenTp/PDDz/w9ttvk52dzT333MPRo0fr8SwUCkV5jh49avV/GBgYSO/evWtd\n8YNS/o2OnJwcfvzxR2bMmMHgwYMJCgqiW7duvP7667Rs2ZKvv/660r5z587FZDKxbNkybrzxRoKD\ng+nduzeLFi0iICCAhQsX1uOZKBSKshw7dgwppeVzQEAA4eHh6PV1o6aV8m+E6PV6duzYQUnJxTDd\nDg4OfP755zz44IM2+6SkpLB582YmT56Mh4eHVZ2TkxNvvPEGzz//vKUsLi6O//u//7OYhubMmUNW\nVpalftiwYSxdupR//etf9OzZkwEDBvDee+9Z6lNTU3n00Ufp27cvvXr1YsqUKRw5csRSL4Rg3bp1\nVnKULTtx4gT3338/ffr0ITw8nEceeYTExMRLuFoKRcPnxIkTVv8ffn5+dar44SpX/uvXH+ehhzbx\n0EObWL++ojlk9Wppqf/ll/gK9cuWxVjqt2+vqHgWL46y1O/ebTNZTq3j4eHB+PHjWb58OYMHD+bZ\nZ59l9erVnD17lqCgIFq2bGmz35EjRzAajfTs2dNmfceOHWnbti0AycnJTJo0iU6dOrF27Vreeecd\njh07xqOPPmrV5+2332bo0KH88MMPTJkyhXfffZc9e/YA8OKLL2IwGPjqq6/49ttvcXd357HHHrP7\nPGfMmEHr1q1Zu3Yty5cvJz09ndmzZ9vdX6FoTHh6euLg4ACAr68vkZGRls91RY38/IUQbsA1gDeQ\nCpyTUhbVhWCKynn++efp0aMHa9asYcOGDaxbtw6dTseIESOYP38+np6eFfqUztq9vLyqHX/FihUE\nBQUxc+ZMS9mbb77J4MGD2b9/P7179wZg6NCh3H333QA88MADfPzxxxw4cICIiAgSEhIQQhAUFISL\niwvz5s3j2LFjGI1Gu2YzCQkJDBgwgGuuuQZHR0def/11UlNT7bo+CkVjw8/Pj8jISI4fP05ERIRN\nxV9gKCCrMAt/d/9aOWa1yl8I4QLcD4wH+pbrYxBCbAPWAJ/byhCvsA9HR0eMRqPNOqPRiKOj9Vc1\nZswYxowZQ15eHnv37mXjxo2sXbsWvV7PW2+9VWGM5s2bA5CZmVmtLEeOHOHIkSMWJV+W48ePW8pL\nnxRK8fT0pLi4GIBHHnmEmTNnsmnTJiIjIxk8eDCjR4+2+zH2iSeeYOHChaxYsYL+/ftz/fXXM2rU\nKLv6KhSNET8/P3x9fW0u7qbnp/Pu7ncpMBQwa+AsvFyqn8RVR5XKXwgxBXgVcAHWA6uBeCAXaA4E\nAQOAV4D/CCH+I6VcfNlS1RKjR7dn9Oj2ldaPHSsYO1ZUWj9xYlcmTuxaaf3UqT2YOrXHZclYipeX\nFzk5OTbrMjMz8fHxAeCvv/7it99+s8zKmzVrxqBBgxg0aBC+vr58+eWXNsfo1q0bjo6OHDhwgB49\nKsq8fv16Nm/ezMKFC3FycmLAgAFWawCltGjRwvLe2dm5Qn1pHJKbb76Z6667jm3btrFz507ef/99\nPvroI9atW2cz/KzBYLD6fN999zFy5Ei2bt3Kzp07WbBgAUuXLmXdunU2j6tQNCYSExNp2bIlbm5u\nVuW2FH9CRgKL/l5EZoE2cVu0exEzB85Er7s8q32lvYUQPwAPA/8CAqSU90kp35FSfi+l3CylXCOl\nfEtKORZoDTwLPCKE2HBZEjVRwsLC2L9/f4Xy2NhY8vLy6N69O6B5+yxdupTo6OgKbT09PSu1+Xt7\nezN8+HA+//xzSxKIUgoLC/nkk0/IyMjAxcWFDh06cPz4cVq3bk1ISAghISHo9XpeeeUVzp2rfm3D\nYDCwcOFCzpw5w+jRo1mwYAE//vgjqamp7N69G9AWmcve7BISEizv09PTeemllzAYDIwdO5Y333yT\nzz77jBMnThAbG1vt8RWKhkxCQgL79+9n586d1aZfjEqO4r87/2tR/A56B4aGDr1sxQ9VL/iuklL2\nk1J+V51dX0pZJKVcDoQDqy5bqibIpEmTiImJYc6cOcTGxnLq1Cl+/fVXnnrqKYYOHUqXLl0Azc4e\nGRnJQw89xOrVq0lISEBKycqVK/noo4+YNm1apceYNWsWJpOJCRMmsGXLFk6fPs2uXbuYOnUqycnJ\nzJkzB4CJEyeSlZXFrFmzkFJy6NAhnn76aeLj4yuYemzh6OhIdHQ0c+bM4eDBg5w+fZpVq1bh5ORE\nWFgYAL169eLrr78mNjaW6Oho/vOf/1hm9N7e3vz++++Wa5GQkMC3336Ll5cXoaGhl3mlFYorR3x8\nPFFRUYCWg7esh095Tmee5v2/36eopAgTJrIumLi/68P0D+pfK7JUqvyllLbtB1UgpTRJKT+/PJGa\nJh06dGD58uUkJSUxefJkRo0axcKFCxkxYgTvvPOOpZ1er+fjjz9m3LhxfPbZZ4wZM4a7776b7777\njldeeYU77rij0mMEBgayatUqIiIieOWVVxg1ahSzZs2iVatWrF69mnbt2gGa7fHTTz8lNTWVcePG\nMXXqVFq1asWnn35qt8nljTfeICgoiIceeoiRI0fy66+/smjRIkJCQgBtz4Gnpydjx47l8ccfZ9y4\ncZakFHq9no8++gjQbopjxozh2LFjLFmyxOZitkLRGIiPj+fQoUOWzz4+PjZNsKUEeQUxOGQwBYUG\nEmJKcNw1lD0/l1TavqboapL0VwjRHXDHxk1DSrmz1qSqeNy2wMnNmzcTFBRUV4dRKBSKOuHkyZNW\n4Vd8fHzo378/Tk5OVfYzmoy8v+VL9q72xtnUDIBp03rTo0f1sfwTExO54YYbAEKllPHl6+1y9RRC\nhKMt9obYqNYBJqBunVIVCoWiEXLixAmrNbrmzZvTr18/K8WflpfGmpg13Nv9XitPHr1Oz6M3TOaL\nM9Hs3HmW668PplOn5rUil71+/m8DRmAKkGh+r1AoFIoqsKX4+/fvb3HdNplMbD+1nTUxayg0FFJk\nMHBvh3/i69vMapy77urIwIHX0K6dT63JZq/yDwfukVKuq7alQqFQKDh27JjVgm6LFi3o16+fRfFf\nyL/AFwe/4EiK1iY9o4BP/95EomswC2aNRq+/6Pbp7u5Mu3a16+Jsr/JPAWpvpUGhUCiuYkwmExkZ\nGZbPZRW/yWRix6kdrIlZQ4GhAICi4hJOHipB5NxJRokrW7ee4oYbbFnZaw97lf8HwCwhxBYpZdWO\nqVUghLge2FpJ9VYp5bBLHVuhUCgaCjqdjj59+rBnzx5KSkqIjIzE0dGR9Px0voz6kujz0VZtb+18\nC7c7hbHhh1M0a+aEh0fdb2S0V/mHAGHAOSHEIaD8DcAkpbzJjnF2Aq3KlQ0HPgNUPGGFQnHVoNfr\nCQ8Pt7z/49QffB39NQWGAkyY0KEjwCOAyT0n075FewydjBiK9IwY0RZPz4aj/AVwoMznqv2TKsG8\nWSzJMqgQ3sBrwOtSyp8vZUyFQqG40phMJpKTkwkICLAK0VAaoC0uLY4vDn6BCRNnz+aSlJTL07ff\nw9hud+HkoKlTR0c9d93Vqd5ktkv5SymH1tHxXwAKgXl1NL5CoVDUKSaTiaioKE6dOkWnTp0QomK8\nsE4tOxHROoLPf/mJvFRXOuXdhqPshVPPS5pH1wo1DencFRiCFtI5Bdghy6aeqdlY/sCjwMOXs46g\nUCgUVwqj0ciBAwc4c+YMoCVB8vb2rvAEAHBv93u5kOjA0Q0BOOBEbOwFDAYjjo5XJq2KXUcVQuiF\nEJ8Ah4BFaFE8PwFihBCfCSEuJcHkw8B5YNkl9L3qsDeBe2JiIkIInnrqKZttbWXIKqW0b9m/nj17\nctttt7F8+XLK7vb+9ttvK7Qt+/fTTz9Z2h4/fpwnnniC/v37061bN4YPH85rr71WaZTShx56CCEE\nBw8etOvaKBQNEaPRyL59+yyKHyAoKIgTRSd4ZfsrFBqsI9x7OHvw7Jh/0rtHa0aPbs/s2f2vmOIH\n+2f+s4D7zK/LgWS0hdvxaCabGDTbfU2YCHwqpSyuYT8FsGHDBkaNGsWNN95Y477vv/8+PXr0wGQy\nkZ2dzdatW3n11VdJTEy0SuDi4ODAtm3bbI7h7e0NaOkhx48fz4033sinn36Kp6cnUkoWLFjA4cOH\n+eKLL6z6paSksGPHDtq2bcuqVasqzSymUDRkSkpK2LNnD+fPn7eU+bX2Y0fRDg4fPIzBYGTGkvd4\n6e5p+Pi4WtrodDoeeaRXnSRkryn2Kv//A+ZLKV8vU5YIvCaEcDXX2638hRBhQAdgpb19FNYEBwcz\nd+5cIiMjLYrYXry9vfHz02KD+Pv70759exwdHVm4cCF33XUXHTp0sLQtbVcZpU8A8+fPt5QFBQXh\n7u7O5MmTiY2NpXPnzpa677//Hn9/fyZMmMCbb77J7NmzK+QUVigaMgaDgd27d5OWlnaxzNvAyvMr\nyTfkcyE9n7i4dBwK8vjyqygee7ivVf+GoPjB/hy+rYA/KqnbCbSp4XEHoaWArDyeqaJKnnnmGYqL\ni1mwYEGtjDd27FicnZ3ZuHFjjfrp9Xqys7PZu3evVXlkZCQ//PBDhRDM3333Hf3792f48OHk5+fz\n/fffX7bsCkV9UVRUxJ9//mlR/EUlRcQRx08ZP5FvyAfAQa/HN7s7fbLv5fCBDI4fz6hqyCuGvTP/\nE8C1wGYbddcCNc1e3hs4XG2ry2S9XM8PcT/Y1XZQyCAm9phoVbYsahnbE7bb1f/WTrcyWoyusYyX\nSsuWLXnuueeYOXMmI0eOZPDgwZc1nru7O0FBQcTFxdWo36hRo1iyZAnjx48nLCyMfv360a9fP/r3\n70/Hjh2t2h46dIi4uDimT59Oq1at6NWrF6tXr2b8+PGXJbtCUR8UFBSwa9cusrOzAUjOSSaWWLI9\nsrXwloBvM1+mXzeZXcZioqNTueeezrRvX3vxeGoTe5X/YmCBECIXzVSTDAQA9wKz0RaAa0Ir4EIN\n+yjKcfvtt7Nx40bmzJnDDz/8cNnmk/KpJEtKSmzm8W3evDlbtmwBtNC033zzDUuXLmXTpk0sXbqU\npUuX4uHhwYwZM7j33nst/dauXYuXlxfXXXcdoN04Xn75ZaKioqqMa65QNAQKCgrIz8+nsKSQoxeO\nctb1LOkOuejytNg7w0KHcZu4DRdHF4LHFjN2bCfc3K6cK2d12Kv830Wbrb8B/LdMuQ7NW2e+rU6V\nIaUcU5P2TYGaJnAv5cUXX2TUqFG89tprzJt3edslcnJyrGz8Dg4OfPfddxXalU/C3rx5c6ZPn870\n6dM5e/YsO3fuZMWKFcydO5fWrVszZMgQioqK+PHHH7nhhhssCWFuvvlmXnnlFVatWqWUv6LB4+Pj\nQ9++ffn2129JdE3kWFoapxOzCfQI4IN/PY3wu7hBqyEr/VLs3eRVAkwWQrwGDEZL3p4O/C6lrJhM\ntoEwWoy+LFPMxB4TK5iC6gp7E7iXJzAwkJkzZzJnzhxGjhx5ycfPz8/n5MmTjBo1yqq8NPNWZXz8\n8ceEhIRw001adI/WrVvzj3/8gzFjxnDzzTezbds2hgwZwpYtW8jIyGDdunVWdn6j0ciGDRt47rnn\n1MKvosHTsmVL7rv9Pk7/dp7fohJoXdCLthnXkRjlgrjhSktXM2q0ycus6Bussm/M2JvA3Rbjxo1j\nw4YNPP/885d8/NWrV2M0Gmt8A4mKimLjxo3ceOONlq3sAM7Ozri5uVkSyq9du5aAgAAWL15s1X/v\n3r3MnTuX9evXW5mIFIorTVpaGk5OTuhcdHi6XEwf6uLiwqMDHyAk9zp2/1xMhw4+dO3a8gpKemlU\nqvyFEHHAP6SUUUKIo2jZuirDJKWsuKdZYTeTJk3ijjvuYM6cOYwfP55mzZoRFxfHG2+8YZXAvTJe\nfvllRo+27yknMzOTlJQUTCYTWVlZ/P7777z11ls8+OCDtGlj7biVkpJicww3Nzc8PDyYNm0a48eP\n58EHH2Tq1Km0adOGc+fOsXbtWjIzM7n77rstvv3Tpk2jUyfr2CXt27fnk08+YfXq1Ur5KxoMSUlJ\n7PhrB3EZcRAMj/V9Gk+Pi/76/u7+TLnNl+5ByURGBjYY982aUNXM/w8gu8x7+5P9KmpMaQL39957\nj8mTJ5OXl0dgYCAjR45k2rRp1fYPCgpi+vTpvPTSS9W2feSRRyzvfXx8aN++PS+99BK33XabVbuS\nkhIGDhxoc4wJEyYwZ84cunTpwqpVq/jggw945plnyMjIwMvLiwEDBrBy5Up8fX1ZsmQJOp2OcePG\nVRjHwcGB++67jwULFnDo0KEqn3AUivrg1KlTbPxjIyfTT2IoKSFpVzYPbF7E53OewMXlosp0cNDT\nt2/5IMWNhxolcL9SqATuCoWiPvj78N/8/OfPZBVlAXAmJYvovCRaFYQzZcBY7r67czUjNBwuOYG7\nEKJ1TQ4kpTxbY+kUCoWiAWAoMbDyt5Ucjj2M0ZyivMSpBI/2noTtHIiH0Z/8fAMmk6lRmnhsUZXZ\nJ5GamXq4GWjjAAAgAElEQVQcqm+iUCgUDYv49Hi+2PQFOakXve2MrkaGXDuEW8QtrCSOPn0CCAvz\nvYJS1j5VKf/7UXZ+hUJxFbM2ei07/tqBKVtHVlYR3t4uNPfzZsotUwjy0UzMkyaFXWEp64ZKlb+U\n8rN6lEOhUCjqFYPBwPm48xSmGcnKLAJ06ApaMWvc4zg61MgLvlFSlc1/dg3GMUkpayfCmEKhUNQD\nDg4ORLaN5MTpUxQYnXDK60TehTakphQSGNiElT/wcg3GMQFK+SsUigZLVHIUwV7BNHdrDmihlXv1\n7EV2fjaxh0rIyHBn0qQwAgPdr7Ck9UNVZp8rl2JGoVAoaomswixWHl7J3rN7aWEI5ZGIRwgO9gK0\nOFWDrx3MtRFaOkW9/urw5LGHq//ZRqFQNElMJhM7T+9kTcwaMvKyOR9XQEJmDK9Gf8O7s6dYFL1O\np8PZuek5K6rwDgqF4qrjfO55lkUtQ6ZKAJwznWmZ64KbrjmkOLBt22mGDq1pDqqrCxXeQaFQXDWU\nGEvYdHwTPx79keKSYjCBa4Yr3kXeePi1IjURWoe60KfP1eWzfylUZfP/Z5n3U+pFGkWdsmfPHiZM\nmIC9YTK+/fZbnn/+eWJiYupBOoXi8jiZfpIvo77kdEYi+QUG3N2caJbWjFDHUEJahaBDjynElVtu\nGWLJKdGUsdvmL4TQA7cCAwFvtGxev0kpt9SRbAqFQmEXSTlJLPxjIenp+Rw9loHOqGNMxz508uqI\nh7OWJ6JVq1b07t3bKvR4U8Yu5S+ECAB+AnoChUAK4A/8WwixGbhDSplbZ1IqFApFFQR6BNLLvw8f\n/LkehyInwvV98E4PwaO5pvhDQ0MJCwu7auLy1Ab2unO+gZZ39xYppZuUso2U0hW4C+iDdWpHxSUg\nhGD16tXcc889dO/enZEjR3LgwAFWrFjBkCFD6NOnD08//TRFRUWWPnv27GHixIn07t2b6667jpdf\nfpn8/HxLfWxsLBMnTqRnz57ceuutREdb5+ExGo18+OGHDB06lF69enHXXXexbdu2ejtnheJSMZoq\npjyd0PNeRoUNYgjD8HXww72ZlkoxLCxMKX4b2Gv2GQ08KqX8uWyhlPI7IYQfsBB4uLaFu1yklMTF\nxdnVNiQkpEIe2aioKBISEuzq36lTJ4S4PIen//3vf8yfP5+2bdsya9YsHnzwQbp3784nn3zCyZMn\nmT59OhEREYwfP56DBw8yZcoUJk2axIsvvkhiYiJz584lMTGRDz/8kMzMTKZMmUL//v355ptviI+P\n54UXXrA63htvvMEvv/zCvHnzaNOmDdu3b+fRRx9l8eLF9OvX77LORaGoC4wmI9vit7EtYRtPRc7A\n2/1i6k8PZw+Gt4rkSMY5AgLccXV1pHfv3rRuXaMAxU0Ge5V/IZBZSZ192lFRLePGjWPYsGEA3Hbb\nbcybN4+5c+cSHBxMp06dWLx4MUePHgVg6dKldOvWjZkzZwJaRqy5c+fy4IMPcvToUf7++2+Ki4uZ\nP38+7u7udOjQgeTkZEuS99zcXL744gveffddBg0aBGg3wNjYWD7++GOl/BUNjtOZp1kWtYwTF05y\nOjGb8RsXsmzWv2neXMuwpdPpiIiIoKBgB3q9nsjISFq0aHGFpW642Kv8PwBeEkL8JaVMLi0UQrgD\ns4BP6kK4pkbZFIpubm7o9XorrxxXV1eL2efo0aMMGTLEqn9ERISl7ujRo4SGhuLufnGreq9evSzv\njx8/TlFREU888QR6/UXrX3FxMb6+yg1O0XAoNBSyPm49m09sxmgyciQ2jbS0ApoZ41mx8hDTHo60\ntPX09KRv3764urpa/fYVFalqk9emMh91QFfghBDiDzRPn+bAAMAJaJCJXIQQl2WK6dGjRwVTUF3i\n6Gj9deh0ukrtlK6urhXKSrOyOTo6otPpKJ+lzcnJyfK+1NXt3XffJSQkxKpd2ZuBQnElOZR8iBWH\nVnAh/4KlLCS4OR5n2hBcGE5WRg4FBQZcXS/+77Rs2fiSqV8Jqpr5O2O9sWuH+dUJKJ2OHjC/KqNa\nPdO+fXv2799vVbZ3715LXWZmpiWJure3NwCHDx+2tA0JCcHJyYnk5GQGDx5sKX/vvfcoKSnhiSee\nqIezUChsk1GQwarDq9h3bp9VufAVTBg6ga36ZAoK4vH3L6CwMBdXV+8rJGnjpapNXtfXoxyKGvLA\nAw9wxx13sHDhQsaOHcuZM2d48cUXGTJkCO3btycgIIBFixbx7LPPMn36dJKTk3nnnXcs/d3c3Jgy\nZQpvvPEG7u7udO/ena1bt7Jo0SLmz59/Bc9M0dT549QffB39NenZ2Rw7nkFoW28CWjRnbNex9A/q\nT2ZmJi1aJFFYqKOkxMDu3bsZOnRohSdnRdVUZfYZIKX8o6YDCiEGSSm3X55Yiuro1KkTH374IW+9\n9RZffvklPj4+jBo1iieffBIADw8PPv/8c+bNm8fYsWPx9/fngQcesCz4Ajz55JM4OTnx2muvkZqa\nSnBwMPPmzePOO++8UqelUGDCxOlzF5Bx6RiNJlqXBDH3jmfxcvXk3Llz7N+/n5KSEkAzUXbp0kUp\n/ktAV94uXIoQ4iBwBHhZSnnYZiPr9pFoi78dpZS1aigXQrQFTtoblkChUDReTCYT/9k0n42bY2mX\nM4wWpmCeeiocnS6N2NhYSztnZ2ciIiKUjb8SEhMTueGGGwBCpZTx5eurul1GAHOBPeaont8Au4GT\nQC7gg2b7HwjcAgjgXWB87YmvUCiuZg4mHcTH1YcQn4tOBzqdjqeHPEqk4TyHo9IZP74TaWknOXPm\njKWNu7s7/fr1Ux49l0FVNv9itPAN7wNPAQ8Ac7BeBNYBp4A1wK1SyjMVBrKBEGIq8CwQDMQAz6gY\nQQpF0yE9P52vDn/FgaQDkOXDoz2m06N7gKXex9WHkTd7ceOwIvbu3UN6erqlztfXl/DwcBWc7TKp\n1lBmVugzgBlCiM5AO7TAbqlAgpTSvi20ZoQQk4FFaDuCfwceAb4XQnSz9WiiUCiuHowmI1tObuF7\n+T1ZublImU5G5hmyo7/i046PWrlsmkxGdu78g7y8PEtZSEgI3bp1U+7ItUCNVkmklLFAbLUNK0EI\noQNeBBZKKZeay2YAw4DrgPhLHVuhUDRs4jPiWRa1jNOZpwHQO+jIyysmsCgMt6x2/PJLAqNHt7e0\nd3R0pE2bNsTGxqLT6ejatSuhoaEqRk8tUd9L5AIIAVaVFkgpjUCvSnsoFIpGTX5xPt/Ffse2hG1W\nGw9Dmgcz8ob72bw6lxuHhzBiREiFvh06dCA/P5/AwED8/f3rU+yrnvpW/p3Mrz5CiC1AN7QniVlS\nyp31LItCoahDTCYT+87tY+XhlaTlppOTU0xzH1ecHJy4tdOt3NjuRhx0DgwKyyMgwJ2SkhKKioqs\nbPk6na5ed9k3Jepb+XuZXz9HWzyOBaYCW4QQvaWUR+pZHoVCUUek5afxyb5PSErO4cSJTIxGE5Nu\nGsb/9b0P32YX40cFBLiTn5/P33//jYODA9dee62y6dcD9X2Fi82v86WUK6SU+4BpwFEaYEhohUJx\n6fg282V46AhOn85GV+RGp+xb8IwZaqX4AdLS0ti+fTuZmZlcuHCBQ4cOVYhLpah96nvmX+oKeqi0\nQEppEkIcAULrWRaFQlGL5Bbl4u5s7Xc/pvNozg/JZ89KL/yaezNwoPUmzYSEBCtlr9Pp8PHxUYu6\n9YC9aRxdgefQcvi6U/GJwSSltCd85j60DWKRwB7z2KURQ3+1U2aFQtGAKDAUsC52HTtP7+SJXjNp\n1+pinEcnByceHjqBPZ5JdO/ui4uLpnKMRiOHDx+2Spbk4uJCeHi42rFbT9g7838bzTb/G3AYqJhD\nzQ6klHlCiDeB+UKIZLQngEeA9mgpIRUKRSMiKjmKFYdWkJqTRnx8FpN/fYVlj88nJMQ6ymZERKDl\nfWFhIXv27OHChYthmr29vYmMjMTNza3eZG/q2Kv8/wHMllIurIVjzgHygLfQksAfAEZIKWUtjK1Q\nKOqBrMIsvjr0lSXk8tFjGZw/n0cLU0s+X3aQ558bhF5f0XSTnp7Onj17KCgosJRdc8019OzZEwcH\nh3qTX2G/8ndGi+tz2UgpTcAC859CoWhEmEwm/kz8k9XRq8krvrjzNqxDa/xOd6RFQUeah3pQUGCg\nWTMnq75paWns2rULo1EzHOh0Ojp37kz79u2Vjf8KYK/y34QWvG1rHcqiUCgaMGl5aXwZ9SVHUqw9\nsq8Lvo5/dP0Hf/uk4e7uREREoE1l7uPjg5eXFxkZGTg5OREeHo6fn199ia8oh73KfxnwiRDCF9iJ\nZraxQkq5ojYFUygUDYc/T//JikMryM7P59ixdFq1cqfTNcFM7DGRLn5dALj++qojbDo4OBAREcHB\ngwfp0aMHzZo1qw/RFZVgr/L/xvw6xfxXHhOglL9CcZXi6eLJ+bQsYmLSKCkx4ZvZg2fvnIG3R+UK\nPzs7Gw8PD6unADc3N/r3718fIiuqwV7lr3zwFYomTDf/bgztOIjTR/6gbc5QPEsCORqbTUREReVv\nMpk4efIkMTExdO3alXbt2l0BiRXVYZfyl1JanHGFEO6AJ5BmjvmvUCiuIs5lnyOnKIeOLTtalU+J\nmEgv/c38uD6e++4Lo2PH5hX6GgwGDh48yNmzZwGIiYnB29tb+e43QOze4SuEuB5YCISjJXFBCLEb\neF5KublOpFMoFPWG0WTkl+O/8L38Hp3BhfvaPEnf3m0s9a6OrvSLvIaIPq1xdKwYGSY7O5u9e/eS\nnZ1tKfPx8VG2/QaKvTt8B6N5/MSi+eknA62BccBGIcQNKmm7QtF4ScpJ4rMDn3Ei/QRnEnOIT8ji\n6I4PWdl2Ds2bu1ra6XQ6HB0revKcOXOGqKgoDAaDpaxt27aEhYWpIG0NFHtn/i+hhV8YZfbTB0AI\n8TLwI1qu3xtqXTqFQlGnGE1Gfj3xK+ti12EwGjAZISkpF/diP/zyurNixRGmTetdeX+jkZiYGE6e\nPGkpc3BwoHv37gQHB9fHKSguEXuVfwQwrqziB0tQtkXAV7UumUKhqFNSclP49MCnHL9w3FLm5OjI\ntBsm8tcKL4KDvBgzpn2l/fPz89m7d69Vfl13d3ciIiLw8vKqtJ+iYWCv8k8HPCqp8wRKakcchUJR\n15hMJraf2s6amDXkFOTh5KiFVQj2DmZKrykEeQXR3zcVIVrg4GDbZGMymdizZw8ZGRmWslatWtGz\nZ0+cnJxs9lE0LOw1xm0B5gohWpctNH+ei4rIqVA0Gj7e+zFfHlxG3IkUdv+VRF6egdFiNM8NfI4g\nLy3kcteuvpUqftBs/927d0ev11vy64aHhyvF34iwd+b/HFoI5qNCiB1AEhAIDASygJl1I55Coaht\nuvh1YdX2zZw7l0szYwv85ShuvmskDjVcmPXx8bHs1FWunI0Pu75tKeUZoDfwPuANXAv4AIuA3lLK\nE3UmoUKhqFUGtRnEDd37EmIIp0/2vQS4BpGXV/WWndTUVJKTkyuUBwcHK8XfSLHbz19KmQQ8U4ey\nKBSKWiYuLQ5PZ09aebaylOl0Op674WkGOCZiMJgYNqyNzfDLoNn24+LiOHr0KI6OjgwaNAh396pj\n+CgaB5UqfyHEbOBTKeU58/uqMEkpVYhmhaKBYDAa+F5+z8/Hf6Y41ZOn+z5Dt64Blnq9Ts/117ep\nYgQoKChg3759pKWlAVBcXMzhw4fp169fncquqB+qmvm/jLaQe878vipKY/QrFIorTHJOMkv2LyHu\n/Ani4i6Qnp7I3LilfPH8jAox9isjJSWF/fv3U1hYaCnz9fWlZ8+edSW2op6pVPlLKfW23isUioaJ\nyWRi5+mdrDy8kqKSInQ6yMkpprkhGI8swaZN8dx+e8cqxzAajUgpOXbsmKVMp9PRqVMnOnbsqJKu\nXEXYG95hDrBYSnnWRl0IMF1K+XhtC6dQKOwjrziPZVHL2Ht2r6WsmYsLjwyZzP5vvbhpRFtuvbXy\nDVsAeXl57Nu3z2rTlouLC3369MHX17fOZFdcGexd8P0PsBGooPzRPH8eBJTyVyiuAMcvHOeTfZ9w\nLj0FV1ftX7qVZyum9plKkFcQyT1zCQioepE2KSmJAwcOUFx80evHz8+P3r174+LiUqfyK64MVS34\n7kBT7KBF8dwlhKis+d+1LJdCobCDn4/9zOrD35ht+wWEhwcwvNMwxoaNxdnBGaBaxQ+aaadU8avc\nuk2Dqmb+U4G70BT/POBjILFcmxIgA/iuTqRTKBRVkl2UzaHDKWRlFeFocsE3YRjj7xpfY6UdEBBA\naGgoycnJ9OnTh+bNK8bqV1xdVLXgGwvMBxBCOKDZ/M/Ul2AKhaJ6bu98O391P8T2388icm+iV8+u\nlJSYbIZdLsVkMlFQUICbm5tVedeuXRFCqBANTQR7M3m9CCCEaAk4Y07mgrZD2B0YJKVcXCcSKhQK\nQAu/XFRShKvjxfj6jnpH5tw8gz/cztM60IsePfyqHKOwsJADBw6QlZXFkCFDcHZ2ttTp9XoVe78J\nYa+3T3dgORBWSRMToJS/QlFHZBZksnjfYk7H5/HMkCe55hpPS52niyc3j/CsorfG+fPnOXDggMV3\nPyoqivDwcGXXb6LY6+3zOtASmAHcChQC64GRwC3A9XUhnEKhgCMpR/jgr4/ZF32KtLQC0o8tYcns\nx22mUrRFSUkJR44csUq4Aqj0ik0ce5/xrgVekFK+CawC3KWUH0gpR6Mt9io3T4WiljGajKyX63n7\nr7dJz80kPb0QHXA+NYfNmxPsGiMzM5Pt27dbKX4XFxf69+9P165d1ay/CWPvzN8FOGp+HweU3eP9\nKfBhbQqlUDR1sgqzWLJvCbGpsQA0a+ZE947XYNoXyZ2DBzJsWNVxeUwmEydOnCA2Nhaj0WgpDwwM\npEePHsp3X2G38j8FhALb0ZS/lxAiREqZABQALepIPoWiyRGXFsdHez4mpyjbUtbZtzP3D7+fC8NM\nhIb6VNk/Pz+fAwcOkJqaailzcHAgLCyMNm3aqNm+ArBf+a8FXhVCZEsp1wohYoGXhBALgKeA41V3\nv4gQoisQbaNqkJRyh73jKBRXGyaTiY1HN/LB1uWcPZtDr97+ODk6MKrjKEZ1GoVep8c7tPpxUlNT\nrRS/j48PvXv3xsOjskysiqaIvcr/RaAj8ADajeAp8+sEtI1e99TgmN2BVPNrWdJqMIZCcdXx8/Gf\nWbhuKedT8gFIPFHEW5Nm0cWvS43GCQoKIikpieTkZDp06ECnTp2UC6eiAvb6+ecBdwohXMyffza7\nf/YB9kkp7Z75A92AGHNyGIVCYWZIyBC+br2R8ynH8Da0JiJ3LKGeVUfhBDAYDDg6XvxX1ul09OjR\ng9zcXFq0UBZZhW3szuQFIKUsLPP+ODUw95ShG3DkEvopFFc1bk5u/GfU0/wvax0D/UZwx+2dqnTn\nNBgMxMTEcOHCBQYNGoSDg4OlzsXFRS3qKqqkqsBuR9E2b9mDSUpZadS3cnQDXIUQu4C2wGFgtpRy\nt539FYpGT3ZhNhsPbGeEGIaPz8UduyE+Ibz1r8eqXZRNS0vjwIED5OXlARAbG0tYWGV7MBWKilQ1\n8/8D+5W/XQgh3IB2QApaPuBC4FFgmxCij5RSPREornqOnI/lhbX/I+bEGf7yv8B/n55gpeyrUvwl\nJSVIKTlx4gQm08V/z/z8fEwmk/LkUdhNVYHdptT2waSU+UKI5kBhqQlJCDEFCAceAR6r7WMqFA2F\n0k1bX+9fR8zxZEzApqRv2PBLBKNGdK62f3p6OgcOHCAnJ8dS5uTkRLdu3bjmmmuU4lfUCHtj+1xX\nXRsp5U57xpJSZpX7bBRCRAPB9vRXKBojF/IvsHjfYo5fOI6HhxNBwZ4knzIwrMWd9O1d9YYto9FI\nXFwcx44ds5rt+/n50bNnzwrRORUKe7B3wXcH1ZuAHKqpRwgRDmwFhkop95rLHIBewGo7ZVEoGhV7\nz+5lWdQy8orzLGUj+vSla9hN3Hx9V/T6ymfsmZmZ7N+/n+zsixu+HB0d6dq1q9qwpbgs7FX+Q22U\neQCDgEloSV/s4SAQD3wkhJgG5AAzAV/gbTvHUCgaBQXFBbz83Yf8IrfRo4cfep0OvU7PGDGGmzrc\nhF5Xve99SkqKleJv2bIlvXr1UkHZFJeNvX7+2yqp+lEIkQM8jxbts7pxDEKIW4DX0KKCuqMtLA+W\nUp63T2SFouGTmJnIg5+8yMnzWtrrUwlZ9OkSytQ+U2nfoupE6mVp3749586dIzs7my5dutC2bVs1\n21fUCjXy86+E7cAsexubs4FNqIXjKhQNFg8XD9x9TGCe0rikteW5Af/Gy63yEAslJSUUFxfj6nrR\n9VOn09G7d290Oh3u7tXn4lUo7KU29nyPBrKqbaVQNCF8XH2YPWoafs09mRQ2mTWzX65S8V+4cIHf\nf/+dvXv3Wi3qAnh4eCjFr6h17PX22WSj2AHNQ6c9sLA2hVIoGhMlJUZW/fwnYwZH4uFxMS1i71a9\n+fGpxXi6Vq70DQYDsbGxxMfHW5R+fHw8oaF2RHBTKC4De80+zlT09jEBMWj2+6W1KZRC0Vg4cuIM\nM5e/ybHsI5xKfJhZD1ovfVWl+FNSUoiKirLs0gXNk6dsmAaFoq6wd8H3+jqWQ6FodOw9u5d3/lzM\n0exTAKyKW87ImD706Nq6yn5FRUXExMRw+vRpq3J/f3969Oih/PYV9UKNFnzNnjqDgOZAMrBFSvl7\nXQimUDRUcopy+OrQV+w5uwdXL/D3cyM1rYCbe1xHpw4tK+1nMpk4e/Ys0dHRliTqAM7OzoSFhald\nuop6xV6bf0tgIxCBFo8nBfAHXjCvB9whpSyoMykVigaAwWDkr4S9rD2+iuzCi7734WGh3NnuXgZ2\n7lNpX5PJxJ49e0hKso5k3rp1a7p166YicCrqHXtn/u+ipXEcLaX8sbRQCDEGWAK8CjxZ++IpFA2D\n6LgzzF7xHuedJd27+6JDm6EPaDOAsV3H4uZUtalGp9NZbcxydXWle/fuBAYG1qncCkVl2Kv8bwGe\nLKv4AaSU3wshngPmo5S/4iplb/xhpi6eRwG5kAdJSbl0aRvEpJ6T6Obfze5xhBAkJSXh7+9Ply5d\nrBKwKBT1jb2/PgOQUUndOTRvIIXiqiTYz5/AYGfiT+fi4KAjzLs3L1z/CM2cbIdYMBgMHDt2jLZt\n21pt2HJ0dGTIkCFK6SsaBPZu8nofeEUIYeXGIITwQtvd+25tC6ZQNBT83f154qZJtLsmgEVTXmDB\nuBmVKv7z58+zbds2jh49SnR0dIV6pfgVDQV7f4mtzX/HhRA7gLNAS2AA4AkUltkIZpJS3lTrkioU\n9cCe6JOs+fVPXp52j1UKxREdhzM4dFClSj8/P5/o6GjOnTtnKTt79iyhoaEqj66iQWKv8u8AHCjT\npzQAeWmZA3aEdFYoGiomk4lXln/FyqjVGCmh09oQ7h87wFKv1+ltKn6TycTJkyeRUmIwGCzlzs7O\ndO3alebNm9eL/ApFTbF3k5etkM4KxVVBck4yX0Z9ya7c/RgoAuCzvV9wz6hImjWrfDkrPT2dQ4cO\nkZmZaVUeHBxM165dcXZWS2GKhktNN3l1BYYA3mi+/juklLIuBFMo6hqD0cCm45v4Me5HDEYDrVq7\nk5qWj7dDS+aPe6xSxV9UVERsbCynTp2yCsLm6elJ9+7dadmy8o1eCkVDwd5NXnrgI+B+oOwWRJMQ\n4kvgn1LKWk32rlDUFSUlRlZs3MFhh01kGFIs5Q46B566dQK3dx2Ns2Pls/aMjAwSEhIu9nNwoGPH\njrRv3x69vjYC5SoUdY+9M/9ZwH3m1+VooR1aAeOBeVwM8KZQNGii5TnmfPUhR/L24OfnRufO2iw9\nxCeEST0mEexdfSppf39/AgMDSUpKIiAggG7duqnMWopGh73K//+A+VLK18uUJQKvCSFczfVK+Ssa\nPCvkZ8Tk7QHgfEo+bYPhvr7jGBo61GZaxeLiYvLy8vD29rYqDwsLIzg4WO3QVTRa7H1GbYWWbtEW\nO7no/aNQNGimDroHf79mODjoGBbWl9dGvswN7W6ooPhNJhOnTp1i69at/P3331aePADNmjVTil/R\nqLF35n8CuBbYbKPuWrRdvgpFg+Lo8VTc3Vxo3drTUhbaPJRHht+Dv1sg13e6zmYUzYyMDA4fPkx6\nerql7NixY3Tu3Lle5FYo6gN7lf9iYIEQIhdYiWbzDwDuBWYDr9SNeApFzcnKKmTRqp9ZI1fRr+X1\nLJo11UrJ393rLpv9CgsLiY2N5fTp01ZePG5ubhXMPgpFY6cmUT17A28A/y1TrgOWoQV2UyiuOFmF\nWSzZv4xlxzdg1JvYceEnfv19MMOHiEr7GI1G4uPjiYuLo7i42FKu1+tp3749HTp0UGEZFFcd9m7y\nKgEmCyFeQ0vm0gJIB36XUlYMYKJQ1DNGk5Ft8dv4LvY7CgwFXHONB6dPZ9PSzwX3VrmV9ktJSSE6\nOprs7Gyr8oCAAMLCwlTidMVVS02nM6fR7P/pwHnze4XiipGamsfhM0f5I/MHTmWespS3aePJoHb9\nefyGf+LtattkYzAY2Lt3r9Vs393dnW7duuHv71/nsisUV5KabPJ6DXgUcOLiRq9cIcR8KeWrdSSf\nQmGTwkID3/0Ywyc7VnDB4wjh4QHo9drPMsAjgPHdx9PZt+oFWkdHR4QQHD58GEdHRzp27Ei7du3U\nRi1Fk8Demf9c4AngLeAbtFl/ADAWmCeEyJJSvl8nEioUNjiWdpzX9rxMnmMuFMDpxGw6hLZkZMeR\njGg/Ake99U/bZDJx4cKFCqEXQkJCKCwsrBB7X6G42qnJJq95UsqXypSdAP4UQmQDT6HF/Fco6oX2\n/iGIji3ZfyQXT09nrm3Xh2lD/olvM98KbVNTUy12/YEDB+Lj42Op0+v1yoVT0SSxV/l7A7srqdsB\nzBPSiWcAAB0kSURBVKgdcRSKimRnF3HqVBZhYRcVu6ujK08M/ycfOi/jiWH30zOwZwWf/dzcXGJi\nYqySpsfExHDttdfa9O9XKJoS9ir/H4B/AT/bqLsH2HApBxdC9Ee7edwopfztUsZQXL0YjSa2bElg\nyYafydSfZeWc2Xh5uVjq+14TSe97euHsYB2EraioiKNHjxIfH4/RaLSUOzg40LJlS0wmk1L+iiaP\nvcr/d2C+ECIKbZPXObRMXrcCA4H/CSFmm9uapJQLqhtQCOEOfIlKAqOohJScVP63/R1OOmpRwxet\n+pnnHhhjqdfpdFaKvzJ/fYCgoCA6d+6Mm5tb/QivUDRw7FX+75lfvYGXbdSXNfuYgGqVP/A/tOBw\nHeyUQdFEKDGW8OuJX1kftx6PDtlwCJq5OZLach8wpkJ7k8lEUlISR44cITfX2qe/RYsWhIWFWdn5\nFQqF/Zu8atX3TQgxEhgF3AJE1ebYisaJwWDk2LF0HP3TWR61nLPZZwH+v707j6+yuhM//rm5Nxsh\nIQkJOyQkJN8AyqIosgqKMm64jrXVVttxbHU6rlU609rFrXban621/sZO67TWutQuKipadgW1WNxQ\nhC8Q9rAFEMhCQpY7f5wnyU2AcIHkLuT7fr3ySnjOc89zDve53+fc85znHLIyUxg+LIcZo6Zx1fDD\nT8vg8/nYuHFjq8CflpbG0KFD6dOnj3XxGHMYEX9mXURygCeBr+IeFjNd3KpVu3nquQ9Zun8O/cbu\nIi0tsTltQMYAZk68loKsgnbzGDZsGG+99RaBQIDi4mLy8/NtvL4x7YjGhCW/Amap6hsiMiAKxzcx\npLGxkf9+ZRYLq1+lLrGGqrVJjByZS0oghRkyg3MGn9NquuXa2lrWrVtHcXExfn/L7aKMjAxGjx5N\nbm6urZ1rTBgiGvxF5HrcBHEjInlcE7t8Ph+5o3bTMK8Gf4KP3NxURvYeyRdP/SLZqdnN+9XX11Na\nWsq6deuor68nKSmJwsLCVnn1798/0sU3Jm5FuuV/AzAA2C4i0DJNxOsi8pSqfiPC5TERVl5eTW5u\ny5KHPp+Pmyd8leVln9EvJ5uvjvkyI/uMbE5vbGxk48aNrFmzhtra2ubta9asIS8vz2bbNOY4RfqT\ncx0QOtauD7AYuBGYG+GymAg6cKCOl18u5aXF7zLz69MZPaJfc1rPbj25/+KZ5Gfmkxxw4/iDwSBl\nZWWoKtXV1a3yysjIYOjQoa26fYwxx+aIwV9E+h0p7XBUdWsY+5S1OUaN92eZqu48luOZ+PL8i8v5\n3XvPsjNtFQ+9sJ1nSu4hKakleEuOm28/GAyyc+dOVq1axf79+1vlkZqaSklJCf3797cRPMacoPZa\n/ltwY/bDZc0wc4hgMMiSTUtYlv4nPu+2HuphW9oHbNy9haK+eYfsv2zZslbTMQAkJSUxZMgQ8vPz\nrbVvTAdpL/h/jZbgnw08jFvD9wVanvCdgXvK987jObiqbqGl39+cJOrrG0lI8LGtcivPfPIMpXtK\nARhS5B60+qcRk+idnXXY12ZnZzcHf7/fT0FBAYWFhSQmJh52f2PM8Tli8FfV3zX9LSIvAr9X1X9t\ns9uzIvIocDXwP51SQhNX1q3by2+f/pik4crWlA9pDLbMrTN00CC+dOqXGN5rOAA1NTWHTKOcn5/P\nhg0b6N27N0VFRSQnJ2OM6Xjh3vA9H7jsCGmvAm0vCqYLWr68nPv/56+sTVlI/QeVjBnTh6REP/4E\nP+cXns+FRReS5E+iqqqK1atXU1ZWxuTJk8nIyGjOw+/3M3XqVHtAy5hOFm7w3wWcyeFH5EwByg6z\n3XQxtdmbKO05m5oD9fgbfVRWHmTskBFce+q19E3vS3V1NSvXrGTz5s0Eg65HUVU544wzWuVjgd+Y\nzhdu8P818D0RSQVmAeW0rOR1K3B75xTPxJPT+o1i0ojhLFujjCjpz3WnfYHxA8dTU1PDJ598wqZN\nm1pNsQxuHH9DQ4PdyDUmwsIN/g8CmcDdwH+EbK8B7lXVxzu6YCZ2NTQ0Mn/+JqprarlshjRv9yf4\nue2cG1kyZAlXDL2CQGOAFStWsHHjxkOCfk5ODiUlJWRlHf7GrzGmc4U7q2cQ+JaI3A+MA7JwXUHv\nqGpVuy82J5WKioP8+JHFvP3536jx72XMaT9lwICWPvuCrAIGZw4+YtDPzs5GRMjJOXS5RWNM5BzT\nE76qug94o5PKYmJcMBjk4z3vsTjxSXYm7QPgiddm8cDXr2u1n8/no7KyslXgz8rKag769oCWMdHX\n3hO+awj/Ia+gqsrRdzPxasv+LTz7ybOU7illUGEKez6uYNDAdIacWU9jY+MhN2mLi4spLy8nMzMT\nESE3N9eCvjExpL2W/9sc2xO+5iSzZUsFS9/fTMOQT1m4fmHzmP1u3RK5YMpwrparSN6fzKJFi5gy\nZUqrC0B2djYTJkwgKyvLgr4xMai9h7xuaPpbRK4B5qtqeSQKZaIrGAzywgureGHJAtamvEnxvhSy\ns9x8fP4EP1P7T6UgWMD2T7c3d+1s3ryZvLzW0zVkZ2cfkrcxJjaEO6D618DkziyIiR1Bgsza+RSf\npc7moK+Kdev2ESRIUXoRV/e8mtQtqWzdsrVVn355ubULjIkn4d7wLQO6HXUvc1JI8CUw7axTWL71\nU7qnJ3F6YR5Tu00kuTKZioqKVvtmZ2dTXFxso3eMiTPhBv//Bh4VkbOAj4HKtjuo6rMdWTATGXv2\nHGDhws1cfnkRCQktffNfGHUFH23+kJKEIfT19cVf7ScYcgsoJyeH4uJisrOzrU/fmDgUbvD/mff7\n5iOkBwEL/nHmjTfW8+zsd1gbWEJyj1u4eNqpzWndErvx4AU/ZMmbS6irq2ve3qtXL4qKiqw/35g4\nF27wH9yppTARt792P/PK/8qylAUEgcfmPc3UcfeRltYyy2b31O7k5+ezdu1a+vTpQ1FRET169Ihe\noY0xHSbcJ3w3Nv0tImlAOrBbVeuO/CoTi+ob61mwfgGvrX6N6owDpKT4yfWnI9n1fPjpMiaOndhq\n/4KCAvr37096enqUSmyM6QxhP+ErIlOAHwOn4y3AIiLvAd9V1fmdUjrTIXbvPsBrr5VSMLGS19e/\nwq7qXdAIqZUpnN2riN7dcinMKmRv+V6qqqpIS0trfm1SUhJJSUlRLL0xpjOEFfxFZDIwB1gFfA/Y\nAfTDLeLyuoicq6qLO62U5rgtXLiJ/31xEasT36TH3ioKBmaSUpFCUmUSaYE0CnoXkJXiJlcLBAJU\nVFS0Cv7GmJNTuC3/+4F5wEXeJG8AiMgDwGvAD4BzO7x05oS9XzWfZSl/JsWXSOKOHqT50kkOJJKX\nmUff9L748JGSkkJBQQF5eXkEAsc03ZMxJk6F+0kfA1wdGvjBzfYpIo8Dz3V4yUyHmH7GGN78cBG5\njRlkZqSQlzmQgRkDCSQE6N69O0OGDKF///62gIoxXUy4wf9zoPsR0tKBho4pjjle5eXVPP+X5Xzh\nilPp1aul2+aUXqdw1mklJO0MkJ+ZT0oghezsbAoLC+ndu7eN0Temiwo3+C8AfiAii1V1a9NGEemH\n6/KZ1wllM2Gat2gNP3v5j5QFPmD7Mxdy/21fa27J+3w+7p5+F0vfXUpqaiqFhYW2gIoxJuzg/x/A\nMmCNiCwBtgN9gInAfmBm5xTPtKe2vpYF6xfwl7JXqU/Zz3B/b7buWsHHH69m9OiS5v2SAklMmDDB\nunaMMc3CHedfJiKjgbuASbiHvj4HHgceUdXtnVdE01ZtfS0L1y9k/or51O+pJ/tAGgndA9TXN9I7\nO42tu0oZFZRWXToW+I0xodpbzOVs3DKNdQBegL87UgUzh9pWvpf/+uMzHEhbTVpdAH+dn0QSAeiV\nncHgrHwK+hRQWFAY5ZIaY2Jdey3/hUCViLyFG+M/T1VXRKZYpq1fzn6OV5f8jayEFFITE8nI8QOQ\nEkhhUMYgThl8CoWFhbZMojEmLO0F/8txffqTgJ8AfhHZjru5Oxd3MbDunghJy2qkpz+VhGACdXWN\nUB+guE8BY0rGUFhQaNMvGGOOSXsreb0MvAwgIt2AcbiLwWTgCSBVRFbgLgRzVdUWdu8gazdup1dW\nOhkZLUM2rzztEua/u5jUilROzStm+oQp5Ofl29QLxpjjEu4N32pgvveDiASAs4GbgG8CtwP+cPIS\nkQG4KaLPxa0k9gZwZ+gQ0q7q9SXv8cLCWdTU7OZcmc6NX7msOS0jOYP/vPo2uge7M8AeyjLGnKBj\nmdgtBZgCTAOmAiNw8/i/h7snEE4ePtx0EOVeHgC/AF7BTRjX5TQ2NrKsdBmLPlrE5k3bqa+tJeBL\n4KO1H1JVdT5paS0LqA0bMDSKJTXGnEzaDf4icgow3fuZCKQApbhgfx+wUFX3H8PxegMrgW+r6gbv\nGI8AL4lIlqp+fsw1iDMVFQf54IMdbNr8Ob1KtvHeiveoqHRLI6Yk+/H5gCD4UhrYtWtfq+BvjDEd\npb2hnluAvrjx/ItwXTtzmoL28fBuEF8TcowBwNeBf3SFwF9bW8+3vzObiqTPIHkHuXsS8ftbum98\nPh+F+QM574ypjDv1TBu1Y4zpNO21/PsBu4AncTd1F3fk4i0i8hJwKe7iMvUou58UKhr2srf3HBIO\nuKB+4EAC3bsn4EvwMXjQYKaPmc7g3rZomjGm87UX/KfhunsuAO4BqkPG/M9R1ZUneOx7gYeA7wJz\nRWS0qpadYJ4xYdeuaubO3UhxcQann96/eXvP1J5k9k2nZks1qakBuvVIYmTJCC44/QKy02xNXGNM\n5LQ31HMBbkK3mSLSG3chOA83z8/PvG6hubiLwVxV3XMsB1bVTwBE5BpgM3A97mIQ1955ZwvPPreU\nuuQNfLoukVGj/g2/3w2E8vl8XDftMma/M5txw8Zx7rBzSQ4kR7fAxpguKdyhnjuA33s/iMgo3IVg\nMvA7L5/Eo+XjXUSmqurzIXlXi0gp0P/Ir4x9VVVVrFm3ho/WL6WqxyrqOcjW6mSWLy9l9Oji5v3G\nDhzL2C+MJcFnQzWNMdFzTMs2iUgm7mGv8cBY3CIvAeD9MLPIA54TkbWquszLswcgwFPHUpZoa2ho\n5P33t9G7dyO6fiWfbfqMHZU7aAg2kJjaiL/RT1qaj/LaDUBL8Legb4yJBUcb6lmEC/QTvN8luAez\nPsM98PVLYNExDPdcBiwGfiMiNwF1wMO4cf9xE/wXLVrL3LkfsL9+A937HqAhsapVekZ2Ir5MH2cO\nO5Mz5cwoldIYY46svaGe5UA24AM24YL9Q8CC453TR1UbReQK4KfAq7jnBv4GnK2qlceTZzQs3bCY\nMj6mIbGOyr0+cnPdWPy61Doye2cydfhUzhp4Fkl+m3rBGBObjjar5zxgvqqWdtQBVXUXcENH5deZ\nGhsbWbduG4WF/VqNuR80Mo1PSg8S8CUQ6ObjQEYNUljMtOJpSE+x8fnGmJjX3mifqyNZkFhSVVXN\nnDkf89HyVeyrKedb//YVBgzo05w+vWQa8/IX0CMrhYklEzk7/2x6dusZxRIbY8yxOaYbviezhoYG\nduzYwaZNmyjdUsrSFavZW7cb/EFmz/87N13fMsladmo2d196O4VZhST6jzrIyRhjYk6XDv7BYJBd\nu/awbt1GyndvpWxvGdsqt1FdV02wWz3BfUGCviCbDmw45LUlOSWHZmiMMXGiywb/DRu28drsJazf\nuomG1P0kZ9bSSGNzeiAzSF1KDcUykIuGjYtiSY0xpuN12eC/+vM1/KPsbRp8dfgOQG56N3xJQQ52\nP4gvw8eYvDFMyptEXo88u4FrjDnpnNTBPxgMsn37TpYtUyZNGkVmZkZzWmFef2pTqvHV+qlIOEAw\nvZahhQVMypvEGf3PICWQEsWSG2NM5zrpgn8wGGT//v1s2bKFxYtXsHZzGRXBPdQT5PJLzm7eryCr\ngJ5FPahoqOS6kRcyKW8i/dL7RbHkxhgTOSdN8K+urqasrIyysjJ2793NzqqdaMVGdvsqwAdLP13G\nZRdPbu7C8fl8fO+Su8lOzSaQcNL8NxhjTFjiOupVVBxg8eIVrFy5gSCV5AyA7ZXb2VPjJhhNSGqk\nLthAhb+axMwdBIPBVv33vdJ6RavoxhgTVXEd/Ldt28O8N5dQnfA5tYG95CQn4/NB0BekLrWOurQ6\nUvvCBcXnMnHQRFv03BhjPHEd/Gsz9rA9ZRX+Bj/BYJAKGgn0dIFfegnjB45ndJ/RNme+Mca0EdfB\nvyS3hECvBGrra0juBRk5PZkwcAITBk0gp1tOtItnjDExK66Df6I/kRlTz2FX9S4mDprIsNxhNl++\nMcaEIa6DP8CVQ6+0h7CMMeYYxX0z2QK/McYcu3hp+fsBtm8/rjVkjDGmywmJl/7DpcdL8O8LcO21\n10a7HMYYE2/6AocsyBUvwf8fwCRgG9AQ5bIYY0w88OMC/z8Ol+gLBoORLY4xxpioi/sbvsYYY46d\nBX9jjOmCLPgbY0wXZMHfGGO6IAv+xhjTBcXcUE8ReQIIqOqNIdu+DMwEBgOfAt9V1bkh6bcAj7fJ\nqkFVAyH73AHcDuQCbwO3qOqaGKpDEvAj4FogDXgL+Kaqro+HOojID4DvHyG776vqfZGsw3G+B4OB\nR4HJwAHgVeBuVd0bsk/MvgdeepFXh/FAJfAkcL+q1keqDiLSG/gv4HwgFVgK3KWqn3rp53vpAqwB\nZqrq6yGv7wX80nv9QeC3wHciVYcTLX9IPsnAe8BPVPUPbdIidh4dScy0/EXEJyL3AV9vs/2LwFPA\nM8Bo4PfALBGZErLbqcAs3JjWpp/+IXn8C/BD4C5gLO6D/Yb35sRKHX4FXA18CRiHO+lmiYgvTurw\nU1r///cFngB24gJQROpwvOUXkQAwG/ccyTjgSmAi8OuQPGL6PRCRLGAxkAJMBb6IO6d+Fak6iEgC\n8CJQDFyKuwjtA+aLSE8RGYb7rP7Jq8PLwEsiMjwkm78AfYCzgRuAr3pl7vQ6dFD5EZF0L58RhzlG\nRM6jo4mJlr+IFOACxCnApjbJM4FnVfVH3r9Xi8goXCtzkbftFGCBqh5p/od7gEdU9c/e8b6Ee2Ds\nSuDZaNfBe+0NwLmqusDL72ZgDlAIrI31OqhqJa6l2ZTXOOAm4CJVLfM2d2odTvA8KvF+rlbVlV5+\njwEPh+QR0+8BcD3QDbhKVfd4+d0ILBGR+1V1QwTqMBJ38RwW8v/4ZWAPcBEwAfi7qj7o7X+viEwE\nbgNu8s6biUCB9633YxG5G3hMRO5T1dpOrsMJld/bfxrugruXw+v08ygcsdLyHw9sxrXg17dJK8K1\nZkJ9CIz3WmsAw4GVh8vY+wpZTMuFAi9QLcM9NdxRTqQO5wPlTYHfK6Oqap6qro2TOjTzvq08CvxF\nVd/wtkWiDidS/j1AIy4ApYhIDq7VvCyC5T/ROhQBK5oCf0g6wOQI1WETcDGgIdsavd9Z3nEWtXnN\nopDjTwI2hnZ3eunpwKgI1OFEyw9wCe5b2fi2mUfwPDqqmGj5e/1hfwAQkbbJW4GBbbblA0lApvdV\nKQu4wOt3TgPeBO5R1a3AAO81ZW3yOFy+x+1E6oA7GdZ5LYCZtPQD3qGqW4iPOuwK2T4DOA3XhdWk\n0+twIuVX1a0i8u+4vtxbcA2jlbiuB4iP92ArcImIJKhqY0g6QC8i8x7sBl5rs/lWXDfmHOD+oxx/\nwBHS8fap8/7ulDp0QPlR1dua/j7MexiR8ygcMRH8j+Jp4E4RWYi7Wk4G/sVLS8K1+sGdFNcAOcBD\nuD6603BfgwFq2uRbi+sbjYSj1SED1+VwF3CHV7Yf4eowkvioQ6jbgT+p6tqQbdGuQ7vl9/p6S4B5\nuK6eDNx9jD+KyHlEv/xw9PfgBeBe4Mci8n1ca/kXQL2XHvE6iMgM3Ln8iKquFJFuRzn+IemqWici\nQW+fiNbhOMp/NLFwHgHxEfwfxrVaXsdNVLQC+AnuDdmnqnNEJFdVm1ueIrICd2W9ENjgbW57MyUZ\nqOrcojdrtw64C1cPXF/tegARuQrXD3ghsDGkzKFiqQ4AiMgAYApwTpvXH/B+R6sORyv/tbhvKnmq\nWgUgIpfhZkO8kJbWZ8y+B963l3/G9TffibsH8z3cTcd9RPg9EJEbcDfMn8f1c+OVob3jH5IuIomA\nz9snYnU4zvIfTbQ/B81ipc//iFT1oKp+E9eK6a+qI4BqYEfThzQ08Hv/3obrhhiI6z8Fb1roEP04\n9KtXpwijDmVAVWg/p6ruBHbjhvTFQx2aXIq7aL3ZJouo1iGM8p8FrAqti6quw51HQ6Jdfq884XwW\nXlHVfrjuhVzcMMlc3EUsYnUQke94x34C+EpIN9Tmoxz/SOl4+0SkDidQ/qOJ+nnUJOaDv4g8ICIz\nVbU2ZDTPZbj+N0TkVhHZ6rUOml6ThzvhV3hBdA0tfbeISHdgDG4sfdTrgLuJlyYiQ0Ne0wfXhVUa\nJ3VoMgl4M+TDAjRfzKJWhzDKvwUoDh1uJyJ9gZ7AmmiXP5w6iMhEEZkvIn5V3aaqB730KuCdSNVB\nRO4BHgC+p6r/rqqhUwcvCT2+Z2rI8ZcABSIysE16BfBRJOpwguVvVyycR03iodtnA/D/ROQTYBWu\nP/kM4GYv/TXgQeBJEXkI92F9FFiiLQ+/PAL8VETW4h6MeQjXOv1rjNThLdwF4DlviGcV8HPciIPZ\ncVKHJqNxY9EPJ5p12ED75f897qv90yLyQ1zf7M+Aj4A3YqD84dRhFe5G+49F5HFgFPAY8JCq7o9E\nHURkhJfn/wK/9hoxTSq88rzv/R8/h+tqGxtSh3eBv+PutXwTaHrg6hHvYtapdeiA8ocj2ucREAct\nf1X9Da5f81fActwQuHNUVb30UuA8XBfPe7gHMJbjRpw05fEE7gLxCO7ESgL+KeRkinYdgl55l+Eu\nZm/j+mjPaypjrNchRF/csMnD5RG1OoTxHpThvrWk4y7Es4B1wHT1niyN9ffA6/68xKtH0/2A76vq\nQyF5dHYdrsHdj/gaLqCF/tyhqp8AlwNX4S6sM4BL1BtT730WLgd24N6H3wK/Ae6LUB1OqPzhiPZ5\n1MQWczHGmC4o5lv+xhhjOp4Ff2OM6YIs+BtjTBdkwd8YY7ogC/7GGNMFWfA3xpguyIK/6dJE5AkR\nCYrIhUdIn+GlfzfSZTOmM9k4f9OliVtxaQUQBIZ7c6s3pfUAPsNN/TBeVRuiU0pjOp61/E2XpqoV\nuBWYBuEesw/1EyAbuN4CvznZWMvfGEBEfgd8GdfCXyoik3Fz5t+pqj8P2e8buCX7CnCzMD6BW6A7\nGLLPzcC/4tYH8OG+PTygqi966Tfi5m6aiVuCMQEYo26ZRWMiwlr+xjh34OaTeUxEkoD/j5tw79Gm\nHUTkXuBx3PxLl+DmnXmQkHV+ReRO3AIqL+DWAbgOtwzgc94soU1ScZOBXY+bM2ZDZ1XMmMOJh1k9\njel0qvq5iNwCvAjMxXUDXdzUoheRLOA/gV+o6re8l80RkWrgYRH5hTc5XD7wsKqGXhA2A0txawa8\n6G1OAH6gqq93fu2MOZQFf2M8qvqSiDyPm9nxpjat8Qm4ZfZeabNg/Szcco9TgT+o6q3QfLEQ3EIw\n53r7tl3u8qMOr4QxYbLgb0xrf8MF/7Yt8p7e7/lHeF0/ABEpwk25PBW3Lusq3Jzt4Pr/Q1ViTJRY\n8DcmPE3rFP8zLetChyoTET9u8Z39wOnAclWt9xYIuTYipTQmTBb8jQnPu0Ad0EdV/9y0UUQmAvcC\n38a17IcA31DVD0Jee4H32wZYmJhhwd+YMKjqDhH5OW6JxCzcamv5uGcDduOGcx7ELdB9u4jsxH0D\nuAC41csmLdLlNuZIrCViTPhmAt/BdeG8jlvk+1XcUoq13sigS4GdwNPAH3Fr7F4ErMUtr2hMTLCH\nvIwxpguylr8xxnRBFvyNMaYLsuBvjDFdkAV/Y4zpgiz4G2NMF2TB3xhjuiAL/sYY0wVZ8DfGmC7o\n/wAU/PgZNwB+ZwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_results(system, title='Proportional model, factored')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** When you run `run_simulation`, it runs `update_func1` once for each year between `t0` and `t_end`. To see that for yourself, add a print statement at the beginning of `update_func1` that prints the values of `t` and `pop`, then run `run_simulation` again." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Combining birth and death" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since births and deaths get added up, we don't have to compute them separately. We can combine the birth and death rates into a single net growth rate." + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update_func1b(pop, t, system):\n", + " \"\"\"Compute the population next year.\n", + " \n", + " pop: current population\n", + " t: current year\n", + " system: system object containing parameters of the model\n", + " \n", + " returns: population next year\n", + " \"\"\"\n", + " net_growth = system.alpha * pop\n", + " return pop + net_growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how it works:" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "system.alpha = system.birth_rate - system.death_rate\n", + "\n", + "run_simulation(system, update_func1b)\n", + "plot_results(system, title='Proportional model, combined birth and death')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Maybe the reason the proportional model doesn't work very well is that the growth rate, `alpha`, might be changing over time. So let's try a model with different growth rates before and after 1980 (as an arbitrary choice).\n", + "\n", + "Write a function called `update_func1c` that takes `pop`, `t`, and `system` as parameters. The system object, `system`, should contains two parameters: the growth rate before 1980, `alpha1`, and the growth rate after 1980, `alpha2`. It should compute and return the simulated population one year later.\n", + "\n", + "Note: Don't forget the `return` statement." + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": { + "collapsed": true, + "scrolled": false + }, + "outputs": [], + "source": [ + "def update_func1c(pop, t, system):\n", + " if t < 1980:\n", + " net_growth = system.alpha1 * pop\n", + " else:\n", + " net_growth = system.alpha2 * pop\n", + " return pop + net_growth" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "system.alpha1 = .018\n", + "system.alpha2 = .01575\n", + "\n", + "run_simulation(system, update_func1c)\n", + "plot_results(system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quadratic growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the implementation of the quadratic growth model." + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update_func2(pop, t, system):\n", + " \"\"\"Compute the population next year.\n", + " \n", + " pop: current population\n", + " t: current year\n", + " system: system object containing parameters of the model\n", + " \n", + " returns: population next year\n", + " \"\"\"\n", + " net_growth = system.alpha * pop + system.beta * pop**2\n", + " return pop + net_growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here are the results. Can you find values for the parameters that make the model fit better?" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "system.alpha = 0.025\n", + "system.beta = -0.0018\n", + "\n", + "run_simulation(system, update_func2)\n", + "plot_results(system, title='Quadratic model')\n", + "savefig('chap03-fig04.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To understand the quadratic model better, let's plot net growth as a function of population." + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pop_array = linspace(0.001, 15, 100)\n", + "net_growth_array = system.alpha * pop_array + system.beta * pop_array**2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what it looks like. Remember that the x axis is population now, not time.\n", + "\n", + "The function `sns.set` sets the style for the plots. I added a grid to this one to make it easier to read." + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig05.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "sns.set(style='whitegrid', font_scale=1.5)\n", + "plot(pop_array, net_growth_array, '-')\n", + "decorate(xlabel='Population (billions)',\n", + " ylabel='Net growth (billions)',\n", + " legend=False)\n", + "savefig('chap03-fig05.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using `sns.set` to reset the plot style." + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sns.set(style='white', font_scale=1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the book we found that the net growth is 0 when the population is $-\\alpha/\\beta$:" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13.88888888888889" + ] + }, + "execution_count": 197, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "-system.alpha / system.beta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the equilibrium the population tends toward." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** In the book, I presented a different way to parameterize the quadratic model:\n", + "\n", + "$ \\Delta p = r p (1 - p / K) $\n", + "\n", + "where $r=\\alpha$ and $K=-\\alpha/\\beta$. Write a version of `update_func2` that implements this version of the model. Test it by computing system variables `r` and `K` equivalent to `alpha` and `beta`, and confirm that you get the same results. " + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.025, 13.88888888888889)" + ] + }, + "execution_count": 198, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.r = system.alpha\n", + "system.K = -system.alpha / system.beta\n", + "\n", + "system.r, system.K" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update_func2(pop, t, system):\n", + " net_growth = system.r * pop * (1 - pop/system.K)\n", + " return pop + net_growth" + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n/w+7gjH+B/QktwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_simulation(system, update_func2)\n", + "plot_results(system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** On the Wikipedia page about world population estimates, the first table contains estimates for prehistoric populations. The following cells process this table and plot some of the results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Select `table1`, which is the second table on the page." + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Population Reference Bureau (1973–2015)[6]United Nations Department of Economic and Social Affairs (2015)[7]Maddison (2008)[8]HYDE (2010)[citation needed]Tanton (1994)[9]Biraben (1980)[10]McEvedy & Jones (1978)[11]Thomlinson (1975)[12]Durand (1974)[13]Clark (1967)[14]
Year
-10000NaNNaNNaN2M[15]NaNNaN4.01–10MNaNNaN
-9000NaNNaNNaN4.NaNNaNNaNNaNNaNNaN
-80005.0NaNNaN5.NaNNaNNaNNaN5–10MNaN
-7000NaNNaNNaN8.NaNNaNNaNNaNNaNNaN
-6000NaNNaNNaN11.NaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " Population Reference Bureau (1973–2015)[6] \\\n", + "Year \n", + "-10000 NaN \n", + "-9000 NaN \n", + "-8000 5.0 \n", + "-7000 NaN \n", + "-6000 NaN \n", + "\n", + " United Nations Department of Economic and Social Affairs (2015)[7] \\\n", + "Year \n", + "-10000 NaN \n", + "-9000 NaN \n", + "-8000 NaN \n", + "-7000 NaN \n", + "-6000 NaN \n", + "\n", + " Maddison (2008)[8] HYDE (2010)[citation needed] Tanton (1994)[9] \\\n", + "Year \n", + "-10000 NaN 2M[15] NaN \n", + "-9000 NaN 4. NaN \n", + "-8000 NaN 5. NaN \n", + "-7000 NaN 8. NaN \n", + "-6000 NaN 11. NaN \n", + "\n", + " Biraben (1980)[10] McEvedy & Jones (1978)[11] Thomlinson (1975)[12] \\\n", + "Year \n", + "-10000 NaN 4.0 1–10M \n", + "-9000 NaN NaN NaN \n", + "-8000 NaN NaN NaN \n", + "-7000 NaN NaN NaN \n", + "-6000 NaN NaN NaN \n", + "\n", + " Durand (1974)[13] Clark (1967)[14] \n", + "Year \n", + "-10000 NaN NaN \n", + "-9000 NaN NaN \n", + "-8000 5–10M NaN \n", + "-7000 NaN NaN \n", + "-6000 NaN NaN " + ] + }, + "execution_count": 203, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table1 = tables[1]\n", + "table1.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not all agencies and researchers provided estimates for the same dates. Again `NaN` is the special value that indicates missing data." + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Population Reference Bureau (1973–2015)[6]United Nations Department of Economic and Social Affairs (2015)[7]Maddison (2008)[8]HYDE (2010)[citation needed]Tanton (1994)[9]Biraben (1980)[10]McEvedy & Jones (1978)[11]Thomlinson (1975)[12]Durand (1974)[13]Clark (1967)[14]
Year
1913NaNNaN1793.NaNNaNNaNNaNNaNNaNNaN
1920NaN1860.01863.1912.NaNNaNNaNNaNNaN1968.
1925NaNNaNNaNNaNNaNNaN2000.0NaNNaNNaN
1930NaN2070.0NaN2092.NaNNaNNaNNaNNaN2145.
1940NaN2300.02299.2307.NaNNaNNaNNaNNaN2340.
\n", + "
" + ], + "text/plain": [ + " Population Reference Bureau (1973–2015)[6] \\\n", + "Year \n", + "1913 NaN \n", + "1920 NaN \n", + "1925 NaN \n", + "1930 NaN \n", + "1940 NaN \n", + "\n", + " United Nations Department of Economic and Social Affairs (2015)[7] \\\n", + "Year \n", + "1913 NaN \n", + "1920 1860.0 \n", + "1925 NaN \n", + "1930 2070.0 \n", + "1940 2300.0 \n", + "\n", + " Maddison (2008)[8] HYDE (2010)[citation needed] Tanton (1994)[9] \\\n", + "Year \n", + "1913 1793. NaN NaN \n", + "1920 1863. 1912. NaN \n", + "1925 NaN NaN NaN \n", + "1930 NaN 2092. NaN \n", + "1940 2299. 2307. NaN \n", + "\n", + " Biraben (1980)[10] McEvedy & Jones (1978)[11] Thomlinson (1975)[12] \\\n", + "Year \n", + "1913 NaN NaN NaN \n", + "1920 NaN NaN NaN \n", + "1925 NaN 2000.0 NaN \n", + "1930 NaN NaN NaN \n", + "1940 NaN NaN NaN \n", + "\n", + " Durand (1974)[13] Clark (1967)[14] \n", + "Year \n", + "1913 NaN NaN \n", + "1920 NaN 1968. \n", + "1925 NaN NaN \n", + "1930 NaN 2145. \n", + "1940 NaN 2340. " + ] + }, + "execution_count": 204, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table1.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some of the estimates are in a form we can't read as numbers. We could clean them up by hand, but for simplicity I'll replace any value that has an `M` in it with `NaN`." + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "table1.replace('M', np.nan, regex=True, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we'll replace the long column names with more convenient abbreviations." + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "table1.columns = ['prb', 'un', 'maddison', 'hyde', 'tanton', \n", + " 'biraben', 'mj', 'thomlinson', 'durand', 'clark']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This function plots selected estimates." + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_prehistory(table):\n", + " \"\"\"Plots population estimates.\n", + " \n", + " table: DataFrame\n", + " \"\"\"\n", + " plot(table.prb, 'ro', label='PRB')\n", + " plot(table.un, 'co', label='UN')\n", + " plot(table.hyde, 'yo', label='HYDE')\n", + " plot(table.tanton, 'go', label='Tanton')\n", + " plot(table.biraben, 'bo', label='Biraben')\n", + " plot(table.mj, 'mo', label='McEvedy & Jones')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the results. Notice that we are working in millions now, not billions." + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_prehistory(table1)\n", + "decorate(xlabel='Year', \n", + " ylabel='World population (millions)',\n", + " title='Prehistorical population estimates')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `xlim` to zoom in on everything after Year 0." + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nmjZtKrVr105tf3t7e+nGjRtyWXh4uGRvby+NHTtWLuvRo4fUqFEj+XX16tWlqVOnqsW+YMECyd3d\nXYqLi5MkSZLOnTsn2dnZSTt27JDrzJkzR7Kzs5OOHDmitu+UKVMkOzs76cSJE5IkSdLixYslOzs7\naeXKlWr1duzYIdnZ2Unnzp2TJEmSTpw4IdnZ2UnLly9Xqzd69Gjp888/l2JiYqSVK1dK9vb20t27\nd9XqzJ07V7Kzs5PPPXPb2mTU6dixo5SUlCSXz58/X7Kzs5NOnTolSZIk/fLLL5KdnZ30888/q+2/\nevVqyc7OTtq0aVO22ssqtszlmV/reu6SJEl2dnbSuHHj5NdhYWGSnZ2dtHjxYkmSJCk0NFSyt7eX\nhgwZIqWlpcn1rl69Ktnb20vDhw9X269BgwZSfHy8XG/fvn2SnZ2dtHXr1ix/vg8fPpQcHBykuXPn\nqpX/9ddf0ueffy7NmDFDra1r167JdZKSkqQOHTqo7Zvx+/SmzO/lHj16SHZ2dtKxY8fksk2bNkl2\ndnZS586d5bK0tDSpfv36UpcuXSRJkiSVSiW5uLhIPj4+au2/evVKcnR0lLy9veWyjPdzWFiY2nGb\nNGmi9jNKTk6WunfvLtWrV09+P+jyu1aQidt9+VSHDh2oW7cudevWxdXVlS5duhAcHIynpyejR49W\nq1u+fHlKliwpv/7zzz8JCwujSZMmxMTEEB0dTXR0NK9fv6ZRo0bcunVLbVi4jY0Nn3/+ufy6TJky\nmJub8/z58yzjK1WqFPv37ycwMFDuEB45ciQ7duzA2Ng4y/2OHTuGra2txhXa4MGDAQgODlYrr127\ndpZtAZw4cQI9PT169OihVj5u3Dh27dqFsbExAwYM4MyZM2pXn69fv0ZPL/3t/z7Dgvv06aM2cMXL\nywtIP7+Mf01MTPDw8FDbr2fPnpiYmMj1dG3vfX3Mcz9+/DiSJDFgwAD5tjNAjRo1+Oqrrzh58iQp\nKSlyeYMGDdRGsjk4OADw7NmzLI9x5MgR0tLScHNzk9+30dHRWFhYULVqVU6cOAGkv/8A5s2bx8WL\nF0lNTUWpVBIYGKjx+6ELAwMDvv76a/l1xYoVgfTbcxkUCgVlypSR49fX1+fs2bNMmzZNra0XL15g\nYmLy1p/tixcvuHDhAg0aNOD169fyecbGxtK0aVOeP3/O9evX5XN9n9+1gkLc7sun5syZg4WFBQB6\nenqYmppia2uLgYGBRt0SJUqovX748CEAs2fPZvbs2Vrbf/TokZzYMu8P6YM0kpOTs4xvypQpjBw5\nkgkTJjB58mScnJxo2rQpHTt2pGjRolnuFx4ervZhkMHS0hJTU1MiIiLeem6ZRUREUKJECUxMTDTa\ns7S0lF8nJyezYMECbt68ycOHDwkPD5f7rNLS0t56DG0yD4E3MzPDzMxMjj88PJxy5cpp3EZUKpWU\nK1dO4zzf1d6H+FjnntHvlPEB/iZbW1tOnz7Nixcv5DJzc3O1OhlJ+G3HzHjvdu3aVev2jJ+ni4sL\nPXv2ZOPGjfz++++YmZnh6upK27Ztadiwoc7nlMHMzIzChf/9OCxUqBCg+f4rVKiQ3NeUEc+JEycI\nDg7m/v37PHjwQO4rkt6yClLGs1sbN25k48aNWutERkYC7/+7VlCIJJVPubi4aAxBz0rGL1SGjA+B\nESNG4OTkpHWfSpUqyd9n/FWdHXXr1uX48ePy15kzZ5g5cybr1q0jMDBQ4wMqw9t+cdPS0jQ+1N8V\n25uDI7Jy8eJF+vbti5GREfXq1aNjx4589tlnPHz4UOOvYF1p68NKTU2V483ueb6rvay86/w/5rm/\n65wg/Twyhny/z/sqo53ly5dTpEiRt9adOHEinp6eHDp0iFOnTnHo0CH27t1Lly5dsn1ubyaoN715\nxZiZJEkMHjyY48ePU7NmTZydnenSpQu1a9emV69ebz1exv+bh4dHlv2+lStXBt7/d62gEEmqACpT\npgyA/MH0pmvXrhETE/POD4C3UalU3Lp1i1KlStG6dWtat25NWloaP//8M7Nnz2bfvn1ZzmJRpkwZ\n7t+/r1H+7Nkz4uLisLa2zlYspUuX5uzZs8THx6vd+rh58yZr165l0KBBLF68mCJFirBv3z61X+gV\nK1Zk61hvCgsLU0v00dHRvHr1ChsbGyD9PK9evUpycrJaAlKpVISHh6sNXNGlvYwPfJVKpbbf227J\nAh/13DP+aPq///s/atSoobbt/v37GBkZUaxYMeLi4rLddoaM9661tTVVq1ZV23by5En5ivn58+eE\nhoZSt25d+vfvT//+/Xnx4gVDhgxh27ZtjB07NsevMi5evMjx48cZPHgwI0aMkMtTUlJ4+fLlW5/n\nyzjPQoUKafyO3r17l/DwcAwNDT/od62gEH1SBZCjoyOWlpZs3LiR+Ph4uTwuLk6+bZD56is7Xrx4\nQZcuXVi5cqVcpqenR7Vq1eTv4d8rvDdv7zRq1Ih79+5x9OhRtTZXrVoFkO1bNQ0aNCAtLY3t27er\nlW/ZsoUDBw5gYWHBy5cvMTc3V/uQfvXqlTw8WZerscw2bdqkdmWRMQqvadOmAPLzbJs3b1bb75df\nfiE+Pl7jPN/VXsaty1u3bsl1UlJSOHz48FvjzM656+npvfVWXKNGjQBYvXq1Wqw3b97k7NmzNGjQ\n4K1XHrrIOMbKlSvVjnHr1i0GDRrE+vXrgfQh6r1795b7bQCKFy9OhQoVUCgU8nsw49/3uaX7Li9f\nvgT+veLJsG3bNhITE9X65zJfYVtZWeHo6EhQUJBa/3BycjLff/89w4cPJyUlRefftYJMXEkVQPr6\n+kyaNAkfHx/c3d359ttvMTAwYPv27Tx69Ii5c+dmeXtDFyVLlqRt27b88ssvJCYm4uzszMuXL9m0\naRMWFha0bNkSQB5mvHv3biRJokOHDnh7e3P48GFGjhxJt27dsLGx4dy5cxw+fJhmzZrRoEGDbMXi\n5uaGq6srfn5+hIaGUq1aNa5cucLOnTsZMmQIZmZm1K9fn9WrVzNixAhcXV159uwZv/32m3wV8mYi\n19X58+fp378/jRo14o8//mDXrl20b99eHmqfMc+in58fd+7cwdHRkRs3bhAYGIiTkxOdOnXKVnt1\n6tTB0tKSZcuWkZSURIkSJdi1a9c7Bz5k59zNzc25cOEC27Ztw9XVVaOtKlWq4OnpycaNG/Hy8qJJ\nkyY8e/aMjRs3Ympq+l4DFjKzs7OTj/Hy5UuaNGkiv7eMjY3lK5b27dvz888/M3DgQLp160bJkiW5\nceMGO3fupEOHDvJVdUZyXrx4MV988QV169b94BgzODs7Y2JiwsyZM4mIiKBYsWKcP3+e/fv3Y2Bg\noPGzBQgICKB+/fo0btyYSZMm0atXLzp27Ei3bt0wMzNj3759/PHHH4wePVr+/dHld60gE0mqgGrR\nogXFihVj+fLlLFu2DD09PapUqcLy5cvlv1Y/xPTp0ylXrhz79u1j3759GBoaUrduXXx8fORfSFtb\nWzw9PQkMDOT69et88cUXlC9fnq1bt7Jw4UL2799PbGws5cqV47vvvqN3797ZjkNPT49ly5axdOlS\n9uzZw+7duylfvjy+vr5069YNgGHDhpGamsr+/fs5fvw4VlZW1KtXjz59+tC6dWvOnTsnX7Ho6qef\n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\nyMhQ5s2bp8TGxip5eXlKenq60qNHD2XlypVKZmamsmLFCqVXr162oa1Wq1WZOHGi8uCDDyqpqam2\n+RRXD01tLiZPnlxtyLQzrt3HH3+s9OnTR/nqq6+UX375RXnyySeVkSNHNovh/ddez40bNyo9e/ZU\ndu7cqZw+fVr5/PPPlZiYGOXzzz9XFEWu59XS0tKUbt26KS+++KLd/Eej0djon81mn6QuXbqkvPHG\nG8rAgQOVfv36Kc8884ySn5/f2GG5rPPnzytz585V4uLilJiYGGXatGnKL7/8Ytv+zTffKHfffbfS\ns2dP5d5771X27dtXbf+cnBxl5syZSkxMjDJkyBDl7bffViwWS0OfRqO79ktVUZxz7davX6/Ex8cr\nffr0UX73u9/VOk+oqbn2elqtVuW9995TRo4cqfTs2VMZOXKk8umnn1bbR65nlbffflvp2rVrjT9r\n165VFKVxP5tS9FAIIYTLatbPpIQQQrg2SVJCCCFcliQpIYQQLkuSlBBCCJclSUoIIYTLkiQlhBDC\nZUmSEqKeLVy4kKioKLtqppft2bOHqKgo1q1b18CRCeH6ZJ6UEPWstLSUe+65B41Gw1dffYWPj49t\nW0lJCXfffTft2rXj008/pUWLFo0YqRCuR+6khKhnrVq14tVXX+XcuXMsX7682ra33nqLoqIilixZ\nIglKiBpIkhKiAQwbNoz77ruPjz76iCNHjgCg1+vZvn07c+fOJSIiwvbeTz75hISEBHr27Mntt9/O\npk2buLbD4+OPP+a+++4jJiaG3r17M378eP75z3/atm/fvp2+ffvy0UcfMXjwYAYNGsTZs2cb5mSF\ncCLp7hOigRQVFTF69GjatWvHxx9/zPjx4wkICGDr1q22VafXrl3LmjVrmDp1KvHx8Rw5coR169Yx\ndepUW32f999/n2XLlvHMM88QExNDYWEhGzduJCMjgz179hASEsL27dtZuHAhERERzJs3j4sXLzJu\n3LjGPH0hfpNmXfRQiIbk5+fHokWLmDVrFr/73e84d+4c69evtyWooqIiNmzYwKOPPsoLL7wAwNCh\nQ/Hy8uLtt99mypQptG3bluzsbKZPn84TTzxhO7ZOp+OBBx7gyJEj3HnnnQBYrVb+93//l9tuu63h\nT1YIJ5HuPiEa0B133MHo0aPR6/XMnz+f9u3b27YdOnQIk8nEiBEjqKystP38z//8D5WVlfz4448A\nvPzyy8yePZuioiJ++ukn/u///o9PPvkEwK6Cardu3Rru5ISoB3InJUQDGzp0KLt372bYsGHV2gsL\nCwGYOnVqjftdrnZ66tQpFi5cyP79+9FqtXTu3JnIyEgAu2dX3t7eTo5eiIYlSUoIF9G6dWsAVq5c\nSVhYmN32tm3bYrFYeOKJJ2jVqhU7duwgKioKd3d30tPT2bVrV0OHLES9k+4+IVxEnz59aNmyJXl5\nefTq1cv2YzKZWLFiBXl5eeTl5XH69GkmTpxIjx49cHev+j1z7969QNVzKCGaErmTEsJFtGnThilT\nprBs2TKKioro168f2dnZLF++HH9/f7p06ULLli3R6XRs2bKFoKAgWrVqxd69e/nwww8BKC8vb+Sz\nEMK55E5KCBcyb948Zs+eza5du5g+fTorVqxg+PDhbNmyBa1Wi0ajYd26dQQFBfH8888ze/Zsjh49\nyoYNG+jYsSMHDx5s7FMQwqlknpQQQgiXJXdSQgghXJYkKSGEEC5LkpQQQgiXJUlKCCGEy5IkJYQQ\nwmVJkhJCCOGyJEkJIYRwWZKkhBBCuKz/ByMlQGdaI70dAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_prehistory(table1)\n", + "decorate(xlim=[0, 2000], xlabel='Year', \n", + " ylabel='World population (millions)',\n", + " title='Prehistorical population estimates')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See if you can find a model that fits these data well from Year -1000 to 1940, or from Year 0 to 1940.\n", + "\n", + "How well does your best model predict actual population growth from 1950 to the present?" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "p0 = table1.mj[1]\n", + "\n", + "prehistory = System(t0=1, t_end=2016, alpha=0.0011, p0=p0)\n", + "\n", + "run_simulation(prehistory, update_func1b)" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAEjCAYAAACIB/7lAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYFMf/wPH3UaWIiIAioiAKmGABS4IhFuwaY+wFe40a\njViiRiWW2LvYJcaaRI1iLGCJNZqIYIklFvRrAURAkF6Osr8/+LF6UjwiTTKv5/HRm92d/Sze3Yed\nmZ1RSJIkIQiCIAilkEZJByAIgiAIeRFJShAEQSi1RJISBEEQSi2RpARBEIRSSyQpQRAEodQSSUoQ\nBEEotUSSKmWmTZuGvb29yp86derg7OxMz5498fHxKdTzubm5MWDAgLfuN2DAANzc3Apcv1KpJDw8\n/N+ElqsDBw5gb2+Pv79/odVZHHUXl3e9huDgYPnfISEh2Nvb4+XlVVjhlYjXrwn+/Xv5XUVFRZGU\nlFTs533faZV0AELupk+fTsWKFQGQJImEhAQOHTrEtGnTePnyJUOHDi3WeL788kuSk5MLdExoaChD\nhw5l1KhRdOvWrVDiaNy4MUuWLMHW1rZQ6hNeGTZsGGZmZixatAgAExMTlixZgr29fQlH9u/t37+f\nOXPmcOPGDbns37yX39W5c+eYPHkyPj4+6OvrF+u533ciSZVSrVu3plq1aiplPXr0oGPHjqxbt47+\n/fujo6NTbPF88sknBT4mJCSEx48fF2ocVlZWWFlZFWqdQpYLFy7QtWtX+bW+vj5dunQpwYjeXUBA\nAKmpqSpl/+a9/K5u3LhBXFxcsZ+3LBDNfe+RcuXK4ebmRkJCAkFBQSUdjiAIQpETSeo9o1AoAMjI\nyACy+pRmzpzJt99+S7169WjWrBnR0dEAXLt2jSFDhuDk5ISTkxNDhw5VafZ43aFDh+jUqROOjo60\na9eOn3/+WWX7m+34SqWS+fPn06pVKxwdHWnevDlz5swhNjYWyOobGThwIJDVdPl6k9HLly+ZPXs2\nn376qXy+zZs3y9cE4OXlRd26dTl58iSffPIJTk5O7Nu3L9c+F6VSiZeXF23btqVevXq51vfkyROm\nTp1Ks2bNcHR0pEmTJnz55ZcFTvbZ579x4wajR4+mQYMGuLq6snDhQlJSUlT2TU5OZvny5bi5ueHo\n6IibmxvLli1TaWpSt768+prU6YN627Vn9z0B+Pj4yPXl1Se1b98+unTpQt26dfn444+ZNGkSISEh\n8vbs4w4ePMjKlStp1qwZdevWpWfPnly6dEntn/MXX3whn2PatGlERESo7HPv3j2GDRvGxx9/TL16\n9ejatSu//vqrvH3AgAFyH669vT3Tpk2Ty19/Lw8YMIBRo0bx+++/8/nnn1O3bl06derEuXPnSEhI\nwNPTk8aNG+Pi4oKnp6fK/4skSfz888/06NEDJycn6tatS/v27dm8eTPZM85NmzaNtWvXAtCqVSuV\nPuAHDx4wduxYGjVqRP369enTpw9//PGHynW+7bNW1onmvvdIZmYmly9fRkdHR6VP5ujRo9SsWZNv\nv/2WFy9eYGJiwsWLFxk1ahQODg58/fXXKJVKDhw4gLu7Oz/++CONGjWSj7958yb379+nf//+mJiY\n8MsvvzB79mzMzMxo3bp1rrHMnTuXI0eOMHDgQKysrAgKCmL37t08efKErVu30rhxY7788ks2btxI\n7969adiwIQCxsbH06dOH0NBQ+vTpg42NDRcvXmT58uX8888/rFq1Sj5Heno6np6eDBkyBKVSScOG\nDbl+/XqOWMaOHcv58+fp3LkzQ4YM4caNGyxfvpyoqCimT5/Oixcv6NWrF4aGhvTv35+KFSty584d\n9u7dy+3btzl9+jTa2toF+r/4+uuvMTc3Z9KkSdy5c4dt27bx4MEDfvjhByDri2XIkCFcv36dbt26\n4ejoyI0bN9iyZQtXrlxhx44dKud8W33/ljrXnt339M0339CoUSN69eqFra1tjqQLsHjxYrZu3YqL\niwvffPMNERER7Nq1iz///JN9+/apNFGvXr0aPT09hg4dSlpaGlu3bmXUqFGcPXtW7m/Nzdq1a/Hy\n8qJdu3b06tWL8PBwdu3axeXLl/n1118xMTEhOjqaYcOGUbFiRUaPHo2uri5Hjx5lxowZ6Orq0rlz\nZ7788ksyMzMJDAxkyZIlVK9ePc9z3r59m2vXrjFw4EDKly/Ppk2bmDBhAnXq1EFPT4+JEycSGBjI\nnj17MDc356uvvgJg1apVbNy4ka5du9KrVy8SExM5ePAgy5cvx8DAAHd3d3r37k1CQgInT55k+vTp\n1K5dG8hKsv369cPU1JRRo0ahra3NkSNHGDlyJMuXL6djx47A2z9rZZ4klCpTp06V7OzspNu3b0tR\nUVFSVFSUFBERIV27dk36+uuvJTs7O2nBggXy/i1btpQcHByk58+fy2UZGRlSq1atpD59+kjp6ely\neWJiotSmTRupS5cuKsfb29tLt27dkstCQkIke3t7acqUKXJZ//79pZYtW8qv69WrJ82ZM0cl9pUr\nV0rdunWTEhISJEmSpEuXLkl2dnbS/v375X2WLl0q2dnZSSdPnlQ5dvbs2ZKdnZ109uxZSZIkac2a\nNZKdnZ20adMmlf32798v2dnZSZcuXZIkSZLOnj0r2dnZSRs2bFDZb9KkSdKHH34oxcbGSps2bZLs\n7e2lBw8eqOyzbNkyyc7OTr72N+vOTfY+3bt3l1JTU+XyFStWSHZ2dtL58+clSZKkn376SbKzs5N+\n/PFHleO3bNki2dnZSbt27SpQfXnF9mb5m6/VvXZJkiQ7Oztp6tSp8uvg4GDJzs5OWrNmjSRJkhQU\nFCTZ29tLY8eOlTIzM+X9rl+/Ltnb20vjx49XOa558+ZSYmKivN/Ro0clOzs7ac+ePXn+fJ8+fSo5\nODhIy5YtUym/d++e9OGHH0rz589XqevGjRvyPqmpqVLXrl1Vjs3+PL3uzfdy//79JTs7O+n06dNy\n2a5duyQ7OzupV69ecllmZqbUrFkzqXfv3pIkSZJSqZScnZ0lDw8Plfrj4+MlR0dHadSoUXJZ9vs5\nODhY5bytW7dW+RmlpaVJ/fr1k5o2bSq/H9T5rJVlormvlOratSsuLi64uLjg6upK7969OXXqFAMG\nDGDSpEkq+1avXp3KlSvLr//55x+Cg4Np3bo1sbGxREdHEx0dTUpKCi1btuTOnTsqw8Ktra358MMP\n5deWlpaYmJjw4sWLPOOrUqUKvr6+HDhwQO4QnjBhAvv378fAwCDP406fPo2trW2OO7QxY8YAcOrU\nKZXyxo0b51kXwNmzZ9HQ0KB///4q5VOnTuW3337DwMCAkSNHcvHiRZW7z5SUFDQ0st7+/2ZY8NCh\nQ1UGrgwZMgTIur7svw0NDXF3d1c5buDAgRgaGsr7qVvfv1WY137mzBkkSWLkyJFyszNA/fr1+eST\nTzh37hzp6elyefPmzVVGsjk4OAAQGRmZ5zlOnjxJZmYmbm5u8vs2OjoaU1NT6tSpw9mzZ4Gs9x/A\n8uXLCQwMJCMjAx0dHQ4cOJDj86EOXV1dPv30U/m1jY0NkNU8l02hUGBpaSnHr62tzZ9//sncuXNV\n6nr58iWGhob5/mxfvnzJ5cuXad68OSkpKfJ1xsXF0aZNG168eMHNmzfla/03n7WyQjT3lVJLly7F\n1NQUAA0NDYyMjLC1tUVXVzfHvpUqVVJ5/fTpUwCWLFnCkiVLcq3/2bNncmJ783jIGqSRlpaWZ3yz\nZ89mwoQJTJ8+nVmzZtGgQQPatGlD9+7dKV++fJ7HhYSEqHwZZDMzM8PIyIjQ0NB8r+1NoaGhVKpU\nCUNDwxz1mZmZya/T0tJYuXIlt2/f5unTp4SEhMh9VpmZmfmeIzdvDoE3NjbG2NhYjj8kJAQrK6sc\nzYg6OjpYWVnluM631fcuCuvas/udsr/AX2dra8uFCxd4+fKlXGZiYqKyT3YSzu+c2e/dPn365Lo9\n++fp7OzMwIED2blzJ3/99RfGxsa4urrSuXNnWrRoofY1ZTM2NkZL69XXoaamJpDz/aepqSn3NWXH\nc/bsWU6dOsWjR4948uSJ3Fck5bMKUvazWzt37mTnzp257hMWFgb8+89aWSGSVCnl7OycYwh6XrI/\nUNmyvwS+/vprGjRokOsxNWvWlP+d/Vt1Qbi4uHDmzBn5z8WLF1m4cCHbtm3jwIEDOb6gsuX3wc3M\nzMzxpf622F4fHJGXwMBAhg0bhr6+Pk2bNqV79+588MEHPH36NMdvwerKrQ8rIyNDjreg1/m2+vLy\ntusvzGt/2zVB1nVkD/n+N++r7Ho2bNhAuXLl8t13xowZDBgwgOPHj3P+/HmOHz/OkSNH6N27d4Gv\n7fUE9brX7xjfJEkSY8aM4cyZMzRs2BAnJyd69+5N48aNGTRoUL7ny/5/c3d3z7Pft1atWsC//6yV\nFSJJlUGWlpYA8hfT627cuEFsbOxbvwDyo1QquXPnDlWqVKFTp0506tSJzMxMfvzxR5YsWcLRo0fz\nnMXC0tKSR48e5SiPjIwkISEBCwuLAsVStWpV/vzzTxITE1WaPm7fvs3WrVsZPXo0a9asoVy5chw9\nelTlA71x48YCnet1wcHBKok+Ojqa+Ph4rK2tgazrvH79OmlpaSoJSKlUEhISojJwRZ36sr/wlUql\nynH5NckChXrt2b80/e9//6N+/foq2x49eoS+vj4VKlQgISGhwHVny37vWlhYUKdOHZVt586dk++Y\nX7x4QVBQEC4uLowYMYIRI0bw8uVLxo4dy969e5kyZUqR32UEBgZy5swZxowZw9dffy2Xp6enExMT\nk+/zfNnXqampmeMz+uDBA0JCQtDT03unz1pZIfqkyiBHR0fMzMzYuXMniYmJcnlCQoLcbPDm3VdB\nvHz5kt69e7Np0ya5TENDg7p168r/hld3eK8377Rs2ZKHDx/y+++/q9S5efNmgAI31TRv3pzMzEz2\n7dunUv7zzz/j5+eHqakpMTExmJiYqHxJx8fHy8OT1bkbe9OuXbtU7iyyR+G1adMGQH6ebffu3SrH\n/fTTTyQmJua4zrfVl910eefOHXmf9PR0Tpw4kW+cBbl2DQ2NfJviWrZsCcCWLVtUYr19+zZ//vkn\nzZs3z/fOQx3Z59i0aZPKOe7cucPo0aPZvn07kDVEffDgwXK/DUDFihWpUaMGCoVCfg9m//1vmnTf\nJiYmBnh1x5Nt7969JCcnq/TPvXmHbW5ujqOjIz4+Pir9w2lpaXz77beMHz+e9PR0tT9rZZm4kyqD\ntLW1mTlzJh4eHnTr1o0ePXqgq6vLvn37ePbsGcuWLcuzeUMdlStXpnPnzvz0008kJyfj5ORETEwM\nu3btwtTUlA4dOgDIw4wPHTqEJEl07dqVUaNGceLECSZMmEDfvn2xtrbm0qVLnDhxgrZt29K8efMC\nxeLm5oarqyuLFi0iKCiIunXrcu3aNQ4ePMjYsWMxNjamWbNmbNmyha+//hpXV1ciIyP59ddf5buQ\n1xO5uvz9/RkxYgQtW7bk77//5rfffuOLL76Qh9pnz7O4aNEi7t+/j6OjI7du3eLAgQM0aNCAnj17\nFqi+Jk2aYGZmxvr160lNTaVSpUr89ttvbx34UJBrNzEx4fLly+zduxdXV9ccddWuXZsBAwawc+dO\nhgwZQuvWrYmMjGTnzp0YGRn9qwELb7Kzs5PPERMTQ+vWreX3loGBgXzH8sUXX/Djjz/y5Zdf0rdv\nXypXrsytW7c4ePAgXbt2le+qs5PzmjVr+Oijj3BxcXnnGLM5OTlhaGjIwoULCQ0NpUKFCvj7++Pr\n64uurm6Ony2At7c3zZo1o1WrVsycOZNBgwbRvXt3+vbti7GxMUePHuXvv/9m0qRJ8udHnc9aWSaS\nVBnVvn17KlSowIYNG1i/fj0aGhrUrl2bDRs2yL+tvot58+ZhZWXF0aNHOXr0KHp6eri4uODh4SF/\nIG1tbRkwYAAHDhzg5s2bfPTRR1SvXp09e/awatUqfH19iYuLw8rKim+++YbBgwcXOA4NDQ3Wr1/P\nunXrOHz4MIcOHaJ69ep4enrSt29fAMaNG0dGRga+vr6cOXMGc3NzmjZtytChQ+nUqROXLl2S71jU\n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\nfS7CT2nr2MXExNCrVy+Xe9lgMJCbm9sl7+U5c+bw/PPPu7T98MMPxMfHo1KpxHhexLZt21i3bh0P\nPfQQy5YtczpOgB/cmz/bb7GTsGrVKmncuHHS119/7YyTutjdUuCgqalJuvHGG6VZs2ZJ33//vVRQ\nUCA9/vjjUmZmplRVVSXl5+dLAwcOlF599VWpqKhIWrdunTR48GCna6vdbpfmzJkj3XbbbVJubq4z\nnuJC19Suwrx581xcpn0xdu+99540dOhQ6dNPP5VOnDgh3XvvvdKUKVO6hHv/xeO5detWadCgQdKu\nXbukM2fOSB999JGUkZEhffTRR5IkifG8kLy8PKl///7SU0895Rb/aDAYOvze7PIi1dTUJL344ovS\nqFGjpOHDh0sPP/ywVF1d3dFm+S1lZWXSkiVLpDFjxkgZGRnSggULpBMnTjj7v/rqK+mGG26QBg0a\nJN10003SN99843J8RUWFtGjRIikjI0MaN26c9Morr0g2m629L6PDufihKkm+GbstW7ZI48ePl4YO\nHSr99re/bTFOqLNx8Xja7XbpjTfekKZMmSINGjRImjJlivTBBx+4HCPG08Err7wi9evXz+Nr06ZN\nkiR17L0pih4KBAKBwG/p0ntSAoFAIPBvhEgJBAKBwG8RIiUQCAQCv0WIlEAgEAj8FiFSAoFAIPBb\nhEgJBAKBwG8RIiUQXGGWL19OWlqaWzXTZr744gvS0tLYvHlzO1smEPg/Ik5KILjCNDQ0cOONNyKT\nyfj0009RKpXOvvr6em644Qa6devGBx98QEBAQAdaKhD4H2ImJRBcYcLDw3n22WcpLS1l7dq1Ln0v\nv/wyer2elStXCoESCDwgREogaAcmTpzIrFmz+POf/8zRo0cByMnJYefOnSxZsoSUlBTnZ99//32y\nsrIYNGgQ1157Ldu2bePiBY/33nuPWbNmkZGRwZAhQ5g9ezb/93//5+zfuXMnw4YN489//jNjx45l\n9OjRnDt3rn0uViDwIWK5TyBoJ/R6PdOmTaNbt2689957zJ49G7VazY4dO5xZpzdt2sTGjRuZP38+\n48eP5+jRo2zevJn58+c76/u8+eabrF69mocffpiMjAxqa2vZunUrBQUFfPHFF8THx7Nz506WL19O\nSkoKjz/+ODU1NcycObMjL18g+Fl06aKHAkF7EhkZyYoVK3jggQf47W9/S2lpKVu2bHEKlF6v57XX\nXuM3v/kNTz75JAATJkwgNDSUV155hTvvvJOEhARKSkpYuHAh99xzj/PcGo2GW2+9laNHj3LdddcB\nYLfb+f3vf88vfvGL9r9YgcBHiOU+gaAd+dWvfsW0adPIyclh6dKldO/e3dl3+PBhzGYzkydPxmq1\nOl+//OUvsVqtfPvttwD84Q9/YPHixej1er7//nv+3//7f7z//vsAbhVU+/fv334XJxBcAcRMSiBo\nZyZMmMCePXuYOHGiS3ttbS0A8+fP93hcc7XT06dPs3z5cg4cOIBCoaBPnz6kpqYCuO1dhYWF+dh6\ngaB9ESIlEPgJERERALz66qskJSW59SckJGCz2bjnnnsIDw/nk08+IS0tjcDAQPLz89m9e3d7mywQ\nXHHEcp9A4CcMHTqUoKAgqqqqGDx4sPNlNptZt24dVVVVVFVVcebMGebMmcPAgQMJDHR8z9y3bx/g\n2IcSCDoTYiYlEPgJsbGx3HnnnaxevRq9Xs/w4cMpKSlh7dq1REVF0bdvX4KCgtBoNLz99tvExMQQ\nHh7Ovn37eOeddwAwGo0dfBUCgW8RMymBwI94/PHHWbx4Mbt372bhwoWsW7eOSZMm8fbbb6NQKJDJ\nZGzevJmYmBieeOIJFi9ezA8//MBrr71Gz549OXjwYEdfgkDgU0SclEAgEAj8FjGTEggEAoHfIkRK\nIBAIBH6LECmBQCAQ+C1CpAQCgUDgtwiREggEAoHfIkRKIBAIBH6LECmBQCAQ+C1CpAQCgUDgt/x/\nMKxyt0ggxCoAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_prehistory(table1)\n", + "plot(prehistory.results)\n", + "decorate(xlim=[0, 2000], xlabel='Year', \n", + " ylabel='World population (millions)',\n", + " title='Prehistorical population estimates')" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEjCAYAAADaCAHrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYFNf6wPHv0nuTJiAKCFgQBRsoggVLNBq7EVGjiWLJ\n1XjVWK/XGGOLXo3EXhNblCj2joXYI3bFjgVUBGnSy87vD3+sbgBdVIp6Ps/jIztn5sw7sPPu7Jkz\n58gkSZIQBEEQPilqZR2AIAiCUPpE8hcEQfgEieQvCILwCRLJXxAE4RMkkr8gCMInSCR/QRCET5BI\n/sUwduxYXF1dlf5Vr14dT09PunXrRmho6HvdX/Pmzendu/cb1+vduzfNmzcvdv3Z2dnExsa+TWiF\n2rJlC66urpw+ffq91VkadZeWdz2Ghw8fKn6Ojo7G1dWV4ODg9xVemXj1mODt38vv6tmzZ6Snp5f6\nfsuSRlkH8CEaN24cpqamAEiSRGpqKtu3b2fs2LEkJibSv3//Uo1n0KBBZGRkFGubmJgY+vfvT1BQ\nEJ07d34vcdSvX59Zs2bh5OT0XuoTXvr666+xsLBgxowZAJiZmTFr1ixcXV3LOLK3t3nzZn744Qcu\nXbqkWPY27+V3dfToUUaNGkVoaCh6enqluu+yJJL/W/D398fOzk5pWdeuXWnbti0LFiwgMDAQLS2t\nUouncePGxd4mOjqae/fuvdc4KlWqRKVKld5rncILx44do1OnTorXenp6fPHFF2UY0bv7+++/ycrK\nUlr2Nu/ld3Xp0iVSUlJKfb9lTTT7vCc6Ojo0b96c1NRUbt26VdbhCIIgvJZI/u+RTCYDIC8vD3jR\nZj9x4kTGjx+Pu7s7vr6+JCQkAHD+/Hn69euHh4cHHh4e9O/fX+nr76u2b99Ou3btcHNzo3Xr1mzY\nsEGp/J/tpNnZ2fz000+0aNECNzc3/Pz8+OGHH0hOTgZetD336dMHeNGE9WrTQWJiIpMnT6ZJkyaK\n/S1dulRxTADBwcHUqlWLAwcO0LhxYzw8PAgJCSm0TTs7O5vg4GBatWqFu7t7ofXdv3+fMWPG4Ovr\ni5ubGw0aNGDQoEHF/hDN3/+lS5cYPHgwderUwcfHh+nTp5OZmam0bkZGBnPmzKF58+a4ubnRvHlz\nZs+erdTkoGp9RbXlq9LG/6Zjz2/bBwgNDVXUV1Sbf0hICF988QW1atXCy8uLkSNHEh0drSjP327r\n1q3MnTsXX19fatWqRbdu3Th16pTKv+eOHTsq9jF27FiePn2qtM6NGzf4+uuv8fLywt3dnU6dOvHn\nn38qynv37q24R+bq6srYsWMVy199L/fu3ZugoCAOHjxIhw4dqFWrFu3atePo0aOkpqYyadIk6tev\nj7e3N5MmTVL6u0iSxIYNG+jatSseHh7UqlWLNm3asHTpUvJHtRk7diy//vorAC1atFC6x3b79m2G\nDh1KvXr1qF27Nl9++SV//fWX0nG+6Vwrz0Szz3sil8s5c+YMWlpaSm3eu3btwtHRkfHjxxMfH4+Z\nmRnHjx8nKCiIatWqMXz4cLKzs9myZQu9evVi1apV1KtXT7H95cuXuXnzJoGBgZiZmfHHH38wefJk\nLCws8Pf3LzSWKVOmsHPnTvr06UOlSpW4desW69at4/79+6xcuZL69eszaNAgFi9eTI8ePahbty4A\nycnJfPnll8TExPDll1/i4ODA8ePHmTNnDteuXWPevHmKfeTm5jJp0iT69etHdnY2devW5cKFCwVi\nGTp0KOHh4bRv355+/fpx6dIl5syZw7Nnzxg3bhzx8fF0794dAwMDAgMDMTU1JTIykk2bNnH16lUO\nHTqEpqZmsf4Ww4cPx9LSkpEjRxIZGcnq1au5ffs2K1asAF6csP369ePChQt07twZNzc3Ll26xLJl\ny4iIiOD3339X2ueb6ntbqhx7ftv+999/T7169ejevTtOTk4FPswAZs6cycqVK/H29ub777/n6dOn\nrF27lhMnThASEqLUVPnLL7+gq6tL//79ycnJYeXKlQQFBXHkyBHF/azC/PrrrwQHB9O6dWu6d+9O\nbGwsa9eu5cyZM/z555+YmZmRkJDA119/jampKYMHD0ZbW5tdu3YxYcIEtLW1ad++PYMGDUIul3P2\n7FlmzZqFvb19kfu8evUq58+fp0+fPhgaGrJkyRK+++47qlevjq6uLv/+9785e/YsGzduxNLSkm+/\n/RaAefPmsXjxYjp16kT37t1JS0tj69atzJkzB319fXr16kWPHj1ITU3lwIEDjBs3DmdnZ+DFh1dA\nQADm5uYEBQWhqanJzp07GThwIHPmzKFt27bAm8+1ck0SVDZmzBjJxcVFunr1qvTs2TPp2bNn0tOn\nT6Xz589Lw4cPl1xcXKRp06Yp1m/WrJlUrVo16cmTJ4pleXl5UosWLaQvv/xSys3NVSxPS0uTWrZs\nKX3xxRdK27u6ukpXrlxRLIuOjpZcXV2l0aNHK5YFBgZKzZo1U7x2d3eXfvjhB6XY586dK3Xu3FlK\nTU2VJEmSTp06Jbm4uEibN29WrPPzzz9LLi4u0oEDB5S2nTx5suTi4iIdOXJEkiRJmj9/vuTi4iIt\nWbJEab3NmzdLLi4u0qlTpyRJkqQjR45ILi4u0qJFi5TWGzlypFSzZk0pOTlZWrJkieTq6irdvn1b\naZ3Zs2dLLi4uimP/Z92FyV+nS5cuUlZWlmL5//73P8nFxUUKDw+XJEmS1q9fL7m4uEirVq1S2n7Z\nsmWSi4uLtHbt2mLVV1Rs/1z+z9eqHrskSZKLi4s0ZswYxeuHDx9KLi4u0vz58yVJkqRbt25Jrq6u\n0tChQyW5XK5Y78KFC5Krq6s0bNgwpe38/PyktLQ0xXq7du2SXFxcpI0bNxb5+33w4IFUrVo1afbs\n2UrLb9y4IdWsWVP66aeflOq6dOmSYp2srCypU6dOStvmn0+v+ud7OTAwUHJxcZEOHTqkWLZ27VrJ\nxcVF6t69u2KZXC6XfH19pR49ekiSJEnZ2dmSp6enNGLECKX6nz9/Lrm5uUlBQUGKZfnv54cPHyrt\n19/fX+l3lJOTIwUEBEiNGjVSvB9UOdfKK9Hs8xY6deqEt7c33t7e+Pj40KNHD8LCwujduzcjR45U\nWtfe3h4rKyvF62vXrvHw4UP8/f1JTk4mISGBhIQEMjMzadasGZGRkUrdL6tUqULNmjUVr21tbTEz\nMyM+Pr7I+Kytrdm9ezdbtmxR3Mj67rvv2Lx5M/r6+kVud+jQIZycnAp8oxgyZAgAYWFhSsvr169f\nZF0AR44cQU1NjcDAQKXlY8aMYdu2bejr6zNw4ECOHz+u9G0pMzMTNbUXb8236X7Xv39/pRvu/fr1\nA14cX/7/BgYG9OrVS2m7Pn36YGBgoFhP1fre1vs89sOHDyNJEgMHDlQ0PwLUrl2bxo0bc/ToUXJz\ncxXL/fz8lHq2VKtWDYC4uLgi93HgwAHkcjnNmzdXvG8TEhIwNzenevXqHDlyBHjx/gOYM2cOZ8+e\nJS8vDy0tLbZs2VLg/FCFtrY2TZo0Ubx2cHAAXjTT5JPJZNja2iri19TU5MSJE0yZMkWprsTERAwM\nDF77u01MTOTMmTP4+fmRmZmpOM6UlBRatmxJfHw8ly9fVhzr25xr5YFo9nkLP//8M+bm5gCoqalh\n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\nQgzQ/wc/OSgSa9IqkwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_estimates(table2)\n", + "plot(prehistory.results/1000)\n", + "decorate(xlim=[1950, 2016], xlabel='Year', \n", + " ylabel='World population (millions)',\n", + " title='Prehistorical population estimates')\n", + "#not a good fit :)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap04-fig01.pdf b/code/chap04-fig01.pdf new file mode 100644 index 00000000..9cec0184 Binary files /dev/null and b/code/chap04-fig01.pdf differ diff --git a/code/chap04-fig02.pdf b/code/chap04-fig02.pdf new file mode 100644 index 00000000..f09d11cf Binary files /dev/null and b/code/chap04-fig02.pdf differ diff --git a/code/chap04mine.ipynb b/code/chap04mine.ipynb new file mode 100644 index 00000000..9ce8e587 --- /dev/null +++ b/code/chap04mine.ipynb @@ -0,0 +1,1125 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 4: Predict\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# To switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Functions from the previous chapter" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_estimates(table):\n", + " \"\"\"Plot world population estimates.\n", + " \n", + " table: DataFrame with columns `un` and `census`\n", + " \"\"\"\n", + " un = table.un / 1e9\n", + " census = table.census / 1e9\n", + " \n", + " plot(census, ':', color='darkblue', label='US Census')\n", + " plot(un, '--', color='green', label='UN DESA')\n", + " \n", + " decorate(xlabel='Year',\n", + " ylabel='World population (billion)')" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_results(system):\n", + " \"\"\"Plot the estimates and the model.\n", + " \n", + " system: System object with `results`\n", + " \"\"\"\n", + " #new_fig()\n", + " plot_estimates(table2)\n", + " plot(system.results, '--', color='gray', label='model')\n", + " decorate(xlabel='Year', \n", + " ylabel='World population (billion)')" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Run a model.\n", + " \n", + " Adds TimeSeries to `system` as `results`.\n", + "\n", + " system: System object\n", + " update_func: function that computes the population next year\n", + " \"\"\"\n", + " results = Series([])\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " results[t+1] = update_func(results[t], t, system)\n", + " system.results = results" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Reading the data" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# The data directory contains a downloaded copy of\n", + "# https://en.wikipedia.org/wiki/World_population_estimates\n", + "\n", + "from pandas import read_html\n", + "filename = 'data/World_population_estimates.html'\n", + "tables = read_html(filename, header=0, index_col=0, decimal='M')" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "table2 = tables[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "table2.columns = ['census', 'prb', 'un', 'maddison', \n", + " 'hyde', 'tanton', 'biraben', 'mj', \n", + " 'thomlinson', 'durand', 'clark']" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot_estimates(table2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Running the quadratic model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the update function for the quadratic growth model with parameters `alpha` and `beta`." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update_func2(pop, t, system):\n", + " \"\"\"Update population based on a quadratic model.\n", + " \n", + " pop: current population in billions\n", + " t: what year it is\n", + " system: system object with model parameters\n", + " \"\"\"\n", + " net_growth = system.alpha * pop + system.beta * pop**2\n", + " return pop + net_growth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Select the estimates generated by the U.S. Census, and convert to billions." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "census = table2.census / 1e9" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extract the starting time and population." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "t0 = census.index[0]\n", + "p0 = census[t0]\n", + "t_end = census.index[-1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize the system object." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
t01950.000000
t_end2015.000000
p02.557629
alpha0.025000
beta-0.001800
\n", + "
" + ], + "text/plain": [ + "t0 1950.000000\n", + "t_end 2015.000000\n", + "p0 2.557629\n", + "alpha 0.025000\n", + "beta -0.001800\n", + "dtype: float64" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = System(t0=t0, \n", + " t_end=t_end,\n", + " p0=p0,\n", + " alpha=0.025,\n", + " beta=-0.0018)\n", + "\n", + "system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run the model and plot results." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_simulation(system, update_func2)\n", + "plot_results(system)\n", + "decorate(title='Quadratic model')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating projections" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To generate projections, all we have to do is change `t_end`" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap04-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "system.t_end = 2250\n", + "run_simulation(system, update_func2)\n", + "plot_results(system)\n", + "decorate(title='World population projection')\n", + "savefig('chap04-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The population in the model converges on the equilibrium population, `-alpha/beta`" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13.856665141368708" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results[system.t_end]" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13.888888888888889" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "-system.alpha / system.beta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** What happens if we start with an initial population above the carrying capacity, like 20 billion? The the model with initial populations between 1 and 20 billion, and plot the results on the same axes." + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nGAwGg8GT/w/HSnRJlPRdGgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def run_system():\n", + " for n in range (20):\n", + " \n", + " systemn = System(t0=t0, \n", + " t_end=t_end,\n", + " p0=n,\n", + " alpha=0.025,\n", + " beta=-0.0018)\n", + " \n", + " run_simulation(systemn, update_func2)\n", + " plot_results(systemn)\n", + " decorate(title='Quadratic model')\n", + " \n", + "run_system()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comparing projections" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can compare the projection from our model with projections produced by people who know what they are doing." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
United States Census Bureau (2015)[18]Population Reference Bureau (1973-2015)[6]United Nations Department of Economic and Social Affairs (2015)[7]
Year
20167.334772e+09NaN7.432663e+09
20177.412779e+09NaNNaN
20187.490428e+09NaNNaN
20197.567403e+09NaNNaN
20207.643402e+09NaN7.758157e+09
\n", + "
" + ], + "text/plain": [ + " United States Census Bureau (2015)[18] \\\n", + "Year \n", + "2016 7.334772e+09 \n", + "2017 7.412779e+09 \n", + "2018 7.490428e+09 \n", + "2019 7.567403e+09 \n", + "2020 7.643402e+09 \n", + "\n", + " Population Reference Bureau (1973-2015)[6] \\\n", + "Year \n", + "2016 NaN \n", + "2017 NaN \n", + "2018 NaN \n", + "2019 NaN \n", + "2020 NaN \n", + "\n", + " United Nations Department of Economic and Social Affairs (2015)[7] \n", + "Year \n", + "2016 7.432663e+09 \n", + "2017 NaN \n", + "2018 NaN \n", + "2019 NaN \n", + "2020 7.758157e+09 " + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table3 = tables[3]\n", + "table3.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`NaN` is a special value that represents missing data, in this case because some agencies did not publish projections for some years." + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "table3.columns = ['census', 'prb', 'un']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This function plots projections from the UN DESA and U.S. Census. It uses `dropna` to remove the `NaN` values from each series before plotting it." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_projections(table):\n", + " \"\"\"Plot world population projections.\n", + " \n", + " table: DataFrame with columns 'un' and 'census'\n", + " \"\"\"\n", + " census = table.census / 1e9\n", + " un = table.un / 1e9\n", + " \n", + " plot(census.dropna(), ':', color='darkblue', label='US Census')\n", + " plot(un.dropna(), '--', color='green', label='UN DESA')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run the model until 2100, which is as far as the other projections go." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system.p0 = census[t0]\n", + "system.t_end = 2100\n", + "run_simulation(system, update_func2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap04-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nC/UAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_results(system)\n", + "plot_projections(table3)\n", + "decorate(title='World population projections')\n", + "savefig('chap04-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "People who know what they are doing expect the growth rate to decline more sharply than our model projects." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Suppose there are two banks across the street from each other, The First Geometric Bank (FGB) and Exponential Savings and Loan (ESL). They offer the same interest rate on checking accounts, 3%, but at FGB, they compute and pay interest at the end of each year, and at ESL they compound interest continuously.\n", + "\n", + "If you deposit $p_0$ dollars at FGB at the beginning of Year 0, the balanace of your account at the end of Year $n$ is\n", + "\n", + "$ x_n = p_0 (1 + \\alpha)^n $\n", + "\n", + "where $\\alpha = 0.03$. At ESL, your balance at any time $t$ would be\n", + "\n", + "$ x(t) = p_0 \\exp(\\alpha t) $\n", + "\n", + "If you deposit \\$1000 at each back at the beginning of Year 0, how much would you have in each account after 10 years?\n", + "\n", + "Is there an interest rate FGB could pay so that your balance at the end of each year would be the same at both banks? What is it?\n", + "\n", + "Hint: `modsim` provides a function called `exp`, which is a wrapper for the NumPy function `exp`." + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1343.9163793441223" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p0 = 1000\n", + "alpha = 0.03\n", + "n = 10\n", + "\n", + "x_n = p0 * (1 + alpha)**n\n", + "\n", + "x_n\n", + "#below is printed the monentary value at FGB" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1349.8588075760031" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p0 = 1000\n", + "alpha = 0.03\n", + "t = 10\n", + "\n", + "x_t = p0 * (exp(alpha*t))\n", + "\n", + "x_t\n", + "#below is printed the monentary value at ESL" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.030454533953516938" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p0 = 1000\n", + "alpha = 0.03\n", + "n = 10\n", + "t = 10\n", + "alpha1 = (exp(alpha*t))**(1/n) - 1\n", + "\n", + "alpha1\n", + "#below is printed thevalue of compounded interest needed at FGB" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Suppose a new bank opens called the Polynomial Credit Union (PCU). In order to compete with First Geometric Bank and Exponential Savings and Loan, PCU offers a parabolic savings account where the balance is a polynomial function of time:\n", + "\n", + "$ x(t) = p_0 + \\beta_1 t + \\beta_2 t^2 $\n", + "\n", + "As a special deal, they offer an account with $\\beta_1 = 30$ and $\\beta_2 = 0.5$, with those parameters guaranteed for life.\n", + "\n", + "Suppose you deposit \\$1000 at all three banks at the beginning of Year 0. How much would you have in each account at the end of Year 10? How about Year 20? And Year 100?" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1343.9163793441223\n", + "FGB^\n", + "1349.85880758\n", + "ELS^\n", + "1350.0\n", + "PCU^\n" + ] + } + ], + "source": [ + "# Year 10:\n", + "\n", + "#FGB\n", + "\n", + "p0 = 1000\n", + "alpha = 0.03\n", + "n = 10\n", + "\n", + "x_n = p0 * (1 + alpha)**n\n", + "\n", + "\n", + "#ESL\n", + "\n", + "p0 = 1000\n", + "alpha = 0.03\n", + "t = 10\n", + "\n", + "x_t = p0 * (exp(alpha*t))\n", + "\n", + "\n", + "#PCU\n", + "\n", + "p0 = 1000\n", + "beta1 = 30\n", + "beta2 = 0.5\n", + "t2 = 10\n", + "\n", + "x_t2 = p0 + beta1 * t2 + beta2 *t2**2\n", + "\n", + "print(x_n)\n", + "print('FGB^')\n", + "print(x_t)\n", + "print('ELS^')\n", + "print(x_t2)\n", + "print('PCU^')" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1806.111234669415\n", + "FGB^\n", + "1822.11880039\n", + "ELS^\n", + "1800.0\n", + "PCU^\n" + ] + } + ], + "source": [ + "# Year 20:\n", + "\n", + "#FGB\n", + "\n", + "p0 = 1000\n", + "alpha = 0.03\n", + "n = 20\n", + "\n", + "x_n = p0 * (1 + alpha)**n\n", + "\n", + "#ESL\n", + "\n", + "p0 = 1000\n", + "alpha = 0.03\n", + "t = 20\n", + "\n", + "x_t = p0 * (exp(alpha*t))\n", + "\n", + "\n", + "#PCU\n", + "\n", + "p0 = 1000\n", + "beta1 = 30\n", + "beta2 = 0.5\n", + "t2 = 20\n", + "\n", + "x_t2 = p0 + beta1 * t2 + beta2 *t2**2\n", + "\n", + "print(x_n)\n", + "print('FGB^')\n", + "print(x_t)\n", + "print('ELS^')\n", + "print(x_t2)\n", + "print('PCU^')" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "19218.6319808563\n", + "FGB^\n", + "20085.5369232\n", + "ELS^\n", + "9000.0\n", + "PCU^\n" + ] + } + ], + "source": [ + "# Year 100:\n", + "\n", + "#FGB\n", + "\n", + "p0 = 1000\n", + "alpha = 0.03\n", + "n = 100\n", + "\n", + "x_n = p0 * (1 + alpha)**n\n", + "\n", + "\n", + "#ESL\n", + "\n", + "p0 = 1000\n", + "alpha = 0.03\n", + "t = 100\n", + "\n", + "x_t = p0 * (exp(alpha*t))\n", + "\n", + "#PCU\n", + "\n", + "p0 = 1000\n", + "beta1 = 30\n", + "beta2 = 0.5\n", + "t2 = 100\n", + "\n", + "x_t2 = p0 + beta1 * t2 + beta2 *t2**2\n", + "\n", + "print(x_n)\n", + "print('FGB^')\n", + "print(x_t)\n", + "print('ELS^')\n", + "print(x_t2)\n", + "print('PCU^')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap05-fig01.pdf b/code/chap05-fig01.pdf new file mode 100644 index 00000000..1547798c Binary files /dev/null and b/code/chap05-fig01.pdf differ diff --git a/code/chap05-fig02.pdf b/code/chap05-fig02.pdf new file mode 100644 index 00000000..02db6895 Binary files /dev/null and b/code/chap05-fig02.pdf differ diff --git a/code/chap05-fig03.pdf b/code/chap05-fig03.pdf new file mode 100644 index 00000000..32346c25 Binary files /dev/null and b/code/chap05-fig03.pdf differ diff --git a/code/chap05-fig04.pdf b/code/chap05-fig04.pdf new file mode 100644 index 00000000..375d76e4 Binary files /dev/null and b/code/chap05-fig04.pdf differ diff --git a/code/chap05-fig05.pdf b/code/chap05-fig05.pdf new file mode 100644 index 00000000..a5fa1393 Binary files /dev/null and b/code/chap05-fig05.pdf differ diff --git a/code/chap05-fig06.pdf b/code/chap05-fig06.pdf new file mode 100644 index 00000000..ac001f3f Binary files /dev/null and b/code/chap05-fig06.pdf differ diff --git a/code/chap05-fig07.pdf b/code/chap05-fig07.pdf new file mode 100644 index 00000000..72b79882 Binary files /dev/null and b/code/chap05-fig07.pdf differ diff --git a/code/chap05mine.ipynb b/code/chap05mine.ipynb new file mode 100644 index 00000000..306441f9 --- /dev/null +++ b/code/chap05mine.ipynb @@ -0,0 +1,2042 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 5: Design\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# To switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SIR implementation\n", + "\n", + "We'll use a `State` object to represent the number or fraction of people in each compartment." + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
S89
I1
R0
\n", + "
" + ], + "text/plain": [ + "S 89\n", + "I 1\n", + "R 0\n", + "dtype: int64" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(S=89, I=1, R=0)\n", + "init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To convert from number of people to fractions, we divide through by the total." + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
S0.988889
I0.011111
R0.000000
\n", + "
" + ], + "text/plain": [ + "S 0.988889\n", + "I 0.011111\n", + "R 0.000000\n", + "dtype: float64" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init /= sum(init)\n", + "init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`make_system` creates a `System` object with the given parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(beta, gamma):\n", + " \"\"\"Make a system object for the SIR model.\n", + " \n", + " beta: contact rate in days\n", + " gamma: recovery rate in days\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " init = State(S=89, I=1, R=0)\n", + " init /= sum(init)\n", + "\n", + " t0 = 0\n", + " t_end = 7 * 14\n", + "\n", + " return System(init=init, t0=t0, t_end=t_end,\n", + " beta=beta, gamma=gamma)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's an example with hypothetical values for `beta` and `gamma`." + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "tc = 3 # time between contacts in days \n", + "tr = 4 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "system = make_system(beta, gamma)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The update function takes the state during the current time step and returns the state during the next time step." + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update1(state, system):\n", + " \"\"\"Update the SIR model.\n", + " \n", + " state: State with variables S, I, R\n", + " system: System with beta and gamma\n", + " \n", + " returns: State object\n", + " \"\"\"\n", + " s, i, r = state\n", + "\n", + " infected = system.beta * i * s \n", + " recovered = system.gamma * i\n", + " \n", + " s -= infected\n", + " i += infected - recovered\n", + " r += recovered\n", + " \n", + " return State(S=s, I=i, R=r)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To run a single time step, we call it like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
S0.985226
I0.011996
R0.002778
\n", + "
" + ], + "text/plain": [ + "S 0.985226\n", + "I 0.011996\n", + "R 0.002778\n", + "dtype: float64" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state = update1(init, system)\n", + "state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run a simulation by calling the update function for each time step." + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \n", + " returns: State object for final state\n", + " \"\"\"\n", + " state = system.init\n", + " for t in linrange(system.t0, system.t_end):\n", + " state = update_func(state, system)\n", + " return state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is the state of the system at `t_end`" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
S0.520453
I0.000615
R0.478933
\n", + "
" + ], + "text/plain": [ + "S 0.520453\n", + "I 0.000615\n", + "R 0.478933\n", + "dtype: float64" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_simulation(system, update1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise** Suppose the time between contacts is 4 days and the recovery time is 5 days. After 14 weeks, how many students, total, have been infected?\n", + "\n", + "Hint: what is the change in `S` between the beginning and the end of the simulation?" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.37943042989926101" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tc = 4 # time between contacts in days \n", + "tr = 5 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "system = make_system(beta, gamma)\n", + "S_0 = system.init.S\n", + "\n", + "final = run_simulation(system, update1)\n", + "S_end = final.S\n", + "\n", + "S_0 - S_end" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using Series objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to store the state of the system at each time step, we can use one `TimeSeries` object for each state variable." + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add three Series objects to the System: S, I, R\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " S = TimeSeries()\n", + " I = TimeSeries()\n", + " R = TimeSeries()\n", + "\n", + " state = system.init\n", + " t0 = system.t0\n", + " S[t0], I[t0], R[t0] = state\n", + " \n", + " for t in linrange(system.t0, system.t_end):\n", + " state = update_func(state, system)\n", + " S[t+1], I[t+1], R[t+1] = state\n", + " \n", + " system.S = S\n", + " system.I = I\n", + " system.R = R" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we call it." + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "tc = 3 # time between contacts in days \n", + "tr = 4 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "system = make_system(beta, gamma)\n", + "run_simulation(system, update1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And then we can plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_results(S, I, R):\n", + " \"\"\"Plot the results of a SIR model.\n", + " \n", + " S: TimeSeries\n", + " I: TimeSeries\n", + " R: TimeSeries\n", + " \"\"\"\n", + " plot(S, '--', color='blue', label='Susceptible')\n", + " plot(I, '-', color='red', label='Infected')\n", + " plot(R, ':', color='green', label='Recovered')\n", + " decorate(xlabel='Time (days)',\n", + " ylabel='Fraction of population')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what they look like." + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\ne236ks8bQQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_results(system.S, system.I, system.R)\n", + "savefig('chap05-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using a DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of making three `TimeSeries` objects, we can use one `DataFrame`.\n", + "\n", + "We have to use `loc` to indicate which row we want to assign the results to. But then Pandas does the right thing, matching up the state variables with the columns of the `DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add a DataFrame to the System: results\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " frame = DataFrame(columns=system.init.index)\n", + " frame.loc[system.t0] = system.init\n", + " \n", + " for t in linrange(system.t0, system.t_end):\n", + " frame.loc[t+1] = update_func(frame.loc[t], system)\n", + " \n", + " system.results = frame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it, and what the result looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SIR
00.9888890.0111110.000000
10.9852260.0119960.002778
20.9812870.0129360.005777
30.9770550.0139340.009011
40.9725170.0149880.012494
\n", + "
" + ], + "text/plain": [ + " S I R\n", + "0 0.988889 0.011111 0.000000\n", + "1 0.985226 0.011996 0.002778\n", + "2 0.981287 0.012936 0.005777\n", + "3 0.977055 0.013934 0.009011\n", + "4 0.972517 0.014988 0.012494" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tc = 3 # time between contacts in days \n", + "tr = 4 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "sir = make_system(beta, gamma)\n", + "run_simulation(system, update1)\n", + "system.results.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can extract the results and plot them." + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\ne236ks8bQQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "frame = system.results\n", + "plot_results(frame.S, frame.I, frame.R)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise** Suppose the time between contacts is 4 days and the recovery time is 5 days. Simulate this scenario for 14 days and plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\ne236ks8bQQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tc = 4 # time between contacts in days \n", + "tr = 5 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "sir = make_system(beta, gamma)\n", + "run_simulation(system, update1)\n", + "system.results.head()\n", + "\n", + "frame = system.results\n", + "plot_results(frame.S, frame.I, frame.R)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Given the results, we can compute metrics that quantify whatever we are interested in, like the total number of sick students, for example." + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def calc_total_infected(system):\n", + " \"\"\"Fraction of population infected during the simulation.\n", + " \n", + " system: System object with results.\n", + " \n", + " returns: fraction of population\n", + " \"\"\"\n", + " frame = system.results\n", + " return frame.S[system.t0] - frame.S[system.t_end]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's an example.|" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.333 0.25 0.467162931836\n" + ] + } + ], + "source": [ + "system.beta = 0.333\n", + "system.gamma = 0.25\n", + "run_simulation(system, update1)\n", + "print(system.beta, system.gamma, calc_total_infected(system))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write functions that take a `System` object as a parameter, extract the `results` object from it, and compute the other metrics mentioned in the book:\n", + "\n", + "1. The fraction of students who are sick at the peak of the outbreak.\n", + "\n", + "2. The day the outbreak peaks.\n", + "\n", + "3. The fraction of students who are sick at the end of the semester.\n", + "\n", + "Hint: If you have a `TimeSeries` called `I`, you can compute the largest value of the series like this:\n", + "\n", + " I.max()\n", + "\n", + "And the index of the largest value like this:\n", + "\n", + " I.idxmax()\n", + "\n", + "You can read about these functions in the `Series` [documentation](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add three Series objects to the System: S, I, R\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " S = TimeSeries()\n", + " I = TimeSeries()\n", + " R = TimeSeries()\n", + "\n", + " state = system.init\n", + " t0 = system.t0\n", + " S[t0], I[t0], R[t0] = state\n", + " \n", + " for t in linrange(system.t0, system.t_end):\n", + " state = update_func(state, system)\n", + " S[t+1], I[t+1], R[t+1] = state\n", + " \n", + " system.S = S\n", + " system.I = I\n", + " system.R = R\n", + "\n", + " print('Sick at peak:')\n", + " print(I.max())\n", + " print('Time of peak:')\n", + " print(I.idxmax())\n", + " \n", + "def sick_end(system):\n", + " frame = system.results\n", + " return frame.I[system.t_end]" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sick at peak:\n", + "0.0435362026876\n", + "Time of peak:\n", + "30\n" + ] + }, + { + "data": { + "text/plain": [ + "0.00067419431560344738" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_simulation(system, update1)\n", + "sick_end(system)" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": { + "collapsed": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add a DataFrame to the System: results\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " frame = DataFrame(columns=system.init.index)\n", + " frame.loc[system.t0] = system.init\n", + " \n", + " for t in linrange(system.t0, system.t_end):\n", + " frame.loc[t+1] = update_func(frame.loc[t], system)\n", + " \n", + " system.results = frame" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What if?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use this model to evaluate \"what if\" scenarios. For example, this function models the effect of immunization by moving some fraction of the population from S to R before the simulation starts." + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def add_immunization(system, fraction):\n", + " \"\"\"Immunize a fraction of the population.\n", + " \n", + " Moves the given fraction from S to R.\n", + " \n", + " system: System object\n", + " fraction: number from 0 to 1\n", + " \"\"\"\n", + " system.init.S -= fraction\n", + " system.init.R += fraction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start again with the system we used in the previous sections." + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3333333333333333, 0.25)" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tc = 3 # time between contacts in days \n", + "tr = 4 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "system = make_system(beta, gamma)\n", + "system.beta, system.gamma" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And run the model without immunization." + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.46832081102878098" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_simulation(system, update1)\n", + "calc_total_infected(system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now with 10% immunization." + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.30650802853979753" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system2 = make_system(beta, gamma)\n", + "add_immunization(system2, 0.1)\n", + "run_simulation(system2, update1)\n", + "calc_total_infected(system2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10% immunization leads to a drop in infections of 16 percentage points.\n", + "\n", + "Here's what the time series looks like for S, with and without immunization." + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nb2/c3fFWVR7paWVlhaen500vhtkYmBS5EOIx4D3ga2AYULoK4hdAL2B+XQTXUtlYWzB+YAh2Nto+\nEfmFxfy69TTZV2u2052iXMv+/fvx9fXl119/rXbR1ejoaHr37l2hrE+fPkRHRwPg7+9PQkICGRkZ\nxMbGcvnyZXx9fcnIyGDlypU8+eSTJsVRvvlr2bJlPP7447z33nv069eP8PBwXn31VVJTU5k8eTJh\nYWGMHDmSLVu2VLj+888/54knnqBr164MGzaMDRs2sHbtWkaMGEF4eDiTJ0/m4sWLQPXNS5XLIiMj\n+fLLL3nqqacICwtjwIABvP/++8bzyzd/zZ49GyFEla+HHnoIgPz8fBYtWsTQoUPp3Lkzffv2Zc6c\nOeTm5pKSksIDDzwAwLBhw1i2bFmVWHJzc1myZAmRkZF06dKFe+65h507dxpjmT17NnPnzuW1116j\nT58+hIeHM3PmTLKzG651w9SdH2cBb0spnxdCGLdAk1L+KIRoBcwEnjPlRiXXvwY8CjgCa4BnpJTV\nDncSQowqOb89EA+8LqX83sS4mywneyvGRbRh1eZYCgqLyc4tZPX2eO4cGoqlhfmNb6DUu1/lr/wW\n85tJ5w4MGsiDXR+sUPbN4W/YmrjVpOtvb3c748S4GsdYasKECUyYMOGax9PT0/H29q5Q5uXlZXyz\n69q1K6NGjWLgwIGYm5szbdo0PD09mT9/Pvfee+9Nf5LfvXs3rq6ufPfdd+zfv5+5c+eyfv16nn/+\neWbPns3ixYuZM2cO27dvN17zwQcf8Morr/Dyyy/zxhtv8NxzzxEaGsrbb79NTk4OU6dO5YsvvmDW\nrFkmx/HPf/6TuXPnMm/ePNasWcOSJUvo27cvPXv2rHDevHnzmDlzpvH1xo0befXVV41J9c0332Tb\ntm0sXrwYHx8fDh8+bExEDz30EB9++CFTpkzhhx9+ICQkhKNHj1a4/4wZMzh16hTz58/Hz8+P77//\nnieeeILvvvuOsLAwAH755Rfuuece/vOf/5CUlMT06dMJCQlhypQpNf771wZT61jBwNprHDsC+NTg\nma8CjwAPA4MAf+B/1Z0ohBgA/A5sA3oCi9Ca3B6qwfOaLE9XW0b3a41ZyfL45zNzWbsrUa0TptS5\nvLy8KlvaWllZkZ+fb3w9f/58du/ezZ49e5g8eTJJSUmsW7eOSZMmsXLlSm677TbuvvtuTp48WaNn\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(system.results.S, '-', label='No immunization')\n", + "plot(system2.results.S, 'g--', label='10% immunization')\n", + "\n", + "decorate(xlabel='Time (days)',\n", + " ylabel='Fraction susceptible')\n", + "\n", + "savefig('chap05-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can sweep through a range of values for the fraction of the population who are immunized." + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.468320811029\n", + "0.1 0.30650802854\n", + "0.2 0.161365457006\n", + "0.3 0.0728155898425\n", + "0.4 0.035520216753\n", + "0.5 0.0196887157825\n", + "0.6 0.0116220579983\n", + "0.7 0.00683873780062\n", + "0.8 0.00369649625371\n", + "0.9 0.00148153267227\n", + "1.0 -0.000161212109412\n" + ] + } + ], + "source": [ + "immunize_array = linspace(0, 1, 11)\n", + "for fraction in immunize_array:\n", + " system = make_system(beta, gamma)\n", + " add_immunization(system, fraction)\n", + " run_simulation(system, update1)\n", + " print(fraction, calc_total_infected(system))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This function does the same thing and stores the results in a `Sweep` object." + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sweep_immunity(immunize_array):\n", + " \"\"\"Sweeps a range of values for immunity.\n", + " \n", + " immunize_array: array of fraction immunized\n", + " \n", + " returns: Sweep object\n", + " \"\"\"\n", + " sweep = SweepSeries()\n", + " for fraction in immunize_array:\n", + " system = make_system(beta, gamma)\n", + " add_immunization(system, fraction)\n", + " run_simulation(system, update1)\n", + " sweep[fraction] = calc_total_infected(system)\n", + " return sweep" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "immunize_array = linspace(0, 1, 21)\n", + "infected_sweep = sweep_immunity(immunize_array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(infected_sweep)\n", + "\n", + "decorate(xlabel='Fraction immunized',\n", + " ylabel='Total fraction infected',\n", + " title='Fraction infected vs. immunization rate',\n", + " legend=False)\n", + "\n", + "savefig('chap05-fig03.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If 40% of the population is immunized, less than 4% of the population gets sick." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Logistic function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To model the effect of a hand-washing campaign, I'll use a [generalized logistic function](https://en.wikipedia.org/wiki/Generalised_logistic_function), which is a convenient function for modeling curves that have a generally sigmoid shape. The parameters of the GLF correspond to various features of the curve in a way that makes it easy to find a function that has the shape you want, based on data or background information about the scenario." + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def logistic(x, A=0, B=1, C=1, M=0, K=1, Q=1, nu=1):\n", + " \"\"\"Computes the generalize logistic function.\n", + " \n", + " A: controls the lower bound\n", + " B: controls the steepness of the transition \n", + " C: not all that useful, AFAIK\n", + " M: controls the location of the transition\n", + " K: controls the upper bound\n", + " Q: shift the transition left or right\n", + " nu: affects the symmetry of the transition\n", + " \n", + " returns: float or array\n", + " \"\"\"\n", + " exponent = -B * (x - M)\n", + " denom = C + Q * exp(exponent)\n", + " return A + (K-A) / denom ** (1/nu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following array represents the range of possible spending." + ] + }, + { + "cell_type": "code", + "execution_count": 226, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 60., 120., 180., 240., 300., 360., 420.,\n", + " 480., 540., 600., 660., 720., 780., 840., 900.,\n", + " 960., 1020., 1080., 1140., 1200.])" + ] + }, + "execution_count": 226, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spending = linspace(0, 1200, 21)\n", + "spending" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`compute_factor` computes the reduction in `beta` for a given level of campaign spending.\n", + "\n", + "`M` is chosen so the transition happens around \\$500.\n", + "\n", + "`K` is the maximum reduction in `beta`, 20%.\n", + "\n", + "`B` is chosen by trial and error to yield a curve that seems feasible." + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def compute_factor(spending):\n", + " \"\"\"Reduction factor as a function of spending.\n", + " \n", + " spending: dollars from 0 to 1200\n", + " \n", + " returns: fractional reduction in beta\n", + " \"\"\"\n", + " return logistic(spending, M=500, K=0.2, B=0.01)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 228, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "percent_reduction = compute_factor(spending) * 100\n", + "\n", + "plot(spending, percent_reduction)\n", + "\n", + "decorate(xlabel='Hand-washing campaign spending (USD)',\n", + " ylabel='Percent reduction in infection rate',\n", + " title='Effect of hand washing on infection rate',\n", + " legend=False)\n", + "\n", + "savefig('chap05-fig04.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Modify the parameters `M`, `K`, and `B`, and see what effect they have on the shape of the curve. Read about the [generalized logistic function on Wikipedia](https://en.wikipedia.org/wiki/Generalised_logistic_function). Modify the other parameters and see what effect they have." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hand washing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can model the effect of a hand-washing campaign by modifying `beta`" + ] + }, + { + "cell_type": "code", + "execution_count": 229, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def add_hand_washing(system, spending):\n", + " \"\"\"Modifies system to model the effect of hand washing.\n", + " \n", + " system: System object\n", + " spending: campaign spending in USD\n", + " \"\"\"\n", + " factor = compute_factor(spending)\n", + " system.beta *= (1 - factor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with the same values of `beta` and `gamma` we've been using." + ] + }, + { + "cell_type": "code", + "execution_count": 230, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3333333333333333, 0.25)" + ] + }, + "execution_count": 230, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tc = 3 # time between contacts in days \n", + "tr = 4 # recovery time in days\n", + "\n", + "beta = 1 / tc # contact rate in per day\n", + "gamma = 1 / tr # recovery rate in per day\n", + "\n", + "beta, gamma" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can sweep different levels of campaign spending." + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.332887143272 0.466770231236\n", + "100.0 0.332134252669 0.464141650401\n", + "200.0 0.330171608455 0.457217006313\n", + "300.0 0.325386471865 0.439887202912\n", + "400.0 0.315403905242 0.401630646271\n", + "500.0 0.3 0.33703425949\n", + "600.0 0.284596094758 0.267317030568\n", + "700.0 0.274613528135 0.22184699046\n", + "800.0 0.269828391545 0.200791598416\n", + "900.0 0.267865747331 0.192392183393\n", + "1000.0 0.267112856728 0.189213207818\n", + "1100.0 0.26683150821 0.18803175228\n", + "1200.0 0.266727403413 0.187595503995\n" + ] + } + ], + "source": [ + "spending_array = linspace(0, 1200, 13)\n", + "\n", + "for spending in spending_array:\n", + " system = make_system(beta, gamma)\n", + " add_hand_washing(system, spending)\n", + " run_simulation(system, update1)\n", + " print(spending, system.beta, calc_total_infected(system))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a function that sweeps a range of spending and stores the results in a `Sweep` object." + ] + }, + { + "cell_type": "code", + "execution_count": 232, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sweep_hand_washing(spending_array):\n", + " \"\"\"Run simulations with a range of spending.\n", + " \n", + " spending_array: array of dollars from 0 to 1200\n", + " \n", + " returns: Sweep object\n", + " \"\"\"\n", + " sweep = SweepSeries()\n", + " for spending in spending_array:\n", + " system = make_system(beta, gamma)\n", + " add_hand_washing(system, spending)\n", + " run_simulation(system, update1)\n", + " sweep[spending] = calc_total_infected(system)\n", + " return sweep" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 233, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "spending_array = linspace(0, 1200, 20)\n", + "infected_sweep = sweep_hand_washing(spending_array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 234, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig05.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(infected_sweep)\n", + "\n", + "decorate(xlabel='Hand-washing campaign spending (USD)',\n", + " ylabel='Total fraction infected',\n", + " title='Effect of hand washing on total infections',\n", + " legend=False)\n", + "\n", + "savefig('chap05-fig05.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's put it all together to make some public health spending decisions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optimization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose we have \\$1200 to spend on any combination of vaccines and a hand-washing campaign." + ] + }, + { + "cell_type": "code", + "execution_count": 247, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 247, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "num_students = 90\n", + "budget = 1200\n", + "price_per_dose = 100\n", + "max_doses = int(budget / price_per_dose)\n", + "dose_array = linrange(max_doses)\n", + "max_doses" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can sweep through a range of doses from, 0 to `max_doses`, model the effects of immunization and the hand-washing campaign, and run simulations.\n", + "\n", + "For each scenario, we compute the fraction of students who get sick." + ] + }, + { + "cell_type": "code", + "execution_count": 248, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.988888888889 0.266727403413 0.187595503995\n", + "1.0 0.977777777778 0.26683150821 0.174580718826\n", + "2.0 0.966666666667 0.267112856728 0.162909838349\n", + "3.0 0.955555555556 0.267865747331 0.153508349478\n", + "4.0 0.944444444444 0.269828391545 0.148565092315\n", + "5.0 0.933333333333 0.274613528135 0.152945950611\n", + "6.0 0.922222222222 0.284596094758 0.174964415024\n", + "7.0 0.911111111111 0.3 0.217343161684\n", + "8.0 0.9 0.315403905242 0.259071044488\n", + "9.0 0.888888888889 0.325386471865 0.278402884103\n", + "10.0 0.877777777778 0.330171608455 0.277914534623\n", + "11.0 0.866666666667 0.332134252669 0.267357496693\n", + "12.0 0.855555555556 0.332887143272 0.252796945636\n" + ] + } + ], + "source": [ + "for doses in dose_array:\n", + " fraction = doses / num_students\n", + " spending = budget - doses * price_per_dose\n", + " \n", + " system = make_system(beta, gamma)\n", + " add_immunization(system, fraction)\n", + " add_hand_washing(system, spending)\n", + " \n", + " run_simulation(system, update1)\n", + " print(doses, system.init.S, system.beta, calc_total_infected(system))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function wraps that loop and stores the results in a `Sweep` object." + ] + }, + { + "cell_type": "code", + "execution_count": 249, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sweep_doses(dose_array):\n", + " \"\"\"Runs simulations with different doses and campaign spending.\n", + " \n", + " dose_array: range of values for number of vaccinations\n", + " \n", + " return: Sweep object with total number of infections \n", + " \"\"\"\n", + " sweep = SweepSeries()\n", + " for doses in dose_array:\n", + " fraction = doses / num_students\n", + " spending = budget - doses * price_per_dose\n", + " \n", + " system = make_system(beta, gamma)\n", + " add_immunization(system, fraction)\n", + " add_hand_washing(system, spending)\n", + " \n", + " run_simulation(system, update1)\n", + " sweep[doses] = calc_total_infected(system)\n", + "\n", + " return sweep" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can compute the number of infected students for each possible allocation of the budget." + ] + }, + { + "cell_type": "code", + "execution_count": 250, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "infected_sweep = sweep_doses(dose_array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 251, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig06.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(infected_sweep)\n", + "\n", + "decorate(xlabel='Doses of vaccine',\n", + " ylabel='Total fraction infected',\n", + " title='Total infections vs. doses',\n", + " legend=False)\n", + "\n", + "savefig('chap05-fig06.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Suppose the price of the vaccine drops to $50 per dose. How does that affect the optimal allocation of the spending?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Suppose we have the option to quarantine infected students. For example, a student who feels ill might be moved to an infirmary, or a private dorm room, until they are no longer infectious.\n", + "\n", + "How might you incorporate the effect of quarantine in the SIR model?" + ] + }, + { + "cell_type": "code", + "execution_count": 252, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.988888888889 0.266727403413 0.187595503995\n", + "1.0 0.977777777778 0.266766745484 0.174324794892\n", + "2.0 0.966666666667 0.26683150821 0.16186489064\n", + "3.0 0.955555555556 0.266938009181 0.150272695439\n", + "4.0 0.944444444444 0.267112856728 0.13961230444\n", + "5.0 0.933333333333 0.267399129509 0.129963581944\n", + "6.0 0.922222222222 0.267865747331 0.121434809166\n", + "7.0 0.911111111111 0.268620815383 0.114180370856\n", + "8.0 0.9 0.269828391545 0.108423787107\n", + "9.0 0.888888888889 0.271723878668 0.104483374203\n", + "10.0 0.877777777778 0.274613528135 0.102788098227\n", + "11.0 0.866666666667 0.278828368254 0.103846179534\n", + "12.0 0.855555555556 0.284596094758 0.108083570148\n", + "13.0 0.844444444444 0.291836044587 0.115450119409\n", + "14.0 0.833333333333 0.3 0.124877480279\n", + "15.0 0.822222222222 0.308163955413 0.134149883099\n", + "16.0 0.811111111111 0.315403905242 0.140764543663\n", + "17.0 0.8 0.321171631746 0.143202490748\n", + "18.0 0.788888888889 0.325386471865 0.141392287173\n", + "19.0 0.777777777778 0.328276121332 0.136229534349\n", + "20.0 0.766666666667 0.330171608455 0.128888830991\n", + "21.0 0.755555555556 0.331379184617 0.120402986465\n", + "22.0 0.744444444444 0.332134252669 0.111526601711\n", + "23.0 0.733333333333 0.332600870491 0.102750907495\n", + "24.0 0.722222222222 0.332887143272 0.0943669224857\n", + "Saving figure to file chap05-fig07.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "num_students = 90\n", + "budget = 1200\n", + "price_per_dose = 50\n", + "max_doses = int(budget / price_per_dose)\n", + "dose_array = linrange(max_doses)\n", + "max_doses\n", + "\n", + "for doses in dose_array:\n", + " fraction = doses / num_students\n", + " spending = budget - doses * price_per_dose\n", + " \n", + " system = make_system(beta, gamma)\n", + " add_immunization(system, fraction)\n", + " add_hand_washing(system, spending)\n", + " \n", + " run_simulation(system, update1)\n", + " print(doses, system.init.S, system.beta, calc_total_infected(system))\n", + " \n", + "infected_sweep = sweep_doses(dose_array)\n", + " \n", + "plot(infected_sweep)\n", + "\n", + "decorate(xlabel='Doses of vaccine',\n", + " ylabel='Total fraction infected',\n", + " title='Total infections vs. doses',\n", + " legend=False)\n", + "\n", + "savefig('chap05-fig07.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": 255, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "#Suppose we have the option to quarantine infected students. \n", + "#For example, a student who feels ill might be moved to an infirmary, \n", + "#or a private dorm room, until they are no longer infectious.\n", + "#How might you incorporate the effect of quarantine in the SIR model?\n", + "\n", + "#We would decrease the infection rate, thereby increasing gamma.\n", + "def quarantine_update(system, n): \n", + " min = 1\n", + " max = 4\n", + " tr = max - n * (max-min)\n", + " system.gamma = 1 / tr\n", + " \n", + "print(quarantine_update(system, 0.15))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap06-fig01.pdf b/code/chap06-fig01.pdf new file mode 100644 index 00000000..dbe27317 Binary files /dev/null and b/code/chap06-fig01.pdf differ diff --git a/code/chap06-fig02.pdf b/code/chap06-fig02.pdf new file mode 100644 index 00000000..336202c1 Binary files /dev/null and b/code/chap06-fig02.pdf differ diff --git a/code/chap06-fig03.pdf b/code/chap06-fig03.pdf new file mode 100644 index 00000000..b8c9fe11 Binary files /dev/null and b/code/chap06-fig03.pdf differ diff --git a/code/chap06-fig04.pdf b/code/chap06-fig04.pdf new file mode 100644 index 00000000..dc44ef09 Binary files /dev/null and b/code/chap06-fig04.pdf differ diff --git a/code/chap06mine.ipynb b/code/chap06mine.ipynb new file mode 100644 index 00000000..54b46e0e --- /dev/null +++ b/code/chap06mine.ipynb @@ -0,0 +1,1271 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 6: Analysis\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# To switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Code from the previous chapter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`make_system`, `plot_results`, and `calc_total_infected` are unchanged." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(beta, gamma):\n", + " \"\"\"Make a system object for the SIR model.\n", + " \n", + " beta: contact rate in days\n", + " gamma: recovery rate in days\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " init = State(S=89, I=1, R=0)\n", + " init /= np.sum(init)\n", + "\n", + " t0 = 0\n", + " t_end = 7 * 14\n", + "\n", + " return System(init=init, t0=t0, t_end=t_end,\n", + " beta=beta, gamma=gamma)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_results(S, I, R):\n", + " \"\"\"Plot the results of an SIR model.\n", + " \n", + " S: TimeSeries\n", + " I: TimeSeries\n", + " R: TimeSeries\n", + " \"\"\"\n", + " plot(S, '--', color='blue', label='Susceptible')\n", + " plot(I, '-', color='red', label='Infected')\n", + " plot(R, ':', color='green', label='Resistant')\n", + " decorate(xlabel='Time (days)',\n", + " ylabel='Fraction of population')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def calc_total_infected(system):\n", + " \"\"\"Fraction of population infected during the simulation.\n", + " \n", + " system: System object with results.\n", + " \n", + " returns: fraction of population\n", + " \"\"\"\n", + " frame = system.results\n", + " return frame.S[system.t0] - frame.S[system.t_end]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's an updated version of `run_simulation` that uses `unpack`." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add a TimeFrame to the System: results\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " unpack(system)\n", + " \n", + " frame = TimeFrame(columns=init.index)\n", + " frame.loc[t0] = init\n", + " \n", + " for i in linrange(t0, t_end):\n", + " frame.loc[i+1] = update_func(frame.loc[i], system)\n", + " \n", + " system.results = frame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a version of `update1` that uses `unpack`." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Original\n", + "\n", + "def update1_no_supdate(state, system):\n", + " \"\"\"Update the SIR model.\n", + " \n", + " state: State (s, i, r)\n", + " system: System object\n", + " \n", + " returns: State (sir)\n", + " \"\"\"\n", + " s, i, r = state\n", + "\n", + " infected = system.beta * i * s \n", + " recovered = system.gamma * i\n", + " \n", + " s -= infected\n", + " i += infected - recovered\n", + " r += recovered\n", + " \n", + " return State(S=s, I=i, R=r)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update1(state, system):\n", + " \"\"\"Update the SIR model.\n", + " \n", + " state: State (s, i, r)\n", + " system: System object\n", + " \n", + " returns: State (sir)\n", + " \"\"\"\n", + " unpack(system)\n", + " \n", + " s, i, r = state\n", + "\n", + " infected = beta * i * s \n", + " recovered = gamma * i\n", + " \n", + " s -= infected\n", + " i += infected - recovered\n", + " r += recovered\n", + " \n", + " return State(S=s, I=i, R=r)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test the updated code with this example." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SIR
00.9888890.0111110.000000
10.9852300.0119920.002778
20.9812960.0129290.005776
30.9770710.0139210.009008
40.9725410.0149700.012488
\n", + "
" + ], + "text/plain": [ + " S I R\n", + "0 0.988889 0.011111 0.000000\n", + "1 0.985230 0.011992 0.002778\n", + "2 0.981296 0.012929 0.005776\n", + "3 0.977071 0.013921 0.009008\n", + "4 0.972541 0.014970 0.012488" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(0.333, 0.25)\n", + "run_simulation(system, update1)\n", + "system.results.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "frame = system.results\n", + "plot_results(frame.S, frame.I, frame.R)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sweeping beta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make a range of values for `beta`, with constant `gamma`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "beta_array = linspace(0.1, 0.9, 11)\n", + "gamma = 0.25" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run the simulation once for each value of `beta` and print total infections." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 0.00723090166498\n", + "0.18 0.0262722567457\n", + "0.26 0.160575485321\n", + "0.34 0.490862856866\n", + "0.42 0.689867847411\n", + "0.5 0.804506112463\n", + "0.58 0.873610307851\n", + "0.66 0.916554007142\n", + "0.74 0.943729262152\n", + "0.82 0.961060480958\n", + "0.9 0.972099315633\n" + ] + } + ], + "source": [ + "for beta in beta_array:\n", + " system = make_system(beta, gamma)\n", + " run_simulation(system, update1)\n", + " print(system.beta, calc_total_infected(system))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wrap that loop in a function and return a `SweepSeries` object." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sweep_beta(beta_array, gamma):\n", + " \"\"\"SweepSeriess a range of values for beta.\n", + " \n", + " beta_array: array of beta values\n", + " gamma: recovery rate\n", + " \n", + " returns: SweepSeries that maps from beta to total infected\n", + " \"\"\"\n", + " sweep = SweepSeries()\n", + " for beta in beta_array:\n", + " system = make_system(beta, gamma)\n", + " run_simulation(system, update1)\n", + " sweep[system.beta] = calc_total_infected(system)\n", + " return sweep" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SweepSeries `beta` and plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "infected_sweep = sweep_beta(beta_array, gamma)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap06-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "label = 'gamma = ' + str(gamma)\n", + "plot(infected_sweep, label=label)\n", + "decorate(xlabel='Contacts per day (beta)',\n", + " ylabel='Fraction infected')\n", + "\n", + "savefig('chap06-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sweeping gamma" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the same array of values for `beta`" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.1 , 0.18, 0.26, 0.34, 0.42, 0.5 , 0.58, 0.66, 0.74,\n", + " 0.82, 0.9 ])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "beta_array = linspace(0.1, 0.9, 11)\n", + "beta_array" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now an array of values for `gamma`" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.1, 0.3, 0.5, 0.7])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gamma_array = linspace(0.1, 0.7, 4)\n", + "gamma_array" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For each value of `gamma`, SweepSeries `beta` and plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap06-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nFArFKP5/H1F/DqvcupYAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for gamma in gamma_array:\n", + " infected_sweep = sweep_beta(beta_array, gamma)\n", + " label = 'gamma = ' + str(gamma)\n", + " plot(infected_sweep, label=label)\n", + " \n", + "decorate(xlabel='Contacts per day (beta)',\n", + " ylabel='Fraction infected',\n", + " loc='upper left')\n", + "\n", + "savefig('chap06-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now wrap that loop in a function and store the results in a `SweepSeriesFrame`" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sweep_parameters(beta_array, gamma_array):\n", + " \"\"\"SweepSeriess a range of values for beta and gamma.\n", + " \n", + " beta_array: array of infection rates\n", + " gamma_array: array of recovery rates\n", + " \n", + " returns: SweepSeriesFrame with one row for each beta\n", + " and one column for each gamma\n", + " \"\"\"\n", + " frame = SweepFrame(columns=gamma_array)\n", + " for gamma in gamma_array:\n", + " frame[gamma] = sweep_beta(beta_array, gamma)\n", + " return frame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.10.30.50.7
0.100.0846930.0054440.0027360.001827
0.180.7086230.0159140.0061180.003783
0.260.9007800.0553800.0116390.006427
0.340.9568880.2678640.0221150.010191
0.420.9770450.5245630.0478160.015946
\n", + "
" + ], + "text/plain": [ + " 0.1 0.3 0.5 0.7\n", + "0.10 0.084693 0.005444 0.002736 0.001827\n", + "0.18 0.708623 0.015914 0.006118 0.003783\n", + "0.26 0.900780 0.055380 0.011639 0.006427\n", + "0.34 0.956888 0.267864 0.022115 0.010191\n", + "0.42 0.977045 0.524563 0.047816 0.015946" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frame = sweep_parameters(beta_array, gamma_array)\n", + "frame.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's how we can plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nFArFKP5/H1F/DqvcupYAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for gamma in gamma_array:\n", + " label = 'gamma = ' + str(gamma)\n", + " plot(frame[gamma], label=label)\n", + " \n", + "decorate(xlabel='Contacts per day (beta)',\n", + " ylabel='Fraction infected',\n", + " loc='upper left')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It's often useful to separate the code that generates results from the code that plots the results, so we can run the simulations once, save the results, and then use them for different analysis, visualization, etc." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contact number" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After running the SweepSeriess, we have a `SweepSeriesFrame` with one row for each value of `beta` and one column for each value of `gamma`." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(11, 4)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frame.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following loop shows how we can loop through the columns and rows of the `SweepSeriesFrame`. With 11 rows and 4 columns, there are 44 elements.\n", + "\n", + "One implementation note: when we select a column from a `SweepSeriesFrame` we get a `Series` object, rather than a `SweepSeries` object, but they are almost the same." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 0.1 0.0846929424381\n", + "0.18 0.1 0.70862278537\n", + "0.26 0.1 0.900780251778\n", + "0.34 0.1 0.956887899544\n", + "0.42 0.1 0.977045257074\n", + "0.5 0.1 0.984595862826\n", + "0.58 0.1 0.987400345318\n", + "0.66 0.1 0.988404249064\n", + "0.74 0.1 0.988743421406\n", + "0.82 0.1 0.988849515052\n", + "0.9 0.1 0.988879570517\n", + "0.1 0.3 0.00544355912239\n", + "0.18 0.3 0.0159140691448\n", + "0.26 0.3 0.0553797621068\n", + "0.34 0.3 0.267864167733\n", + "0.42 0.3 0.524562935844\n", + "0.5 0.3 0.686050483916\n", + "0.58 0.3 0.788378556339\n", + "0.66 0.3 0.85506574641\n", + "0.74 0.3 0.89947913569\n", + "0.82 0.3 0.929469302619\n", + "0.9 0.3 0.949853310327\n", + "0.1 0.5 0.00273576554115\n", + "0.18 0.5 0.00611834135832\n", + "0.26 0.5 0.0116394693217\n", + "0.34 0.5 0.0221147665242\n", + "0.42 0.5 0.0478162266689\n", + "0.5 0.5 0.132438038458\n", + "0.58 0.5 0.303264192648\n", + "0.66 0.5 0.464110227319\n", + "0.74 0.5 0.588476972528\n", + "0.82 0.5 0.682749610978\n", + "0.9 0.5 0.754595298329\n", + "0.1 0.7 0.001826769347\n", + "0.18 0.7 0.00378256160842\n", + "0.26 0.7 0.00642667221076\n", + "0.34 0.7 0.0101905519335\n", + "0.42 0.7 0.0159458265615\n", + "0.5 0.7 0.0257079250464\n", + "0.58 0.7 0.0450077531168\n", + "0.66 0.7 0.0906940688294\n", + "0.74 0.7 0.189795211656\n", + "0.82 0.7 0.318343186735\n", + "0.9 0.7 0.436999374456\n" + ] + } + ], + "source": [ + "for gamma in frame.columns:\n", + " series = frame[gamma]\n", + " for beta in series.index:\n", + " frac_infected = series[beta]\n", + " print(beta, gamma, frac_infected)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can wrap that loop in a function and plot the results. For each element of the `SweepSeriesFrame`, we have `beta`, `gamma`, and `frac_infected`, and we plot `beta/gamma` on the x-axis and `frac_infected` on the y-axis." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_sweep_frame(frame):\n", + " \"\"\"Plots the values from a parameter SweepSeries.\n", + " \n", + " For each (beta, gamma), computes the contact number,\n", + " beta/gamma\n", + " \n", + " frame: SweepFrame with one row per beta, one column per gamma\n", + " \"\"\"\n", + " for gamma in frame.columns:\n", + " series = frame[gamma]\n", + " for beta in series.index:\n", + " frac_infected = series[beta]\n", + " plot(beta/gamma, frac_infected, 'ro',\n", + " label='Simulation')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what it looks like:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap06-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_sweep_frame(frame)\n", + "\n", + "decorate(xlabel='Contact number (beta/gamma)',\n", + " ylabel='Fraction infected',\n", + " legend=False)\n", + "\n", + "savefig('chap06-fig03.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It turns out that the ratio `beta/gamma`, called the \"contact number\" is sufficient to predict the total number of infections; we don't have to know `beta` and `gamma` separately.\n", + "\n", + "We can see that in the previous plot: when we plot the fraction infected versus the contact number, the results fall close to a curve.\n", + "\n", + "But if we didn't know about the contact number, we might have explored other possibilities, like the difference between `beta` and `gamma`, rather than their ratio." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a version of `plot_sweep_frame`, called `plot_sweep_frame_difference`, that plots the fraction infected versus the difference `beta-gamma`.\n", + "\n", + "What do the results look like, and what does that imply? " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_sweep_frame_difference(frame):\n", + " \"\"\"Plots the values from a parameter SweepSeries.\n", + " \n", + " For each (beta, gamma), computes the contact number,\n", + " beta/gamma\n", + " \n", + " frame: SweepFrame with one row per beta, one column per gamma\n", + " \"\"\"\n", + " for gamma in frame.columns:\n", + " series = frame[gamma]\n", + " for beta in series.index:\n", + " frac_infected = series[beta]\n", + " plot(beta-gamma, frac_infected, 'ro',\n", + " label='Simulation')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap06-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nEEIIEeT/AQ7RkL0TPoTXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_sweep_frame_difference(frame)\n", + "\n", + "decorate(xlabel='Contact number (beta/gamma)',\n", + " ylabel='Fraction infected',\n", + " legend=False)\n", + "\n", + "savefig('chap06-fig03.pdf')\n", + "\n", + "#Scattered, so not such a direct corelation as the ratio." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the book we figured out the relationship between $c$ and $s_{\\infty}$ analytically. Now we can compute it for a range of values:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "s_inf_array = linspace(0.0001, 0.9999, 101)\n", + "#s_inf_array" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "c_array = log(s_inf_array) / (s_inf_array - 1)\n", + "#c_array" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`total_infected` is the change in $s$ from the beginning to the end." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frac_infected = 1 - s_inf_array\n", + "frac_infected_series = Series(frac_infected, index=c_array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can plot the analytic results and compare them to the simulations." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap06-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\ni6iF85fLm6PaBsrdhRDC/ExOGAAHDx7kl19+IT09ncmTJ3P27Fk6deqEp6enueITVShRa7l0Jc/w\n/JYANwtGI4RoLkxKGCqViueff55du3ZhY2ODWq3moYce4v333+fMmTN8+umntGrVytyxilJJV3JR\na7QAeLja4+Zc9Qg2IYSoSyaNklq+fDm//PILK1euJCEhwdB2Pn/+fFxcXHjzzTdNPqFGo2Hp0qX0\n6tWLrl27Mm3aNDIyMqqtn5qayrRp0+jatSu33347c+fOpbCw0OTzNUXnU64ZHrfxl+YoIUT9MClh\nbN++nRkzZtC/f3+srctvSoKCgnj66afZv3+/ySeMi4tj69atLFq0iPXr15OamsrUqVOrrKtSqZgw\nYQLZ2dls2LCBN998k7179/LGG2+YfL6mRqfTcaFiwpDRUUKIemJSk1ROTg6tW7eu8jV3d3fy8vKq\nfO16KpWK+Ph45syZQ8+ePQFYtmwZAwYMIDExkcjISKP627dvJz09nY0bN+Lmpm+nnzp1Khs2bDDp\nfE1RZk4ReYUlANjZWuHn4WThiIQQzYVJdxjt27fn66+/rvK1n376iXbt2pl0shMnTpCfn090dLSh\nLCgoiMDAQBISEirV37dvH3fccYchWQA88MADbN682aTzNUUXU8tn1bfydUGpVFgwGiFEc2LSHcaT\nTz7J1KlTycnJ4c4770ShUJCYmMi2bdv45JNPWLx4sUknS01NBTAsm16mbOn0650/f57bbruN5cuX\ns23bNhQKBQMHDmT69OnVLlXSZB04AN98w8V0O3D2hpYtadVdBhoIIeqPSQnj7rvv5o033mDp0qXs\n2bMHgAULFuDh4cErr7zC4MGDTTpZYWEhSqUSGxvjSWa2trYUFxdXqp+Xl8fmzZvp06cPb731Fmlp\nabz++utkZmaanKSahAMHYO1aSlBy2a4j5OfDiRO07OIKt/SwdHRCiGai2oSxZs0a7r//fsPdQGxs\nLLGxsZw7d47s7GxcXFxo164dSqVJrVoA2Nvbo9VqUavVRp3nKpWqyl37rK2tcXNzY/HixVhZWdG5\nc2fUajXPPPMML730Eu7u7rX5rI3XN98AcFnpiBZ9E5SntgjnPbugpyQMIUT9qPZq/84775CUlARA\nx44dOXz4MABt27YlMjKSW2+9tVbJAsDf3x+A9PR0o/IrV65UaqYCfdNVu3btsLKyMpS1b98egOTk\n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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_sweep_frame(frame)\n", + "plot(frac_infected_series, label='Analysis')\n", + "\n", + "decorate(xlabel='Contact number (c)',\n", + " ylabel='Fraction infected')\n", + "\n", + "savefig('chap06-fig04.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "The agreement is generally good, except for values of `c` less than 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Suppose you run a survey at the end of the semester and find that 26% of students had the Freshman Plague at some point. What is your best estimate of `c`?\n", + "\n", + "Hint: if you print `frac_infected_series`, you can read off the answer. " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9.211261 0.999900\n", + "4.642296 0.989902\n", + "3.987365 0.979904\n", + "3.612133 0.969906\n", + "3.350924 0.959908\n", + "3.151808 0.949910\n", + "2.991711 0.939912\n", + "2.858363 0.929914\n", + "2.744467 0.919916\n", + "2.645332 0.909918\n", + "2.557767 0.899920\n", + "2.479505 0.889922\n", + "2.408879 0.879924\n", + "2.344627 0.869926\n", + "2.285771 0.859928\n", + "2.231541 0.849930\n", + "2.181315 0.839932\n", + "2.134590 0.829934\n", + "2.090947 0.819936\n", + "2.050040 0.809938\n", + "2.011573 0.799940\n", + "1.975299 0.789942\n", + "1.941002 0.779944\n", + "1.908499 0.769946\n", + "1.877628 0.759948\n", + "1.848249 0.749950\n", + "1.820238 0.739952\n", + "1.793487 0.729954\n", + "1.767898 0.719956\n", + "1.743384 0.709958\n", + " ... \n", + "1.181034 0.290042\n", + "1.173263 0.280044\n", + "1.165630 0.270046\n", + "1.158132 0.260048\n", + "1.150765 0.250050\n", + "1.143524 0.240052\n", + "1.136407 0.230054\n", + "1.129409 0.220056\n", + "1.122527 0.210058\n", + "1.115758 0.200060\n", + "1.109099 0.190062\n", + "1.102547 0.180064\n", + "1.096099 0.170066\n", + "1.089751 0.160068\n", + "1.083503 0.150070\n", + "1.077350 0.140072\n", + "1.071291 0.130074\n", + "1.065323 0.120076\n", + "1.059444 0.110078\n", + "1.053651 0.100080\n", + "1.047943 0.090082\n", + "1.042317 0.080084\n", + "1.036772 0.070086\n", + "1.031305 0.060088\n", + "1.025914 0.050090\n", + "1.020598 0.040092\n", + "1.015356 0.030094\n", + "1.010185 0.020096\n", + "1.005083 0.010098\n", + "1.000050 0.000100\n", + "Length: 101, dtype: float64\n" + ] + } + ], + "source": [ + "print(frac_infected_series)\n", + "\n", + "#We see that at c = 1.158132, 26.00% are or were infected at the end of 14 weeks." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.158096819542062" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Alternative solution\n", + "\n", + "\"\"\"We can use `np.interp` to look up `s_inf` and\n", + "estimate the corresponding value of `c`, but it only\n", + "works if the index of the series is sorted in ascending\n", + "order. So we have to use `sort_index` first.\n", + "\"\"\"\n", + "\n", + "frac_infected_series.sort_index(inplace=True)\n", + "np.interp(0.26, frac_infected_series, frac_infected_series.index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap07-fig01.pdf b/code/chap07-fig01.pdf new file mode 100644 index 00000000..bf06e93d Binary files /dev/null and b/code/chap07-fig01.pdf differ diff --git a/code/chap07-fig02.pdf b/code/chap07-fig02.pdf new file mode 100644 index 00000000..8b5678da Binary files /dev/null and b/code/chap07-fig02.pdf differ diff --git a/code/chap07mine.ipynb b/code/chap07mine.ipynb new file mode 100644 index 00000000..5fd58e0f --- /dev/null +++ b/code/chap07mine.ipynb @@ -0,0 +1,1933 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 7: Thermal systems\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# tempo switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The coffee cooling problem.\n", + "\n", + "I'll use a `State` object to store the initial temperature.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
temp90
\n", + "
" + ], + "text/plain": [ + "temp 90\n", + "dtype: int64" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(temp=90)\n", + "init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And a `System` object to contain the system parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
inittemp 90\n", + "dtype: int64
volume300
r0.01
T_env22
t00
t_end30
dt1
\n", + "
" + ], + "text/plain": [ + "init temp 90\n", + "dtype: int64\n", + "volume 300\n", + "r 0.01\n", + "T_env 22\n", + "t0 0\n", + "t_end 30\n", + "dt 1\n", + "dtype: object" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coffee = System(init=init,\n", + " volume=300,\n", + " r=0.01,\n", + " T_env=22,\n", + " t0=0, \n", + " t_end=30,\n", + " dt=1)\n", + "coffee" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `update` function implements Newton's law of cooling." + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update(state, system):\n", + " \"\"\"Update the thermal transfer model.\n", + " \n", + " state: State (temp)\n", + " system: System object\n", + " \n", + " returns: State (temp)\n", + " \"\"\"\n", + " unpack(system)\n", + " T = state.temp\n", + " T += -r * (T - T_env) * dt\n", + "\n", + " return State(temp=T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how it works." + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
temp89.32
\n", + "
" + ], + "text/plain": [ + "temp 89.32\n", + "dtype: float64" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "update(init, coffee)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run simulations using the same function from the previous chapter." + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Add a TimeFrame to the System: results\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " unpack(system)\n", + " \n", + " frame = TimeFrame(columns=init.index)\n", + " frame.loc[t0] = init\n", + " ts = linrange(t0, t_end-dt, dt)\n", + " \n", + " for t in ts:\n", + " frame.loc[t+dt] = update_func(frame.loc[t], system)\n", + " \n", + " system.results = frame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's how it works." + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
temp
090.000000
189.320000
288.646800
387.980332
487.320529
586.667323
686.020650
785.380444
884.746639
984.119173
1083.497981
1182.883001
1282.274171
1381.671430
1481.074715
1580.483968
1679.899128
1779.320137
1878.746936
1978.179466
2077.617672
2177.061495
2276.510880
2375.965771
2475.426114
2574.891852
2674.362934
2773.839305
2873.320912
2972.807702
3072.299625
\n", + "
" + ], + "text/plain": [ + " temp\n", + "0 90.000000\n", + "1 89.320000\n", + "2 88.646800\n", + "3 87.980332\n", + "4 87.320529\n", + "5 86.667323\n", + "6 86.020650\n", + "7 85.380444\n", + "8 84.746639\n", + "9 84.119173\n", + "10 83.497981\n", + "11 82.883001\n", + "12 82.274171\n", + "13 81.671430\n", + "14 81.074715\n", + "15 80.483968\n", + "16 79.899128\n", + "17 79.320137\n", + "18 78.746936\n", + "19 78.179466\n", + "20 77.617672\n", + "21 77.061495\n", + "22 76.510880\n", + "23 75.965771\n", + "24 75.426114\n", + "25 74.891852\n", + "26 74.362934\n", + "27 73.839305\n", + "28 73.320912\n", + "29 72.807702\n", + "30 72.299625" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_simulation(coffee, update)\n", + "coffee.results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAERCAYAAACO6FuTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlclOe5+P/PsIkIIqLIjihyGde4G6NxQczWJTGbWZq2\nJ11+bdMmab8nadP225i0TZOe9Ns0p+e0TdIlTZo9zZ64azRxiaiJ642AsoiIoIgoss7vj3sYRgQc\nFBgGrvfr5Qt5nplnrvHBubi363Y4nU6UUkqp1gT4OgCllFI9lyYJpZRSbdIkoZRSqk2aJJRSSrVJ\nk4RSSqk2aZJQSinVpqDufkERGQg8DnwJCAXeB35ojCl1nV/kOi/AfuABY8wH57lmP2AacBho6Lro\nlVKqVwkE4oBPjTE1rT2g25ME8CowGvg6UAT8ClgjIpOBkcDbwCPA68DtwJsiMtkYs7uda04D1ndp\n1Eop1XvNATa0dqJbk4SIXAosAjKNMStdx+4ACoElwCxgkzHmV66n/FxEZgP3AN9q59KHAV544QVi\nY2O7KnyllOpVSkpKuP3228H1Gdqa7m5JjHJ9dWcsY0yViOwH5gIzgVdaPGctNoG0pwEgNjaWxMTE\ns044nU4cDsdFhKyUUr1em9303Z0kil1fE4EcABEJdH1f6vp6qJXnJF3Ii23ZXcJnOUcZmRDJnEsT\nCA4KvLColVKqj+ruJPEpsA/4k4h8BagAlgJDgRAgDDjT4jk12AHuDnE6nXyWc5Sa2gb2HDhGcdkp\nrpo5nCGD+l/cO1BKqT6kW6fAGmNqgeuBQdgWQgUwBDvD6QRQDfRr8bR+wKmOvpbD4WDiqKHu7ytO\n1vDa6v3szitHixoqpZR3un2dhDFmnzFmKjY5DDHG/Ae2OykXO4Ad1+Ip8ZzbBeWV6WNiWTg9meBA\n+zbrGxpZk1XIii0F1NbpTFmllDqf7p7dNBB4B/ieMWaX69hwYCLwf4DB2AHsRzyeNh/46EJfc3TK\nYGKiwli28SDllbYnK7vgOKXHT2v3k1JKnUd3dzdVYhdv/F5ExojIdOBdYJUxZjXwFHCFiCwVkdEi\n8jAwA3jyYl538MBQbsxIZ0zqYPexipM1vLoqW7uflFKqHb4oy7EEqAI2YhfOrQMWAxhjdmLHLG4E\ndmBXZX/RGLP3Yl80OCiABVOTyZyeTHCQfdsNjU7WZBWyfLN2PymlVGu6fcW1MaYIuK6d8+8B73XV\n64ur++nDjc3dT/sLj3P0+Gmuuky7n5RSylOfLPAX5e5+inYfq6iy3U+7csu0+0kppVz6ZJKApu6n\npHO6n9ZuK2LZpnxqtPtJKaX6bpJoIimDuXlh+lndTDlFFby8wnDk2GkfRqaUUr7X55MEQFREKDcu\nGMW4Ec3dT5Wnanl9zX52ZJdq95NS6qK9+eabzJ49mwkTJrBixQp2797NNddcw7hx43jsscd8HV6b\nfFEqvEcKCgxg3pQkEmMiWJ1VSG1dA42NTjZ8Vsyh0ioypiUT2k//uZRSF+axxx5j3rx53H333Qwe\nPJgf//jHBAUF8f777xMREeHr8NqkLYkW0pIGccvCdGKiwtzHDhyu5KUVhuKyKh9GppTyZ5WVlUyd\nOpWEhAT69+9PZWUll1xyCcnJyURFRfk6vDZpkmhFZHg/bpifxqXpzbWfqqrreHNtLlv3HqGxUbuf\nlOqLqqqqWLp0KbNmzWLSpEncdddd5OXlAbBq1SoWL17MxIkTmTdvHk899RT19fUUFRUhItTX1/Pg\ngw+yYMECFixYwCeffMKbb76JiFBUVERjYyN/+tOfmD9/Ppdeeik33HAD69atO+v1t27dypIlS5gw\nYQIZGRk88cQT1NS0uqFcp9Ek0YbAwABmT0zg2stTCQ2x3UyNTiebdh3mnQ15nD5T5+MIlVLd7d57\n72Xjxo088cQTvP7664SFhfGNb3yD999/n+9///tcffXVvPXWW9x///3885//5NFHHyUuLo4NGzYQ\nGBjIgw8+yGuvvcZrr73G1KlTufrqq9mwYQNxcXE88cQTvPHGGzz88MO89dZbXH/99dx9991s3rwZ\ngL1793LXXXeRmZnJO++8wy9/+UvWrFnDQw891KXvWTvZzyM1PpIlmf1Zvjmf4jJbjLbwyEleWpFN\n5vRkkob13L5EpXqy7aaULXtKqKtv7PbXDg4KYPqYWCZJjNfPycvLY/369Tz33HPMmDEDgIcffpg/\n//nPPPnkk1x99dV885vfBGD48OFUVFTwq1/9invvvZehQ22vREREBIMH2/JAwcHBhIaGMnToUE6d\nOsVzzz3HU089xZw5cwBISUlh3759/OUvf2HGjBk8++yzzJ07l7vuust9funSpdx2223cd999xMR4\n/146QpOEF8LDQrhubhpb9pSQtc/Odjp9po631+cxWYYyfWwcgQG6+51SHbEj+6hPEgRAXX0jO7KP\n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\nrkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(coffee.results.temp, label='coffee')\n", + "decorate(xlabel='Time (minutes)',\n", + " ylabel='Temperature (C)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After running the simulation, we can extract the final temperature from the results." + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def final_temp(system):\n", + " \"\"\"Final temperature.\n", + " \n", + " If system has no results, return initial temp.\n", + " \n", + " system: System object.\n", + " \n", + " returns: temperature (degC)\n", + " \"\"\" \n", + " if hasattr(system, 'results'):\n", + " return system.results.temp[system.t_end]\n", + " else:\n", + " return system.init.temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It will be convenient to wrap these steps in a function. `kwargs` is a collection of whatever keyword arguments are provided; they are passed along as arguments to `System`." + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(T_init=90, r=0.01, volume=300, t_end=30):\n", + " \"\"\"Runs a simulation with the given parameters.\n", + "\n", + " T_init: initial temperature in degC\n", + " r: heat transfer rate, in 1/min\n", + " volume: volume of liquid in mL\n", + " t_end: end time of simulation\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " init = State(temp=T_init)\n", + " \n", + " system = System(init=init,\n", + " volume=volume,\n", + " r=r,\n", + " T_env=22, \n", + " t0=0,\n", + " t_end=t_end,\n", + " dt=1)\n", + " return system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we use it:" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "72.299625390403094" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coffee = make_system()\n", + "run_simulation(coffee, update)\n", + "final_temp(coffee)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Simulate the temperature of 50 mL of milk with a starting temperature of 5 degC, in a vessel with the same insulation, for 15 minutes, and plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20.514978275278718" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "milk = make_system(T_init=5, r=0.15, volume=50, t_end=15)\n", + "#picked new r because it seemed like the milk should get warmer faster. new value is arbitrary. \n", + "#but felt like after fifteen min it would barely be colder than room temp.\n", + "run_simulation(milk, update)\n", + "final_temp(milk)" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nHqIAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(milk.results.temp, label='milk')\n", + "decorate(xlabel='Time (minutes)',\n", + " ylabel='Temperature (C)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using `fsolve`\n", + "\n", + "As a simple example, let's find the roots of this function; that is, the values of `x` that make the result 0." + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def func(x):\n", + " return (x-1) * (x-2) * (x-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`modsim.py` provides `fsolve`, which does some error-checking and then runs `scipy.optimize.fsolve`. The first argument is the function whose roots we want. The second argument is an initial guess." + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1.])" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fsolve(func, x0=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Usually the root we get is the one that's closest to the initial guess." + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 2.])" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fsolve(func, 1.9)" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3.])" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fsolve(func, 2.9)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But not always." + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3.])" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fsolve(func, 1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to find the value of `r` that makes the final temperature 70, so we define an \"error function\" that takes `r` as a parameter and returns the difference between the final temperature and the goal." + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error_func1(r):\n", + " \"\"\"Runs a simulation and returns the `error`.\n", + " \n", + " r: heat transfer rate, in 1/min\n", + " \n", + " returns: difference between final temp and 70 C\n", + " \"\"\"\n", + " system = make_system(r=r)\n", + " print(r)\n", + " run_simulation(system, update)\n", + " return final_temp(system) - 70" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With `r=0.01`, we end up a little too warm." + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01\n" + ] + }, + { + "data": { + "text/plain": [ + "2.2996253904030937" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "error_func1(r=0.01)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The return value from `fsolve` is an array with a single element, the estimated value of `r`." + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01\n", + "[ 0.01]\n", + "[ 0.01]\n", + "[ 0.01]\n", + "[ 0.01]\n", + "[ 0.01150871]\n", + "[ 0.01154231]\n", + "[ 0.01154308]\n", + "[ 0.01154308]\n", + "[ 0.01154308]\n" + ] + }, + { + "data": { + "text/plain": [ + "0.011543084583978345" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solution = fsolve(error_func1, 0.01, xtol=1e-8)\n", + "r_coffee = solution[0]\n", + "r_coffee" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we run the simulation with the estimated value of `r`, the final temperature is 70 C, as expected." + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coffee = make_system(r=r_coffee)\n", + "run_simulation(coffee, update)\n", + "final_temp(coffee)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** When you call `fsolve`, it calls `error_func1` several times. To see how this works, add a print statement to `error_func1` and run `fsolve` again." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Repeat this process to estimate `r_milk`, given that it starts at 5 C and reaches 20 C after 15 minutes. \n", + "\n", + "Before you use `fsolve`, you might want to try a few values for `r_milk` and see how close you can get by trial and error. Here's an initial guess to get you started:" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "19.501444483698084" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r_milk = 0.12\n", + "#picked this value because it seemed pretty close from my graph above.\n", + "milk = make_system(T_init=5, t_end=15, r=r_milk)\n", + "run_simulation(milk, update)\n", + "final_temp(milk)" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error_func2(r):\n", + " system = make_system(r=r, T_init=5, t_end=15)\n", + " print(r)\n", + " run_simulation(system, update)\n", + " return final_temp(system) - 20" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.12\n" + ] + }, + { + "data": { + "text/plain": [ + "-0.49855551630191641" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "error_func2(r=0.12)" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.12\n", + "[ 0.12]\n", + "[ 0.12]\n", + "[ 0.12]\n", + "[ 0.12]\n", + "[ 0.1317062]\n", + "[ 0.13283515]\n", + "[ 0.13295952]\n", + "[ 0.13296079]\n", + "[ 0.13296079]\n", + "[ 0.13296079]\n" + ] + }, + { + "data": { + "text/plain": [ + "0.13296078935466449" + ] + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solution = fsolve(error_func2, 0.12, xtol=1e-8)\n", + "r_milk = solution[0]\n", + "r_milk" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "19.999999999999996" + ] + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "milk = make_system(r=r_milk, T_init=5, t_end=15)\n", + "run_simulation(milk, update)\n", + "final_temp(milk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mixing liquids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function takes `System` objects that represent two liquids, computes the temperature of the mixture, and returns a new `System` object that represents the mixture." + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def mix(s1, s2):\n", + " \"\"\"Simulates the mixture of two liquids.\n", + " \n", + " s1: System representing coffee\n", + " s2: System representing milk\n", + " \n", + " returns: System representing the mixture\n", + " \"\"\"\n", + " assert s1.t_end == s2.t_end\n", + " \n", + " volume = s1.volume + s2.volume\n", + " \n", + " temp = (s1.volume * final_temp(s1) + \n", + " s2.volume * final_temp(s2)) / volume\n", + " \n", + " mixture = make_system(T_init=temp,\n", + " volume=volume,\n", + " r=s1.r)\n", + " \n", + " return mixture" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we'll see what happens if we add the milk at the end. We'll simulate the coffee and the milk separately." + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coffee = make_system(T_init=90, t_end=30, r=r_coffee, volume=300)\n", + "run_simulation(coffee, update)\n", + "final_temp(coffee)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "21.764705882352942" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "milk = make_system(T_init=5, t_end=30, r=r_milk, volume=50)\n", + "run_simulation(milk, update)\n", + "final_temp(milk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap07-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(coffee.results.temp, label='coffee')\n", + "plot(milk.results.temp, '--', label='milk')\n", + "decorate(xlabel='Time (minutes)',\n", + " ylabel='Temperature (C)',\n", + " loc='center left')\n", + "\n", + "savefig('chap07-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what happens when we mix them." + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "63.109243697478988" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mix_last = mix(coffee, milk)\n", + "final_temp(mix_last)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's what we get if we add the milk immediately." + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "coffee = make_system(T_init=90, r=r_coffee, volume=300)\n", + "milk = make_system(T_init=5, r=r_milk, volume=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "61.428571428571438" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mix_first = mix(coffee, milk)\n", + "mix_first.t_end = 30\n", + "run_simulation(mix_first, update)\n", + "final_temp(mix_first)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function takes `t_add`, which is the time when the milk is added, and returns the final temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_and_mix(t_add, t_total=30):\n", + " \"\"\"Simulates two liquids and them mixes them at t_add.\n", + " \n", + " t_add: time in minutes\n", + " t_total: total time to simulate, min\n", + " \n", + " returns: final temperature\n", + " \"\"\"\n", + " coffee = make_system(T_init=90, t_end=t_add, \n", + " r=r_coffee, volume=300)\n", + " run_simulation(coffee, update)\n", + "\n", + " milk = make_system(T_init=5, t_end=t_add, \n", + " r=r_milk, volume=50)\n", + " run_simulation(milk, update)\n", + " \n", + " mixture = mix(coffee, milk)\n", + " mixture.t_end = t_total - t_add\n", + " run_simulation(mixture, update)\n", + "\n", + " return final_temp(mixture)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can try it out with a few values." + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "61.428571428571438" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "62.90280912845234" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(15)" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "63.109243697478988" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(30)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And then sweep a range of values for `t_add`" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sweep = SweepSeries()\n", + "for t_add in linrange(0, 30, 2):\n", + " temp = run_and_mix(t_add)\n", + " sweep[t_add] = temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the result looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap07-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(sweep, color='purple')\n", + "decorate(xlabel='Time added (min)',\n", + " ylabel='Final temperature (C)',\n", + " legend=False)\n", + "\n", + "savefig('chap07-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Suppose the coffee shop won't let me take milk in a separate container, but I keep a bottle of milk in the refrigerator at my office. In that case is it better to add the milk at the coffee shop, or wait until I get to the office?\n", + "\n", + "Hint: Think about the simplest way to represent the behavior of a refrigerator in this model. The change you make to test this variation of the problem should be very small!" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Now you can only add the milk at two points, the beggining and the end. \n", + "#Assume that both refrigerators are equally cold, so the milk will be 5 deg C whenever you add it. \n", + "\n", + "def run_and_mix(t_add, t_total=30):\n", + " \"\"\"Simulates two liquids and them mixes them at t_add.\n", + " \n", + " t_add: time in minutes\n", + " t_total: total time to simulate, min\n", + " \n", + " returns: final temperature\n", + " \"\"\"\n", + " coffee = make_system(T_init=90, t_end=t_add, \n", + " r=r_coffee, volume=300)\n", + " run_simulation(coffee, update)\n", + "\n", + " milk = make_system(T_init=5, t_end=t_add, \n", + " r=r_milk, volume=50)\n", + " #remove the run_simulation becaause the milk is not warming up\n", + " mixture = mix(coffee, milk)\n", + " mixture.t_end = t_total - t_add\n", + " run_simulation(mixture, update)\n", + "\n", + " return final_temp(mixture)" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "61.428571428571438" + ] + }, + "execution_count": 193, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "60.714285714285715" + ] + }, + "execution_count": 194, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(30)" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#so better to add milk at beggining" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use the analytic result to compute temperature as a function of time. The following function is similar to `run_simulation`." + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_analysis(system):\n", + " \"\"\"Computes temperature using the analytic solution.\n", + " \n", + " Adds TimeFrame to `system` as `results`\n", + " \n", + " system: System object\n", + " \"\"\"\n", + " unpack(system)\n", + " \n", + " T_init = init.temp \n", + " ts = linrange(t0, t_end, dt)\n", + " \n", + " temp_array = T_env + (T_init - T_env) * exp(-r * ts)\n", + " temp_series = TimeSeries(temp_array, index=ts)\n", + " \n", + " system.results = TimeFrame(temp_series, columns=['temp'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it. From the analysis, we have the computed value of `r_coffee2`" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "r_coffee2 = 0.011610223142273859" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 198, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(temp=90)\n", + "coffee2 = System(init=init, T_env=22, r=r_coffee2, \n", + " t0=0, t_end=30)\n", + "run_analysis(coffee2)\n", + "final_temp(coffee2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we can compare to the results from simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 199, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(temp=90)\n", + "coffee = System(init=init, T_env=22, r=r_coffee, \n", + " t0=0, t_end=30, dt=1)\n", + "run_simulation(coffee, update)\n", + "final_temp(coffee)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "They are identical except for small roundoff errors." + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
temp
00.000000e+00
10.000000e+00
20.000000e+00
30.000000e+00
40.000000e+00
50.000000e+00
60.000000e+00
70.000000e+00
80.000000e+00
90.000000e+00
100.000000e+00
110.000000e+00
120.000000e+00
13-1.421085e-14
14-1.421085e-14
150.000000e+00
16-1.421085e-14
17-1.421085e-14
18-1.421085e-14
190.000000e+00
20-1.421085e-14
210.000000e+00
220.000000e+00
230.000000e+00
240.000000e+00
250.000000e+00
26-1.421085e-14
270.000000e+00
28-1.421085e-14
290.000000e+00
300.000000e+00
\n", + "
" + ], + "text/plain": [ + " temp\n", + "0 0.000000e+00\n", + "1 0.000000e+00\n", + "2 0.000000e+00\n", + "3 0.000000e+00\n", + "4 0.000000e+00\n", + "5 0.000000e+00\n", + "6 0.000000e+00\n", + "7 0.000000e+00\n", + "8 0.000000e+00\n", + "9 0.000000e+00\n", + "10 0.000000e+00\n", + "11 0.000000e+00\n", + "12 0.000000e+00\n", + "13 -1.421085e-14\n", + "14 -1.421085e-14\n", + "15 0.000000e+00\n", + "16 -1.421085e-14\n", + "17 -1.421085e-14\n", + "18 -1.421085e-14\n", + "19 0.000000e+00\n", + "20 -1.421085e-14\n", + "21 0.000000e+00\n", + "22 0.000000e+00\n", + "23 0.000000e+00\n", + "24 0.000000e+00\n", + "25 0.000000e+00\n", + "26 -1.421085e-14\n", + "27 0.000000e+00\n", + "28 -1.421085e-14\n", + "29 0.000000e+00\n", + "30 0.000000e+00" + ] + }, + "execution_count": 200, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coffee.results - coffee2.results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap07soln.ipynb b/code/chap07soln.ipynb deleted file mode 100644 index e0aed3d1..00000000 --- a/code/chap07soln.ipynb +++ /dev/null @@ -1,1820 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Modeling and Simulation in Python\n", - "\n", - "Chapter 7: Thermal systems\n", - "\n", - "Copyright 2017 Allen Downey\n", - "\n", - "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# If you want the figures to appear in the notebook, \n", - "# and you want to interact with them, use\n", - "# %matplotlib notebook\n", - "\n", - "# If you want the figures to appear in the notebook, \n", - "# and you don't want to interact with them, use\n", - "# %matplotlib inline\n", - "\n", - "# If you want the figures to appear in separate windows, use\n", - "# %matplotlib qt5\n", - "\n", - "# tempo switch from one to another, you have to select Kernel->Restart\n", - "\n", - "%matplotlib inline\n", - "\n", - "from modsim import *" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The coffee cooling problem.\n", - "\n", - "I'll use a `State` object to store the initial temperature.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
temp90
\n", - "
" - ], - "text/plain": [ - "temp 90\n", - "dtype: int64" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "init = State(temp=90)\n", - "init" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And a `System` object to contain the system parameters." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
inittemp 90\n", - "dtype: int64
volume300
r0.01
T_env22
t00
t_end30
dt1
\n", - "
" - ], - "text/plain": [ - "init temp 90\n", - "dtype: int64\n", - "volume 300\n", - "r 0.01\n", - "T_env 22\n", - "t0 0\n", - "t_end 30\n", - "dt 1\n", - "dtype: object" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "coffee = System(init=init,\n", - " volume=300,\n", - " r=0.01,\n", - " T_env=22,\n", - " t0=0, \n", - " t_end=30,\n", - " dt=1)\n", - "coffee" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `update` function implements Newton's law of cooling." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def update(state, system):\n", - " \"\"\"Update the thermal transfer model.\n", - " \n", - " state: State (temp)\n", - " system: System object\n", - " \n", - " returns: State (temp)\n", - " \"\"\"\n", - " unpack(system)\n", - " T = state.temp\n", - " T += -r * (T - T_env) * dt\n", - "\n", - " return State(temp=T)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's how it works." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
temp89.32
\n", - "
" - ], - "text/plain": [ - "temp 89.32\n", - "dtype: float64" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "update(init, coffee)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can run simulations using the same function from the previous chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def run_simulation(system, update_func):\n", - " \"\"\"Runs a simulation of the system.\n", - " \n", - " Add a TimeFrame to the System: results\n", - " \n", - " system: System object\n", - " update_func: function that updates state\n", - " \"\"\"\n", - " unpack(system)\n", - " \n", - " frame = TimeFrame(columns=init.index)\n", - " frame.loc[t0] = init\n", - " ts = linrange(t0, t_end-dt, dt)\n", - " \n", - " for t in ts:\n", - " frame.loc[t+dt] = update_func(frame.loc[t], system)\n", - " \n", - " system.results = frame" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here's how it works." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
temp
090.000000
189.320000
288.646800
387.980332
487.320529
586.667323
686.020650
785.380444
884.746639
984.119173
1083.497981
1182.883001
1282.274171
1381.671430
1481.074715
1580.483968
1679.899128
1779.320137
1878.746936
1978.179466
2077.617672
2177.061495
2276.510880
2375.965771
2475.426114
2574.891852
2674.362934
2773.839305
2873.320912
2972.807702
3072.299625
\n", - "
" - ], - "text/plain": [ - " temp\n", - "0 90.000000\n", - "1 89.320000\n", - "2 88.646800\n", - "3 87.980332\n", - "4 87.320529\n", - "5 86.667323\n", - "6 86.020650\n", - "7 85.380444\n", - "8 84.746639\n", - "9 84.119173\n", - "10 83.497981\n", - "11 82.883001\n", - "12 82.274171\n", - "13 81.671430\n", - "14 81.074715\n", - "15 80.483968\n", - "16 79.899128\n", - "17 79.320137\n", - "18 78.746936\n", - "19 78.179466\n", - "20 77.617672\n", - "21 77.061495\n", - "22 76.510880\n", - "23 75.965771\n", - "24 75.426114\n", - "25 74.891852\n", - "26 74.362934\n", - "27 73.839305\n", - "28 73.320912\n", - "29 72.807702\n", - "30 72.299625" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "run_simulation(coffee, update)\n", - "coffee.results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's what the results look like." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n0qe1QlwAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(coffee.results.temp, label='coffee')\n", - "decorate(xlabel='Time (minutes)',\n", - " ylabel='Temperature (C)')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After running the simulation, we can extract the final temperature from the results." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def final_temp(system):\n", - " \"\"\"Final temperature.\n", - " \n", - " If system has no results, return initial temp.\n", - " \n", - " system: System object.\n", - " \n", - " returns: temperature (degC)\n", - " \"\"\" \n", - " if hasattr(system, 'results'):\n", - " return system.results.temp[system.t_end]\n", - " else:\n", - " return system.init.temp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It will be convenient to wrap these steps in a function. `kwargs` is a collection of whatever keyword arguments are provided; they are passed along as arguments to `System`." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def make_system(T_init=90, r=0.01, volume=300, t_end=30):\n", - " \"\"\"Runs a simulation with the given parameters.\n", - "\n", - " T_init: initial temperature in degC\n", - " r: heat transfer rate, in 1/min\n", - " volume: volume of liquid in mL\n", - " t_end: end time of simulation\n", - " \n", - " returns: System object\n", - " \"\"\"\n", - " init = State(temp=T_init)\n", - " \n", - " system = System(init=init,\n", - " volume=volume,\n", - " r=r,\n", - " T_env=22, \n", - " t0=0,\n", - " t_end=t_end,\n", - " dt=1)\n", - " return system" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's how we use it:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "72.299625390403094" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "coffee = make_system(T_init=90, r=0.01, volume=300, t_end=30)\n", - "run_simulation(coffee, update)\n", - "final_temp(coffee)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Exercise:** Simulate the temperature of 50 mL of milk with a starting temperature of 5 degC, in a vessel with the same insulation, for 15 minutes, and plot the results." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "18.499850754390966" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "milk = make_system(T_init=5, t_end=15, r=0.1, volume=50)\n", - "run_simulation(milk, update)\n", - "final_temp(milk)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nCCGSzF8YBw0CtpUnZAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(milk.results.temp, label='milk')\n", - "decorate(xlabel='Time (minutes)',\n", - " ylabel='Temperature (C)')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using `fsolve`\n", - "\n", - "As a simple example, let's find the roots of this function; that is, the values of `x` that make the result 0." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def func(x):\n", - " return (x-1) * (x-2) * (x-3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`modsim.py` provides `fsolve`, which does some error-checking and then runs `scipy.optimize.fsolve`. The first argument is the function whose roots we want. The second argument is an initial guess." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 1.])" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fsolve(func, x0=0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Usually the root we get is the one that's closest to the initial guess." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2.])" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fsolve(func, 1.9)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 3.])" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fsolve(func, 2.9)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But not always." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 3.])" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fsolve(func, 1.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We want to find the value of `r` that makes the final temperature 70, so we define an \"error function\" that takes `r` as a parameter and returns the difference between the final temperature and the goal." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def error_func1(r):\n", - " \"\"\"Runs a simulation and returns the `error`.\n", - " \n", - " r: heat transfer rate, in 1/min\n", - " \n", - " returns: difference between final temp and 70 C\n", - " \"\"\"\n", - " system = make_system(T_init=90, r=r, volume=300, t_end=30)\n", - " run_simulation(system, update)\n", - " return final_temp(system) - 70" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With `r=0.01`, we end up a little too warm." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.2996253904030937" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "error_func1(r=0.01)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The return value from `fsolve` is an array with a single element, the estimated value of `r`." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.011543084583973956" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "solution = fsolve(error_func1, 0.01)\n", - "r_coffee = solution[0]\n", - "r_coffee" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we run the simulation with the estimated value of `r`, the final temperature is 70 C, as expected." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "70.000000000006395" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "coffee = make_system(T_init=90, r=r_coffee, volume=300, t_end=30)\n", - "run_simulation(coffee, update)\n", - "final_temp(coffee)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Exercise:** When you call `fsolve`, it calls `error_func1` several times. To see how this works, add a print statement to `error_func1` and run `fsolve` again." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Exercise:** Repeat this process to estimate `r_milk`, given that it starts at 5 C and reaches 20 C after 15 minutes. \n", - "\n", - "Before you use `fsolve`, you might want to try a few values for `r_milk` and see how close you can get by trial and error. Here's an initial guess to get you started:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "18.499850754390966" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r_milk = 0.1\n", - "milk = make_system(T_init=5, t_end=15, r=r_milk, volume=50)\n", - "run_simulation(milk, update)\n", - "final_temp(milk)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def error_func2(r):\n", - " \"\"\"Runs a simulation and returns the `error`.\n", - " \n", - " r: heat transfer rate, in 1/min\n", - " \n", - " returns: difference between final temp and 20C\n", - " \"\"\"\n", - " system = make_system(T_init=5, t_end=15, r=r, volume=50)\n", - " run_simulation(system, update)\n", - " return final_temp(system) - 20" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-1.500149245609034" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "error_func2(r=0.1)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.13296078935465339" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "solution = fsolve(error_func2, 0.1)\n", - "r_milk = solution[0]\n", - "r_milk" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "19.999999999999613" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "milk = make_system(T_init=5, t_end=15, r=r_milk, volume=50)\n", - "run_simulation(milk, update)\n", - "final_temp(milk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Mixing liquids" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following function takes `System` objects that represent two liquids, computes the temperature of the mixture, and returns a new `System` object that represents the mixture." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def mix(s1, s2):\n", - " \"\"\"Simulates the mixture of two liquids.\n", - " \n", - " s1: System representing coffee\n", - " s2: System representing milk\n", - " \n", - " returns: System representing the mixture\n", - " \"\"\"\n", - " assert s1.t_end == s2.t_end\n", - " \n", - " volume = s1.volume + s2.volume\n", - " \n", - " temp = (s1.volume * final_temp(s1) + \n", - " s2.volume * final_temp(s2)) / volume\n", - " \n", - " mixture = make_system(T_init=temp,\n", - " volume=volume,\n", - " r=s1.r)\n", - " \n", - " return mixture" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First we'll see what happens if we add the milk at the end. We'll simulate the coffee and the milk separately." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "70.000000000006395" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "coffee = make_system(T_init=90, t_end=30, r=r_coffee, volume=300)\n", - "run_simulation(coffee, update)\n", - "final_temp(coffee)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "21.76470588235285" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "milk = make_system(T_init=5, t_end=30, r=r_milk, volume=50)\n", - "run_simulation(milk, update)\n", - "final_temp(milk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's what the results look like." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saving figure to file chap07-fig01.pdf\n" - ] - }, - { - "data": { - "image/png": "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\n4f9vjH2cyvwAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(coffee.results.temp, label='coffee')\n", - "plot(milk.results.temp, '--', label='milk')\n", - "decorate(xlabel='Time (minutes)',\n", - " ylabel='Temperature (C)',\n", - " loc='center left')\n", - "\n", - "savefig('chap07-fig01.pdf')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's what happens when we mix them." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "63.109243697484459" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mix_last = mix(coffee, milk)\n", - "final_temp(mix_last)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here's what we get if we add the milk immediately." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "coffee = make_system(T_init=90, r=r_coffee, volume=300)\n", - "milk = make_system(T_init=5, r=r_milk, volume=50)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "61.42857142857666" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mix_first = mix(coffee, milk)\n", - "mix_first.t_end = 30\n", - "run_simulation(mix_first, update)\n", - "final_temp(mix_first)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following function takes `t_add`, which is the time when the milk is added, and returns the final temperature." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def run_and_mix(t_add, t_total=30):\n", - " \"\"\"Simulates two liquids and them mixes them at t_add.\n", - " \n", - " t_add: time in minutes\n", - " t_total: total time to simulate, min\n", - " \n", - " returns: final temperature\n", - " \"\"\"\n", - " coffee = make_system(T_init=90, t_end=t_add, \n", - " r=r_coffee, volume=300)\n", - " run_simulation(coffee, update)\n", - "\n", - " milk = make_system(T_init=5, t_end=t_add, \n", - " r=r_milk, volume=50)\n", - " run_simulation(milk, update)\n", - " \n", - " mixture = mix(coffee, milk)\n", - " mixture.t_end = t_total - t_add\n", - " run_simulation(mixture, update)\n", - "\n", - " return final_temp(mixture)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can try it out with a few values." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "61.42857142857666" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "run_and_mix(0)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "62.902809128457783" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "run_and_mix(15)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "63.109243697484459" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "run_and_mix(30)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And then sweep a range of values for `t_add`" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "sweep = SweepSeries()\n", - "for t_add in linrange(0, 30, 2):\n", - " temp = run_and_mix(t_add)\n", - " sweep[t_add] = temp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's what the result looks like." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saving figure to file chap07-fig02.pdf\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(sweep, color='purple')\n", - "decorate(xlabel='Time added (min)',\n", - " ylabel='Final temperature (C)',\n", - " legend=False)\n", - "\n", - "savefig('chap07-fig02.pdf')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Exercise:** Suppose the coffee shop won't let me take milk in a separate container, but I keep a bottle of milk in the refrigerator at my office. In that case is it better to add the milk at the coffee shop, or wait until I get to the office?\n", - "\n", - "Hint: Think about the simplest way to represent the behavior of a refrigerator in this model. The change you make to test this variation of the problem should be very small!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use the analytic result to compute temperature as a function of time. The following function is similar to `run_simulation`." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def run_analysis(system):\n", - " \"\"\"Computes temperature using the analytic solution.\n", - " \n", - " Adds TimeFrame to `system` as `results`\n", - " \n", - " system: System object\n", - " \"\"\"\n", - " unpack(system)\n", - " \n", - " T_init = init.temp \n", - " ts = linrange(t0, t_end, dt)\n", - " \n", - " temp_array = T_env + (T_init - T_env) * exp(-r * ts)\n", - " temp_series = TimeSeries(temp_array, index=ts)\n", - " \n", - " system.results = TimeFrame(temp_series, columns=['temp'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's how we run it. From the analysis, we have the computed value of `r_coffee2`" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "r_coffee2 = 0.011610223142273859" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "70.0" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "init = State(temp=90)\n", - "coffee2 = System(init=init, T_env=22, r=r_coffee2, \n", - " t0=0, t_end=30)\n", - "run_analysis(coffee2)\n", - "final_temp(coffee2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And we can compare to the results from simulation." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "70.000000000006395" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "init = State(temp=90)\n", - "coffee = System(init=init, T_env=22, r=r_coffee, \n", - " t0=0, t_end=30, dt=1)\n", - "run_simulation(coffee, update)\n", - "final_temp(coffee)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "They are identical except for small roundoff errors." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
temp
00.000000e+00
12.984279e-13
25.968559e-13
38.810730e-13
41.165290e-12
51.435296e-12
61.691092e-12
71.946887e-12
82.202682e-12
92.458478e-12
102.700062e-12
112.941647e-12
123.169021e-12
133.382183e-12
143.609557e-12
153.836931e-12
164.021672e-12
174.234835e-12
184.419576e-12
194.632739e-12
204.803269e-12
215.002221e-12
225.172751e-12
235.343281e-12
245.499601e-12
255.670131e-12
265.812240e-12
275.968559e-12
286.096457e-12
296.252776e-12
306.394885e-12
\n", - "
" - ], - "text/plain": [ - " temp\n", - "0 0.000000e+00\n", - "1 2.984279e-13\n", - "2 5.968559e-13\n", - "3 8.810730e-13\n", - "4 1.165290e-12\n", - "5 1.435296e-12\n", - "6 1.691092e-12\n", - "7 1.946887e-12\n", - "8 2.202682e-12\n", - "9 2.458478e-12\n", - "10 2.700062e-12\n", - "11 2.941647e-12\n", - "12 3.169021e-12\n", - "13 3.382183e-12\n", - "14 3.609557e-12\n", - "15 3.836931e-12\n", - "16 4.021672e-12\n", - "17 4.234835e-12\n", - "18 4.419576e-12\n", - "19 4.632739e-12\n", - "20 4.803269e-12\n", - "21 5.002221e-12\n", - "22 5.172751e-12\n", - "23 5.343281e-12\n", - "24 5.499601e-12\n", - "25 5.670131e-12\n", - "26 5.812240e-12\n", - "27 5.968559e-12\n", - "28 6.096457e-12\n", - "29 6.252776e-12\n", - "30 6.394885e-12" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "coffee.results - coffee2.results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "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.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/code/chap08-fig01.pdf b/code/chap08-fig01.pdf new file mode 100644 index 00000000..6d4ff742 Binary files /dev/null and b/code/chap08-fig01.pdf differ diff --git a/code/chap08-fig02.pdf b/code/chap08-fig02.pdf new file mode 100644 index 00000000..951e6599 Binary files /dev/null and b/code/chap08-fig02.pdf differ diff --git a/code/chap08-fig03.pdf b/code/chap08-fig03.pdf new file mode 100644 index 00000000..241852ee Binary files /dev/null and b/code/chap08-fig03.pdf differ diff --git a/code/chap08-fig04.pdf b/code/chap08-fig04.pdf new file mode 100644 index 00000000..71d96201 Binary files /dev/null and b/code/chap08-fig04.pdf differ diff --git a/code/chap08mine.ipynb b/code/chap08mine.ipynb new file mode 100644 index 00000000..a0b534d4 --- /dev/null +++ b/code/chap08mine.ipynb @@ -0,0 +1,3270 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 8: Pharmacokinetics\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# tempo switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Data\n", + "\n", + "We have data from Pacini and Bergman (1986), \"MINMOD: a computer program to calculate insulin sensitivity and pancreatic responsivity from the frequently sampled intravenous glucose tolerance test\", *Computer Methods and Programs in Biomedicine*, 23: 113-122.." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
glucoseinsulin
time
09211
235026
4287130
625185
824051
1021649
1221145
1420541
1619635
1919230
2217230
2716327
3214230
4212422
5210515
629215
728411
827710
92828
1028111
122827
142828
162858
182907
\n", + "
" + ], + "text/plain": [ + " glucose insulin\n", + "time \n", + "0 92 11\n", + "2 350 26\n", + "4 287 130\n", + "6 251 85\n", + "8 240 51\n", + "10 216 49\n", + "12 211 45\n", + "14 205 41\n", + "16 196 35\n", + "19 192 30\n", + "22 172 30\n", + "27 163 27\n", + "32 142 30\n", + "42 124 22\n", + "52 105 15\n", + "62 92 15\n", + "72 84 11\n", + "82 77 10\n", + "92 82 8\n", + "102 81 11\n", + "122 82 7\n", + "142 82 8\n", + "162 85 8\n", + "182 90 7" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('glucose_insulin.csv', index_col='time')\n", + "data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the glucose time series looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nJ4fo6GjWrFmj3v/u3btUVFRQVlb2SPMF1kUSiBBC79nZVT22up+ul1wwNDSksrKywftXVFSovzcy\nMnrgtqampjXKqmeaUiqVdOrUib///e+cPn2aEydOcPToUd577z1WrVrF4MGDAYiKisLX17fGcZRK\n3XzUSyO6EELvNdeSC66urty4cYMrV66oy/79739TWFhYY9vqBHH79m112S+//KL+vmvXriiVSlJT\nU9VllZWVDB06lEOHDuHs7ExKSorGMU+fPg1UPc76/PPP+eijj+jduzcREREcOHCAAQMG8MUXX9Ch\nQwdsbGzIzMykW7du6q9//OMfbN++HQMD3XzUSwIRQui93r1h2jRwdAQDg6p/p03T/Qzaffv2xd3d\nncjISFJTUzl37hyRkZFA1ezg93JxccHMzIyEhASuXLnCsWPHeP/999X1ZmZmTJw4kdjYWI4ePcov\nv/zC8uXLuXXrFn369GH69OmcP3+e6Oho/v3vf3P8+HGWLVuGv78/zs7OlJWVER0dzd///neuXr3K\n999/zz//+U88PDwACA0N5YMPPmDPnj1cuXKFgwcPsnr1aqysrHR2feQRlhCiRWiuJRfi4+NZtmwZ\nwcHBdOjQgRkzZpCamlrjkVT79u2JiYlhzZo1DB8+HDc3N15//XWN5Sb++te/YmhoyMKFCykqKqJH\njx5s376dLl260KVLFxISEli/fj07d+7kscceY8SIEbz66qsAjB49moKCAjZu3EhWVhadO3dm7Nix\nvPzyywBMmDCBsrIytm/fzooVK7CxsWHWrFnMmDFDZ9dGpnMXQog6XL9+nXPnztG/f38MDQ0ByMvL\nw8/Pj927d6sbuVurh312yh2IEELUwdDQkDlz5jB16lQCAwMpKipiw4YNdOvWTf3oqC2TNhAhhKhD\nx44dSUhI4IcffmDkyJFMnjwZpVLJe++999BeVW1Bve5ASkpKyMnJobCwEEtLS6ysrHTSt1gIIfRF\nv3796NevX3OHoZcemkDKysrYu3cvn332GefOndPo12xoaIivry9Dhw5lzJgxkkyEEKINeWAC2b9/\nP2vXrqWsrIznnnuOYcOG4eDggJmZGbdu3SI7O5szZ86wbt064uPjmT17NkFBQU0VuxBCiGZUZwKZ\nOXMm169fZ9myZQwYMKDOu4upU6dSVlbGl19+yfvvv8/XX3/Nu+++q7OAhRBC6Ic6E0hAQACjR4/W\n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\nEbVbKAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(data.glucose, 'bo', label='glucose')\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration (mg/dL)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the insulin time series." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZYAAAEPCAYAAABhkeIdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdUVNfePvBnQJqAioWOUYpoUESK2DWaqNhIbDcReyQG\nsUW9xsQSRJNAwIa8sYDGYEl8RcWo1xhLRM0vQZomdjFGijQVBZTO+f3h61zHAWXgDDMDz2ct1pK9\nz8w8nMH5cs7Z+2yJIAgCiIiIRKKl6gBERNSwsLAQEZGoWFiIiEhULCxERCSqJqoOoErFxcW4fPky\n2rRpA21tbVXHISLSCBUVFcjNzUXnzp2hr68v19+oC8vly5fh4+Oj6hhERBpp9+7dcHd3l2tv1IWl\nTZs2AJ7tHHNzcxWnISLSDFlZWfDx8ZF+hr6sUReW56e/zM3NYW1tXaPHxGfE41jKMWQWZMLC2AJe\n9l7wsPJQZkwiIrVU3SWERl1YFBWfEY/IpEjp9xn5GdLvWVyIiJ7hqDAFHEs5VmX7zyk/13MSIiL1\nxcKigMyCzCrb7xXcq+ckRETqi4VFARbGFlW2Wxpb1nMSIiL1xcKiAC97ryrbh9oPreckRETqixfv\nFfD8Av3PKT/jXsE9WBpbYqj9UF64JyJ6AQuLgjysPFhIiIhegafCiIhIVCwsREQkKhYWIiISFQsL\nERGJioWFiIhExcJCRKQkjo6OOHToUL281oEDB/Dmm2+q5LVfxuHGRERKcv78eTRr1qzRvbZaFpYV\nK1agoqICX375pbRt165d2LVrF7KysmBpaYlp06Zh3Lhx0v4HDx4gMDAQv/32G3R0dDB69Gh88skn\naNJELX9EIqpHqlruorr1SuqDKl9brT51BUFAWFgY9u7di7Fjx0rb9+zZgzVr1iAgIADdunVDXFwc\nVq5cCR0dHbz77rsAgDlz5kAikWDXrl3Izs7GkiVL0KRJE3zyySeq+nGISA2ocrkLR0dHfPPNN/D2\n9saSJUugpaWFpk2b4vDhwygtLcXAgQOxcuVKGBkZoaKiAqGhoThy5Ajy8vLQvn17zJo1C15ez24l\nNWnSJLRt21bmD+6q2mrz2mJTm2ssaWlpmDx5Mn744QdYWsre1PHHH3/EhAkT4O3tjbZt22LcuHEY\nNWoUDhw4AABITk5GYmIigoKC0LFjR/Tv3x+LFy/Gzp07UVpaqoofh4jUhDotd/HTTz+hoqICP/74\nI9avX4/Tp08jKioKwLM/oE+cOIGNGzfi559/xtChQ7Fw4UKkpaUp/bXFpjZHLElJSbCwsMDatWux\nYMECmb5ly5bBwkL2zsJaWlrIz88HACQkJMDKygo2NjbS/u7du+PJkye4du0aunbtqvwfgIjUkjot\nd9GiRQssW7YM2traaN++PXr16oWLFy8CAO7evQsDAwNYWVmhTZs2mDVrFpydndGiRQulv7bY1OaI\nxdvbG998802V5wW7d+8uUzTu3buHo0ePom/fvgCA7OxsmJqayjzm+feZmVX/UhFR46BOy120bdtW\nZjlfY2NjlJWVAQAmTJiA/Px89OvXD+PGjcPGjRthbW0NY2Njpb+22NSmsNTUw4cPMXPmTLRu3Rof\nffQRAKCoqAh6enoy2+no6EAikaCkpEQVMYlITajTche6urpybYIgAABsbW1x8uRJbNmyBa6urjh6\n9ChGjBiB33//vdrnKy8vF+W1xaZRhSUtLQ0ffPAB8vPzsX37dmkl19fXl7uWUlZWBkEQ0LRpU1VE\nJSI14WHlgRmuM2DdzBpaEi1YN7PGDNcZaneX8t27d+OXX35Bv3798Nlnn+HYsWNo3749jh8/DuDZ\nH8uFhYXS7SsrK0W7/iI2tbnG8jpXrlyBr68vmjdvjh9//FHmmou5uTliY2Nlts/JyQEAmJmZ1WtO\nIlI/mrDcRV5eHjZu3IimTZuiQ4cOuHr1KtLT0/Hhhx8CAFxcXLBjxw6cO3cONjY2+O6776TXmdWN\nRhSW27dvY/r06Wjbti22bt0KExMTmX43NzeEhoYiMzNTWnDi4uJgaGiIjh07qiIyEZFCPv74YxQX\nF2PlypW4f/8+LCwsMGfOHLz33nsAgOnTpyM1NRVz586Frq4uxo4di+HDh6s4ddUkgrJOstXBy2Oz\nx44di+zsbERFRcmMudbW1kbLli0hCALef/99SCQSLF++HPfv38eSJUswYcIEzJkzp9rXSU9Px6BB\ng3Dq1ClYW1sr/eciImoIXvfZqfZHLHfu3MFff/0FABg6VPZiW9u2bXHixAlIJBKEh4cjICAAPj4+\nMDQ0xLhx4+Dv76+KyEREjZrChSUvLw8nT55EXFwcMjIyUFhYiBYtWsDS0hJ9+/ZF//796zw8bufO\nndJ/t2/fHjdu3HjtY9q0aYP/+Z//qdPrEhFR3dW4sDx8+BCbNm1CdHQ0KioqYGdnBysrK1hbWyM/\nPx/Xr1/H4cOHoauri/fffx++vr5o1aqVMrMTEZEaqlFhOXbsGFavXo2uXbviyy+/xFtvvQUDAwO5\n7QoLC3Hu3Dns27cPw4cPx4oVKzBs2DDRQxMRkfqqUWHZu3cvtm/fDkdHx1duZ2RkBC8vL3h5eeHK\nlSsICgpiYSEiamRqVFh27Nih8BM7OTnJXCshIqLGQdSZ9/Hx8fj666/FfEoiItIwohaWq1evKu02\nzEREpBk06l5hRESk/lhYiIhIVCwsREQkKhYWIiISVY2GG0+fPr1GT3bvXv0v9UlEROqlRoWlpstX\ntmnTpsqlhYmIqPGoUWHhREciIqopXmMhIiJRKXzb/NLSUuzZswfJyckoKCiQ65dIJNi2bZso4YiI\nSPMoXFgCAwMRHR0NBwcHtGjRQhmZiIhIgylcWE6cOIG5c+di1qxZyshDREQaTuFrLBKJBC4uLsrI\nQkREDYDCheW9995DdHQ0KisrlZGHiIg0nMKnwubNm4f33nsPQ4YMgZOTk9xKkhKJBF999ZVoAYmI\nSLMoXFhCQ0Nx584dGBsb4+rVq3L9EolElGBERKSZFC4sMTEx8PX1xYIFC1hEiIhIjsLXWLS1tdG7\nd2+lFpUVK1Zg6dKlMm3nz5+Ht7c3nJ2dMXLkSMTGxsr0P3jwAPPmzYO7uzt69uyJkJAQlJeXKy0j\nERFVTeHCMnLkSERHRysjCwRBwIYNG7B3716Z9pSUFPj5+WHo0KE4ePAgBg0aBH9/f9y6dUu6zZw5\nc3D//n3s2rULQUFBOHDgADZu3KiUnEREVD2FT4W1atUKBw8exDvvvIMuXbrA0NBQpl8ikSAwMFDh\nIGlpafj8889x69YtWFpayvRFRUXBxcUFfn5+AID58+cjMTERUVFRWLVqFZKTk5GYmIiTJ0/CxsYG\nHTt2xOLFi7Fq1Sr4+/tDV1dX4TxERFQ7CheWffv2oXnz5qioqMDFixfl+mt7iiwpKQkWFhZYu3Yt\nFixYINOXkJAALy8vmTZPT08cPXpU2m9lZQUbGxtpf/fu3fHkyRNcu3YNXbt2rVUmIiJSXI3vbty/\nf3+0bdsWp0+fVkoQb29veHt7V9mXlZUFMzMzmTZTU1NkZWUBALKzs2FqairXDwCZmZksLERE9ahG\nhSU2NhahoaEwNTVFv3790K9fP3h6ekJfX1/Z+QAAxcXFcqezdHV1UVJSAgAoKiqCnp6eTL+Ojg4k\nEol0GyIiqh81KiyRkZEoKSnBH3/8gXPnzuHLL79EdnY23N3d0bdvX/Tt2xd2dnZKC6mnpye32Fhp\naal0cqa+vj5KS0tl+svKyiAIApo2baq0XEREJK/G11j09PTQv39/9O/fHwDwzz//4Ny5czh79izW\nrVuHVq1aoV+/fujbty8GDRokakgLCwvk5OTItOXk5EhPj5mbm8sNP36+/cun0IiISLlqvdBXu3bt\nMGnSJERERODChQsICAhAkyZN8M0334iZDwDg5uaG+Ph4mba4uDi4u7tL+9PS0pCZmSnTb2hoiI4d\nO4qeh4iIqqfwqLCq6OnpSa+9KMPEiRMxZswYhIWFYfjw4Thy5AguXbqEgIAAAEC3bt3g4uKCTz75\nBMuXL8f9+/cREhKCadOmcagxEVE9q1FhCQ8Pr7JdIpGgadOmaN26NTw8PGBubi5quOccHR0RHh6O\nkJAQREREwNbWFps3b5Ze15FIJAgPD0dAQAB8fHxgaGiIcePGwd/fXyl5iIioehJBEITXbeTk5FRt\nX0VFBYBnt3qZPn06Fi5cKF46JUtPT8egQYNw6tQpWFtbqzoOEZFGeN1nZ42OWK5cuVJtX2VlJbKz\ns3H8+HGEhobCzs4O7777bu0TExGRRqv1xXvpE2hpwcLCAlOnTsX777+PH374QYxcRESkoepcWF7U\no0cP3LlzR8ynJCIiDSNqYWnWrJncREYiImpcRC0s165dU9rIMCIi0gyiFZYrV65g69ateOedd8R6\nSiIi0kA1GhU2ffr0avtKS0uRk5ODtLQ0dOrUSbpmChERNU41KizVXTeRSCQwMjJCu3btMHv2bAwb\nNgxNmogymZ+IiDRUjddjISIiqglRL94TEREpdN5q7ty5cHR0lH69uBQwANy4cQMGBgZo27atqCGJ\niEhzKFRYUlNTcebMGZSWlkIikUBfXx8ODg5wdHSEg4MDkpOT8ddff+HkyZPKyktERGpOocISExOD\niooK3LlzBzdv3sSNGzdw/fp1HD16FEVFRQCeLcpFRESNl8JDuLS1tWFvbw97e3sMGzYMwLMhxxER\nEYiKisKWLVtED0lERJpDlIv3urq68Pf3R48ePbB27VoxnpKIiDSUqJNO3NzcsG7dOjGfUq3FZ8Tj\nWMoxZBZkwsLYAl72XvCw8lB1LCIilVKosCxfvhwdO3ZEhw4d4OjoiGbNmsn0p6amolWrVqIGVFfx\nGfGITIqUfp+RnyH9nsWFiBozhQrLuXPnsG/fPgDPZt2bmZmhY8eOaN++PR48eIBff/0VoaGhSgmq\nbo6lHKuy/eeUn1lYiKhRU6iwnDlzBoWFhbh58yZu3bqFmzdv4ubNm4iJiUFeXh4AwN/fH2+88Qbs\n7Oxga2sLe3t7jBgxQinhVSmzILPK9nsF9+o5CRGRelH4GouRkRFcXV3h6uoq037//n1poXledM6d\nO4fi4uIGWVgsjC2QkZ8h125pbKmCNERE6qNGhWXZsmVYuHAhTExMqt2mdevWaN26NXr16gUAyM3N\nxdq1azFr1ixxkqoZL3svmWsszw21H6qCNERE6qNGw42tra3h5eWF4OBgXLly5ZXbXr9+HStXrsSI\nESPQtm1budu+NBQeVh6Y4ToD1s2soSXRgnUza8xwncHrK0TU6NXoiOXjjz/GwIEDsWbNGowZMwaW\nlpbo0qULrK2tYWBggIKCAmRlZSEpKQn3799H//798f3336Njx46iBX369CnWrFmD48ePo7i4GC4u\nLliyZAns7e0BAOfPn0dISAju3LmDN954A4sWLUL//v1Fe/2qeFh5sJAQEb2kxtdYOnTogC1btuDm\nzZs4fPgw4uLicOHCBRQUFMDExARWVlYYP348Bg8eDEdHR9GDfvnll0hKSsKGDRvQokULrF27FjNm\nzMDx48eRlpYGPz8/zJo1C4MHD8bhw4fh7++PgwcPwsHBQfQsRERUPYUv3nfo0AELFy5URpZXOnny\nJGbPng03NzcAwCeffILhw4cjJSUFe/fuhYuLi3T1yvnz5yMxMRFRUVFYtWpVvWclImrMNGY9lpYt\nW+I///kPHjx4gNLSUkRHR6N58+awsbFBQkICunfvLrO9p6cnEhISVJSWiKjx0ph1hFetWoV///vf\n6NWrF7S1taGvr4/t27ejWbNmyMrKgpmZmcz2pqamyMrKUlFaIqLGS2OOWO7evYvWrVtj69at+OGH\nH9CnTx/MnTsXWVlZKC4uhq6ursz2urq6KCkpUVFaIqLGSyOOWNLS0rB8+XLs2bMHLi4uAIA1a9Zg\n2LBh2LFjB/T09FBWVibzmNLSUhgYGKgiLhFRo6YRRyyXL19GRUUFOnfuLG3T0dFBp06dcPfuXVhY\nWCAnJ0fmMTk5OXKnx4iISPlqfcRSWFiIoqIiVFZWyvWJ/YFubm4OALhx4wacnJwAAIIg4Pbt2+jX\nrx9at26N+Ph4mcfExcXB3d1d1BxERPR6CheW1NRUfP7550hMTKx2m2vXrtUp1MucnZ2lEyK/+OIL\nmJiY4Pvvv8e9e/cwceJEFBYWYsyYMQgLC8Pw4cNx5MgRXLp0CQEBAaLmICKi11O4sAQGBiIlJQWz\nZ8+Gubk5tLSUfzZNW1sbmzZtwtq1a7FgwQI8ffoUnTt3xp49e2BlZQUACA8PR0hICCIiImBra4vN\nmzfDzs5O6dmIiEiWwoUlISEBq1evrvc7Frds2RKrV6+utn/AgAEYMGBA/QUiIqIqKXy4YWhoiObN\nmysjCxERNQAKF5ZRo0Zh9+7dEARBGXmIiEjD1Wqhr8TERAwZMgTOzs5yc0UkEgkCAwNFC0hERJpF\n4cKyf/9+GBsbo7y8HElJSXL9EolElGBERKSZFC4sp0+fVkYOIiJqIGo9QTIlJQUXLlxAYWEhTExM\n4ObmBltbWzGzERGRBlK4sFRWVmLFihXYv3+/zAV8iUQCb29vfP311zwdRkTUiClcWLZu3YqYmBgs\nXLgQI0eOROvWrZGbm4vDhw8jLCwMdnZ28PX1VUZWIiLSAAoXlujoaHz88ceYMWOGtM3c3By+vr4o\nKSlBdHQ0CwsRUSOm8DyW3Nxc6fLAL3N1dUVmZmadQxERkeZSuLDY2NggOTm5yr7k5GS0adOmzqGI\niEhzKXwqbOzYsVi7di2aNm2KYcOGoXXr1rh//z6OHj2KLVu2YObMmcrISUREGkLhwjJp0iRcu3YN\nQUFBCA4OlrYLgoBRo0bBz89P1IBERKRZFC4s2traCA4OxowZMxAfH4/8/Hw0a9YMHh4ecHBwUEZG\nIiLSILWeIOng4MBCQkREcmpUWJYvX46ZM2fC2toay5cvf+W2vAklEVHjVqPC8ttvv8HHx0f671fh\nrHsiosatRoXlxRtPBgUF4c0334SRkZHcdvn5+a8tPERE1LApPI9lypQp+Pvvv6vsu3r1Kj799NM6\nhyIiIs1VoyOWTz/9VDqjXhAEBAQEVHnE8s8//6B169biJiQiIo1SoyMWLy8vaGtrQ1tbGwCk/37x\nS0dHB25ubjJzW4iIqPGp0RHLgAEDMGDAAADPJkgGBATAzs5OmbmIiEhDKXyNZefOnSorKvv27cOQ\nIUPg7OyM0aNH4/fff5f2nT9/Ht7e3nB2dsbIkSMRGxurkoxERI2dwoXluby8POTk5CA7OxvZ2dnI\nysrC33//jX379omZT+rgwYNYuXIlfH19cfjwYXh4eGDWrFlIT09HSkoK/Pz8MHToUBw8eBCDBg2C\nv78/bt26pZQsRERUPYVn3t+4cQOLFi1CSkpKlf0SiQTjxo2rc7AXCYKAjRs3wtfXF2PHjgXwbEDB\nH3/8geTkZMTHx8PFxUV6n7L58+cjMTERUVFRWLVqlahZiIjo1RQuLN988w0ePXqETz/9FL/++it0\ndXXx1ltv4ezZszh79iyioqJED/n3338jIyMDw4YNk7ZpaWnh0KFDAIBNmzbBy8tL5jGenp44evSo\n6FmIiOjVFD4VdvHiRcybNw9Tp07FsGHDUFRUhAkTJmDz5s14++23sXPnTtFD/vPPPwCeTcCcPHky\nevbsCR8fHyQlJQEAsrKyYGZmJvMYU1NTZGVliZ6FiIheTeHCUlpainbt2gEA2rVrh+vXr0v7Ro8e\njYsXL4oW7rnCwkIAwJIlSzBu3DhERkbCwcEBU6ZMwe3bt1FcXAxdXV2Zx+jq6qKkpET0LERE9GoK\nnwqztLREeno63N3d0a5dOxQWFiIjIwNWVlbQ09PD48ePRQ+po6MDAPj4448xcuRIAMCbb76JxMRE\n/PDDD9DT00NZWZnMY0pLS2FgYCB6FiIiejWFj1jefvtthIaG4sSJEzAzM4OtrS02bNiA27dvY8eO\nHbCxsRE9pKmpKQCgQ4cO0jaJRAJbW1ukp6fDwsICOTk5Mo/JycmROz1GRETKp3BhmT17NlxcXPC/\n//u/AIDPPvsMx48fx4gRI/Dbb79hzpw5ood0cnJC06ZN8ddff0nbBEHA7du3YWNjAzc3N8THx8s8\nJi4uDu7u7qJnISKiV1P4VFhoaChmzpwJR0dHAEDfvn1x5MgRXL58GU5OTmjbtq3oIQ0MDDBlyhSs\nX78erVu3RocOHbBnzx6kpqYiLCwMZWVlGDNmDMLCwjB8+HAcOXIEly5dQkBAgOhZiIjo1RQuLNHR\n0Rg4cKDMxXIbGxulnAJ70bx582BgYICvvvoKDx48QKdOnbB9+3bY2toCAMLDwxESEoKIiAjY2tpi\n8+bNvO0MEZEKKFxYunbtivj4ePTu3VsZeaolkUgwc+ZMzJw5s8r+F+9nRkREqqNwYXFyckJkZCR+\n+eUXdOrUCU2bNpXp59LERESNm8KF5fjx4zA1NUVxcTGSk5Pl+rk0MRFR46ZwYXlxmWIiIqKXKTzc\nOD4+Hk+ePKmyLz8/H8eOHatzKCIi0lwKF5bJkyfj9u3bVfZxzXsiIuKa9yKKz4jHsZRjyCzIhIWx\nBbzsveBh5aHqWERE9Ypr3oskPiMekUmRyMjPQKVQiYz8DEQmRSI+I/71DyYiakC45r1IjqVUfW3p\n55SfedRCRI2KwqPCnq+3UlhYiKKiIlRWVspt0xhv/phZkCnzfc6THKTlp+F86nkIEHhajIgaDYUL\nS1paGj777DMkJiZWu821a9fqFEoTWRhbICM/A8CzonL9wbN1aox0jKSnxQCwuBBRg6dwYVm5ciVS\nUlIwe/ZsmJubQ0tL4YFlDZKXvZe0eKTlp0nbbZr/9x5qPC1GRI2BwoUlISEBq1evxogRI5SRR2M9\nLxg/p/yM86nnYaRjBJvmNmjTtI10m3sF91QVj4io3ihcWAwNDdG8eXNlZNF4HlYe8LDygABBelrs\nRZbGlipIRURUvxQ+jzVq1Cjs3r0bgiAoI0+D4GXvVWX7UPuh9ZyEiKj+KXzEYmRkhMTERAwZMgTO\nzs5y68rz7sayp8XuFdyDpbElhtoP5fUVImoUFC4s+/fvh7GxMcrLy5GUlCTXz7sbP/P8tNhz8Rnx\nCIwN5Kx8ImrweHfjevB8Vv5zHH5MRA1ZrccKZ2VlISYmBlu3bkVubi6uXr2K0tJSMbM1GK+alU9E\n1NAofMQCAMHBwdi5cyfKy8shkUjQu3dvrF27FtnZ2fj+++/RqlUrsXNqtJdn5T/H4cdE1BApfMSy\ndetW7Ny5E4sXL8aJEyeko8Nmz56Nx48fY926daKH1HQWxhZVtnP4MRE1RAoXlr1792LOnDmYPHky\nLC3/+8HYrVs3zJ8/H2fPnhU1YEPA4cdE1JgofCosJycHXbp0qbLPysoKjx49qnOohobDj4moMVG4\nsLRt2xbnzp1Dr1695PoSEhJgY2NTxaPEdfHiRUyYMAHfffcdPD09AQDnz59HSEgI7ty5gzfeeAOL\nFi1C//79lZ6lpjj8mIgaC4ULy5QpU/DFF1+gvLwcAwcOhEQiQVpaGhITE7Ft2zYsWrRIGTmlnj59\nisWLF6OiokLalpKSAj8/P8yaNQuDBw/G4cOH4e/vj4MHD8LBwUGpeWqDw4+JqCFTuLCMHz8eeXl5\n2LRpE3bt2gVBEDB//nzo6Ohg+vTp8PHxUUZOqaCgIJiZmeHu3bvStqioKLi4uMDPzw8AMH/+fCQm\nJiIqKgqrVq1Sap7a4KJgRNSQ1Wq48cyZM+Hj44Pk5GQ8evQIhoaGcHV1RYsWLcTOJyM2NhZnzpxB\nREQERo0aJW1PSEiAl5fsBXJPT08cPXpUqXlqi8OPiaghq9UEyR9++AErVqxA3759MXLkSBgbG2P8\n+PGIiYkRO5/Uw4cPsXTpUqxevVru7spZWVlyq1aampoiKytLaXnqgsOPiaghU7iw7Nq1C4GBgTAy\nMpK2mZubw93dHUuXLsWhQ4dEDfjcF198gYEDB6Jfv35yfcXFxdDV1ZVp09XVRUlJiVKy1BWHHxNR\nQ1arNe9nz54Nf39/aZuNjQ2++uorWFpaIjIyEt7e3qKGPHjwIK5evYqffvqpyn49PT2UlZXJtJWW\nlsrdeVldcPgxETVkCheWrKwsuLq6Vtnn5uaGiIiIOod62YEDB5CdnY0+ffoAgHS2v6+vL959911Y\nWFggJydH5jE5OTlyp8fUycvDj4mIGgqFC4ulpSXi4uLQs2dPub7ExESlfJiHhoaiuLhY+n1ubi58\nfHywevVq9O7dG+vXr0d8fLzMY+Li4uDu7i56FiIiejWFC8u//vUvhISEoLy8HO+88w5atmyJvLw8\nnD59Gtu2bcO8efNED/lysdLT05O2t2rVChMnTsSYMWMQFhaG4cOH48iRI7h06RICAgJEz0JERK+m\ncGGZOnUqsrOzsWPHDmzbtk3arq2tjUmTJmHGjBmiBqwJR0dHhIeHIyQkBBEREbC1tcXmzZthZ2dX\n71lqIz4jHsdSjnEWPhE1CBKhlovXFxQU4OLFi3j06BGMjY3h7OyMli1bip1PqdLT0zFo0CCcOnUK\n1tbWKsnw8iz852a4zmBxISK19LrPzlpNkASeLUHcsWNHVFZWAgDKysqQnZ0NQP7UFVWPs/CJqKFR\nuLCkpqbi888/R2JiYrXbXLt2rU6hGhPOwieihkbhwhIYGIiUlBTMnj0b5ubm0NKq9erGhGez8DPy\nM+TaOQufiDSVwoUlISEBq1evxogRI5SRp9Hxsveq8hoLZ+ETkaZSuLAYGhrK3auLao+z8ImooVG4\nsIwaNQq7d+9Gnz59IJFIlJGp0eEsfCJqSBQuLEZGRkhMTMSQIUPg7Owsdz8uiUSCwMBA0QISEZFm\nUbiw7N+/H8bGxigvL0dSUpJcP49ixFHdpEkxJlNyQiYRKZPCheX06dPKyEEvqG7p4qu5V/H/0v6f\nXDtQ8yWNuSwyESkbxwqroeomTX5/6fsq239O+bnOz63IcxARvUqtZ96npKTgwoULKCwshImJCVxd\nXTXm3lzteKFpAAASjUlEQVTqrrpJk9mF2XBo6SDXrshkSk7IJCJlU7iwVFZWYsWKFdi/fz9evM2Y\nRCKBt7c3vv76a15nqaPqJk2aGVV9qxxFJlNyQiYRKZvCp8K2bt2KmJgYLFy4ELGxsbhy5QrOnDmD\nBQsW4OjRo4iMlJ/sR4qpbuniKV2nVNn+8mTK+Ix4BMYGwu+IHwJjAxGf8d+1argsMhEpm8JHLNHR\n0fj4449lbo9vbm4OX19flJSUIDo6Gr6+vqKGVCVVjKB61aTJN9u8+crJlK+7OM8JmUSkbAoXltzc\nXLi5uVXZ5+rqiq1bt9Y5lLpQ5Qiq6iZNvm4yZU3ulswJmUSkTAqfCrOxsUFycnKVfcnJyWjTpk2d\nQ6kLTRxBxYvzRKRqCheWsWPHYvPmzdixYwdycnJQWVmJnJwcfPfdd9iyZQtGjx6tjJwqoYkf0hbG\nFlW28+I8EdUXhU+FTZo0CdeuXUNQUBCCg4Ol7YIgYNSoUfDz8xM1oCpp4ggq3i2ZiFRN4cIikUgQ\nHBwMX19fxMfH4/HjxzAyMoKnpyccHOTnWGgyTfyQ5sV5IlK1GheW1NRUBAQEoEePHvjoo49gb28P\ne3t7FBYWwtPTEy4uLggJCYGlpfr+Na8oTf2Q5sV5IlKlGhWW7Oxs+Pj4oLy8HN7e3nL9fn5+2LNn\nD/71r3/h4MGDaN26tehBVYUf0tXjzSyJqCo1uni/detW6OrqIiYmRq6wGBkZYfbs2YiOjoYgCA1q\nuDFV7/lQ7Iz8DFQKldKh2C9OxiSixqlGheXcuXPw9fWFmVnVtxQBAEtLS3z44Yc4e/asaOFedP/+\nfXz66afo06cP3N3d8eGHH+LmzZvS/vPnz8Pb2xvOzs4YOXIkYmNjlZKDntHEodhEVD9qVFiys7Nr\ndIPJTp06ISsrq86hXlZZWYnZs2fjn3/+wbfffosff/wRRkZGmDp1KvLy8pCSkgI/Pz8MHToUBw8e\nxKBBg+Dv749bt26JnoWe0cSh2ERUP2pUWExMTJCbm/va7R49eoRmzZrVOdTLrl+/juTkZHz11Vdw\ndnaGvb09QkJC8PTpU8TGxiIqKgouLi7w8/ODnZ0d5s+fj27duiEqKkr0LPQM58sQUXVqVFjc3NwQ\nExPz2u1iYmLg6OhY51Avs7CwwJYtW9C+fXtp2/M7KD9+/BgJCQno3r27zGM8PT2RkJAgehZ6hjez\nJKLq1KiwTJ48Gb/99htCQkJQWloq119aWorQ0FDExsbCx8dH9JAmJiYYMGAAtLT+G3fnzp0oLi5G\nnz59kJWVJXf9x9TUVCmn5egZDysPzHCdAetm1tCSaMG6mTVmuM7gqDAiqtlw465du2Lx4sUIDg5G\nTEwMevToASsrK1RUVODevXuIi4tDXl4e/P39MWDAACVHBk6dOoW1a9di2rRpsLOzQ3FxMXR1dWW2\n0dXVRUlJidKzNGYcik1EVanxBMkpU6agc+fO2LZtG06ePCn90DY0NESfPn0wbdo0uLi4KC3ocwcO\nHMDy5csxbNgw/Pvf/wYA6OnpoaysTGa70tJSGBgYKD0PERHJUuiWLm5ubtJb5j98+BBNmjRRysX6\n6mzatAnr16/HxIkTsWzZMul1FgsLC+Tk5Mhsm5OT88rh0UREpBy1XvO+ZcuWYuZ4rYiICKxfvx5z\n586Fv7+/TJ+bmxvi42Un5sXFxcHd3b0+IxIREWpx23xVuH79OtatW4cxY8Zg/PjxyM3NlX49ffoU\nEydOREJCAsLCwnD79m1s2LABly5dwpQpVS/lS0REylPrI5b69J///AcVFRXYv38/9u/fL9M3b948\nzJo1C+Hh4QgJCUFERARsbW2xefPmGk3qJNUT455jvG8ZkfqQCIIgqDqEqqSnp2PQoEE4deoUrK2t\nVR2nUXp5+efnFBm6LMZzEFHNve6zUyNOhVHDJcY9x3jfMiL1wsJCKiXGPcd43zIi9cLCQiolxj3H\neN8yIvXCwkIqJcY9x3jfMiL1ohGjwqjhEmP5Z01dQpqooWJhqQKHrtYvMe45JtZ9yxrie98QfyZS\nbywsL3l56OrzJXcB8D9jA9cQ3/uG+DOR+mNhecmrhq7yP2LDJuZ7ry5HCfx9JlVgYXkJh642XmK9\n9+p0lMDfZ1IFjgp7CYeuNl5ivffqNGGTv8+kCjxieYmXvVeVtwfh0NWGT6z3Xswjn7qeTuPv86up\nyylLdctSVywsL+HQ1cZLrPfewtgCGfkZcu2KHCWIdTqNv8/VU6dTluqURQwsLFXgkruNlxjvvRhH\nCWJedFe332d1+ctcnQY2qFOW5+ryPrGwEIlMjKOEhnrRXZ3+MlenfaxOWYC6v08sLERKUNejBDFO\np6kjdfrLXJ32sTplAer+PnFUGJEaaqj3P1Onv8zVaR+rUxag7u8Tj1iI1FBDveiuTn+Zq9M+Vqcs\nQN3fJxYWIjWlbhfdxaBuw5/VaR+rU5a6vk+NurBUVFQAALKyslSchKhxsIAFvC29EftPLLKfZMPM\n0Az92/WHhWCB9PR0Vcej//O69+n5Z+bzz9CXNerCkpubCwDw8fFRcRKixisGMaqOQDVQ1fuUm5uL\nN954Q65dIgiCUB+h1FFxcTEuX76MNm3aQFtbW9VxiIg0QkVFBXJzc9G5c2fo6+vL9TfqwkJEROLj\ncGMiIhIVCwsREYmKhYWIiETFwkJERKJiYSEiIlGxsLykoqICa9asQZ8+fdCtWzfMnTsX9+/fV3Us\njZWSkgJHR0e5r4SEBADA+fPn4e3tDWdnZ4wcORKxsbEqTqxZVqxYgaVLl8q0vW6fPnjwAPPmzYO7\nuzt69uyJkJAQlJeX12dsjVHV/h07dqzc7/OL23D/AhBIxrp164TevXsL58+fFy5fviyMGzdOeP/9\n91UdS2MdPXpU8PT0FHJycmS+SktLhVu3bgmdO3cWvv32WyElJUVYt26d4OTkJNy8eVPVsdVeZWWl\nsH79eqFDhw7C559/Lm2vyT794IMPhAkTJgjXrl0Tzpw5I/To0UNYu3atKn4MtVXd/q2srBS6du0q\n/PTTTzK/zwUFBdJtuH8FgYXlBSUlJUK3bt2E/fv3S9vS0tKEDh06CImJiSpMprnWrVsn+Pj4VNm3\nfPlyYeLEiTJtEydOFJYtW1Yf0TRWamqqMHHiRMHT01MYMGCAzAff6/ZpUlKS0KFDByE1NVXaf+DA\nAaFbt25CSUlJ/fwAau5V+/fu3bty++9F3L/P8FTYC65fv44nT56ge/fu0jZra2tYWVlJT92QYm7d\nugVbW9sq+xISEmT2NQB4enpyX79GUlISLCwscPjwYVhbW8v0vW6fJiQkwMrKCjY2NtL+7t2748mT\nJ7h27Zryw2uAV+3fmzdvQl9fH1ZWVlU+lvv3mUZ9r7CXPb+xmpmZmUy7qakpb1RZS7du3UJJSQnG\njx+PjIwMODg4YMGCBXB2dkZWVhb3dS14e3vD29u7yr7X7dPs7GyYmprK9QNAZmYmunbtqoTEmuVV\n+/fWrVswNjbGokWLcOHCBZiYmGD06NGYMmUKtLS0uH//D49YXlBUVAQtLS3o6OjItOvq6qKkpERF\nqTRXcXEx0tLSUFhYiMWLF2PTpk0wNTXFxIkTcfv2bRQXF0NXV1fmMdzXdfO6fVpUVAQ9PT2Zfh0d\nHUgkEu73GkhJScHTp0/Rp08fbNu2DRMmTEBYWBjCw8MBcP8+xyOWF+jr66OyshLl5eVo0uS/u6a0\ntBQGBgYqTKaZ9PX1ER8fD11dXemHXVBQEK5cuYI9e/ZAT08PZWVlMo/hvq6b1+1TfX19lJaWyvSX\nlZVBEAQ0bdq03nJqquDgYDx9+hTNmjUDADg6OqKgoACbN2/GnDlzuH//D49YXmBhYQHgv7fTfy4n\nJ0fu9ALVjJGRkcxf0FpaWrC3t0dmZiYsLCyQk5Mjsz33dd28bp+am5tX+fsNyJ8CJnlNmjSRFpXn\nHB0d8eTJExQUFHD//h8Wlhd07NgRhoaGuHDhgrQtPT0dGRkZ8PBQj5XdNMnly5fh6uqKy5cvS9sq\nKipw/fp1ODg4wM3NDfHx8TKPiYuLg7u7e31HbTBet0/d3NyQlpaGzMxMmX5DQ0N07NixXrNqovHj\nx2P16tUybX/99RdMTU3RrFkz7t//w8LyAl1dXUyYMAHffPMNzp49iytXrmDBggXo3r07XFxcVB1P\n43Ts2BFWVlZYsWIFLl26hFu3buGzzz5DXl4eJk+ejIkTJyIhIQFhYWG4ffs2NmzYgEuXLmHKlCmq\njq6xXrdPu3XrBhcXF3zyySe4cuUKYmNjERISgmnTpsldmyF577zzDvbu3YuYmBikpqZi3759iIyM\nxNy5cwFw/0qperyzuikrKxO+/vproXv37oKrq6swb9484cGDB6qOpbGysrKEBQsWCD169BC6du0q\nTJs2Tbhx44a0/9dffxWGDRsmdO7cWRg1apTw22+/qTCt5pk4caLMPAtBeP0+zcnJEWbNmiV07dpV\n6NWrl7BmzRqhoqKiPmNrjJf3b2VlpbB9+3Zh8ODBQufOnYXBgwcLP/74o8xjuH8FgQt9ERGRqHgq\njIiIRMXCQkREomJhISIiUbGwEBGRqFhYiIhIVCwsREQkKhYWatSWLFlS5QqXL35NmjQJADBp0iRM\nnTpVpXkfPXqEgQMH4u7du7V+jvT0dDg6OuLQoUM1fszjx48xcOBApKWl1fp1qfHgPBZq1FJTU/Hw\n4UPp9ytXroS2tjaWLVsmbTMyMoK9vT1SUlIgkUhgZ2eniqgAgIULF8LMzAyLFy+u9XOUlpbi6tWr\naNu2LVq2bFnjx+3atQvHjx9HVFQUJBJJrV+fGj4WFqIXTJo0Cdra2tixY4eqo8j5888/MWHCBJw9\ne1ahgiCW0tJS9O/fHytXrsTgwYPr/fVJc/BUGFENvXwqzNHREXv37sWiRYvQrVs39OjRA+Hh4Sgs\nLMRnn30GNzc39O7dGyEhIXjx77e8vDwsW7YMPXv2hLOzMz744AMkJia+9vUjIyPRq1cvmaIycOBA\nfPvtt1i1ahW6d+8ONzc3BAYGoqioCMHBwfD09ISnpyeWLl0qXQ/k5VNhBw4cQJcuXZCUlIRx48ah\nS5cueOutt7B9+3aZ19fV1cXgwYOxZcuWuuxGagRYWIjqIDg4GCYmJvj222/x1ltvYePGjRg7diwM\nDAwQHh6Od955B5GRkfjll18AACUlJZg6dSrOnDmDBQsWICwsDM2bN8fUqVPx559/Vvs6T548wenT\np6s8UoiMjMSjR4+wYcMGvP/++9i9ezfee+89ZGZmYs2aNZg0aRKio6Oxe/fuap+/vLwcCxYswMiR\nIxEREQFXV1cEBwfj999/l9lu6NChuHz5Mv7555/a7TBqFLjQF1EdODk5YenSpQCe3c35wIEDaNWq\nFVasWAEA6NGjBw4fPoyLFy9iyJAhOHToEG7cuIF9+/ahS5cuAIB+/fph7NixWLduHb777rsqXych\nIQFlZWVwdnaW6zMxMUFISAi0tLTg6emJvXv3oqysDKGhoWjSpAn69OmD48eP4+LFi9X+HJWVlZgz\nZw7GjBkDAHB1dcWJEyfw66+/omfPntLtOnfuDODZreDbtWun+A6jRoFHLER18OIHvYmJCbS1tWXa\nJBIJmjdvjvz8fADA77//DjMzM3Tq1Anl5eUoLy9HZWUl3nrrLcTHx8utPvhceno6AMDa2lqur0uX\nLtDSevZfWUtLCyYmJnBycpJZBbVFixbSDNVxdXWV/ltXVxctW7ZEUVGRzDbGxsZo1qwZMjIyXvlc\n1LjxiIWoDgwNDeXaXrUE7aNHj5CVlQUnJ6cq+/Py8qpcabCgoAAAqly2WdEM1Xn5ubW0tFBZWVnl\nds/zEFWFhYWoHhkbG8POzg7BwcFV9puYmLyyvaCgQG5p3PqWn59fbU4igKfCiOqVh4cH7t27B1NT\nU3Tp0kX6derUKezcuRM6OjpVPs7S0hIAkJWVVZ9x5Tx+/BhFRUWwsLBQaQ5SbywsRPVo9OjRMDMz\nw7Rp03Do0CH88ccfCAoKwqZNm2BjY1PtxEN3d3fo6+vXaFiyMiUlJQEA+vTpo9IcpN5YWIjqkaGh\nIXbv3o2uXbsiKCgIH330Ec6dO4fly5djzpw51T7OwMAA/fr1w9mzZ+sxrbyzZ8/C2dmZRyz0Spx5\nT6Qh/vzzT3zwwQc4ffp0lRf4la2oqAh9+/ZFUFAQ3n777Xp/fdIcPGIh0hDOzs4YNGiQ3Iz4+rJ3\n717Y29tj0KBBKnl90hw8YiHSIA8fPsTo0aPx/fff44033qi313306BHefffden9d0kwsLEREJCqe\nCiMiIlGxsBARkahYWIiISFQsLEREJCoWFiIiEtX/B0NBll6lrNFiAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(data.insulin, 'go', label='insulin')\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration ($\\mu$U/mL)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the book, I put them in a single figure, using `subplot`" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nqqoytZ08eZIzZ87QrVs3a5crIiIOLiQkhL/97W9Wea8NGzbw29/+1ibvfTG7HzKYPXs2rq6uLF26\nlPPnz3Pq1Cmg9sZD7dq1Y8iQISQkJDBv3jwmT57Mv//9b1588UV69+7NgAEDbFy9iIhcq4yTGWzN\n2Up+ST6+Xr6MCB5hlXu/7N69m1atWjX5+9jbe9t1IDh27Bj79+8HYPhw81sCd+7cmc8++4zOnTuz\ndu1aXnnlFaKjo3FxceH2229nzpw5tihZREQsIONkBqv3rjY9PvnTSdPjpg4FtrynjS3f2+4Cwbp1\n60x/vummm/juu++u+JqwsDCz14mIiGO73BLzTR0IQkJCWLp0KaNGjWLOnDk4OTnh4eHB5s2bqays\n5Pbbb+e5557jhhtuoLq6mmXLlvH3v/+dH3/8kZtuuokpU6YwYkTtejcPPvggnTt3Nrsdf31t1/Le\nlmb3cwhEROT6Y09LzH/88cdUV1fz3nvvsXz5cnbu3ElKSgpQe3v9zz77jMTERLZt28bw4cN56qmn\nyM3NbfL3tjS7O0MgIiLi6+XLyZ9O1mm3xRLzbdq0Yf78+bRo0YKbbrqJ2267ja+//hqAH374gZYt\nW+Lv74+3tzdTpkyhZ8+etGnTpsnf29J0hkBEROyOPS0x37lzZ1q0aGF67OXlZbqybdy4cfz0008M\nGjSI6OhoEhMTCQgIMN0rpynf29IUCERExO708e/DpF6TCGgVgJPBiYBWAUzqNckmK8y6urrWaTMa\njQB07dqV7du388Ybb9CrVy+2bNnC73//e/75z39ecnvnz5+3yHtbmoYMRETELjnCEvPr16+nTZs2\n3HXXXQwaNIjZs2dz99138+mnn9K/f39cXFz4+eefTc+vqakhNzeXrl272rDq+ikQiIiIXKMff/yR\nxMREPDw86N69O99++y0nTpzg0UcfBWqvgnv77bf54osvCAwMZO3atWar9doTBQIREZFr9Pjjj1NR\nUcFzzz1HcXExvr6+TJ06lXvuuQeARx55hOPHjzNt2jRcXV0ZM2YMd911l42rrp/B2FSDEXbuxIkT\nDB06lB07dhAQEGDrckRERJrc5b77NKlQREREFAhEREREgUBERERQIBAREREUCERERAQFAhEREUGB\nQERERFAgEBERERQIREREBAUCERERQYFAREREUCAQERERFAhEREQEBQIRERFBgUBERERQIBAREREU\nCERERAQFAhEREUGBQERERLDDQLBw4ULmzZtn1rZ7925GjRpFz549GTlyJGlpaWb9p0+fZvr06URE\nRNC/f3/i4+M5f/68NcsWERFxaHYTCIxGIytWrOD99983a8/JySE2Npbhw4ezceNGhg4dSlxcHNnZ\n2abnTJ06leLiYlJTU1myZAkbNmwgMTHR2rsgIiLisOwiEOTm5vLQQw/x7rvv4ufnZ9aXkpJCWFgY\nsbGxBAUFMWPGDMLDw0lJSQEgKyuLPXv2sGTJEkJDQxk8eDCzZs1i3bp1VFZW2mJ3REREHI5dBIK9\ne/fi6+vL5s2bCQgIMOvLzMwkMjLSrK1v375kZmaa+v39/QkMDDT1R0ZGUlpayqFDh5q+eBERkWbA\n2dYFAIwaNYpRo0bV21dQUEDHjh3N2nx8fCgoKACgsLAQHx+fOv0A+fn53HrrrU1QsYiISPNiF2cI\nLqeiogJXV1ezNldXV86dOwdAeXk5bm5uZv0uLi4YDAbTc0REROTy7D4QuLm5UVVVZdZWWVlJy5Yt\nAXB3d68zV6Cqqgqj0YiHh4fV6hQREXFkdh8IfH19KSoqMmsrKioyDSN06tSJU6dO1ekH6gw1iIiI\nSP3sPhD07t2bjIwMs7b09HQiIiJM/bm5ueTn55v1e3p6EhoaatVaRUREHJXdB4IJEyaQmZnJypUr\nOXr0KCtWrGDfvn08/PDDAISHhxMWFsbMmTM5ePAgaWlpxMfHExMTU2fugYiIiNTP7gNBSEgISUlJ\nfPrpp4wePZqdO3eSnJxMUFAQAAaDgaSkJNq3b8/48eN59tlniY6OJi4uzsaVi4iIOA67uOzw19at\nW1enbciQIQwZMuSSr/H29ua1115rwqpERESaN7s/QyAiIiJNT4FAREREFAhEREREgUBERERQIBAR\nEREUCERERAQFAhEREUGBQERERFAgEBERERQIREREBAUCERERQYFAREREsMPFjRxdxskMtuZsJb8k\nH18vX0YEj6CPfx9blyUiInJZCgQWlHEyg9V7V5sen/zppOmxQoGIiNgzDRlY0NacrfW2b8vZZuVK\nREREGkaBwILyS/Lrbc8rybNyJSIiIg2jQGBBvl6+9bb7eflZuRIREZGGUSCwoBHBI+ptHx483MqV\niIiINIwmFVrQhYmD23K2kVeSh5+XH8ODh2tCoYiI2D2LBYKMjAy2b9/O3LlzLbVJh9THv48CgIiI\nOByLDRl8++23pKSkWGpzIiIiYkWaQyAiIiIKBCIiIqJAICIiIigQiIiICFdxlcEjjzxyVRvKy9Pd\n+ERERBzVFQNBVVXVVW3I29sbb2/vRhd0sfT0dB566KF6+/r27UtKSgpjxoxh//79Zn1jxozhxRdf\ntHg9IiIizdEVA8G6deusUcclhYeHs3v3brO2L7/8krlz5/LHP/4Ro9FITk4Oy5Yto1+/fqbntGzZ\n0tqlioiIOKwG3ZiosrKSd955h6ysLEpKSur0GwwG1qxZY7HiAFxdXc3OPJSUlLBs2TIeffRRBg4c\nyPHjxykvLycsLKxJzlCIiIhcDxoUCBYvXsyHH35It27daNOmTVPVdFmvv/46rq6uxMXFAXDkyBHc\n3d3x9/e3ST0iIiLNQYMCwWeffca0adOYMmVKU9VzWadPnyY1NZVFixaZhgSys7Px8vLi6aef5l//\n+hdt27bl3nvv5eGHH8bJSRdRiIiIXI0GBQKDwUBYWFhT1XJF7777Lu3bt+fuu+82teXk5FBWVkZU\nVBSTJ09m7969LF26lJKSEqZNm2azWkVERBxJgwLBPffcw4cffki/fv1s8tP3xx9/zL333ouLi4up\n7eWXX6asrIxWrVoBEBISQklJCcnJyUydOhWDwWD1OkVERBxNgwLB9OnTueeee7jjjju4+eab68zk\nNxgMvPTSSxYt8ILs7Gx++OEH7rrrLrN2Z2dnUxi4ICQkhNLSUkpKSur0iYiISF0NCgTLli3j2LFj\neHl58e2339bpb8qfxjMzM/H29iYoKMisfezYsfTs2ZP58+eb2vbv34+Pj4/CgIiIyFVqUCDYtGkT\nf/zjH3nyySetfir+0KFDdO/evU77sGHDWLlyJT169KBXr16kp6ezevVq5s2bZ9X6REREHFmDAkGL\nFi0YMGCATcbli4qKaN26dZ32SZMm4ezszKpVq8jLy8PPz4+5c+cSHR1t9RpFREQcVYMCwciRI02T\nCq0tOTm53naDwUBMTAwxMTFWrkhERKT5aFAgaN++PRs3bmTYsGHccssteHp6mvUbDAYWL15s0QJF\nRESk6TUoEHzwwQe0bt2a6upqvv766zr9usRPRETEMTUoEOzcubOp6hAREREbuuLdhdatW8fx48et\nUYuIiIjYyBXPEKSlpbFs2TJ8fHwYNGgQgwYNom/fvri7u1ujPhEREbGCKwaC1atXc+7cOb766iu+\n+OILXnzxRQoLC4mIiGDgwIEMHDiwzs2CRERExLFc1RwCNzc3Bg8ezODBgwH4/vvv+eKLL9i1axcJ\nCQm0b9+eQYMGMXDgQIYOHdqkBYuIiIjlNWhS4QU33ngjN954Iw8++CDnzp0jPT2dXbt2sXTpUgUC\nERERB3RNgeDX3NzcTHMLRERExDFdMRAkJSXV224wGPDw8KBDhw706dOHTp06Wbw4ERERsY4rBoJV\nq1Zdsq+6uhqoXePgkUce4amnnrJcZSIiImI1VwwEBw8evGRfTU0NhYWFfPrppyxbtoygoCBGjx5t\n0QJFRESk6V3xxkSXfbGTE76+vkycOJH777+fd99911J1iYiIiBU1KhD8Wr9+/Th27JilNiciIiJW\nZLFA0KpVK6qqqiy1OREREbEiiwWCQ4cO6UoDERERB2WRQHDw4EH+8pe/MGzYMEtsTkRERKzsilcZ\nPPLII5fsq6yspKioiNzcXH7zm98QGxtr0eJERETEOq4YCC41L8BgMHDDDTdw44038sQTT3DnnXfi\n7NzoGx+KiIiIDVzxG3zdunXWqENERERs6Kp/pJ82bRqhoaF0796dkJAQAgMDzfq/++47WrZsSefO\nnS1epIiIiDStqw4Ex48f5/PPP6eyshKDwYC7uzvdunUjJCSEbt26kZWVxf79+9m+fXtT1isiIiJN\n4KoDwaZNm6iurubYsWMcOXKE7777jsOHD7NlyxbKy8sB8PX1bbJCRUREpOk0aBZgixYtCA4OJjg4\nmDvvvBOovdLgzTffJCUlhTfeeKNJihQREZGm1ej7ELi6uhIXF0e/fv149dVXLVGTiIiIWJnF7lTY\nu3dvvvrqK0ttTkRERKzoqocMFixYYHaVQatWrcz6jx8/Tvv27S1eoIiIiDS9qw4EX3zxBR988AFQ\ne1Oijh07Ehoayk033cTp06f5f//v/7Fs2bImKTInJ4e77rqrTvv69euJiIhg9+7dxMfHc+zYMbp0\n6cLTTz/N4MGDm6SWa5FxMoOtOVvJL8nH18uXEcEj6OPfx9ZliYiImFx1IPj888/5+eefOXLkCNnZ\n2Rw5coQjR46wadMmfvzxRwDi4uLo0qULQUFBdO3aleDgYH7/+983usgjR47Qtm1bNm/ebNbepk0b\ncnJyiI2NZcqUKfzud79j8+bNxMXFsXHjRrp169bo926sjJMZrN672vT45E8nTY8VCkRExF406CqD\nG264gV69etGrVy+z9uLiYlNAuBAWvvjiCyoqKiwWCIKDg/H29q7Tl5KSQlhYmGkdhRkzZrBnzx5S\nUhrjo3oAABiRSURBVFJ4/vnnG/3ejbU1Z2u97dtytikQiIiI3bDI4gMdOnSgQ4cO3HbbbWbtubm5\nltg82dnZdO3atd6+zMxMRowYYdbWt29ftmzZYpH3bqz8kvw6bUWlRezN30teSZ6GEERExC5Y7CqD\n+lx8e+NrlZ2dTV5eHmPHjmXAgAFMnDiRb775BoCCggI6duxo9nwfHx8KCgos8t6N5etlfrOmotIi\nDp8+DECNscY0hJBxMsMW5YmIiABNHAgsoaKigtzcXH7++WdmzZrFqlWr8PHxYcKECRw9epSKigpc\nXV3NXuPq6sq5c+dsVLG5EcHmZy9yf6o9axLY2jwsbcvZZrWaRERELmb36xW7u7uTkZGBq6ur6Yt/\nyZIlHDx4kHfeeQc3N7c6SzRXVlbSsmVLW5Rbx4WhgG0528grycPJ4MRvOvwGbw/z+RB5JXm2KE9E\nRARwgEAAtZMZf83JyYng4GDy8/Px9fWlqKjIrL+oqKjOMIIt9fHvYwoGi9MWc/Knk3We4+flZ+2y\nRERETOx+yODAgQP06tWLAwcOmNqqq6s5fPgw3bp1o3fv3mRkmI+/p6enExERYe1Sr8rFQwgXDA8e\nbuVKREREfmH3ZwhCQ0Px9/dn4cKF/OlPf8LDw4M333yTH3/8kYceeoji4mLuu+8+Vq5cyf9v796D\nojrPMIA/rCsBCSihQleMSYSwtghyUcC6CpKaqBlqq0C8QAqtE3VSsCUaQ7lMYtKpQBQvDOhAaxsh\nrbGgxmgnzWgDTcdakEaFSgSnIoIKigLhKuzpHw6ryy4gsLtnz/L8ZpjR7+zlPbxnOe8532VfffVV\nfPbZZ7hw4QLeffddsUPXa2AXwjT7aZpiYHvxdi5eREREojD7gkAulyMvLw/p6enYuHEjOjs74efn\nh/z8fDg5OcHJyQlZWVnIyMhAbm4uZs6cif3798PNzU3s0Af1eBcCwMWLiIhIfGZfEACAi4sLdu7c\nOej2kJAQhISEmC4gA+PiRUREJDazH0MwHuhbvAjgzAMiIjIdFgRmYODiRf0484CIiEyFBYEZ4MwD\nIiISmyTGEFg6zjwgIiKxsSAwE5x5QEREYmKXgZkaauYBERGRobEgMFOceUBERKbEgsBMceYBERGZ\nEgsCM8WZB0REZEocVGimBpt5wAGFRERkDCwIzNjAmQdERETGwi4DIiIiYkFARERE7DKQnNL6Uvy1\n5q9cvZCIiAyKBYGEcPVCIiIyFnYZSAhXLyQiImNhQSAhXL2QiIiMhQWBhHD1QiIiMhYWBBLC1QuJ\niMhYOKhQQrh6IRERGQsLAokZavXCoaYkGnO6IqdCEhFJHwsCCzHUlEQARpuuyKmQRESWgWMILMRQ\nUxKNOV2RUyGJiCwD7xBYiNFMSTTEdEVOhSQisgy8Q2AhhpqSaMzpipwKSURkGVgQWIihpiSOZrpi\naX0pthdvx6bPNmF78XaU1peO+H2JiEg62GVgIZ5kSuKTTlccyUBBToUkIrIMkigI7ty5g4yMDPzz\nn/9EV1cX5syZg23btsHDwwMAEB4ejkuXLmk9Jzw8HL/5zW8MGoe5T68bakriUNsGGmqgoL7XGMlr\nExGReTL7gkCtVuMXv/gFBEFAdnY2Jk2ahH379iEmJgYnT57ElClTUFNTgw8//BBBQUGa59na2ho0\njvE0vY4DBYmIxh+zLwiqqqrwn//8B6dOnYKbmxsAICMjAwEBASguLoafnx86Ozvh4+ODqVOnGi2O\nkV41S5nCXoH61nqddg4UJCKyXGY/qFChUODAgQN44YUXNG1WVlYAgJaWFly5cgU2NjZwdXU1ahzj\n6aqZAwWJiMYfsy8IHB0dERISApnsUaiHDh1CV1cXVCoVqqurYW9vjy1btkClUiEsLAwHDx6EWq02\naBzjaXrdPNd5WO+3HtMdpkNmJcN0h+lY77fe4u6EEBHRI2bfZTDQ6dOnsWvXLsTGxsLNzQ01NTXo\n6OiASqXChg0bUF5ejvT0dLS1tSE+Pt5g77vMfZnWGIJ+lnrVzIGCRETji6QKgqKiIqSkpGD58uXY\nunUrACAtLQ0dHR1wcHAAACiVSrS1tWH//v2Ii4vTdC+MFafXicfcZ3cQEVkCyRQEOTk52L17N6Ki\nopCcnKw50cvlck0x0E+pVKK9vR1tbW0628aCV82mN55mdxARicnsxxAAQG5uLnbv3o34+HikpKRo\nXfVHRkbigw8+0Hr8pUuX4OzsbNBigMTBL08iIjINs79DUFVVhczMTKxatQqRkZFoamrSbLOzs8OS\nJUuwd+9ezJ49G35+fjh37hzy8vKQlJQkYtRkKONpdgcRkZjMviA4deoU+vr6UFhYiMLCQq1tmzdv\nxqZNmyCXy5GTk4OGhgZMmzYNiYmJiIiIECliMiSuiUBEZBpmXxAkJCQgISFhyMfExsYiNjbWRBGR\nKY232R1ERGIx+4KAxjfO7iAiMg0WBGT2OLuDiMj4JDHLgIiIiIyLBQERERGxICAiIiKOISAy6tLI\nXHaZiKSCBQGNa8ZcGpnLLhORlLDLgMY1Yy6NzGWXiUhKWBDQuGbMpZG57DIRSQkLAhrXFPYKve2G\nWBrZmK9NRGRoLAhoXFvmvkxvuyGWRjbmaxMRGRoHFQ6Co8PHB2MujWyKZZd5nOrH3wvRyLEg0IOj\nw8cXYy6NbMzXNvZxKtWTKj+/RKPDLgM9ODqcpMCYx2n/SbW+tR5qQa05qZbWl475tY2Nn1+i0WFB\noAdHh5MUGPM4lfJJlZ9fotFhl4EeCnsF6lvrddo5OpzMiTGPU1OcVI3VJcHPr7ik2tUESDt2Q+Ad\nAj04OpykwJjHqbGnTBqzS4KfX/FIuatJyrEbCu8Q6GGK0eFEY2XM43SZ+zKtgXn9DHVSHapLYqzx\nW8LnV6pXqsbMq7FJOXbAMMcMC4JBGHN0OJGhGOs4NfZJ1dhdElL+/Ep5loSUx29IOXZDHTMsCIhI\nL2OeVNnPPzgpX6lKOa9Sjt1QxwzHEBCRybGff3BSvlKVcl6lHLuhjhneISAik7OEfn5jkfKVqpTz\nKuXYDXXMsCAgIlFIuZ/fmIw9oNPYpJxXqcZuqGNm3BYEfX19AIBbt26JHAkR0SMKKLBi2goUXyvG\n7fbbcLFzQfDzwVAICty4cUPs8MgMjeSY6T/n9Z8DHzduC4KmpiYAwLp160SOhIhoaMdwTOwQSGKG\nO2aamprw3HPPabVZCYIgGDMoc9XV1YWKigpMnToVEyZMEDscIiIio+vr60NTUxNmz54NGxsbrW3j\ntiAgIiKiRzjtkIiIiFgQEBEREQsCIiIiAgsCIiIiAgsCIiIiAgsCvfr6+rBz506oVCr4+voiPj4e\nd+7cETssg7hz5w62bdsGlUqFuXPn4uc//zmuXLmi2R4eHg6lUqn1k5SUJGLEo1dTU6OzL0qlEmVl\nZQCAr776CitWrIC3tzfCwsJQXFwscsSjc+7cOb37qVQq8frrrwOwnLympqbqxD1cHu/evYvNmzdj\n7ty5mD9/PjIyMtDb22vKsEdF377m5+dj6dKl8PHxwfLly3HkyBGt7QUFBTp5/v73v2/KsEdF374O\nd8xaSl5DQ0MH/fw2NDz8LgKT5VUgHZmZmcKCBQuEr776SqioqBAiIiKE1atXix3WmPX19Qmvvfaa\nEBkZKVy4cEGorq4W4uPjhfnz5wvNzc2CWq0W5syZI3z66adCY2Oj5qetrU3s0Efl5MmTQmBgoNa+\nNDY2Cj09PUJ1dbUwe/ZsITs7W6ipqREyMzMFT09P4cqVK2KHPWLd3d06+3j06FFh1qxZQklJiUXk\nVa1WC7t37xY8PDyEX//615r2J8njmjVrhLVr1wqXL18WvvzySyEoKEjYtWuXGLvxRAbb14KCAsHH\nx0c4duyYUFtbK3zyySeCp6encPToUc1jUlNThY0bN2rluampSYzdeCKD7euTHLOWkte7d+9q7WNt\nba0QHBwsvPXWW5rHmCqvLAgG6O7uFnx9fYXCwkJNW11dneDh4SGcP39exMjGrrKyUvDw8BBqamo0\nbd3d3cKcOXOEo0ePCrW1tYKHh4dw/fp1EaM0nMzMTGHdunV6t6WkpAhRUVFabVFRUUJycrIpQjOq\n1tZWYcGCBUJGRoYgCILk83r9+nUhKipKCAwMFEJCQrT+mA6Xx/Lycp19LyoqEnx9fYXu7m7T7MAI\nDLWvYWFhQnp6utbjExMThejoaM3/16xZI+zZs8dk8Y7FUPs63DFrSXkdKDU1VQgNDRU6Ojo0babK\nK7sMBqiqqkJ7ezsCAgI0bdOnT4erq6vmVrNUKRQKHDhwAC+88IKmzcrKCgDQ0tKCK1euwMbGBq6u\nrmKFaFDV1dWYOXOm3m1lZWVaOQaAwMBAyecYALKzs2FtbY0333wTACSf1/LycigUCpw4cQLTp0/X\n2jZcHsvKyuDq6opnn31Wsz0gIADt7e24fPmy8YMfoaH2NTk5GatXr9Zqk8lkaG1t1fy/pqYGbm5u\nJol1rIba1+GOWUvK6+OqqqrwySefIDU1Fba2tpp2U+WVBcEA/V/84OLiotXu7Ows+S9CcnR0REhI\nCGSyR2k/dOgQurq6oFKpUF1dDXt7e2zZsgUqlQphYWE4ePAg1Gq1iFGPXnV1NRoaGhAZGYkFCxYg\nJiYGFy9eBPAwz5aY47t37yI/Px9vvvmm5g+K1PO6YsUKpKenY+rUqTrbhsvj7du34ezsrLMdAG7e\n1P8d8mIaal8DAgK0ToANDQ04efIkFi5cCODhvra0tKCkpARLly5FcHAwtmzZgtu3b5ss/pEYal+H\nO2YtKa+P27dvH/z9/REcHKxpM2VeWRAM0NnZCZlMhokTJ2q1W1tbo7u7W6SojOP06dPYtWsXYmNj\n4ebmhpqaGnR0dEClUuF3v/sd1q5di7179yIrK0vsUEesq6sLdXV1+Pbbb/H2228jJycHzs7OiIqK\nwtWrV9HV1QVra2ut51hCjv/0pz/ByckJP/rRjzRtlpTXgYbLY2dnJ5566imt7RMnToSVlZWkc93c\n3IwNGzbgO9/5Dt544w0AD0+iACCXy5GZmYnf/va3uHbtGmJiYtDV1SVmuCM23DFriXmtq6vDmTNn\nsGHDBq12U+Z13H7b4WBsbGygVqvR29sLufzRr6enp0frFo7UFRUVISUlBcuXL8fWrVsBAGlpaejo\n6ICDgwMAQKlUoq2tDfv370dcXJyme0EKbGxsUFpaCmtra80JY8eOHaisrMTHH3+Mp556Cg8ePNB6\njiXk+NNPP8XKlSu1ClpLyutAw+XRxsYGPT09WtsfPHgAQRAwadIkk8VpSHV1dVi/fj26urqQn58P\ne3t7AIBKpcLZs2fxzDPPaB7r7u6ORYsWobi4GK+88opYIY/YcMesJeb1xIkTUCgUUKlUWu2mzCvv\nEAygUCgAPPp65H6NjY06tyalKicnB4mJiVi9ejXS09M1XQhyuVzzAeynVCrR3t6OtrY2MUIdk6ef\nflrr6lEmk8Hd3R03b96EQqFAY2Oj1uOlnuPq6mrU1tbi1Vdf1Wq3tLw+brg8fve739X7WQZ0uwWl\noLKyEq+99hpkMhn+/Oc/a3UhANA6aQAPb6M7Ojqa5W30oQx3zFpaXoGHd2yXLVumt0A3VV5ZEAww\na9Ys2NnZ4d///rem7caNG6ivr8e8efNEjMwwcnNzsXv3bsTHxyMlJUXr4IuMjMQHH3yg9fhLly7B\n2dlZ58Np7ioqKuDn54eKigpNW19fH6qqqvDiiy/C398fpaWlWs85d+4c5s6da+pQDaasrAxTp07V\nGXxkSXkdaLg8+vv7o66uTusP57lz52BnZ4dZs2aZNNaxunr1Kn72s5/B1dUVH3/8sebipd9HH30E\nlUqldcekvr4ezc3NePHFF00d7pgMd8xaUl4BoKOjA5cvX0ZQUJDONlPmlQXBANbW1li7di3S09NR\nUlKCyspKJCQkICAgAD4+PmKHNyZVVVXIzMzEqlWrEBkZiaamJs1PR0cHlixZgsOHD+PYsWO4fv06\njhw5gry8PMTHx4sd+ojNmjULrq6uSE1NxYULF1BdXY3ExETcu3cPr7/+OqKiolBWVoa9e/fi6tWr\n2LNnDy5cuICf/vSnYoc+apcvX4aHh4dOuyXldaDh8ujr6wsfHx/86le/QmVlJYqLi5GRkYHY2Fid\nsQfmbtu2bbC2tkZ6ejp6e3s1n93m5mYAQEhICNrb25GUlISrV6/i/PnziIuLg7+/PxYsWCBy9CMz\n3DFrSXkFgG+++QZ9fX16P7+mzCvHEOjxy1/+Er29vdi6dSt6e3uxcOFCpKamih3WmJ06dQp9fX0o\nLCxEYWGh1rbNmzdj06ZNkMvlyMnJQUNDA6ZNm4bExERERESIFPHoyeVy5OXlIT09HRs3bkRnZyf8\n/PyQn58PJycnODk5ISsrCxkZGcjNzcXMmTOxf/9+yUzZ0qexsRGTJ0/WaV+/fr3F5HUgpVI5ZB6t\nrKyQlZWFd999F+vWrYOdnR0iIiI0UzKl4n//+x8uXboEAFi6dKnWthkzZuCLL77AjBkzcPDgQezc\nuRMRERGYOHEiQkND8c4774gR8pgMd8xaSl779Xd/TJkyRWebKfNqJQiCYPBXJSIiIklhlwERERGx\nICAiIiIWBERERAQWBERERAQWBERERAQWBERERAQWBEQW65133oFSqRzyJzo6GgAQHR2NmJgYUeO9\nf/8+QkNDUVtbO+rXuHHjBpRKJY4fP/7Ez2lpaUFoaCjq6upG/b5EloDrEBBZqOvXr2tWsQOA9957\nDxMmTEBycrKm7emnn4a7uztqampgZWUl6sJMb731FlxcXPD222+P+jV6enrw3//+FzNmzNBZ/30o\n+fn5+Pzzz/HRRx9J+sueiMaCBQHROBEdHY0JEybgD3/4g9ih6Lh48SLWrl2LkpKSEZ3IDaWnpwfB\nwcF477338PLLL5v8/YnMAbsMiEiny0CpVOLw4cPYsmULfH19ERQUhKysLHz77bdITEzUrKOekZGB\nx68p7t27h+TkZMyfPx/e3t5Ys2YNzp8/P+z75+Xl4Qc/+IFWMRAaGors7Gy8//77CAgIgL+/P7Zv\n347Ozk6kpaUhMDAQgYGBSEpKQnd3NwDdLoOioiJ4eXmhvLwcERER8PLywuLFi/H73/9e6/2tra3x\n8ssv48CBA2P5NRJJGgsCItIrLS0Njo6OyM7OxuLFi7Fv3z6Eh4fD1tYWWVlZWLJkCfLy8vC3v/0N\nANDd3Y2YmBh8+eWXSEhIwN69ezF58mTExMTg4sWLg75Pe3s7zpw5o/fKPC8vD/fv38eePXuwevVq\nFBQU4Cc/+Qlu3ryJnTt3Ijo6Gn/5y19QUFAw6Ov39vYiISEBYWFhyM3NhZ+fH9LS0nD27Fmtxy1d\nuhQVFRW4du3a6H5hRBLHLzciIr08PT2RlJQE4OG3RxYVFcHJyUnzRV9BQUE4ceIEvv76a7zyyis4\nfvw4vvnmGxw5cgReXl4AgEWLFiE8PByZmZk4ePCg3vcpKyvDgwcP4O3trbPN0dERGRkZkMlkCAwM\nxOHDh/HgwQN8+OGHkMvlUKlU+Pzzz/H1118Puh9qtRpxcXFYtWoVAMDPzw9ffPEF/v73v2P+/Pma\nx82ePRvAw6/Rff7550f+CyOSON4hICK9Hj9BOzo6YsKECVptVlZWmDx5MlpbWwEAZ8+ehYuLC773\nve+ht7cXvb29UKvVWLx4MUpLS9HT06P3fW7cuAEAmD59us42Ly8vyGQP/0zJZDI4OjrC09MTcvmj\na5kpU6ZoYhiMn5+f5t/W1tZ45pln0NnZqfUYe3t7ODg4oL6+fsjXIrJUvENARHrZ2dnptE2aNGnQ\nx9+/fx+3bt2Cp6en3u337t2Di4uLTntbWxsAwNbWdswxDGbga8tkMqjVar2P64+HaLxhQUBEBmFv\nbw83NzekpaXp3e7o6Dhke1tbGxwcHIwW35NobW0dNE4iS8cuAyIyiHnz5qGhoQHOzs7w8vLS/Jw+\nfRqHDh3CxIkT9T5v2rRpAIBbt26ZMlwdLS0t6OzshEKhEDUOIrGwICAig1i5ciVcXFwQGxuL48eP\n41//+hd27NiBnJwcPPvss4Mu+DN37lzY2Ng80fREYyovLwcAqFQqUeMgEgsLAiIyCDs7OxQUFGDO\nnDnYsWMH3njjDfzjH/9ASkoK4uLiBn2era0tFi1ahJKSEhNGq6ukpATe3t68Q0DjFlcqJCLRXbx4\nEWvWrMGZM2f0Djw0ts7OTixcuBA7duzAD3/4Q5O/P5E54B0CIhKdt7c3XnrpJZ0VBE3l8OHDcHd3\nx0svvSTK+xOZA94hICKz0NzcjJUrV+KPf/wjnnvuOZO97/379/HjH//Y5O9LZG5YEBARERG7DIiI\niIgFAREREYEFAREREYEFAREREYEFAREREQH4P03Ltvy5AvD7AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subplot(2, 1, 1)\n", + "plot(data.glucose, 'bo', label='glucose')\n", + "decorate(ylabel='mg/dL')\n", + "\n", + "subplot(2, 1, 2)\n", + "plot(data.insulin, 'go', label='insulin')\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='$\\mu$U/mL')\n", + "\n", + "savefig('chap08-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Interpolation\n", + "\n", + "We have measurements of insulin concentration at discrete points in time, but we need to estimate it at intervening points. We'll use `interpolate`, which is a wrapper for `scipy.interpolate.interp1d`" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%psource interpolate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The return value from `interpolate` is a function." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "I = interpolate(data.insulin)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use the result, `I`, to estimate the insulin level at any point in time." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(68.0)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "I(7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`I` can also take an array of time and return an array of estimates, which we can plot." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nuaReT0WlVlFYVqipEkwVpliZWen04Z1dmM25nHPYmNtgaWbJb8m/8c3pb+jo3LHWIfBO1k50ce1C\nZxAoNo8AAA73SURBVNfOdHDuoPUB72zjXOfP5NnMk96tegMVw7BzCnMqksz/J5zkvORam9OUKiXJ\neckk5yVrjikUClxtXbWSjZeD113f2E2tVlOuKqe4vJgSZUnFv8tLNK8rv/4r8y/2xe9DqVKiRs35\nK+c5dOkQj7Z9FB+nO1/A9k4k5iby34v/1Xr9e/LvDG0/lAC3ACzNLLEys8LS9P//bWap+drC1MLo\nmioV6vt4nYuUlBQGDhzIzz//TKtWModBGEZUapTWhM1K47uPJ9AjkOzC7IoP5SrVQn5Jvta1ta1/\nBmBnbkd39+6YKEzwbe5LZ9fOdGnZBXc79wb7cMkrzquRbHIKc3T+fidrJ61kk1OYw9Gko2QUZOBm\n58bffP6Gf0v/2yaCyq9ru6b6a10+1m73Ht9N9Y2laqLR9eu6EpWlmSXmJuZEp0XXWUHd7rNTKhYh\nDOx2lY+rrSuutq708KjYjVWtVpNXkqeVbKLSomrc18LEAntLeyYETqCjc0eszeu39bauHKwc6GLV\nhS4tu2iOFZYVknI9RasZLb0gvdYP9MqBDiczTmoGNlT2zyhVSr4+/XWdlVhDqm2NOdBvnTpDqW8s\nJeUlWrve1ld2YTbxV+IxNTHF3a6i31mfaReSWIRoAPpM+lQoFDhaOeJo5aj58M66kcXla5cpKC2g\nuLwYOws7bM1t8XLwuut/TdfGxtyG9i3aa21tUKYsIzU/VSvZpOanUqa8uQZcZd9Quapc637JeckG\nTSxmJmZaf5VXfl31dWWfmInCRGuHWBcbF0Z0GWGwWHRRqizVVIFq1ChVSlRqFQ6WDjzs9XCNyqzq\n11WnRxhKUl4S5epyypXlXMq7hJudGxamFjpPu5DEIoQRqhxIUHXXTTDuQSTmpua0cWxDG8c2mmMq\ntYqMggxNsvkr6y9KyksoV99MLAoUlChLaG7d/LbNNRamFjUSRG1fm5qY3jbeds3b1dlkebf7VG3N\nbe84FpVaRamytNakU/l1cXmx1jW1JarK48XlxVoVVHOr5poVyHWddiGJRQgj1FQGkZgoTPCw98DD\n3oPerXpzNucsKXkplKnKUKDA1MQUE4UJrZq1Ynb/2Xc1NmN6j+sTi4nCRJNsDWXur3NJzktGpVZh\nYWqhOa7rtAtJLEIYKUOsoWZsKiuxqh9W0HiVmDG9x8YUy5B2Q2qtoHT9Pd3XiUWpVAKQkZHRyJEI\ncX9wx51Qj1AOXTpE5o1MWtq2pH+b/rir3UlJSbn9DcRdcbvfU+VnZuVnaHX3dWLJzq5YHj8sLKyR\nIxHi/rWb3Y0dgtBBbb+n7OxsHnjggRrH7+t5LMXFxZw6dQoXFxdMTW/f2SeEEKKiUsnOzqZz585Y\nWdXs27mvE4sQQgjDM7n9JUIIIYTuJLEIIYQwKEksQgghDEoSixBCCIOSxCKEEMKgJLFUo1Qq+fDD\nD+nTpw/dunXj9ddfJydH9yXChbaEhAT8/Pxq/BMdHQ3A0aNHCQ0Nxd/fn5CQEA4dOtTIEd9b5syZ\nw7vvvqt17Hbv6ZUrV5g6dSqBgYE89NBDREREUF6uvSikqFDb+/vcc8/V+O+56jXy/gJqoWX58uXq\nRx55RH306FH1qVOn1MOHD1e/8MILjR3WPWvfvn3qoKAgdVZWltY/paWl6vj4eHXnzp3V//73v9UJ\nCQnq5cuXqzt16qQ+f/58Y4dt9FQqlXrFihXq9u3bq9955x3NcV3e0xEjRqhHjhypjouLU//666/q\n3r17q5ctW9YYP4bRquv9ValU6q5du6r37Nmj9d9zfn6+5hp5f9VqSSxVlJSUqLt166besWOH5lhy\ncrK6ffv26piYmEaM7N61fPlydVhYWK3nZs+erR41apTWsVGjRqlnzZp1N0K7ZyUlJalHjRqlDgoK\nUg8YMEDrg+927+nx48fV7du3VyclJWnO79y5U92tWzd1SUnJ3fkBjNyt3t/Lly/XeP+qkve3gjSF\nVXH27Flu3LhBr169NMdatWqFp6enpulG6Cc+Ph5vb+9az0VHR2u91//X3t3GNHWFARz/U6CUIWhZ\nUoZMZyIGDLRoUUBFDahsMXE4fIkQUPiyD0uYsRozozPxJZGOGSMSXzJ82QtG4mIkftJlOjHGF5Ao\nwjaHJpuAIImCIlYo9u6D2lFbxEEtVp5f0gTOueeehyfAw7nl3gOQmJgoue5HdXU14eHhnDhxwmn3\nvv5yWlVVRUREBGPGjLH3JyQk0NnZyR9//PHmg/cCr8rvX3/9hUajISIiwuVYye8zw/pZYS978WC1\nsLAwh3adTicPqhyg+vp6urq6WLp0KU1NTUyYMAGTyYTBYKClpUVyPQDp6emkp6e77Osvp3fv3kWn\n0zn1AzQ3NxMXF/cGIvYur8pvfX09wcHBrFmzhsuXL6PVasnIyGDFihWoVCrJ73OyYunFYrGgUqnw\n9/d3aFer1XR1dQ1RVN7ryZMnNDQ08OjRI9auXcuePXvQ6XRkZ2dz69Ytnjx5glrt+Ph0yfXg9JdT\ni8VCQECAQ7+/vz8+Pj6S99dw8+ZNHj9+THJyMvv37ycrK4uioiKKi4sBye8LsmLpRaPRYLPZ6Onp\nwc/vv9R0d3cTGOiZ/cXfJRqNhsrKStRqtf2XXUFBAXV1dRw+fJiAgACsVqvDGMn14PSXU41GQ3e3\n41a2VqsVRVF47733PBantzKbzTx+/JiQkBAAoqKi6OjoYO/eveTn50t+n5MVSy/h4eHAf4/Tf6G1\ntdXp8oJ4PSNGjHD4C1qlUhEZGUlzczPh4eG0trY6HC+5Hpz+cvrBBx+4/P4G50vAwpmfn5+9qLwQ\nFRVFZ2cnHR0dkt/npLD0Eh0dTVBQEJcvX7a3NTY20tTUxNSpb8fObt6ktrYWo9FIbW2tve3p06f8\n+eefTJgwgfj4eCorKx3GXLp0iSlTpng61HdGfzmNj4+noaGB5uZmh/6goCCio6M9Gqs3Wrp0KVu3\nbnVou379OjqdjpCQEMnvc1JYelGr1WRlZfHNN99QUVFBXV0dJpOJhIQEJk2aNNTheZ3o6GgiIiLY\nuHEj165do76+nnXr1tHW1sby5cvJzs6mqqqKoqIibt26xc6dO7l27RorVqwY6tC9Vn85nTx5MpMm\nTWLVqlXU1dVx9uxZCgsLycvLc3pvRjibN28eZWVlHD9+nNu3b3P06FFKSkr48ssvAcmv3VD/v/Pb\nxmq1Ktu2bVMSEhIUo9GorFy5Url3795Qh+W1WlpaFJPJpCQlJSlxcXFKXl6ecuPGDXv/mTNnlPnz\n5yuxsbHKp59+qpw/f34Io/U+2dnZDvdZKEr/OW1tbVW++OILJS4uTpk+fbqyfft25enTp54M22u8\nnF+bzaYcOHBASUtLU2JjY5W0tDTlyJEjDmMkv4oiG30JIYRwK7kUJoQQwq2ksAghhHArKSxCCCHc\nSgqLEEIIt5LCIoQQwq2ksAghhHArKSxiWPvqq69c7nDZ+5WTkwNATk4Oubm5Qxpve3s7qamp/PPP\nPwM+R2NjI1FRUZSXl7/2mAcPHpCamkpDQ8OA5xXDh9zHIoa127dvc//+ffvnmzZtwtfXlw0bNtjb\nRowYQWRkJDdv3sTHx4fx48cPRagArF69mrCwMNauXTvgc3R3d/P7778zduxYQkNDX3vcTz/9xMmT\nJ/nhhx/w8fEZ8Pzi3SeFRYhecnJy8PX15dChQ0MdipOamhqysrKoqKj4XwXBXbq7u5k9ezabNm0i\nLS3N4/ML7yGXwoR4TS9fCouKiqKsrIw1a9YwefJkkpKSKC4u5tGjR6xbt474+HhmzJhBYWEhvf9+\na2trY8OGDUybNg2DwUBmZiZXrlzpd/6SkhKmT5/uUFRSU1PZvXs3W7ZsISEhgfj4eDZv3ozFYsFs\nNpOYmEhiYiLr16+37wfy8qWwY8eOodfrqa6uZsmSJej1elJSUjhw4IDD/Gq1mrS0NPbt2zeYNIph\nQAqLEINgNpvRarXs3r2blJQUdu3axeLFiwkMDKS4uJh58+ZRUlLCqVOnAOjq6iI3N5fffvsNk8lE\nUVERI0eOJDc3l5qamj7n6ezs5PTp0y5XCiUlJbS3t7Nz506WLVtGaWkpn332Gc3NzWzfvp2cnBx+\n/vlnSktL+zx/T08PJpOJBQsW8N1332E0GjGbzVy4cMHhuE8++YTa2lr+/vvvgSVMDAuy0ZcQgxAT\nE8P69euBZ09zPnbsGO+//z4bN24EICkpiRMnTnD16lU+/vhjysvLuXHjBkePHkWv1wMwa9YsFi9e\nzI4dOzh48KDLeaqqqrBarRgMBqc+rVZLYWEhKpWKxMREysrKsFqtfPvtt/j5+ZGcnMzJkye5evVq\nn1+HzWYjPz+fRYsWAWA0Gvnll184c+YM06ZNsx8XGxsLPHsU/Lhx4/5/wsSwICsWIQah9y96rVaL\nr6+vQ5uPjw8jR47k4cOHAFy4cIGwsDAmTpxIT08PPT092Gw2UlJSqKysdNp98IXGxkYAPvzwQ6c+\nvV6PSvXsR1mlUqHVaomJiXHYBXXUqFH2GPpiNBrtH6vVakJDQ7FYLA7HBAcHExISQlNT0yvPJYY3\nWbEIMQhBQUFOba/agra9vZ2WlhZiYmJc9re1tbncabCjowPA5bbN/zeGvrx8bpVKhc1mc3nci3iE\ncEUKixAeFBwczPjx4zGbzS77tVrtK9s7Ojqctsb1tIcPH/YZpxAgl8KE8KipU6dy584ddDoder3e\n/vr111/58ccf8ff3dzlu9OjRALS0tHgyXCcPHjzAYrEQHh4+pHGIt5sUFiE8KCMjg7CwMPLy8igv\nL+fixYsUFBSwZ88exowZ0+eNh1OmTEGj0bzWvyW/SdXV1QAkJycPaRzi7SaFRQgPCgoKorS0lLi4\nOAoKCvj88885d+4cX3/9Nfn5+X2OCwwMZNasWVRUVHgwWmcVFRUYDAZZsYhXkjvvhfASNTU1ZGZm\ncvr0aZdv8L9pFouFmTNnUlBQwNy5cz0+v/AesmIRwksYDAbmzJnjdEe8p5SVlREZGcmcOXOGZH7h\nPWTFIoQXuX//PhkZGXz//fd89NFHHpu3vb2dhQsXenxe4Z2ksAghhHAruRQmhBDCraSwCCGEcCsp\nLEIIIdxKCosQQgi3ksIihBDCrf4FLBNQahkEzlsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ts = linrange(0, 182, 2)\n", + "\n", + "plot(data.insulin, 'go', label='insulin data')\n", + "plot(ts, I(ts), color='green', label='interpolated')\n", + "\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration ($\\mu$U/mL)')\n", + "\n", + "savefig('chap08-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** [Read the documentation](https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp1d.html) of `scipy.interpolate.interp1d`. Pass a keyword argument to `interpolate` to specify one of the other kinds of interpolation, and run the code again to see what it looks like. " + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "G = interpolate(data.glucose)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nhBBVocwTJG/fvk1OTo5+sy+tVkt6ejrh4eEMGTKkXEEdOXKENWvWEBgYSNu2bcnMzMTW1tboPra2\ntmRlZQGQkZFB3bp1jc7b2Nig0Wj09zGVOYv3henqKP/8Jxw4oLrD/vgDPvwQPDxkhJgQonozObFc\nvHiROXPmEBMTU+x5jUZTrsSye/duFi1aRN++fXnrrbcAqFu3Ljk5OUb3y87Opl69egDY2dkVqaXo\nkl79+vXLFEdFtligoJhvZwc7d6pjly+rlows9yKEqM5M/i6+atUq7ty5w7x58+jWrRv+/v4sWrSI\nXr16odFo9AX1stiwYQMLFixg2LBhrFq1St815urqys2bN43ue/PmTX33mIuLC0lJSUXOA0W60Eqr\nIlsshrKy1H4voLYxvnZNtWBkiX0hRHVl8kfmr7/+yvTp0xkzZgx9+/YlIyOD4cOHs3HjRp577jm2\nbdtWpkA+//xzPvzwQ6ZNm8aiRYuMZvD7+voSWmiSR0hICH5+fvrzcXFxRvWUkJAQ7O3t8SxjRbwi\ni/eGUlLAMPf9/jucOqUWrhRCiOrI5MSSnZ1Nq1atAGjVqhUXdOvCA4MGDeLXX381OYgLFy6wdu1a\nXnnlFYYOHUpSUpL+kp6ezsiRIwkLC2PdunVcunSJjz76iNOnTzN69GgAfHx88Pb2ZubMmZw7d45j\nx44RHBxMYGBgkdpMaVV0V5iOqyu0agWGPXZpafDbb/DKK2qdsWXLZPKkEKL6MDmxNG/enGvXrgEq\nsaSmpnL9+nVA1ULu3r1rchAHDhwgLy+PXbt24e/vb3T58ssv8fDwYP369Xz//fe89NJLHD16lI0b\nN+pHp2k0GtavX88jjzzCiBEjePvttxkyZAiTJ082ORadymqxBASArS106QKtW6vXysxU64qdPw9J\nSTIzXwhRvZhcvH/uuedYvXo19vb29OnThzZt2vDRRx8xYcIEvvzyS6O5JKU1a9YsZs2a9cD7GM6l\nKY6TkxOffPKJya9dkspqsRgusW9tDT4+cOwY3Lqljv/+u5pMWaeOzMwXQlQPJieWKVOmcPXqVf75\nz3/Sp08fFixYwJQpU9i3bx9WVlasWbOmIuKsdJVVvAfj5V5ArSt28qTaJCwzUxX0W7aUmflCiOrB\n5MSyevVqJkyYgIeHBwA9e/bk3//+N2fPnqVjx460bNnS7EFWhcpqsRSnZUtITFQLVALExakCv5nn\npQohRIUw+bv4zp07uXfvnlFR3N3dnYCAgBqTVKBqE0tAQMHClLpYZGa+EKK6MDmxeHl5FRn6WxNV\nVvG+OF27wrhx8NRTao6Lg4Oqszg5VW4cQghRFiZ3hXXs2JHNmzfzn//8h8cee6zIzHbZmtg8dHWX\njRvV5mCgivdvvln5sQghhClMTizff/89zs7OZGZmEqH7xDNQU7Ymrszi/YMMHFiQWM6cUcOQ769k\nI4QQFsnkxGK4TXFNVtUtFh1XV3B3VwX83Fw4fRp69Ki6eIQQ4mFM/i4eGhpKWlpasefu3bvHwYMH\nyx2UJbCUFgsYD0U+ebLq4hBCiNIw+SPztdde49KlS8WeK8+e95amKov3hd1fEg2AyEi1KZgQQlgq\ni9jz3hJZSlcYwCOPqDksly6phHfqFDz9dNXGJIQQJbGIPe8tkSW1WEC6w4QQ1YdF7HlviSypxQLg\n6wvffqv2aomJUXu3NG5c1VEJIURRJo8K0+23kpqaSkZGBvmGX+3vK+vmWpbEkor3AA0agKcn/PQT\nxMbCa6+pVoxsYyyEsDQmJ5a4uDgWLFhAeHh4ifeJjIwsV1CWwNJaLKBm4Ove2sREtTilbGMshLA0\nJieWpUuXEhMTw5QpU3BxcdFvH1zTWGJiuXJFtZ7y89XOk9HR0K6dLKcvhLAsJieWsLAwVqxYQb9+\n/SoiHothacV7UHu0ODtDQoK6nZCghh7n5FRtXEIIYcjk5oa9vT0NGzasiFgsiiW2WFxd1bBjwxJW\naipERcHZs1UXlxBCGDI5sQwYMICvv/4arVZbEfFYDEsr3oMq1FtZQYcO0L59QVwuLrB+PezbZ9zS\nEkKIqmByV5iDgwPh4eH8+c9/pnPnztQrtCKirG5ccQy3MbayUvWVW7fAzk4NQ/73v+HyZXjjjYK9\nXIQQorKZnFh27dqFo6Mjubm5nDp1qsh5Wd24YhXexjglRY0Mu3BB3T53DqZOVd1mf/yhfsqQZCFE\nZZLVjUtgicX74jg6wvTp8N13cPAgJCWpIcmNGsETT8D16zIkWQhRucr8XTwhIYG9e/fy2WefkZSU\nxPnz58nOzjZnbFXKErvCSlKnDrz0ktp1Mi5OHbtzB65eLbjPoUNVE5sQovYxucUCEBQUxLZt28jN\nzUWj0fCnP/2JNWvWkJiYyFdffcUjjzxi7jgrXXVpsRjy84OmTQtWP46NVTP2mzSBGzeqNjYhRO1h\ncovls88+Y9u2bcydO5cffvhBPzpsypQp3L17l7Vr15o9yKpQnVoshrp3N15D7MIFyMyE5s2rLiYh\nRO1icmL59ttvmTp1Kq+99hrNDT6tfHx8mDFjBj/99JNZA6wqllq8f5gXXwQPD6hbV93OzVXzXP78\n56qNSwhRe5j8kXnz5k2eeOKJYs+5ublx586dcgdlCapri6VrV5g0Cf7v/1RCdHBQI8MKjQoXQogK\nY3JiadmyJcePHy/2XFhYGO7u7uUOavHixbzzzjtGxwYPHoyHh4fRxfA+t27dYvr06fj5+fHkk08S\nHBxMbm5umWOorokFVHJZuxbeeQe6dAEnJ9i1SyZPCiEqh8nF+9GjR/PXv/6V3NxcnnnmGTQaDXFx\ncYSHh7NlyxbmzJlT5mC0Wi3r1q3j22+/ZfDgwUbHY2JiWL16NT169NAfN5ycOXXqVDQaDdu3bycx\nMZH58+djbW3NzJkzyxRLdSzeF9avH/zyC2RlQXw8/L//B/7+VR2VEKKmMzmxDB06lNu3b7Nhwwa2\nb9+OVqtlxowZ2NjY8PrrrzNixIgyBRIXF8fbb79NdHS0Ue1Gdy4jIwNvb2+cnJyKPDYiIoLw8HAO\nHz6Mu7s7np6ezJ07l+XLlzN58mRsbW1Njqc6t1h0GjSAF16Af/1L3f7uO9Wa0dVfhBCiIpRpuPGE\nCRMYMWIEERER3LlzB3t7e7p06UKjRo3KHMipU6dwdXVlzZo1zJo1y+hcVFQUdnZ2uLm5FfvYsLAw\n3NzcjLrhunXrRlpaGpGRkXh5eZkcT3Ut3hf27LPw449w9666HD6sCvxCCFFRyvSR+c0337B48WJ6\n9uxJ//79cXR0ZOjQoezdu7fMgQwcOJBVq1YV2yKJjo7G0dGROXPm4O/vT//+/fniiy/0u1cmJibi\n7Oxs9Bjd7fj4+DLFUxNaLKBaJwMHFtz+/nu4d6/q4hFC1HwmJ5bt27ezbNkyHBwc9MdcXFzw8/Pj\nnXfe4V+6fhcziomJIT09HX9/f7Zs2cLw4cNZt24d69evByAjI4O6hfp3bGxs0Gg0ZGVllek1DWss\n1bnFAvDkkwXzWLKy1CrIQghRUcq05/2UKVOYPHmy/pi7uzvvvfcezZs3Z/PmzQw0/IpsBkFBQaSn\np9OgQQMAPDw8SElJYePGjUydOhU7O7siy8nk5OSg1WqpX79+mV6zprRYQCXGV16Bjz9Wt0+cUF1k\nLi5VG5cQomYy+bt4QkICXbp0Kfacr68vsbGx5Q6qMGtra31S0fHw8CAtLY2UlBRcXFxISkoyOn/z\n5k0AmhnuimWCmpRYADp2BE9PdT0/H3bvrtp4hBA1l8mJpXnz5oSEhBR7Ljw8vMwf5A8ydOhQVqxY\nYXTszJkzODs706BBA3x9fYmLizOqp4SEhGBvb4+n7tPURDVhuLEhjUa1WnROn4bo6KqLRwhRc5nc\nFfaXv/xFP/mwT58+NGnShNu3b3P06FG2bNnC9OnTzR5knz59WLduHZ06daJLly6EhISwefNm/QRJ\nHx8fvL29mTlzJosWLSI5OZng4GACAwPLNNQ4P19tnAXqA7mGbDFDy5ZqLbF//1stUDlyJPTtqy6y\npL4QwlxMTixjxowhMTGRL7/8ki1btuiPW1lZMWrUKMaOHWvWAAHGjh2LtbU1GzZs4MaNGzRv3pwF\nCxYwZMgQQG0utn79epYsWcKIESOwt7dnyJAhRnUgU9S01oohd3e4eLHgd/z114KVjyW5CCHMoUzz\nWObNm8ekSZP49ddfuXPnDo6OjnTu3JkmTZqYJaht27YZ3dZoNAQGBhIYGFjiY5ycnPjkk0/M8vo1\nrb5i6H//UyPErl1Tt6Oi1O978KAkFiGEeZQpsYD6sPf09NTPJcnJySExMREoe8HcUtTkxBIfr7rE\nkpLU0OP8fFVrSU2FBQvAxqaqIxRCVHcmJ5bY2FjefvttwsPDS7xPZGRkuYKqajVl1n1xXF3VdsVe\nXnD+fMGmYCkpEBQEb76pNgsTQoiyMjmxLFu2jJiYGKZMmYKLiwt1atonLzW7xRIQAJs3g52dSi4x\nMZCYqGovcXHw7rvwxhvQqVNVRyqEqK5MTixhYWGsWLGCfv36VUQ8FqEmzbovTFdHOXRIFe2feQaa\nNYPfflObgqWnq4mU/fqpNcVq2u8vhKh4JicWe3t7GjZsWBGxWIya3GIBlVwKF+qvXIGNG+H2bXX7\n3/+Gy5dV68XevtJDFEJUYyZ/Hx0wYABff/21fq/7mqgmDzcuSatWamOwxx4rOHbunOoau3q1ysIS\nQlRDJrdYHBwcCA8P589//jOdO3c22mwL1GixZcuWmS3AqlDTWywlcXSEadPUvi0HD6pjt27BqlUw\nfDj86U9VG58QonowObHs2rULR0dHcnNzOXXqVJHzmhowTb22JhZQNZWXXoLWreFvf4PMTFV72boV\nfv8dhg2TIclCiAczObEcPXq0IuKwKDV5uHFpeXmprrENGwpm5p84oUaOTZgAjzxStfEJISxXLf3Y\nfLDa3GIx5OwM8+er9cV0rl5VdZdz56ouLiGEZSvzzPuYmBhOnjxJamoqjRs3pkuXLrRt29acsVWZ\n2li8L0nduhAYCG3awLffqvcmLU0NSe7fXy1gWQN6P4UQZmRyYsnPz2fx4sXs2rXLaGSYRqNh4MCB\nvP/++9W+ziItFmMaDfTurZaC2bQJ7txRqz9v2QKffqpm87dsqSZfynpjQgiTE8tnn33G3r17mT17\nNv3796dp06YkJSWxb98+1q1bR9u2bRk3blxFxFppJLEUr00bVXf5/HP4+WfQrdxz4wZkZKilYkCS\nixC1nck1lp07d/Lmm28yduxYmjVrhpWVFS4uLowbN44JEyawc+fOioizUknxvmQNGsDMmWC4zU1m\npto4LDlZzegXQtRuJn9sJiUl4evrW+y5Ll26GO3iWF1Ji+XB6tSBxo3h8cfB+n6bNy9PLWr5v/8V\nbJImhKidTE4s7u7uREREFHsuIiICJyencgdV1WryWmHm4uqqVkH28lILWuokJalFLrOzqy42IUTV\nMvljc/DgwWzcuJEvv/ySmzdvkp+fz82bN/niiy/YtGkTgwYNqog4K5W0WB4uIED9tLcHHx9o1Ejd\ndneHsDAIDi5Yd0wIUbuYXLwfNWoUkZGRrFy5kqCgIP1xrVbLgAEDmDhxolkDrAoy3PjhCq+S/MIL\n6r2Ki1PHY2Phvfdg4kRV9BdC1B4mJxaNRkNQUBDjxo0jNDSUu3fv4uDgQPfu3Wnfvn1FxFjppMVS\nOsWtkvzTT/DNNyo537sHH3wAI0bAU09VTYxCiMpX6sQSGxvLkiVL6NGjB+PHj6ddu3a0a9eO1NRU\nunfvjre3N8HBwTRv3rwi460UkljK7umnwcVFLcGflqbWGfvqKzUU+ZVXpGYlRG1Qqj/zxMRERowY\nQWRkZLH72U+cOJHLly/zl7/8heTkZLMHWdlkuHH5dOgAb78Nht8xDh+G9evVRmJCiJqtVB+bn332\nGba2tuzdu5eBAwcanXNwcGDKlCns3LkTrVbLZ599ViGBViZpsZRf06Ywb54aNaZz7hysXKm2QhZC\n1FylSizHjx9n3LhxxbZWdJo3b84bb7zBTz/9ZLbgqooU783Dzk4V7/v2LTiWmKiSy/nzVReXEKJi\nlborrDQLTD722GMkJCSUO6iqJi0W89FoYOBAGDeuYB+X9HRYtw6OHJHJlELURKVKLI0bNyYpKemh\n97tz5w4NGjQod1BVTRKL+fn5wVtvFcx30Wrhn/+EbdtUgV8IUXOUalSYr68ve/fupa9hn0Yx9u7d\ni4eHh1kCq0pSvK8Yjz6qivobNsDly+rYzz9DaKjaFvn2bTWjX1ZJFqJ6K9XH5muvvcbPP/9McHAw\n2cWs1ZGdnc3q1as5duwYI0aMMHuQlU1aLBWnYUOYPRt69FC3k5LUiLEDB9S8l+vX1ZIwoaFVG6cQ\nouxK1WLx8vJi7ty5BAUFsXfvXnr06IGbmxt5eXncuHGDkJAQbt++zeTJk+ndu3e5g1q8eDF5eXm8\n++67+mMnTpwgODiYy5cv8+ijjzJnzhx69eqlP3/r1i2WLVvGzz//jI2NDYMGDWLmzJlYW5u+l5ms\nFVaxbGxgzBho0UK1YACysiAiQg1RbtlSzeiXVosQ1VOpP3VHjx5Np06d2LJlC4cPHyYrKwsAe3t7\n/P39CQwMxNvbu1zBaLVa1q1bx7fffsvgwYP1x2NiYpg4cSKTJk3i+eefZ9++fUyePJk9e/boZ/tP\nnToVjUbD9u3bSUxMZP78+VhbWzNz5kyT45AWS8XTaKBPH9U6OX9e1Vm0WtViSUxULZm8PHn/haiO\nTPo67+vrq18y/48//sDa2tpsxfq4uDjefvttoqOji8ze37p1K97e3vp1yGbMmEF4eDhbt25l+fLl\nREREEB4ezuHDh3F3d8fT05O5c+eyfPlyJk+ejK3h5iGlIMONK0/Hjmpvl+houHtXHcvNhYQEWLpU\nzdbv3Fm2PxaiOilzR0+TJk3MOgLs1KlTuLq6sm/fPlq0aGF0LiwsjG7duhkd6969O2FhYfrzbm5u\nuLu7689369aNtLQ0InXbHJpAWiyVJyAA6tdXyePxxwuW4Hd3Vy2XTz+FtWsLFrcUQlg+0wsQFWTg\nwIFFZvXrJCQkFJmc6ezsrJ8zk5iYiLOzc5HzAPHx8XgZTv8uBUkslcdwlWQrK3jiCXByUi2YjAx1\n7uJFePddtZDlgAEFQ5aFEJbJYhLLg2RmZhbpzrK1tdXXeTIyMqhbt67ReRsbGzQajf4+ppDhxpWr\nuFWSU1Ph3/+GY8dU16RWWzA0+c9/VvWZQv/kQggLUS0+NuvWrUtOTo7RsezsbOrVqweAnZ1dkWHQ\nOTk5aLVa6tevb/LrSYul6jk4wLBh8Ne/qlaMTnY27NsHixfDL7/IzH0hLFG1SCyurq7cvHnT6NjN\nmzf13WMuLi5FVgbQ3f9B65uVRIr3lsPFBaZMgRkz1PBknTt34Isv1GZiUVFVF58Qoqhq0RXm6+tL\naKEZcyEhIfj5+enPr169mvj4eFxdXfXn7e3t8fT0NPn1fv8dwsPVmlZWVhAYKHMqqtpjj8E776ju\nsO++U5MpQe1U+cEH0Lix+kKQkiKz94WoatWixTJy5EjCwsJYt24dly5d4qOPPuL06dOMHj0aAB8f\nH7y9vZk5cybnzp3j2LFjBAcHExgYaPJQ49BQOHFCbVKl1ar5FDIT3DLUqQM9e8Ly5Spx6Ba1TEqC\nf/0L9u+HmBi1XIz8mwlRdapFi8XDw4P169cTHBzM559/Tps2bdi4caN+xWWNRsP69etZsmQJI0aM\nwN7eniFDhjB58mSTX+vgQeN+e938CZkJbjns7OCll9RulXv3qiHJoFos166pSZYNG6pdLB9/HOzt\nqzZeIaqj0FD1eRgfb3ovgEUmlm3bthU51rt37wcuF+Pk5MQnn3xS7teOj4d69dSCiBqNug5w40a5\nn1qYWZMm8Prravn9mJiC7jGtVtVg/vc/mDNHTcLs2lVtOqabJyOEUH8r6enq8+7OnYKf4eHwww9q\nsnLTpupL2+bN6jGlSS4WmViqkqsrZGaqbhYHh4IPokKLAQgL4uGhWiW3bqkvAHfvqj8Ye3v1B3Hm\njLrY2KiJmF27QqdOBV1pQtREupqjLmEYJg/D64UG3AIqsaSlqespKeDsrFbIKG3PjSSWQgICVGZ+\n9FHj4y+8UDXxiIfT/Zs1baouWVmQnAytWhn/0eTkqD+Y8HD1hcHHR/2ReHrK6D9R9UzpesrNVV+g\nDFsZuoShu33njvEIV1Okpxdcb9Cg4EtYaXtuJLEUYjgT/MYN1VJ54QWpr1iywv9mbdvC5MnqeHKy\n+oMNDVW1F53MTNVV9r//qZapr6+6/+3b6nnK0q8sRFmFhhZ0NeXlqZUnzp1Tk4FdXYsmEF23rznU\nrau6lRs1UqMrGzVSX8Lu3VPn7O0Las2l7bmRxFKM4maCC8tW0r9Z06YqOQQEqKSjSzKG055SU9UM\n/5071VBzJyd1ycszrV9ZCFDdsFlZ6lt/aS8HD8Iff6iWiGEr4/ffoUuXssdib1+QLAonj8aN1aW4\numPz5gX/9w2VtudGEouoNZo3h4ED1XpjV6+qBBMWpr4FgpoTk5WlRpZdu1bwTe6rr8Dbu/JrMuUZ\nlYr1RisAAA7pSURBVGPJLOn3KimWvDy1Vt3DEkJGhqpFGF7PyDC9CyoxsfhVJHR1jsI0GtVFZZgw\nDJOFLnmU9f9seXtuNFpt7V0U49q1azz77LMcOXKkyIrKonbQalW3Q2gorFqllowpTKOB555TkzS9\nvNQSM46OFRvX0aPwySeqcJqermKwsoJnn1VDqG1tVeLTXXS3DY/rrp8+rUb46D48X3hBdf3l5alv\nyHl55btueOxht2Ni4Pjxoh+iTz5ZtK5Z0a5eVV2hUBBnbq4aDFLZC50aFsvr1Cn4t2vWDEaONE4e\nTZqopFKVdcGHfXZKi0XUahoNdOigLrp+7aQk1S2hK/zb26uWzK+/qotGA61bqyTj5aWWnSnPfjHZ\n2aq1dPmy6vq4fFlt11zct9XvvlOtqdJKSoLISBVfnTrqA/2bb1SSdHIqe8xlZfgBaujYsfJ1+Zgz\nlvJ2P4FKCvXqqS0hSnOJioIdO8DaWv076f4/jR1bPVupkliEuO/FF9W3+iZN1AfwvXtqCHPLlsb3\n02rVh8/vv8OePaqO4+WlhjK3b//gb5JaLdy8aZxErl0r2nViOCrHUEldIyWJjS14XcPFVePiqiax\nmOv3MocHxaKbw1a/vvppb1/0ekmXevVUgjBF+/ZqSG9NGTQkiUWI+wr3K3fsWPDHnZioupR++011\n5xh25SQnq0maR46oDxXdHJnoaLUTZt26aqSatbVKJCV9oBlydFQfbo6OatSaRqMSQ5MmMGiQakFl\nZanWjuHPwtezstRjC3c9paerGK2tVSK0sir5uuHt8t5Ho1GtqMLbUTRrBm++Wb5/P1NZW6skDyoe\na2t1efRRtXtpZe9aWpMGDUliEcJASX/czZrB88+rS1qamnB5+rTqOjPc8icjAw4cKOh+0n2gHz36\n4O4nV1fVvda6NbRpo4ZG/+1vRe9nateIg4NqEWm16qLRqIu7OyxaVPrnMZc6dYofbTR6tErIlWnM\nmOJj6d9ftsIuL0ksQpjI3h569FCX3FzVP65rzfzxh3H3kyFd95ODg3ESefRR1YViqEUL9SFc3q4R\n3eTRwh+UVTXh15LmiVlSLDWNJBYhysHaWo3SevxxtTHZ9eswfrzqHktJUcnB3l51aTVsCCtWqJpM\nab4Rm6NrxBI/PC2py8eSYqlJJLEIYSYajWpp9OihEkxeXsFoLFDnqqJgLh+eorJVi/1YhKhOAgLU\nTysr4yK1rDcnaota3WLJuz/+MiEhoYojETWJq6ua4X/smBpN1qwZ9OqljpsyB0UIS6X7zMwzHMNu\noFYnlqT7C0aNGDGiiiMRNd3evVUdgRDml5SUxKPFLJlQq5d0yczM5OzZszg5OWEl66YLIUSp5OXl\nkZSURKdOnbArZhXLWp1YhBBCmJ8U74UQQpiVJBYhhBBmJYlFCCGEWUliEUIIYVaSWArJy8vjgw8+\nwN/fHx8fH6ZNm0ZycnJVh1VtxcTE4OHhUeQSFhYGwIkTJxg4cCCdO3emf//+HDt2rIojrl4WL17M\nO++8Y3TsYe/prVu3mD59On5+fjz55JMEBweTm5tbmWFXG8W9v4MHDy7y/9nwPvL+AlphZO3atdo/\n/elP2hMnTmjPnj2rHTJkiHbYsGFVHVa1tX//fm337t21N2/eNLpkZ2dro6OjtZ06ddJ++umn2piY\nGO3atWu1HTt21EZFRVV12BYvPz9f++GHH2o7dOigffvtt/XHS/Oevvrqq9rhw4drIyMjtT/++KO2\nR48e2jVr1lTFr2GxSnp/8/PztV5eXtrvvvvO6P9zSkqK/j7y/mq1klgMZGVlaX18fLS7du3SH4uL\ni9N26NBBGx4eXoWRVV9r167VjhgxothzixYt0o4cOdLo2MiRI7ULFy6sjNCqrdjYWO3IkSO13bt3\n1/bu3dvog+9h7+mpU6e0HTp00MbGxurP7969W+vj46PNysqqnF/Awj3o/b169WqR98+QvL+KdIUZ\nuHDhAmlpaXTr1k1/rEWLFri5uem7boRpoqOjadOmTbHnwsLCjN5rgO7du8t7/RCnTp3C1dWVffv2\nFdlv/GHvaVhYGG5ubri7u+vPd+vWjbS0NCIjIys++GrgQe9vVFQUdnZ2uLm5FftYeX+VWr2kS2G6\n9W+aNWtmdNzZ2VnWEyuj6OhosrKyGDp0KNevX6d9+/bMmjWLzp07k5CQIO91GQwcOJCBAwcWe+5h\n72liYiLOzs5FzgPEx8fj5eVVARFXLw96f6Ojo3F0dGTOnDmcPHmSxo0bM2jQIEaPHk2dOnXk/b1P\nWiwGMjIyqFOnDjY2NkbHbW1tyTLcJlCUSmZmJnFxcaSmpjJ37lw2bNiAs7MzI0eO5NKlS2RmZmJr\na2v0GHmvy+dh72lGRgZ169Y1Om9jY4NGo5H3vRRiYmJIT0/H39+fLVu2MHz4cNatW8f69esBeX91\npMViwM7Ojvz8fHJzc7G2LnhrsrOzqVevXhVGVj3Z2dkRGhqKra2t/sNu5cqVnDt3jr///e/UrVuX\nnJwco8fIe10+D3tP7ezsyM7ONjqfk5ODVqulfuFtLEURQUFBpKen06BBAwA8PDxISUlh48aNTJ06\nVd7f+6TFYsDV1RUoWPVY5+bNm0W6F0TpODg4GH2DrlOnDu3atSM+Ph5XV1du3rxpdH95r8vnYe+p\ni4tLsf+/oWgXsCjK2tpan1R0PDw8SEtLIyUlRd7f+ySxGPD09MTe3p6TJ0/qj127do3r16/TVbbg\nM9nZs2fp0qULZ8+e1R/Ly8vjwoULtG/fHl9fX0JDQ40eExISgp+fX2WHWmM87D319fUlLi6O+Ph4\no/P29vZ4enpWaqzV0dChQ1mxYoXRsTNnzuDs7EyDBg3k/b1PEosBW1tbhg8fzqpVq/jpp584d+4c\ns2bNolu3bnh7e1d1eNWOp6cnbm5uLF68mNOnTxMdHc2CBQu4ffv/t3e3IU12YRzA/9tKEjObQVL0\nBgoSe8tZbpoZm7kiKMoMMlxtX/oQWLQiCi2wPuRYEpoY0bDXQcOQRp8s0lqEQSYmFQgFZVYjSKcW\nI127nw/RyDZ70bW1x/8PBnqf+76vawfm5Tnb2RnAjh07UFZWho6ODtTV1eHFixeora3F48ePsXPn\nzlinHrd+1adZWVlYtmwZ9u3bh6dPn+Lu3buw2Wwwm80h781QqKKiIjidTly/fh29vb1oamqC3W7H\nnj17ALB/g2L9eed/zejoqHDixAkhJydHUKvVwt69e4UPHz7EOq245fF4BIvFImi1WkGlUglms1no\n6ekJtre1tQnr168X5HK5sHHjRuH+/fsxzDb+lJWVjVlnIQi/7tP3798Lu3fvFlQqlZCXlyfU1NQI\nX758iWbacePH/g0EAkJjY6NgMBgEuVwuGAwG4erVq2OuYf8KAvdjISKiiOJUGBERRRQLCxERRRQL\nCxERRRQLCxERRRQLCxERRRQLCxERRRQLC01phw4dCrvD5fcPo9EIADAajTCZTDHN1+v1Qq/X49Wr\nVxO+R19fHzIzM+FyuX77msHBQej1erx+/XrCcWnq4DoWmtJ6e3vR398f/L2qqgoSiQSVlZXBYzNn\nzkRGRgaeP38OkUiE9PT0WKQKANi/fz/S0tJw8ODBCd9jZGQEz549w6JFi5Camvrb1125cgUtLS24\ndOkSRCLRhOPT/x8LC9F3jEYjJBIJLly4EOtUQnR3d2P79u1wu91/VBAiZWRkBKtXr0ZVVRUMBkPU\n41P84FQY0W/6cSosMzMTTqcTBw4cQFZWFrRaLerr6/Hx40ccPnwY2dnZWLlyJWw2G77//21gYACV\nlZXIzc2FUqlEaWkpHj169Mv4drsdeXl5Y4qKXq9HQ0MDjh8/jpycHGRnZ+PYsWPw+XywWq3QaDTQ\naDSoqKgI7gfy41RYc3MzFAoFOjs7sXXrVigUCuh0OjQ2No6Jn5CQAIPBgLNnz06mG2kKYGEhmgSr\n1QqpVIqGhgbodDqcPn0aJSUlSExMRH19PYqKimC323Hz5k0AwOfPn2EymXDnzh1YLBbU1dUhJSUF\nJpMJ3d3d48b59OkTWltbw44U7HY7vF4vamtrsW3bNjgcDmzevBnv3r1DTU0NjEYjrl27BofDMe79\n/X4/LBYLNmzYgHPnzkGtVsNqtaK9vX3MeevWrcOTJ0/w8uXLiXUYTQnc6ItoEmQyGSoqKgB8/Tbn\n5uZmzJkzB0ePHgUAaLVa3LhxA11dXVi7di1cLhd6enrQ1NQEhUIBACgoKEBJSQlOnTqF8+fPh43T\n0dGB0dFRKJXKkDapVAqbzQaxWAyNRgOn04nR0VGcPHkS06ZNQ35+PlpaWtDV1TXu8wgEAigvL8eW\nLVsAAGq1Grdu3UJbWxtyc3OD58nlcgBfvwp+yZIlf95hNCVwxEI0Cd//oZdKpZBIJGOOiUQipKSk\nYGhoCADQ3t6OtLQ0LF26FH6/H36/H4FAADqdDg8fPgzZffCbvr4+AMCCBQtC2hQKBcTiry9lsVgM\nqVQKmUw2ZhfU2bNnB3MYj1qtDv6ckJCA1NRU+Hy+MeckJydj1qxZePPmzU/vRVMbRyxEk5CUlBRy\n7Gdb0Hq9Xng8HshksrDtAwMDYXcaHB4eBoCw2zb/aQ7j+fHeYrEYgUAg7Hnf8iEKh4WFKIqSk5OR\nnp4Oq9Uatl0qlf70+PDwcMjWuNE2NDQ0bp5EAKfCiKJqxYoVePv2LebOnQuFQhF83L59G5cvX8b0\n6dPDXjd//nwAgMfjiWa6IQYHB+Hz+TBv3ryY5kH/NhYWoigqLi5GWloazGYzXC4XHjx4gOrqapw5\ncwYLFy4cd+Hh8uXLMWPGjN/6WPLf1NnZCQDIz8+PaR70b2NhIYqipKQkOBwOqFQqVFdXY9euXbh3\n7x6OHDmC8vLyca9LTExEQUEB3G53FLMN5Xa7oVQqOWKhn+LKe6I40d3djdLSUrS2toZ9g/9v8/l8\nWLVqFaqrq7FmzZqox6f4wRELUZxQKpUoLCwMWREfLU6nExkZGSgsLIxJfIofHLEQxZH+/n4UFxfj\n4sWLWLx4cdTier1ebNq0KepxKT6xsBARUURxKoyIiCKKhYWIiCKKhYWIiCKKhYWIiCKKhYWIiCKK\nhYWIiCLqPxrYs1zevbe5AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ts = linrange(0, 182, 2)\n", + "\n", + "plot(data.glucose, 'bo', label='insulin data')\n", + "plot(ts, G(ts), color='blue', label='interpolated')\n", + "\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration ($\\mu$U/mL)')\n", + "\n", + "savefig('chap08-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The glucose minimal model\n", + "\n", + "I'll cheat by starting with parameters that fit the data roughly; then we'll see how to improve them." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "k1 = 0.03\n", + "k2 = 0.02\n", + "k3 = 1e-05\n", + "G0 = 290" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To estimate basal levels, we'll use the concentrations at `t=0`." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "Gb = data.glucose[0]\n", + "Ib = data.insulin[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the initial conditions, `X(0)=0` and `G(0)=G0`, where `G0` is one of the parameters we'll choose." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "init = State(G=G0, X=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the system object with all parameters and the interpolation object `I`." + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = System(init=init, \n", + " k1=k1, k2=k2, k3=k3,\n", + " I=I, Gb=Gb, Ib=Ib,\n", + " t0=0, t_end=182, dt=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the update function. Using `unpack` to make the system variables accessible without using dot notation, which makes the translation of the differential equations more readable and checkable." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def update_func(state, t, system):\n", + " \"\"\"Updates the glucose minimal model.\n", + " \n", + " state: State object\n", + " t: time in min\n", + " system: System object\n", + " \n", + " returns: State object\n", + " \"\"\"\n", + " G, X = state\n", + " unpack(system)\n", + " \n", + " dGdt = -k1 * (G - Gb) - X*G\n", + " dXdt = k3 * (I(t) - Ib) - k2 * X\n", + " \n", + " G += dGdt * dt\n", + " X += dXdt * dt\n", + "\n", + " return State(G=G, X=X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before running the simulation, it is always a good idea to test the update function using the initial conditions. In this case we can veryify that the results are at least qualitatively correct." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
G278.12
X0.00
\n", + "
" + ], + "text/plain": [ + "G 278.12\n", + "X 0.00\n", + "dtype: float64" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "update_func(init, 0, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now run simulation is pretty much the same as it always is." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation(system, update_func):\n", + " \"\"\"Runs a simulation of the system.\n", + " \n", + " Adds a TimeFrame to `system` as `results`\n", + " \n", + " system: System object\n", + " update_func: function that updates state\n", + " \"\"\"\n", + " unpack(system)\n", + " \n", + " frame = TimeFrame(columns=init.index)\n", + " frame.loc[t0] = init\n", + " ts = linrange(t0, t_end-dt, dt)\n", + " \n", + " for t in ts:\n", + " frame.loc[t+dt] = update_func(frame.loc[t], t, system)\n", + " \n", + " system.results = frame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's how we run it. `%time` is a Jupyter magic command that runs the function and reports its run time." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 154 ms\n" + ] + } + ], + "source": [ + "%time run_simulation(system, update_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are in a `TimeFrame object` with one column per state variable." + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GX
0290.0000000.000000
2278.1200000.000000
4266.9528000.000300
6256.2954600.002668
8245.0701400.004041
10233.9051380.004680
12223.2016510.005252
14212.9848440.005722
16203.2882070.006093
18194.1334610.006330
20185.5478350.006490
22177.5266060.006610
24170.0480140.006726
26163.0776970.006813
28156.5909970.006872
30150.5632550.006929
32144.9628290.007008
34139.7531910.007108
36134.9012940.007172
38130.3923020.007201
40126.2109250.007197
42122.3416650.007161
44118.7690290.007094
46115.4776980.007003
48112.4517430.006887
50109.6758360.006747
52107.1353080.006585
54104.8161800.006402
56102.7051920.006226
58100.7840580.006057
.........
12486.3906940.001095
12686.5381020.000973
12886.6974210.000858
13086.8667970.000750
13287.0445390.000648
13487.2291050.000552
13687.4190900.000462
13887.6132150.000377
14087.8103140.000298
14288.0093280.000224
14488.2092960.000155
14688.4093430.000089
14888.6090330.000026
15088.807970-0.000036
15289.005799-0.000094
15489.202200-0.000150
15689.396887-0.000204
15889.589604-0.000256
16089.780123-0.000306
16289.968242-0.000354
16490.153784-0.000400
16690.336592-0.000446
16890.516892-0.000492
17090.694895-0.000538
17290.870797-0.000585
17491.044781-0.000631
17691.217018-0.000678
17891.387668-0.000725
18091.556880-0.000772
18291.724792-0.000819
\n", + "

92 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " G X\n", + "0 290.000000 0.000000\n", + "2 278.120000 0.000000\n", + "4 266.952800 0.000300\n", + "6 256.295460 0.002668\n", + "8 245.070140 0.004041\n", + "10 233.905138 0.004680\n", + "12 223.201651 0.005252\n", + "14 212.984844 0.005722\n", + "16 203.288207 0.006093\n", + "18 194.133461 0.006330\n", + "20 185.547835 0.006490\n", + "22 177.526606 0.006610\n", + "24 170.048014 0.006726\n", + "26 163.077697 0.006813\n", + "28 156.590997 0.006872\n", + "30 150.563255 0.006929\n", + "32 144.962829 0.007008\n", + "34 139.753191 0.007108\n", + "36 134.901294 0.007172\n", + "38 130.392302 0.007201\n", + "40 126.210925 0.007197\n", + "42 122.341665 0.007161\n", + "44 118.769029 0.007094\n", + "46 115.477698 0.007003\n", + "48 112.451743 0.006887\n", + "50 109.675836 0.006747\n", + "52 107.135308 0.006585\n", + "54 104.816180 0.006402\n", + "56 102.705192 0.006226\n", + "58 100.784058 0.006057\n", + ".. ... ...\n", + "124 86.390694 0.001095\n", + "126 86.538102 0.000973\n", + "128 86.697421 0.000858\n", + "130 86.866797 0.000750\n", + "132 87.044539 0.000648\n", + "134 87.229105 0.000552\n", + "136 87.419090 0.000462\n", + "138 87.613215 0.000377\n", + "140 87.810314 0.000298\n", + "142 88.009328 0.000224\n", + "144 88.209296 0.000155\n", + "146 88.409343 0.000089\n", + "148 88.609033 0.000026\n", + "150 88.807970 -0.000036\n", + "152 89.005799 -0.000094\n", + "154 89.202200 -0.000150\n", + "156 89.396887 -0.000204\n", + "158 89.589604 -0.000256\n", + "160 89.780123 -0.000306\n", + "162 89.968242 -0.000354\n", + "164 90.153784 -0.000400\n", + "166 90.336592 -0.000446\n", + "168 90.516892 -0.000492\n", + "170 90.694895 -0.000538\n", + "172 90.870797 -0.000585\n", + "174 91.044781 -0.000631\n", + "176 91.217018 -0.000678\n", + "178 91.387668 -0.000725\n", + "180 91.556880 -0.000772\n", + "182 91.724792 -0.000819\n", + "\n", + "[92 rows x 2 columns]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following plot shows the results of the simulation along with the actual glucose data." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nPrpOAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subplot(2, 1, 1)\n", + "\n", + "plot(system.results.G, 'b-', label='simulation')\n", + "plot(data.glucose, style='bo', label='glucose data')\n", + "decorate(ylabel='mg/dL')\n", + "\n", + "subplot(2, 1, 2)\n", + "\n", + "plot(system.results.X, style='g-', label='remote insulin')\n", + "\n", + "decorate(xlabel='Time (min)', \n", + " ylabel='Arbitrary units')\n", + "\n", + "savefig('chap08-fig03.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Numerical solution\n", + "\n", + "We can do the same thing using `odeint`. Instead of an update function, we provide a slope function that just evaluates the right-hand side of the differential equations. We don't have to do the update part; `odeint` does it for us." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes derivatives of the glucose minimal model.\n", + " \n", + " state: State object\n", + " t: time in min\n", + " system: System object\n", + " \n", + " returns: derivatives of G and X\n", + " \"\"\"\n", + " G, X = state\n", + " unpack(system)\n", + " \n", + " dGdt = -k1 * (G - Gb) - X*G\n", + " dXdt = k3 * (I(t) - Ib) - k2 * X\n", + " \n", + " return dGdt, dXdt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can test the slope function with the initial conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-5.9399999999999995, 0.0)" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(init, 0, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `System` object we use with `run_odeint` is almost the same as the one we used with `run_simulation`, but instead of providing `t0`, `t_end`, and `dt`, we provide an array of times where we want to evaluate the solution. In this case, we use `data.index`, so the results are evaluated at the same times as the measurements." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system2 = System(init=init, \n", + " k1=k1, k2=k2, k3=k3,\n", + " I=I, Gb=Gb, Ib=Ib,\n", + " ts=data.index)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`run_odeint` is a wrapper for `scipy.integrate.odeint`" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%psource run_odeint" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 96.2 ms\n" + ] + } + ], + "source": [ + "%time run_odeint(system2, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GX
time
0290.0000000.000000
2278.4419460.000148
4267.2463390.001463
6255.7911540.003294
8244.3850490.004280
10233.3856890.004877
12222.8753910.005391
14212.8831040.005807
16203.4326040.006108
19190.3111060.006378
22178.4307230.006560
27161.1412930.006767
32146.6273080.006957
42124.2722570.007043
52109.1259280.006436
6299.3105540.005632
7293.1024550.004786
8289.4343590.003872
9287.4980850.002986
10286.7126500.002313
12286.8448660.001199
14288.3567580.000232
16290.136930-0.000339
18291.795663-0.000810
\n", + "
" + ], + "text/plain": [ + " G X\n", + "time \n", + "0 290.000000 0.000000\n", + "2 278.441946 0.000148\n", + "4 267.246339 0.001463\n", + "6 255.791154 0.003294\n", + "8 244.385049 0.004280\n", + "10 233.385689 0.004877\n", + "12 222.875391 0.005391\n", + "14 212.883104 0.005807\n", + "16 203.432604 0.006108\n", + "19 190.311106 0.006378\n", + "22 178.430723 0.006560\n", + "27 161.141293 0.006767\n", + "32 146.627308 0.006957\n", + "42 124.272257 0.007043\n", + "52 109.125928 0.006436\n", + "62 99.310554 0.005632\n", + "72 93.102455 0.004786\n", + "82 89.434359 0.003872\n", + "92 87.498085 0.002986\n", + "102 86.712650 0.002313\n", + "122 86.844866 0.001199\n", + "142 88.356758 0.000232\n", + "162 90.136930 -0.000339\n", + "182 91.795663 -0.000810" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system2.results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the results from `run_simulation` and `run_odeint`, we can see that they are not very different." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(system.results.G, 'r-')\n", + "plot(system2.results.G, 'b-')\n", + "plot(data.glucose, 'bo')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The differences are usually less than 1% and always less than 2%." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GX
2-0.115624-100.000000
4-0.109838-79.488129
60.197156-19.008861
80.280333-5.584132
100.222571-4.045820
120.146387-2.574882
140.047791-1.457351
16-0.070980-0.241936
22-0.5067050.770903
32-1.1351760.739019
42-1.5535181.669890
52-1.8241492.322664
62-1.8770011.900503
72-1.7640222.270604
82-1.5745392.091263
92-1.3466862.279411
102-1.0931000.658312
122-0.6766482.068862
142-0.393212-3.390112
162-0.1871464.346125
182-0.0772051.148839
\n", + "
" + ], + "text/plain": [ + " G X\n", + "2 -0.115624 -100.000000\n", + "4 -0.109838 -79.488129\n", + "6 0.197156 -19.008861\n", + "8 0.280333 -5.584132\n", + "10 0.222571 -4.045820\n", + "12 0.146387 -2.574882\n", + "14 0.047791 -1.457351\n", + "16 -0.070980 -0.241936\n", + "22 -0.506705 0.770903\n", + "32 -1.135176 0.739019\n", + "42 -1.553518 1.669890\n", + "52 -1.824149 2.322664\n", + "62 -1.877001 1.900503\n", + "72 -1.764022 2.270604\n", + "82 -1.574539 2.091263\n", + "92 -1.346686 2.279411\n", + "102 -1.093100 0.658312\n", + "122 -0.676648 2.068862\n", + "142 -0.393212 -3.390112\n", + "162 -0.187146 4.346125\n", + "182 -0.077205 1.148839" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff = system.results - system2.results\n", + "percent_diff = diff / system2.results * 100\n", + "percent_diff.dropna()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** What happens to these errors if you run the simulation with a smaller value of `dt`?" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 282 ms\n", + "Wall time: 78.1 ms\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GX
2-0.051625-49.331789
4-0.014801-39.214438
60.113775-9.385110
80.139376-2.763359
100.109220-2.004115
120.069648-1.278311
140.019481-0.726602
16-0.040906-0.126634
19-0.1467940.311986
22-0.2545800.312622
27-0.4199900.516914
32-0.5572270.273386
42-0.7612570.751189
52-0.8944531.082737
62-0.9203890.881158
72-0.8671591.068144
82-0.7751620.981869
92-0.6643371.072775
102-0.5390650.271689
122-0.3354840.952389
142-0.194963-1.890950
162-0.0931302.248757
182-0.0387410.598199
\n", + "
" + ], + "text/plain": [ + " G X\n", + "2 -0.051625 -49.331789\n", + "4 -0.014801 -39.214438\n", + "6 0.113775 -9.385110\n", + "8 0.139376 -2.763359\n", + "10 0.109220 -2.004115\n", + "12 0.069648 -1.278311\n", + "14 0.019481 -0.726602\n", + "16 -0.040906 -0.126634\n", + "19 -0.146794 0.311986\n", + "22 -0.254580 0.312622\n", + "27 -0.419990 0.516914\n", + "32 -0.557227 0.273386\n", + "42 -0.761257 0.751189\n", + "52 -0.894453 1.082737\n", + "62 -0.920389 0.881158\n", + "72 -0.867159 1.068144\n", + "82 -0.775162 0.981869\n", + "92 -0.664337 1.072775\n", + "102 -0.539065 0.271689\n", + "122 -0.335484 0.952389\n", + "142 -0.194963 -1.890950\n", + "162 -0.093130 2.248757\n", + "182 -0.038741 0.598199" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system_flynn = System(init=init, \n", + " k1=k1, k2=k2, k3=k3,\n", + " I=I, Gb=Gb, Ib=Ib,\n", + " t0=0, t_end=182, dt=1)\n", + "\n", + "update_func(init, 0, system_flynn)\n", + "\n", + "%time run_simulation(system_flynn, update_func)\n", + "\n", + "slope_func(init, 0, system_flynn)\n", + "\n", + "system2 = System(init=init, \n", + " k1=k1, k2=k2, k3=k3,\n", + " I=I, Gb=Gb, Ib=Ib,\n", + " ts=data.index)\n", + "\n", + "%psource run_odeint\n", + "\n", + "%time run_odeint(system2, slope_func)\n", + "\n", + "diff = system_flynn.results - system2.results\n", + "percent_diff = diff / system2.results * 100\n", + "percent_diff.dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#We can see that with a smaller dt, the error decreases.\n", + "#This is because the original equation assumes dt to be infinitesimal, in which case the error should be zero.\n", + "#As dt gets smaller, it approaches zero, and so does the error." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optimization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's find the parameters that yield the best fit for the data." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "k1 = 0.03\n", + "k2 = 0.02\n", + "k3 = 1e-05\n", + "G0 = 290" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we'll get basal levels from the initial values." + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "Gb = data.glucose[0]\n", + "Ib = data.insulin[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the slope function is the same." + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes derivatives of the glucose minimal model.\n", + " \n", + " state: State object\n", + " t: time in min\n", + " system: System object\n", + " \n", + " returns: derivatives of G and X\n", + " \"\"\"\n", + " G, X = state\n", + " unpack(system)\n", + " \n", + " dGdt = -k1 * (G - Gb) - X*G\n", + " dXdt = k3 * (I(t) - Ib) - k2 * X\n", + " \n", + " return dGdt, dXdt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`make_system` takes the parameters and `DataFrame` and returns a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(G0, k1, k2, k3, data):\n", + " \"\"\"Makes a System object with the given parameters.\n", + " \n", + " G0: initial blood glucose\n", + " k1: rate parameter\n", + " k2: rate parameter\n", + " k3: rate parameter\n", + " data: DataFrame\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " init = State(G=G0, X=0)\n", + " system = System(init=init, \n", + " k1=k1, k2=k2, k3=k3,\n", + " Gb=Gb, Ib=Ib, \n", + " I=interpolate(data.insulin),\n", + " ts=data.index)\n", + " return system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`error_func` takes the parameters and actual data, makes a `System` object and runs it, then compares the results of the simulation to the data. It returns an array of errors." + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error_func(params, data):\n", + " \"\"\"Computes an array of errors to be minimized.\n", + " \n", + " params: sequence of parameters\n", + " data: DataFrame of values to be matched\n", + " \n", + " returns: array of errors\n", + " \"\"\"\n", + " print(params)\n", + " \n", + " # make a System with the given parameters\n", + " system = make_system(*params, data)\n", + " \n", + " # solve the ODE\n", + " run_odeint(system, slope_func)\n", + " \n", + " # compute the difference between the model\n", + " # results and actual data\n", + " error = system.results.G - data.glucose\n", + " return error.loc[8:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we call `error_func`, we provide a sequence of parameters as a single object." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(290, 0.03, 0.02, 1e-05)" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params = G0, k1, k2, k3\n", + "params" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how that works:" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(290, 0.03, 0.02, 1e-05)\n" + ] + }, + { + "data": { + "text/plain": [ + "time\n", + "8 4.385049\n", + "10 17.385689\n", + "12 11.875391\n", + "14 7.883104\n", + "16 7.432604\n", + "19 -1.688894\n", + "22 6.430723\n", + "27 -1.858707\n", + "32 4.627308\n", + "42 0.272257\n", + "52 4.125928\n", + "62 7.310554\n", + "72 9.102455\n", + "82 12.434359\n", + "92 5.498085\n", + "102 5.712650\n", + "122 4.844866\n", + "142 6.356758\n", + "162 5.136930\n", + "182 1.795663\n", + "dtype: float64" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "error_func(params, data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`fit_leastsq` is a wrapper for `scipy.optimize.leastsq`" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%psource fit_leastsq" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we call it." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 2.90000000e+02 3.00000000e-02 2.00000000e-02 1.00000000e-05]\n", + "[ 2.90000000e+02 3.00000000e-02 2.00000000e-02 1.00000000e-05]\n", + "[ 2.90000000e+02 3.00000000e-02 2.00000000e-02 1.00000000e-05]\n", + "[ 2.90000004e+02 3.00000000e-02 2.00000000e-02 1.00000000e-05]\n", + "[ 2.90000000e+02 3.00000004e-02 2.00000000e-02 1.00000000e-05]\n", + "[ 2.90000000e+02 3.00000000e-02 2.00000003e-02 1.00000000e-05]\n", + "[ 2.90000000e+02 3.00000000e-02 2.00000000e-02 1.00000001e-05]\n", + "[ 2.78224727e+02 2.85801825e-02 1.61589429e-02 1.19289840e-05]\n", + "[ 2.78224731e+02 2.85801825e-02 1.61589429e-02 1.19289840e-05]\n", + "[ 2.78224727e+02 2.85801829e-02 1.61589429e-02 1.19289840e-05]\n", + "[ 2.78224727e+02 2.85801825e-02 1.61589432e-02 1.19289840e-05]\n", + "[ 2.78224727e+02 2.85801825e-02 1.61589429e-02 1.19289842e-05]\n", + "[ 2.71951893e+02 2.68943464e-02 1.28042303e-02 1.03928810e-05]\n", + "[ 2.71951897e+02 2.68943464e-02 1.28042303e-02 1.03928810e-05]\n", + "[ 2.71951893e+02 2.68943468e-02 1.28042303e-02 1.03928810e-05]\n", + "[ 2.71951893e+02 2.68943464e-02 1.28042305e-02 1.03928810e-05]\n", + "[ 2.71951893e+02 2.68943464e-02 1.28042303e-02 1.03928811e-05]\n", + "[ 2.71443394e+02 2.69030677e-02 1.26482637e-02 1.04193915e-05]\n", + "[ 2.71443398e+02 2.69030677e-02 1.26482637e-02 1.04193915e-05]\n", + "[ 2.71443394e+02 2.69030681e-02 1.26482637e-02 1.04193915e-05]\n", + "[ 2.71443394e+02 2.69030677e-02 1.26482639e-02 1.04193915e-05]\n", + "[ 2.71443394e+02 2.69030677e-02 1.26482637e-02 1.04193917e-05]\n", + "[ 2.71712741e+02 2.69019185e-02 1.24302337e-02 1.05307739e-05]\n", + "[ 2.71712745e+02 2.69019185e-02 1.24302337e-02 1.05307739e-05]\n", + "[ 2.71712741e+02 2.69019189e-02 1.24302337e-02 1.05307739e-05]\n", + "[ 2.71712741e+02 2.69019185e-02 1.24302339e-02 1.05307739e-05]\n", + "[ 2.71712741e+02 2.69019185e-02 1.24302337e-02 1.05307740e-05]\n", + "[ 2.71841622e+02 2.68015619e-02 1.21756047e-02 1.07056217e-05]\n", + "[ 2.71841626e+02 2.68015619e-02 1.21756047e-02 1.07056217e-05]\n", + "[ 2.71841622e+02 2.68015623e-02 1.21756047e-02 1.07056217e-05]\n", + "[ 2.71841622e+02 2.68015619e-02 1.21756049e-02 1.07056217e-05]\n", + "[ 2.71841622e+02 2.68015619e-02 1.21756047e-02 1.07056219e-05]\n", + "[ 2.71722563e+02 2.67317277e-02 1.18108500e-02 1.06903270e-05]\n", + "[ 2.71827386e+02 2.67803404e-02 1.19921543e-02 1.06990976e-05]\n", + "[ 2.71859602e+02 2.67976625e-02 1.20801103e-02 1.07032846e-05]\n", + "[ 2.71863092e+02 2.68026355e-02 1.21300274e-02 1.07056075e-05]\n", + "[ 2.71857182e+02 2.68027413e-02 1.21534664e-02 1.07066721e-05]\n", + "[ 2.71857186e+02 2.68027413e-02 1.21534664e-02 1.07066721e-05]\n", + "[ 2.71857182e+02 2.68027417e-02 1.21534664e-02 1.07066721e-05]\n", + "[ 2.71857182e+02 2.68027413e-02 1.21534666e-02 1.07066721e-05]\n", + "[ 2.71857182e+02 2.68027413e-02 1.21534664e-02 1.07066723e-05]\n", + "[ 2.71898905e+02 2.68013322e-02 1.21544446e-02 1.07084438e-05]\n", + "[ 2.71898909e+02 2.68013322e-02 1.21544446e-02 1.07084438e-05]\n", + "[ 2.71898905e+02 2.68013326e-02 1.21544446e-02 1.07084438e-05]\n", + "[ 2.71898905e+02 2.68013322e-02 1.21544448e-02 1.07084438e-05]\n", + "[ 2.71898905e+02 2.68013322e-02 1.21544446e-02 1.07084439e-05]\n", + "[ 2.71898433e+02 2.67985448e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.71898437e+02 2.67985448e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.71898433e+02 2.67985452e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.71898433e+02 2.67985448e-02 1.21544444e-02 1.07084478e-05]\n", + "[ 2.71898433e+02 2.67985448e-02 1.21544443e-02 1.07084480e-05]\n", + "[ 2.71916930e+02 2.67987318e-02 1.21542838e-02 1.07088289e-05]\n", + "[ 2.71907097e+02 2.67986221e-02 1.21543757e-02 1.07086105e-05]\n", + "[ 2.71902239e+02 2.67985768e-02 1.21544154e-02 1.07085162e-05]\n", + "[ 2.71900248e+02 2.67985597e-02 1.21544307e-02 1.07084799e-05]\n", + "[ 2.71899292e+02 2.67985518e-02 1.21544379e-02 1.07084629e-05]\n", + "[ 2.71898837e+02 2.67985481e-02 1.21544413e-02 1.07084549e-05]\n", + "[ 2.71898624e+02 2.67985464e-02 1.21544429e-02 1.07084511e-05]\n", + "[ 2.71898523e+02 2.67985456e-02 1.21544436e-02 1.07084494e-05]\n", + "[ 2.71898476e+02 2.67985452e-02 1.21544440e-02 1.07084486e-05]\n", + "[ 2.71898453e+02 2.67985450e-02 1.21544441e-02 1.07084482e-05]\n", + "modsim.py: scipy.optimize.leastsq ran successfully\n", + " and returned the following message:\n", + "The relative error between two consecutive iterates is at most 0.000000\n" + ] + } + ], + "source": [ + "best_params = fit_leastsq(error_func, params, data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have `best_params`, we can use it to make a `System` object and run it.\n", + "\n", + "We have to use the scatter operator, `*`, to make `best_params` behave like four separate parameters, rather than a single object." + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = make_system(*best_params, data)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the results, along with the data. The first few points of the model don't fit the data, but we don't expect them to." + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nWrZsSWJiotGM5F988QWxsbFG1VLlHnjgAb7++mtycnKwt7cH4MyZM4byc+fOcfjwYXbu3Ennzp0N\n7y09Pd2QeG69R2/YsIEnn3ySefPmGbZt3bq1xnprVZlA3nrrLUNwOTk5LF++nJ49exIaGoqTkxPZ\n2dkcPHiQH374gblz55p0saSkJF588UVat25N165dAcjLyyM+Pp4RI0ZQWlrKsVu6dkRHRxseIwMD\nA1m+fDnJycm4uroaym1tbfHx8bnzdy+EMElQUM0njFv16NGDLl26MHv2bObNm4derzfciCv7cOvl\n5YWNjQ1r165lxowZXL58mY0bNxrKbWxseOqpp1ixYgUODg60adOGTZs2kZOTY2hnGDFiBJGRkYwZ\nM4Zr167x+uuv06dPHzw9PTl9+jSRkZE0bdqUwMBArl69yrlz5xg3bhwAYWFhLF26FDc3N3r27Mmv\nv/7K0qVLmTJlSqXvLzQ0lPfff5/Zs2fz0ksvkZqayqpVqwzlTk5OaDQa9u3bh729Penp6axYsYKS\nkhJDTUx59dfp06dp3749Li4unDhxgvPnz2NlZcU333zD3r17ad68efX8Um6lmGDatGnKq6++WmnZ\n4sWLlaefftqU0yg6nU556qmnlGHDhim//vqrcvbsWeWZZ55R+vfvr9y4cUM5f/680rlzZ+W9995T\n4uLilJUrVypdu3ZV4uLiFEVRFL1er4wdO1Z54oknlDNnzig//PCD0qNHD2XVqlV/ed2EhATFy8tL\nSUhIMClOIUT9kJSUpEydOlXp1q2b8vDDDyuffvqp4u3trezevVtRFEWZM2eO0f3nP//5j/LYY48p\nnTt3VkaNGqX85z//Uby8vJTk5GRFURSluLhYWbJkifLQQw8pvr6+yoQJE5QzZ84Yjv/xxx+VkSNH\nKp07d1Yefvhh5a233lIKCgoM5evXr1f69++vdO7cWendu7eyfPlyRavVGso3bdqkDBgwQOncubPy\n6KOPKmvXrlX0en2V7+/y5cvKM888o3Tr1k3p37+/snXrVqN71a5du5R+/fopXbp0Ufr166csX75c\nmTVrlvL3v/9dURRFycvLUyZMmKB07txZ+eSTT5QrV64oEydOVHx9fZUePXoozz33nLJt2zbF29tb\nuXbt2h3//G937zQpgfj6+iqHDx+utOzw4cNKt27dTA4oMzNTmTNnjtKjRw/F399fmT59upKSkmIo\n//7775XBgwcrXbp0UYYNG6YcOXLE6Pi0tDRl2rRpiq+vr/LQQw8p77zzjqLT6f7ympJAhGh4MjMz\nle+//14pLS01bEtLS1O8vLyUY8eO1WFkjcft7p0mrYnu4ODAb7/9xsMPP1yh7OjRo3fU/uDo6MjS\npUurLO/bty99+/atstzJyYn333/f5OsJIRomMzMzZs6cyaRJkxg9ejT5+fm89957tGnTRrrs1xMm\nJZAxY8bw/vvvU1RURL9+/XBwcCAzM5OoqCi2bNnCK6+8UtNxCiEaGXt7e9auXcvKlSv59NNPMTc3\np0ePHnzyySe37VElaodJCSQsLIy8vDw2bNjAunXrDNstLS2ZOXMm48ePr7EA68qxY2UjcJOTy/rB\nh4bWfiOiEI1dz5496dmzZ12HIapgUgJRqVTMmTOHadOmcerUKXJycnBwcMDf3/++HH9RPvdPufK5\nf0CSiBBClKsygYwYMYLevXvTq1cvAgICUKvVNG3alF69etVmfHWirub+EUKIhqTKBPLss8/y448/\n8sILL1BSUkLPnj3p1asXvXr1uu8H7dXV3D9CCNGQVJlABg8ebJiQ68yZM/z000/s2LGD1157jQ4d\nOtCrVy969+5NYGAgZmZmtRZwbairuX+EEKIhMakNpEuXLnTp0oWwsDByc3M5fPgwP/30Ey+++CJF\nRUX06NGDNWvW1HSstaau5v4RQoiGxKQEcjM7Ozujp5OzZ8/y008/VXtgdamu5v4RQoiGxKQEcuv8\nVDdTqVT06dOHGzduGOamvx/Uxdw/QgjRkJiUQCZOnGg0eZlSyUyQarWa4cOHs3jx4vuuTUQIIURF\nJiWQDz74gBdffJERI0YwePBgWrRoQWZmJvv37+ezzz5j1qxZaDQaVq1ahbu7O+Hh4TUdtxBCiDpm\nUgJZt24dEydO5KWXXjJsa9euHd27d8fW1pbvvvuOzz77DJVKxaZNmySBCCFEI6A2ZafY2Fh69OhR\naVlgYCCnT58GyubjL1+/XAghxP3NpATi6urK999/X2nZ999/bxhYmJ6eTrNmzaovulqg1yvo9DWz\nWpcQQtzPTKrC+sc//sH8+fPJzMxkwIABODo6kpWVxYEDB9i7dy/z58/n6tWrvPfee4SEhNR0zNUm\nITWP3T/9jl0TC0b06YCttczwKYQQpjJ5One1Ws3777/PvpsmivLw8GDJkiU8/vjj7NmzBw8PD2bN\nmlVjwVa3q6l56BWF7Lxijsem0ifAo65DEkKIBsPkgYSjRo1i1KhRXL16laysLFq2bGlYlxxgyJAh\nDBkypEaCrCmtWzYl5kIaAOfiMwl8oCVN5ClECCFMYnICKSkp4erVq+Tm5gKQnJxM8k2zDgYEBFR/\ndDXMw7kJLs1tScnMR6dXiLmQRi8/97oOSwghGgSTEsjPP//MrFmzyMrKqlCmKAoqlYrY2NhqD66m\nqVQqgh5oye7DvwNw9vdMAn2csbGSpxAhhLgdkxLIW2+9hYODA6+99lqD62V1O61dmuLsYEPa9QJK\ndXpiLqbzcDeZdlcIIW7HpARy9epVPvjgAx5++OGajqfWqVQqgjq1ZM+ReADOxGXg7+UkTyFCCHEb\nJo0D8fLyMmrvuN+0dbWjRTNrALQ6Pb9eSq/jiIQQov4z6Qnk1VdfZdasWZiZmdGtWzesra0r7OPW\ngFdbUqlUdH+gJVE/Xwbgt7gM/L2csbK849nuhRCi0TDpDqkoCiUlJbzyyitV7tMQG9Fv5uluT3M7\nKzJzi9CWlrWF9OzqevsDhRCikTIpgbz22mtYWloye/ZsmjdvXtMx1YmythAXon65DMBvcen4eznJ\nU4gQQlTBpLvj5cuXWb16NX369KnpeOqUp4c8hQghhKlMakTv0KED2dnZNR1LnSt/Cin3W1w6RcWl\ndRiREELUXyY9gcydO5e5c+eiKArdunXD1ta2wj7lM/LeTkZGBsuWLePIkSMUFRXh6+vLnDlz8PLy\nAmD06NGG6eHLjR49mjfffBOAzMxMFi1axJEjRzA3N2fkyJFERESg0VRPVZM8hQghhGlMuutOnTqV\nkpIS5s6da7SM7c1MaUTX6/X885//RFEUPvjgA2xsbFi9ejWTJk1iz549NGvWjLi4OJYvX260/sjN\nvb6mT5+OSqVi69atpKamMnfuXDQaDREREaa8lduqrC1El+vEwQMakpPB1RVCQ2W9dCGEMCmBLFiw\noFoudv78eWJiYti7dy+enp4ALFu2jODgYA4dOkRAQACFhYX4+fnh5ORU4fiYmBhOnDjB/v37adWq\nFT4+PsyePZvFixcTHh6OhYVFtcR581NI3HlLoj4vxtmx7Ed17RqsX1+2nyQRIURjZlICGTFiRLVc\nzNXVlY8++oh27doZtpU/0eTk5HDx4kWsrKxwd698QsPjx4/j7u5Oq1atDNuCg4PJz88nNjYWX1/f\naolTpVLRvVNLvv3lCudO2ZGXW0TzZtaYqf9sMoqKkgQihGjcqmxEnzdvHtevX7+jk2VkZPzlWBEH\nBwf69u2L+qYb8ZYtWygqKiIkJIRLly7RtGlTZs2aRUhICEOHDmXjxo3o9XoAUlNTcXZ2Njpn+evq\nHinv6d6MZk0syb1ujl6vcD232Kg8KalaLyeEEA1OlQnEw8OD0NBQIiMjOXv27F+e5Pz587z++usM\nGTLE6Ongdg4cOMC7777L5MmT8fT0JC4ujoKCAkJCQtiwYQNPPfUUq1atYs2aNQAUFhZiaWlpdA5z\nc3NUKhXFxcWVXeKuqdUqAnycsXPQApCZU4he+XPp2wY88F4IIapFlVVYzz//PI8++ijvvPMOo0aN\nws3Nja5du+Lh4YG1tTV5eXmkpKRw8uRJMjIy6NOnD59++ik+Pj4mXXjnzp3Mnz+fwYMH869//QuA\nyMhICgoKsLOzA8Db25u8vDzWrl3L9OnTsbKyoqSkxOg8Wq0WRVGwsbG5259BlbxbOxD4YDwH99lT\nqtOTnVeEo11Zg/6gQdV+OSGEaFD+sg3Ey8uLjz76iIsXL7J7926io6M5evQoeXl5ODg44O7uztix\nYxk4cCDe3t4mX/TDDz9k5cqVTJgwgXnz5hnaQTQajSF5lPP29iY/P5+8vDxcXFw4dOiQUXlaWtmK\ngqZ2I74TZmZqRv3NjsLiTGJP2ZGZW0iXB6wYHKqS9g8hRKNnUiO6l5cXL730UrVc8OOPP2blypXM\nmDGD8PBwo7KxY8fSrVs35s2bZ9h2+vRpnJ2dsbOzIzAwkOXLl5OcnGxYTjc6OhpbW1uTn3zuVKf2\njnh3SqVNh1QA+geDTxvHGrmWEEI0JCaNRK8u58+fZ8WKFYwaNYqxY8eSnp5u+CooKGDAgAFs27aN\nXbt2cfXqVb766ivWr1/PjBkzAPD398fPz4+IiAjOnj3LoUOHWLZsGZMnT662Lry3MteY4ef1Z5fi\nk+fTUG5qCxFCiMaqVmcK3Lt3Lzqdjh07drBjxw6jspkzZxIWFoZGo+HDDz8kKSkJNzc3Xn75ZcaM\nGQOUda9ds2YNCxcuZPz48dja2jJmzJgKTzLVrYtnc05eSKNEqyMrt4j/25fPb8ebyMBCIUSjplIa\nwcfpxMRE+vXrx4EDB/Dw8Lircxz5LYmYC2lcibPm1JGWtHOzNxqVP2WKJBEhxP3ldvfOWq3Cash8\nOzphplZx7pQdhcWlFBQZT7IYFVVHgQkhRB2RBGKiJtbm+LR1JPd62VrpGdkFRuUysFAI0djcURvI\nhQsXKCwVAKaZAAAgAElEQVQsNIwMv1lAQEC1BVVf+Xs5Y+9wnewsDTcKtRQWl2L9x4JTMrBQCNHY\nmJRAzpw5w8yZM0mq5GO2oiioVKoGv6StKZo1tWTAQD1f/b+y1xnZhbRq2RSQgYVCiMbHpATy5ptv\nolarWbJkCS4uLkZzWTU240Y0IzEtgdhTduRchxbO1jw+TCMN6EKIRsekBHL27Fneffdd+vfvX9Px\n1HvOjjaEPKwxDCzs0r6QoEDT5/8SQoj7hUmPEo6OjpiZmdV0LA1GoM+fMwLHXs7iRqG2DqMRQoi6\nYVICGTduHOvWraOwsLCm42kQ3J2a4NK8bFlfnV7h1MW0Oo5ICCFqn0lVWNeuXSMuLo6QkBC8vLyM\nlpiFshHiGzZsqJEA6yOVSkWgjzN7jsQDcPZ/mQT6tDT0yBJCiMbApDtefHy80WSFWq1U2bR1taNF\nM2sysgvR6vT8dimdB7u41nVYQghRa0xKIFu2bKnpOBqc8qeQb3+5AsBv/8vA39sZC3NpKxJCNA53\nVOcSFxfH0aNHuXHjBg4ODgQGBtK+ffuaiq3eK1v2NoXsG8UUl+g4879MAnycb3+gEELcB0xKIHq9\nngULFrBjxw6jqcxVKhXDhw9nyZIlRhMLNhbly94ePJ4AQMzFNLp2aIG5pvGOkxFCNB4m3enWrVvH\nrl27eOmllzh06BBnz57lhx9+4MUXX2TPnj2sX7++puOst7xbO9DEumx+rMLiUs7+nlHHEQkhRO0w\nKYFs376d559/nilTptCyZUvMzMxwcXHh2WefZerUqWzfvr2m46y3zMzUBPr8uZzuyQvplOoqzhUm\nhBD3G5MSSHp6OoGBgZWWBQQEkJycXK1BNTSd2jkankIKirSc/T2zjiMSQoiaZ1IbSKtWrYiJiaFn\nz54VymJiYnBycqrkqMbj5Ek1R//TltOxhdg5aElLyKXzzOZozKQtRAhx/zLpDjd69GjWrl3Lpk2b\nSEtLQ6/Xk5aWxsaNG/noo48YOXJkTcdZbx07BuvXg7bQBjO1mpwscw7us+fL/8up69CEEKJGmfQE\nMnHiRGJjY1m6dCmRkZGG7YqiMGzYMMLCwmoswPpu376yf9UqFS2aWZOSmQ/A9p1anhiux0yeQoQQ\n9ymTEoiZmRmRkZFMmTKFY8eOkZubi52dHUFBQXTs2LGmY6zXbm7+cbCzIiO7kFKdnvQ0Nefis+ja\noUXdBSeEEDXojgYSduzYsdEnjFu5usK1a2Xfq1Uq1Dobrv6uQ6WCBa/lM3u6np495ClECHH/qTKB\nPPbYY7z33nv4+PgwcODA2w4U/Pbbb6s9uIYgNLSsDQQgLQ2SEy0pLSnGybWI9DQ176wsZs5L1rLg\nlBDivlNlAgkICMDW1tbwfWMcaW6K8sQQFQUnT0KTJircWqkoVkoBSM8uZM9eS4KC5ClECHF/qTKB\nLFmyxPD90qVL//Iken3jHjgXFFT2lZQEej0oigUXr6op1enR6fSciS0CbOo6TCGEqFYmfSzu168f\n58+fr7Tst99+46GHHqrWoBoq1z9mc1epVDg7/JkwStV5lGh1dRSVEELUjCqfQL755htKS8uqYa5d\nu8Z3331XaRL5+eefKSkpqbkIG5Cb20OaNbUkPbuQrEwVigLjJhbj28mG0FCkPUQIcV+oMoGcPXuW\njRs3AmWfqD/44INK91OpVDzzzDMmXzAjI4Nly5Zx5MgRioqK8PX1Zc6cOXh5eQFw+PBhli1bRnx8\nPG3atGHWrFn06dPHcHxmZiaLFi3iyJEjmJubM3LkSCIiItBo6n41wJvbQ5KSVDg7WpOVWYRKBenX\nC7l61Yr169VG+wohRENV5V33xRdfZNKkSSiKQt++ffnwww/p1KmT0T5qtZomTZpUWOK2Knq9nn/+\n858oisIHH3yAjY0Nq1evZtKkSezZs4fMzEzCwsKYNm0aAwcOZPfu3YSHh/P1118bug9Pnz4dlUrF\n1q1bSU1NZe7cuWg0GiIiIu7hx1B9yttDAF5/3ZL064WUaEGvV0jPLsSluS1RUZJAhBANX5UJxNzc\nnJYty2aZPXDgAM7Ozpibm9/Txc6fP09MTAx79+7F09MTgGXLlhEcHMyhQ4c4efIkfn5+hpHtL7zw\nAidOnGDz5s0sXryYmJgYTpw4wf79+2nVqhU+Pj7Mnj2bxYsXEx4ejoWFxT3FV91SUlS0dLQhITUP\ngKzcIprbW5GUJKsWCiEaPpPqfdzd3Tl9+jTHjh1Dq9UaFpXS6/UUFhZy/Phxvvjii9uex9XVlY8+\n+oh27doZtpV3D87JyeH48eOEhoYaHfPggw+yZ88eAI4fP467uzutWrUylAcHB5Ofn09sbCy+vr6m\nvJ1a4+oKOp0F1pYaCotLURSFtOsFPOjftK5DE0KIe2ZSAvniiy9YtGiR0WqE5dRqNSEhISZdzMHB\ngb59+xpt27JlC0VFRYSEhPDee+8ZnnrKOTs7k5KSAkBqairOzs4VygGSk5PrXQIpa1RX0dLRlsvJ\nZZMrZueV0COkCLCq2+CEEOIemdSNd8uWLfTu3Zvo6GieeeYZxo4dy6lTp3jvvfewtLRk2LBhd3Xx\nAwcO8O677zJ58mQ8PT0pKiqqUA1lYWFBcXExAIWFhVhaWhqVm5ubo1KpDPvUJ0FBMGUKeHc0p6lt\n2ftSFIUV75WwaFHZTL5CCNFQmZRAEhISeOqpp7C3t6dLly6cOHECKysrHnvsMZ577jk2b958xxfe\nuXMnM2bMIDQ0lH/9618AWFpaotVqjfYrKSkxNNJbWVlV6DJcXqVmY1M/B+oFBcH8+fDiDAtAhUoF\nufklXIzTsn69JBEhRMNlUgIxNzfHyqqsyqVNmzZcuXLFcKMPDAzk8uXLd3TRDz/8kJdffpknn3yS\nt99+G7W6LAxXV1fS0tKM9k1LSzNUa7m4uJCenl6hHKhQ9VXf/HzYimZN/ny6Ss3KR1EUoqLqMCgh\nhLgHJiUQHx8ffvjhBwDatWuHXq/n119/BcraJe7Exx9/zMqVK5kxYwbz5883mmMrMDCQY7d8JI+O\njqZ79+6G8oSEBKMldKOjo7G1tcXHx+eO4qhtycng5GBjeL+FxaXk3CgmKamOAxNCiLtkUiP6008/\nzcyZM8nLy+ONN96gX79+zJ49m9DQUP7v//6vyvXSb3X+/HlWrFjBqFGjGDt2rNHThK2tLRMmTGDU\nqFGsWrWKIUOG8M033/Drr7+ycOFCAPz9/fHz8yMiIoL58+cbBiVOnjy53nXhvVXZtO9mNLcvWzME\nIDWrALsmFixapCY5uWwfGakuhGgoTHoCeeyxx3j//fdp06YNAIsWLaJt27Z89tlntGvXjgULFph0\nsb1796LT6dixYwchISFGX5s2bcLb25s1a9bw7bff8vjjj3Pw4EHWrl1rGDOiUqlYs2YNzZs3Z/z4\n8bzyyiuMGTOG8PDwu3z7tae8d7JTM2vDWunXs9Rc+r2Ya9fKJmG8dg1pFxFCNBgqpbK+ubfYs2cP\nPXv2xNHRsTZiqnaJiYn069ePAwcO4OHhUWdxHDtWNs3J2fNF3Ci9zvVMc9RqFR08mmFh/ufgQg+P\nsoZ3IYSoS7e7d5r0BDJv3rwKbRPizpX3yPpiqyV/fzYPtbqsW29qVoHRftIuIoRoCExKIC1btqSw\nsLCmY2k0VCoVIX5u2DmU9WTLzS8mv/DP7stubnUVmRBCmM6kRvRx48bx1ltv8euvv+Lj41PpmIuh\nQ4dWe3D3M7cWTXjssVy+/GMGmJSsfNq72aNSqRg0qG5jE0IIU5iUQMpXJ6xqviuVSiUJ5C5MeqIF\nSRlXOHOiCTnXwapJIRPH2UgvLCFEg2BSAjlw4EBNx9Eo2dla8PjgJni0KxtLY22poauvDyb+WoQQ\nok6Z1AZy7NgxbGxscHd3r/BlYWHBt99+W9Nx3rcCfZxpYl02TX5hcSm/nE6+zRFCCFE/mJRAXn75\nZRISEioti42NZcWKFdUaVGNirjGjl5+74fWZ3zNJzsivw4iEEMI0VdaVTJ06lbi4OKCsq2lVCzZl\nZmbSunXrmouwEWjvbk87Vzvik3MB+OFEAmMHeGOmVt3mSCGEqDtVJpCwsDC2b98OwPbt2+natWuF\ngYRqtRo7OztGjBhRs1He51QqFb38PUhMO49Wpyczt4hfL6YT4ON8+4OFEKKOVJlA/Pz88PPzA0Cn\n0zFt2jSjlQBF9bKztSC4swtHfisbRXj0XAqeHvbYN7G8zZFCCFE3TGoDWbJkiSSPWuDb0YkWzcrW\nPinV6TkUk1jpKpBCCFEfmNRfNCsri8jISH744QcKCgoqvamdOXOm2oNrbNRqFY8EtmL7wUsoisLV\nlDziErPp2MqhrkMTQogKTEogixYt4vvvv2fIkCG4uLgYFoAS1a+low1d2jfnm2/zOXfKjh2fKPQK\n0jF0qJkMMBRC1CsmJZAff/zRsIKgqHmaYleOHcqhVKcH9Bz/rYCUlCaASpKIEKLeMOlRQqPRGNYC\nETXvwH/McGtha3idm19Mzo1iWf5WCFGvmJRA+vfvz+7du2s6FvGH5GRoamtJs6ZWf27LzOfyFV0d\nRiWEEMZMqsLy9fXlnXfeITExEX9/f6ytrY3KVSoVU6dOrZEAG6Oy5W/BtbkNBUVaSrQ69HqFAn02\ner0jahlgKISoB0xKIK+99hoAR48e5ejRoxXKJYFUr9DQsqVt1Wo17k5NiE/KBRQ8OmZw6qJOBhgK\nIeoFkxLI+fPnazoOcZPyhvKoKEhKMqezjwV2bkm06VDIL2eL8GjZBGeHimuyCCFEbbrjecNLS0u5\nfv06Dg4OaDQy7XhNCQr6M5Ho9E3Y+b2K1CzQ6xX2H73K2P5exJxUs29fWZuJq2vZk4v00hJC1BaT\nB3ScOXOGf/zjHwQEBNCnTx8uXLjAnDlzeP/992syPgGYqVUMCG6DuVnZrysrt4gNX6Szfn1ZW4le\nX/bv+vUgS9cLIWqLSQnk5MmTPPXUU2RnZ/Pss88aRqK7urqyZs0aPv/88xoNUkCzppaE3DTt+793\n68krKKmwn3T1FULUFpMSyPLly3nooYfYsWMHYWFhhgTywgsv8PTTT1e51K2oXp3aOdLOzR6A3Ovm\nJKXf+GOw4Z+SkuoiMiFEY2RSAjl79izjxo0Dynpc3eyRRx6pcrEpUb1UKhWPBHpgbanBzkFLqU5P\ncsYNo7nJ3NzqMEAhRKNiUgKxtbUlMzOz0rLU1FRsbW0rLRPVz8bKnH5BrenkV7b4VG5+Cdk3ig3l\ngwbVVWRCiMbGpATy6KOPsnLlSs6dO2fYplKpSE9P56OPPqJPnz41FqCoqK2rHUMes6Xno5k0c9SS\nmpWPYwstU6ZILywhRO0xqR/urFmzOH36NKNHj6Zly5YAzJ49m2vXruHs7MysWbPu6uILFixAp9Px\n5ptvGraNHj2a06dPG+03evRowz6ZmZksWrSII0eOYG5uzsiRI4mIiGh0XYof7uZGYtoF2nRIBcoW\npOrSzYu76JkthBB3xaS7TbNmzfjqq6/YtWsXv/zyC+3ataNJkyY8+eSTjBw5EhubOxvUpigKq1at\nYtu2bYwePdpoe1xcHMuXL6dHjx6G7TdPnTJ9+nRUKhVbt24lNTWVuXPnotFoiIiIuKMYGjpzjZrQ\nnm3ZfvAS2lI9ufklRP18mWG9PWUtdSFErTD546qFhQU9e/Zk7NixQNkiU/Hx8XecPBISEnjllVe4\ndOkSbre0+CYkJFBYWIifnx9OTk4Vjo2JieHEiRPs37+fVq1a4ePjw+zZs1m8eDHh4eFYWFjcUSwN\nXXN7awY+2Ia9/72MoihcS7/B4VPX6BPgUdehCSEaAZPaQLKyshg7diz/+Mc/DNtOnz7N+PHjmTRp\nEnl5eSZf8OTJk7i6urJ79248PIxvdBcvXsTKygp3d/dKjz1+/Dju7u5Gy+sGBweTn59PbGysyTHc\nT9q52fNgZxfD69P/y+DM/zLqMCIhRGNhUgKJjIwkIyOD119/3bCtd+/ebN26lcTERN59912TLzh8\n+HDefvvtSp8wLl26RNOmTZk1axYhISEMHTqUjRs3oteXjXVITU3F2dl4IsHy18nJySbHcL8J9HGm\nY6tmhtc/xlzjWvqNOoxICNEYmJRAfvrpJ2bPnk3Pnj0N21QqFd27dyciIoL9+/dXSzBxcXEUFBQQ\nEhLChg0beOqpp1i1ahVr1qwBoLCwEEtLS6NjzM3NUalUFBcXV3bKRkGlUvFo99Y4NStrK9IrClE/\nXyY3v+JIdSGEqC4mtYEUFxdXuHGXs7W1vaMqrL8SGRlJQUEBdnZ2AHh7e5OXl8fatWuZPn06VlZW\nlJQY3xS1Wi2KotxxW8z9xlyjZvDD7fhy/0UKi0spLC5l73/jGfVIB8w1ZnUdnhDiPmTSE4ivry+b\nN2+mtLTUaLtOp2Pr1q107dq1WoLRaDSG5FHO29ub/Px88vLycHFxIT093ag8LS0NwNC9uDFramPB\n4IfaGRacysguZP+xBKOR6kIIUV1MegKZMWMGEydOZMCAAfTu3ZvmzZuTlZXFTz/9RHp6Op9++mm1\nBDN27Fi6devGvHnzDNtOnz6Ns7MzdnZ2BAYGsnz5cpKTk3F1dQUgOjoaW1tbfHx8qiWGhs61hS19\nAzw4eLxsepn/JWZzLNaK4E4utzlSCCHujEkJxM/Pj23btrF27VoOHDhAdnY2TZo0ITAwkFWrVtG5\nc+dqCWbAgAGsWrWKLl26EBAQQHR0NOvXr+fVV18FwN/fHz8/PyIiIpg/fz4ZGRksW7aMyZMnN7ou\nvH+lU7vmZGQXsjsqn3On7Nj2sYaAboVMeMJaRqoLIaqNyeNAOnXqxKpVq2oyFqZMmYJGo+HDDz8k\nKSkJNzc3Xn75ZcaMGQOUNRavWbOGhQsXMn78eGxtbRkzZgzh4eE1GldDZFnizm8/55JfqAXgxG8F\npKeoiZhpKUlECFEtVModVJBfuHCBwsJCQ7famwUEBFRrYNUpMTGRfv36ceDAgQpjT+5XixbB1at6\nfk/KoUSr+2Oriu6+Nqxcbv2XxwohBNz+3mnSE8iZM2eYOXMmSX8sNlGec1QqFYqioFKpGu1Avvoq\nORnMzNS0dbXjcnLuH0lE4cRv+Zy/UohPG8e6DlEI0cCZlEDefPNN1Go1S5YswcXFBbXa5JVwRR1x\ndS1b5tZcY0ZbVzuuJOdSrNVh76DlwLE0dDqFzu2b13WYQogGzKQEcvbsWd5991369+9f0/GIahIa\nWrZGOvyRRNzsuJycxwN+mSiKwvcnEtDrFbp2aFG3gQohGiyTEoijoyNmZjIYrSEpbyiPiipb5rat\nhxmTJzfhWmEq6dfLyg7FJKLT6/Hzcq76REIIUQWTEsi4ceNYt24dPXr0MJpaXdRvQUG3LjCloajE\nk90//U5qVgEAh39NolSn0P0BGYgphLgzJiWQa9euERcXR0hICF5eXhWSiEqlYsOGDTUSoKheVhYa\nhvf25JvD8SRllE24+MuZZEp1eh7s7FJhzXshhKiKSQkkPj7eaKS3VqutsYBEzbMwN2Nor3bsOXKZ\nxLSyecyOx6ai0ys81NVVkogQwiQmJZAtW7bUdByilplrzPhbSDv2/fcyV1JyAYi5kIZOp6eXn7sk\nESHEbd3RAtpxcXEcPXqUGzdu4ODgQGBgIO3bt6+p2EQN05ipGfxQW6J+uUJ8Ug4Av8VloNMr9A3w\nkCQihPhLJiUQvV7PggUL2LFjh9HMriqViuHDh7NkyRK52TRQZmZqBvVsy3+irxCXmA3A2d8z0ekU\nHu3eyjCzrxBC3MqkBLJu3Tp27drFSy+9xNChQ2nRogXp6ens3r2bVatW4enpybPPPlvTsYoaYqZW\nMfDBNpipVVy4WtbH9/yVLHR6hf7BrTGTJCKEqIRJCWT79u08//zzTJkyxbDNxcWFZ599luLiYrZv\n3y4JpIFTq1X0C2qNmZmKc/FZAFxKuI5er8dB3YbvvlOTnFw2wj009NbuwUKIxsikOUnS09MJDAys\ntCwgIKBRr0d+P1GrVTwS2Iqunn+OTj94qISFS26QkKig15dNj7J+PRw7VoeBCiHqBZMSSKtWrYiJ\niam0LCYmBicnp2oNStQdlUpFb393/LzKfqfnTtlxo6CEqym56PV/tn9FRdVVhEKI+sKkBDJ69GjW\nrl3Lpk2bSEtLQ6/Xk5aWxsaNG/noo48YOXJkTccpapFKpeLhbm4E+rQk97o5APmFWq6k5KL7Yyr/\nPyZmFkI0Yia1gUycOJHY2FiWLl1KZGSkYbuiKAwbNoywsLAaC1DUDZVKRc+urnTyyuPshWIACoq0\nxCVk4+7cBJ+OsgKkEI2dSQnEzMyMyMhInn32WY4dO0ZOTg52dnYEBQXRsWPHmo5R1KEpTzdl6XIN\nqVn5AJTq9FxJzqX3AB3a0haYa2SSTSEaK5PHgajVajp06ECHDh0ASEhIoFWrVjUanKh7QUEwd5Y1\nn22DU2cLaGJXwgN+uWitCtn2nyz6BbXGtYVtXYcphKgDf9kGcvXqVZ555hnWly8s8YcbN24waNAg\nxo8fz7Vr12o0QFH3goJg5XJr9n5tR9iMItp0KAQg+0YxO3+I47+/JVGqq7jMsRDi/lZlAklNTWX8\n+PHExsbSsmXFqb7DwsKIj4/nySefJCMjo0aDFPWDjZU5gx9qS/+g1liYl1VdKYrCyQtpfLX/ImnX\nC+o4QiFEbaoygaxbtw4LCwt27drF8OHDjcqaNGnCP//5T7Zv346iKKxbt67GAxX1g0qlwqetI08N\n9KZVy6aG7Zm5RWw/cImj51LQ3dTdVwhx/6oygfz00088++yzlT59lHNzc+Mf//gHP/74Y40EJ+qv\nJjYWDOvVnj7+Hpiblf0Z6RWFo2dT2HHwElm5RXUcoRCipv1lFZanp+dtT/DAAw+QkpJSrUGJhkGl\nUtG1QwueGOCNa/M/G9LTrhew7T8XiLmQZjT4UAhxf6kygTg4OJCenn7bE2RnZ2NnZ1etQYmGpVlT\nS0b07cBD3dwMEy/q9ApHfkti16H/kXOjuI4jFELUhCoTSGBgILt27brtCXbt2oW3t3e1BiUaHrVa\nRYC3M2P7e+Hk8OeSx0kZN/h//7nAmf9lGC0FIIRo+KpMIH//+985cuQIy5Yto6SkpEJ5SUkJy5cv\n59ChQ4wfP75GgxQNR3N7a0Y/6kVwJxfUf6wRoy3V88PJRN5dd41580sJC4NFi2RCRiEauioHEvr6\n+jJ79mwiIyPZtWsXPXr0wN3dHZ1OR1JSEtHR0Vy/fp3w8HD69u1biyGL+s5MrSK4swttXe3Yf+wq\nWblFXImz5ueDVqjVObg42qLTWbJ+fVmCkanhhWiY/nIk+tNPP02XLl3YsGED+/fvp7i4rC7b1taW\nkJAQJk+ejJ+f311ffMGCBeh0Ot58803DtsOHD7Ns2TLi4+Np06YNs2bNok+fPobyzMxMFi1axJEj\nRzA3N2fkyJFERESg0dzR6ryiFjg72jC2vxfRZ1OI2v5HTy29QlLGDdKzC2lub8WePZYEBZk0p6cQ\nop657V03MDDQsBZIVlYWGo3mnhvNFUVh1apVbNu2jdGjRxu2x8XFERYWxrRp0xg4cCC7d+8mPDyc\nr7/+2jDn1vTp01GpVGzdupXU1FTmzp2LRqMhIiLinmISNUNjpubhbm442mjJz72BtlQHgLZUR0pm\nPhnRBfx8uphuHZywtTav42iFEHfijj76OTo63nPySEhI4O9//ztffPEFbm5uRmWbN2/Gz8+PsLAw\nPD09eeGFF/D392fz5s1A2dojJ06cYOnSpfj4+NCnTx9mz57Nli1bKm2nEfVHh3bmdPCwx9nBBjOz\nP//smtiVcOJ8Gpv3nuPg8asyfkSIBqTW6w5OnjyJq6sru3fvxsPDw6js+PHjBAcHG2178MEHOX78\nuKHc3d3daBLH4OBg8vPziY2NrfngxV0LDQW1Wo2Tgw1erR1wbWGLhbkZD/jlAmXdfs/FZ/H5t+fZ\nc/h3rqXfkF5bQtRztd5wMHz48ApTo5RLSUmpMPLd2dnZMFAxNTUVZ2fnCuUAycnJ+Pr61kDEojqU\nN5RHRUFSkopunawZONCKFu4qYi6mk5KZb9g3PjmX+ORcWjra4O/lTHt3e9R/jC8RQtQf9arluaio\nCAsL44WKLCwsDI33hYWFWFpaGpWbm5ujUqkM+4j6Kyjo1h5XKqAZnh7NSM7I5+SFNC4n5xqePFKz\nCoj65TJ2thb4eznj09YRc400uAtRX9SrBGJpaYlWqzXaVlJSgrV12cA0KyurCm0dWq0WRVGwsbGp\ntThF9XNtYcuQFu24nlfEqYvpnL+cZZiUMTe/hEMxiUSfTaFbhxZ08WyOjZU0uAtR1+rVxzlXV1fS\n0tKMtqWlpRmqtVxcXCpMr1K+/19N+igaDoemVjwS2Iqnh3Si+wMtsbT4c8XDopJSjp5LYfPeWH44\nkUBqVoG0kwhRh+rVE0hgYCDHbhmeHB0dTffu3Q3ly5cvJzk5GVdXV0O5ra0tPj4+d3y9Y8dg3z5I\nTgZX17KGXhnUVj/YWJnTo4srgT7OnIvP4tdL6eTmlz19/u+CJbu3aci9XkBzpxsMHKgndIA1Hs5N\nZIldIWpRvUogEyZMYNSoUaxatYohQ4bwzTff8Ouvv7Jw4UIA/P398fPzIyIigvnz55ORkcGyZcuY\nPHlyhbaT2zl2DG5eaPHatT9fSxKpP8w1Zvh2dKKrZwviErPZvjuXnw/+OfNvRpqaz7eqiU9Kob1X\nER7OTWnrZkc7Vzua2NzZ34QQ4s7UqwTi7e3NmjVrWLZsGR9//DHt27dn7dq1hmnlVSoVa9asYeHC\nhYwfPx5bW1vGjBlDeHj4HV9r377Kt0dFSQKpj9RqFV6tHdBmNKOtq5bsvGLyCrXo/lhKN/aUHW06\nFHIlJZcrKbkcAlo0s6atqx1tXe1o6WiDSiU9uYS41b3UxNRpAtmyZUuFbX379v3LubWcnJx4//33\n7wUQjkwAABIkSURBVPnaycmVb09KuudTixqUkqLC1toCW2sLFEWhsLiUvIISbuRXrLrKyC4kI7uQ\n47Gp2FiZ09a1KW1c7Gjt0lSquoTg3mti6tUTSG1ydS37Yd3qlsHxop65+femUqmwsTLHxsqcQA9b\n/j7YlsvJOVxOyuVa+g2jpXULirSci8/iXHwWZmoV7s5NaOdqT2uXptjZWsjTiWiU7rUmptEmkNBQ\n48xbbtCg2o9FmO6vfm92thZ06+BEtw5OlGh1JKTmcTk5l8vJuRQWlxr21ekVrqbkcTUlDwArCw0t\nmlnR3N6aFvbWtGhmjaOdpdGUK0JUl7rsvKMoCjq9QolWR4lWz+/xarQ6BUUBG0uN4W/e1JqYRptA\njEdGlz15DBok7R/1nam/NwtzMzw9ygYp6vUKadcLiE8qSyaZOYVcibPm3Ck7cq+bY+egpZNfLm06\n/NlFXK1S4WBnRQt7K1o0K0sqze2tZPyJuCf3UmWk0+kp/uPGX1KqQ1uqp0Sro1irQ6stL9NRUqpH\n+8f3xVo92lKd0XE3LzOdXtCSnKyyv2kztZqOrZthplabXBPTaBMIVDYyWjQEd/p7U6tVuDS3xaW5\nLT27uvL9j1oO7ShFV1iCSlVKTpY5Px9sDmTSpkMhAHpFITOnkMycQi5cvW44l62V+R8JpeyJxamZ\nNfZNLGWqFVEpRVEo1enRlpbd4LfvVJNfqEKv16PTK+j1CjpF4eNPdRSY5RgSQMlNyaD8+5urZKtL\nJ7/cP/72QafXo9MpmKlNr4lp1AlENE4//WCOo705jvbWKIqCtlRPUUkpuUmWePbJID270DDm5Fb5\nRVryU7RcSck1bNOYqbH//+3de1BU5f8H8Pc5e2GRW0sGIZimKDbc5CILihqaZP3GKEJ/ikvqzHf6\noxl1IsfJvMxYzQSRkeRX6xfZlUZG86s5zXesyQvZzxTkqwR5AX+TXOKmggLuspfz/P7Yi3vYRdYV\ndsH9vGbOsDzP2T3PfliezznPnnMefx/4+Urh7yuDn0IGP1/zopDBf5wMCrn0nknmYbwmaTS9p/tp\ny8BOXz9gj9+0h28uM/+0dPR6mw5fbxCgMwiii13/91wEHF372tkF/HH1+gi9ezGe5+Ajk0Am5ZGc\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(system.results.G, label='simulation')\n", + "plot(data.glucose, style='bo', label='glucose data')\n", + "\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration (mg/dL)')\n", + "\n", + "savefig('chap08-fig04.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Since we don't expect the first few points to agree, it's probably better not to make them part of the optimization process. We can ignore them by leaving them out of the `Series` returned by `error_func`. Modify the last line of `error_func` to return `errors.loc[8:]`, which includes only the elements of the `Series` from `t=8` and up.\n", + "\n", + "Does that improve the quality of the fit? Does it change the best parameters by much?\n", + "\n", + "Note: You can read more about this use of `loc` [in the Pandas documentation](https://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-integer)." + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error_func(params, data):\n", + " \"\"\"Computes an array of errors to be minimized.\n", + " \n", + " params: sequence of parameters\n", + " data: DataFrame of values to be matched\n", + " \n", + " returns: array of errors\n", + " \"\"\"\n", + " print(params)\n", + " \n", + " # make a System with the given parameters\n", + " system = make_system(*params, data)\n", + " \n", + " # solve the ODE\n", + " run_odeint(system, slope_func)\n", + " \n", + " # compute the difference between the model\n", + " # results and actual data\n", + " error = system.results.G - data.glucose\n", + " return error.loc[8:]" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(290, 0.026798544833976808, 0.012154444266554253, 1.0708447822446748e-05)\n", + "[ 2.90000000e+02 2.67985448e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.90000000e+02 2.67985448e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.90000000e+02 2.67985448e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.90000004e+02 2.67985448e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.90000000e+02 2.67985452e-02 1.21544443e-02 1.07084478e-05]\n", + "[ 2.90000000e+02 2.67985448e-02 1.21544444e-02 1.07084478e-05]\n", + "[ 2.90000000e+02 2.67985448e-02 1.21544443e-02 1.07084480e-05]\n", + "[ 2.71475095e+02 2.60559800e-02 1.17121613e-02 1.18616762e-05]\n", + "[ 2.71475099e+02 2.60559800e-02 1.17121613e-02 1.18616762e-05]\n", + "[ 2.71475095e+02 2.60559804e-02 1.17121613e-02 1.18616762e-05]\n", + "[ 2.71475095e+02 2.60559800e-02 1.17121614e-02 1.18616762e-05]\n", + "[ 2.71475095e+02 2.60559800e-02 1.17121613e-02 1.18616764e-05]\n", + "[ 2.71737577e+02 2.59844937e-02 1.17123461e-02 1.18850353e-05]\n", + "[ 2.71737581e+02 2.59844937e-02 1.17123461e-02 1.18850353e-05]\n", + "[ 2.71737577e+02 2.59844941e-02 1.17123461e-02 1.18850353e-05]\n", + "[ 2.71737577e+02 2.59844937e-02 1.17123463e-02 1.18850353e-05]\n", + "[ 2.71737577e+02 2.59844937e-02 1.17123461e-02 1.18850355e-05]\n", + "[ 2.71785411e+02 2.59507650e-02 1.17151047e-02 1.18752386e-05]\n", + "[ 2.71785415e+02 2.59507650e-02 1.17151047e-02 1.18752386e-05]\n", + "[ 2.71785411e+02 2.59507653e-02 1.17151047e-02 1.18752386e-05]\n", + "[ 2.71785411e+02 2.59507650e-02 1.17151048e-02 1.18752386e-05]\n", + "[ 2.71785411e+02 2.59507650e-02 1.17151047e-02 1.18752388e-05]\n", + "[ 2.72113260e+02 2.60186670e-02 1.17222048e-02 1.18654262e-05]\n", + "[ 2.72113264e+02 2.60186670e-02 1.17222048e-02 1.18654262e-05]\n", + "[ 2.72113260e+02 2.60186674e-02 1.17222048e-02 1.18654262e-05]\n", + "[ 2.72113260e+02 2.60186670e-02 1.17222050e-02 1.18654262e-05]\n", + "[ 2.72113260e+02 2.60186670e-02 1.17222048e-02 1.18654263e-05]\n", + "[ 2.72144771e+02 2.60041951e-02 1.17244971e-02 1.18491964e-05]\n", + "[ 2.72144775e+02 2.60041951e-02 1.17244971e-02 1.18491964e-05]\n", + "[ 2.72144771e+02 2.60041955e-02 1.17244971e-02 1.18491964e-05]\n", + "[ 2.72144771e+02 2.60041951e-02 1.17244973e-02 1.18491964e-05]\n", + "[ 2.72144771e+02 2.60041951e-02 1.17244971e-02 1.18491965e-05]\n", + "[ 2.72074649e+02 2.59815095e-02 1.17311059e-02 1.18197967e-05]\n", + "[ 2.72074653e+02 2.59815095e-02 1.17311059e-02 1.18197967e-05]\n", + "[ 2.72074649e+02 2.59815099e-02 1.17311059e-02 1.18197967e-05]\n", + "[ 2.72074649e+02 2.59815095e-02 1.17311061e-02 1.18197967e-05]\n", + "[ 2.72074649e+02 2.59815095e-02 1.17311059e-02 1.18197969e-05]\n", + "[ 2.71464044e+02 2.59759460e-02 1.17259563e-02 1.18251342e-05]\n", + "[ 2.71464044e+02 2.59759460e-02 1.17259563e-02 1.18251342e-05]\n", + "[ 2.71767913e+02 2.59810708e-02 1.17337377e-02 1.18235256e-05]\n", + "[ 2.71927053e+02 2.59836312e-02 1.17323934e-02 1.18226706e-05]\n", + "[ 2.72014683e+02 2.59849671e-02 1.17316175e-02 1.18221520e-05]\n", + "[ 2.72068214e+02 2.59845093e-02 1.17311455e-02 1.18212304e-05]\n", + "[ 2.72072652e+02 2.59830116e-02 1.17311148e-02 1.18204970e-05]\n", + "[ 2.72073768e+02 2.59822606e-02 1.17311093e-02 1.18201452e-05]\n", + "[ 2.72074191e+02 2.59819180e-02 1.17311076e-02 1.18199859e-05]\n", + "[ 2.72074445e+02 2.59816966e-02 1.17311066e-02 1.18198832e-05]\n", + "[ 2.72074546e+02 2.59816048e-02 1.17311063e-02 1.18198408e-05]\n", + "[ 2.72074598e+02 2.59815575e-02 1.17311061e-02 1.18198189e-05]\n", + "[ 2.72074623e+02 2.59815335e-02 1.17311060e-02 1.18198078e-05]\n", + "[ 2.72074637e+02 2.59815213e-02 1.17311060e-02 1.18198021e-05]\n", + "[ 2.72074641e+02 2.59815213e-02 1.17311060e-02 1.18198021e-05]\n", + "[ 2.72074637e+02 2.59815217e-02 1.17311060e-02 1.18198021e-05]\n", + "[ 2.72074637e+02 2.59815213e-02 1.17311061e-02 1.18198021e-05]\n", + "[ 2.72074637e+02 2.59815213e-02 1.17311060e-02 1.18198023e-05]\n", + "[ 2.72074632e+02 2.59815199e-02 1.17311045e-02 1.18198016e-05]\n", + "[ 2.72074636e+02 2.59815199e-02 1.17311045e-02 1.18198016e-05]\n", + "[ 2.72074632e+02 2.59815203e-02 1.17311045e-02 1.18198016e-05]\n", + "[ 2.72074632e+02 2.59815199e-02 1.17311047e-02 1.18198016e-05]\n", + "[ 2.72074632e+02 2.59815199e-02 1.17311045e-02 1.18198018e-05]\n", + "[ 2.72074620e+02 2.59815194e-02 1.17311049e-02 1.18198013e-05]\n", + "modsim.py: scipy.optimize.leastsq ran successfully\n", + " and returned the following message:\n", + "The relative error between two consecutive iterates is at most 0.000000\n", + "Saving figure to file chap08-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nw4fTunVrEhISjGYk//zzz4mJiTGqlqrw4IMP8tVXX5Gbm4u9vT0Ap0+fNpSfPXuWw4cPs3PnTjp3\n7mx4b+np6YbE8+d79IYNG3jmmWeYO3euYdvWrVtrrbdWtQnknXfeMQSXm5vLsmXL6NmzJyEhITg6\nOpKTk8P333/Pjz/+yJw5c0y6WFJSEq+88gpt27ala9euAOTl5REXF8ewYcMoKysj6k9dOyIjIw2P\nkQEBASxbtozk5GRcXFwM5VqtFm9v7zt/90IIkwQG1n7C+LMePXrQpUsXZs2axdy5c9HpdIYbcVUf\nbj09PbGxsWHt2rVMnz6dy5cvs3HjRkO5jY0Nzz77LMuXL8fBwYF27dqxadMmcnNzDe0Mw4YNIyIi\nglGjRpGYmMibb75Jnz598PDw4NSpU0RERNCsWTMCAgK4evUqZ8+eZcyYMQCEhoayZMkSXF1d6dmz\nJ7/++itLlixh0qRJVb6/kJAQ1qxZw6xZs3j11VdJTU1l5cqVhnJHR0fUajX79u3D3t6e9PR0li9f\nTklJiaEmpqL669SpU3To0AFnZ2eOHz/OuXPnsLKy4ptvvmHv3r20bNmyZv4of6aYYOrUqco///nP\nKssWLVqkPPfcc6acRikvL1eeffZZZciQIcqvv/6qnDlzRnn++eeV/v37K/n5+cq5c+eUzp07K++/\n/74SGxurrFixQunatasSGxurKIqi6HQ6ZfTo0cpf//pX5fTp08qPP/6o9OjRQ1m5cuUtrxsfH694\nenoq8fHxJsUphGgYkpKSlClTpijdunVTHn30UeWTTz5RvLy8lN27dyuKoiizZ882uv/85z//UZ58\n8kmlc+fOyogRI5T//Oc/iqenp5KcnKwoiqIUFxcrixcvVh555BHFx8dHGTdunHL69GnD8T/99JMy\nfPhwpXPnzsqjjz6qvPPOO8r169cN5evXr1f69++vdO7cWendu7eybNkypbS01FC+adMmZcCAAUrn\nzp2Vxx9/XFm7dq2i0+mqfX+XL19Wnn/+eaVbt25K//79la1btxrdq3bt2qX069dP6dKli9KvXz9l\n2bJlysyZM5W//e1viqIoSl5enjJu3Dilc+fOyr///W/lypUryvjx4xUfHx+lR48eygsvvKBs27ZN\n8fLyUhITE+/493+7e6dJCcTHx0c5fPhwlWWHDx9WunXrZnJAmZmZyuzZs5UePXoofn5+yrRp05SU\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "params = G0, k1, k2, k3\n", + "params\n", + "\n", + "error_func(params, data)\n", + "\n", + "%psource fit_leastsq\n", + "\n", + "best_params = fit_leastsq(error_func, params, data)\n", + "\n", + "system = make_system(*best_params, data)\n", + "run_odeint(system, slope_func)\n", + "\n", + "plot(system.results.G, label='simulation')\n", + "plot(data.glucose, style='bo', label='glucose data')\n", + "\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration (mg/dL)')\n", + "\n", + "savefig('chap08-fig04.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** How sensitive are the results to the starting guess for the parameters. If you try different values for the starting guess, do we get the same values for the best parameters?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Interpreting parameters\n", + "\n", + "Based on the parameters of the model, we can estimate glucose effectiveness and insulin sensitivity." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def indices(G0, k1, k2, k3):\n", + " \"\"\"Compute glucose effectiveness and insulin sensitivity.\n", + " \n", + " G0: initial blood glucose\n", + " k1: rate parameter\n", + " k2: rate parameter\n", + " k3: rate parameter\n", + " data: DataFrame\n", + " \n", + " returns: State object containing S_G and S_I\n", + " \"\"\"\n", + " return State(S_G=k1, S_I=k3/k2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
S_G0.025982
S_I0.001008
\n", + "
" + ], + "text/plain": [ + "S_G 0.025982\n", + "S_I 0.001008\n", + "dtype: float64" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "indices(*best_params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The insulin minimal model\n", + "\n", + "In addition to the glucose minimal mode, Pacini and Bergman present an insulin minimal model, in which the concentration of insulin, $I$, is governed by this differential equation:\n", + "\n", + "$ \\frac{dI}{dt} = -k I(t) + \\gamma (G(t) - G_T) t $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a version of `make_system` that takes the parameters of this model, `I0`, `k`, `gamma`, and `G_T` as parameters, along with a `DataFrame` containing the measurements, and returns a `System` object suitable for use with `run_simulation` or `run_odeint`.\n", + "\n", + "Use it to make a `System` object with the following parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(I0, k, gamma, G_T, data):\n", + " init = State(I=I0)\n", + " system = System(init=init, \n", + " k=k, G_T=G_T, k3=k3,\n", + " Gb=Gb, Ib=Ib, \n", + " G=interpolate(data.glucose),\n", + " ts=data.index)\n", + " return system" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [], + "source": [ + "I0 = 360\n", + "k = 0.25\n", + "gamma = 0.004\n", + "G_T = 80" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = make_system(I0, k, gamma, G_T, data)" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a slope function that takes state, t, system as parameters and returns the derivative of `I` with respect to time. Test your function with the initial condition $I(0)=360$." + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " I = state\n", + " unpack(system)\n", + " \n", + " dIdt = - k * I + gamma * (G(t) - G_T) * t\n", + " \n", + " \n", + " return dIdt" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "I -90.0\n", + "dtype: float64" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(I=360)\n", + "slope_func(init, 0, system)" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "I -90.0\n", + "dtype: float64" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(I=I0)\n", + "slope_func(init, 0, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Run `run_odeint` with your `System` object and slope function, and plot the results, along with the measured insulin levels." + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
I
time
0360.000000
2219.652719
4137.739127
689.505898
861.636133
1045.765330
1237.053121
1432.989732
1631.406589
1931.811071
2232.581632
2734.014287
3233.758216
4230.932902
5224.554216
6215.767804
727.782053
82-0.382598
920.598298
1021.943431
1223.415756
1424.413573
16211.170251
18225.702699
\n", + "
" + ], + "text/plain": [ + " I\n", + "time \n", + "0 360.000000\n", + "2 219.652719\n", + "4 137.739127\n", + "6 89.505898\n", + "8 61.636133\n", + "10 45.765330\n", + "12 37.053121\n", + "14 32.989732\n", + "16 31.406589\n", + "19 31.811071\n", + "22 32.581632\n", + "27 34.014287\n", + "32 33.758216\n", + "42 30.932902\n", + "52 24.554216\n", + "62 15.767804\n", + "72 7.782053\n", + "82 -0.382598\n", + "92 0.598298\n", + "102 1.943431\n", + "122 3.415756\n", + "142 4.413573\n", + "162 11.170251\n", + "182 25.702699" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_odeint(system, slope_func)\n", + "system.results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nc8+pz507p/7pp5/UPXv2VK9YscIUv0atVd79LSwsVHfp0kX97bffav093759W3OO3F+1WhJLCTk5\nOepu3bqpt23bptkXFxenbt++vToqKsqEkdVdK1euVI8ZM0bnsQULFqjHjh2rtW/s2LHq+fPn10Ro\nddbVq1fVY8eOVffo0UPdv39/rQ++iu7p8ePH1e3bt1dfvXpVc3z79u3qbt26qXNycmrmF6jl7nd/\nr1y5Uub+lST3VyFVYSVUtFiYMNyFCxfw9vbWeSwyMlLrXgP06NFD7nUFjh8/jru7O7t27aJFixZa\nxyq6p5GRkXh6euLl5aU5HhwcTFZWFufOnav+4OuA+93fmJgYbGxs8PT01Plaub+KejNXmDHIYmHG\nd+HCBXJycnj66ae5du0a7dq1Y/bs2fj7+5OUlCT3uhJGjBihmWi1tIruaXJyMi4uLmWOAyQmJtKl\nS5dqiLhuud/9vXDhAg4ODrz22mv8/vvvODk58eSTTzJ+/HjMzMzk/t4jJZYSZLEw48rOziYuLo7M\nzEzmzp3L2rVrcXFxYezYsVy8eJHs7GysrKy0XiP3umoquqd3797F2tpa67ilpSUqlUruux5iY2O5\nc+cOvXv35rPPPuO5555j1apVrFmzBpD7W0RKLCXIYmHGZWNjQ0REBFZWVpoPu2XLlnHmzBm++uor\nrK2tycvL03qN3Ouqqeie2tjYkJubq3U8Ly8PtVqNra1tjcVZV4WGhnLnzh0aN24MgK+vL7dv3+bj\njz9mxowZcn/vkRJLCbJYmPHZ29trfYM2MzOjbdu2JCYm4u7uTkpKitb5cq+rpqJ76ubmpvPvG8pW\nAYuyLCwsNEmliK+vL1lZWdy+fVvu7z2SWEoouVhYkYoWCxPlO336NN27d+f06dOafQUFBURHR9Ou\nXTsCAgKIiIjQes2xY8cIDAys6VDrjYruaUBAAHFxcSQmJmodt7Ozw8/Pr0ZjrYuefvppli5dqrXv\n1KlTuLi40LhxY7m/90hiKaHkYmGHDx/mzJkzzJ49+76LhYny+fn54enpycKFC/njjz+4cOECr7/+\nOunp6Tz//POMHTuWyMhIVq1axcWLF/nggw/4448/GD9+vKlDr7MquqfdunWja9euvPrqq5w5c4ZD\nhw4RFhbGxIkTy7TNiLIGDRrE5s2b2blzJ1evXmXLli2Eh4czc+ZMQO6vhqn7O9c2eXl56nfeeUcd\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(system.results, 'r-', label='simulation')\n", + "plot(data.insulin, 'bo', label='insulin data')\n", + "\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration ($\\mu$U/mL)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write an error function that takes a sequence of parameters as an argument, along with the `DataFrame` containing the measurements. It should make a `System` object with the given parameters, run it, and compute the difference between the results of the simulation and the measured values. Test your error function by calling it with the parameters from the previous exercise.\n", + "\n", + "Hint: As we did in a previous exercise, you might want to drop the errors for times prior to `t=8`." + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error_func(params, data):\n", + " \"\"\"Computes an array of errors to be minimized.\n", + " \n", + " params: sequence of parameters\n", + " data: DataFrame of values to be matched\n", + " \n", + " returns: array of errors\n", + " \"\"\"\n", + " print(params)\n", + " \n", + " # make a System with the given parameters\n", + " system = make_system(*params, data)\n", + " \n", + " # solve the ODE\n", + " run_odeint(system, slope_func)\n", + " \n", + " # compute the difference between the model\n", + " # results and actual data\n", + " error = system.results.I - data.insulin\n", + " return error.loc[8:]" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[360, 0.25, 0.004, 80]" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params = [I0, k, gamma, G_T]\n", + "params" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Use `fit_leastsq` to find the parameters that best fit the data. Make a `System` object with those parameters, run it, and plot the results along with the measurements." + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 3.60000000e+02 2.50000000e-01 4.00000000e-03 8.00000000e+01]\n", + "[ 3.60000000e+02 2.50000000e-01 4.00000000e-03 8.00000000e+01]\n", + "[ 3.60000000e+02 2.50000000e-01 4.00000000e-03 8.00000000e+01]\n", + "[ 3.60000005e+02 2.50000000e-01 4.00000000e-03 8.00000000e+01]\n", + "[ 3.60000000e+02 2.50000004e-01 4.00000000e-03 8.00000000e+01]\n", + "[ 3.60000000e+02 2.50000000e-01 4.00000006e-03 8.00000000e+01]\n", + "[ 3.60000000e+02 2.50000000e-01 4.00000000e-03 8.00000012e+01]\n", + "[ 3.42251420e+02 2.48488980e-01 4.00000000e-03 8.05531158e+01]\n", + "[ 3.42251426e+02 2.48488980e-01 4.00000000e-03 8.05531158e+01]\n", + "[ 3.42251420e+02 2.48488984e-01 4.00000000e-03 8.05531158e+01]\n", + "[ 3.42251420e+02 2.48488980e-01 4.00000006e-03 8.05531158e+01]\n", + "[ 3.42251420e+02 2.48488980e-01 4.00000000e-03 8.05531170e+01]\n", + "[ 3.34646649e+02 2.48068307e-01 4.00000000e-03 8.05020415e+01]\n", + "[ 3.38562301e+02 2.48195694e-01 4.00000000e-03 8.05134952e+01]\n", + "[ 3.40466123e+02 2.48324294e-01 4.00000000e-03 8.05306577e+01]\n", + "[ 3.41333899e+02 2.48398864e-01 4.00000000e-03 8.05408251e+01]\n", + "[ 3.41793354e+02 2.48442526e-01 4.00000000e-03 8.05467843e+01]\n", + "[ 3.42048733e+02 2.48468063e-01 4.00000000e-03 8.05502665e+01]\n", + "[ 3.42152590e+02 2.48478709e-01 4.00000000e-03 8.05517170e+01]\n", + "[ 3.42203396e+02 2.48483972e-01 4.00000000e-03 8.05524339e+01]\n", + "[ 3.42228124e+02 2.48486547e-01 4.00000000e-03 8.05527845e+01]\n", + "[ 3.42240131e+02 2.48487800e-01 4.00000000e-03 8.05529551e+01]\n", + "[ 3.42245950e+02 2.48488408e-01 4.00000000e-03 8.05530379e+01]\n", + "[ 3.42248774e+02 2.48488704e-01 4.00000000e-03 8.05530781e+01]\n", + "[ 3.42250139e+02 2.48488846e-01 4.00000000e-03 8.05530975e+01]\n", + "[ 3.42250801e+02 2.48488916e-01 4.00000000e-03 8.05531070e+01]\n", + "[ 3.42251123e+02 2.48488949e-01 4.00000000e-03 8.05531116e+01]\n", + "[ 3.42251279e+02 2.48488966e-01 4.00000000e-03 8.05531138e+01]\n", + "[ 3.42251353e+02 2.48488973e-01 4.00000000e-03 8.05531148e+01]\n", + "[ 3.42251389e+02 2.48488977e-01 4.00000000e-03 8.05531154e+01]\n", + "modsim.py: scipy.optimize.leastsq ran successfully\n", + " and returned the following message:\n", + "The relative error between two consecutive iterates is at most 0.000000\n" + ] + } + ], + "source": [ + "best_params = fit_leastsq(error_func, params, data)" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = make_system(*best_params, data)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n376dRYsWMW7cuFJ9J6K0e++9ly+//JKNGzdy4cIFvvrqK1atWsWzzz4LyPW1cfVzxK5iNBrVBQsW\nqJeou9gAAAXdSURBVNHR0WpkZKQ6depUNS0tzdVh1WmJiYnqtGnT1B49eqhdunRRx40bp546dcpW\n/vPPP6sPPPCA2rFjR/XBBx9Uf/31VxdGW7eMGjXKbpyCqlZ8PZOTk9VJkyapXbp0Ue+44w71rbfe\nUs1mc02GXWdce30tFov6j3/8Q73vvvvUjh07qvfdd5/6z3/+0+49cn1VVRaUEkIIUSX1sglLCCHE\njZMEIoQQokokgQghhKgSSSBCCCGqRBKIEEKIKpEEIoQQokokgYh64aWXXipztcSSX6NHjwZg9OjR\njB071qXxZmRkcPfdd3P+/PkqH+PixYuEhYXxzTffOPyezMxM7r77buLj46t8XlF/yDgQUS9cuHCB\n9PR02/evvvoqWq2W2bNn27b5+PjQtm1bzp49i6IotGnTxhWhAjB9+nSCgoKYOXNmlY9hMBg4fvw4\nLVq0oFGjRg6/b82aNXz//fesXr0aRVGqfH5x85MEIuql0aNHo9Vq+eSTT1wdSimHDx/m8ccfZ8eO\nHZW68VcXg8FAnz59ePXVV7nvvvtq/Pyi7pAmLCGucW0TVlhYGF9++SUzZswgIiKCHj16sGLFCnJy\ncpg1axZRUVHceeedLFq0iJKfx65cucLs2bPp2bMnnTt3ZsSIEezbt6/C869atYo77rjDLnncfffd\nrFy5ktdee43o6GiioqKYN28e+fn5xMbG0r17d7p3784rr7xiW4/i2iasDRs20KlTJ/bv38+wYcPo\n1KkTd911F//4xz/szu/m5sZ9993H+++/fyOXUdQDkkCEcEBsbCz+/v6sXLmSu+66i+XLlzN06FA8\nPT1ZsWIF9957L6tWreKHH34AoLCwkLFjx/LLL78wbdo0li1bRoMGDRg7diyHDx8u9zy5ubn89NNP\nZX7yX7VqFRkZGSxdupThw4ezdu1aHn74YRISEnjrrbcYPXo069atY+3ateUe32QyMW3aNAYNGsSH\nH35IZGQksbGx/Pbbb3b79e/fn6NHj/LHH39U7YKJeqFeLiglRGV16NCBV155BbDOPLxhwwYaN27M\n3LlzAejRowebNm3i4MGD3H///XzzzTecOnWKr776ik6dOgHQu3dvhg4dypIlS/j444/LPE9cXBxG\no5HOnTuXKvP392fRokVoNBq6d+/Ol19+idFo5M0330Sn0xETE8P333/PwYMHy/05LBYLU6ZM4ZFH\nHgEgMjKS//znP/z888/07NnTtl/Hjh0B6xTlt9xyS+UvmKgXpAYihANK3tD9/f3RarV22xRFoUGD\nBmRlZQHw22+/ERQUxG233YbJZMJkMmGxWLjrrrvYu3dvqdXsil28eBGAZs2alSrr1KkTGo31n6xG\no8Hf358OHTrYrarZsGFDWwzliYyMtL12c3OjUaNG5Ofn2+3j6+uLn58fly5duu6xRP0mNRAhHODt\n7V1q2/WWLs3IyCAxMZEOHTqUWX7lypUyV67Lzs4GKHOp38rGUJ5rj63RaLBYLGXuVxyPEGWRBCKE\nE/j6+tKmTRtiY2PLLPf397/u9uzs7FJLqta0rKyscuMUAqQJSwin6NatG5cvXyYwMJBOnTrZvrZt\n28Znn32GXq8v831NmzYFIDExsSbDLSUzM5P8/HxCQkJcGoeo3SSBCOEEQ4YMISgoiHHjxvHNN9/w\n3//+l4ULF/Luu+/SvHnzcgfode3aFQ8PD4ce93Wm/fv3AxATE+PSOETtJglECCfw9vZm7dq1dOnS\nhYULF/L000+zc+dO5syZw5QpU8p9n6enJ71792bHjh01GG1pO3bsoHPnzlIDEdclI9GFqGUOHz7M\niBEj+Omnn8rsaHe2/Px8evXqxcKFC7nnnntq/Pyi7pAaiBC1TOfOnenXr1+pEeI15csvv6Rt27b0\n69fPJecXdYfUQISohdLT0xkyZAiffvopLVu2rLHzZmRk8NBDD9X4eUXdJAlECCFElUgTlhBCiCqR\nBCKEEKJKJIEIIYSoEkkgQgghqkQSiBBCiCr5f/pQp4oh2fSdAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(system.results.I, label='simulation')\n", + "plot(data.insulin, style='bo', label='insulin data')\n", + "\n", + "decorate(xlabel='Time (min)',\n", + " ylabel='Concentration (mg/dL)')\n", + "\n", + "savefig('chap08-fig04.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Using the best parameters, estimate the sensitivity to glucose of the first and second phase pancreatic responsivity:\n", + "\n", + "$ \\phi_1 = \\frac{I_{max} - I_b}{k (G_0 - G_b)} $\n", + "\n", + "$ \\phi_2 = \\gamma \\times 10^4 $" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(130, 11, 290, 92)" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "I_max = data.insulin.max()\n", + "Ib = data.insulin[0]\n", + "Gb = data.glucose[0]\n", + "\n", + "I_max, Ib, G0, Gb" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2.4186589683769704, 40.0)" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "phi_1 = (I_max - Ib) / k / (G0 - Gb)\n", + "phi_2 = gamma * 1e4\n", + "\n", + "phi_1, phi_2\n", + "# Still kinda confused abt the significance of phi" + ] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap09-fig01.pdf b/code/chap09-fig01.pdf new file mode 100644 index 00000000..e97127a5 Binary files /dev/null and b/code/chap09-fig01.pdf differ diff --git a/code/chap09-fig02.pdf b/code/chap09-fig02.pdf new file mode 100644 index 00000000..13629f52 Binary files /dev/null and b/code/chap09-fig02.pdf differ diff --git a/code/chap09mine.ipynb b/code/chap09mine.ipynb new file mode 100644 index 00000000..f8ec9c40 --- /dev/null +++ b/code/chap09mine.ipynb @@ -0,0 +1,1935 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 9: Projectiles\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# tempo switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Dropping pennies\n", + "\n", + "I'll start by getting the units we'll need from Pint." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "m = UNITS.meter\n", + "s = UNITS.second\n", + "kg = UNITS.kilogram" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "And defining the initial state." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
y381 meter
v0.0 meter / second
\n", + "
" + ], + "text/plain": [ + "y 381 meter\n", + "v 0.0 meter / second\n", + "dtype: object" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "init = State(y=381 * m, \n", + " v=0 * m/s)\n", + "init" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Acceleration due to gravity is about 9.8 m / s$^2$." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "g = 9.8 * m/s**2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "When we call `odeint`, we need an array of timestamps where we want to compute the solution.\n", + "\n", + "I'll start with a duration of 10 seconds." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. ] second" + ], + "text/latex": [ + "$[ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. ] second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "duration = 10 * s\n", + "ts = linspace(0, duration, 21)\n", + "ts" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now we make a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = System(init=init, g=g, ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "And define the slope function." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Compute derivatives of the state.\n", + " \n", + " state: position, velocity\n", + " t: time\n", + " system: System object containing `g`\n", + " \n", + " returns: derivatives of y and v\n", + " \"\"\"\n", + " y, v = state\n", + " unpack(system) \n", + "\n", + " dydt = v\n", + " dvdt = -g\n", + " \n", + " print(t)\n", + " return dydt, dvdt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "It's always a good idea to test the slope function with the initial conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "0.0 meter / second\n", + "-9.8 meter / second ** 2\n" + ] + } + ], + "source": [ + "dydt, dvdt = slope_func(init, 0, system)\n", + "print(dydt)\n", + "print(dvdt)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now we're ready to run `odeint`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 second\n", + "0.0\n", + "1.2204606467739427e-05\n", + "1.2204606467739427e-05\n", + "2.4409212935478853e-05\n", + "2.4409212935478853e-05\n", + "0.12207047389032974\n", + "0.244116538567724\n", + "0.3661626032451183\n", + "1.586623250019061\n", + "2.8070838967930034\n", + "4.027544543566946\n", + "16.23215101130637\n" + ] + } + ], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Here's what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
yv
0.0381.0000.0
0.5379.775-4.9
1.0376.100-9.8
1.5369.975-14.7
2.0361.400-19.6
\n", + "
" + ], + "text/plain": [ + " y v\n", + "0.0 381.000 0.0\n", + "0.5 379.775 -4.9\n", + "1.0 376.100 -9.8\n", + "1.5 369.975 -14.7\n", + "2.0 361.400 -19.6" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
yv
8.067.400-78.4
8.526.975-83.3
9.0-15.900-88.2
9.5-61.225-93.1
10.0-109.000-98.0
\n", + "
" + ], + "text/plain": [ + " y v\n", + "8.0 67.400 -78.4\n", + "8.5 26.975 -83.3\n", + "9.0 -15.900 -88.2\n", + "9.5 -61.225 -93.1\n", + "10.0 -109.000 -98.0" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "The following function plots the results." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_position(results):\n", + " \"\"\"Plot the results.\n", + " \n", + " results: DataFrame with position, `y`\n", + " \"\"\"\n", + " newfig()\n", + " plot(results.y, label='y')\n", + " \n", + " decorate(xlabel='Time (s)',\n", + " ylabel='Position (m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap09-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_position(system.results)\n", + "savefig('chap09-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "**Exercise:** Add a print statement to `slope_func` to print the value of `t` each time it's called. What can we infer about how `odeint` works, based on the results?" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#odeint takes time values that are increasing exponentially" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "**Exercise:** Change the value of `dt` and run the solver again. What effect does it have on the results?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#graph is more smoothe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Onto the sidewalk\n", + "\n", + "Here's the code again to set up the `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(duration, v_init=0):\n", + " \"\"\"Make a system object.\n", + " \n", + " duration: time of simulation in seconds\n", + " v_init: initial velocity, dimensionless\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " init = State(y=381 * m, v=v_init * m / s)\n", + "\n", + " g = 9.8 * m/s**2\n", + " ts = linspace(0, duration, 11)\n", + " return System(init=init, g=g, ts=ts) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n", + "0.0\n", + "1.2391823754412774e-05\n", + "1.2391823754412774e-05\n", + "2.478364750882555e-05\n", + "2.478364750882555e-05\n", + "0.12394302119163657\n", + "0.2478612587357643\n", + "0.37177949627989204\n", + "1.6109618717211696\n", + "2.850144247162447\n", + "4.089326622603725\n", + "16.481150377016498\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
yv
0.0381.00.0
1.0376.1-9.8
2.0361.4-19.6
3.0336.9-29.4
4.0302.6-39.2
5.0258.5-49.0
6.0204.6-58.8
7.0140.9-68.6
8.067.4-78.4
9.0-15.9-88.2
10.0-109.0-98.0
\n", + "
" + ], + "text/plain": [ + " y v\n", + "0.0 381.0 0.0\n", + "1.0 376.1 -9.8\n", + "2.0 361.4 -19.6\n", + "3.0 336.9 -29.4\n", + "4.0 302.6 -39.2\n", + "5.0 258.5 -49.0\n", + "6.0 204.6 -58.8\n", + "7.0 140.9 -68.6\n", + "8.0 67.4 -78.4\n", + "9.0 -15.9 -88.2\n", + "10.0 -109.0 -98.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(10)\n", + "system\n", + "run_odeint(system, slope_func)\n", + "system.results" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "To figure out when the penny hit the sidewalk, we use `interp_inverse`, which return a function that maps from height to time." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "y = system.results.y\n", + "T = interp_inverse(y, kind='cubic')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "`T(0)` interpolates the time when the height was 0." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(8.81792826905006)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "T_sidewalk = T(0)\n", + "T_sidewalk" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "We can compare that to the exact result. Without air resistance, we have\n", + "\n", + "$v = -g t$\n", + "\n", + "and\n", + "\n", + "$y = 381 - g t^2 / 2$\n", + "\n", + "Setting $y=0$ and solving for $t$ yields\n", + "\n", + "$t = \\sqrt{\\frac{2 y_{init}}{g}}$" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "8.817885349720552 second" + ], + "text/latex": [ + "$8.817885349720552 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sqrt(2 * init.y / g)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "The estimate is accurate to 4 decimal places." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "We can double-check by running the simulation for the estimated flight time." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n", + "0.0\n", + "1.2373598314419205e-05\n", + "1.2373598314419205e-05\n", + "2.474719662883841e-05\n", + "2.474719662883841e-05\n", + "0.1237607303408209\n", + "0.24749671348501295\n", + "0.371232696629205\n", + "1.6085925280711255\n", + "2.845952359513046\n", + "4.083312190954967\n", + "16.45691050537417\n" + ] + } + ], + "source": [ + "system = make_system(duration=T_sidewalk)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "And checking the final state." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def final_state(results):\n", + " \"\"\"Returns the final position and velocity, with units.\n", + " \n", + " results: TimeFrame with y and v.\n", + " \n", + " returns: y, v at t_end\n", + " \"\"\"\n", + " t_end = results.index[-1]\n", + " y, v = results.loc[t_end]\n", + " return y*m, v*m/s" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "As expected, the final height is close to 0." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "1.2732392917769175e-10 meter" + ], + "text/latex": [ + "$1.2732392917769175e-10 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_final, v_final = final_state(system.results)\n", + "y_final" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "And we can check the final velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-18.00000000874157 meter/second" + ], + "text/latex": [ + "$-18.00000000874157 \\frac{meter}{second}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v_final" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "And convert to km/h" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-64.80000003146965 kilometer/hour" + ], + "text/latex": [ + "$-64.80000003146965 \\frac{kilometer}{hour}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "km = UNITS.kilometer\n", + "h = UNITS.hour\n", + "v_final.to(km / h)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "If there were no air resistance, the penny would hit the sidewalk (or someone's head) at more than 300 km/h.\n", + "\n", + "So it's a good thing there is air resistance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Try changing the initial velocity and see what effect it has on the time to hot the sidewalk. Sweep a range of values for the initial velocity, from 0 to 25 m/s, and plot `T_sidewalk` as a function of initial velocity. You might find the following function useful.\n", + "\n", + "Things might go horribly wrong for the larger initial velocities. What's going on?" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def flight_time(system):\n", + " \"\"\"Simulates the system and computes flight time.\n", + " \n", + " Uses cubic interpolation.\n", + " \n", + " system: System object\n", + " \n", + " returns: flight time in seconds\n", + " \"\"\"\n", + " run_odeint(system, slope_func)\n", + " y = system.results.y\n", + " inverse = Series(y.index, index=y.values)\n", + " T = interpolate(inverse, kind='cubic')\n", + " T_sidewalk = T(0)\n", + " return T_sidewalk * s" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "make_system() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mv_init\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mvs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0msystem\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmake_system\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mduration\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv_init\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[0mrun_odeint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msystem\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mslope_func\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msystem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: make_system() takes 1 positional argument but 2 were given" + ] + } + ], + "source": [ + "# Solution goes here\n", + "duration = 10\n", + "vs = linrange(0, 25, 1)\n", + "\n", + "for v_init in vs:\n", + " system = make_system(duration, v_init)\n", + " run_odeint(system, slope_func)\n", + " y = system.results.y\n", + " inverse = Series(y.index, index=y.values)\n", + " T = interpolate(inverse, kind='cubic')\n", + " T_sidewalk = T(0)\n", + " plot(v_init, T_sidewalk, 'b-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With air resistance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we'll add air resistance using the [drag equation](https://en.wikipedia.org/wiki/Drag_equation)\n", + "\n", + "First I'll create a `Condition` object to contain the quantities we'll need." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(height = 381 * m,\n", + " v_init = 0 * m / s,\n", + " g = 9.8 * m/s**2,\n", + " mass = 2.5e-3 * kg,\n", + " diameter = 19e-3 * m,\n", + " rho = 1.2 * kg/m**3,\n", + " v_term = 18 * m / s,\n", + " duration = 30 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now here's a version of `make_system` that takes a `Condition` object as a parameter.\n", + "\n", + "`make_system` uses the given value of `v_term` to compute the drag coefficient `C_d`." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Makes a System object for the given conditions.\n", + " \n", + " condition: Condition with height, g, mass, diameter, \n", + " rho, v_term, and duration\n", + " \n", + " returns: System with init, g, mass, rho, C_d, area, and ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(y=height, v=v_init)\n", + " area = np.pi * (diameter/2)**2\n", + " C_d = 2 * mass * g / (rho * area * v_term**2)\n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, g=g, mass=mass, rho=rho,\n", + " C_d=C_d, area=area, ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Let's make a `System`" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
inity 381 meter\n", + "v 0.0 meter / secon...
g9.8 meter / second ** 2
mass0.0025 kilogram
rho1.2 kilogram / meter ** 3
C_d0.4445009981135434 dimensionless
area0.0002835287369864788 meter ** 2
ts[0.0 second, 0.3 second, 0.6 second, 0.8999999...
\n", + "
" + ], + "text/plain": [ + "init y 381 meter\n", + "v 0.0 meter / secon...\n", + "g 9.8 meter / second ** 2\n", + "mass 0.0025 kilogram\n", + "rho 1.2 kilogram / meter ** 3\n", + "C_d 0.4445009981135434 dimensionless\n", + "area 0.0002835287369864788 meter ** 2\n", + "ts [0.0 second, 0.3 second, 0.6 second, 0.8999999...\n", + "dtype: object" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Here's the slope function, including acceleration due to gravity and drag." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Compute derivatives of the state.\n", + " \n", + " state: position, velocity\n", + " t: time\n", + " system: System object containing g, rho,\n", + " C_d, area, and mass\n", + " \n", + " returns: derivatives of y and v\n", + " \"\"\"\n", + " y, v = state\n", + " unpack(system)\n", + " \n", + " f_drag = rho * v**2 * C_d * area / 2\n", + " a_drag = f_drag / mass\n", + " \n", + " dydt = v\n", + " dvdt = -g + a_drag\n", + " \n", + " return dydt, dvdt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "As always, let's test the slope function with the initial conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(, )" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "And then run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "First check that the simulation ran long enough for the penny to land." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_state(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Then compute the flight time." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(22.439794207078908)" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = system.results.y\n", + "inverse = Series(y.index, index=y.values)\n", + "T = interpolate(inverse, kind='cubic')\n", + "T_sidewalk = T(0)\n", + "T_sidewalk" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Setting the duration to the computed flight time, we can check the final conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "condition.set(duration=T_sidewalk)\n", + "system = make_system(condition)\n", + "run_odeint(system, slope_func)\n", + "y_final, v_final = final_state(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "The final height is close to 0, as expected. And the final velocity is close to the given terminal velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_final, v_final" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Here's the plot of position as a function of time." + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap09-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nASKEEKJD/j8VNerOzMcPPgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_position(system.results)\n", + "savefig('chap09-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And velocity as a function of time:" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_velocity(results):\n", + " \"\"\"Plot the results.\n", + " \n", + " results: DataFrame with velocity, v\n", + " \"\"\"\n", + " newfig()\n", + " plot(results.v, label='v')\n", + " \n", + " decorate(xlabel='Time (s)',\n", + " ylabel='Velocity (m/2)')" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_velocity(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "From an initial velocity of 0, the penny accelerates downward until it reaches terminal velocity; after that, velocity is constant." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Run the simulation with an initial velocity, downward, that exceeds the penny's terminal velocity. Hint: use `condition.set`.\n", + "\n", + "What do you expect to happen? Plot velocity and position as a function of time, and see if they are consistent with your prediction." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution goes here\n", + "\n", + "condition.set(v_init = -30 * m / s)\n", + "system = make_system(condition)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nolP+P2wP/1EjEn+4AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_position(system.results)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nkV7+H5Vb9XtGRlJ0AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Solution goes here\n", + "plot_velocity(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dropping quarters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose we drop a quarter from the Empire State Building and find that its flight time is 19.1 seconds. We can use this measurement to estimate the coefficient of drag.\n", + "\n", + "Here's a `Condition` object with the relevant parameters from\n", + "https://en.wikipedia.org/wiki/Quarter_(United_States_coin)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(height = 381 * m,\n", + " v_init = 0 * m / s,\n", + " g = 9.8 * m/s**2,\n", + " mass = 5.67e-3 * kg,\n", + " diameter = 24.26e-3 * m,\n", + " rho = 1.2 * kg/m**3,\n", + " duration = 19.1 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's a modified version of `make_system`" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Makes a System object for the given conditions.\n", + " \n", + " condition: Condition with height, v_init, g, mass, diameter, \n", + " rho, C_d, and duration\n", + " \n", + " returns: System with init, g, mass, rho, C_d, area, and ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(y=height, v=v_init)\n", + " area = np.pi * (diameter/2)**2\n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, g=g, mass=mass, rho=rho,\n", + " C_d=C_d, area=area, ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can run the simulation with an initial guess of `C_d=0.4`." + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nr2LpAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "condition.set(C_d=0.4)\n", + "system = make_system(condition)\n", + "run_odeint(system, slope_func)\n", + "plot_position(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The final height is -11 meters, which means our guess was too low (we need more drag to slow the quarter down)." + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_state(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`height_func` takes a hypothetical value of `C_d` and returns the height after 19.1 seconds." + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def height_func(C_d, condition):\n", + " \"\"\"Final height as a function of C_d.\n", + " \n", + " C_d: drag coefficient\n", + " condition: Condition object\n", + " \n", + " returns: height in m\n", + " \"\"\"\n", + " condition.set(C_d=C_d)\n", + " system = make_system(condition)\n", + " run_odeint(system, slope_func)\n", + " y, v = final_state(system.results)\n", + " return y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we run it with `C_d=0.4`, we get -11 meters again." + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-11.034779626277231 meter" + ], + "text/latex": [ + "$-11.034779626277231 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "height_func(0.4, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `fsolve` to find the value of `C_d` that makes the final height 0." + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.42587017])" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solution = fsolve(height_func, 0.4, condition)\n", + "solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plugging in the estimated value, we can run the simulation again to get terminal velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "condition.set(C_d=solution)\n", + "system = make_system(condition)\n", + "run_odeint(system, slope_func)\n", + "final_state(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, the terminal velocity of the quarter is higher than that of the penny, but we should not take this result seriously because the measurements we used are not real; I made them up." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap10-fig01.pdf b/code/chap10-fig01.pdf new file mode 100644 index 00000000..3597a43b Binary files /dev/null and b/code/chap10-fig01.pdf differ diff --git a/code/chap10-fig02.pdf b/code/chap10-fig02.pdf new file mode 100644 index 00000000..ad8e2ca7 Binary files /dev/null and b/code/chap10-fig02.pdf differ diff --git a/code/chap10-fig03.pdf b/code/chap10-fig03.pdf new file mode 100644 index 00000000..ea1440cd Binary files /dev/null and b/code/chap10-fig03.pdf differ diff --git a/code/chap10mine.ipynb b/code/chap10mine.ipynb new file mode 100644 index 00000000..1360b4b6 --- /dev/null +++ b/code/chap10mine.ipynb @@ -0,0 +1,8119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 10: Vectors\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# tempo switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib notebook\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Vectors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A `Vector` object is like a combination of a NumPy array and a Pint Quantity.\n", + "\n", + "I'll start by grabbing the units we'll need." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "m = UNITS.meter\n", + "s = UNITS.second\n", + "kg = UNITS.kilogram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a two dimensional `Vector` in meters." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "A = Vector(3, 4) * m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can access the elements by name." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "3.0 meter" + ], + "text/latex": [ + "$3.0 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.x" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "4.0 meter" + ], + "text/latex": [ + "$4.0 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The magnitude is the length of the vector." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "5.0 meter" + ], + "text/latex": [ + "$5.0 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.mag" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The angle is the number of radians between the vector and the positive x axis." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.9272952180016122 radian" + ], + "text/latex": [ + "$0.9272952180016122 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.angle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we make another `Vector` with the same units," + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "B = Vector(1, 2) * m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can add `Vector` objects like this" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 4. 6.] meter" + ], + "text/latex": [ + "$[ 4. 6.] meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A + B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And substract like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 2. 2.] meter" + ], + "text/latex": [ + "$[ 2. 2.] meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A - B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can compute the Euclidean distance between two Vectors." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "2.8284271247461903 meter" + ], + "text/latex": [ + "$2.8284271247461903 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.dist(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the difference in angle" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-0.17985349979247822 radian" + ], + "text/latex": [ + "$-0.17985349979247822 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.diff_angle(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we are given the magnitude and angle of a vector, what we have is the representation of the vector in polar coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mag = A.mag\n", + "angle = A.angle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `pol2cart` to convert from polar to Cartesian coordinates, and then use the Cartesian coordinates to make a `Vector` object.\n", + "\n", + "In this example, the `Vector` we get should have the same components as `A`." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 3. 4.] meter" + ], + "text/latex": [ + "$[ 3. 4.] meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x, y = pol2cart(angle, mag)\n", + "Vector(x, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Create a `Vector` named `a_grav` that represents acceleration due to gravity, with x component 0 and y component $-9.8$ meters / second$^2$." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a_grav= Vector(0, -9.8) * m/s/s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Degrees and radians\n", + "\n", + "Pint provides units to represent degree and radians." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "degree = UNITS.degree\n", + "radian = UNITS.radian" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you have an angle in degrees," + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "45 degree" + ], + "text/latex": [ + "$45 degree$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "angle = 45 * degree\n", + "angle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can convert to radians." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.7853981633974483 radian" + ], + "text/latex": [ + "$0.7853981633974483 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "angle_rad = angle.to(radian)\n", + "angle_rad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If it's already in radians, `to` does the right thing." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.7853981633974483 radian" + ], + "text/latex": [ + "$0.7853981633974483 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "angle_rad.to(radian)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also convert from radians to degrees." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "45.0 degree" + ], + "text/latex": [ + "$45.0 degree$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "angle_rad.to(degree)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an alterative, you can use `np.deg2rad`, which works with Pint quantities, but it also works with simple numbers and NumPy arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.7853981633974483 radian" + ], + "text/latex": [ + "$0.7853981633974483 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.deg2rad(angle)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Create a `Vector` named `a_force` that represents acceleration due to a force of 0.5 Newton applied to an object with mass 0.3 kilograms, in a direction 45 degrees up from the positive x-axis.\n", + "\n", + "Add `a_force` to `a_drag` from the previous exercise. If that addition succeeds, that means that the units are compatible. Confirm that the total acceleration seems to make sense." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "mass2 = .3*kg\n", + "F_force = Vector((.5/sqrt(2)),(.5/sqrt(2)))*kg*m/s/s\n", + "#N = kg*m/s/s\n", + "a_force = F_force/mass2" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 1.1785113 -8.6214887] meter/second2" + ], + "text/latex": [ + "$[ 1.1785113 -8.6214887] \\frac{meter}{second^{2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a_total = a_force + a_grav\n", + "a_total" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Baseball" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a `Condition` object that contains the parameters for the Manny Ramirez problem." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(x = 0 * m, \n", + " y = 1 * m,\n", + " g = 9.8 * m/s**2,\n", + " mass = 145e-3 * kg,\n", + " diameter = 73e-3 * m,\n", + " rho = 1.2 * kg/m**3,\n", + " C_d = 0.3,\n", + " angle = 45 * degree,\n", + " velocity = 40 * m / s,\n", + " duration = 5.1 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the function that uses the `Condition` object to make a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition object with angle, velocity, x, y,\n", + " diameter, duration, g, mass, rho, and C_d\n", + " \n", + " returns: System object\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " # convert angle to degrees\n", + " theta = np.deg2rad(angle)\n", + " \n", + " # compute x and y components of velocity\n", + " vx, vy = pol2cart(theta, velocity)\n", + " \n", + " # make the initial state\n", + " init = State(x=x, y=y, vx=vx, vy=vy)\n", + " \n", + " # compute area from diameter\n", + " area = np.pi * (diameter/2)**2\n", + " \n", + " # compute timestamps\n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, g=g, mass=mass, \n", + " area=area, rho=rho, C_d=C_d, ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we use it:" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
initx 0 meter\n", + "y ...
g9.8 meter / second ** 2
mass0.145 kilogram
area0.004185386812745002 meter ** 2
rho1.2 kilogram / meter ** 3
C_d0.3
ts[0.0 second, 0.051 second, 0.102 second, 0.153...
\n", + "
" + ], + "text/plain": [ + "init x 0 meter\n", + "y ...\n", + "g 9.8 meter / second ** 2\n", + "mass 0.145 kilogram\n", + "area 0.004185386812745002 meter ** 2\n", + "rho 1.2 kilogram / meter ** 3\n", + "C_d 0.3\n", + "ts [0.0 second, 0.051 second, 0.102 second, 0.153...\n", + "dtype: object" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the slope function that computes acceleration due to gravity and drag." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes derivatives of the state variables.\n", + " \n", + " state: State (x, y, x velocity, y velocity)\n", + " t: time\n", + " system: System object with g, rho, C_d, area, mass\n", + " \n", + " returns: sequence (vx, vy, ax, ay)\n", + " \"\"\"\n", + " x, y, vx, vy = state\n", + " unpack(system)\n", + " \n", + " a_grav = Vector(0, -g)\n", + "\n", + " v = Vector(vx, vy)\n", + " \n", + " f_drag = -rho * v.mag * v * C_d * area / 2\n", + " a_drag = f_drag / mass\n", + " \n", + " a = a_grav + a_drag\n", + " \n", + " return vx, vy, a.x, a.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Always test the slope function with the initial conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " ,\n", + " )" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run `odeint`" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the first few time steps." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
xyvxvy
0.0000.0000001.00000034.64101620.000000
0.0511.7574142.00194334.27882219.293697
0.1023.4966042.96813833.92630518.598052
0.1535.2180553.89911833.58308017.912625
0.2046.9222304.79539333.24878117.237001
\n", + "
" + ], + "text/plain": [ + " x y vx vy\n", + "0.000 0.000000 1.000000 34.641016 20.000000\n", + "0.051 1.757414 2.001943 34.278822 19.293697\n", + "0.102 3.496604 2.968138 33.926305 18.598052\n", + "0.153 5.218055 3.899118 33.583080 17.912625\n", + "0.204 6.922230 4.795393 33.248781 17.237001" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the last few. The last value of `y` is negative, indicating that the ball hit the ground before the end of the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
xyvxvy
4.896119.051966-25.03990716.915531-24.925983
4.947119.911217-26.31877316.780661-25.225049
4.998120.763599-27.61280216.646105-25.520572
5.049121.609126-28.92181116.511872-25.812556
5.100122.447815-30.24562216.377974-26.101006
\n", + "
" + ], + "text/plain": [ + " x y vx vy\n", + "4.896 119.051966 -25.039907 16.915531 -24.925983\n", + "4.947 119.911217 -26.318773 16.780661 -25.225049\n", + "4.998 120.763599 -27.612802 16.646105 -25.520572\n", + "5.049 121.609126 -28.921811 16.511872 -25.812556\n", + "5.100 122.447815 -30.245622 16.377974 -26.101006" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing the results\n", + "\n", + "We can extract the x and y components as `Series` objects." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "xs = system.results.x\n", + "ys = system.results.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The simplest way to visualize the results is to plot x and y as functions of time." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "plot(vxs, label='vx')\n", + "plot(vys, label='vy')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Velocity (m/s)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another way to visualize the results is to plot y versus x. The result is the trajectory of the ball through its plane of motion." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "decorate(xlabel='x position (m)',\n", + " ylabel='y position (m)',\n", + " xlim=[0, 105],\n", + " ylim=[-5, 35],\n", + " legend=False)\n", + "\n", + "for x, y in zip(xs, ys):\n", + " plot(x, y, 'bo', update=True)\n", + " sleep(0.01)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a function that encapsulates that code and runs the animation in (approximately) real time." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def animate2d(xs, ys, speedup=1):\n", + " \"\"\"Animate the results of a projectile simulation.\n", + " \n", + " xs: x position as a function of time\n", + " ys: y position as a function of time\n", + " \n", + " speedup: how much to divide `dt` by\n", + " \"\"\"\n", + " # get the time intervals between elements\n", + " ts = xs.index\n", + " dts = np.diff(ts)\n", + " dts = np.append(dts, 0)\n", + "\n", + " # decorate the plot\n", + " newfig()\n", + " decorate(xlabel='x position (m)',\n", + " ylabel='y position (m)',\n", + " xlim=[xs.min(), xs.max()],\n", + " ylim=[ys.min(), ys.max()],\n", + " legend=False)\n", + "\n", + " # loop through the values\n", + " for x, y, dt in zip(xs, ys, dts):\n", + " plot(x, y, 'bo', update=True)\n", + " sleep(dt / speedup)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "animate2d(system.results.x, system.results.y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Finding the range" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we'll find the time and distance when the ball hits the ground." + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition.set(duration=7*s)\n", + "system = make_system(condition)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have to interpolate y to find the landing time, then interpolate x to find the range." + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def interpolate_range(results):\n", + " \"\"\"Computes the range of the ball when it lands.\n", + " \n", + " results: TimeFrame with x and y\n", + " \n", + " returns: distance in meters\n", + " \"\"\"\n", + " xs = results.x\n", + " ys = results.y\n", + " t_end = ys.index[-1]\n", + " \n", + " if ys[t_end] > 0:\n", + " msg = \"\"\"The final value of y is still positive;\n", + " looks like the simulation didn't run\n", + " long enough.\"\"\"\n", + " raise ValueError(msg)\n", + " \n", + " t_peak = ys.argmax()\n", + " descent = ys.loc[t_peak:]\n", + " T = interp_inverse(descent, kind='cubic')\n", + " \n", + " t_land = T(0)\n", + " X = interpolate(xs, kind='cubic')\n", + " return X(t_land)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the result." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(102.72237841710975)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpolate_range(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The baseball stadium in Denver, Colorado is 1,580 meters above sea level, where the density of air is about 1.0 kg / meter$^3$. How much farther would a ball hit with the same velocity and launch angle travel?" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Hint: rather than modify `condition`, make a copy\n", + "\n", + "condition2 = Condition(x = 0 * m, \n", + " y = 1 * m,\n", + " g = 9.8 * m/s**2,\n", + " mass = 145e-3 * kg,\n", + " diameter = 73e-3 * m,\n", + " rho = 1.0 * kg/m**3,\n", + " C_d = 0.3,\n", + " angle = 45 * degree,\n", + " velocity = 40 * m / s,\n", + " duration = 7 * s)\n", + "\n", + "condition2.set(duration=7*s)\n", + "system = make_system(condition2)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(109.07212101030548)" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution goes here\n", + "interpolate_range(system.results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optimal launch angle\n", + "\n", + "To find the launch angle that maximizes range, we need a function that takes launch angle and returns range." + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def range_func(angle, condition): \n", + " \"\"\"Computes range for a given launch angle.\n", + " \n", + " angle: launch angle in degrees\n", + " condition: Condition object\n", + " \n", + " returns: distance in meters\n", + " \"\"\"\n", + " condition.set(angle=angle)\n", + " print(angle)\n", + " system = make_system(condition)\n", + " run_odeint(system, slope_func)\n", + " x_range = interpolate_range(system.results)\n", + " return x_range" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's test `range_func`." + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "45\n", + "Wall time: 314 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "array(102.72237841710975)" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time range_func(45, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And sweep through a range of angles." + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30.0\n", + "30.0 97.09774794768241\n", + "33.0\n", + "33.0 100.08910744882512\n", + "36.0\n", + "36.0 102.12802725534989\n", + "39.0\n", + "39.0 103.23445991233197\n", + "42.0\n", + "42.0 103.42684240849546\n", + "45.0\n", + "45.0 102.72237841710975\n", + "48.0\n", + "48.0 101.13744083917668\n", + "51.0\n", + "51.0 98.68805053605158\n", + "54.0\n", + "54.0 95.39043242210352\n", + "57.0\n", + "57.0 91.2616536460809\n", + "60.0\n", + "60.0 86.32037231617414\n" + ] + } + ], + "source": [ + "angles = linspace(30, 60, 11)\n", + "sweep = SweepSeries()\n", + "\n", + "for angle in angles:\n", + " x_range = range_func(angle, condition)\n", + " print(angle, x_range)\n", + " sweep[angle] = x_range" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the `Sweep` object, it looks like the peak is between 40 and 45 degrees." + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('