diff --git a/code/chap01mine.ipynb b/code/chap01mine.ipynb new file mode 100644 index 00000000..c49bb075 --- /dev/null +++ b/code/chap01mine.ipynb @@ -0,0 +1,2214 @@ +{ + "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": 1, + "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 two lines create new variables named `meter` and `second`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "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": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "UNITS." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a variable named `a` and display its value:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "9.8 meter/second2" + ], + "text/latex": [ + "$9.8 \\frac{meter}{second^{2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "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": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "4 second" + ], + "text/latex": [ + "$4 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "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": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "381.0000000000001 meter" + ], + "text/latex": [ + "$381.0000000000001 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h = 0.5*(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": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "8.817885349720552 second" + ], + "text/latex": [ + "$8.817885349720552 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "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": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "86.41527642726142 meter/second" + ], + "text/latex": [ + "$86.41527642726142 \\frac{meter}{second}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "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": 19, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mile = UNITS.mile\n", + "hour= UNITS.hour" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "193.30546802805438 mile/hour" + ], + "text/latex": [ + "$193.30546802805438 \\frac{mile}{hour}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "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": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "20.070408163265306 second" + ], + "text/latex": [ + "$20.070408163265306 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution goes here\n", + "t1 = (20 * meter/second) / a\n", + "InitialFall = 0.5*(a * t1 ** 2)\n", + "t2 = (h - InitialFall) / (20 * meter/second)\n", + "Total = t1 + t2\n", + "Total" + ] + }, + { + "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": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)" + ] + }, + { + "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": 34, + "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": 34, + "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": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'System' object has no attribute 'welleslye'", + "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[0mbikeshare\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwelleslye\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 'welleslye'" + ] + } + ], + "source": [ + "bikeshare.welleslye" + ] + }, + { + "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": "code", + "execution_count": 50, + "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
olin2
wellesley0
babson0
\n", + "
" + ], + "text/plain": [ + "olin 2\n", + "wellesley 0\n", + "babson 0\n", + "dtype: int64" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare = System(olin=2, wellesley=0, babson=0)\n", + "bikeshare" + ] + }, + { + "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": 51, + "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": 52, + "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
olin1
wellesley1
babson0
\n", + "
" + ], + "text/plain": [ + "olin 1\n", + "wellesley 1\n", + "babson 0\n", + "dtype: int64" + ] + }, + "execution_count": 52, + "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": 53, + "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": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "bikeshare.wellesley -= 1\n", + "bikeshare.olin += 1\n", + "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": 55, + "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": 56, + "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": 57, + "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
olin1
wellesley1
babson0
\n", + "
" + ], + "text/plain": [ + "olin 1\n", + "wellesley 1\n", + "babson 0\n", + "dtype: int64" + ] + }, + "execution_count": 57, + "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": null, + "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": 60, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def bike_to_olin():\n", + " bikeshare.wellesley -= 1\n", + " bikeshare.olin += 1\n", + "bike_to_olin()\n", + "plot_state()" + ] + }, + { + "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": 61, + "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": 62, + "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": 63, + "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": 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
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 64, + "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": 65, + "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": 65, + "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": 66, + "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": 67, + "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": 68, + "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": 70, + "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": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running move_bike_debug with argument 1\n" + ] + } + ], + "source": [ + "# Solution goes here\n", + "move_bike_debug(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running bike_to_wellesley_debug\n", + "Running move_bike_debug with argument 1\n" + ] + } + ], + "source": [ + "# Solution goes here\n", + "bike_to_wellesley_debug()" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running bike_to_olin_debug\n", + "Running move_bike_debug with argument -1\n" + ] + } + ], + "source": [ + "# Solution goes here\n", + "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": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "flip(0.4)" + ] + }, + { + "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": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "heads\n" + ] + } + ], + "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": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tails\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": 77, + "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": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Moving a bike to Wellesley\n" + ] + }, + { + "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": 78, + "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": 79, + "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
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 79, + "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": 81, + "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": 86, + "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": 86, + "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": 91, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def decorate(): \n", + " legend(loc='random string')\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": 92, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\ProgramData\\Miniconda3\\lib\\site-packages\\matplotlib\\legend.py:326: UserWarning: Unrecognized location \"random string\". Falling back on \"best\"; valid locations are\n", + "\tbest\n", + "\tupper right\n", + "\tupper left\n", + "\tlower left\n", + "\tlower right\n", + "\tright\n", + "\tcenter left\n", + "\tcenter right\n", + "\tlower center\n", + "\tupper center\n", + "\tcenter\n", + "\n", + " six.iterkeys(self.codes))))\n" + ] + } + ], + "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": 93, + "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": 94, + "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": 95, + "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": 96, + "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": 97, + "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": 98, + "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": 99, + "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": 100, + "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": 101, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "positional argument follows keyword argument (, line 4)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m step(p1=0.4, 0.2)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m positional argument follows keyword argument\n" + ] + } + ], + "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": 106, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def decorate(loc='best'): \n", + " legend(loc=loc)\n", + " label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution goes here\n", + "decorate('upper right')\n", + "decorate('lower center')\n", + "decorate('right')" + ] + }, + { + "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": 109, + "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": 110, + "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": 111, + "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": 112, + "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": 113, + "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": 114, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def run_steps(num_steps, p1, p2):\n", + " for i in range(num_steps):\n", + " step(p1, p2)\n", + " plot_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution goes here\n", + "bikeshare = System(olin=12, wellesley=5)\n", + "newfig()" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_steps(60, 0.4, 0.2)" + ] + } + ], + "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/chap02mine.ipynb b/code/chap02mine.ipynb new file mode 100644 index 00000000..7a238456 --- /dev/null +++ b/code/chap02mine.ipynb @@ -0,0 +1,10168 @@ +{ + "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": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test output\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", + "%matplotlib notebook\n", + "\n", + "from modsim import *\n", + "print(\"Test output\")" + ] + }, + { + "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": 5, + "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": 23, + "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": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare1 = System(olin=10, wellesley=2)\n", + "bikeshare1" + ] + }, + { + "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", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 24, + "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": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bike_to_olin(bikeshare1)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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": 27, + "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": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare1" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "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": 28, + "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": 29, + "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" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub data rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_data_rate_limit`.\n" + ] + } + ], + "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": 32, + "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": 33, + "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": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x == 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use `==` in an `if` statement." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "yes, x is 5\n" + ] + } + ], + "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": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sorry you lose\n" + ] + } + ], + "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 5')\n", + "else:\n", + " print('sorry you lose')" + ] + }, + { + "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": 37, + "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": 38, + "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": 42, + "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" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub data rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_data_rate_limit`.\n" + ] + } + ], + "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, check the final value of `clock`." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60\n" + ] + } + ], + "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": 66, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0, clock=0, t_first_empty=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(system, n):\n", + " olin_temp = system.olin - n\n", + " if olin_temp < 0:\n", + " if system.olin_empty == 0:\n", + " system.t_first_empty = system.clock\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": "code", + "execution_count": 68, + "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", + "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": 141, + "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": 142, + "metadata": { + "collapsed": true + }, + "outputs": [], + "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": 161, + "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": [ + "def parameter_sweep2(p1_array):\n", + " for p2 in p1_array:\n", + " system = run_simulation(p1=0.2, p2=p2)\n", + " plot(p2, system.olin_empty, 'rs', label='olin')\n", + " plot(p2, system.wellesley_empty, 'bo', label='wellesley')\n", + "\n", + "def decorate_bikeshare(xlabel):\n", + " decorate(title='Olin-Wellesley Bikeshare',\n", + " xlabel=xlabel, \n", + " ylabel='Number of unhappy customers')\n", + " \n", + "newfig()\n", + "parameter_sweep2(p1_array)\n", + "decorate_bikeshare(xlabel='Arrival rate at Wellesley (p2 in customers/min)')" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "parameter_sweep2(p1_array) #iteration printed above" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "parameter_sweep2(p1_array) #iteration printed above" + ] + }, + { + "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": 6, + "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)\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 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", + " 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": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def run_simulation(p1=0.4, p2=0.2, num_steps=60):\n", + " bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0)\n", + " run_steps(bikeshare, num_steps, p1, p2, plot_flag=False)\n", + " return bikeshare\n", + "\n", + "bikeshare = run_simulation()\n", + "bikeshare\n", + "\n", + "def num_steps_sweep(number):\n", + " for num_steps in range(number):\n", + " system = run_simulation(num_steps=num_steps)\n", + " plot(num_steps, system.olin_empty, 'rs', label='olin')\n", + " plot(num_steps, system.wellesley_empty, 'bo', label='wellesley')\n", + " \n", + "def decorate_bikeshare(xlabel):\n", + " decorate(title='Olin-Wellesley Bikeshare',\n", + " xlabel=xlabel, \n", + " ylabel='Number of unhappy customers')" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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" + }, + { + "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" + ] + } + ], + "source": [ + "newfig()\n", + "decorate_bikeshare(\"number of initial bikes at olin\")\n", + "sweep_bikes(30)" + ] + }, + { + "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/chap03mine.ipynb b/code/chap03mine.ipynb new file mode 100644 index 00000000..79d20919 --- /dev/null +++ b/code/chap03mine.ipynb @@ -0,0 +1,4167 @@ +{ + "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": 4, + "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": 5, + "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": 6, + "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": 7, + "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": 7, + "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": 8, + "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": 8, + "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": 9, + "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": 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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use dot notation to select a column from a DataFrame. The result is a Series." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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": 11, + "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": 12, + "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": 12, + "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": 13, + "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": 13, + "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": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(table2)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(census)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.indexes.numeric.Int64Index" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(census.index)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 17, + "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": 18, + "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": 17, + "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": 19, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "un = table2.un / 1e9" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "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": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2862470293832287" + ] + }, + "execution_count": 21, + "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": 22, + "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": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "abs(census - un)\n", + "\n", + "# this epression gives the difference of population values (in billions) at every index on the table" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.012862470293832286" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max(abs(census - un) / un)\n", + "\n", + "# this expression outputs the maximum difference in index values between the census and un data" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2862470293832287" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max(abs(census - un) / un) * 100\n", + "\n", + "# dividing the difference by un compares it to a baseline value by creating a ratio between it and said value. Then multiplying by 100, turns that ratio into a percent." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2813631502151765" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max(abs(census - un) / census) * 100\n", + "\n", + "# This output is almost identical to that which divided the differnce by un. This is because the two population charts are so similar that it doesn't really matter which one you use for the \"baseline value.\"\"" + ] + }, + { + "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": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.5576286540000002" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census[1950]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the last element." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.2564900110000004" + ] + }, + "execution_count": 27, + "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": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1950, 2015)" + ] + }, + "execution_count": 28, + "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": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.07229017472307693" + ] + }, + "execution_count": 29, + "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": 30, + "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": 31, + "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": 31, + "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": 32, + "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": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\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": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n2wAAAANJREFU+9NfEZoIKgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "total_growth = census[last_year] - census[first_year + 15]\n", + "elapsed_time = last_year - (first_year + 15)\n", + "annual_growth = total_growth / elapsed_time\n", + "annual_growth\n", + "\n", + "results = TimeSeries()\n", + "\n", + "results[1950] = census[1950]\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(xlabel='Year', ylabel='World population (billion)')\n", + "\n", + "#It makes the model always have a slightly higher population output than the data." + ] + }, + { + "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": 34, + "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": 35, + "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": 36, + "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": 37, + "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": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\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": 39, + "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": 40, + "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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\nDANJWrRokTwej5YuXSqPx6NJkyZp1apVkqTGxkbl5uaqurpaY8aM0SeffKKuri7Nnj3b6zXMZrNO\nnDgR+DMAAPRZr8IgLCxMy5cv1/Lly3s8N378eDU1NXU/PnnyZOC6AwCEBDeqAwAQBgAAwgAAIMIA\nACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAgwgAA\nIMIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAACg\nXoZBZ2en1q5dq/T0dFmtVhUWFurixYv3rP/ss880Z84cjRkzRpmZmdqxY0fAGgYABF6vwqCyslL1\n9fUqLS1VTU2NHA6HCgoK7lrb1tamvLw8jR49Wtu3b1dOTo6Ki4t14MCBgDYOAAicMF8Fbrdb1dXV\neuONNzRx4kRJUkVFhTIyMmS325WamupV/8EHH2jAgAEqLi6WyWTS8OHDdeLECW3atEnp6enBOQsA\nQJ/4fGdw6tQptbe3y2azdY8lJCQoPj5eDQ0NPeobGhqUlpYmk+mbl7bZbLLb7TIMI0BtAwACyec7\nA4fDIUmKiYnxGo+Oju5+7n/rR40a1aO2o6NDly9f1qBBg+76czo7O71+HgDAt9tr5u019H75DIOO\njg6ZTCaFh4d7jVssFrlcrh71N27ckMVi6VEr3dpyuhen0ylJmjt3ru+uAQBenE6nnn766fs+3mcY\nREREqKurSx6PR2Fh35S73W5FRkbetf5/F/3bj+9Wf1tSUpK2bt2qIUOGyGw29/oEAOD/WWdnp5xO\np5KSkvr0Oj7DIC4uTtKt1Ln9vSS1trb22DqSpNjY2O6/8u+s7devnx5//PF7/pyIiAiNGzeu140D\nAG7pyzuC23xeQE5MTFT//v115MiR7rHm5ma1tLQoLS2tR/3YsWPV0NDgdbH48OHDSk1N9bqoDAB4\nePhcnS0Wi7Kzs1VWVqZ9+/bp+PHjKioqks1mU0pKitxut5xOZ/dW0KxZs9TW1qY333xTZ8+e1ZYt\nW7Rr1y7l5eUF/WQAAPfnMaMX/+/p8XhUXl6u+vp6eTweTZo0SatWrdKgQYN0+PBh5ebmqrq6WuPH\nj5ck/etf/9JvfvMbNTU1aejQoSosLNRPfvKToJ8MAOD+9CoMAADfbSHbxOf+Rt/wdy52796trKws\n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\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": 41, + "metadata": { + "collapsed": true + }, + "outputs": [], + "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", + " results[t+1] = results[t] + system.annual_birth - (results[t] * 0.01)\n", + " system.results = results" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nYOTIkcTFxTFy5EhsbW3566+/WLlyJTdv3mTVqlXViv/w4cPMnz+fN954Az8/Px48eMD333+Pn58f\nx48fx9DQkBUrVjBz5kzat2/P8OHDsbe3Jz8/n9GjR5OVlcXo0aNp2rQpUVFRis/RH3/8gZGRkSKW\nuXPnYmpqypQpU8jIyGDr1q1MnDiRU6dOoaGhwYoVK1i6dCkGBgZMnjwZDw+PJz53crlcccIHkJeX\nx6VLl9i+fTsjR47E2Nj4icdX5/OanJzMtGnTGDVqFN7e3hw5coTVq1ejo6PDuHHjntjOM5HqgVmz\nZkkODg5SSEiIlJqaKqWmpkpJSUnS1atXpenTp0sODg7SkiVLFPv37t1bcnJykhISEhRlRUVFkqen\np9SzZ08pKytLUZ6RkSH16NFD6tGjh1RYWKg43sHBQTp+/Lhiv9TUVKl9+/bS8OHDn6q+x+ORJEla\ns2aN5ODgIMXExJR7rGXef/99ycnJSQoODlaUlZSUSP7+/pKjo6N0584dpeO2b9+u1Marr74qde/e\nXfH3+PHjpd69e0sFBQVK+w0fPlxyd3evNI6K7N+/X3JwcJD2799f6T5fffWV5ODgIF29elVRb8eO\nHaXExETFPnK5XPrwww+lNm3aSCkpKdWK8/z58+ViKHteP//8c6Vj/fz8JGdn53J1PmrevHmSq6ur\nlJaWplT+wQcfSA4ODorysjaWLl2qtN/48eOl1q1bS7m5uZIkSdKyZcskR0dHpdcvJSVF6ty5c7nX\n/nETJ06UHBwcnhjv47744oty711JkqT58+dLDg4O0unTp6sV/4QJE6RBgwYp7XP69Glp4MCB0uXL\nlxVlDg4O0qxZsxR///LLL5KDg4N09uxZpWN3794tOTg4SL///rskSQ9fv2HDhknFxcWK/TZt2iQ5\nODhI586dU5T17t1b8vX1rfI5KPv8VvSvf//+Umpqarn9H623Op9XX19fycHBQTp27JiiLCsrS/Lw\n8JB8fHyqjPVZ1KtunzfffJMuXbrQpUsXunfvzogRIzhx4gR+fn7MmDFDaV8rKyuaNm2q+PvmzZsk\nJCQwevRodHV1FeV6enr4+vqSmJhIcHCwotzOzk7pQpChoSGvv/46169fJzU1tdr1PR6PKkpKSjh9\n+jTdu3fH2dlZUa6mpsbkyZORJImTJ08qHfPqq68q/e3k5ERKSori702bNrF//36lC+NpaWno6uoq\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "system.annual_birth = annual_growth * 1.58\n", + "run_simulation1b(system)\n", + "plot_results(system, title='Proportional Death and Constant Birth')" + ] + }, + { + "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": 42, + "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": 43, + "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": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEjCAYAAADaCAHrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX++PHXsO/7poIKCKggyKa470ualBmWisstl1zK\nSkvzmmlfzfRmuXbdK3fTJLcWu2aamikoIsjqgqCyI/s2zPn9wY/RicVBBUE/z8fDx2Pmc875nPeM\nzHvOfM5nkUmSJCEIgiA8VzSedgCCIAhCwxPJXxAE4Tkkkr8gCMJzSCR/QRCE55BI/oIgCM8hkfwF\nQRCeQyL5C9WaO3cubm5uKv/atWuHj48PQUFBhISEPO0QH1lmZiaFhYXK55Wv9WlrLHHUZOzYsfTt\n27fBjhPql9bTDkBo3D766CPMzc0BkCSJ/Px8Dh06xNy5c8nOzuaNN954yhHWzcmTJ5k9ezYhISEY\nGBgA8Nprr9GlS5enHJkgNCyR/IVa9e/fH3t7e5WyV199lSFDhrBu3TqCg4PR0dF5StHVXUREBLm5\nuSpl3t7eeHt7P6WIBOHpEM0+Qp3p6enRt29f8vPziY+Pf9rhCILwCMSVv/BIZDIZAOXl5QD07duX\nrl27olAoOHLkCGZmZvz4449YWFgQGhrK2rVruXz5MgAdOnTg7bffxt/fX1lf37596dKlCx07dmT9\n+vVkZmbStm1b3n33XQICAlTOrW59/4ynXbt2/PHHHwD069ePTp06sX37dubOnUtISAixsbHK42/f\nvs3KlSv5888/KSgowNHRkeDgYEaOHKncZ+7cuYSHh7N8+XKWL1/OlStXMDQ0ZMiQIcyePRs9PT3l\nvn/99RdbtmzhypUr5OfnY2FhQZ8+fZg9ezYmJiZqv+9z584lMjKSRYsWsXz5cqKjo7G2tmbGjBm8\n+OKLrF69mh9++IGysjK6devGJ598omy2A4iNjWXVqlWcP3+e0tJS2rZty+TJk+nfv7/Kec6ePcvq\n1auJiYnBysqKKVOmVBtPQkICX331FX///TdlZWW0a9eO6dOn06NHD7Vfk/B0iOQv1JlCoeD8+fPo\n6Ojg7OysLD969ChOTk7MmzePjIwMLCwsOH78ODNmzKBly5ZMnToVgH379jFhwgRWr15Nv379lMef\nPXuWQ4cOMXbsWKytrdm9ezcTJ05k69atdOrUCaBO9f0znm7duqGtrc1vv/3GRx99hIuLS7WvLykp\niZEjR1JSUkJwcDDW1tYcO3aMjz/+mJs3b/Lhhx8q983KyuLNN9/khRdeIDAwkFOnTrF9+3Z0dHSU\n+50+fZpJkybh4+PDO++8g0wm48yZM+zdu5ecnBxWrVpVp/c/PT2dt956i6CgIAIDA9m2bRvz5s3j\n8OHD5OXlMX36dK5du8bOnTvR19dn6dKlQEWT17hx4zAyMuJf//oXhoaGHDx4kOnTp7NgwQLGjBmj\n/H+YNGkSrVu35t133yUrK4slS5Ygk8mqfJGMHj1a+eWgra3NkSNHmDx5MitWrGDIkCF1el1CA5ME\noRpz5syRXF1dpaioKCkzM1PKzMyU0tLSpEuXLkkzZ86UXF1dpc8++0y5f58+faS2bdtKKSkpyrKy\nsjKpZ8+eUq9evaS8vDxleU5OjtSjRw+pR48eUmlpqfJ4V1dX6bffflPul5mZKfn5+UkjR458pPr+\nGY8kSdLq1aslV1dXKSkpqcprrfTuu+9Kbdu2lSIjI5Vl5eXl0pQpUyQ3NzcpLi5O5bht27apnOOF\nF16Qunfvrnz+5ptvSn369JFKSkpU9hs5cqTk7e1dYxzVqdxn+/btyrI//vhDcnV1rXKO119/XSWO\noKAgqWPHjtLdu3eVZcXFxdLw4cMlT09PKTMzU5IkSRo+fHiV9/ivv/5SnqNScHCw1L9/f6mgoEBZ\nVlZWJo0ePVrq2rWrMpbg4GCV44TGQbT5C7UaPnw4Xbp0oUuXLnTv3p3XXnuN48ePM3bsWGbNmqWy\nb8uWLbG1tVU+v3r1KikpKYwZMwYjIyNluYmJCcHBwaSmphIZGaksd3JyUml+sLCw4KWXXuLy5ctk\nZmbWub5/xqOO8vJy/vjjD7p37467u7uyXENDg7feegtJkvj9999VjnnhhRdUnrdt25aMjAzl8w0b\nNvDDDz+o3BjPzs7GyMhIpctpXQwYMED5uHXr1gD06NFD5Rz29vakp6cDkJGRweXLl3nppZews7NT\n7qOrq8ubb75JcXExZ8+eJTMzk6ioKIYOHaryHgcEBKh0Q83Ozub8+fP06tWL4uJisrKyyMrKIjc3\nlwEDBpCRkcGVK1ce6bUJDUM0+wi1+s9//oOVlRVQkQBNTExwdnZGV1e3yr6WlpYqz5OTkwFwdHSs\nsq+TkxMAd+7cUfa0adOmTZX9WrVqhSRJ3L59u871/TMedWRnZ1NYWFjtOSqbuG7fvq1SbmFhofJc\n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\nFi9eTFFRkXJ7TEwMwcHBeHl58eKLLxIVFaVyToVCwfr16+nTpw8dO3ZkxIgRnDx5ssFesyA8KoVU\ndcnTMV6jGOreg170xUrTGkODiqUU3d3dReKvhlpX/idOnODjjz+mR48eKuX9+/cnKyuLL774gkWL\nFtVLgI8jNjaWuLg4tfZt1apVlXVkIyIiSExMVOt4V1dX3Nzc6hzjg7788kuWLFlC69atmTt3LpMn\nT6ZDhw5s2rSJGzduMGvWLPz8/Bg9ejSXL19mwoQJjB07lkWLFpGcnMzChQtJTk5m/fr15OTkMGHC\nBAICAvjhhx+4efMmH3/8scr5VqxYwW+//cann35Ky5Yt+fPPP5kxYwabN2+mc+fOj/VaBKE+KCQF\nJ2+e5GTiSd7zn42p4f2lP410jBjQzJ/oe3extTVET08Lb29vmjdv/hQjbrzUSv46OjoYGxtXu028\nsU/OyJEj6du3LwAvvfQSn376KQsXLsTBwQFXV1c2b95MfHw8AFu3bsXDw4M5c+YAFStiLVy4kMmT\nJxMfH8+FCxcoKytjyZIlGBoa0qZNG1JTU5WLvBcUFLBt2zbWrFmj/FJv1aoVMTExbNy4USR/odFJ\nykliR8QOrmfdICk5j9E/L2PH3H9jbl6xwpZMJsPPz4/i4tNoaGjg7++PhYXFU4668VIr+Y8aNYpV\nq1bh5eWFldX9LlKFhYVs3LiRoKCgegvwefLgEor6+vpoaGio9MrR09NTNvvEx8fTq1cvleP9/PyU\n2+Lj43F0dFR21wXo2LGj8vG1a9coLS1l5syZaGjcb/0rKytT+T8WhKetRF7C4bjDHL9+HIWkIDom\nk8zMYgwUN9m15wrTp/or9zU2NqZTp07o6emp/O0LVdWY/N944w3lY0mSuHbtGv3798fHxwdLS0ty\nc3O5ePEicrkcGxubBgm2rtzc3B6rKcbT07NKU1B90tJS/e+QyWQ1tlPq6elVKatclE1LSwuZTMY/\nF2nT1tZWPq7s6rZmzRpatWqlst+DXwaC8DRdSb3Criu7yCrKUpa1cjDH6HZLHEp8yb2XT3GxHD29\n+58dS8umt5j601Bj8i8rK1N57uPjoyxPSUkBoG3biiXN0tLS6is+oQbOzs5cunRJpSwsLEy5LScn\nR7mIuqmpKQCRkZHKfVu1aoW2tjapqan07NlTWb527VrKy8uZOXNmA7wKQajeveJ77I3cy8W7F1XK\n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\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": 45, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_simulation2(system):\n", + " results = TimeSeries()\n", + " results[system.t0] = system.p0\n", + " for t in linrange(system.t0, system.t_end):\n", + " alpha = 0.01745\n", + " results[t+1] = results[t] * (1 + alpha) \n", + " system.results = results" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nVgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_simulation2(system)\n", + "plot_results(system, title='Proportional model')" + ] + }, + { + "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": 47, + "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", + " print(t, results[t])\n", + " births = system.birth_rate * pop\n", + " deaths = system.death_rate * 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": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 48, + "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": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "function" + ] + }, + "execution_count": 49, + "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": 50, + "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": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1950.0 2.557628654\n", + "1951.0 2.63574993836\n", + "1952.0 2.71387122272\n", + "1953.0 2.79199250708\n", + "1954.0 2.87011379144\n", + "1955.0 2.9482350758\n", + "1956.0 3.02635636016\n", + "1957.0 3.10447764452\n", + "1958.0 3.18259892888\n", + "1959.0 3.26072021324\n", + "1960.0 3.3388414976\n", + "1961.0 3.41696278196\n", + "1962.0 3.49508406632\n", + "1963.0 3.57320535068\n", + "1964.0 3.65132663504\n", + "1965.0 3.7294479194\n", + "1966.0 3.80756920376\n", + "1967.0 3.88569048812\n", + "1968.0 3.96381177248\n", + "1969.0 4.04193305684\n", + "1970.0 4.1200543412\n", + "1971.0 4.19817562556\n", + "1972.0 4.27629690992\n", + "1973.0 4.35441819428\n", + "1974.0 4.43253947864\n", + "1975.0 4.510660763\n", + "1976.0 4.58878204736\n", + "1977.0 4.66690333172\n", + "1978.0 4.74502461608\n", + "1979.0 4.82314590044\n", + "1980.0 4.9012671848\n", + "1981.0 4.97938846916\n", + "1982.0 5.05750975352\n", + "1983.0 5.13563103788\n", + "1984.0 5.21375232224\n", + "1985.0 5.2918736066\n", + "1986.0 5.36999489096\n", + "1987.0 5.44811617532\n", + "1988.0 5.52623745968\n", + "1989.0 5.60435874404\n", + "1990.0 5.6824800284\n", + "1991.0 5.76060131276\n", + "1992.0 5.83872259712\n", + "1993.0 5.91684388148\n", + "1994.0 5.99496516584\n", + "1995.0 6.0730864502\n", + "1996.0 6.15120773456\n", + "1997.0 6.22932901892\n", + "1998.0 6.30745030328\n", + "1999.0 6.38557158764\n", + "2000.0 6.463692872\n", + "2001.0 6.54181415636\n", + "2002.0 6.61993544072\n", + "2003.0 6.69805672508\n", + "2004.0 6.77617800944\n", + "2005.0 6.8542992938\n", + "2006.0 6.93242057816\n", + "2007.0 7.01054186252\n", + "2008.0 7.08866314688\n", + "2009.0 7.16678443124\n", + "2010.0 7.2449057156\n", + "2011.0 7.32302699996\n", + "2012.0 7.40114828432\n", + "2013.0 7.47926956868\n", + "2014.0 7.55739085304\n", + "2015.0 7.6355121374\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": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nKv6EENID/S9s8sixJDKW5AAAAABJRU5ErkJggg==\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": 53, + "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": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nCAhAeHg41q5di7q6Oq19uvNrAACFhYVYuHAhAgICEBERgW3btkGlUuk1B7lcjjfffBPh4eEICAjA\nK6+8gry8PK49KSkJzz33HIYMGYLJkycjMTFR6/FVVVVYvnw5AgICEBISgg8//FCvOTxu/HfduXMH\nkZGR+OGHH9q06fN91CHWTWg0GrZ161Ymk8nYmjVruO2xsbHM3d2dffrpp+zatWts3759zNvbm50/\nf57bJzo6mi1ZsoRVVFRwP5WVlVz7oUOHmJ+fH/v5559ZTk4OW7x4MRs9ejRTKpXdJodVq1axiIgI\ndvbsWZabm8vmzp3Lnn32WabRaHpEDvX19Vr//hUVFSw6OpqFhISw8vJyveXwqPG3tLSw8ePHs6io\nKJafn8/S0tLY+PHj2T//+U/uGN39NaipqWGhoaFs7ty5LCsri6WkpLDx48ez1atX6y0HtVrNZsyY\nwaZPn84yMjLY1atX2bJly1hISAirrq5mV69eZV5eXmznzp0sPz+fbdmyhXl6erK8vDzuGDNnzmSz\nZs1i2dnZLCEhgQUHB7OPPvpILzk8ifgZY0yhULAFCxYwmUzGjh49qtWmr/fRg3SL4l9cXMzmzJnD\ngoKC2IgRI7Te8JGRkez111/X2v+tt95ic+bM4f6eOXMmi4mJ6fD4Y8eOZdu2beP+rq+vZ76+vuzY\nsWPdIofi4mImk8nY2bNnufaCggI2YsQIVlhY2CNy+LOLFy8yDw8PlpiYyG3r7BweJ/7c3Fwmk8lY\nTk4O175v3z7m5+ent/gfN4c9e/YwPz8/dvv2ba49NTWVyWQyVlJSopccsrKymEwmY/n5+dw2pVLJ\nfHx82Pfff8/efvvtNu+ZOXPmsLVr1zLGWt83MpmMFRcXc+1Hjhxhfn5+XHHszBweN37GGDtz5gwb\nPXo0mzp1arvFXx/vI110i26fixcvwsHBAbGxsejfv79WW1FREQICArS2DRo0COnp6dxXwfz8fEil\n0naPXVVVhcLCQgwbNozbZmpqCi8vL6SmpnaLHJKSkiAWixESEsK1u7i4ID4+Hk5OTj0ih/sxxvDu\nu+9i7NixiIiIAKCf1+Fx4u/Tpw8MDAxw6NAhKJVKVFdX48SJE/Dy8tJb/I+bQ1FREdzc3GBpacm1\n3+3+TE1N1UsODg4O+OyzzzBw4EBu293JF2tra5Gamqr1/AAQFBTEPX9qair69esHR0dHrn3YsGFo\naGhAdnZ2p+fwuPEDwKlTpzBlyhR88803bY6vr/eRLrrF3D7PPfccnnvuuXbb7OzscPPmTa1tvrfm\nnQAAChpJREFUZWVlaGlpQV1dHVpaWlBbW4vTp09j+/btaGpqQmBgIFauXAmJRMJNbiSRSNoc90lO\nFPc4ORQWFsLR0RGxsbHYvXs3qqur4e/vjzVr1sDe3r5H5CAWi7ntcXFxuHLlCjZv3sxt00cOjxO/\nRCLB2rVrsWnTJhw4cAAajQZSqRT79u3TW/yPm4OdnR3i4+Oh0Wi4JUvLysoAtBYdfeRgZWWFESNG\naG37+uuv0dzcjPDwcMTExPzl89+6dQt2dnZt2gHg5s2bEAgEnZrD48YPAGvXru3w+Pp6H+miW5z5\n/5XIyEjs378f586dg1qtxvnz5/Hf//4XANDS0oKrV68CAAQCAbZs2YL33nsPhYWFmDdvHpqbm9HU\n1AQAMDLSXspRKBRCqVR2ixzq6+tx7do17NmzB6tXr0ZMTAyqqqrw8ssvQ6lU9ogc7rd3716MHz9e\nazKprs7hQfFrNBpcv34dISEhOHjwID7//HPw+XysWLECarW6y+PXJYcJEyagqqoKH374IZqamiCX\ny7F+/XoIBAK0tLR0SQ5xcXH46KOPMH/+fEilUjQ3N0MoFHb4/E1NTW3iMzQ0BI/H65LPwsPG/yDd\n4X10V7c48/8rixYtQnV1NRYuXAi1Wg1XV1e88sor2Lx5M8zNzREeHo5z585pnXm6uroiIiICiYmJ\n6NevH4DWK+/3u3PnDkQiUbfIQSAQQKFQICYmhvu6u23bNoSHhyMxMRF9+/bt9jncVV5ejgsXLmDv\n3r1aj787sVRX5fCg+I8dO4bY2FjEx8fDxMQEAODk5IQxY8YgMTGRO/vszq+BRCJBTEwMoqOj8eWX\nX8LExATLli1Dbm4uzM3N9f4aHDlyBG+//TYmTpyIlStXAmgten8+Wbj/+Y2NjdvE19LSAsYYTExM\n9JrDo8T/IF39Obhftz/zFwqFiI6OxsWLF3H69GnExsbC2NgYNjY23If0/sIPtH6FsrKyws2bN+Hg\n4ADg3rTQd1VUVLT56tVVOUgkEpiYmGj1c1pbW8PS0hKlpaU9Ioe74uLiYGtr26ZftKtzeFD8GRkZ\ncHFx0crF0dERVlZWKC4u7vL4dckBAEaNGoWkpCQkJibi3LlzeP7551FdXQ1HR0e95vDJJ59g9erV\nePHFF/HBBx9w3VAODg6oqKjo8Pnt7e3bjQ9o7SrRVw6PGv+DdIf30V3dvvhv2bIFu3btglAohK2t\nLQDg5MmTCAsLAwB89dVXCA8P1/rfuKysDNXV1XBzc4O1tTWcnZ1x4cIFrr2hoQGZmZkIDAzsFjkE\nBASgsbERBQUF3GMqKytx+/ZtDBgwoEfkcNfdC2J3Pyx3dXUOD4rf3t4ehYWFWmdkFRUVqKmpgZOT\nU5fHr0sOqampePnll6FWq2FnZwehUIiTJ0/CxMQE/v7+esth9+7d2Lp1K5YtW4a3335ba7W9oUOH\nIiUlRWv/5ORk7kL20KFDUVJSonVtIzk5GaampvDw8NBLDo8T/4N0h/cRR69ji3QwZ84creFthw4d\nYv7+/iwhIYEVFxezdevWMV9fX1ZQUMAYY6yoqIj5+vqylStXsvz8fJaamsqmTp3KZs6cyR3jwIED\nzNfXl/34448sNzeXLV68mI0dO7bTxtU+bA4ajYbNmjWLRUZGsosXL7Ls7Gw2d+5cNn78eC7G7p7D\nXWPHjmWffPJJu8fUZw4PG395eTkLCAhgy5YtY3l5eSwjI4O9+OKLbMqUKaylpUXv8T9KDlVVVSwg\nIIBt3LiRFRcXs19//ZX5+/trvR6dnUN2djYbNGgQW716dZv7PhoaGlhOTg7z9PRkMTExLD8/n23d\nupV5e3tzQys1Gg2bPn06mzFjBsvMzOTG+d8/NLIzc3jc+P+svaGe+n4fdaTbF3/GGNuxYweLiIhg\nvr6+bM6cOSwjI0OrPT09nc2ZM4f5+fmxYcOGsVWrVrGamhqtfT799FMWFhbGfH192T/+8Q+tccTd\nIYfa2lq2Zs0aFhgYyHx9fVlUVBS7efNmj8qBMcb8/PzYgQMHOjyuvnJ4lPhzc3PZK6+8wgIDA1lY\nWBhbuXIlq6qq6pL4HzWHlJQU9sILL7AhQ4awMWPGsD179rQ5bmfmsHnzZiaTydr92bFjB2OMsfj4\neDZx4kTm5eXFIiMj2ZkzZ7SOUVFRwaKiopiPjw8LDQ1lmzdvZmq1Wi85PIn479de8e/M+B8GLeZC\nCCG9ULfv8yeEEPLkUfEnhJBeiIo/IYT0QlT8CSGkF6LiTwghvRAVf0II6YWo+JNeLTo6Gu7u7h2u\nxhQXFwd3d3fs3LlTz5ER0rlonD/p1err6/Hss8+Cx+Phxx9/hKmpKdemUCgwceJE2Nvb45tvvgGf\nz+/CSAl5sujMn/RqZmZmeOedd3Djxg1s2bJFq+2DDz5AbW0tNm7cSIWfPHWo+JNeLyIiAlOnTsX+\n/fuRkZEBAEhJScHhw4fx2muvaa0Sd/DgQUyYMAFeXl4YPXo0du/ejT9/eT5w4ACmTp0KHx8fDBky\nBNOmTcNvv/3GtR8+fBh+fn7Yv38/QkJCEBQUhNLSUv0kS8j/ULcPIWhdom/SpEmwt7fHgQMHMG3a\nNFhZWeGrr77iZnXcsWMHPv74Y8ybNw9hYWHIyMjAzp07MW/ePG6+9z179mDTpk1Yvnw5fHx8UFNT\ng127diEvLw9xcXGws7PD4cOHER0dDalUipUrV+L27duYMmVKV6ZPeiO9zyZESDf122+/MZlMxmbP\nns38/Py4Rc8ZY6ympoZ5e3uzd999V+sxn3/+ORs8eDArLy9njDG2bt06tmXLFq19MjIymEwmY7/+\n+itjrHV2TplMxn7++edOzoiQjlG3DyH/M2bMGEyaNAkpKSlYtWqV1gLqFy9ehFKpxMiRI6FSqbif\nUaNGQaVS4fz58wBa129dsWIFamtrcenSJfzwww84ePAggLbLXQ4aNEh/yRHyJ91+GUdC9Ck8PBzH\njx9HRESE1vaamhoAwLx589p93N3VnQoLCxEdHY3k5GQIhUK4uLjAzc0NANpcG7h/1TBC9I2KPyE6\nuLtOcUxMDLcu9P0kEgnUajUWLVoEMzMzHDlyBO7u7hAIBMjJyUFsbKy+QybkL1G3DyE68PX1haGh\nIeRyOby9vbkfpVKJrVu3Qi6XQy6Xo6ioCNOnT4enpycEgtZzq9OnTwMANBpNV6ZAiBY68ydEBzY2\nNnjppZewadMm1NbWwt/fH2VlZdiyZQssLS3h6uoKQ0NDODg4YO/evbC2toaZmRlOnz6Nr7/+GgDQ\n1NTUxVkQcg+d+ROio5UrV2LFihWIjY3FwoULsXXrVowYMQJ79+6FUCgEj8fDzp07YW1tjTfeeAMr\nVqzAH3/8gc8++wxOTk5ITU3t6hQI4dA4f0II6YXozJ8QQnohKv6EENILUfEnhJBeiIo/IYT0QlT8\nCSGkF6LiTwghvRAVf0II6YWo+BNCSC/0/wHXUTwyC+F0lQAAAABJRU5ErkJggg==\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='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": 55, + "metadata": { + "collapsed": true, + "scrolled": false + }, + "outputs": [], + "source": [ + "def update_func1c(pop, t, system):\n", + " if t < 1980:\n", + " return pop + (pop * system.alpha1)\n", + " else:\n", + " return pop + (pop * system.alpha2)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "system.alpha1 = 0.0195\n", + "system.alpha2 = 0.014\n", + "\n", + "run_simulation(system, update_func1c)\n", + "plot_results(system, title='Combined Birth and Death')" + ] + }, + { + "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": 57, + "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": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap03-fig04.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nI9D/AziXxiT5VwkcAAAAAElFTkSuQmCC\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": 60, + "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": 61, + "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": 62, + "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": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13.88888888888889" + ] + }, + "execution_count": 63, + "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": 70, + "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] = results[t] + update_func(results[t], t, system)\n", + " system.results = results\n", + "\n", + "def update_func2(pop, t, system):\n", + " r = system.alpha\n", + " K = -system.alpha / system.beta\n", + " return r * pop * (1 - pop / K)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "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, title='Quadratic model (Carrying Capacity Formula)')" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution above" + ] + }, + { + "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": 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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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": 73, + "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": 117, + "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", + "
prbunmaddisonhydetantonbirabenmjthomlinsondurandclark
Year
1913NaNNaN1793.NaNNaNNaNNaNNaNNaNNaN
1920NaN1860.01863.1912.NaNNaNNaNNaNNaN1968.
1925NaNNaNNaNNaNNaNNaN2000.0NaNNaNNaN
1930NaN2070.0NaN2092.NaNNaNNaNNaNNaN2145.
1940NaN2300.02299.2307.NaNNaNNaNNaNNaN2340.
\n", + "
" + ], + "text/plain": [ + " prb un maddison hyde tanton biraben mj thomlinson durand \\\n", + "Year \n", + "1913 NaN NaN 1793. NaN NaN NaN NaN NaN NaN \n", + "1920 NaN 1860.0 1863. 1912. NaN NaN NaN NaN NaN \n", + "1925 NaN NaN NaN NaN NaN NaN 2000.0 NaN NaN \n", + "1930 NaN 2070.0 NaN 2092. NaN NaN NaN NaN NaN \n", + "1940 NaN 2300.0 2299. 2307. NaN NaN NaN NaN NaN \n", + "\n", + " clark \n", + "Year \n", + "1913 NaN \n", + "1920 1968. \n", + "1925 NaN \n", + "1930 2145. \n", + "1940 2340. " + ] + }, + "execution_count": 117, + "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": 118, + "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": 119, + "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": 120, + "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": 121, + "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": 122, + "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": 250, + "metadata": {}, + "outputs": [], + "source": [ + "p0 = table1.biraben[1]\n", + "\n", + "prehistorical_data = System(t0=1, t_end=1940, p0=p0, alpha1=0.00008, alpha2=0.0005, alpha3 = 0.002, alpha4=0.004)\n", + "\n", + "def update_func3(pop, t, system):\n", + " if t < 750:\n", + " return pop + pop * prehistorical_data.alpha1\n", + " elif t < 1400:\n", + " return pop + pop * prehistorical_data.alpha2\n", + " elif t < 1700:\n", + " return pop + pop * prehistorical_data.alpha3\n", + " else:\n", + " return pop + pop * prehistorical_data.alpha4\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", + "run_simulation(prehistorical_data, update_func3)" + ] + }, + { + "cell_type": "code", + "execution_count": 251, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nbNlS6tixo9rx9vb20vXr1+Wy0NBQyd7eXpowYYJc1qtXL6lZs2by69q1a0szZsxQi33x4sWSu7u7\nlJCQIEmSJJ09e1ays7OTdu7cKe8zf/58yc7OTjpy5IjasdOnT5fs7Oyk48ePS5IkScuWLZPs7Oyk\nNWvWqO23c+dOyc7OTjp79qwkSZJ0/Phxyc7OTlq1apXafuPGjZM+/vhjKTY2VlqzZo1kb28v3b17\nV22fBQsWSHZ2dvK1v153TrL26dy5s5SSkiKXL1q0SLKzs5NOnjwpSZIk/fzzz5KdnZ20ceNGtePX\nrVsn2dnZSdu2bctTfbnF9nr56681vXZJkiQ7Oztp4sSJ8uuQkBDJzs5OWrZsmSRJkhQcHCzZ29tL\nI0aMkDIyMuT9rly5Itnb20vffPON2nFNmjSREhMT5f327dsn2dnZSb/99luuP99Hjx5JDg4O0oIF\nC9TKb9++LX388cfS7Nmz1eq6evWqvE9KSorUqVMntWOz3k+vev13uVevXpKdnZ109OhRuWzbtm2S\nnZ2d1LVrV7ksIyNDaty4sdStWzdJkiRJpVJJLi4ukpeXl1r98fHxkqOjozRkyBC5LOv3OSQkRO28\nLVq0UPsZpaamSj179pQaNWok/z5o8l4ryURzXzHVqVMnGjZsSMOGDXF1daVbt24EBgbSu3dvxo0b\np7Zv5cqVKV++vPz6n3/+ISQkhBYtWhAbG0t0dDTR0dG8ePGCZs2acfPmTbVh4VWrVuXjjz+WX1es\nWBETExMiIyNzja9ChQrs378ff39/uUN4zJgx7Ny5EwMDg1yPO3r0KLa2ttnu0IYPHw5AYGCgWnn9\n+vVzrQvg+PHjaGlp0atXL7XyiRMn8scff2BgYMDgwYM5ffq02t3nixcv0NLK/PV/l2HB/fv3Vxu4\n4unpCWReX9a/hoaGeHh4qB3Xp08fDA0N5f00re9d5ee1Hzt2DEmSGDx4sNzsDFCnTh0+++wzTpw4\nQVpamlzepEkTtZFsDg4OADx79izXcxw5coSMjAzc3Nzk39vo6GjMzMyoWbMmx48fBzJ//wAWLlzI\nhQsXSE9PR6lU4u/vn+39oQldXV0+//xz+bWNjQ2Q2TyXRaFQULFiRTl+HR0dzpw5w8yZM9Xqev78\nOYaGhm/82T5//pzz58/TpEkTXrx4IV9nXFwcLVu2JDIykmvXrsnX+i7vtZJCNPcVU/Pnz8fMzAwA\nLS0tjIyMsLW1RVdXN9u+pqamaq8fPXoEwLx585g3b16O9T9+/FhObK8fD5mDNFJTU3ONb/r06YwZ\nM4bJkyczbdo0nJycaNmyJZ07d6ZMmTK5HhcaGqr2YZDF3NwcIyMjwsLC3nhtrwsLC8PU1BRDQ8Ns\n9Zmbm8uvU1NTWbx4MTdu3ODRo0eEhobKfVYZGRlvPEdOXh8Cb2xsjLGxsRx/aGgo1tbW2ZoRlUol\n1tbW2a7zbfW9j/y69qx+p6wP8FfZ2tpy6tQpnj9/LpeZmJio7ZOVhN90zqzf3e7du+e4Pevn6eLi\nQp8+fdi6dSt//fUXxsbGuLq60qFDB5o2barxNWUxNjamVKmXH4fa2tpA9t8/bW1tua8pK57jx48T\nGBjI/fv3efjwodxXJL1hFaSsZ7e2bt3K1q1bc9wnPDwcePf3WkkhklQx5eLikm0Iem6y3lBZsj4E\nRo8ejZOTU47HVKtWTf4+66/qvGjYsCHHjh2Tv06fPs2cOXPYtGkT/v7+2T6gsrzpjZuRkZHtQ/1t\nsb06OCI3Fy5cYMCAAejr69OoUSM6d+7MRx99xKNHj7L9FaypnPqw0tPT5Xjzep1vqy83b7v+/Lz2\nt10TZF5H1pDvd/m9yqpn1apVlC5d+o37Tpkyhd69e3Po0CFOnjzJoUOH2Lt3L926dcvztb2aoF71\n6h3j6yRJYvjw4Rw7doy6devi7OxMt27dqF+/Pn379n3j+bL+3zw8PHLt961evTrw7u+1kkIkqRKo\nYsWKAPIH06uuXr1KbGzsWz8A3kSlUnHz5k0qVKhA+/btad++PRkZGWzcuJF58+axb9++XGexqFix\nIvfv389W/uzZMxISErC0tMxTLFZWVpw5c4bExES1po8bN26wYcMGhg0bxrJlyyhdujT79u1Te0Ov\nXr06T+d6VUhIiFqij46OJj4+nqpVqwKZ13nlyhVSU1PVEpBKpSI0NFRt4Iom9WV94KtUKrXj3tQk\nC+TrtWf90fR///d/1KlTR23b/fv30dfXp2zZsiQkJOS57ixZv7uWlpbUrFlTbduJEyfkO+bIyEiC\ng4Np2LAhgwYNYtCgQTx//pwRI0awfft2JkyYUOB3GRcuXODYsWMMHz6c0aNHy+VpaWnExMS88Xm+\nrOvU1tbO9h69e/cuoaGh6Onpvdd7raQQfVIlkKOjI+bm5mzdupXExES5PCEhQW42eP3uKy+eP39O\n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\namtigl9K9sll3QthVQZN5ZqklixZQqNGjbCwsGDJkiVvrEQkqQ9H7969qVy5MrNnz862rV+/fpib\nm3Pv3j1iY2PZu3cvenp6avvs378fLy8vVq1ahZ2dHc2bN1fbXrp0aapWrUrXrl3p2bOn3GTs7+/P\n5MmTc41r6dKltGlTPNavEYT/iuI+2wSIaZGE12hra/Pjjz/y9ddf4+vry7fffitvi42NZfbs2XTq\n1Ak3Nzd5xvSVK1dSu3ZtJEkiPj6eY8eO4ePjQ2hoqNrM+dra2pw4cSLH85YtW7ZgL0wQhBxlzTYh\nSRKBQSEoVSlEScmYGBX9M1IgpkUqEsX9CW8HBwcGDRrE2rVr6dChAzVr1gRg3rx5lCpViilTpqjt\nX7ZsWXlNMQsLC2xtbSlVqhRz586lc+fOVK9eXd5XrD0mCMXT8/gUbj2M5tZDUOpoM+BLR7SLPkdp\nlqRiY2Px9fXlypUrxMfH57jPoUOH8jWwkiq3J7yBYpWohg0bxuHDh/H29mb79u1cvHiRnTt3sm7d\nOsqUKfPW47t06cLixYs5cOAAo0aNKoSIBUHIi6CzZzlw6xbhaWlYliqFfTkbILNFw9rCEO1iMLIP\nNExS06ZNIzAwkM8//5waNWoUdEwlWnT0gVzKDxarJKVUKvnxxx/p3r07v//+O1u3bqVLly58/vnn\nGh1vYGBApUqVuHPnTgFHKghCXgWdPYvf9evy67C0NG7fDqW6QQrmFhZUrvAB9Em96syZM0ydOpUe\nPXoUdDwlnkqVfd2WzPLHhRbDrl272L9/f7bylJQUvvzyS/l1nTp16Nu3L9OnT6d8+fJ5XpnZyMiI\nhISXDwqmp6fj7Oycbb9y5cpx9OjRPNUtCMK7O3DrForT5Sn3lyl6cdoklk0j1i2SEKuYf5PU21tL\nCotGSUpfX18sBJhPlEpLUlLCcii3KrQYWrRowdixY7OV55SExowZw8aNGxkyZAiGhnl7+jwhIUGt\nD0pbW5tdu3Zl209LSytP9QqC8H7CT5hS8aCF/FpLktAP0SMJMKlXmjL6xWNVXtAwSfXq1Yv169fj\n4uKCgYFBQcdUopmYtFXrk3pZXnjDrw0NDalSpUq28tKlS+daltO2N0lOTub+/fu0b99erTyn8wqC\nULjKnzVTe51snAaAXkRpqhSjpj7QMEl5eHgQEBBAkyZNsLGxyfbsjEKhYPPmzQUSYEmT1e8UHX0Q\n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\nXl4eZ86cYfr06b/rzevLQzVy5EhGjhzZ4DaBgYGsWrXqsvt95JFHeOSRR35Xna62ul58JTtKMJ41\nouqkwm9My/XuqzNmzBimTZvGP//5TwYNGmTX069OVFQUaWlpdmVLly4lMzOT1atXO/1eSUlJ+Pr6\n8sUXX7B//35eeuklwHrxDQ4OJicnh4kTJ9rW/+STT0hPT2f+/PnExsaydetWTCaT7YJ/aZ1cXV25\n9dZb+e9//0tZWRnjx49vsC4ajYby8nJqa2txdXVFrVazcOFCxo4dS3h4eIMp7N944w1MJpPtuMvK\nylAoFHh7e+Pj44OrqysHDhygR48etm1SU1Mb3N+loqOj2bRpEz4+Pnh7ewPWZsSnn36aqVOn0qlT\nJ959911eeOEFW2elr7/+mieffJLi4mL8/dtXojvBniRJ9OjsS/dwH/6z+Sd8zx2jyuxLreyGt7mC\nTqU/Yy7QAUmtXdVm51THidraWoeXLMtERUUxf/582zMLwTleiV50eakLPf7Wgy4vdWnxAAXWIQPe\n3t6sXLmy3qY+sH45SUlJYfXq1Zw+fZpvvvmGjRs32t1tVFdXU1hYWO+r7i5BoVAwbtw43n77bXr2\n7Gl3IX/00Uf54IMP+Oyzzzhz5gxbt25lwYIFtm7td999N6WlpcydO5cTJ07w9ddf1/vlZsKECfz0\n00+kpaVx++23N3jcd955JxUVFbz44oucOHGClJQUnn/+eXr06EFxcTFPP/10vcMV6rru79mzxzb7\nf2JiIhqNBrVazbRp01i2bBk7duzg1KlTrF27ln//+99MmzbNqb/Hbbfdhq+vL7NmzeLIkSMcP36c\np556isOHDxMdHY2vry/bt29n3rx5nDhxghMnTrB9+3Y6d+6Mr6+vU+8hXPsUCgnd15lovCsJiMom\ntHcWAVHZaLwrydicceUdXIOcupMSmXfbH4VCwc0338xnn33W4PO63r17s2LFCpYvX87q1asJCQnh\nySef5K677rKts27dugafSf7888+2O7Q77riDd955x2Eg9z333IPRaOTdd9/llVdeITg4mBkzZth6\n24WGhvLBBx/w+uuvM378eLp06cL06dPtnmEB9OrViy5duhAWFnbZu4qIiAjee+89Fi5cyLhx4/D2\n9iY5OZlZs2aRlpbG66+/TmlpqUNv0EmTJpGdnc2cOXOorKxk0KBBvPzyy7bljz/+OAqFgtdff51z\n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\nBUePHpV79OghZ2Vl2coMBoMcHx8vb9mypdU/mx26uU8kSGy8zMxMunXrVu+y/fv3251LgMGDB9vO\n5f79+wkLCyMiIsK2fNCgQVRVVZGenn71Kt1GHDhwgNDQULZu3Up4eLjdsqaeu+LiYk6dOmW3D61W\nS1xcXLv9LF/ufB4/fhy1Wk1YWFi924rzeUFoaCjvvPMOXbt2tZVJkgRAWVlZq382293cfY0hEiQ2\nXmZmJgaDgUmTJpGbm0t0dDSzZ8+mb9++5OXlXfZc5ufnExQU5LAcQKfTER8f3zIH0UrGjRtnm/T4\nUk09d0ql9b9yR/osX+58ZmZm4unpydNPP82+ffvw9fVlwoQJPPDAAygUCnE+L+Lr68vIkSPtyj78\n8ENqamoYPnw4b7/9dqt+Njv0nZRIkNg4NTU1ZGdnU1lZybPPPsvf/vY3goKCmDJlCidOnKCmpgaV\nSmW3zcXnUq/X4+bmZrfc1dUVSZI6/Plu6rnT6/UADut01M9yVlYW1dXVDB8+nHfffZd7772X5cuX\ns3LlSkCcz8vZuXMnb731FtOmTSMqKqrVP5sd+k7q4gSJddEeRILEhqjValJSUlCpVLYP7YIFCzh6\n9Cgff/wxbm5u1NbW2m1z8blUq9UYjUa75bW1tciyjLu7e8scRBvV1HNXN7Hnpet01M/ym2++SXV1\nNV5eXgDExMRQUVHBmjVreOyxx8T5bMDmzZt56aWXuOWWW3jmmWeA1v9sdug7KZEgsfE8PDzsvlUp\nFAq6d++OTqcjNDSUgoICu/UvPpchISH1nmtwbAroaJp67sRn2Z5SqbQFqDoxMTFUVVVRUVEhzmc9\n/va3v/H8889z9913s3DhQhQKa3ho7c9mhw5SFydIrONMgsSOKi0tjf79+5OWlmYrM5vNZGRkEB0d\nzYABA0hJSbHbZu/evQwcOBCAAQMGkJ2djU6ns1uu1WqJjY1tmYNoo5p67vz9/enSpYvdZ7mqqoq0\ntLQO+VmeNGkSr776ql3ZkSNHCAoKwsvLS5zPS6xbt45ly5bx+OOP89JLL9k6TkAb+Gz+7n6L7cSi\nRYvkoUOHyrt377aNk7q0u6VgVVtbK996663y+PHj5UOHDsnHjx+Xn3nmGTkxMVEuKiqSMzIy5N69\ne8tvv/22nJWVJS9btkzu06ePrWurxWKRJ02aJP/xj3+U09LSbOMpLu6a2lFMmTLFrst0c5y7jz/+\nWE5ISJC/+uor+ddff5UfeeQRefTo0R2ie/+l53Pt2rVyXFycvGXLFvn06dPy559/LsfHx8uff/65\nLMvifF4sPT1d7tmzp/z88887jH+sqqpq9c9mhw9StbW18htvvCEPGjRI7t+/v/zEE0/IxcXFrV2t\nNisvL0+ePXu2nJSUJMfHx8vTpk2Tf/31V9vyXbt2ybfccoscFxcn33777fKPP/5ot31BQYE8Y8YM\nOT4+Xh46dKi8ZMkS2Ww2t/RhtLpLL6qy3Dznbs2aNfKwYcPkhIQE+cEHH2xwnFB7c+n5tFgs8nvv\nvSePHj1ajouLk0ePHi1/+umndtuI82m1ZMkSuUePHvW+Vq1aJcty6342RdJDQRAEoc3q0M+kBEEQ\nhLZNBClBEAShzRJBShAEQWizRJASBEEQ2iwRpARBEIQ2SwQpQRAEoc0SQUoQrrK5c+cSExPjkM20\nzs6dO4mJiWH16tUtXDNBaPvEOClBuMoqKyu59dZbkSSJr776Cq1Wa1tWUVHBLbfcQkhICJ9++iku\nLi6tWFNBaHvEnZQgXGUeHh7Mnz+fs2fPsnTpUrtlCxcupKysjAULFogAJQj1EEFKEFrAiBEjGD9+\nPH//+985fPgwACkpKWzatInZs2cTFRVlW/eTTz4hOTmZuLg4brzxRtatW8elDR4ff/wx48ePJz4+\nnr59+zJhwgT+85//2JZv2rSJfv368fe//50hQ4YwePBgcnJyWuZgBaEZieY+QWghZWVljB07lpCQ\nED7++GMmTJiAr68vGzdutM06vWrVKlauXMnUqVMZNmwYhw8fZvXq1UydOtWW3+f9999n8eLFPPHE\nE8THx1NaWsratWs5fvw4O3fuJCgoiE2bNjF37lyioqJ45plnOHfuHHfccUdrHr4g/C4dOumhILQk\nb29v5s2bx8yZM3nwwQc5e/Ysa9assQWosrIy3nnnHe677z6ee+45AIYPH45Go2HJkiXcf//9BAcH\nk5uby/Tp03n44Ydt+w4NDWXixIkcPnyYP/zhDwBYLBb+8pe/cP3117f8wQpCMxHNfYLQgm666SbG\njh1LSkoKc+bMITw83LbswIEDGAwGRo0ahclksr1uuOEGTCYTv/zyCwB//etfmTVrFmVlZRw6dIh/\n/etffPLJJwAOGVR79uzZcgcnCFeBuJMShBY2fPhwtm3bxogRI+zKS0tLAZg6dWq929VlOz116hRz\n585l7969qFQqunXrRnR0NIDDsyt3d/dmrr0gtCwRpAShjfD09ATg7bffJiwszGF5cHAwZrOZhx9+\nGA8PDzZv3kxMTAxKpZKMjAy2bt3a0lUWhKtONPcJQhuRkJCAq6srRUVF9OnTx/YyGAwsW7aMoqIi\nioqKOH36NJMmTaJ3794oldbvmd9//z1gfQ4lCO2JuJMShDYiICCA+++/n8WLF1NWVkb//v3Jzc1l\n6dKl+Pj40L17d1xdXQkNDWXDhg34+/vj4eHB999/z4cffgiAXq9v5aMQhOYl7qQEoQ155plnmDVr\nFlu3bmX69OksW7aMkSNHsmHDBlQqFZIksXr1avz9/Xn22WeZNWsWR44c4Z133iEyMpL9+/e39iEI\nQrMS46QEQRCENkvcSQmCIAhtlghSgiAIQpslgpQgCILQZokgJQiCILRZIkgJgiAIbZYIUoIgCEKb\nJYKUIAiC0GaJICUIgiC0Wf8P5ypI1XINhGgAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "newfig()\n", + "plot_prehistory(table1)\n", + "plot(prehistorical_data.results, '--', label='model')\n", + "decorate(xlim=[0, 2000], xlabel='Year', \n", + " ylabel='World population (millions)',\n", + " title='Prehistorical population estimates')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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/chap04mine.ipynb b/code/chap04mine.ipynb new file mode 100644 index 00000000..ee2fa888 --- /dev/null +++ b/code/chap04mine.ipynb @@ -0,0 +1,1054 @@ +{ + "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": 2, + "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": 3, + "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": 4, + "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", + " newfig()\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": 5, + "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": 6, + "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": 7, + "metadata": { + "collapsed": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "table2 = tables[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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": 9, + "metadata": {}, + "outputs": [ + { + "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)" + ] + }, + { + "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": 10, + "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": 11, + "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": 12, + "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": 13, + "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": 13, + "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": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nCCHkwVHxJ4SQcYiKPyGEjENU/AkhZByi4k8IIePQqCv+CQkJePXVV5Xazp49i8WLF8Pb2xvPPfcc\nLly4oNR/4sQJuLm5KT2mTZumtM3Ro0cxa9YseHl5Yd26daioqBhVOfT29iIxMRGhoaHw8fHBxo0b\nUV1dPWZyOHDgwKD3YODx/vvvqz2Hh3kPqqursXnzZvj5+SEsLAzx8fFoa2tT2mY0vwcAUFFRgQ0b\nNsDPzw/h4eHYv38/+vv71ZqDVCrFK6+8grCwMPj5+WH9+vUoKSnh+jMyMrB06VLMmDEDTz/9NNLT\n05We39jYiK1bt8LPzw/BwcF499131ZrDcOMf0NvbiyVLluCrr74a1KfO42hIbJRQKBRs3759TCQS\nsd27d3PtqampzM3NjX300UesvLycHT9+nHl6erJLly5x2yQkJLDNmzcziUTCPRoaGrj+L774gvn4\n+LDvvvuOFRUVsU2bNrE5c+YwmUw2anLYuXMnCw8PZ7/99hsrLi5mq1evZosXL2YKhWJM5NDR0aH0\n+5dIJCwhIYEFBwczsVisthweNv6+vj42f/58Fhsby8rKylhOTg6bP38++8tf/sLtY7S/By0tLSwk\nJIStXr2aFRQUsKysLDZ//ny2a9cuteUgl8vZ888/z5YvX87y8/NZaWkp27JlCwsODmZNTU2stLSU\neXh4sIMHD7KysjKWlJTEpk+fzkpKSrh9rFixgq1cuZIVFhayX375hQUFBbH33ntPLTk8ivgZY6y9\nvZ39+c9/ZiKRiJ09e1apT13H0f2MiuJfVVXFYmJiWGBgIIuIiFA64JcsWcJ27NihtP2rr77KYmJi\nuJ9XrFjBkpOTh9z/3Llz2f79+7mfOzo6mLe3N/v6669HRQ5VVVVMJBKx3377jeu/ceMGi4iIYBUV\nFWMih9/Lzc1l7u7uLD09nWsb6RyGE39xcTETiUSsqKiI6z9+/Djz8fFRW/zDzeHIkSPMx8eHNTc3\nc/3Z2dlMJBKx6upqteRQUFDARCIRKysr49pkMhnz8vJiZ86cYa+99tqgYyYmJobFx8czxm4fNyKR\niFVVVXH9p0+fZj4+PlxxHMkchhs/Y4xduHCBzZkzh0VHR9+z+KvjOFLFqLjsk5ubC1tbW6SmpmLS\npElKfZWVlfDz81Nqmzp1KvLy8riPgmVlZXB2dr7nvhsbG1FRUYGAgDsreRkaGsLDwwPZ2dmjIoeM\njAyYmZkhODiY63dycsK5c+fg6Og4JnK4G2MMb775JubOnYvw8HAA6nkfhhP/hAkTwOfz8cUXX0Am\nk6GpqQnff/89PDw81Bb/cHOorKyEq6srTE1Nuf6By5/Z2dlqycHW1hYff/wxpkyZwrUNTL7Y2tqK\n7OxspdcHgMDAQO71s7OzYWdnB3t7e64/ICAAnZ2dKCwsHPEchhs/APz888+IiorCZ599Nmj/6jqO\nVDEq5vZZunQpli5des8+Kysr1NXVKbXV1tair68PbW1t6OvrQ2trK86fP48DBw6gu7sb/v7+iIuL\ng7W1NTe5kbW19aD9PsqJ4oaTQ0VFBezt7ZGamorDhw+jqakJvr6+2L17N2xsbMZEDmZmZlx7Wloa\nrl+/jr1793Jt6shhOPFbW1sjPj4ee/bswcmTJ6FQKODs7Izjx4+rLf7h5mBlZYVz585BoVCAz+dz\n/cDtoqOOHIRCISIiIpTaPv30U/T09CAsLAzJycl/+Pr19fWwsrIa1A8AdXV1EAgEI5rDcOMHgPj4\n+CH3r67jSBWj4sz/jyxZsgQnTpzAxYsXIZfLcenSJfzrX/8CAPT19aG0tBQAIBAIkJSUhLfffhsV\nFRVYu3Ytenp60N3dDQDQ1dVV2q+Ojg5kMtmoyKGjowPl5eU4cuQIdu3aheTkZDQ2NuLFF1+ETCYb\nEzncLSUlBfPnz1eaTErTOdwvfoVCgZs3byI4OBinTp3CJ598Ai0tLWzbtg1yuVzj8auSw4IFC9DY\n2Ih3330X3d3dkEqleOONNyAQCNDX16eRHNLS0vDee+9h3bp1cHZ2Rk9PD3R0dIZ8/e7u7kHxaWtr\ng8fjaeRv4UHjv5/RcBwNGBVn/n9k48aNaGpqwoYNGyCXy+Hi4oL169dj7969MDY2RlhYGC5evKh0\n5uni4oLw8HCkp6fDzs4OwO0773fr7e2Fvr56lnq8Xw4CgQDt7e1ITk7mPu7u378fYWFhSE9Px8SJ\nE0d9DgPEYjEuX76MlJQUpecPTCylqRzuF//XX3+N1NRUnDt3DgYGBgAAR0dHREZGIj09nTv7HM3v\ngbW1NZKTk5GQkICjR4/CwMAAW7ZsQXFxMYyNjdX+Hpw+fRqvvfYaFi5ciLi4OAC3i97vTxbufn09\nPb1B8fX19YExBgMDA7Xm8DDx34+m/w7uNurP/HV0dJCQkIDc3FycP38eqamp0NPTg4WFBfdHenfh\nB25/hBIKhairq4OtrS2AO9NCD5BIJIM+emkqB2traxgYGChd5zQ3N4epqSlqamrGRA4D0tLSYGlp\nOei6qKZzuF/8+fn5cHJyUsrF3t4eQqEQVVVVGo9flRwAYPbs2cjIyEB6ejouXryIZ599Fk1NTbC3\nt1drDh9++CF27dqFF154Ae+88w53GcrW1hYSiWTI17exsblnfMDtSyXqyuFh47+f0XAcDRj1xT8p\nKQmHDh2Cjo4OLC0tAQA//fQTQkNDAQDHjh1DWFiY0v/GtbW1aGpqgqurK8zNzTF58mRcvnyZ6+/s\n7MS1a9fg7+8/KnLw8/NDV1cXbty4wT2noaEBzc3NcHBwGBM5DBi4ITbwxzJA0zncL34bGxtUVFQo\nnZFJJBK0tLTA0dFR4/GrkkN2djZefPFFyOVyWFlZQUdHBz/99BMMDAzg6+urthwOHz6Mffv2YcuW\nLXjttdeUVtubOXMmsrKylLbPzMzkbmTPnDkT1dXVSvc2MjMzYWhoCHd3d7XkMJz472c0HEcctY4t\nUkFMTIzS8LYvvviC+fr6sl9++YVVVVWx119/nXl7e7MbN24wxhirrKxk3t7eLC4ujpWVlbHs7GwW\nHR3NVqxYwe3j5MmTzNvbm33zzTesuLiYbdq0ic2dO3fExtU+aA4KhYKtXLmSLVmyhOXm5rLCwkK2\nevVqNn/+fC7G0Z7DgLlz57IPP/zwnvtUZw4PGr9YLGZ+fn5sy5YtrKSkhOXn57MXXniBRUVFsb6+\nPrXH/zA5NDY2Mj8/P5aYmMiqqqrYDz/8wHx9fZXej5HOobCwkE2dOpXt2rVr0Pc+Ojs7WVFREZs+\nfTpLTk5mZWVlbN++fczT05MbWqlQKNjy5cvZ888/z65du8aN8797aORI5jDc+H/vXkM91X0cDWXU\nF3/GGPvggw9YeHg48/b2ZjExMSw/P1+pPy8vj8XExDAfHx8WEBDAdu7cyVpaWpS2+eijj1hoaCjz\n9vZmf/rTn5TGEY+GHFpbW9nu3buZv78/8/b2ZrGxsayurm5M5cAYYz4+PuzkyZND7lddOTxM/MXF\nxWz9+vXM39+fhYaGsri4ONbY2KiR+B82h6ysLLZs2TI2Y8YMFhkZyY4cOTJovyOZw969e5lIJLrn\n44MPPmCMMXbu3Dm2cOFC5uHhwZYsWcIuXLigtA+JRMJiY2OZl5cXCwkJYXv37mVyuVwtOTyK+O92\nr+I/kvE/CFrMhRBCxqFRf82fEELIo0fFnxBCxiEq/oQQMg5R8SeEkHGIij8hhIxDVPwJIWQcouJP\nxrWEhAS4ubkNuRpTWloa3NzccPDgQTVHRsjIonH+ZFzr6OjA4sWLwePx8M0338DQ0JDra29vx8KF\nC2FjY4PPPvsMWlpaGoyUkEeLzvzJuGZkZIS///3vuHXrFpKSkpT63nnnHbS2tiIxMZEKP3nsUPEn\n4154eDiio6Nx4sQJ5OfnAwCysrLw5ZdfYvv27UqrxJ06dQoLFiyAh4cH5syZg8OHD+P3H55PnjyJ\n6OhoeHl5YcaMGXjmmWfw448/cv1ffvklfHx8cOLECQQHByMwMBA1NTXqSZaQ/6LLPoTg9hJ9ixYt\ngo2NDU6ePIlnnnkGQqEQx44d42Z1/OCDD/D+++9j7dq1CA0NRX5+Pg4ePIi1a9dy870fOXIEe/bs\nwdatW+Hl5YWWlhYcOnQIJSUlSEtLg5WVFb788kskJCTA2dkZcXFxaG5uRlRUlCbTJ+OR2mcTImSU\n+vHHH5lIJGKrVq1iPj4+3KLnjDHW0tLCPD092Ztvvqn0nE8++YRNmzaNicVixhhjr7/+OktKSlLa\nJj8/n4lEIvbDDz8wxm7PzikSidh33303whkRMjS67EPIf0VGRmLRokXIysrCzp07lRZQz83NhUwm\nw6xZs9Df3889Zs+ejf7+fly6dAnA7fVbt23bhtbWVly5cgVfffUVTp06BWDwcpdTp05VX3KE/M6o\nX8aREHUKCwvDt99+i/DwcKX2lpYWAMDatWvv+byB1Z0qKiqQkJCAzMxM6OjowMnJCa6urgAw6N7A\n3auGEaJuVPwJUcHAOsXJycncutB3s7a2hlwux8aNG2FkZITTp0/Dzc0NAoEARUVFSE1NVXfIhPwh\nuuxDiAq8vb2hra0NqVQKT09P7iGTybBv3z5IpVJIpVJUVlZi+fLlmD59OgSC2+dW58+fBwAoFApN\npkCIEjrzJ0QFFhYWWLNmDfbs2YPW1lb4+vqitrYWSUlJMDU1hYuLC7S1tWFra4uUlBSYm5vDyMgI\n58+fx6effgoA6O7u1nAWhNxBZ/6EqCguLg7btm1DamoqNmzYgH379iEiIgIpKSnQ0dEBj8fDwYMH\nYW5ujr/+9a/Ytm0b/vOf/+Djjz+Go6MjsrOzNZ0CIRwa508IIeMQnfkTQsg4RMWfEELGISr+hBAy\nDlHxJ4SQcYiKPyGEjENU/AkhZByi4k8IIeMQFX9CCBmH/g+nTJMTtd29tQAAAABJRU5ErkJggg==\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": 15, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap04-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEjCAYAAADzIzwpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYU+f7P/B3CHvvIUMURZShTHHvUa3aOiuidjgq2mGt\nxVWqdVu1itgq1m0daMWFo3Wgn1YRZYggOBARkb0hQEhyfn/w43yNCRIwEMb9ui4vkuc5406E3Dnn\nWRyGYRgQQgghDaCk6AAIIYS0XJRECCGENBglEUIIIQ1GSYQQQkiDURIhhBDSYJRECCGENBglkRbm\n22+/RZcuXVBQUCBR5+/vjy5dumDevHkSdWVlZejWrRu+++47ucQxePBgTJ8+XW7bNWfv8xry8vLA\n4/HY50uWLEGXLl3kFVqz0tivjc/nIysri31++vRpdOnSBXfv3m20c5K6URJpYTw9PQEAcXFxEnV3\n796FiooK7t27B6FQKFYXFxcHoVCInj17NkmcBLh58yZGjhyJ/Px8tmzKlCnYtGmTAqNqPI352tLT\n0zFmzBj8999/bJmnpyc2bdoEOzu7RjknkQ0lkRamtiTy4sULZGRk4MMPP0RJSQkSEhLE6qOjowEA\nXl5eTRMoQVxcHIqLi8XKXF1dMW7cOAVF1Lga87W9evUKL168ECuztrbGuHHjYGxs3CjnJLKhJNLC\ndO7cGfr6+njw4IFYeUREBJSUlPDll1+Cw+Hgzp07YvUxMTEwNTVFhw4dmjJcQkgrR0mkheFwOPDw\n8MDDhw/FyiMiIuDg4ABbW1t06dIFERERbB3DMIiLi5O4Crl//z4+/fRTuLq6wtXVFTNmzMC9e/fE\nthk8eDBWrFiBZcuWwcXFBf379xe7PfOmixcvYty4cXBxccGHH36Ia9euyfSaBg8ejOXLl+PkyZMY\nMmQIevTogU8++UTsNdQ3ZlmOV1tbR11tIAzD4NixY5g4cSJcXV3h7OyMkSNHIjg4GDWzCC1ZsgRB\nQUEAgCFDhrDHk9ZukJ6ejsWLF8Pb2xvOzs4YO3YsQkJCxLZZsmQJRo4cibi4OPj6+qJ79+7o3bs3\n1qxZg4qKilpjrdl32LBhiImJwfjx4+Hi4oKRI0fi2LFjUs/x559/wtPTE56enrh161a9Ynz7tWVm\nZuKHH35g9/voo49w7tw5iRizsrKwbNky9O3bF66urpgwYQKuXr0KoLrtY8aMGQCApUuXsueQ1iZS\nXl6OLVu2YPDgwXBycsLgwYOxefNmlJeXs9vU7JeUlIRFixbB09MTrq6u8PPzw6tXr975XhJJlERa\nIE9PTxQWFrKX9wzDIDIykm3v8Pb2RnR0NPh8PgAgOTkZRUVF8Pb2Zo9x7do1TJ8+HRkZGZg3bx7m\nzZuHjIwMfPrppxIf/mFhYXj8+DGWLVuGyZMnw9DQUCKm06dPY+HChdDQ0GA/bL799lvk5ubK9Jpu\n376Nn3/+GSNGjMA333yD/Px8zJo1C5GRkQ2KWZbjNdS2bduwcuVKdOrUCUuXLsV3330HNTU1bNmy\nBUePHgVQ3T4wbNgwANUffF9++aXUY6WlpWHixIm4du0aJk+ejB9++AF6enr48ccfJdoX8vPz8cUX\nX6Bjx45Yvnw53NzccPjwYQQGBtYZc2FhIWbNmgVbW1v88MMPMDU1xcqVK7F7926x7TIyMvD7779j\nwYIFmDx5Mnr06FGvGN+UlZWFSZMm4fbt25g+fTr8/f1hYGCAxYsX448//hCLbfLkyQgLC8PYsWPx\nww8/QF1dHQsWLMDVq1fh6enJvn/vanfh8/n47LPPsGfPHnh7e2PZsmXw8vLCnj178Pnnn6Oqqkps\n+3nz5qGoqAgLFy7EJ598gvDwcHz77bd1vpfkLQxpcRISEhh7e3vmzJkzDMMwTFJSEmNvb8/cuHGD\nYRiGuXbtGmNvb8/cuXOHYRiGCQkJYezt7ZkXL14wDMMwVVVVTP/+/ZkBAwYwJSUl7HGLioqYfv36\nMf369WP4fD7DMAwzaNAgxsHBgcnMzBSLYdCgQYyvry/DMAwjEAiYXr16MRMmTGD3YxiG+euvvxh7\ne3t2u9oMGjSIsbe3Z/755x+2LC8vj/Hw8GAmT57coJjrOt7br6G21/b2cz6fz7i5uTELFy4U26ek\npIRxcnJi5s6dy5YFBgYy9vb2TFpaGlvm7+/P2Nvbs8+//fZbxsHBgYmPj2fLhEIhM3fuXKZLly7M\nkydPxPY7dOiQ2Hk/+OADpm/fvpJv6htq9l2zZg1bJhAImGnTpjEuLi5MYWGh2HZhYWFi+9c3xjfP\n6+XlxWRlZbFlIpGI+e677xgnJycmNzeXYRiG2bRpE2Nvb8/cv3+f3a6iooIZOnQoM2HCBIZhGCYi\nIoKxt7dn/vrrL3abmt+viIgIhmEY5ujRo4y9vT2zf/9+sfj37NnD2NvbM0eOHBHbb8GCBWLbBQQE\nMPb29kxKSso7308ijq5EWiAHBwfo6OiwjesRERHgcrnw8PAAUH2lwuVy2W/d0dHRMDc3R/v27QEA\njx49QmZmJqZNmwZtbW32uLq6uvD19UVWVhbi4+PZchsbG5iZmdUaT0JCAvLy8jB+/HioqKiw5ePG\njYOenp5Mr6ljx44YOnQo+9zQ0BDjxo3DgwcPkJeXV++Y6zpeQ6moqLBXOW8qKCiAtra2WHfeugiF\nQoSHh6Nv375wdHRky2vathiGwfXr18X2+eCDD8SeOzg4yHy1N3fuXPYxl8vFjBkzUFFRgdu3b4tt\nV/N71NAYAUAkEuHq1avw8PCAsrIy8vPzkZ+fj4KCAgwfPhx8Pp/taRUeHg5HR0e4u7uz+6upqSE4\nOFimq6wa169fh7a2NqZNmyZWPmPGDGhra9f5Xnbt2hUAZH4/STVlRQdA6k9JSQnu7u5s43pERASc\nnJzYD1cdHR107doVUVFRAIDY2Fixrr01932lNbJ37NgRAPD69Wu4uroCAIyMjN4ZT3p6OoDqZPMm\nLpfLJq66dOrUSaKsffv2YBgG6enp9Y65ruPV9ZreRUVFBeHh4bh27RpSUlKQmpqKoqIiAGDbRGRR\nUFAAHo8n9TXVdFuteW9rvH0rUVVVFSKRqM5z6evrS/Riqvm/efscb743DYmxZr+SkhJcvXqVbdt4\nW0ZGBrv/4MGDJerr2wnk1atXsLa2FvsiA1S/R9bW1hJxGhgYSGwHQKJ7PHk3SiItlIeHB7Zv347K\nykrcv38fU6dOFavv2bMnjh07hvz8fKSkpOCLL75g6971QVdT9+YfIpfLfWcsHA4HAKQ28MryAff2\n+WrU/DFzudx6x1zX8d7lXR8iDMPAz88PN27cgLu7O1xdXTFlyhR4enpi5syZ7zxubXFLU/O+1Xyw\n1VBSatjNA2nvR8053n4/3nzekBiB/3sPR4wYgU8++UTq/tbW1uy2Nb9D76OuWN9+Dxr6XhJxlERa\nKC8vL1RVVeHSpUsoLi6WGETo7e2NvXv3IiwsDAzDiNVbWloCAJ4/fy5x3JSUFACAubm5zLHUfBik\npqaKldd86+/cuXOdx3j58qVEWWpqKrhcLqysrNhGUVljrut4QPWHSE3ngxoCgQAFBQUSV1U17t+/\njxs3bsDPzw/ffPON2H6FhYXseyELQ0NDaGpqyu3/4V1yc3NRVlYGLS0ttqymY8a7rhYbGqOhoSE0\nNDQgEAjQu3dvsbrXr1/j0aNH0NDQAAC0a9dO6v9XaGgooqKiEBAQUPcLRPXvdWxsLKqqqsQSBp/P\nx6tXr8Ru0xH5oVTcQjk6OkJTUxPHjx+HioqK2P1kAHB3d4eysjJCQ0NhaWkp9uHm6OgIExMTHDt2\nDKWlpWx5aWkpjh49ChMTEzg5OckcS7du3WBpaYljx46JdaUMCwuTOj2LNA8fPkRsbCz7PDc3F+fO\nnYO3tzf09PTqHXNdxwMAY2NjpKSkiF1BXb9+HZWVlbXGWVhYCEDydllISAjKy8shEAjYsppvurV9\nQ+ZyuejXrx/+++8/scGhDMNgz5494HA4GDhwYK2x1AfDMPjzzz/Z5wKBAAcPHoSOjg569epV634N\njVFZWRn9+/fHzZs3kZSUJFa3YcMGzJ8/n/3d6N+/Px4+fCjWplVVVYW9e/ciPj4eqqqq7NXRu65s\nBw8ejNLSUrHXCQBHjx5FWVmZ3N5LIo6uRFooZWVluLq64r///oOHhwfU1dXF6rW0tODs7IyYmBh8\n/PHHYnUqKipYsWIFFi5ciAkTJmDixIkAgFOnTiE7OxuBgYH1utTncDj48ccfMX/+fEyZMgUTJkxA\nVlYW/vzzT+jr68t0DFVVVcyePRszZ86Euro6jh49CpFIhB9++KFBMdd1PAD48MMPsXr1asyaNQtj\nx45FamoqQkJC2Cs1aVxdXaGtrY3169cjPT0denp6uHv3Li5evAg1NTWUlZWx29a0X/zxxx/o378/\nhgwZInG877//Hnfv3sX06dMxffp0mJiY4J9//kFERAQ+++wzqW07DfXbb7+xV4aXLl1CTEwM1q5d\ny14R1KahMdbsN23aNEybNg3t2rVDeHg4bty4gSlTprBXqF9++SWuXLmCmTNnwtfXF6ampggLC0Ny\ncjL27dsH4P/aL86dOweGYSR+pwFg0qRJCA0NxYYNG/DkyRM4OTkhPj4ep0+fRo8ePTBp0qT3eftI\nLSiJtGCenp7477//xMZ/vKlnz56IiYmROtXJyJEjoaenh99++w07d+6EsrIyunfvjrVr1zbosn/Q\noEHYvXs3duzYga1bt8LMzAxr166V+FZYmx49emD06NH47bffUFJSAg8PDyxatAgODg4NilmW4/n4\n+KCwsBCnTp3C6tWr4eDggKCgIOzbt6/WXlbGxsYIDg7G5s2b8fvvv0NVVRUdOnTA1q1bERcXh0OH\nDiE3NxfGxsYYPXo0/v77b5w+fRqRkZFSk4iNjQ1CQkKwbds2HD9+HBUVFbCzs8PatWvZRCkve/fu\nxcqVKxEaGopOnTohKCiIHcvyLg2NsWa/wMBAhISEgMfjwdraGkuXLhUbzGlkZIQTJ05gy5YtOH78\nOPh8PhwcHLBv3z72KsnOzg7Tp0/H6dOn8fDhQ6lzwKmqquLAgQPYuXMnLl26hHPnzsHc3Bxz587F\nvHnzpLYLkffHYerTnYSQRjB48GBYWlri8OHDzfJ4Ld2SJUsQGhqKx48fN+p5/P39cfbsWYnbV6R1\nozYRQohclJaWQlNTU9FhkCam0CQSEBCA5cuXS62rqqrCRx99hCVLljRxVISQ+njw4AG2b9+O27dv\ni90uJG2DQpIIwzDYvn07Tpw4Ues2gYGBSExMbMKoCCENERERgf3798PW1harVq1SdDikiTV5m0ha\nWhqWLVuGp0+fQkNDA71798batWvFtomKisJXX30FIyMjODo6YsOGDe88ZkVFBeLj42FiYlLnQDJC\nCCHVhEIhcnJy4OTkJNHDU1ZN3jsrOjoaFhYW2Lp1q9SlWsvKyuDv748VK1ZITDVdm/j4eIn5cggh\nhMjmzz//bPBgzCZPIuPGjXvn6mfr1q2Ds7MzRo0aJXMSMTExAVD9RshrhC8hhLR2NZOa1nyGNkSz\nGidy7do13Lx5ExcuXKjXfjW3sMzNzdkpLQghhMjmfZoBmk0Syc/Px48//oh169bJPMqZEEIUjWEY\nCIVCiEQiiEQi9rGysrLEbAAFBQUoLS0V2+7NfwzDsD/NzMwklmBISkpCYWGhxLbSfnbr1q1JvlQ3\nmyRy8+ZN5OXlYeHChWxZZWUlOBwOrly5gpiYGAVGRwhpDUQiEaqqqlBVVQWBQMD+FAgEEAqFYj+1\ntbUlJqd8/vw5Xrx4IbZtbX2TbG1t4ezsLFb28uVLqZNNSqOmpiaRRIqLi5GTkyPT/k01pX2zSSLD\nhg2Dm5ubWJm/vz9MTEzw/fffKygqQkhzwzAMBAIB+Hw++Hw+Kisr2cd8Pp9NDOrq6mILaQHVMzm/\nOdHju5iamkokEYFAIDY/2rtI+xCvz5x00pJTfabMb6qOt80miWhra4utWAcA6urq0NLSknlhI0JI\ny1STGCoqKlBZWYmKigoIhUKJv/3s7GxERkbK9AGpo6MjUVaf+bOkJQFpbQccDgdKSkrgcrlQUlJi\n/6mpqUlsa2BgAKFQyG7z5j41x6n5KW1VUHt7e9ja2kpsK+1nU80V1mySCCGk9auqqsLr169RXl4O\nHo+H8vJyNnG8/aGtrKwskUSUlZVl/oZdswbNm1RVVaGqqgoVFRUoKyuzP5WVlcHlcsV+SpvCxdra\nGmZmZmLb1ufqwsrK6r3aKWRdbropKTSJ1DVB3oEDB5omEELIe6uqqkJZWRlKS0tRVlaGsrIyuLi4\nQFlZWWybuLg4mY5X01bx5v41qygqKyuzCUHav5r6t5mammLEiBENfo01xyf/h65ECCEyYxgG5eXl\nKCkpQUlJiVjSkLaYV+fOncVuK6mrq4PD4Ui9muByuVBXV4e6ujrU1NSgrq4usZ2WlhZGjx5NS9s2\nI5RECCFS1azS+OaVAFDdk/LNFRzfpby8XCyJKCkpoUOHDmz3V01NTTZxcLncOhuOORyOXNZjJ/JD\nSYQQApFIhOLiYhQUFKCwsBCFhYUoLS2Fq6ur2D18DocDXV1d5OfnSxxDSUkJWlpa0NbWZn/q6upK\nbPd2jynSslESIaQNKi8vR35+PvLz81FYWIji4mKp65eXlJRIlBkaGoLD4UBHRwc6OjrQ0tKClpYW\nNDQ06CqhDaIkQkgbk5CQgOfPn9e5HYfDkdrDqWvXro0RFmmhKIkQ0gpVVVUhNzcXAoEA1tbWYnXS\nxk8A1Y3W+vr67D89PT1aWoHUiZIIIa0AwzAoKipCTk4OsrOzUVBQAIZhoKamBisrK7HbTEZGRuBy\nuTAwMICRkREMDAygp6dHXVdJg1ASIaSFYhgGeXl5yMzMREZGBioqKiS2qaysRHFxsdggNU1NTYwc\nOZK6yRK5oCRCSAvDMAzi4uKQmZkJPp9f63b6+vowMTGRmP6CuskSeaIkQkgLw+FwUFxcLJFAVFVV\nYWpqClNTUxgbG0udu4kQeaMkQkgzVVpailevXkFLS0uicdzc3ByFhYVQV1eHhYUFzM3NYWRkRFcY\npMnVK4lUVFQgKysLJSUlMDAwgImJCTXGESJHIpEIGRkZSE1NRV5eHoDqSffeTiLW1tYwNjaGvr4+\nJQ6iUHUmET6fj1OnTuHChQuIi4sTm2mTy+XCy8sLI0aMwMcff0wJhZAGKisrQ2pqKtLS0iRuUxUV\nFaGkpERiDip1dfWmDpMQCe9MIqdPn8aWLVvA5/MxaNAgjBw5EpaWltDU1ERRUREyMzMRHR2NrVu3\nIigoCF9//TUmTZrUVLET0qIxDIPc3Fw8f/4c2dnZEvUcDgdmZmawsrKClpaWAiIkpG61JpG5c+ci\nPz8fq1atQv/+/Wu9yvj000/B5/Nx+fJl7N+/H3///Tf27NnTaAET0howDIPbt29LnYNKU1MTNjY2\nsLa2pqsN0uzVmkQ++OADfPTRRzIdRFVVFWPHjsWYMWNw5swZuQVHSGvF4XCgp6fHJhEOhwNTU1PY\n2trCxMSE2jlIi1FrEpE1gbyJw+Hg448/fq+ACGltBAIBCgoKYGJiIlbesWNHpKWlwdraGh06dKBb\nVqRFqlfvrMePH6O8vFzqbJ9ubm5yC4qQ1kAgECAlJQXPnz+HUCjEkCFDxMZuaGpqYvjw4TQ/FWnR\nZEoi8fHx+Oabb/D69WuJOoZhwOFwkJiYKPfgCGmJRCIRXrx4gadPn4r1tHr27JnEWhqUQEhLJ1MS\nWbt2LZSUlLB+/XqYm5vTnDuESMEwDDIyMpCYmAgejydWp6mpKTZ/FSGthUxJJCEhAVu3bsXQoUMb\nOx5CWqS8vDw8evQIhYWFYuWampqwt7eHpaUlffkirZJMScTQ0JAuuwmRgs/nIy4uDhkZGWLlqqqq\n6Ny5M2xtbSl5kFZNpiQydepUBAcHw9vbGxoaGo0dEyEtBpfLRVFREftcSUkJHTt2RKdOnSRmzyWk\nNZIpiaSnp+PZs2fo27cv7O3tJRIJh8PB3r17GyVAQpozLpcLJycnREZGwtLSEg4ODtDU1FR0WIQ0\nGZmSSEpKChwcHNjn0tZdJqS14/P5SE9PR4cOHcTKzczMMGDAAOjq6iooMkIUR6Ykcvjw4UY5eUBA\nAIRCIdauXcuWHTlyBEeOHEFmZibatWuHzz77jObjIgqXlZWFuLg4VFRUQFNTE2ZmZmL1lEBIW1Wv\nwYbPnj1DZGQkSktLYWBgAHd3d3Ts2LHeJ2UYBoGBgThx4gQmTpzIlh89ehRbtmzBypUr4erqirt3\n72LVqlVQUVFp0Ah6Qt5XVVUVEhISkJaWxpbFx8fDxMSEGswJgYxJRCQSISAgAH/99RcYhmHLORwO\nxo0bh/Xr18s8109aWhqWLVuGp0+fol27dmJ1x48fh4+PD8aNGwcAsLGxQUxMDE6fPk1JhDS57Oxs\nPHjwQGztcjU1NTg6OlICIeT/kymJBAcH48yZM1i0aBHGjBkDY2Nj5OTk4Pz58wgMDISdnR1mz54t\n0wmjo6NhYWGBrVu34rvvvhOrW7FiBSwsLMTKlJSUUFxcLOPLIeT9CYVCPHr0CC9evBArt7S0hJOT\nE62bQ8gbZEoip06dwpdffolZs2axZebm5pg9ezYqKytx6tQpmZPIuHHj2CuNt3l5eYk9f/36NcLC\nwuDr6yvTsQl5XyUlJYiKikJJSQlbpqamBmdnZ4kvOIQQQKZr8pycHLi7u0utc3NzkxhoJQ/5+fmY\nO3cujI2NMWfOHLkfn5C3ZWZm4n//+59YArGwsMCAAQMogRBSC5mSiLW1NWJiYqTWxcTESExx/b7S\n0tIwdepUFBcXY9++fWLLghLSWHR1ddm2PS6XCxcXF7i7u4vNvEsIESdTEpk4cSJ27dqFAwcOIDs7\nGyKRCNnZ2di/fz92796N8ePHyy2ghIQETJkyBUpKSjh+/Disra3ldmxC3kVTUxMuLi7Q0dFBv379\n0L59e1ocipA6yNQmMn36dCQmJmLDhg3YuHEjW84wDMaOHYt58+bJJZjk5GR8/vnnsLGxQXBwMAwM\nDORyXEKkKS8vl5h9wdLSEhYWFtT7ihAZyZREuFwuNm7ciFmzZuHevXsoLi6Grq4uPD090blzZ7kF\n4+/vD1VVVWzatAkCgQA5OTns+Q0NDeV2HtK2MQyDxMREvHjxAn369JGYop0SCCGyq9dgw86dO8s1\nabwpJSUFDx8+BACMHDlSrM7Gxgb//PNPo5yXtC0CgQBRUVHIzs4GANy/fx/9+vWjbruENFCtSWTE\niBHYvn07HBwcMHz48DrvDV+5cqXeJ39zOpUOHTrg8ePH9T4GIbLi8XiIjIwU632lo6ND7R6EvIda\nk4ibmxu0tLTYx/SHRlqy/Px83Lt3T2y52s6dO6NLly70u03Ie6g1iaxfv559vGHDhiYJhpDGkJ6e\njtjYWIhEIgDVbR7du3eHlZWVgiMjpOWrNYlkZWXV60Bvz2pKSHOQnJyMR48esc/V1NTg4eFBHTUI\nkZNak8iAAQPqdZmfmJgol4AIkQeGYfDo0SM8f/6cLdPR0YGXlxctGkWIHNWaRNatW0f3ikmLxeFw\noKz8f7/ehoaG8PT0pF5YhMhZrUlEnqPQCVEEe3t7VFRUoKqqCq6uruByuYoOiZBWp9YksmvXLpkP\nwuFwMHfuXLkERIi8cDgcuLi4sI8JIfJXaxLZtm2bzAehJEIUraqqCsnJyRJddil5ENK4ak0iSUlJ\nTRkHIQ1WWVmJiIgIFBcXg8fjwdXVlZIHIU2EJgkiLVpFRQVu377Nrn6Znp6OvLw8BUdFSNuh0GlP\nCHkfNQmkrKwMQPWtq+7du8PY2FjBkRHSdtC0J6RFqqysxJ07d8QSiJubG9q1a6fgyAhpW2jaE9Li\n8Pl83LlzB6WlpQCqE4iHhwfMzc0VHBkhbY/MU8GLRCLcuHEDUVFRKC0thZGREby8vNCrV6/GjI8Q\nMVVVVYiIiGBn4uVwOHB3d6cEQoiCyJREcnNzMWvWLCQlJUFVVRWGhobIy8vDrl270KtXLwQFBdFU\nEqTRCQQCREREoKioCEB1AnF1dYWFhYWCIyOk7ZKpd9aGDRuQk5ODPXv2IC4uDuHh4Xj48CF27NiB\nhIQEsSVzCWkslZWVqKioYJ93794dlpaWCoyIECJTErlx4wYWL16Mfv36iZUPHToUixYtwqVLlxol\nOELepKWlhd69e0NDQwMuLi6wtrZWdEiEtHky3c5SVVWFjo6O1DrqDUOakpaWFgYOHCg2uSIhRHFk\nuhKZOnUqtm/fjtzcXLFyHo+H4OBgTJo0qVGCI20bwzBit69qUAIhpPmo9a/x888/Zx8zDIPk5GQM\nHToUbm5uMDIyQnFxMaKjoyEQCGBqatokwZK25fnz53j69Cm8vLxoESlCmqlak0hVVZXYczc3N7Y8\nMzMTAODg4AAAyM7Obqz4SBuVlpbGrkgYERGBXr16wcDAQMFREULeVmsSOXz4cFPGQQgrOzsbDx48\nYJ/r6+tDV1dXgRERQmpTa5tIVFRUgw54//79BgdDSFFREaKiosAwDABAV1cXnp6etKAUIc1UrUlk\n1apVWLhwIZ48eSLTgeLi4vDVV19h1apVcguOtC0VFRWIjIyEQCAAAGhqaqJnz55QUVFRcGSEkNrU\nejvrr7/+QlBQECZMmABbW1sMHz4cLi4usLKygoaGBoqLi5GVlYWoqCjcunULKSkp8PX1xZYtW5oy\nftJKCAQCREZGsr2xlJWV4eXlBXV1dQVHRgh5l1qTiIqKChYuXAgfHx8cOHAAISEh2Llzp9hsvgzD\noF27dhgxYgR2794NMzOzep08ICAAQqEQa9euZcv+/fdf/PLLL0hJSUH79u3x/fffY8CAAQ14aaSl\nYBgGMTExYtOZeHh41Do2iRDSfNTZ4d7MzAz+/v7w9/dHcnIyXr16hZKSEhgYGKBdu3bo0KFDvU/K\nMAwCAwNx4sQJTJw4kS1/9uwZ5s2bBz8/PwwfPhznz5/H/PnzERoais6dO9f7PKRlSExMZHv8AYCz\nszNMTEwMqIE9AAAgAElEQVQUGBEhRFb1GrVlZ2cHOzu79zphWloali1bhqdPn0qMdj906BB69OiB\nefPmAQC+/fZbREVF4dChQ1i9evV7nZc0TwzDsI3oQPXvWPv27RUYESGkPpp8edzo6GhYWFjg/Pnz\nsLKyEqu7f/8+vLy8xMp69uxJPb5aMQ6HA0dHRzg7O8PCwgJdu3ZVdEiEkHpo8vkjxo0bh3Hjxkmt\ny8zMlGhXMTU1FbvVQVonW1tbtG/fnlbQJKSFafIrkXepqKiAqqqqWJmqqioqKysVFBFpDCKRSOwW\nVg1KIIS0PM1qJjs1NTWJ6Vb4fD40NDQUFBGRN4ZhEBsbC4Zh0L17d5pMkZAWrln9BVtYWEjMw5Wd\nnV3vrsOk+UpOTkZ6ejoAoLS0FH369KFEQkgLJtNfb2VlJXbv3o3w8HDweDyptyKuXLny3sG4u7vj\n3r17YmV3796Fh4fHex+bKF52djaSkpLY5wYGBpRACGnhZPoLXrt2LU6ePAkvLy907twZSkqN05Ti\n6+uLCRMmIDAwEKNHj8aFCxfw4MEDrFy5slHOR5pOWVkZoqOj2S8ghoaGcHJyUnBUhJD3JVMSuXLl\nChYuXIg5c+Y0ajBdunRBUFAQfvnlF+zZswcdO3bErl273ntsClEsoVCI+/fvs+1dGhoa8PDwaLQv\nI4SQpiNTEuHz+XBxcZH7yaVNNz9w4EAMHDhQ7uciihMfH4/i4mIAgJKSEjw8PKCmpqbgqAgh8iDT\nV8G+ffvi1q1bjR0LaYXS0tLw8uVL9rmTkxP09fUVGBEhRJ5kuhIZO3YsVqxYgYKCAri5uUmdWXXM\nmDFyD460bMXFxXj48CH73MrKCjY2NgqMiBAibzIlka+++goAEBoaitDQUIl6DodDSYRIiI+Ph1Ao\nBADo6OjA2dmZBhQS0srIlESuXbvW2HGQVsjd3R3R0dEoLCyEu7s7declpBWS6a/a0tKSfczj8VBW\nVgZ9fX1acY68k5qaGry9vVFSUkJrgxDSSsn81fDu3bvYvHkzEhIS2L7+Li4u+Pbbb9GrV69GC5C0\nbBwOB7q6uooOgxDSSGTqnXXv3j188cUXqKiowNdff42ff/4ZCxYsAI/Hw+zZs2mqdgKguit4Xl6e\nosMghDQhma5Etm/fjl69eiE4OFisYdTPzw9z5szBjh07cPDgwUYLkjR/DMMgLi4OmZmZ6NSpE+zt\n7WkwISFtgEx/5fHx8Zg2bZpEzxoOh4Np06aJdeMkbVNqaioyMjLAMAyePn2K/Px8RYdECGkCMiUR\nXV1d8Hg8qXVlZWXgcrlyDYq0LMXFxUhISGCfd+jQAcbGxgqMiBDSVGRKIt7e3tixYweysrLEyrOy\nsrBjxw5qWG/DhEIhoqOjIRKJAFR/4aAlbglpO2RqE1m0aBEmTJiAESNGwN3dHcbGxsjNzUVUVBS0\ntbWxePHixo6TNFMJCQkoKSkBAHC5XLi5udGVKSFtiExXImZmZggNDcXUqVNRUlKC2NhYFBcXw8fH\nB6GhobC2tm7sOEkzlJGRgdTUVPa5k5MTjQchpI2ReZyIiYkJ/P39GzMW0oLweDw8ePCAfd6uXTv6\nMkFIG1RrEtm1axfGjx8PU1NT7Nq1650H4XA4mDt3rtyDI80TwzCIiYlh1wfR1NSEi4sLzYtFSBtU\naxLZtm0bevfuDVNTU2zbtu2dB6Ek0rYUFhaiqKgIQPX/vZubG02BQ0gbVWsSeXMt7DcfE2JgYIB+\n/fohJiYGFhYWMDAwUHRIhBAFkalhPSgoSKJ7b4309HSsWbNGrkGR5k9HRwd9+/ZFp06dFB0KIUSB\nZEoiO3furDWJxMbG4sSJE3INirQMSkpK1A5CSBtX6+2sqVOnIjY2FkB1Q+qUKVNqPYizs7P8IyPN\nSl5eHtTU1KCtra3oUAghzUitSWTNmjX4+++/wTAMAgMDMXnyZJibm4ttw+VyoaOjg6FDhzZ6oERx\nKisrERUVBYFAgG7duqF9+/Z0BUIIAfCOJGJnZ4d58+YBAEQiESZNmgQzM7MmC4w0DzWz81ZWVgIA\nnj59CktLS+qNRQgBIONgwwULFgAACgoKUFVVxS5KxTAMeDweoqKiMGnSpMaLkihMWloaMjMz2efd\nu3enBEIIYcmURB4/fozvv/8ez549k1rP4XAoibRCZWVlErPzmpqaKjAiQkhzI1MS2bRpEwoLC+Hv\n748bN25AVVUVgwYNwq1bt3Dr1i0cOnSoseMkTaxmVLpAIABQ3aWXZuclhLxNpi6+sbGx+Oabb/Dp\np59i1KhRKC8vh4+PD3bt2oWhQ4fi8OHDcguIx+Nh9erV6Nu3Lzw8PDBr1qxar4BI43n69CkKCgoA\nVF9purq60uy8hBAJMiURPp8PW1tbAICtra3YCPbx48ezXYHlYe3atbh9+za2b9+OEydOQE1NDbNm\nzWIbdknjKyoqwpMnT9jnXbp0gZ6engIjIoQ0VzIlkXbt2uHVq1cAqpNIaWkp0tPTAQBqamrsPEry\ncPXqVfj4+MDd3R12dnZYuHAhMjIy6GqkiYhEIsTGxrKdJwwNDWlUOiGkVjIlkaFDh2Lz5s34559/\nYGZmho4dO2L79u1ITk7GgQMH5DoFuKGhIS5evIi8vDzw+XycOnUKenp6NM14E8nJyUFxcTGA6nFA\nPXr0oDEhhJBayZREFixYgB49eiAkJAQAsHTpUly5cgUffvgh/vvvP3z11VdyC2j16tXIzMxE7969\n2XMGBwdDV1dXbucgtTMzM0Pv3r2hqamJrl27QktLS9EhEUKaMZl6Z2loaCAoKAh8Ph8A0K9fP5w/\nfx4JCQlwdHSEjY2N3AJKTU2FsbExVq5cCX19fezduxdff/01QkJCJEbMk8ZhZGSEAQMGUEM6IaRO\nMl2J1FBVVWUf29jY4IMPPpBrAklLS8OPP/6I5cuXY8CAAejevTu2bNkCNTU1HDhwQG7nIXVTVlam\n21iEkDrVeiUyfPjwen2IXLly5b2DiY+Ph1AohJOTE1umoqKCrl27iq3lTeSrpKQEqqqqUFNTU3Qo\nhJAWptYk4ubm1uTfRGtuVz1+/BiOjo4Aqge9JScno3///k0aS1shFApx//59VFVVwdnZGRYWFooO\niRDSgtSaRDZs2NCUcQAAXFxc0KNHDyxZsgQ//fQTDAwMcPDgQbx+/Rq+vr5NHk9bkJSUhNLSUgDV\ng0oNDQ3pioQQIjOZGtajo6Pr3MbNze29g+Fyufj999+xdetWfPfdd+DxeHBycsLRo0dhaWn53scn\n4vLz85GSksI+79atGyUQQki9yJREfHx86ry1lZiYKJeADA0NabndJiAQCMQGFZqamsq1kwQhpG2Q\nKYlIm2CRx+Ph/v37OHv2LHbs2CH3wEjjSkpKQllZGYDqzgsuLi7UG4sQUm8yJREvLy+p5QMHDoSm\npiZ+//137N69W66BkcaTl5cndhvL0dERGhoaCoyIENJS1WuciDQeHh6IjIyURyykCdTcxqphZmYG\nKysrBUZECGnJ3juJ3Lhxg6bGaEESHiWAx+MBoNtYhJD3J9PtrM8//1yiTCgUIjMzEy9fvsTs2bPl\nHhiRv6KiIvwd9TcAwFbfFq6urlBXV1dwVISQlkymJFJVVSVRxuFwYGdnh1mzZmHChAlyD4zIH1+Z\nj2fKKdAq0kQWsjDEcIiiQyKEtHAyJRF5rlxIFMdEywQrxi7F7huHoa6iCUNNQ0WHRAhp4WRKIjVu\n3ryJqKgoFBUVwdjYGN7e3vD09Gys2EgjsNazxpqPliEzuxh8vhCqqjRTLyGk4WRKIgUFBZg9ezbi\n4+OhqqoKQ0ND5OXl4bfffkOfPn2wc+dOGuncTAkEAnA4HIlp3c1NaX0WQsj7k6l31po1a/Dq1Svs\n2rULcXFxCA8Px8OHDxEUFIT4+Hhs3ry5seMkDXQv5h5OnTuDvLx8RYdCCGmFZEoit27dgr+/PwYO\nHChWPmTIECxatAhhYWGNERt5TxkZGbgeewOXYsKxadcevHqVo+iQCCGtjExJhMvlQkdHR2qdiYmJ\n1N5bRLH4fD7C/g1DSmYmhCIR4sseYfPeW+xcWYQQIg8yJREfHx/8+uuvyMrKEisvLS1FcHAwTdPe\nDP17/188y34GVVUlCBghBGU2mD1xAA0sJITIlUwN69nZ2cjOzsawYcPg7u4OU1NTFBYWIjo6GmVl\nZVBVVWUHJHI4HOzdu7dRgybvlpaehv/F/w8iiKCtrQo1K01MN5oBR0djRYdGCGllZEoiqampcHBw\nAFDd2+f169cAwJYJhUIIhcJGCpHUR2VlJc7cPIOyquoZeoU6Qiwe+y3a6bRTcGSEkNaIBhu2Mn/f\n+RtpBWkAABFXhFG9R1ECIYQ0mnoNNnz27BkiIyNRWloKAwMDuLu7o2PHjo0VG6mnJy+e4Nr9/6Gi\nig8dHVVYdbbCYLvBig6LENKKyZRERCIRAgIC8Ndff4n17uFwOBg3bhzWr19PDbYKVlFRgWNXQpBf\nVAaGAfKqKvC182L6fyGENCqZkkhwcDDOnDmDRYsWYcyYMTA2NkZOTg7Onz+PwMBA2NnZ0Uy+Cvaa\n9xrxxSlQY9QgYISwQH+YG9DcWISQxiVTF99Tp07hyy+/xKxZs2BmZgYulwtzc3PMnj0bc+fOxalT\npxo7TlKHjoYdseGLZeDYcCEQtMPyuR9BRYXmxSKENC6ZrkRycnLg7u4utc7NzQ3BwcFyDYo0jJ2h\nHXZ/thFMFRdamjSXGSGk8cl0JWJtbY2YmBipdTExMTAxMZFrUEQ2DMNIjEDXVNGkBEIIaTIyJZGJ\nEydi165dOHDgALKzsyESiZCdnY39+/dj9+7dGD9+fGPHSaS4dO8yDh4LRVlZmaJDIYS0UTLdzpo+\nfToSExOxYcMGbNy4kS1nGAZjx47FvHnzGi1AIl3S6ySEXr0EPg9ITU/HHN8psLAwVXRYhJA2RqYk\nwuVysXHjRsyaNQv3799HUVERdHV14enpic6dOzd2jOQtZfwy/H56Hyp41bMEPC14jpdpfFhYKDgw\nQkibI9PtrBoWFhawtraGjY0NOnbsCGtr60YJ6uTJkxgxYgRcXFwwfvx43Llzp1HO0xIxDIM91/dA\nFQw0NJTBgRI8bEeip5eVokMjhLRBMg82/OWXX3DkyBEIBAK2MVdDQwPz5s3DnDlz5BZQaGgoVq1a\nhZUrV8LT0xNHjx6Fn58fzp8/Dysr+qC8+OgiXj9/DQ6HA319Ndh1dsNnHw1VdFiEkDZKpiSyY8cO\nHDp0CDNmzMCIESNgZGSE3NxcXL58GYGBgdDS0sK0adPeOxiGYbBjxw7Mnj0bEydOBAD4+/sjIiIC\nMTExbT6JPMt7hht3bkCJqb6AbG/aHrMnTIaSUr0uKAkhRG5kSiKnTp2Cn58f5s+fz5ZZW1vD1dUV\nWlpaOHjwoFySyPPnz5Geno5Ro0axZUpKSjh79ux7H7ulK6ksQfDfe6BUWZ0wdNR0MHXoVEogpFUb\nPHgwJk6cCD8/vzrrKisrsXv3boSFhSE9PR1aWlpwc3PD/Pnz4eTk9M7zlJaW4o8//sCVK1fw+vVr\n6OnpwdPTEwsWLECHDh0a5bW1FjJ9ApWWlsLFxUVqnbu7O7Kzs+USzIsXLwAAxcXFmDFjBnr16oVp\n06YhOjpaLsdvqRiGwebLQch4VIKysiooKynjg54fwJCmNSGEtWzZMly+fBnLly/H5cuXsXfvXmho\naMDX1xfJycm17pebm4vx48cjPDwcixYtwoULF7B9+3aUlJTgk08+wdOnT5vwVbQ8MiWRgQMH4vjx\n41LrwsLC0L9/f7kEU1paCgBYsmQJJk2ahD/++AOdO3fGzJkz3/lL0Nqdjj+HpOgUgOGguJgPXWFH\nuDm6KTosQpqN0tJShIWF4fvvv0f//v1hZWUFJycn/PLLLzAyMkJISEit+65cuRIMw+DIkSMYOnQo\ne5dl586dMDMzExvWQCTJlEQ8PDwQGRmJMWPGYNeuXfjrr7+wd+9eTJ8+HWfOnIGVlRV27dqFXbt2\nYffu3Q0ORkVFBQDw5ZdfYsyYMXB0dMRPP/0EW1tbHDt2rMHHbckYhkFhaTEquHwAgA5jiimjx9Bt\nLELeoqSkhH///VdsgTwul4uDBw/W2vknJycH165dw8yZM6GtrS1Wp6Kigi1btmDFihVs2ZMnT/DF\nF1+ge/fu6N+/PwICAlBcXMzWDx48GPv27cOXX36J7t27o0+fPggKCmLrc3NzsWDBAnh5eaFHjx74\n9NNPkZiYyNZ36dJF4vb9m2XPnz/H559/Djc3N7i7u8PPzw+vXr1qwLslPzK1iaxevRoAUFJSgm3b\ntknU79u3j33M4XAwd+7cBgVjalo9WM7e3l7seB07dlT4G6UoHA4HX/SaDmerrth79hzG2Y9Bhw5m\nig6LtGDnzyfjwoXqK/sPP7TDmDF2YvUnTz7G1aupAICJE+0xbJitWP2RI4/wv/9V/z36+nZDv37i\nHV7++CMO9+5lAgC++MIZXl6NP4BJW1sbPj4+OHz4MK5cuYI+ffrA09MTffr0eWeHnMTERIhEInTv\n3l1q/Zvj4LKysjB9+nSMHz8ey5cvR3FxMTZt2oQFCxbg0KFD7Hbbt2/HsmXL2Ntqmzdvhre3Nzw8\nPLBq1SoIBAIcO3YMHA4HW7ZswVdffYWrV6/K9Dq///57dOvWDT/99BPKy8uxatUqLFu2TOz8TU2m\nJJKUlNTYcQAAHB0doampiYcPH8LZ2RlA9Tfx5ORk9OrVq0liaK68rD3gtcBD0WEQ0mytWLECLi4u\nOHXqFC5evIizZ8+Cw+Fg+PDhWLt2LXR0dCT2qbmK0NXVrfP4R48ehZWVFfz9/dmyX3/9Ff3790dM\nTAxcXV0BAIMGDcKUKVMAALNnz0ZwcDBiY2Ph4eGB1NRUdOnSBVZWVlBTU8PPP/+MZ8+eQSQSyXR3\nITU1FX369IGlpSWUlZXxyy+/IDc3V6b3p7HUa2XDxqahoYGZM2di27ZtMDY2hr29PY4ePYqXL18i\nMDBQ0eERQpqYsrIyRCKR1DqRSARlZfGPsLFjx2Ls2LHg8XiIiorCpUuXEBoaCiUlJal3UQwMDAAA\nRUVFdcaSmJiIxMRENlm8KTk5mS23tbUVq9PR0UFVVRUAwM/PD/7+/vj777/h6emJ/v37Y8wY2W9P\nf/PNN9i4cSOOHj0Kb29vDBw4EKNHj5Zp38bSrJIIUP0maWhoYN26dcjLy0PXrl2xb9++NrUM7+uS\n19h6/DD6mLli1IgBUFOjWXmJ/IwZI3kL602TJnXBpEldaq339e0GX99utdbPmuWCWbOk9+asL11d\nXbbDzduKioqgr68PALh79y7Cw8PZqwRNTU3069cP/fr1g7GxMQ4fPiz1GE5OTlBWVkZsbKzUHqjn\nz5/HtWvXsHHjRqioqKBPnz5ibSQ1DA3/r6ekqqqqRH3NAO2RI0eid+/euHnzJm7fvo3ffvsNu3fv\nxtmzZ2FsbCyxn0AgEHs+Y8YMjBo1Cjdu3MDt27exfv167Nu3D2fPnpV63qbQ7Fpna9pUwsPD8fDh\nQ4SEhMDDo+3cxhGIBFgXtgOvXqTgbORFBAYfRl5evqLDIkQhHB0dpS5DkZSUBB6Px972Li0txb59\n+5CQkCCxrY6ODoyMjKQeX09PD8OGDcPBgwclZsOurKzEnj17UFhYCDU1NXTq1AnJyclo164d2rdv\nj/bt20NJSQnr1q1DRkZGna9FIBBg48aNSE9Px5gxY7B+/XqEhYUhNzcXkZGRAKob899Mmqmpqezj\ngoICrF69GgKBAJMmTcKvv/6KAwcO4Pnz503W5CBNs0sibd3ZxHN4nZgNFQ4XIghQwRNBS0tT0WER\nohDTp0/Ho0ePEBAQgKSkJLx8+RJXr17FwoULMWjQIHTt2hVAdTuEp6cn5s6di5MnTyI1NRWPHz/G\n8ePHsXv3brGB0m9bsmQJGIbBtGnTcP36daSlpSEiIgKzZs1CVlYWAgICAAC+vr4oLi7GkiVL8Pjx\nYzx8+BDfffcdXrx4IXELSxplZWUkJCQgICAADx48QFpaGk6cOAEVFRU4OjoCAHr06IGQkBAkJSUh\nISEBP/30E3uFoaenh1u3brHvRWpqKk6fPg1dXV2FDohsdrez2rLnBc8R/vAGOhgZoqioEtp8c0yf\nMgrq6uqKDo0QhejUqRP+/PNPBAUFYebMmeDxeDA3N8eoUaPEEoOSkhKCg4Pxxx9/4MCBA1izZg04\nHA4cHBywbt06DB8+vNZzmJub48SJE9i9ezfWrVuH7OxsGBoawsvLC2vXroWNjQ0AwMTEBPv378fm\nzZsxefJkqKuro2fPnti+fbvMt5K2bNmCdevWYe7cuSgrK0Pnzp2xc+dOtG/fHkD1mJWVK1di0qRJ\nMDU1xTfffIOsrCz2Ne7evRsbNmzA9OnTwefz4ezsjL1790rtNNBUOMzbS+P9fzWBy8rMTHHdTl+9\neoUhQ4bg2rVrLXZ+rSphFVZfW43yZ+XgMBzoqelhYNcR6NOn7dzKI4Q0LXl8dtZ6JTJgwABwOByZ\nD/TmgBlSf2eTzqL0ZSmUGWVwOVz0sOmBnj17KDosQgh5p1qTyLp169gkUlRUhM2bN6NXr1744IMP\nYGJigsLCQly/fh3h4eFYsmRJkwXcGj3PT8H1++HQrqxu+7AztENvz94S3RcJIaS5qfVT6s110+fP\nn4+PPvoIa9asEdtmzJgxWLNmDS5dusQOriH1IxQJsTpkB4SvGSjrCWCub4y+Pfqy/dcJIaQ5k6l3\n1n///YcPPvhAat2gQYOkdsEjsjl+9yx4r8rAiIDCAj6sNB3Epn0hhJDmTKYkYmBggLi4OKl1kZGR\nCm1Ub8kYhsHj3CeoUKqeXNFE1RIffzicJlckhLQYMt10nzRpEnbu3ImKigoMGTIEBgYGyMvLw+XL\nl3H48GEsW7asseNslTgcDlZ96I9rXcJxLOwKfAdNgI6Odt07EkJIMyFTEpk3bx5KSkqwd+9eBAcH\ns+Vqamr45ptv5LKqYVvF4XAw1H4QhnQeWK/ecIQQ0hzIlEQ4HA78/f3h5+eHmJgYFBcXw8DAAK6u\nrtDUpNHU9cUwjETCoARCCGmJ6tWHVEdHR26rGLZlwSdC0MXCFv36eoDL5So6HEIIabBak8jw4cPr\n9e34ypUrcgmotbtw+wb+i7+FyPhIPHz8GLNnTKZpTQghLVatScTNzY1uschZYWkhQv85BwYAHxV4\nmPUEKiqKmb6ZkJZg8ODBmDhxIvz8/N5ZVzN9x6hRo/Drr79KbNulSxds2rQJ48aNk6ir2fdN6urq\nsLW1xeTJk+Hj48N+Fp4+fRpLly6tNd7t27dj5MiRAKrXGAkMDMTdu3dRWloKCwsLDBs2DH5+fhJL\n8QJgZy8PCQmpdaXF5qjWJLJhwwb2cVhYGHr16iU2Zz6pH4Zh8Oc/f0JPn4vCQiXwqxgs9JkNLpe6\n8xIiLxcvXsTo0aMxdOjQeu/722+/wcXFBQzDoKSkBDdu3MCGDRvw6tUrsdUMuVwubt68KfUYenp6\nAKrXbvfx8cHQoUOxf/9+6Ojo4PHjx1i/fj3i4+MllrPNycnBv//+C1tbW5w4caJ1JJE3rVixAhs2\nbMCIESMaO55W69r9a0h9nQplZSUYGWnA1aEPutq1V3RYhLQq1tbWWLlyJTw9PdkPdFnp6enBxMQE\nAGBqago7OzsoKytj48aNmDBhAjp16sRuW7NdbS5fvgwAWLt2LVtmZWUFLS0tzJw5E0lJSXBwcGDr\nzp07B1NTU0ybNg2//vorli1bJvVqpTmS6WuwmZkZysvLGzuWVistIw3hUeHsc8v27TB1yFjFBURI\nK7V48WJUVVVh/fr1cjnepEmToKqqikuXLtVrPyUlJZSUlCAqKkqs3NPTExcuXJBY/+PMmTPw9vbG\nsGHDUF5ejnPnzr137E1FpiuRqVOnYt26dXjw4AEcHBykdusdM2aM3INrDXi8cvx55Rj4wupR6Vwt\nLj4f9jm1NxGFOf/4PC48uSDTtv3a94Ovi69Y2ZG4I/hf6v9k2v9D+w8xpkvTfTYYGRlh6dKl8Pf3\nx6hRo967N6mWlhasrKzw5MmTeu03evRo7N27Fz4+PnB0dETPnj3Rs2dPeHt7o3PnzmLbPnz4EE+e\nPMGiRYtgYWGBHj164OTJk/Dx8Xmv2JuKTEmkJqsfO3ZMaj2Hw6EkIgXDMNh28ACeZL6Evr4aVNSV\nMGHwBOiq6yo6NEJarY8++giXLl1CQEAALly48N63hd5e510oFMLV1VViOwMDA1y/fh0AoK+vj7/+\n+gv79u3D33//jX379mHfvn3Q1tbG999/j6lTp7L7hYaGQldXF7179wZQnYDWrFmDuLg4qeu+Nzcy\nJZFr1641dhyt0sUb4UhKTwADBnl5FXDx6AYPG1pkihBZKSsrQyQSSa0TiUS1LpewatUqjB49Gps2\nbcLPP//8XjGUlpaKtYFwuVycOXNGYru357wzMDDAokWLsGjRIrx+/Rq3b9/G0aNHsXLlSrRr1w4D\nBgwAn89HWFgYhgwZwq6OOHLkSKxbtw4nTpxoPUnE0tKSfczj8VBWVgZ9fX2oqKg0WmCtwYOSBJRy\nKqDFqKFSjYOvR89WdEiEYEyXMe91i8nXxVfiFldjefsq4E1FRUXQ19eXWmdubg5/f38EBARg1KhR\nDT5/eXk5UlJSMHr0aLHymuVsaxMcHIz27duznZHatWuHiRMnYuzYsRg5ciRu3ryJAQMG4Pr16ygs\nLMTZs2fF2kFEIhEuXryIpUuXNvsGdpn7l969exeTJk2Ch4cH+vfvDxcXF0yZMgV37txpzPhatCVj\n/TB+7HAUa/GwwvdbqNGYEELqxdHRUepSE0lJSeDxeHB2dq5138mTJ8Pb2xsrVqxo8PlPnjwJkUhU\n70QUFxeHXbt2QSgUipWrqqpCQ0MDRkZGAKpvZZmZmeHs2bM4c+YM+2/lypXg8Xg4f/58g2NvKjJd\niVM6KEsAABhVSURBVNy7dw9ffPEFOnTogK+//hpGRkbIzs7G5cuXMXv2bBw4cAAeHnSb5m1KHCX4\nek7GWJeR0FWjdhBC6mv69On4+OOPERAQAB8fH2hqauLJkyfYsmULBg0ahK5du75z/zVr1sjcXltU\nVIScnBwwDIPi4mLcunUL27Ztw5w5c2BjYyO2bU5OjtRjaGhoQFtbG/Pnz4ePjw/mzJmDWbNmwcbG\nBhkZGQgNDUVRURGmTJnCjg2ZP3++xBpCdnZ22LNnD06ePCnWftIcyZREtm/fjl69eiE4OFisV5Gf\nnx/mzJmDHTt24ODBg40WZEtR88v3dv90SiCENEynTp3w559/IigoCDNnzgSPx4O5uTlGjRqF+fPn\n17m/lZUVFi1ahNWrV9e57Zuj4vX19WFnZ4fVq1dLjHIXCoXo27ev1GNMmzYNAQEB6Nq1K06cOIHf\nf/8dixcvRmFhIXR1ddGnTx8cP34cxsbG2Lt3LzgcDiZPnixxHC6XixkzZmD9+vV4+PDhO6+4FI3D\nMAxT10Y9evTAtm3bMHDgQIm68PBwfPfdd4iOjm6M+GRSM23BtWvXYGVlpbA4Iu49wOm/L2PyiA/g\n7u5M3XgJIc2aPD47ZWoT0dXVBY/Hk1pXVlbWaDPRxsbGolu3brh7926jHF+eXr/OwqGwEGSUv8Se\ns0dx7dY9RYdECCGNTqYk4u3tjR07diArK0usPCsrCzt27ECvXr3kHhiPx8MPP/wg0TDVHFVUVODo\nxRCUCgoBAHlMHsq1pCddQghpTWRqE1m0aBEmTJiAESNGwN3dHcbGxsjNzUVUVBS0tbWxePFiuQe2\nYcMGmJmZITU1Ve7HlieRSITLty4jp/IVDI3UkVvAQw8XN4zxGKjo0AghpNHJPHdWaGgopk6dipKS\nEsTGxqK4uBg+Pj4IDQ2FtbW1XIO6efMmwsPD36trXlNgGAZ3o+/ifvJ9MGCgqsqFg7c1lo6fo+jQ\nCCGkSdR6JRIZGQlXV1d2QKGJiYnYdMiNJT8/H8uXL8e6devqPQtnU3uW/AzXY6+DL6qeF4tjwsH8\nQfPAVaLVCgkhbUOtSWTGjBnQ0NCAp6cn+vTpg969e0tMHNYYfvrpJwwePBj9+/dHZmZmo5+voV69\neo3D50NRrlIEDgeo0q7C7IGzYaBhoOjQCCGkydSaRIKCghAVFYWoqCj88ssvEAqFMDY2Ru/evdl/\ndc2pX1+hoaF49OhRs58Gubi4GPuPhyKlMBUqKkrQMuVieM8h6GbaTdGhEUJIk6o1iQwdOpRdHay8\nvByxsbGIiorCvXv3sHLlSlRUVKBTp07sVcr7TrkMVC89mZWVxQ7kqRnCMnv2bHz00UfvPZGavETG\nPcWTgiSAA5Ty+dDWaYcPu3yo6LAIIaTJydQ7S0NDA7169WK78goEAty7dw8nTpzAkSNHcPDgQSQm\nJr53MJs3b0ZFRQX7PCcnB9OmTcOaNWvQp0+f9z6+vDh1t4TaYxUUpZSi0oDBmokLaWAhIaRNkimJ\nAEBlZSXu3r2LO3fu4O7du3j8+DE4HA6cnZ3l9gFvZmYm9lxNTY0tr5mwrDkw1zHHzpnrEXjzD4x2\nHErrgxDSgt2/fx/Tpk2TedT26dOnsWLFCjx69KgJomv+3plEnjx5gn///Rf//vsvoqKiUFlZCRsb\nG/Tp0wd+fn7w9vZu9tMUy0tVVZXY1PdqympYPKTuuXsIIaQ1+3/t3X1UVNW7B/DvIBAKtkQRITWs\nwSEEZFACRAQ1f15DU8QLSmILM6DbLeVqlKawFGNVKIIvEKJlvkBeudoL+mv9MpdJkiAIYvgTGVQQ\nRHlTRiVeh+f+4eLkhAiOAzODz2etWUvPnnPYj49rHvaZffbusoh4enqipqYGzz//PFxdXfHJJ59g\n8uTJfbo2lYWFBS5fvtxnP68rV69eRV7+v/GPGVO0ftoxY4z1pS4fNqyursaQIUPg7++PgIAA+Pr6\nanRxQ02prKzEb5k5+GfeSWz68mtUV9dpukuMPTNsbGyQlpaGRYsWwcHBAd7e3jh//jxSU1Ph5eWF\nCRMmYOXKlWhpaRHOyc3NRWBgIJycnODu7o5PP/0UjY2NQntRURECAwPh6OiIOXPm4OLFi0o/s729\nHUlJSZg2bRqkUikWLFiAU6dO9VnMuqbLkciePXtw+vRpZGRkYPfu3TAyMhKeGfHw8IBYLO7LfmpE\nXV0dsrJycKb4PFpFTbh4rxDrD+1B4vsfarprjKns8uXLKC4u7tF7raysOm3ReuHChR4vRySRSGBj\nY/PEfXzYli1bEB0djTFjxmD16tUICQmBg4MDdu3ahWvXrmHVqlVwdnbGm2++iYKCAgQFBWHJkiXY\nsGEDKioqsH79elRUVCApKQlyuRxBQUFwc3PD4cOHUVpaioiICKWfFxsbi+PHjyMqKgovvvgifvvt\nN7z//vvYvXs3XF1dnyqW/qjLItIxGys8PBy1tbU4ffo0MjMzkZycjM8++wwWFhZwd3eHh4cH3N3d\nu9ymUlfdu3cPOTk5qGi4DgxqRNP9VpShFh/MUP9ik4yxrvn7+2P69OkAgHnz5iEqKgrr16/H6NGj\nIZFIsHv3bshkMgDA119/DXt7e2F1DbFYjPXr1yMkJAQymQw5OTlobW1FdHQ0jI2NYW1tjaqqKuHx\ngYaGBuzbtw/bt2/HlClTADwopEVFRUhOTuYi8gg9mp1lZmYGHx8f+Pj4AAAuXbqEzMxM5ObmYvXq\n1VAoFJ2GhLrszz//RHZ2NirqK1BxtxyDhxigyrQJwa/8J6a/oj1TjRl7Fjy8q+DAgQOhp6endGvd\nyMhIuJ0lk8ng5eWldH7HrqsymQwymQwvvfQSjI2NhXapVCr8+cqVK2hpacGKFSugp/fX3f7W1laY\nmZmpN7B+osdTfIEHT2rn5+cjPz8fFy5cQGFhIRQKBezs7Hqrf32uqakJWVlZuHnnJmR1MpCI0GDe\ngOmjXkWoy2JNd4+xp2ZjY/NUt5jGjx/f6RZXb9LXV/6YEolEXT6XZWRk1OlYx0PL+vr6EIlE+Ps+\nfA/PujQ0NAQAbN++HVZWVkrve7iosL88toiUlpYiPz8feXl5yM/Px9WrV9He3g5ra2u4ublh8eLF\ncHV17TfTfFtaWpCVlYXyqkoU3fk3CIQ/zf6EhZkFgicGQ0/E/4kY02ZisRj5+flKx86dOye0yeVy\nYZ/zjpmWhYWFwnutrKxgYGCAqqoqpVU4duzYAYVCgRUrVvRBFLqlyyLi5uYGuVwOIsILL7wANzc3\nhIaGws3NTe1rZmmDtrY2ZGdn48r1cvxWnIOBg/UgGtOC54c+jw9cPoCRfuffcBhj2iU4OBjz58/H\nF198AT8/P9y4cQMbNmyAl5cXxGIxRowYgYSEBHz00UdYtWoVqqqqsG3bNuH8gQMHIigoCLGxsTA2\nNoaDgwNOnjyJhIQEREdHazAy7dVlEXF1dYW7uzsmTZqkdE+yvxowYADutzUjs+QcFFDgwp1bGGps\njGTvCF6ZlzEdIZFIkJSUhPj4eOzfvx9DhgzB7NmzERYWBgAwMTHB3r17ERUVBT8/P5ibmyM4OFhp\nXb6wsDAYGBggJiYGtbW1GD16NKKiouDr66upsLSaiP5+g1AHqWOzeQAovHURG/bEo0p+F/f02rB7\n2aeYKLZVY08ZY0x7qOOzk2/yP8Tewg6RS8NgZGaEzX5ruYAwxlg3nmh2Vn+iUChw7do1iMVipZke\nDhZ2SA9LxnP6z2mwd4wxphueyZGIQqHA779n45v/PYZ9h452mvLHBYQxxnrmmRuJtLW14fffs/HP\nU1mobL6Gij+uwXSIGeb+Bz+JzhhjT+qZGom0tbXh7Nmz+KOsANXtpSAQriuq8a+qf2m6a4wxppOe\nmSLS0tKC38/8jmxZNsrulmLoUCPUDriL0RJzbPRbrunuMcaYTnombmc1NTUhIzMDOddyIG+WAwBa\nhjbDS+qAD1z/G8aGxt1cgTHG2KP0+yJy79597Nr3f6hsuQw9QwUAoNG0EU62TnjL8S3o6/X7fwLG\nGOs1/foTtLy8Gtu/2Y9bzdcgEhGGDR+I1hHNmDNxDmaKZ3a5iBtjjLGe6ddFpEZRiUpFCUTQg4II\n11rvYOO0/4G9ub2mu8YYY/1Cv/5i3cnKEXYTbdGCNhiMfA6JwdFcQBhjTI369UhEJBLhQ+//wkHL\nw/CT+vBKvIwxpmb9uogAgMEAAyxxXqTpbjDGWL/Ur29nMcYY6139YiSiUDyYunvr1i0N94QxxnRH\nx2dmx2eoKvpFEampqQEALF7Me6AzxtiTqqmp6bSnfE/1i02pmpqaUFhYiOHDh2PAgAGa7g5jjOkE\nhUKBmpoa2Nvbw8hItYlH/aKIMMYY0wz+Yp0xxpjKuIgwxhhTGRcRxhhjKuMiwhhjTGVcRBhjjKlM\n54pIZGQk1q5dq3Ts+++/x5w5cyCVSuHn54fMzEyl9pSUFNjY2Ci9xo0bp/Seb775BtOmTYOjoyOW\nLl2K0tLS3g4FtbW1+Pjjj+Hh4QFnZ2csW7YMxcXFQvvp06cxb948jB8/Hm+88QZOnTqldH5dXR1W\nrFgBZ2dnTJo0CZs2bUJbW5tG43ramHQ1Vx3OnTsHe/vOi3zqYq46dBWTNuaqu5gOHDiAWbNmQSqV\nwtvbG2lpaUrna2Oe1BFXr+aKdER7ezvFx8eTRCKhTz75RDienp5ONjY2lJSURFevXqUDBw6Qg4MD\nZWVlCe+JjIykd999l6qrq4VXTU2N0H7o0CFycnKin376iYqKiig0NJRee+01am5u7rV4FAoFLVy4\nkPz9/amgoIBkMhktX76cJk2aRLdv3yaZTEb29vaUmJhIJSUlFBcXR3Z2dlRcXCxcIyAggN588026\ndOkS/frrr+Tm5kZbtmzRWFzqiEkXc9Xh/Pnz5OLiQra2tp2uoWu56klM2par7mJKSUkhqVRK33//\nPZWVldGhQ4fIzs6OvvvuO+Ea2pYndcXVm7nSiSJy/fp1CgwMJFdXV5o6dapSEZk7dy6tWrVK6f1r\n166lwMBA4e8BAQG0devWLq8/c+ZM2rZtm/D3+/fvk1QqpR9//FGNUSi7ePEiSSQSKikpEY41NzeT\no6MjfffddxQREaEUAxFRYGAgrVu3joiI8vLySCKR0PXr14X2I0eOkJOTk5D4vo7raWMi0s1cERFt\n2rSJ7OzsyMfHp9MHri7mqruYiLQvV93F9MYbb1BMTIzSOWvWrKElS5YQkXbmSR1xEfVurnTidlZe\nXh4sLS2Rnp6OUaNGKbWVlZXB2dlZ6ZitrS3y8/OFYWhJSQnEYvEjr11XV4fS0lK4uLgIx4yNjWFv\nb4/c3Fw1R/IXS0tL7Ny5Ey+99JJwrGOnRblcjtzcXKU+AYCrq6vQp9zcXIwcORKjR48W2l1cXNDQ\n0IBLly5pJK6njQnQzVwBQEZGBnbu3IklS5Z0Ol8Xc9VdTID25aq7mNatW4dFi5RX9NbT08Pdu3cB\naGee1BEX0Lu50okiMm/ePMTExGD48OGd2szNzXHz5k2lYzdu3EBrayvu3r2LqqoqyOVyZGRkYNas\nWfDy8sKHH36IqqoqAH8tQDZixIhO1+3NBR1NTU0xdepU6On9lYL9+/ejqakJHh4euHXr1mP7VFVV\nBXNz807tAHDz5k2NxKWOmHQxVwDw448/YvLkyY88XxdzBXQfk7blqruYXFxclApEZWUljh07hilT\npggxaVueAPXE1Zu50oki8jhz585FSkoKzpw5A4VCgaysLBw+fBgA0NraCplMBgDQ19dHXFwcPvvs\nM5SWliIoKAhNTU1obGwEADz33HNK1zU0NERzc3OfxXHixAls2bIFS5cuhVgsRlNTEwwNDbvsU2Nj\nY6c+GxgYQCQSobm5WSvietKYdDVX3dHFXHVHF3L1uJhu376N0NBQmJmZISQkBIBu5Al48rh6O1c6\nv4pvSEgIbt++jeDgYCgUClhbW2PZsmWIjY3F4MGD4eHhgTNnzmDo0KHCOdbW1vD09MSpU6cwcuRI\nAEBLS4vSdVtaWjBw4MA+ieHIkSOIiIiAt7c3wsPDATxIaGtra5d9MjIy6tTn1tZWEBEGDRokLKam\nqbhUiUlXc9UdXcxVd7Q9V4+Lqby8HO+88w6amppw4MABDB48GID25wlQLa7ezpXOj0QMDQ0RGRmJ\nvLw8ZGRkID09HUZGRjAzM8OgQYMAQOkfD3gwTDM1NcXNmzdhaWkJ4K/l5DtUV1d3Gt71hi+//BJr\n1qzBokWLEBMTIwxZLS0tUV1d3WWfLCwsHtln4MGwVJNxqRoToJu56o4u5qontDVXj4vp4sWLWLhw\nIfT09HDw4EGl20DanCdA9biA3s2VzheRuLg4JCcnw9DQUPjO5JdffhHu5e7btw8eHh5KvwHfuHED\nt2/fxtixYzFs2DCMGTMGZ8+eFdobGhpQWFiIV199tVf7vmvXLsTHx2P58uWIiIgQviwDgIkTJyIn\nJ0fp/dnZ2cIkgokTJ6K8vFzp+6Ds7GwYGxvjlVde0VhcTxOTruaqO7qYq+5oa64eF9OVK1fw9ttv\nY+TIkUhNTRU+PDtoa56eNq5ez1WP55lpicDAQKUpvocOHaIJEybQr7/+StevX6eNGzeSVCqlK1eu\nEBFRWVkZSaVSCg8Pp5KSEsrNzaX58+dTQECAcI3U1FSSSqV09OhRunz5MoWGhtLMmTN7de73pUuX\nyNbWltasWaM0d7u6upoaGhqoqKiI7OzsaOvWrVRSUkLx8fHk4OAgTPNrb28nf39/WrhwIRUWFgpz\n2h+eptfXcT1tTLqaq4cdPny403RYXcxVdzFpY666i2nBggXk4eFBV69eVWqrq6sjIu3Mkzri6u1c\n6XwRISJKSEggT09PkkqlFBgYSAUFBUrt+fn5FBgYSE5OTuTi4kKrV6+m+vp6pfckJSXR5MmTSSqV\n0ttvv600V7w3xMbGkkQieeQrISGBiIhOnjxJ3t7eZG9vT3PnzqXMzEyla1RXV9N7771Hjo6O5O7u\nTrGxsaRQKDQWlzpi0tVcdXjUBy6Rbuaqu5i0LVePi2n79u1dts2YMUO4hrblSV1x9WaueFMqxhhj\nKtP570QYY4xpDhcRxhhjKuMiwhhjTGVcRBhjjKmMiwhjjDGVcRFhjDGmMi4ijD1GZGQkbGxsOu3A\n2OHEiROwsbFBYmJiH/eMMe3Az4kw9hj379/HnDlzIBKJcPToURgbGwtt9+7dg7e3NywsLHDw4EEM\nGDBAgz1lTDN4JMLYY5iYmCAqKgqVlZWIi4tTaouJiYFcLsfnn3/OBYQ9s7iIMNYNT09PzJ8/Hykp\nKSgoKAAA5OTkIC0tDStXrlTa0+Hbb7/F66+/Dnt7e7z22mvYtWsX/j7YT01Nxfz58+Ho6Ijx48fD\n19cXx48fF9rT0tLg5OSElJQUTJo0Ca6urqioqOibYBl7Qnw7i7EekMvlmD17NiwsLJCamgpfX1+Y\nmppi3759woqqCQkJ2LFjB4KCgjB58mQUFBQgMTERQUFBwt4Pe/bswebNm7FixQo4Ojqivr4eycnJ\nKC4uxokTJ2Bubo60tDRERkZCLBYjPDwcd+7cgY+PjybDZ6xr6lkijLH+7/jx4ySRSGjx4sXk5ORE\n5eXlQlt9fT05ODhQdHS00jlfffUVjRs3jm7dukVERBs3bqS4uDil9xQUFJBEIqGff/6ZiB6sTC2R\nSOinn37q5YgYe3p8O4uxHpoxYwZmz56NnJwcrF69GqNGjRLa8vLy0NzcjGnTpqGtrU14TZ8+HW1t\nbcjKygIArFu3DmFhYZDL5Th//jx++OEHfPvttwDQaddHW1vbvguOMRXp/Pa4jPUlDw8PHDt2DJ6e\nnkrH6+vrAQBBQUGPPK9jh7zS0lJERkYiOzsbhoaGePnllzF27FgA6PTdScfOnIxpMy4ijKlBx37W\nW7duFfasftiIESOgUCgQEhICExMTHDlyBDY2NtDX10dRURHS09P7usuMqQXfzmJMDaRSKQwMDFBb\nWwsHBwfh1dzcjPj4eNTW1qK2thZlZWXw9/eHnZ0d9PUf/A6XkZEBAGhvb9dkCIyphEcijKmBmZkZ\n3nrrLWzevBlyuRwTJkzAjRs3EBcXhyFDhsDa2hoGBgawtLTE3r17MWzYMJiYmCAjIwP79+8HADQ2\nNmo4CsaeHI9EGFOT8PBwhIWFIT09HcHBwYiPj8fUqVOxd+9eGBoaQiQSITExEcOGDcNHH32EsLAw\n/PHHH9i5cyesrKyQm5ur6RAYe2L8nAhjjDGV8UiEMcaYyriIMMYYUxkXEcYYYyrjIsIYY0xlXEQY\nY4ypjIsIY4wxlXERYYwxpjIuIowxxlT2/1nvk1dVbxYmAAAAAElFTkSuQmCC\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": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13.856665141368708" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results[system.t_end]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13.888888888888889" + ] + }, + "execution_count": 17, + "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": 22, + "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": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEjCAYAAADzIzwpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXmcHEXd/999zD2zs/eRTTabg00CCSSQhOMJGIIIKnKD\n/OQS5XlxiAooIKC8fFReKh6PYhQV8EJA8ggoCooQDhXMDSQBQq7d7Gaz9zn39HTX74+emd3J3pvN\nXW9tqru6uvrbndn6dNW3DkUIIZBIJBKJZByoB9sAiUQikRy+SBGRSCQSybiRIiKRSCSScSNFRCKR\nSCTjRoqIRCKRSMaNFBGJRCKRjBspIocZt956K7NmzaKrq2vAubvuuotZs2Zx0003DTgXiUQ49thj\nuf322yfEjmXLlnH11VdPWLpDmX15ho6ODqLRaPb4K1/5CrNmzZoo0w4p9vezJZNJWlpassfPPPMM\ns2bNYvXq1fvtnpKRkSJymLFo0SIANm7cOODc6tWrcTgcrF27FtM0c85t3LgR0zQ5+eSTD4idEnj9\n9dc599xz6ezszMZ98pOf5IEHHjiIVu0/9uezNTY28olPfII33ngjG7do0SIeeOABZsyYsV/uKRkd\nUkQOM4YSkbq6OpqamjjvvPMIhUK8++67Oec3bNgAwOLFiw+MoRI2btxIb29vTtyCBQu44IILDpJF\n+5f9+Wy7d++mrq4uJ27KlClccMEFFBcX75d7SkaHFJHDjGOOOYb8/HzeeeednPhVq1ahqio33ngj\niqLwn//8J+f8W2+9RWlpKdOmTTuQ5kokkiMcKSKHGYqisHDhQjZt2pQTv2rVKmbPnk11dTWzZs1i\n1apV2XNCCDZu3DigFrJu3To+/elPs2DBAhYsWMA111zD2rVrc9IsW7aMr371q9xzzz0cf/zxnHHG\nGTnNM/154YUXuOCCCzj++OM577zzWLly5aieadmyZdx777383//9H2eddRbz58/niiuuyHmGsdo8\nmvyG8nWM5AMRQvDkk09y6aWXsmDBAubNm8e5557LL3/5SzKzCH3lK19h+fLlAJx11lnZ/AbzGzQ2\nNnLHHXdwyimnMG/ePM4//3xWrFiRk+YrX/kK5557Lhs3buSqq67ihBNO4LTTTuNb3/oW8Xh8SFsz\n15599tm89dZbXHzxxRx//PGce+65PPnkk4Pe4/HHH2fRokUsWrSIf/7zn2Oyce9na25u5s4778xe\n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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "decorate(title='World population projection', xlabel='Years', ylabel='Population (Billions)')\n", + "p0_values = linspace(1, 20, 10)\n", + "\n", + "for i in p0_values:\n", + " system.p0 = i\n", + " run_simulation(system, update_func2)\n", + " plot(system.results)" + ] + }, + { + "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": 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", + "
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": 56, + "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": 57, + "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": 58, + "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": 59, + "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": 60, + "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": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "FGB in 10 years: 1343.9163793441223\n", + "ESL in 10 years: 1349.85880758\n" + ] + } + ], + "source": [ + "p0 = 1000\n", + "alpha = 0.03\n", + "\n", + "fgb_in_10_years = p0 * (1 + alpha) ** 10\n", + "esl_in_10_years = p0 * exp(alpha * 10)\n", + "\n", + "print(\"FGB in 10 years:\", fgb_in_10_years)\n", + "print(\"ESL in 10 years:\", esl_in_10_years)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1000. , 1030.45453395, 1061.83654655, 1094.17428371,\n", + " 1127.49685158, 1161.83424273, 1197.21736312, 1233.67805996,\n", + " 1271.24915032, 1309.96445073, 1349.85880758, 1390.96812846])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_alpha = exp(alpha) - 1\n", + "\n", + "years = linrange(11)\n", + "\n", + "fgb = p0 * (1 + new_alpha) ** years\n", + "esl = p0 * exp(alpha * years)\n", + "\n", + "fgb" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1000. , 1030.45453395, 1061.83654655, 1094.17428371,\n", + " 1127.49685158, 1161.83424273, 1197.21736312, 1233.67805996,\n", + " 1271.24915032, 1309.96445073, 1349.85880758, 1390.96812846])" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "esl" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "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": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "years_total = 100\n", + "\n", + "time = linrange(101)\n", + "fgb = p0 * (1 + new_alpha) ** time \n", + "esl = p0 * exp(alpha * time)\n", + "\n", + "beta1 = 30\n", + "beta2 = 0.5\n", + "pcu = p0 + beta1 * time + beta2 * time ** 2\n", + "\n", + "newfig()\n", + "plot(time, esl, 'r-', label = 'FGB')\n", + "plot(time, pcu, 'b-', label = 'PCU')\n", + "plot(time, fgb, '--', label = 'ESL')\n", + "decorate(title = 'Years vs. Money Accumulation of Bank Accounts', xlabel='Years', ylabel='Dollars')" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ESL at year 0: 1000.0\n", + "PCU at year 0: 1000.0\n", + "FGB at year 0: 1000.0\n" + ] + } + ], + "source": [ + "print('ESL at year 0: ', esl[0])\n", + "print('PCU at year 0: ', pcu[0])\n", + "print('FGB at year 0: ', fgb[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ESL at year 10: 1349.85880758\n", + "PCU at year 10: 1350.0\n", + "FGB at year 10: 1349.85880758\n" + ] + } + ], + "source": [ + "print('ESL at year 10: ', esl[10])\n", + "print('PCU at year 10: ', pcu[10])\n", + "print('FGB at year 10: ', fgb[10])" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ESL at year 20: 1822.11880039\n", + "PCU at year 20: 1800.0\n", + "FGB at year 20: 1822.11880039\n" + ] + } + ], + "source": [ + "print('ESL at year 20: ', esl[20])\n", + "print('PCU at year 20: ', pcu[20])\n", + "print('FGB at year 20: ', fgb[20])" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ESL at year 100: 20085.5369232\n", + "PCU at year 100: 9000.0\n", + "FGB at year 100: 20085.5369232\n" + ] + } + ], + "source": [ + "print('ESL at year 100: ', esl[100])\n", + "print('PCU at year 100: ', pcu[100])\n", + "print('FGB at year 100: ', fgb[100])" + ] + }, + { + "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/chap05mine.ipynb b/code/chap05mine.ipynb new file mode 100644 index 00000000..abf68b77 --- /dev/null +++ b/code/chap05mine.ipynb @@ -0,0 +1,2110 @@ +{ + "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": 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": [ + "### 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": 2, + "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": 2, + "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": 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", + "
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": 3, + "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": 4, + "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": 5, + "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": 6, + "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": 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", + "
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": 7, + "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": 8, + "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": 9, + "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": 9, + "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": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "33.769308261 students\n" + ] + } + ], + "source": [ + "tc = 4\n", + "tr = 5\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", + "\n", + "results = run_simulation(system, update1)\n", + "percent_change = system.init.S - results.S\n", + "percent_change\n", + "\n", + "total_infected = percent_change*89\n", + "print(total_infected, \"students\")" + ] + }, + { + "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": 20, + "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": 21, + "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": 22, + "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": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\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": 29, + "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": 25, + "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": 25, + "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": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\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": 40, + "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", + "
SIR
00.9888890.0111110.000000
10.9861420.0116360.002222
20.9832730.0121770.004549
30.9802800.0127350.006985
40.9771590.0133090.009532
50.9739080.0138990.012194
60.9705240.0145030.014973
70.9670050.0151210.017874
80.9633490.0157530.020898
90.9595550.0163960.024049
100.9556220.0170500.027328
110.9515490.0177130.030738
120.9473350.0183840.034281
130.9429810.0190610.037957
140.9384880.0197430.041770
\n", + "
" + ], + "text/plain": [ + " S I R\n", + "0 0.988889 0.011111 0.000000\n", + "1 0.986142 0.011636 0.002222\n", + "2 0.983273 0.012177 0.004549\n", + "3 0.980280 0.012735 0.006985\n", + "4 0.977159 0.013309 0.009532\n", + "5 0.973908 0.013899 0.012194\n", + "6 0.970524 0.014503 0.014973\n", + "7 0.967005 0.015121 0.017874\n", + "8 0.963349 0.015753 0.020898\n", + "9 0.959555 0.016396 0.024049\n", + "10 0.955622 0.017050 0.027328\n", + "11 0.951549 0.017713 0.030738\n", + "12 0.947335 0.018384 0.034281\n", + "13 0.942981 0.019061 0.037957\n", + "14 0.938488 0.019743 0.041770" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nBtWqVVO9+vbte+8CvkNHjhxxirtatWrEx8e7bP+g/S63b9/ucvuqVatGnz59XPZ5EH+XEyZMYNy4\ncUk5F+QAABBmSURBVKqyX3/9lU6dOlG3bl06dOjAli1bbrmM9PR03n77baKiomjQoAHjx48nNTW1\nMMO+La62cenSpbRp04awsDDatWvHqlWrbrmMLVu2uPy/UKTuJ1MeMrNnz1YaN26s/Prrr8revXuV\nrl27Kt26dXPZ9uLFi0pkZKQyadIk5ciRI0psbKxSs2ZN5ZdffrnHUWtns9mUF154QXn++eeV3bt3\nK4cPH1aGDBmiNGrUSLl06ZLLPm3atFEWLlyonD9/3vG6cuXKPY789q1bt06JiopSxX3+/HnFbDY7\ntX0Qf5eZmZlO2xYXF6dUr15d2bp1q8s+D9Lv0m63K3PmzFGqVq2qjB071lF++PBhpXbt2sr8+fOV\nI0eOKLNnz1Zq1aqlJCUl5bmsESNGKG3btlUSExOVP//8U2nVqpUybNiwe7EZt5TXNi5btkwJCwtT\nvv76a+X48ePKl19+qdSqVUuJi4vLc1kLFy5UOnfu7PR/wmaz3YtN0eShShiZmZlKeHi48tVXXznK\nTp48qVStWlXZuXOnU/sFCxYoLVq0UP1CRo8erfTr1++exHsn9u3bp1StWlU5cuSIoywzM1OpV6+e\ny/+MmZmZSs2aNZVt27bdyzALxOzZs5WePXtqavsg/i5zu3btmtK4cWNlxowZLusfpN/liRMnlF69\neilRUVFK8+bNVTvTt99+W+nVq5eqfa9evZTx48e7XNaZM2eU6tWrK3/88YejbPv27Uq1atWUs2fP\nFs4GaHCrbezQoYMyffp0VfsxY8YovXv3znN5I0aMUN56661Ci7cgPFRDUvk9byO3vJ63kZCQgFJE\nb08pU6YMCxcu5JFHHnGUZU+bcvXqVaf2x44dw2q1EhrqPDNuUXf48GEqVbrVEyZuehB/l7nNnz8f\nk8nE4MGuZxx+kH6XCQkJlClThrVr11KunHpCzfj4eNXfKEBUVFSeQ40JCQno9XrV83IiIiIwGAzs\n3Lmz4IPX6FbbOH78eLp166Yq0+v1XLt2Lc/lHT58uMj/bh+qZx7e9+dt3AN+fn40b95cVfbFF1+Q\nkZHh8imESUlJuLm5ERMTw9atW3F3d6dNmzYMGjQId/eiPfni4cOHyczM5Pnnn+fUqVNUqVKFYcOG\n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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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 = 13\n", + "\n", + " return System(init=init, t0=t0, t_end=t_end,\n", + " beta=beta, gamma=gamma)\n", + "\n", + "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(sir, update1)\n", + "\n", + "frame = sir.results\n", + "plot_results(frame.S, frame.I, frame.R)\n", + "frame" + ] + }, + { + "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": 41, + "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": 42, + "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": 45, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sick_at_peak(system):\n", + " frame = system.results\n", + " sick = frame.I.max()\n", + " return sick" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.043536202687592354" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sick_at_peak(system)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def day_outbreak_peak(system):\n", + " frame = system.results\n", + " day = frame.I.idxmax()\n", + " return day" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "day_outbreak_peak(system)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sick_at_end(system):\n", + " frame = system.results\n", + " return frame.I[system.t_end]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.00067419431560344738" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sick_at_end(system)" + ] + }, + { + "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": 55, + "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": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3333333333333333, 0.25)" + ] + }, + "execution_count": 56, + "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": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.072994358618541533" + ] + }, + "execution_count": 57, + "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": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.053745015026436249" + ] + }, + "execution_count": 58, + "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": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nqaqp42hSLgln8wjwsqddsButRKun2Zi98LOiooJt27bx66+/kp+fz8qVK9m/fz+RkZH06tWrOeso\nCILwl1hcMdZTXqXl9PlCzlwskls9kiSRnlNOek45ahsr2ga7EhnshqNaJCZuSmZN2cjNzWXYsGFy\nMs+LFy+i1Wo5fvw4L774Ir///nuzVlIQBKGpONip6BHlw5jBkQzuHUygt4PR2HRlTR1HzuTy7/87\nw67/nedCVil6vdg2oSmY1cJZsmQJKpWK+Ph4nJyciIqKAuCDDz5g0qRJfPjhh6KVIwhCi2JhoSDE\nz4kQPydKK2o5faGIMxeLqKq53OppSCBqb2tFuxA32oW4YWcjckjeLLNaOL/88gsvv/wybm5uRp8E\nLCwsGDVqlFFyT0EQhJbGyd6aXu19eP7RSB7p1YoALwej8xXVdRw8lcPmPaf54WAaOYWVt6mmLZtZ\nLRy9Xo+1deMzOOrr68UufYIg3BWUFgpa+zvT2t+Z0opaTl0a62nIZqDXS5xNN2yd7eVqR/vW7rTx\ndxYLSs1k1k+pS5curFu3jpqayxslNbR0vvjiC7HQUxCEu46TvTW9O/gy9tFIBvYIwttNbXQ+t6iK\nHw+ls3nPaX4/mU3FFYtNhcaZ1cJ57bXXGDFiBAMHDqRnz54oFAo++eQTUlNTOXfuHNu2bWvuegqC\nINwWSqUFYYEuhAW6kFdUxYnUAlIyiqnXX06jczQpl2Nn8wj2c6JDa3d83dVGww+CgVktnPDwcHbs\n2EG3bt347bffUCqV/Pzzz/j5+fHZZ5/Rrl07sx9YX1/P+++/T9++fYmOjmb69OkUFBRcs/z+/ft5\n4okniI6O5rHHHmP37t1G59PS0pg6dSo9evSgZ8+eTJ8+naysLKMyvXr1Ijw83Ojf6tWrza6zIAgC\ngKerHQ91D+T5RyPpGeWDve3lCQR6SeKcpoSdP6Xy2Q/JnDpfSJ2u/jbW9s5jVmqbxmi1huajSnVj\n89RjY2PZsWMHS5cuxdnZmYULF6JUKtm+fbtJ2aNHjzJy5EhGjx7N3//+d06fPs0//vEP5s+fz7Bh\nw6iqquLxxx+ndevWzJgxg/r6et59912KiorYuXMnKpWKgoIC+vTpw7Zt2wgKCpLvrVarsbOzu2Y9\nRWobQRCuR6+XuJBVyonUAjLzK0zOW6uUtG3lSvtQ93smk8FfTm2j1+tZsWIFx44dk7vPjh49yrRp\n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\n8NZbb9G1a1c2bdrEhAkT+O6775rsE+qVdp3dxe7k3dcvCPQL6seoDsZ7Cm09sZX/pf3PrOuHhA3h\nsfDHbriODYYOHcrQoUOveT4nJwcvLy+jY56envIbYYcOHXjkkUfo168fSqWSV155BQ8PDxYuXMiz\nzz570z/fgwcP4uLiwqeffkpCQgJz5szhxx9/5PXXX+fNN99k+fLlxMTE8Ouvv8rXfPjhh/zjH/9g\n/vz5vPvuu7z22mu0bt2a999/n8rKSqZPn86GDRuYPXu22fX44IMPmDNnDnPnzuXbb7/lvffeo2fP\nnnTt2tWo3Ny5c+WN6QD27dvHggUL5IC7dOlSfvnlF5YvX463tzcnTpyQg9To0aNZvXo1U6dO5csv\nvyQ0NJTExESj+7/66qukpKSwcOFCfH192b59Oy+88AKffvqpvOHbN998w9NPP81nn31Geno6M2bM\nIDQ09Ib+NgWhuZkVcBQKBZMmTTL5xLpt27YbephWq2XLli3MmzePPn36ALBixQoGDBhAQkICnTt3\nNiq/YcMGoqOj5YHn0NBQNBoNK1euZNiwYeTk5LB79242b95Mp06dAMMMujFjxvD666/j5eXFhg0b\nGDJkCM8++ywAixYt4sCBA3zxxRdMnjz5hup/r6mpqUGlMk5hoVKpqK2tlb9fuHAhs2bNwtLSEjs7\nO9LT0/nhhx/49ttv2bFjBx999BFOTk68/fbbREREmP3sRYsWYWdnR3BwMMuXL6dPnz5yS/q5555j\n3759FBUVyUGtf//+8oeQZ555hvj4eGbOnEn79u0B6N27NykpKTf0+h988EH59+bFF19k3bp1HD9+\n3CTgODg44ODgAEBSUhJLlizhjTfeoG/fvgB07NiRRx99lC5dugCGluGnn35KcnIySqUSJycnwNC1\n2LBTaIPU1FT27dvHhg0b5PvNmzePEydOsGHDBlauXAmAs7Mz8+bNQ6lUEhwcTO/evTl+/PgNvV5B\naG63tJM4KSmJyspKo24af39//Pz85G6aK6WlpZn8cUdGRpKZmUlWVhYJCQlYWFgYBarOnTujVCo5\nevQoer2ehIQEo+dZWFjQrVu3Rp8nGLO2tjbZC0mr1WJra7xDoKOjozwGExsby4QJE6isrOTdd9/l\nk08+Yfz48bz++utmP9fDw8NoTMfOzs5ot1kbGxu5Lg2CgoLkrxvqFxgYaHTNleXN0apVK6PvHRwc\n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\nhEMIIUQr/g8RsTMb7qGIjAAAAABJRU5ErkJggg==\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": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.0729943586185\n", + "0.1 0.0537450150264\n", + "0.2 0.0392435172562\n", + "0.3 0.0283658861729\n", + "0.4 0.020223258331\n", + "0.5 0.0141256673751\n", + "0.6 0.00954597697789\n", + "0.7 0.00608689206323\n", + "0.8 0.00345242618756\n", + "0.9 0.00142419967517\n", + "1.0 -0.000157647397348\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": 61, + "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": 62, + "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": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig03.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='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": 64, + "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": 65, + "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": 65, + "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": 82, + "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": 83, + "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": 84, + "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": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3333333333333333, 0.25)" + ] + }, + "execution_count": 85, + "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": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.332887143272 0.0727097008123\n", + "100.0 0.332134252669 0.072231583542\n", + "200.0 0.330171608455 0.0709981710575\n", + "300.0 0.325386471865 0.0680682357215\n", + "400.0 0.315403905242 0.0622965679962\n", + "500.0 0.3 0.0542374159058\n", + "600.0 0.284596094758 0.0471164122614\n", + "700.0 0.274613528135 0.0429568759184\n", + "800.0 0.269828391545 0.0410809692488\n", + "900.0 0.267865747331 0.0403327671866\n", + "1000.0 0.267112856728 0.0400489624941\n", + "1100.0 0.26683150821 0.039943361117\n", + "1200.0 0.266727403413 0.0399043488306\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": 87, + "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": 88, + "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": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig05.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nPDw8AJgwYQI7d+6kV69ehIeHc+nSJdatW8fhw4fZsGED1tbWzJs3j88++4z69eszevRo2rRpgyRJ\njBo1iri4OF555RUaNWpEamoq//73v3n33XfZtGnTQzelr1u3Dp1Ox/Dhw1GpVPz4449MmDABDw8P\n1Go18+bNY/369URFRTFv3jwcHByAsiQ+depUOnTowKRJk7h16xbr1q1jyJAhrF+/niZNmgCwbds2\n/vGPf9C8eXPGjh1LcXExK1asIDY2lsjISEaPHo1Op5O3X9U9MUPO73KGnGfVeT/XGEkw2OTJkyW1\nWn3Pn7i4OLn+N998I6nVaikpKanKstLSUik0NFQaNmyYVFJSItfLy8uTevbsKQ0YMEAuCwsLk4KD\ngyWNRiOXXbx4UfLy8pLmzp1b5T4rM3jwYMnPz0+6fv26XFZYWCi9+OKLkq+vr5SRkSFJkiT98ssv\nklqtlg4fPnzP7b3yyiuSWq2Wdu3aJZfl5ORIbdq0kV5++WW57Pnnn5eGDh0q6XQ6uay4uFjq3Lmz\n1Ldv3wrb27Nnj158gYGB0tChQ+WyF198UerSpYuUk5Mjl/3111+SWq2WunXrVmW8165dk9RqtbRs\n2TK5bODAgVKnTp0kLy8vKTs7W5IkSTp69Kje8Rsav6+vrzRz5ky9fX799dfSoEGDpNzcXEmSbr+f\nVq5cKdcpLS2VevbsKXXp0kUuu/v/tPz1Z599prf9N998U2rZsqWUn58vSZIkLV68WFKr1dLBgwfl\nOjk5OVLXrl3v+3/6008/VYhNkiTphx9+kNRqtbRmzRpJkm6/P9599129ejNmzJDUarV06dKlKvch\nSZKkVqulyZMny6/37dsnqdVq6dNPP9Wrt337dkmtVsvvc0mSpG7dukmvvPKK/PrkyZOSWq2W1q1b\np7fu/v37JbVaLa1YsUKSJElKSkqS1Gq19M0331QrNrVaLfn5+UlpaWkV9vnVV1/JZeX/r+XKz4MJ\nEybobT8tLU0KDAyUxowZI0lS2f99cHCw1K9fP6mgoECud/DgQb2/+d3bl6Sy8+XO97uh57eh55kh\n7+eaJpr1HsAXX3zBypUrK/2pbu+euLg4kpKS6NGjB7du3UKj0aDRaCgsLKRbt27Ex8dz48YNMjIy\niImJoV+/fnpXBE2aNOGXX37hrbfeMnifN2/e5NSpUwwYMABnZ2e53NTUlDfffJPCwkIOHTpUreMA\n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\nmYjz8/ORJAlzc/OKqfgjIiIiOHfuHJGRkcWur44xAfKHnjFjxtC7d28AXF1dOXHiBDt27Ki2G4wz\n7AAAGHVJREFUcd24cYPQ0FC2b9+Oh4cHAEuWLKFnz5588cUX1Tauwp43Bt3gqMXN+l0Vzi03btwg\nODiY3Nxctm7dSo0aNYDyj0tcOZVS4Vl8C6sOs+p+/vnnTJs2jYEDB7Jw4UK5ma9evXolzhL8uJmI\noeilekXZvXs3d+7ckbvz9+jRA4C33nqLDz/8sFrGBA+bQxwdHeVlCoWCZs2akZCQUG3jio2NRaPR\n4ObmJi8zMjLCxcWFa9euVdu4CnveGKryueXs2bMMGDAApVLJl19+qdfMV95xieRUSoVn8dUpaRbf\nqmLdunUsX76ciRMnEhoaKneIgIKZho8fP65XPjo6Wp72vk2bNty4cUOvbT86OhoLCwucnZ0rJoBH\nLF68mL1797Jnzx727NnD+vXrAZg7dy4hISHVMiaAli1bYm5uzpkzZ+RlkiQRHx+Pg4NDtY3L3t4e\ngAsXLsjLdHE1adKk2sZV2PPGYGtrS5MmTfTOLdnZ2cTGxlbquSU+Pp4333yTBg0asH37djnZ6JR7\nXM/U//BfatGiRVL79u2l3377Tf6e06NdSKuSv//+W3JxcZGmTZsmJSUl6f1kZ2dL58+fl1q2bCmt\nWLFCiouLk5YvXy61atVK7nqu1Wql/v37SwMGDJBiY2Pl7zEU7hpa2W7fvq3Xlbw6x7Rs2TLJ29tb\n2r9/v3TlyhVp3rx5UqtWraT4+PhqG5darZb69+8v9erVSzp+/LgUFxcnhYaGSh4eHlJCQkK1jGvo\n0KF6Xa7LIobt27dLHh4e0nfffSdduHBBGj16tNStW7cK7S7/aFyvv/66FBAQIF2+fFnv3JGamloh\ncYnk9BTy8/Oljz/+WPLx8ZG8vLykkJAQ+Y2qipYsWSI5OjoW+7Nq1SpJkiTp119/lXr27Cm5ublJ\nr7zyinTkyBG9bSQlJUnjxo2TWrduLbVv315asmSJpNFoKiOcYj2anCSp+sak1Wql8PBwqWPHjpKb\nm5v0xhtvSMePH5fXV9e4UlNTpRkzZkiBgYFSmzZtpKCgIOncuXPy+uoW16MncUkqmxjCw8Mlf39/\nycPDQ3rzzTf1vj9UEQrHdfny5ceeO7p27VohcYnJBgVBEIQqR9xzEgRBEKockZwEQRCEKkckJ0EQ\n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\niV6YPgAAAABJRU5ErkJggg==\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": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 100, + "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": 101, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 0.988888888889 0.266727403413 0.0399043488306\n", + "1.0 0.977777777778 0.26683150821 0.0388176882882\n", + "2.0 0.966666666667 0.267112856728 0.0378188828833\n", + "3.0 0.955555555556 0.267865747331 0.0370003381643\n", + "4.0 0.944444444444 0.269828391545 0.0365902840169\n", + "5.0 0.933333333333 0.274613528135 0.037092114289\n", + "6.0 0.922222222222 0.284596094758 0.039311650251\n", + "7.0 0.911111111111 0.3 0.0435286630822\n", + "8.0 0.9 0.315403905242 0.0479803910276\n", + "9.0 0.888888888889 0.325386471865 0.0503817832299\n", + "10.0 0.877777777778 0.330171608455 0.0506191645435\n", + "11.0 0.866666666667 0.332134252669 0.0496795661493\n", + "12.0 0.855555555556 0.332887143272 0.0482744098142\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": 102, + "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": 103, + "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": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap05-fig06.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='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": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'If the price of the vaccine drops to 50 dollars per dose, the optimal allocation\\nof spending would shift more towards the vaccine as opposed to the handwashing campaign.'" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"If the price of the vaccine drops to 50 dollars per dose, the optimal allocation\n", + "of spending would shift more towards the vaccine as opposed to the handwashing campaign.\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'You could add a third condition to the state variable called quarentine and add a factor that determines the amount of newly\\ninfected people that report that they are sick and get placed in the infermery. Then you could add how long they stay in the\\ninfirmary for, and reduce gamma based on the number of student in the infirmary. Then, after a certain amount of time in the\\ninfirmary, the person can be moved to the Recovered category.'" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"You could add a third condition to the state variable called quarentine and add a factor that determines the amount of newly\n", + "infected people that report that they are sick and get placed in the infermery. Then you could add how long they stay in the\n", + "infirmary for, and reduce gamma based on the number of student in the infirmary. Then, after a certain amount of time in the\n", + "infirmary, the person can be moved to the Recovered category.\"\"\"" + ] + }, + { + "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/chap06mine.ipynb b/code/chap06mine.ipynb new file mode 100644 index 00000000..183db9bb --- /dev/null +++ b/code/chap06mine.ipynb @@ -0,0 +1,1282 @@ +{ + "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": 2, + "metadata": {}, + "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": 3, + "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 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='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": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Original\n", + "\n", + "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", + " 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": 7, + "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", + " \n", + " s, i, r = state\n", + " \n", + " unpack(system)\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": 8, + "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": 8, + "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": 9, + "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": 10, + "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": 11, + "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": 12, + "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": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "infected_sweep = sweep_beta(beta_array, gamma)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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": 15, + "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": 15, + "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": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.1, 0.3, 0.5, 0.7])" + ] + }, + "execution_count": 16, + "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": 17, + "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": 18, + "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": 19, + "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": 19, + "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": 20, + "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": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(11, 4)" + ] + }, + "execution_count": 21, + "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": 22, + "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": 23, + "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": 24, + "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": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_sweep_frame1(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": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nrkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_sweep_frame1(frame)\n", + "\n", + "decorate(xlabel='Beta - Gamma',\n", + " ylabel='Fraction infected',\n", + " legend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Solution: The graph above which graphs fraction infected as a function of beta - gamma shows no distinct curve indicating that there isn't really a correlation between the two." + ] + }, + { + "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": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "s_inf_array = linspace(0.0001, 0.9999, 101)\n", + "#s_inf_array" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "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": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "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", + "dtype: float64" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frac_infected = 1 - s_inf_array\n", + "frac_infected_series = Series(frac_infected, index=c_array)\n", + "frac_infected_series.head()" + ] + }, + { + "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": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAERCAYAAABowZDXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYlOX6wPHvDPsu++qSmqAgIgpWrmmZWORS9it307Is\nzSzLjlZaejyamklpqS2SpZZHS8vS0qxsU0JTc9fjAgICArIPs/z+GBgYWRySYVjuz3V1MfPMM+97\nD9J7z/usCp1Op0MIIYS4AaWlAxBCCNE4SMIQQghhEkkYQgghTCIJQwghhEkkYQghhDCJJAwhhBAm\nsbbkyV955RU0Gg0LFiyots6RI0dYsGABx48fx9fXlylTpjB06NAaj1tUVMTRo0fx9vbGysqqrsMW\nQogmSaPRkJ6eTlhYGPb29pVet0jC0Ol0rFixgk2bNvHggw9WW+/q1atMmjSJ++67jwULFvDrr78y\ne/ZsvLy86NWrV7XvO3r0KKNGjTJH6EII0eR98skndO/evVJ5vSeMS5cu8a9//YvTp08TEBBQY93P\nP/8cZ2dnZs+ejVKppF27dhw7dowPPvigxoTh7e0N6D+0n59fncYvhBBNVWpqKqNGjTJcQ69X7wkj\nMTERf39/li1bxowZM2qsm5CQQFRUFEpleVdLdHQ08+bNQ6fToVAoqnxfWTOUn58fQUFBdRe8EEI0\nUjqdDp0Ow7VTqaz6+glU25Rf7wljyJAhDBkyxKS6qampdOrUyajMx8eHwsJCsrKy8PDwMEeIQogG\nTqfTodXq0JU+1mh1oANthYui1vCzQpm2irLSx8b1KpYZv24o04IO/TG1pSssabXXH++6Y3L98Uvf\nW6t4q6pXxWeo4nOVsbFWcntnf8LbV30nUR2LdnrfSFFREba2tkZlZc9VKpUlQhKiTumquLiUXXSg\n7HH19YwuQKX1q73AlT3WVnUh1KE9cRLdgQR0V6+i9fBA16072nbtK9czxFMxXgBd+WOdDo3hQlXN\nBRPQJSWjPX0aXV4eWmcXdG3bofPzq3xRvO5C/I+lp8OlS5BfAE6O0LIlVNP8Umfq+5wmnK9EreXo\n2cymlTDs7e0rJYay5w4ODpYISYhKdDodRSoNBUUlFBSpKSxWX/dYTUFxCYVFaopLNJUu9tWqzwtN\nejqcOAFYg5UP5AB7DsHlono4J4At5BXD4WOg0prnnEbnA/Lzy5/Xy2esh3Pe4HwKhQKFAuxtrYkM\n9qn14Rt0wvDz8yM9Pd2o7MqVKzg6OuLi4mKhqERzoNXqKFKpjRPA4b8p2J9IYVYuBW4eFN4aQoGn\nL4XF6pv71luV+r7QXLpUfbm5LqY3eU5l6cVPqVCgUFZ4rFCgVGC4OBrKDp5DoS1CgQ4llP7UoUg+\ngyK0reE9SgWlx9M/BgVWysrHUyhAWVpPgf51K6UCSusoFQr4ZA9KdYb+PIBCp/+pTFOhuHeC4TMo\nSuuXHx9DP0Olc9YQh3LxIhTFl6/7jKDIyEbx5Jxq+31N1aATRrdu3diyZYtRB/cff/xBZGSkUUe4\nEP+ERqMlO6+YrNxisnOLybpWRFZuMbkFKopUGuNv/4YLuBKUbpCrgcS/IURz0xfUKi9wly6g0KkN\nFxrDBSfpfyjbtaz+oljFha28Xvnj8nqlZT9eQqHVlp+n9EKjvAaE3YtSWVoPBQplFRcrKlzgqHAh\nre4Cp1Cg+GEdSq2m/Hy60p8lChT3jTFKBlV9hlr78i3QaiuXX1VC3yf/+T9gTTJOV33OKznQ2gx9\nsKnJQBXnS7kMN5ksoIElDJVKRU5ODm5ubtja2vLggw+ydu1aXn31VcaNG8evv/7KV199xZo1aywd\nqmhEiorVZOUWk5WrTwjZpYkhJ19Vc5NQRTf4NmxnY4WDvTWOdjalP61xtLfG0d4GR3trHOz0/9nb\nWZd++yy/sFd58du5suoLTZYS7nnc9A9vKh8FJKdWLg8Kgo6+dX8+AD93SE6uXB4QBA42dX8+f/9q\nzlfz8P5GdU4zn69BJYyDBw8yduxY4uPj6dGjB15eXqxdu5b58+czdOhQAgICWLRoEbfffrulQxUN\nVEFRCSkZ+aReLSAts4Cs3CIKi9X/6Fj2ttaGi71jbgqOuhIcdGocdWoc0P90LNHiMHw81lZ1fMdb\n3xeamBhYu7Zy+aBB5jmfJc4pn/GmWTRhfPzxx0bPe/TowcmTJ43KIiIi2Lx5c32GJRqDAwfQ7viG\nzLQsUr2CSA3tToqLN9fyTR89p1AocHG0wd3FHndXO/1PFztcne1wsLPWt0eX+UkDySmVDxIYBHWd\nLKD+LzRRUfqf334Lly/rE9OgQeXlTeGc8hlvWoO6wxCiJjqdjsycIs7/mEDSd/tIU7hRYu0O2cAv\nhyEkpMr+BGsrJe4udrQwJAZ9cmjhYmf6nUFzuYCb8/gN4ZzyGW+KJAxhWQcOwDffQEqKvhkmJsbo\nj12t0ZJ0JY/zl3M4n3KNvMISSDwNSufKx7p0CStfH3w9HPHzdMLP0wmvFg64ONrc9OiQZnMBF6IG\nkjCE5Rw4YPytPTkZ1q5FpdFx1rc955KzuXQlD7Xmus7f/ALDQ2ddCX7aAvx1BfjlFOE1dDxW5mgi\nArmAi2ZPEoawnG++MTzUApeUzpxUtuDcl0dQR9pW+RY7GytauULrzCSCtHk4U6FDO8hM/QlCCEAS\nhrCklBRysOWolQenrNzIV5QOpcwvNKrm7mJPmwBX2vi74ufphFVgEaw9Uvl45hztIoSQhCHMpIa+\nCZ1Ox+WMfA55hHE+V0ulmRBOjni62hPcxoN2gW64OdsZv26J/gQhhCQMYQbV9E1odTpO+7bn0Kl0\n0rMLIbCD0fIXDjo1wZpsgu+JwqtvcM0d1dKfIES9k4Qh6l6FvgkAHXBa6cb+Lw6R3bVC30TpENjW\nl0/T+er/aOXnijLmPkkEQjRQkjBE3UvRT3DTAeeVLvxu5Uum0h7yyifVWVspCWntTvg9IXi43m2h\nQIUQtSEJQ9Q9f38yL2fwk3UAyUqn8nInR+xsrOjSwZvwdl7Y28mfnxCNifwfK+pUcYmGA6H9OJxx\nCC3lfRA2Oi1dotsTMbgj9rbyZydEYyT/54raq2oEFHD+qx/Ym2VDnpMb+PpBXh7K/Hw6u+noFnMb\njnf0sHDgQoibIQlD1E4VI6CK/7OYfY6tOe7eWl+Wnw/5+QRFhdH7/tvwdJPdEYVoCiRhiNq5bgRU\nqsKBncpbyNWUJwUHnZo+6hTa/y8bhdud9R2hEMJMJGGI2qkwAuqQlRe/WfuiJRVKSgC4VZNDH/Vl\nHNBASq4FAxVC1DVJGKJ2/P0pSU7he+sgzlq56susrbHTqulXcolbtTnldc25k5kQot7JSm2iVnL7\n38N/bdqWJwvA1x7+T33OOFmArO0kRBMjdxjCZFeuFrD9qhOFnSL0e1nnF9DFTcsdo+7T704nazsJ\n0aRJwhAmuZSWy45f/0eJWgve3ih9fegXGUSnWzzLK0mCEKJJk4QhbuhsUja7/riARqtfV9bO1orB\nd9xCoHcVu94JIZosSRiiRmeSstn1+wW0On2ycHaw4f4+7fBwtbdwZEKI+iYJQxirMIv7rE9bdvlF\noPXSryrbwsWOIX3a4eJY9W54QoimTRKGKFdhFvclhRM7s+zQZp2AEGjRNohhfdvj5GBj4SCFEJYi\nw2pFudJZ3GkKB3bYtDYsHtgi6X+SLIQQcochKkhJIQcbvrJpTYlC/13CWVfCkKzTkiyEEJIwRLli\nvwC+znCgUKH/s7DXabi/5Dwugd4WjkwI0RBIk5QAQKfTsat9L64q7ACw0ukYXHIBD12xzNgWQgCS\nMESpA8fSuGDrDiEh4OTEAO1lAgI9YNIkmZAnhACkSUoAF1Kvsf9Yqv6JtzeRvULpEP6oZYMSQjQ4\ncofRzOUVlvD9/ouG5y19XbgtzN+CEQkhGqp6TxgajYalS5fSq1cvunbtyrRp08jIyKi2/m+//caD\nDz5IREQEd911F2vWrEFXOutY3BydTsf3+y9SWKwG9LO4745uhVKpuME7hRDNUb0njLi4OLZu3cqi\nRYtYv349qampTJ06tcq6Fy5c4IknnqBfv35s376d559/nnfeeYdPP/20nqNumv46nU7SFf0mRwqF\ngrt7tMbRXobPCiGqVq8JQ6VSER8fz4wZM+jZsyehoaEsW7aMxMREEhMTK9X/+eefsbe35+mnn6Zl\ny5YMGjSIvn378vPPP9dn2E3S1WtF/HYkxfA8MthHFhMUQtSoXhPGiRMnyM/PJzo62lAWFBREYGAg\nCQkJlep7eHiQnZ3NV199hVar5dSpUyQkJBAWFlafYTc5Wq2OPQmXDKvPerdwILqTr4WjEkI0dPWa\nMFJT9SNxfH2NL04+Pj6G1yoaOHAgDz74IM8//zxhYWHExsYSFRXFlClT6iXepurouQxSM/MBUCoV\n3BXdCisrGf8ghKhZvQ6rLSwsRKlUYmNj3E5ua2tLcXFxpfrXrl0jOTmZSZMmMXjwYE6dOsW///1v\n3n77baZNm1ZfYTcNpavQ5qWk83uLLtCyNXh7072jL55uDpaOTgjRCNRrwrC3t0er1aJWq7G2Lj+1\nSqXCwaHyRWvJkiVYWVnx/PPPA9CpUyfUajVz585lzJgxuLu711vsjVqFVWh/sW6JKr8QTpzAw15J\nt+BwCwcnhGgs6rUdwt9fP74/PT3dqPzKlSuVmqkA/vrrr0r9FV26dKGkpISUlJRK9UU1SlehTVI4\ncdrKzVDc92KCNEUJIUxWr1eLkJAQnJyc2L9/v6EsKSmJ5ORkoqpYfsLPz4+TJ08alZ0+fRqlUkmr\nVq3MHm+TkZKCFvjZunxCXgdNNoFp5y0WkhCi8am2Serll1+u1YFef/31G9axtbVl5MiRLF68GHd3\ndzw9PZk3bx7R0dFERESgUqnIycnBzc0NW1tbxo4dy+TJk1m5ciWxsbGcOXOGhQsXMnLkSJydZQio\nyfz9OZ5SQKZSv62qjU7LHepUCAqwcGBCiMak2oTxyy+/GD2/cuUKarWagIAAvL29yc7O5tKlS9ja\n2hISEmLyCadPn45arWbmzJmo1Wp69+7NK6+8AsDBgwcZO3Ys8fHx9OjRg759+/L222+zcuVK1qxZ\ng5eXF//3f//H5MmT/+HHbZ5KBg7ij0/K/z0jNek4o5ZVaIUQtVJtwtizZ4/h8fbt21myZAlxcXGE\nh5d3kp45c4YpU6YQExNj+gmtrZk1axazZs2q9FqPHj0qNUHddddd3HXXXSYfX1T2l1trCjrmwKVL\nOOfnEOFnDzGyCq0QonZMGiX15ptvMmPGDKNkAdC+fXumT5/OwoULGTdunFkCFP9A6RBaUlIo8gvg\noN/t4O0N3t5EdWuJTVtPS0cohGiETEoYWVlZuLq6VvmajY0NBQUFdRqUuAkVhtACHEpTUZx5HEJC\naHFLEB3beFgwOCFEY2bSKKmIiAhWrVrFtWvXjMozMzOJi4ujR48eZglO/AOlQ2gBirDisFXp3cSl\nS0SH+slKtEKIf8ykO4wXX3yRMWPGcOeddxIZGYmHhwcZGRkkJibi4uLCypUrzR2nMFWF+SmHrTxR\nKawA8MjPon1QC0tFJYRoAky6wwgJCeGrr77ioYce4tq1axw6dIj8/HzGjx/Ptm3bCAoKMnecwlSl\nkyNVKPnLqryvoru7Tu4uhBA3xeSlQXx9fXnxxRfNGYuoCzExsHYtx6zcKS69u3DTqWh/bx8LByaE\naOxMThharZYdO3bwyy+/kJ6ezpw5czh06BBhYWG0b9/enDGK2oiKQqPVcejLvyCvGJwc6dqrK8oK\nS8oLIcQ/YVLCyM3NZdKkSRw+fJiAgAAuX75Mfn4+27dv57XXXmP9+vV06tTJ3LEKE531v5W8rrYA\nONhZEzJI/m2EEDfPpD6MxYsXc/nyZbZu3crOnTsNe2q/9dZb3HrrrSxfvtysQYra+et0+eKOndt7\nYS0LDAoh6oBJV5LvvvuOGTNmEBISgkJR3nHq7OzMY489xl9//WW2AEXtpGbmk3byAiQmYvXzT4R9\nvlY/N0MIIW6SSU1SRUVFeHhUPeHLzs4OlUpVp0GJf+7o9wlw4gQAt2qycbycXD6RT5YCEULcBJPu\nMMLCwtiwYUOVr+3YsUP6LxqIwmI1pw+dMTwP12SWv/jttxaISAjRlJh0h/HMM88wYcIEhg8fTt++\nfVEoFHzzzTesWrWKH374gbUVlqIQlnPi/FU0+YUA+GoL8dEVlb94+bKFohJCNBUm3WFERUXx4Ycf\nYmtry3vvvYdOp+P999/n8uXLrFq1ittvv93ccYob0Ol0/P2/THByBCBUc9W4QoDsfSGEuDkmz8OI\niopi48aNFBUVkZOTg7OzM05OToB+joZSKSNxLObAAVK+2k12ljOgw7Ygj1utcozryN4XQoibZNJV\nfsCAAZwo7Ui1t7fH19fXkCwOHz7MHXfcYb4IRc3WrYMnn+T4r0ch/QoUFnJrcSY2Ch0olRAUBJNk\n7wshxM2r9g7jq6++Qq1WA5CcnMx3331nSBoV/fbbbzJKylIOHIC4OEoKizjTOgDUasjOpiNp0KED\n1HKbXSGEqEm1CePvv//mww8/BEChUPDOO+9UWU+hUPDoo4+aJzpRs2++gYICzrkGUaLU/1O6F+fi\nm3ICvGTPcyFE3ao2YcyYMYPx48ej0+no168fq1atqjR8VqlU4uzsjIODg9kDFVVISQFHR062aGko\nCs6+iCI/Xzq5hRB1rtqEYWNjg6+vLwC7d+/Gx8eH1NRUWrbUX5yuXr3K//73P7p161Y/kYrK/P0p\naN2OJIWPoahDdhI4OUkntxCizpnU6e3g4MDo0aOZOHGioezIkSOMGjWK8ePHk5uba7YARQ1iYjjj\n2xatuzvY2BBQkImrnRKeflo6uYUQdc6khLFo0SLS09OZN2+eoaxPnz6sX7+epKQkli1bZrYARQ2i\nojhz20Dw8gIvb27tHgwrV8K4cZaOTAjRBJmUMH7++WdeeOEFowl6CoWC7t278+yzz/L999+bLUBR\nvbwCFZcd3CEyEmWf3rR7aarcWQghzMakhFFcXIydnV2Vrzk5OUmTlIWcTSqfnBfo44yjvY0FoxFC\nNHUmJYwuXboQHx9vmJdRRqPRsH79ejp37myW4ETNziaXJ4z2QS0sGIkQojkwaWmQadOmMWbMGO6+\n+2769OmDp6cnV69e5eeffyY9PZ1169aZO05xnYKiElIy8wF98+AtAa4WjkgI0dSZlDAiIiLYtGkT\n7777Lrt37yY7OxtnZ2e6devGihUrCA0NNXec4jr/u3zNsPOhv6eTNEcJIczO5MUHO3XqxIoVK8wZ\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": 38, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.000050 0.000100\n", + "1.005083 0.010098\n", + "1.010185 0.020096\n", + "1.015356 0.030094\n", + "1.020598 0.040092\n", + "1.025914 0.050090\n", + "1.031305 0.060088\n", + "1.036772 0.070086\n", + "1.042317 0.080084\n", + "1.047943 0.090082\n", + "1.053651 0.100080\n", + "1.059444 0.110078\n", + "1.065323 0.120076\n", + "1.071291 0.130074\n", + "1.077350 0.140072\n", + "1.083503 0.150070\n", + "1.089751 0.160068\n", + "1.096099 0.170066\n", + "1.102547 0.180064\n", + "1.109099 0.190062\n", + "1.115758 0.200060\n", + "1.122527 0.210058\n", + "1.129409 0.220056\n", + "1.136407 0.230054\n", + "1.143524 0.240052\n", + "1.150765 0.250050\n", + "1.158132 0.260048\n", + "1.165630 0.270046\n", + "1.173263 0.280044\n", + "1.181034 0.290042\n", + " ... \n", + "1.743384 0.709958\n", + "1.767898 0.719956\n", + "1.793487 0.729954\n", + "1.820238 0.739952\n", + "1.848249 0.749950\n", + "1.877628 0.759948\n", + "1.908499 0.769946\n", + "1.941002 0.779944\n", + "1.975299 0.789942\n", + "2.011573 0.799940\n", + "2.050040 0.809938\n", + "2.090947 0.819936\n", + "2.134590 0.829934\n", + "2.181315 0.839932\n", + "2.231541 0.849930\n", + "2.285771 0.859928\n", + "2.344627 0.869926\n", + "2.408879 0.879924\n", + "2.479505 0.889922\n", + "2.557767 0.899920\n", + "2.645332 0.909918\n", + "2.744467 0.919916\n", + "2.858363 0.929914\n", + "2.991711 0.939912\n", + "3.151808 0.949910\n", + "3.350924 0.959908\n", + "3.612133 0.969906\n", + "3.987365 0.979904\n", + "4.642296 0.989902\n", + "9.211261 0.999900\n", + "Length: 101, dtype: float64" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frac_infected_series" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.158096819542062" + ] + }, + "execution_count": 37, + "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/chap07mine.ipynb b/code/chap07mine.ipynb new file mode 100644 index 00000000..dceb2129 --- /dev/null +++ b/code/chap07mine.ipynb @@ -0,0 +1,1850 @@ +{ + "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": 88, + "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": 89, + "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": 89, + "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": 90, + "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": 90, + "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": 91, + "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": 92, + "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": 92, + "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": 93, + "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": 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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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": 94, + "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": 95, + "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": 96, + "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": 97, + "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": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "72.299625390403094" + ] + }, + "execution_count": 98, + "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": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18.499850754390966" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "milk = make_system(T_init=5, r=0.1, volume=50, t_end=15)\n", + "run_simulation(milk, update)\n", + "final_temp(milk)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nMcaYuPj/jJIluq31Qp4AAAAASUVORK5CYII=\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": 101, + "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": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1.])" + ] + }, + "execution_count": 102, + "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": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 2.])" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fsolve(func, 1.9)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3.])" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fsolve(func, 2.9)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But not always." + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3.])" + ] + }, + "execution_count": 105, + "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": 106, + "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", + " run_simulation(system, update)\n", + " print(\"Allen Downey is God\")\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": 107, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Allen Downey is God\n" + ] + }, + { + "data": { + "text/plain": [ + "2.2996253904030937" + ] + }, + "execution_count": 107, + "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": 108, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n", + "Allen Downey is God\n" + ] + }, + { + "data": { + "text/plain": [ + "0.011543084583978345" + ] + }, + "execution_count": 108, + "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": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 109, + "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": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20.0" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r_milk = 0.13296078935466457\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": 78, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "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 70 C\n", + " \"\"\"\n", + " system = make_system(r=r, T_init=5, t_end=15)\n", + " run_simulation(system, update)\n", + " return final_temp(system) - 20" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.13296078935466457" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solution = fsolve(error_func2, r_milk, xtol=1e-8)\n", + "r_milk = solution[0]\n", + "r_milk" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "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": 110, + "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": 111, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 111, + "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": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "21.764705882352942" + ] + }, + "execution_count": 112, + "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": 113, + "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": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "63.109243697478988" + ] + }, + "execution_count": 114, + "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": 115, + "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": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "61.428571428571438" + ] + }, + "execution_count": 116, + "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": 117, + "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": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "61.428571428571438" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "62.90280912845234" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run_and_mix(15)" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "63.109243697478988" + ] + }, + "execution_count": 120, + "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": 121, + "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": 122, + "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": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def run_and_mix2(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", + " \n", + " mixture = mix(coffee, milk)\n", + " mixture.t_end = t_total - t_add\n", + " run_simulation(mixture, update)\n", + "\n", + " return final_temp(mixture)\n", + "\n", + "sweep2 = SweepSeries()\n", + "for t_add in linrange(0, 30, 2):\n", + " temp = run_and_mix2(t_add)\n", + " sweep[t_add] = temp\n", + " \n", + "plot(sweep, color='purple')\n", + "decorate(xlabel='Time added (min)',\n", + " ylabel='Final temperature (C)',\n", + " legend=False)" + ] + }, + { + "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": 125, + "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": 126, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "r_coffee2 = 0.011610223142273859" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 127, + "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": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70.0" + ] + }, + "execution_count": 128, + "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": 129, + "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": 129, + "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/chap08mine.ipynb b/code/chap08mine.ipynb new file mode 100644 index 00000000..818b04d2 --- /dev/null +++ b/code/chap08mine.ipynb @@ -0,0 +1,2739 @@ +{ + "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": 2, + "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": 2, + "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": 3, + "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": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\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": 5, + "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\n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\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": 6, + "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": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "I = interpolate(data.insulin, kind='quadratic')" + ] + }, + { + "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": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(62.804114412529)" + ] + }, + "execution_count": 11, + "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": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\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": "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": 13, + "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": 14, + "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": 15, + "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": 16, + "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": 17, + "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": 18, + "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": 18, + "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": 19, + "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": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 162 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": 21, + "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.006476
22177.5317190.006591
24170.0595020.006708
26163.0945480.006798
28156.6115640.006850
30150.5891370.006900
32144.9955440.006980
34139.7915890.007081
36134.9443430.007177
38130.4306140.007244
40126.2349760.007263
42122.3472580.007234
44118.7562270.007165
46115.4490930.007060
48112.4119820.006925
50109.6303370.006765
52107.0891160.006590
54104.7724210.006406
56102.6637290.006223
58100.7461710.006048
.........
12486.3377930.001159
12686.4773930.001028
12886.6309240.000900
13086.7970840.000778
13286.9742890.000662
13487.1607050.000555
13687.3542700.000458
13887.5529650.000370
14087.7550620.000289
14287.9590980.000214
14488.1638510.000146
14688.3683220.000082
14888.5717150.000023
15088.773420-0.000034
15288.972994-0.000087
15489.170153-0.000139
15689.364751-0.000189
15889.556731-0.000239
16089.746071-0.000287
16289.932781-0.000334
16490.116905-0.000381
16690.298509-0.000427
16890.477688-0.000473
17090.654557-0.000518
17290.829251-0.000564
17491.001926-0.000610
17691.172750-0.000655
17891.341908-0.000702
18091.509597-0.000749
18291.676027-0.000796
\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.006476\n", + "22 177.531719 0.006591\n", + "24 170.059502 0.006708\n", + "26 163.094548 0.006798\n", + "28 156.611564 0.006850\n", + "30 150.589137 0.006900\n", + "32 144.995544 0.006980\n", + "34 139.791589 0.007081\n", + "36 134.944343 0.007177\n", + "38 130.430614 0.007244\n", + "40 126.234976 0.007263\n", + "42 122.347258 0.007234\n", + "44 118.756227 0.007165\n", + "46 115.449093 0.007060\n", + "48 112.411982 0.006925\n", + "50 109.630337 0.006765\n", + "52 107.089116 0.006590\n", + "54 104.772421 0.006406\n", + "56 102.663729 0.006223\n", + "58 100.746171 0.006048\n", + ".. ... ...\n", + "124 86.337793 0.001159\n", + "126 86.477393 0.001028\n", + "128 86.630924 0.000900\n", + "130 86.797084 0.000778\n", + "132 86.974289 0.000662\n", + "134 87.160705 0.000555\n", + "136 87.354270 0.000458\n", + "138 87.552965 0.000370\n", + "140 87.755062 0.000289\n", + "142 87.959098 0.000214\n", + "144 88.163851 0.000146\n", + "146 88.368322 0.000082\n", + "148 88.571715 0.000023\n", + "150 88.773420 -0.000034\n", + "152 88.972994 -0.000087\n", + "154 89.170153 -0.000139\n", + "156 89.364751 -0.000189\n", + "158 89.556731 -0.000239\n", + "160 89.746071 -0.000287\n", + "162 89.932781 -0.000334\n", + "164 90.116905 -0.000381\n", + "166 90.298509 -0.000427\n", + "168 90.477688 -0.000473\n", + "170 90.654557 -0.000518\n", + "172 90.829251 -0.000564\n", + "174 91.001926 -0.000610\n", + "176 91.172750 -0.000655\n", + "178 91.341908 -0.000702\n", + "180 91.509597 -0.000749\n", + "182 91.676027 -0.000796\n", + "\n", + "[92 rows x 2 columns]" + ] + }, + "execution_count": 21, + "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": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap08-fig03.pdf\n" + ] + }, + { + "data": { + "image/png": "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\npvQ+3TDRBg1UslKvntrWPdetqyagsreXJg9hHrRadXPU3XDLe76X1yXLyjquorLCwuozhDo1tXia\n+6tXVeLwIDXjZpUwrFu3rlRZr1696NWrV7nvcXJy4qOPPqq0GHST+dzpjjmlhKjQ/f4sOTqqKag9\nPYvLtFo1mVRSkhramZysfjmkpanRGXf7haXVFicUd2NhoRIHR0f17OCgmkx0DwcHlVTY2xe/rlVL\nai8eNUVFhjfbsm7W5ZWX9Z57+aw7ywoLTf2vUD0lJBS/btiwuKnyfmvGzSphqA4CAgz7MOj07Vv1\nsQjzVhk/S7pagrp14c5uOYWFqoNlWpp6Tk8vfr56VSUa96Ko6N4SizvZ2qrEoVYt1c9C97C1LX62\nsTF8trZWDxub4tdWVqUflpbFj5pa+6HVqmuoey4qKn7Wvb6XR8lq6TufS76+sxq8vL+ky3vWak39\nL2Z8qanq5ntnJ+XyaDRl//yW/DnW/YzrXltaqu2Sryt6f1nH6f5/WFvDjBnq+lhYGK55c78145Iw\n3KeKJvMR4l4Z+2fp8OHSo3kGDSreX1CgkoCrV+HaNfX6xg3Dx82bd2/yuJvcXPW430TjfllYqF+M\nJZ91D42m9HPJB5R+fS90N0et1vA1FNfq6Pbd+SgqKv2se5QsfxRuwMagu2HemXDqXldUVt4xZ87A\n9u1qnpSSP1MDBoCvb9nv1R1nai1aVE7NuCQMD+BeJvMR4l4Y62fpXkbzWFkVj9i4m/x8lThkZKhH\nZqYa1aF7ZGaqv7hKPufmPtwN737+ktPdbB8V9/tXblXR/TWtu1GXvGHrnhMT1VDhW7dUvxkfH9XE\nprvB6mqWyrqZl3y+MxmwsSn+q9pYN+hvvy37/0psLDz/vHG+s7JUVs24JAxC1ECVOZrH2rq4E+a9\n0mpVzUROjppTIjtbvc7NLX7WPfLy1CM3VyUncXHw++/ql7+DQ/HEVo6O6saoa6t+mE5l1fWme6c7\na09SU1WHNY1GNeEUFakRNI0bq8m9SjbV6B4lq6d1r8uqvr6zGrys5qC73cQr6rOiS2Ld3IrLLl82\nn3lszLnDe2XVZkrCIEQNZOpfbhpNcf8F3XDRexUaquamuJO7O8yebVhWsn2/ZBu/ru2/rGr+2FhY\nv96wz4dWq6qWy/pe3fncrfzOZg7dzbO8ppDymkt0z+X9pRwaWvYcHW5u8M47ZcdYXZj7kHRz7/Be\nGbWZkjAIUQOZ8y+3+0l2dNXg9+PgQVVzcSdzqFo2dSL4MMw5dpAO7yAJgxA1UlX8cjPWFOnGTnbM\n+cZlzomgOccO0uEdJGEQokYy9i83Y06Rbuxkx5xvXOb8V645x67zqHd4l4RBiBrKmL/cjNkebexk\nx5xvXOb8V645xy4USRiEEPfN2NX6xkx2zP3GZc5/5Zpz7EISBiHEAzDnan2QG5cQD0JmexdC3LeA\ngLLLzaFaXwjxYKSGoRyFt1cxSU5ONnEkQlQ/Li4wcCDs2wcpKWrioJ49VfmlS6aOTgjxIHT3u8Jy\nVvGShKEcaWlpAAQFBZk4EiHMw7Ztpo5ACFEZ0tLSaN68ealyjVYrS5yUJScnh+PHj+Pk5ISlpaWp\nwxFCCCGMqrCwkLS0NNq2bYudnV2p/ZIwCCGEEKJC0ulRCCGEEBWShEEIIYQQFZKEQQghhBAVkoRB\nCCGEEBWShEEIIYQQFZKE4QEUFhbywQcf4O/vj4+PDxMnTiQ9Pd3UYT209PR0pk+fjr+/P76+vvzt\nb3/jzJkz+v2DBw/G09PT4PHuu++aMOKHEx8fX+p8PD09iYmJAeDAgQMMHDiQ9u3bM2DAAPbt22fi\niB9MdHR0mefp6enJa6+9BtSMaztnzpxSMVd0Da9cucKkSZPw9fWlW7duhIWFUVBQUJVhP5CyzjUq\nKoq+ffvi7e1Nv3792LRpk8H+9evXl7rGf/3rX6sy7AdS1rlW9PNaU67r008/Xe7/3cTbC7dU6XXV\nivsWHh6u7d69u/bAgQPa48ePawMDA7VDhw41dVgPpbCwUPvKK69ohwwZoj169Kg2Li5OO3HiRG23\nbt20V69e1RYVFWk7dOig3b59uzY1NVX/yMjIMHXoD2znzp3aLl26GJxPamqqNi8vTxsXF6dt27at\n9uOPP9bGx8drw8PDtW3atNGeOXPG1GHft9zc3FLnuHXrVq2Xl5d2//79Zn9ti4qKtMuWLdO2bt1a\n+8477+jL7+UaDhs2TDt8+HDtqVOntD/88IO2a9eu2qVLl5riNO5Jeee6fv16rbe3t3bbtm3aCxcu\naL/66ittmzZttFu3btUfM2fOHO0//vEPg2uclpZmitO4J+Wd6738vNaU63rlyhWDc7xw4YK2Z8+e\n2rffflt/TFVeV0kY7lNubq7Wx8dHu3nzZn1ZQkKCtnXr1tpDhw6ZMLKHc+LECW3r1q218fHx+rLc\n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\nQohG/wfP7Re1/eaz6QAAAABJRU5ErkJggg==\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": 24, + "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": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-5.9399999999999995, 0.0)" + ] + }, + "execution_count": 25, + "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": 26, + "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": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%psource run_odeint" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 86.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": 29, + "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.503218-0.000072
4267.4070440.001329
6255.9625660.003315
8244.5524870.004232
10233.5701250.004808
12223.0754690.005331
14213.0942040.005750
16203.6512010.006054
19190.5408140.006312
22178.6714830.006494
27161.3891800.006705
32146.8790180.006894
42124.4404730.007088
52109.2309320.006417
6299.4055100.005610
7293.1789060.004775
8289.5013280.003855
9287.5623950.002954
10286.7862890.002279
12286.8323210.001258
14288.3394440.000219
16290.119786-0.000323
18291.759885-0.000789
\n", + "
" + ], + "text/plain": [ + " G X\n", + "time \n", + "0 290.000000 0.000000\n", + "2 278.503218 -0.000072\n", + "4 267.407044 0.001329\n", + "6 255.962566 0.003315\n", + "8 244.552487 0.004232\n", + "10 233.570125 0.004808\n", + "12 223.075469 0.005331\n", + "14 213.094204 0.005750\n", + "16 203.651201 0.006054\n", + "19 190.540814 0.006312\n", + "22 178.671483 0.006494\n", + "27 161.389180 0.006705\n", + "32 146.879018 0.006894\n", + "42 124.440473 0.007088\n", + "52 109.230932 0.006417\n", + "62 99.405510 0.005610\n", + "72 93.178906 0.004775\n", + "82 89.501328 0.003855\n", + "92 87.562395 0.002954\n", + "102 86.786289 0.002279\n", + "122 86.832321 0.001258\n", + "142 88.339444 0.000219\n", + "162 90.119786 -0.000323\n", + "182 91.759885 -0.000789" + ] + }, + "execution_count": 29, + "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": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nli0jKSmJyspK2dZfw6xZs5g1a1a383raphaLhfDw8C7zASoqKhg/fvwAVOxdvmr7lpSUEBwczCOP\nPMK+ffsIDQ3lzjvv5L777kOr1cr2bec1e/pNTU1otVr0etcrNxsMBlpaWtxUlfdqbm6mrKyMhoYG\nli9fzvr16wkPDyczM5MTJ07Q3NyMwWBweY1s677paZs2NTXh7+/vMl+v16PRaGS7X4XS0lKsVisZ\nGRm89tprzJ07l7Vr15KTkwPI9r3Ma/b0jUYjDoeD1tZWdLqOsm02GwEBAW6szDsZjUby8/MxGAzO\nIFq1ahVHjhzhj3/8I/7+/tjtdpfXyLbum562qdFoxGazucy32+0oikJgYOA1q9NbPffcc1itVkJC\nQgCIj4+nvr6eDRs2sGjRItm+7bxmT99sNgMdo29eVlVV1eUns7g6QUFBLnueWq2W0aNHU1FRgdls\npqqqymV52dZ909M2jYyM7PbfN3Rt1hRd6XQ6Z+BfFh8fT2NjI/X19bJ923lN6CckJGAymdi3b59z\n2tmzZzl37hxpcumhXisqKmLChAkUFRU5p7W1tXHs2DFuuOEGJk6cSH5+vstr8vLySE1NvdalDho9\nbdOJEydSVlZGRadrOubl5WEymUhISLimtXqjOXPm8Mwzz7hMO3z4MOHh4YSEhMj2bec1oW8wGJg7\ndy7PP/88H330EUeOHGHZsmWkp6eTnJzs7vK8TkJCAtHR0Tz11FMcPHiQkpISVqxYwYULF7j33nvJ\nzMykoKCAtWvXcuLECV5++WUOHjzIfffd5+7SvVZP2zQlJYXk5GSWLl3KkSNHyM3NJTs7m6ysrC7H\nAkRXt956K1u3buXtt9/mzJkzbNu2jY0bN7J48WJAtq+Tu/uM9obdblf+93//V0lPT1cmTJigLFmy\nRKmtrXV3WV6rsrJSWbZsmTJp0iRl/PjxSlZWlvL5558753/44YfK7bffriQmJir/+q//qnzyySdu\nrNb7ZGZmuvQjV5Set2lVVZXy0EMPKePHj1e++c1vKi+88ILS1tZ2Lcv2GlduX4fDofz2t79Vbrvt\nNiUxMVG57bbblDfffNPlNbJ9FUXG0xdCCB/iNc07Qggh+k5CXwghfIiEvhBC+BAJfSGE8CES+kII\n4UMk9IUQwodI6AshhA+R0BdCCB8ioS+EED7k/wP34c4MWocX7gAAAABJRU5ErkJggg==\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": 31, + "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.137599-100.000000
4-0.169870-77.434912
60.130056-19.505817
80.211674-4.504691
100.143431-2.674804
120.056565-1.472096
14-0.051320-0.482966
16-0.1782430.648509
22-0.6379111.495184
32-1.2823301.246544
42-1.6821022.058923
52-1.9608152.688650
62-2.0005882.243049
72-1.8694492.598662
82-1.6657042.426032
92-1.4257252.657893
102-1.1595411.045824
122-0.7130992.627445
142-0.430551-1.933461
162-0.2075063.583507
182-0.0913890.890475
\n", + "
" + ], + "text/plain": [ + " G X\n", + "2 -0.137599 -100.000000\n", + "4 -0.169870 -77.434912\n", + "6 0.130056 -19.505817\n", + "8 0.211674 -4.504691\n", + "10 0.143431 -2.674804\n", + "12 0.056565 -1.472096\n", + "14 -0.051320 -0.482966\n", + "16 -0.178243 0.648509\n", + "22 -0.637911 1.495184\n", + "32 -1.282330 1.246544\n", + "42 -1.682102 2.058923\n", + "52 -1.960815 2.688650\n", + "62 -2.000588 2.243049\n", + "72 -1.869449 2.598662\n", + "82 -1.665704 2.426032\n", + "92 -1.425725 2.657893\n", + "102 -1.159541 1.045824\n", + "122 -0.713099 2.627445\n", + "142 -0.430551 -1.933461\n", + "162 -0.207506 3.583507\n", + "182 -0.091389 0.890475" + ] + }, + "execution_count": 31, + "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": "markdown", + "metadata": {}, + "source": [ + "With smaller values of dt these error values will decrease because it will get closer and closer to an instantaneous rate of change." + ] + }, + { + "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": 54, + "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": 55, + "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": 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": [ + "`make_system` takes the parameters and `DataFrame` and returns a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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": 58, + "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": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(290, 0.03, 0.02, 1e-05)" + ] + }, + "execution_count": 59, + "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": 60, + "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": 60, + "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": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%psource fit_leastsq" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we call it." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "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": 63, + "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": 64, + "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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\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": "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": [ + "When I changed G0 from 290 to 350, it significantly shifted the curve up." + ] + }, + { + "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": 65, + "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": 66, + "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.026799
S_I0.000881
\n", + "
" + ], + "text/plain": [ + "S_G 0.026799\n", + "S_I 0.000881\n", + "dtype: float64" + ] + }, + "execution_count": 66, + "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": 73, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "I0 = 360\n", + "k = 0.25\n", + "gamma = 0.004\n", + "G_T = 80" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(I0, k, gamma, G_T, data):\n", + "\n", + " init = State(I=I0)\n", + " system = System(init=init, \n", + " k=k, gamma=gamma, G_T=G_T,\n", + " G=interpolate(data.glucose),\n", + " ts=data.index)\n", + " return system" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = make_system(I0, k, gamma, G_T, data)" + ] + }, + { + "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": 77, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \n", + " I = state\n", + " unpack(system)\n", + " \n", + " dIdt = -1 * k * I + gamma*(G(t) - G_T) * t\n", + " \n", + " return dIdt" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "I -90.0\n", + "dtype: float64" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.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": 79, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n9sZsNrNo0SK+/vprMjIyaN26NRMnTrR9oB0zZgwtWrTg9ddft12/vGOVee3yHD9+nPnz53Po0CHC\nwsJ4+OGH7cozMzOJjY1lz549ZGRk4O/vz/Dhw/nb3/5GXFwcM2bMsMXx5ptv8sADD/DFF1+wdu1a\nzp07h1arpXv37vy///f/aNmypatuuY1DTWFGo9Ghr4CAAKKjo6sU0NSpU1m/fj09evRg/PjxpKSk\nUFBQUGaHNL1eT2FhIQD5+fl224iCdT8GlUplO8dZMkFSiKr75pvyj+/YcXPjAPjqq68wm838+9//\n5p133mHnzp22D6+ff/453333HcuWLWPHjh3cc889TJ8+nQsXLlT7a1/r6tWrjBs3jqZNm7Jx40Ze\neOEF3n//fbtzZs6cyR9//MGKFSvYsWMHEyZM4JNPPmHnzp10796dOXPmANYmuaFDh7Jjxw7efPNN\nJk6cyI4dO/jggw+4ePEisbGxLvn9ruVQjeVmTnQsnt2/ZMkSBg4cyObNm3Fzcyuzf7PBYLAtK1Pe\nftRGoxFFUfD09KxUHDJBUoiqS0oq/7gLGjec1qhRI2bNmoVGo6F169bceuutHDx4ELDuAOnh4UGz\nZs0ICAhg4sSJREZG0qhRo2p/7Wtt27YNo9HI66+/jpeXF+3atSMlJYV58+bZzunXrx+9evWiffv2\nAIwaNYqVK1dy4sQJ7rzzTltNqLhJrnHjxrzxxhu2lVCaNWvGsGHD+Oqrr1zy+12rVvSxpKens2/f\nPoYNG2Y75uHhQVhYGCkpKYSEhJCammr3nNTUVFvzWHBwcJnhx8XnX9uE5ihZK0yIqgsJsTZ/XSs0\n9ObH0qJFCzSakonPPj4+tikNTzzxBN999x39+/enc+fO9OvXj+HDh7tspfYbvfa1Tp06RevWrW07\nS4J118rSHn/8cX744QfWr1/P2bNnOXHiBMnJyVgs5b9XxcTEcPLkSZYvX86ff/7JmTNnOHnyZKXf\nHyvidGIxGAx8/vnnHDhwgOzs7DLlKpWKjz/+2KlrXrp0iWnTptGiRQu6dOkCQHZ2NmfOnOH+++/H\nZDIRFxdn95x9+/bZmt2ioqJYtGgRSUlJhISE2Mq9vLyIiIhw9lcErh0VJolFiMoYMsS+j6VYTQyY\nurY5HUo6udu0acP333/PL7/8ws8//8y2bdv44IMPWLlyJX369Cn3es7Mk7vRa19LpVKVKdPpdLbH\n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\ndC1V0fNs56uKzolW0auThj279FxO1xDWXMW996q5tXeTm748UG1rKalqPPUmsSQnJwMQFBRkdzww\nMNBWJkRVqFQqGvm40cjHjS5tm9rWNktMtdZoki7n2i2pYbEo5BVU3KxyPS3b5Tu85fS11GoVOq0a\nnUaNVqtGp1WjVavRaNSo1dYdSDVq65uvuui7Rq1GrSl6Uy76rtUUl6tLjpfzvNI/233XFJUVvbmX\nr5zOhZukY2t4aESNvbyd2tZSUpV46k1iyc/PR61Wo9PZt5nq9XoKC2+8Z7sQlaG2658Jwmgycykt\nlwup1mYza83FXvFuoLatpYveeDUa68/Fx+1/LkoMRd912qJkoSn1uHQS0ahlCRtRo+pNYnF3d8di\nsWAymdBqS34tg8GAh4dHDUYmGgqdVmNd1j/EF7BOxLRYlJLtpYuaaYSo7+rNx5qQkBAA0tLS7I6n\npqaWaR4T4mZw12vxdNfhrtei1aglqYgGo97UWCIiIvDy8uK3335j5MiRACQmJnLx4kV6Xqeh0Gy2\ndrxKH4wQQjiu+D2z+D30WvUmsej1ep544gneeust/P39adKkCa+++ioxMTF069at3OcU125GjRp1\nM0MVQoh6IS0tjZYtW5Y5rlIqWtC/DjGZTCxatIjNmzdjMplsM+8bN25c7vkFBQUcPnyYgIAANBrZ\n5lYIIRxhNptJS0ujc+fOuLu7lymvV4lFCCFEzas3nfdCCCFqB0ksQgghXEoSixBCCJeSxCKEEMKl\nJLEIIYRwKUks1zCbzbz99tv07duX7t278/zzz5Oenl7TYdVZp0+fJjw8vMxXfHw8AHv37mXkyJFE\nRkYyfPhwdu3aVcMR1y1z5szhlVdesTtW0T29fPkyU6dOJTo6mj59+rBw4UJMJvvtmoVVeff3oYce\nKvP3XPocub+AIuwsWbJEue2225S9e/cqhw8fVh5++GHlscceq+mw6qxt27YpvXr1UlJTU+2+DAaD\ncurUKaVz587KP//5T+X06dPKkiVLlE6dOiknT56s6bBrPYvForzzzjtKhw4dlH/84x+2447c08cf\nf1x54oknlGPHjik//fST0rt3b2Xx4sU18WvUWte7vxaLRenatavy1Vdf2f09Z2dn286R+6soklhK\nKSwsVLp3765s3LjRduzChQtKhw4dlISEhBqMrO5asmSJMmrUqHLLZs+erYwePdru2OjRo5VZs2bd\njNDqrPPnzyujR49WevXqpQwcONDuja+ie7p//36lQ4cOyvnz523lmzZtUrp3764UFhbenF+glrvR\n/T137lyZ+1ea3F8raQorpaLNwoTzTp06RZs2bcoti4+Pt7vXAL169ZJ7XYH9+/cTEhLC1q1bad68\nuV1ZRfc0Pj6eZs2aERYWZiuPiYkhNzeXY8eOVX/wdcCN7u/Jkydxd3enWbNm5T5X7q9VvVkrzBVk\nszDXO3XqFIWFhTzyyCNcvHiR9u3bM23aNCIjI0lOTpZ7XQkjR460LbR6rYruaUpKCoGBgWXKAZKS\nkujatWs1RFy33Oj+njp1Ch8fH1566SV+++03/P39eeCBBxg7dixqtVrubxGpsZQim4W5VkFBARcu\nXCAnJ4cZM2awYsUKAgMDGT16NH/88QcFBQXo9Xq758i9rpqK7ml+fj5ubm525TqdDpVKJffdAadP\nnyYvL4++ffvy8ccf88QTT7B06VKWL18OyP0tJjWWUmSzMNdyd3cnLi4OvV5ve7NbsGABR44c4fPP\nP8fNzQ2j0X7rXrnXVVPRPXV3d8dgMNiVG41GFEXB09PzpsVZV8XGxpKXl4evr3Uzt/DwcLKzs3n/\n/feZMmWK3N8iUmMpRTYLcz1vb2+7T9BqtZp27dqRlJRESEgIqampdufLva6aiu5pcHBwuX/fULYJ\nWJSl1WptSaVYeHg4ubm5ZGdny/0tIomllNKbhRWraLMwcX2HDx+mR48eHD582HbMbDZz/Phx2rdv\nT1RUFHFxcXbP2bdvH9HR0Tc71HqjonsaFRXFhQsXSEpKsiv38vIiIiLipsZaFz3yyCPMnz/f7tih\nQ4cIDAzE19dX7m8RSSyllN4sbPfu3Rw5coRp06bdcLMwcX0RERE0a9aMOXPm8Pvvv3Pq1Clefvll\nMjIyePLJJxk9ejTx8fEsXbqUP/74g3fffZfff/+dsWPH1nTodVZF97R79+5069aNF198kSNHjrBr\n1y4WLlzI+PHjy/TNiLIGDx7MunXr2LJlC+fPn2f9+vWsXLmS559/HpD7a1PT451rG6PRqLz55ptK\nTEyM0qNHD2Xq1KnK5cuXazqsOis5OVmZNm2a0rt3b6Vr167K+PHjlRMnTtjKf/zxR2Xo0KFK586d\nlREjRig///xzDUZb94wePdpunoWiVHxPU1NTlYkTJypdu3ZVbr31VuXtt99WzGbzzQy7zrj2/los\nFuVf//qXctdddymdO3dW7rrrLuXf//633XPk/iqKbPQlhBDCpaQpTAghhEtJYhFCCOFSkliEEEK4\nlNMYw4YAAAU2SURBVCQWIYQQLiWJRQghhEtJYhFCCOFSklhEg/b3v/+93B0uS3+NGTMGgDFjxjBu\n3LgajTczM5M77riDc+fOVfoaiYmJhIeH8+WXXzr8nKtXr3LHHXdw4cKFSr+uaDhkHoto0M6fP8+V\nK1dsP7/66qtoNBpmzZplO+bt7U27du04ffo0KpWKtm3b1kSoAEyfPp2goCBmzJhR6WsYDAaOHj1K\nixYtaNy4scPPW7NmDd9++y2rVq1CpVJV+vVF/SeJRYhSxowZg0aj4dNPP63pUMr43//+xxNPPMHu\n3budSgiuYjAYGDBgAK+++ip33XXXTX99UXdIU5gQDrq2KSw8PJx169bx0ksv0b17d3r37s3y5cvJ\nycnh5ZdfJioqittuu42FCxdS+vNbRkYGs2bNok+fPkRGRvL444+TkJBQ4euvXLmSW2+91S6p3HHH\nHfzzn//ktddeIyYmhqioKObNm0d+fj6xsbH06tWLXr168corr9j2A7m2KWzTpk106dKF/fv38/DD\nD9OlSxduv/12/vWvf9m9vl6v56677uKDDz6oym0UDYAkFiGqIDY2Fn9/f/75z39y++23s2zZMh56\n6CE8PDxYvnw5gwcPZuXKlfz3v/8FoLCwkHHjxvHTTz8xbdo0li5dip+fH+PGjeN///vfdV8nNzeX\nnTt3lltTWLlyJZmZmbz77rs89thjrF27lvvvv5+kpCTefvttxowZw4YNG1i7du11r28ymZg2bRrD\nhw/no48+okePHsTGxvLLL7/YnXfPPfdw+PBhzp49W7kbJhoE2ehLiCro1KkTr7zyCmBdzXnTpk00\nadKEOXPmANC7d2+2bt3KwYMHufvuu/nyyy85ceIE69evp0uXLgD079+fhx56iCVLlvDJJ5+U+zrx\n8fEYjUYiIyPLlPn7+7Nw4ULUajW9evVi3bp1GI1GFi1ahFarpW/fvnz77bccPHjwur+HxWJhypQp\nPPjggwD06NGD7777jh9//JE+ffrYzuvcuTNgXQq+VatWzt8w0SBIjUWIKij9Ru/v749Go7E7plKp\n8PPzIysrC4BffvmFoKAgOnbsiMlkwmQyYbFYuP3224mLiyuz+2CxxMREAJo3b16mrEuXLqjV1v/K\narUaf39/OnXqZLcLaqNGjWwxXE+PHj1sj/V6PY0bNyY/P9/uHB8fH3x9fbl48eINryUaNqmxCFEF\nXl5eZY7daAvazMxMkpOT6dSpU7nlGRkZ5e40mJ2dDVDuts3OxnA9115brVZjsVjKPa84HiHKI4lF\niJvIx8eHtm3bEhsbW265v7//DY9nZ2eX2Rr3ZsvKyrpunEKANIUJcVP17NmTS5cuERgYSJcuXWxf\nP/zwA6tXr0an05X7vNDQUACSk5NvZrhlXL16lfz8fEJCQmo0DlG7SWIR4iZ64IEHCAoKYvz48Xz5\n5Zf8+uuvLFiwgBUrVhAWFnbdiYfR0dG4u7s7NCy5Ou3fvx+Avn371mgconaTxCLETeTl5cXatWvp\n2rUrCxYs4Nlnn2XPnj3Mnj2bKVOmXPd5Hh4e9O/fn927d9/EaMvavXs3kZGRUmMRNyQz74WoI/73\nv//x+OOPs3PnznI7+Ktbfn4+/fr1Y8GCBdx55503/fVF3SE1FiHqiMjISAYNGlRmRvzNsm7dOtq1\na8egQYNq5PVF3SE1FiHqkCtXrvDAAw/w2Wef0bJly5v2upmZmdx33303/XVF3SSJRQghhEtJU5gQ\nQgiXksQihBDCpSSxCCGEcClJLEIIIVxKEosQQgiX+v8Pjp7g28clHgAAAABJRU5ErkJggg==\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 ($\\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": 84, + "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": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(360, 0.25, 0.004, 80)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params = I0, k, gamma, G_T\n", + "params" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(360, 0.25, 0.004, 80)\n" + ] + }, + { + "data": { + "text/plain": [ + "time\n", + "8 10.636133\n", + "10 -3.234670\n", + "12 -7.946879\n", + "14 -8.010268\n", + "16 -3.593411\n", + "19 1.811071\n", + "22 2.581632\n", + "27 7.014287\n", + "32 3.758216\n", + "42 8.932902\n", + "52 9.554216\n", + "62 0.767804\n", + "72 -3.217947\n", + "82 -10.382598\n", + "92 -7.401702\n", + "102 -9.056569\n", + "122 -3.584244\n", + "142 -3.586427\n", + "162 3.170251\n", + "182 18.702699\n", + "dtype: float64" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "error_func(params, data)" + ] + }, + { + "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": 90, + "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.41214716e+02 2.48476650e-01 4.01573092e-03 8.05611945e+01]\n", + "[ 3.41214721e+02 2.48476650e-01 4.01573092e-03 8.05611945e+01]\n", + "[ 3.41214716e+02 2.48476654e-01 4.01573092e-03 8.05611945e+01]\n", + "[ 3.41214716e+02 2.48476650e-01 4.01573098e-03 8.05611945e+01]\n", + "[ 3.41214716e+02 2.48476650e-01 4.01573092e-03 8.05611957e+01]\n", + "[ 3.45910051e+02 2.47820998e-01 3.91185402e-03 8.05803504e+01]\n", + "[ 3.45910056e+02 2.47820998e-01 3.91185402e-03 8.05803504e+01]\n", + "[ 3.45910051e+02 2.47821001e-01 3.91185402e-03 8.05803504e+01]\n", + "[ 3.45910051e+02 2.47820998e-01 3.91185408e-03 8.05803504e+01]\n", + "[ 3.45910051e+02 2.47820998e-01 3.91185402e-03 8.05803516e+01]\n", + "[ 3.45007554e+02 2.48467106e-01 3.84686996e-03 8.04490675e+01]\n", + "[ 3.45007559e+02 2.48467106e-01 3.84686996e-03 8.04490675e+01]\n", + "[ 3.45007554e+02 2.48467109e-01 3.84686996e-03 8.04490675e+01]\n", + "[ 3.45007554e+02 2.48467106e-01 3.84687002e-03 8.04490675e+01]\n", + "[ 3.45007554e+02 2.48467106e-01 3.84686996e-03 8.04490687e+01]\n", + "[ 3.45051065e+02 2.48855798e-01 3.83011719e-03 8.03295605e+01]\n", + "[ 3.45051070e+02 2.48855798e-01 3.83011719e-03 8.03295605e+01]\n", + "[ 3.45051065e+02 2.48855802e-01 3.83011719e-03 8.03295605e+01]\n", + "[ 3.45051065e+02 2.48855798e-01 3.83011724e-03 8.03295605e+01]\n", + "[ 3.45051065e+02 2.48855798e-01 3.83011719e-03 8.03295617e+01]\n", + "[ 3.44987120e+02 2.49050258e-01 3.91079996e-03 8.04365681e+01]\n", + "[ 3.45068248e+02 2.49199738e-01 3.85963688e-03 8.03598764e+01]\n", + "[ 3.45059632e+02 2.49011266e-01 3.84132605e-03 8.03405939e+01]\n", + "[ 3.45054960e+02 2.48925498e-01 3.83491541e-03 8.03342302e+01]\n", + "[ 3.45052537e+02 2.48882019e-01 3.83188685e-03 8.03312744e+01]\n", + "[ 3.45051666e+02 2.48866487e-01 3.83083385e-03 8.03302535e+01]\n", + "[ 3.45051308e+02 2.48860112e-01 3.83040566e-03 8.03298393e+01]\n", + "[ 3.45051163e+02 2.48857532e-01 3.83023303e-03 8.03296724e+01]\n", + "[ 3.45051104e+02 2.48856494e-01 3.83016363e-03 8.03296054e+01]\n", + "[ 3.45051081e+02 2.48856077e-01 3.83013582e-03 8.03295785e+01]\n", + "[ 3.45051071e+02 2.48855910e-01 3.83012466e-03 8.03295677e+01]\n", + "[ 3.45051068e+02 2.48855843e-01 3.83012019e-03 8.03295634e+01]\n", + "[ 3.45051066e+02 2.48855816e-01 3.83011840e-03 8.03295617e+01]\n", + "[ 3.45051066e+02 2.48855806e-01 3.83011768e-03 8.03295610e+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": 91, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "system = make_system(*best_params, data)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nzJmDTqejZ8+ebNmyhX379l3357BarUyYMIE//elPAHTp0oXvvvuOH374gR49etjPa9++PWBbCr5p\n06bO3zBxS5AaixBVUPJB7+/vj1ardTimKAp+fn7k5OQA8PPPPxMaGkrbtm0xm82YzWasVit33XUX\nCQkJpXYfLJaSkgJAo0aNSpV16NABjcb2X1mj0eDv70+7du0cdkFt0KCBPYbr6dKli/1rg8FAQEAA\nBQUFDuf4+Pjg6+vL2bNnb3gtcWuTGosQVeDl5VXq2I22oM3OziYtLY127dqVWZ6VlVXmToO5ubkA\nZW7b7GwM13PttTUaDVartczziuMRoiySWIS4iXx8fGjRogXx8fFllvv7+9/weG5ubqmtcW+2nJyc\n68YpBEhTmBA3VdeuXTl37hwhISF06NDB/rF161aWL1+OXq8v83UREREApKWl3cxwS7l06RIFBQWE\nh4fXaByidpPEIsRN9NBDDxEaGsro0aP56quv+O9//8usWbNYuHAhkZGR1514GBsbi7u7e4WGJVen\nPXv2ANCzZ88ajUPUbpJYhLiJvLy8WLlyJR07dmTWrFk888wz7Ny5k9dff50JEyZc93UeHh7ccccd\n7Nix4yZGW9qOHTuIjo6WGou4IZl5L0Qd8dtvvzF06FC2bdtWZgd/dSsoKKBXr17MmjWLu++++6a/\nv6g7pMYiRB0RHR1N3759S82Iv1lWrVpFy5Yt6du3b428v6g7pMYiRB1y8eJFHnroIf7xj3/QpEmT\nm/a+2dnZPPjggzf9fUXdJIlFCCGES0lTmBBCCJeSxCKEEMKlJLEIIYRwKUksQgghXEoSixBCCJf6\nfyN+uBn21fN1AAAAAElFTkSuQmCC\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 ($\\mu$U/mL)')" + ] + }, + { + "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": 94, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "I_max = data.insulin.max()\n", + "I_b = data.insulin[0]\n", + "G_b = data.glucose[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.4150938228741885" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "phi_1 = (I_max - I_b) / (system.k * (G0 - G_b))\n", + "phi_1" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "38.301171870899175" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "phi_2 = system.gamma * (1e4)\n", + "phi_2" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "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/chap09mine.ipynb b/code/chap09mine.ipynb new file mode 100644 index 00000000..a5cb220f --- /dev/null +++ b/code/chap09mine.ipynb @@ -0,0 +1,1929 @@ +{ + "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": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] second" + ], + "text/latex": [ + "$[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "duration = 10 * s\n", + "ts = linspace(0, duration, 11)\n", + "ts" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now we make a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "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": 79, + "metadata": {}, + "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", + " \n", + " y, v = state\n", + " unpack(system) \n", + "\n", + " dydt = v\n", + " dvdt = -g\n", + " \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": 58, + "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": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 second\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" + ] + } + ], + "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": 60, + "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.00.0
1.0376.1-9.8
2.0361.4-19.6
3.0336.9-29.4
4.0302.6-39.2
\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" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.head()" + ] + }, + { + "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", + "
yv
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", + "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": 61, + "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": 62, + "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": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap09-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nYBs/fryTKxFCiJbn113Cv6ayyBwugPVm0H379hEYGIhGo3F2OUII0SKYTCaKioro0aOHci/kpUjY\nCCGEsLsW1/oshBCi5ZGwEUIIYXcSNkIIIexOwkYIIYTdSdgIIYSwOwmbyzCZTLz66qsMHDiQxMRE\nZsyYQXFxsbPLcpji4mKeeOIJBg4cSFJSEn/+8585cuSIs8tyij179tCtWzcyMjKcXYrDffzxx4wY\nMYL4+HjGjh3LDz/84OySHKqmpobnn39e+XcwZcoUjh075uyyHGLevHnMmTPHZmzr1q2MHj2a+Ph4\nRo0aRXp6epOeS8LmMhYtWkRaWhovv/wyK1asID8/n4ceesjZZTmE2WzmwQcf5MSJE/zrX//io48+\nwtPTk0mTJlFaWurs8hyqpqaGxx9//Ip3SLdGaWlpPPvss9x7772sWbOG5ORkHnjgAfLy8pxdmsP8\n7W9/Y9u2bbzxxhusXLkSnU7HlClTlAUbWyOLxaJ8v7907Ngxpk2bxsiRI0lLS2PYsGFMnz6do0eP\nNulJxSXU19dbEhMTLZ988okylpuba4mJibHs3LnTiZU5xv79+y0xMTGWY8eOKWP19fWWXr16WdLS\n0pxYmeM9/fTTlgkTJlhiYmIsP/74o7PLcRiz2WwZMmSIZcGCBcqYyWSy3HrrrZbPP//ciZU5VkpK\nimXZsmXK46NHj1piYmIs+/btc2JV9nPy5EnLhAkTLH379rUMHjzY8tRTTynbzv9b+KUJEyZY5s6d\ne8XnlTObRhw6dIjq6mpSUlKUsYiICMLDw8nMzHRiZY4RGhrKW2+9RadOnZSx81OLl5eXO6ssh0tP\nT2fLli3MnTvX2aU43PHjxzl16hS33HKLMqZWq/nss88YNWqUEytzLD8/P9atW0dJSQkGg4FVq1bh\n7e1NZGSks0uzi127dhEaGsqaNWuIiIiw2ZaZmWnzngjQt2/fJr0nytxojTg/uVxwcLDNeFBQUJuY\nrNPX15fBgwfbjC1fvpy6ujoGDhzonKIc7OzZs8yZM4e///3veHt7O7schztx4gQAFRUV/OlPf+Lo\n0aNERUUxa9Ysevfu7dziHOj5559n9uzZ3HDDDWg0GvR6Pe+++y5eXl7OLs0uRo8ezejRoy+5LT8/\n/5rfE+XMphG1tbWo1Wq0Wq3NuKura6u+VtuYTZs28dprrzF58uTftLR3S/LMM88wdOhQUlNTnV2K\n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\n6wAAAABJRU5ErkJggg==\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": "markdown", + "metadata": {}, + "source": [ + "One can see that run_odeint is changing the dt value to be larger when the function is more linear and smaller when the rate of change of the function is changing a lot." + ] + }, + { + "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": "markdown", + "metadata": {}, + "source": [ + "It alters the size of the timesteps run_odeint decides to use." + ] + }, + { + "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": 64, + "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": 65, + "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": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(10)\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": 66, + "metadata": { + "collapsed": true + }, + "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": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(8.81792826905006)" + ] + }, + "execution_count": 67, + "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": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "8.817885349720552 second" + ], + "text/latex": [ + "$8.817885349720552 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 68, + "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": 69, + "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": 70, + "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": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-0.003708896250259386 meter" + ], + "text/latex": [ + "$-0.003708896250259386 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 71, + "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": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-86.41569703669059 meter/second" + ], + "text/latex": [ + "$-86.41569703669059 \\frac{meter}{second}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 72, + "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": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-311.0965093320861 kilometer/hour" + ], + "text/latex": [ + "$-311.0965093320861 \\frac{kilometer}{hour}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 73, + "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": 91, + "metadata": {}, + "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\n", + "\n", + "def sweep_v_init(v_init_array):\n", + " newfig()\n", + " for v_init in v_init_array:\n", + " system = make_system(10, v_init)\n", + " T_sidewalk = flight_time(system)\n", + " plot(v_init, T_sidewalk, 'b-')" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "array = linspace(0,25,26)\n", + "sweep_v_init(array)" + ] + }, + { + "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": 93, + "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": 94, + "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": 95, + "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": 95, + "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": 96, + "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": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(, )" + ] + }, + "execution_count": 97, + "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": 98, + "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": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 99, + "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": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(22.439794207078908)" + ] + }, + "execution_count": 100, + "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": 101, + "metadata": { + "collapsed": true + }, + "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": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 102, + "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": 103, + "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": 104, + "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": 105, + "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": 113, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition.set(v_init=-300 * m / s)" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": { + "collapsed": true, + "scrolled": false + }, + "outputs": [], + "source": [ + "system = make_system(condition)\n", + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n7ne/49y5c/ztb3/j888/x87OjlmzZlFWVtblr58ut4S5szQ2NrJhwwZef/11hg8fDsDKlSsZM2YM\nx44dIzY21sARGl5GRgYhISG4u7sbOhSDy83N5dVXXyUzMxMfHx+dvg0bNhAdHc3cuXMBWLhwIUeP\nHmXDhg386U9/MkS4ne5Gv5/c3Fzq6uqIjo7ukddSeno6x48f5/vvv9fuXLJixQri4+PZs2cPx44d\n69LXj9zJXEd6ejo1NTU6ZQX8/Pzw9fXt8cNBl2VmZhIUFGToMIzCsWPH8Pb2Ztu2bfj5+en0JSUl\n6VxHAIMHD+5R19GNfj8ZGRlYWVnh6+troOgMy9vbmw8//JDevXtr2y7vVlJRUdHlrx+5k7mOjpQV\n6OkyMzNpaGhg2rRpXLx4kdDQUBYtWkRUVJShQ+t0kydPZvLkydfsU6lUPf46utHvJzMzE3t7e158\n8UUOHz6Ms7MzU6ZMYebMmR3aOLerc3Z25r777tNp27hxI/X19YwYMYJVq1Z16eun+/8XvE11dXWY\nmJhgbm6u035lWYGerL6+ntzcXKqrq3nppZdYt24dHh4ezJgxg+zsbEOHZ1SuV35CrqM2WVlZ1NbW\nMmLECD7++GOeeOIJVq9ezdq1aw0dmkHs3LmTlStXMnv2bIKDg7v89SN3MtdhZWVFa2srzc3NmJm1\n/5quLCvQk1lZWXHkyBEsLCy0/wMsW7aM06dP8+mnn/LGG28YOELjYWlpSVNTk06bXEftli9fTm1t\nLQ4ODgCEhYVRVVXFBx98wIIFC7RDRz3B1q1beeONN3jggQdYvHgx0PWvH7mTuY4rywpcqaio6Kpb\n157Kzs5O5y8sExMTQkJCKCi49Trg3Zm3tzdFRUU6bXIdtTMzM9MmmMvCwsKoqamhqqrKQFF1vnXr\n1rFkyRIee+wx3nnnHe1QYVe/fiTJXEd4eDi2trYcPnxY25aXl8fFixcZNGiQASMzDikpKcTGxpKS\nkqJta2lpIT09ndDQUANGZnwGDhzIkSNHdNoOHToku35fMm3aNN566y2dtlOnTuHh4XFV8umuPvro\nI95//32effZZ3njjDZ27t65+/UiSuQ4LCwueeOIJ3nnnHX7++WdOnz7NokWLiI+PJzo62tDhGVx4\neDi+vr4sXbqUkydPkpmZyZIlSygrK+O//uu/DB2eUZkxYwZJSUmsXr2a7OxsVq1axcmTJ5k5c6ah\n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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_position(system.results)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEPCAYAAACQmrmQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVGX+B/DPDDAMV0WQAVQ0ETVF5a4kmJf1kr9INGo1\nlwRj0ywvaWWFCrWZIqFpFraOV7QiXC9JtKZZmmkaqAmaAraaNy4GqNxhZn5/GEdGGJkZGWeQz/u1\nvHY4z5mZL+wsH5/LOY9IpVKpQEREZABiYxdAREQPL4YMEREZDEOGiIgMhiFDREQGY27sAkxFVVUV\nsrOz0bFjR5iZmRm7HCKiVkGhUKCoqAheXl6QSqWN2hkyf8nOzsbkyZONXQYRUau0detW+Pv7NzrO\nkPlLx44dAdz+Rbm4uBi5GiKi1iE/Px+TJ08W/obejSHzl/ohMhcXF3Tu3NnI1RARtS6aphkYMg8Z\nhVKF6po6VNcoUF2rQG2dEjW1CtQqlKitu/1Vp1BCoVD99d9KKJQqKJUqKP76UipVUKpUUKlUUCpx\n57FKBZUKUClVUOH2cdz+D+qv6VWp7nr8V10Nr/ltePmvCmrfNPWwkfu+fpiXHxPpzNxcjIA+MvTv\n0XSPRePzDFQPGUCdQomSm9W4WV6NWxU1uFVRi7LKWlRW1aKiqg4V1XWoqVUYu0wiegjVKpT45UwB\n+nk4QSQSaf08hoyJqqquQ0FJBQqKK1BYXIHim1W4VVF7//+KJyLSg5lYhH49dAsYgCFjMpRKFQqK\nK3Dh2k38kX8TRaWVer2OSCSCpYUZpBIzSCxuf1mYiyExF8PCXAxzczHMzeq/RDATi2FmJoJYLIKZ\nWASx6PZj8V+PzcQiiEQiiESAWHTn8e2vvx7j9n/Xv//tY0D9QdGdh2p1NvqoNnHOPZo1/Pza/Z6I\nSDdikQhmZrpfWsmQMbIbZdU4879inL1QjPKq2nueKxKJ0M5Ggna2lrCzkcDeWgJbawvYWFnAytIc\n1pbmsJSY6fwvDSIiQ2HIGElRSSV+zr6Gi/k3m2wXi0To6GAFWQdrOHewRsf2VmhnawlzPf4lQURk\nLAyZB+xWRQ2OZl/DuT9KG82vWFma4xG3dujqYocuMjtILHjnASJq3RgyD9Dp3//EjyevoE6hFI6J\nRCK4y+zQ55EO6ObWDmZiDnUR0cODIfMAKBRK/HjyCrJ//1Pt+COu9gjq74YO9o3v90NE9DBgyBhY\nRVUtvjl8Adf+LBeOOdpLMcS3Mzp1tDViZUREhseQMaDaOgW++vF3XG+wHNmzS3sM9+8CC3POtxDR\nw48hYyAqlQr7frkkBIxIJEJQP1f49OzIJcZE1GYwZAzkl98KcP5yqfD9ML/O6POIoxErIiJ68HjR\nhQHkXS7FsdP5wvcDPDsyYIioTWLItLCq6jp8n3FJ+L6LzA6D+7sZsSIiIuNhyLSwX3OLUP3XnZDt\nbSQYPbArxLz2hYhMxJtvvomIiAi1Y6dOnUKvXr1w4cKFFn8/zsm0oKrqOvyad134fpCXK6SW/BUT\nPexOnCvEsTP5qK1TNn9yC7MwFyOwjwt8ejlrdX5YWBiioqJQUFAAmUwGANi9ezd8fHzQrVu3Fq+P\nPZkW9GtukbCfi4OdFD06tzdyRUT0IJzMKTJKwABAbZ0SJ3OKtD5/4MCBcHV1RXp6OgBAoVAgPT0d\nYWFhBqmPIdNCqmrUezEBfWQcJiNqI7x7doSFuXH+nFqYi+HdU/vdKkUiEZ566imkpaUBAI4cOYKb\nN29i7NixBqmPYzkt5FTudaEX097Okr0YojbEp5ez1sNVpiAsLAxJSUm4cOEC0tLSMHz4cNjb2xvk\nvdiTaQHVtQqczL3TXQ3s48JeDBGZrG7dusHHxwdff/019u3bZ7ChMqCVhszWrVvRq1cvta8+ffqo\nnbNx40YMGzYMAwYMQFRUlEFWTdS7eO0mezFE1KqMHz8e69atg0QiQUhIiMHep1WGTE5ODoYPH45D\nhw4JXwcPHhTaU1NTsWrVKsyfPx9ffvklLC0tER0djZqaGoPUc7nwlvC4p7sDezFEZPKeeOIJ1NXV\n4cknn4S5ueFmTlrlnExubi4GDRqEjh2bnuySy+WIiorCmDFjAACJiYkIDg7Gnj17EBoa2qK1qFQq\n/JF/J2S6ONu16OsTERmCvb09Tp06ZfD3aZU9mby8PHh4eDTZ9ueff+LChQsIDAwUjtnY2MDLywsZ\nGRktXktpWTXKKmsBABILMzh3sG7x9yAiaq1aXcgUFBTgxo0bOHjwIMaMGYPHH38cr732GgoKCgAA\n+fm37xlWf5FRPWdnZ6GtJV0uKBMed+poy50tiYgaMLnhssuXL2PEiBFNtkkkEiQlJQEAzM3NsWLF\nCpSUlGD58uWIjIzEjh07UFl5+9b6lpaWjZ5bXV3d4vVeajAf00XGTciIiBoyuZCRyWTClah3E4vF\neOSRR3DkyBF06NBBON6jRw8MGTIEBw4cQKdOnQCg0SR/TU0NrKysWrRWpVKFK4V3ejKcjyEiUmdy\nIWNhYaFxvqVew4ABbg+FOTg44Nq1a/D39wcAFBUVoWvXrsI5hYWFzb6urgpLKoSbYdpaWaC9nWUz\nzyAialta3ZzM5s2bERwcjNraWuHYlStXUFxcDE9PTzg6OqJbt244duyY0F5eXo7s7GwEBAS0aC2X\nG/ZiZHbc8ZKI6C6tLmSGDh2K8vJyxMTE4Pz588jMzMTMmTPh5+eHwYMHAwAiIyOxdu1afP3118jJ\nycG8efPg7OyMkSNHtmgtakuXZRwqIyK6m8kNlzXH3d0dGzZsQGJiIp555hlYWFhg+PDhePPNN4Vz\nJk2ahJs3b2LJkiUoLy+Hr68v5HI5JBJJi9VRW6dAfnG58H1nZ076ExHdrdWFDAB4e3sjOTn5nudM\nmzYN06ZNM1gNV4vKoVSqAABO7a1gLbUw2HsREbVWrW64zFQUlFQIjzt1ZC+GiKgpDBk9lVXcWXjQ\n3paryoiImsKQ0VNZ5Z3rcGytOVRGRNQUhoyeGvZkbK1abkEBEdHDhCGjp/qbYgLsyRARacKQ0UNN\nrULYpMzcTAypxMzIFRERmSaGjB7UejFWFrzSn4hIA4aMHm5VcNKfiEgbDBk9lN/VkyEioqYxZPTQ\ncGWZDVeWERFpxJDRA6+RISLSDkNGD+rXyDBkiIg0YcjoQX11GYfLiIg0YcjooWHI2HG4jIhII4aM\njqrvuhDTkhdiEhFpxJDRUVnDa2R4ISYR0T0xZHSkfs8yzscQEd0LQ0ZH6ivLWuXGokREDwxDRkfl\n7MkQEWmNIaOjW3fNyRARkWYMGR1xToaISHsMGR3xan8iIu0xZHSgUqnU71vGkCEiuieGjA6qaxWo\nrVMCACx4ISYRUbN0WoN78eJFXLlyBbdu3YKDgwNcXV3RpUsXQ9VmchquLLOx5oWYRETNaTZkrl+/\njg0bNiAtLQ2FhYVQqVRCm0gkgru7O0aPHo3nn38eTk5OLVZYTU0NwsPD8cILL2DcuHFqbRs3bsSm\nTZtQXFwMX19fxMbGolu3bkJ7VlYWFi9ejN9++w0ymQwzZsxAWFjYfdekPh/DSX8iouZoDBmFQoGP\nP/4YcrkcnTt3xoQJE+Dl5YVOnTrB2toaN27cQEFBATIzM/H9999j8+bNmDJlCl555RVYWNzfXEVZ\nWRleffVVnDt3rlFbamoqVq1ahffffx+PPPIIVqxYgejoaKSnp0MikaC4uBjR0dF48sknsXjxYhw+\nfBgxMTFwcnJCcHDw/dXFHTGJiHSiMWTCw8Ph7u6OlJQUPProo02e069fP/ztb3/D/PnzkZmZiXXr\n1uGZZ57Bzp079S7o8OHDWLRoEezt7Ztsl8vliIqKwpgxYwAAiYmJCA4Oxp49exAaGorU1FTY2toi\nJiYGYrEYHh4eOHPmDNavX3//IVPBzcqIiHShMWRiYmLg7++v9Qv5+fnBz88Px44du6+C9u/fj7Cw\nMLz44ovo16+fWtuff/6JCxcuIDAwUDhmY2MDLy8vZGRkIDQ0FBkZGQgICIBYfGdNQ2BgIN555x2o\nVKr7mkdhT4aISDcaQ0aXgGmoYQDoY8GCBRrb8vPzAQAymUztuLOzs9CWn5+PPn36NGqvrKxESUkJ\nOnTooHdtVdV1wmNrKUOGiKg595z4v3TpErZs2YI//vgDPXv2xHPPPdfoD/z58+exePFirF+/vtk3\nu3z5MkaMGNFkm0QiQVZW1j2fX1lZCQCwtLRs9Nzq6moAQFVVFSQSSaN24PZigvuhaLDowcyMK8uI\niJqjMWTOnj2LSZMmQSqVwsXFBT/++CO2bt2KhIQEDBs2TDivrKwMR44c0erNZDIZ0tPTm2xrOLyl\niVQqBdA4LGpqamBlZSWc01Q7AOEcfSmVdx6LuXyZiKhZGkMmISEBXl5e+Pe//w0rKytcvHgR8+fP\nx8yZM/Hhhx/ib3/7m85vZmFhAQ8PD72LdXV1BQAUFRWha9euwvHCwkLhdV1cXFBUVKT2vMLCQlhb\nW8POzk7v9wYAZYOUMRMzZIiImqOx+5CdnY0XXnhB+Nd/165dsWnTJvj5+WHevHnIzMx8YEXWc3R0\nRLdu3dQWF5SXlyM7OxsBAQEAbi9AyMjIULue5+jRo/D19dWqt3QvCuWd1xQzZIiImqXxr25Tf5At\nLS3xySefoGvXrpgxYwZ+//13gxbXlMjISKxduxZff/01cnJyMG/ePDg7O2PkyJEAbi+9Li4uRmxs\nLM6fP4/k5GSkpaUhOjr6vt9byZAhItKJxpDp168fNmzYIEyo17OxscGnn34KiUSCqVOnNnnBpCFN\nmjQJ06dPx5IlS/D3v/8dtbW1kMvlwuS+k5MT5HI5zpw5g7CwMGzZsgXx8fEICgq67/duGDIcLiMi\nap5I1XBcqYHTp08jIiIC1tbWmDp1KqZOnarWnpubi8jISBQXFwMAfvvtN8NXa0D1K9++++47dO7c\nuclztvz3N5Teuh26k8f0hoOd9EGWSERkcpr726mxJ9O3b1/s2LEDY8eOha2tbaN2T09PbN++HSNH\njoS5edvY615tuIyry4iImqUxHc6dO4devXrh7bff1vhkmUyGVatWQaFQGKQ4U8PhMiIi3WgMmeee\new62trYIDg7GkCFDMHjw4CZ7NABgZtY29lXh6jIiIt1oHC47evQo4uPj0b59e6xevRqDBg3C5MmT\n8emnn7b6+Rd9KVUMGSIiXWjsyZibm2PQoEEYNGgQXn/9dRQUFODgwYM4ePCgcIFmSEgIQkJCEBwc\nrPGuyQ8TpYLDZUREutD66kSZTIZnnnkGH330EY4ePYrExEQ4OjpizZo1eOyxxwxZo8lQcOKfiEgn\nei0LMzc3x8CBAzFw4EC89tprKCgoaOm6TI5KpeJwGRGRjrQKmZqaGnz22Wc4ceIEbt261ahdJBJh\n3bp1LV6cKbn7av/72ZeGiKit0Cpk3n33XWzbtg2enp5o3769oWsySQ17MWYMGCIirWgVMnv37sWs\nWbMwY8YMQ9djstTmY7iXDBGRVrSa+BeJRPD29jZ0LSaNV/sTEelOq5AZP348tm3bprafSlvDq/2J\niHSn1XDZ7NmzMX78eIwePRp9+/ZttMOkSCTC+++/b5ACTQWv9ici0p1WIfPBBx/gf//7H+zs7HDm\nzJlG7W1hpRWXLxMR6U6rkNm5cyf++c9/Yu7cuW0iUJqiNlzWRn8HRES60mpOxszMDIMHD26zAQNw\nuIyISB9ahUxoaCi2bdtm6FpMGrdeJiLSnVbDZY6OjtixYwdGjhyJfv36wcbGRq1dJBLh3XffNUiB\npoKry4iIdKdVyKSmpqJdu3ZQKBQ4efJko/a2MIymPlym9X1FiYjaNK1CZv/+/Yauw+Spry4zYiFE\nRK2Ixj+Xly5d0usF9X2eqePqMiIi3WkMmSlTpiAxMRGlpaVavVBhYSGWLl2KKVOmtFhxpoSry4iI\ndKcxZLZv346rV68iJCQE06dPx44dO5CXl4eqqioAQFlZGfLy8pCSkoKXX34Zw4cPR35+/kO7Ck3J\nORkiIp1pnJNp3749EhMTcerUKcjlcixcuBAKhaLReZaWlhgyZAg+++wz9O/f36DFGpP66jIjFkJE\n1Io0O/Hfv39/rFq1ChUVFcjIyMClS5dQVlYGBwcHuLm5wd/fH1Kp9EHUalQcLiMi0p3W2y9bW1tj\nyJAhhqxFTU1NDcLDw/HCCy9g3LhxwvHy8nL4+flB1WC1FwAsW7ZMOC8rKwuLFy/Gb7/9BplMhhkz\nZiAsLOy+6uFwGRGR7rQOmQeprKwMr776Ks6dO9eoLS8vDwCwb98+tR6Uvb09AKC4uBjR0dF48skn\nsXjxYhw+fBgxMTFwcnJCcHCw3jVxdRkRke5MLmQOHz6MRYsWCaFxt5ycHLi6uqJLly5NtqempsLW\n1hYxMTEQi8Xw8PDAmTNnsH79+vsKGYWKO2MSEenK5MZ99u/fj7CwMHzxxRdNtufm5qJ79+4an5+R\nkYGAgAC1Ia3AwEAcP3680RCbLrgzJhGR7kyuJ7NgwYJ7tufm5qKqqgoRERE4f/483N3d8dJLL+Hx\nxx8HAOTn56NPnz5qz3F2dkZlZSVKSkrQoUMHverivcuIiHSnVcgkJCRgwoQJ8PDwuK83u3z5MkaM\nGNFkm0QiQVZWVrOvkZubC1tbWyxYsAAODg5IS0vDtGnTsGHDBgQFBaGqqgoSiaTRawO3FxPoi6vL\niIh0p1XI7N69G+vXr4eXlxcmTJiAJ598EnZ2djq/mUwmQ3p6epNt2q7Y2rt3LwAIW0D37dsXubm5\n2LRpE4KCgiCVShuFSf33d28brQvujElEpDutQubAgQP46aefsHPnTixbtgxLly7F8OHDMX78eISE\nhGh9F2YLC4v77g01FRQ9e/bETz/9BABwcXFBUVGRWnthYSGsra31CsZ6SgVXlxER6Uqr7oNIJEJw\ncDA++OADHDp0CIsWLUJZWRlmzpyJxx9/HMuXL8fFixcNXSuuX78Of39/fPvtt2rHs7Oz0aNHDwCA\nn58fMjIy1Cb5jx49Cl9f3/u6vkXBngwRkc50/qtrY2ODoUOHYtiwYXj00UdRWFiIrVu3YsyYMXjl\nlVdQWFhoiDoBAE5OTvDx8UF8fDyOHDmC33//HcuWLcOJEycwffp0AEB4eDiKi4sRGxuL8+fPIzk5\nGWlpaYiOjr6v91YqlcJjhgwRkXa0Dpnq6mqkpaXhxRdfxOOPP46EhAR069YNmzdvRmZmJjZv3ozs\n7GzMnj3bkPUiMTERISEheOONNzBu3DgcP34cGzZsgKenJ4DbQSSXy3HmzBmEhYVhy5YtiI+PR1BQ\n0H29L1eXERHpTqs5mTfffBN79+5FeXk5vL29ERsbi7Fjx6ptwxwQEIAJEyZg48aNLVZcU1f829vb\nIy4uDnFxcRqf5+3t3eJ3g1bc6ciwJ0NEpCWtQubQoUOYOHEinn766XteCDlw4ED07NmzxYozJVxd\nRkSkO62vk+nfv79az6XezZs38dNPP+GJJ57AwIEDW7xAU6Fs0JXhcBkRkXa0mpOZOnUqzp8/32Tb\nmTNnMH/+/BYtyhSprS7jEmYiIq1o7MnMnz8f165dAwCoVCrExcXB1ta20XkXLlyAk5OT4So0EUrO\nyRAR6UxjT+aJJ56AmZkZzMzMAEB43PDLwsICfn5+iI+Pf2AFGwtXlxER6U5jT2bo0KEYOnQoACAi\nIgJxcXH3fbV+a6bgdTJERDrTauI/OTnZ0HWYPCVvkElEpDONITN69GisXLkSvXv3xujRo5t9oT17\n9rRoYaaGw2VERLrTGDK+vr7CkmUfHx+tb4L5sOK9y4iIdKcxZJYsWSI8Xrp0aaN2lUrVpoKHO2MS\nEelO63uXff7555g7d67wfUZGBkaNGoWdO3capDBTw+EyIiLdaRUyW7Zswbvvvqt2nYyLiwv8/f0R\nExODXbt2GaxAU8GdMYmIdKf16rJXXnkFL7/8snCsS5cueP/99+Hm5ga5XI5x48YZrEhTwHuXERHp\nTqueTH5+Pnx9fZts8/Pzwx9//NGiRZkiDpcREelOq5Bxc3PD0aNHm2zLzMyETCZr0aJMkYIT/0RE\nOtNquOzvf/87EhISUFdXh5EjR6JDhw4oKSnB/v37sW7dOoNvVGZsKpWKF2MSEelBq5CJjIxEQUEB\nNm7ciHXr1gG4/YfX3NwcERER9721salrkC8Qi0Rtauk2EdH90CpkgNt3ZZ4xYwZOnjyJ0tJS2NnZ\noX///ujQoYMh6zMJSiX3kiEi0ofW18kAt//YKpVKiMViSCQSSCQSQ9VlUrh8mYhIP1r3ZJKSkrBm\nzRrU1NRA9ddyXolEgn/+85+YOXOmwQo0BZyPISLSj1Yh8+WXX2LVqlWYOHEiQkND4eTkhMLCQqSl\npSEpKQkuLi545plnDF2r0TSck+FwGRGR9rQKmU2bNiEiIgJvv/22cMzd3R3+/v6QSCRITk5+qENG\noeBeMkRE+tBqTubSpUvCBmZ3Gzp0KC5evNiSNZkctav9ubKMiEhrWoWMq6srzp8/32Rbbm4u2rVr\n16JFmRpe7U9EpB+tQmbs2LFYuXIl9u7dq3b822+/xerVq/HEE08YpDhTwdVlRET60WpOZvr06cjI\nyMDMmTMhkUjg6OiIP//8E7W1tfD398ecOXNarKDTp08jISEB2dnZkEqlePzxx/H666+jffv2wjkb\nN27Epk2bUFxcDF9fX8TGxqJbt25Ce1ZWFhYvXozffvsNMpkMM2bMQFhYmN41cXUZEZF+tOrJWFpa\nIjk5GWvWrEFERASCg4MRERGBNWvWYPPmzbCysmqRYgoKChAVFYXOnTsjJSUFK1euxKlTp9RCLDU1\nFatWrcL8+fPx5ZdfwtLSEtHR0aipqQEAFBcXIzo6Gn379sX27dsRERGBmJgYHDp0SO+6OFxGRKQf\nra+TAW5P8mtaANASvvnmG0gkErzzzjswMzMDAMTGxmLy5Mm4evWqsK1AVFQUxowZAwBITExEcHAw\n9uzZg9DQUKSmpsLW1hYxMTEQi8Xw8PDAmTNnsH79egQHB+tVF4fLiIj0ozFkpk6dqvWLiEQi4Z5m\n92P48OHw8vISAqb+tQHg5s2bsLS0xIULFxAYGCi029jYwMvLCxkZGQgNDUVGRgYCAgIgFt/ppAUG\nBuKdd97Re8to7iVDRKQfjSFTW1v7IOsAcPvaG3d3d7Vja9euhUwmg6enJ86ePQsAjbYWcHZ2Rn5+\nPoDbe9/06dOnUXtlZSVKSkr0utea2nAZlzATEWlNY8gkJye3+JtdvnwZI0aMaLJNIpEgKytL7dgH\nH3yAH374AR9//DHMzMxQWVkJ4PYc0d3Pra6uBgBUVVU1uqda/ff18za64nAZEZF+dJqTyc/Px88/\n/4zCwkKMHz8eRUVF6NGjh9Y3ypTJZEhPT2+yreHwlkKhwLvvvouUlBTExcUJwSSVSgE0Douamhph\n8YFUKm2yHYDeCxS4uoyISD9ah0x8fDySk5NRV1cHkUiEwYMHY/ny5SgoKMCmTZvg6OjY7GtYWFjA\nw8PjnudUV1dj9uzZOHToEBISEhAaGiq0ubq6AgCKiorQtWtX4XhhYaHwui4uLigqKlJ7zcLCQlhb\nW8POzk7bH1dNwzkZri4jItKeVkuY//3vfyM5ORlvvPEG9u7dK9yF+ZVXXsGNGzewYsWKFilGqVRi\n9uzZ+Pnnn5GUlKQWMADg6OiIbt264dixY8Kx8vJyZGdnIyAgAADg5+eHjIwMoUYAOHr0KHx9fdV6\nS7pQKNiTISLSh1Z/dVNSUjBz5kw8//zzcHNzE477+Phgzpw5OHjwYIsU8/nnn+P7779HTEwMevfu\njaKiIuGrfiFCZGQk1q5di6+//ho5OTmYN28enJ2dMXLkSABAeHg4iouLERsbi/PnzyM5ORlpaWn3\ntXsn711GRKQfrYbLCgsL0a9fvybbOnXqhNLS0hYpZvfu3QCABQsWNGrbunUr/P39MWnSJNy8eRNL\nlixBeXk5fH19IZfLhXkhJycnyOVyvPfeewgLC4Obmxvi4+MRFBSkd11KRcPhMv16Q0REbZFWIePu\n7o4ff/wRjz32WKO2jIwMdOnSpUWK+eKLL7Q6b9q0aZg2bZrGdm9vb2zbtq1FagIABa+TISLSi1Yh\nM2XKFMTGxqKurg7Dhw+HSCTCpUuXkJmZiXXr1uG1114zdJ1GxdVlRET60Spknn32WZSUlCApKQlb\ntmyBSqXCnDlzYGFhgalTp2Ly5MmGrtOouLqMiEg/Wi9hnjZtGiZPnowTJ06gtLQUdnZ2GDBgABwc\nHAxZn0ng6jIiIv1oDJlZs2YhPDwcISEhwv2+bG1tERIS8sCKMxVcXUZEpB+NIXPy5Ens3bsXzs7O\nGD9+PJ5++ukWm+BvbXirfyIi/Whcj3vgwAHI5XIEBgZi06ZNGDVqFCIiIvDVV18J9wlrK3jvMiIi\n/WgMmfpbxyQkJOCnn37CkiVLYG5ujjfffBPBwcGIi4tDdnb2g6zVaLi6jIhIP1pN/FtbWyMsLAxh\nYWEoKCjArl27sHv3bnzxxRfo2bMnwsPD8fzzzxu6VqNRKpXCYw6XERFpT+fL12UyGV588UXs3r0b\nmzdvRk1NDZYsWWKI2kyG4k7GsCdDRKQDnW71D9zeofK///0v0tLSkJmZCQcHB7zwwguGqM1kcGdM\nIiL9aBUy1dXV+O6777B7924cOnQIKpUKw4YNw8cff4yQkBC17ZIfRlxdRkSkH40ho1Qq8eOPPyIt\nLQ3fffcdKioq4OnpiXnz5uGpp57Saxvj1krRYE6G18kQEWlPY8gMHjxYuLJ/3LhxmDBhgsY7MT/s\nlJyTISLSi8aQefTRRzFhwgSMGjVK6+2VH1YcLiMi0o/GkFm/fv2DrMOkceKfiEg/3IFLC5yTISLS\nD0NGC2o7Y5oxZIiItMWQ0YKCd2EmItILQ0YLvHcZEZF+GDJa4OoyIiL9MGS0wFv9ExHphyGjBe6M\nSUSkH4aMFtSGy7i6jIhIawwZLahN/LMnQ0SkNYZMM1QqFedkiIj0ZHIhc/r0aURGRsLf3x/BwcGI\niYlBaWkFvlkVAAASqklEQVSp0F5eXo7evXujV69eal+7du0SzsnKysLEiRMxYMAAjBo1Cjt37tS7\nngb5ArFIBBF7MkREWtN50zJDKigoQFRUFEaNGoWFCxeitLQUcXFxmDNnDjZu3AgAyMvLAwDs27cP\nUqlUeK69vT0AoLi4GNHR0XjyySexePFiHD58GDExMXByckJwcLDONfEaGSIi/ZlUyHzzzTeQSCR4\n5513hI3QYmNjMXnyZFy9ehVubm7IycmBq6srunTp0uRrpKamwtbWFjExMRCLxfDw8MCZM2ewfv16\nvUKm4X3LeI0MEZFuTGq4bPjw4fjwww/VdtqsH566efMmACA3Nxfdu3fX+BoZGRkICAiAWHznRwsM\nDMTx48eharAUWVvsyRAR6c+kQsbd3R3+/v5qx9auXQuZTAZPT08At0OmoqICEREReOyxxzBx4kQc\nOHBAOD8/Px8ymUztNZydnVFZWYmSkhKda2o4J8OeDBGRbh7ocNnly5cxYsSIJtskEgmysrLUjn3w\nwQf44Ycf8PHHHwu9m9zcXNja2mLBggVwcHBAWloapk2bhg0bNiAoKAhVVVWNNlmr/76mpkbnmtmT\nISLS3wMNGZlMhvT09CbbGg5vKRQKvPvuu0hJSUFcXJxaMO3duxcAYGVlBQDo27cvcnNzsWnTJgQF\nBUEqlTYKk/rv65+jC+4lQ0SkvwcaMhYWFvDw8LjnOdXV1Zg9ezYOHTqEhIQEhIaGqrU3FRQ9e/bE\nTz/9BABwcXFBUVGRWnthYSGsra1hZ2enc828OSYRkf5Mak5GqVRi9uzZ+Pnnn5GUlNQoYK5fvw5/\nf398++23asezs7PRo0cPAICfnx8yMjLUJvmPHj0KX19ftd6S9jXdeczhMiIi3ZjUEubPP/8c33//\nPd577z307t1brUfSvn17ODk5wcfHB/Hx8bCzs4NMJsO2bdtw4sQJbN++HQAQHh4OuVyO2NhYTJky\nBYcPH0ZaWhrWrl2rV01qw2UMGSIinZhUyOzevRsAsGDBgkZtW7duhb+/PxITE7F8+XK88cYbKC0t\nRd++fbFhwwZh9ZmTkxPkcjnee+89hIWFwc3NDfHx8QgKCtKrJt6BmYhIfyYVMl988UWz59jb2yMu\nLg5xcXEaz/H29sa2bdtapCaFgndgJiLSl0nNyZgi9mSIiPTHkGkGV5cREemPIdMMXoxJRKQ/hkwz\nuJcMEZH+GDLNaDgnw+EyIiLdMGSaweEyIiL9MWSaoTZcxtVlREQ6Ycg0gz0ZIiL9MWSaoVBbwsxf\nFxGRLvhXsxnqPRkjFkJE1Arxz2Yz1FeX8ddFRKQL/tVsBudkiIj0x5BpBleXERHpjyHTDN67jIhI\nfwyZZnC4jIhIfwyZZvDeZURE+mPINEPJORkiIr0xZJqhdjEmd8YkItIJQ6YZ3BmTiEh/DJlmKNmT\nISLSG0OmGZyTISLSH0OmGVxdRkSkP4ZMM3gxJhGR/hgyzVCb+GfIEBHphCHTDM7JEBHpz+RCJjMz\nE5MmTYK3tzdCQkKQkJCAmpoatXM2btyIYcOGYcCAAYiKisKFCxfU2rOysjBx4kQMGDAAo0aNws6d\nO/Wuh3MyRET6M6mQuXLlCqKjo9G/f3989dVXiI+Px65du5CYmCick5qailWrVmH+/Pn48ssvYWlp\niejoaCGIiouLER0djb59+2L79u2IiIhATEwMDh06pFdNCqVSeMw5GSIi3Zgbu4CGrly5glGjRuGt\nt94CALi7u2Ps2LE4cuSIcI5cLkdUVBTGjBkDAEhMTERwcDD27NmD0NBQpKamwtbWFjExMRCLxfDw\n8MCZM2ewfv16BAcH61wTb5BJRKQ/k+rJBAYGIj4+Xvj+9OnT2LdvHwYPHgwA+PPPP3HhwgUEBgYK\n59jY2MDLywsZGRkAgIyMDAQEBEDcYBfLwMBAHD9+HKoGk/ja4uoyIiL9mVRPpiF/f3/cunULffr0\nwYwZMwAA+fn5AACZTKZ2rrOzs9CWn5+PPn36NGqvrKxESUkJOnTooFMdDXsv5mYmlclERCbvgYbM\n5cuXMWLEiCbbJBIJsrKyAABKpRLr16/HjRs3sHjxYrz44ov47LPPUFlZCQCwtLRs9Nzq6moAQFVV\nFSQSSaN2AI0WEGjDq7sTfs6+hp7u7SG1NNlMJiIySQ/0r6ZMJkN6enqTbQ2Ht8RiMfr37w8AiI+P\nx7PPPosTJ05AKpUCaBwWNTU1sLKyAgBIpdIm2wEI5+jCt7cz+ns6sRdDRKSHBxoyFhYW8PDw0Nie\nl5eHgoICYQ4GAHr27AkAKCgoEOZiioqK0LVrV+GcwsJC4XVdXFxQVFSk9rqFhYWwtraGnZ2dXnUz\nYIiI9GNS4z/ff/895HI5Dh48KAyJnTp1CgDQo0cPODo6olu3bjh27Bj8/f0BAOXl5cjOzsbEiRMB\nAH5+fti+fTtUKhVEf108efToUfj6+qr1lu6mUCgA3Jn3ISKi5tX/zaz/G3o3kwqZsLAwyOVyvP32\n25gxYwby8/MRGxuLsWPHwtPTEwAQGRmJZcuWoWvXrvD09MTy5cvh7OyMkSNHAgDCw8Mhl8sRGxuL\nKVOm4PDhw0hLS8PatWvv+d71vZ/Jkycb9ockInoI3T3CVE+k0mddrwGdPXsWS5cuxa+//gpra2s8\n9dRTePXVV9Um8z/99FMkJyejvLwcvr6+iIuLQ5cuXYT2kydP4r333sO5c+fg5uaGWbNm4f/+7//u\n+b5VVVXIzs5Gx44dYWZmZrCfj4joYaJQKFBUVAQvLy9h3rwhkwsZIiJ6eHBGm4iIDIYhQ0REBsOQ\nISIig2HIEBGRwTBkiIjIYBgy96BQKIStBHx8fDBr1ixcv37d2GWZjLy8PPTq1avRV/0dsduqRYsW\nISYmRu3YoUOHMG7cOPTv3x+hoaE4cOCAkaozvqZ+P+Hh4Y0+R3ef8zC7fv065s+fj+DgYPj7++OF\nF15ATk6O0N6aPz8MmXv46KOPsGPHDsTHx2PLli3Iz8/HzJkzjV2WycjJyYGDgwMOHTqk9jVgwABj\nl2YUKpUKK1euREpKitrxvLw8vPTSSxgzZgx27NiBESNG4OWXX0Zubq6RKjUOTb8flUqFvLw8fPDB\nB2qfo/p9pR52SqUSr7zyCi5cuIBPPvkEX3zxBWxtbREZGYmSkpJW//kxqSv+TUlNTQ02b96MBQsW\nCPdSW758OUaMGIHjx4/D19fXyBUaX05ODnr06IGOHTsauxSju3TpEt5++23k5ubCzc1NrW3z5s3w\n9vbGSy+9BACYM2cOMjMzsXnzZvzrX/8yRrkP3L1+P5cuXUJlZSW8vb3b5Gfp7NmzOHHiBNLT04V7\nMCYkJCAwMBAHDhzA8ePHW/Xnhz0ZDc6ePYvy8nK1DdI6d+6MTp06tfnhoHq5ubno3r27scswCceP\nH4erqyt2796Nzp07q7VlZGSofY4AYODAgW3qc3Sv309OTg6kUik6depkpOqMy9XVFZ9++ikeeeQR\n4Vj9fRdv3LjR6j8/7MlooM0GaW1dbm4uqqur8eyzz+LKlSvw9PTE3LlzhW0a2pJx48Zh3LhxTbbl\n5+e3+c/RvX4/ubm5sLOzw2uvvYZjx47BwcEBEyZMwJQpU+55U9uHhYODA4YOHap2LDk5GVVVVQgO\nDsbKlStb9efn4f9fUE+VlZUQi8WwsLBQO95wg7S2rKqqCpcuXUJZWRneeOMNJCUlwdnZGf/4xz9w\n/vx5Y5dnUjRtpMfP0W15eXmoqKhAcHAw1q1bh+eeew6rVq3C6tWrjV2aUXz33XdYvnw5oqKi4OHh\n0eo/P+zJaCCVSqFUKlFXVwdz8zu/poYbpLVlUqkUv/zyCyQSifB/gKVLl+L06dP47LPPsHDhQiNX\naDosLS1RW1urdoyfozvi4+NRUVEBe3t7AECvXr1w69YtrFmzBjNnzhSGjtqC7du3Y+HChRg7dixe\nf/11AK3/88OejAaurq4A0OQGaHd3XdsqW1tbtX9hicVi9OjRA9euXTNiVabH1dUVhYWFasf4ObrD\n3NxcCJh6vXr1Qnl5OW7dumWkqh68pKQkvPXWW5g4cSKWLVsmDBW29s8PQ0aD3r17w8bGBseOHROO\nXb58GVeuXEFAQIARKzMN2dnZ8PX1RXZ2tnBMoVDg7Nmzwt4/dJufnx9++eUXtWNHjx4VNt5r6559\n9lm89957aseysrLg7OzcKHweVmvXrsWHH36IWbNmYeHChWq9t9b++WHIaCCRSPDcc89h2bJlOHjw\nIE6fPo25c+ciMDAQ3t7exi7P6Hr37o1OnTph0aJF+PXXX5Gbm4u33noLJSUleP75541dnkn5xz/+\ngYyMDKxatQrnz5/HypUr8euvv2LKlCnGLs0kjBw5EikpKdi5cyf++OMPpKamQi6XY9asWcYu7YE4\ne/YsVqxYgaeffhrPPvssioqKhK+KiopW//nhnMw9zJkzB3V1dXj99ddRV1eHkJAQLFq0yNhlmQRz\nc3PI5XIsW7YM06dPR2VlJXx9fbFlyxY4OjoauzyT0qtXL6xevRoJCQlYu3YtunfvjjVr1gjXRLR1\n0dHRMDc3R1JSEq5evQo3Nze89dZbeOaZZ4xd2gORnp4OhUKB//znP/jPf/6j1jZ79mzMmDGjVX9+\nuGkZEREZDIfLiIjIYBgyRERkMAwZIiIyGIYMEREZDEOGiIgMhiFDREQGw+tkiHTw5ptvYseOHfc8\nJzAwEMnJyYiIiICZmRk2btz4YIprQmlpKSZMmIANGzaga9euzZ6/evVqXL9+HXFxcYYvjtoEXidD\npIM//vgDxcXFwvfvvPMOzMzMsGDBAuGYra0tevTogby8PIhEIqNeNDdv3jzIZDK88cYbWp1fVVWF\nMWPGYMmSJQgKCjJwddQWsCdDpAN3d3e4u7sL39va2sLMzKzJWw316NHjQZbWyKlTp7Bnzx4cPHhQ\n6+dIpVJERkZiyZIl+OqrrwxYHbUVnJMhMpCIiAhERkYK3/fq1QspKSl47bXX4OPjg0GDBmH16tUo\nKyvDW2+9BT8/PwwePBgJCQloOMBQUlKCBQsWICgoCP3798ekSZOQmZnZ7PvL5XI89thj6NChg3As\nOzsbU6ZMgZ+fH3x8fBAZGYmTJ0+qPW/s2LHIzc3FDz/8cN+/AyKGDNEDFB8fDwcHB3zyyScYNmwY\nPvroI4SHh8PKygqrV6/GyJEjIZfL8e233wIAqqurERkZiR9++AFz587FqlWr0K5dO0RGRuLUqVMa\n36e8vBz79+/HqFGjhGNlZWWIjo6Gg4MDPvroI6xYsQKVlZWIjo5GWVmZcJ6zszN8fHywe/duw/0i\nqM3gcBnRA9S3b1/ExMQAuH0n6+3bt8PR0VG48eqgQYOwe/dunDx5EqNHj8auXbtw7tw5pKamol+/\nfgCAIUOGIDw8HCtWrMCGDRuafJ+MjAzU1taqbYWdl5cn3CXb19cXANC9e3ekpKSgvLwctra2wrle\nXl5IT083yO+A2hb2ZIgeoIZ/9B0cHGBmZqZ2TCQSoV27drh58yYA4MiRI5DJZHj00UdRV1eHuro6\nKJVKDBs2DL/88gtqamqafJ/Lly8DADp37iwc8/T0RIcOHTB9+nQsWrQIe/fuhZOTE15//fVGG2B1\n6tQJRUVFGl+fSFvsyRA9QDY2No2OWVtbazy/tLQU+fn56Nu3b5PtJSUlTe6QWL+jZMMtem1sbLB1\n61YkJSXhm2++QUpKCqRSKcaNG4cFCxao7XJaX1NZWZnanA6RrhgyRCbMzs4OHh4eiI+Pb7LdwcHh\nnsdv3bqltrtk9+7dkZCQAIVCgVOnTmHXrl34/PPP0a1bN0ydOlU478aNGxCLxWjXrl0L/jTUFnG4\njMiEBQQE4OrVq3B2dka/fv2Er++++w7JycmwsLBo8nlubm4AgPz8fOHY3r17MWjQIBQVFcHMzAw+\nPj6Ii4uDvb09rl27pvb8/Px8ODs7w8zMzHA/HLUJDBkiEzZhwgTIZDJERUVh165d+Pnnn7F06VIk\nJSWhS5cuanvBN+Tv7w+pVKq21NnX1xcqlQovv/wy9u3bhyNHjmDRokUoKytTW4UGAMePH0dwcLBB\nfzZqGxgyRCasfh5lwIABWLp0KV588UX8+OOPWLhwIWbOnKnxeVZWVhgyZIjahZiOjo5Yt24d7Ozs\nEBMTg2nTpuH06dP46KOPEBAQIJxXVFSEs2fPNgoeIn3wtjJED6lTp05h0qRJ2L9/f5OLAzRJSkrC\nnj17sGPHDo09JSJtsSdD9JDq378/RowYgfXr12v9nIqKCnz22WeYO3cuA4ZaBEOG6CEWFxeHPXv2\n4OLFi1qdv27dOgwbNgxDhgwxcGXUVnC4jIiIDIY9GSIiMhiGDBERGQxDhoiIDIYhQ0REBsOQISIi\ng/l/0r16T11IOqgAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "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": 117, + "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": 118, + "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": 119, + "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": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 120, + "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": 121, + "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": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-11.034779626277231 meter" + ], + "text/latex": [ + "$-11.034779626277231 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 122, + "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": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.42587017])" + ] + }, + "execution_count": 123, + "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": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " )" + ] + }, + "execution_count": 124, + "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/chap10mine.ipynb b/code/chap10mine.ipynb new file mode 100644 index 00000000..90f314ec --- /dev/null +++ b/code/chap10mine.ipynb @@ -0,0 +1,6874 @@ +{ + "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": 98, + "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": 99, + "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": 100, + "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": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "3.0 meter" + ], + "text/latex": [ + "$3.0 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.x" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "4.0 meter" + ], + "text/latex": [ + "$4.0 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 102, + "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": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "5.0 meter" + ], + "text/latex": [ + "$5.0 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 103, + "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": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.9272952180016122 radian" + ], + "text/latex": [ + "$0.9272952180016122 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 104, + "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": 105, + "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": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 4. 6.] meter" + ], + "text/latex": [ + "$[ 4. 6.] meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A + B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And substract like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 2. 2.] meter" + ], + "text/latex": [ + "$[ 2. 2.] meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 107, + "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": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "2.8284271247461903 meter" + ], + "text/latex": [ + "$2.8284271247461903 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.dist(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the difference in angle" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "-0.17985349979247822 radian" + ], + "text/latex": [ + "$-0.17985349979247822 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 109, + "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": 110, + "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": 111, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 3. 4.] meter" + ], + "text/latex": [ + "$[ 3. 4.] meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 111, + "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": 112, + "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": 113, + "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": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "45 degree" + ], + "text/latex": [ + "$45 degree$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 114, + "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": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.7853981633974483 radian" + ], + "text/latex": [ + "$0.7853981633974483 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 115, + "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": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.7853981633974483 radian" + ], + "text/latex": [ + "$0.7853981633974483 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 116, + "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": 117, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "45.0 degree" + ], + "text/latex": [ + "$45.0 degree$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 117, + "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": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.7853981633974483 radian" + ], + "text/latex": [ + "$0.7853981633974483 radian$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 118, + "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": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 1.1785113 1.1785113] newton/kilogram" + ], + "text/latex": [ + "$[ 1.1785113 1.1785113] \\frac{newton}{kilogram}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newton = UNITS.newton\n", + "\n", + "force = 0.5 * newton\n", + "mass = 0.3 * kg\n", + "\n", + "angle = 45 * degree\n", + "theta = angle.to(radian)\n", + "\n", + "a = force / mass\n", + "\n", + "\n", + "\n", + "x, y = pol2cart(theta, a)\n", + "a_force = Vector(x, y)\n", + "\n", + "a_force" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "[ 1.1785113 -8.6214887] newton/kilogram" + ], + "text/latex": [ + "$[ 1.1785113 -8.6214887] \\frac{newton}{kilogram}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result = a_force + a_grav\n", + "result" + ] + }, + { + "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": 121, + "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": 122, + "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": 123, + "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": 123, + "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": 124, + "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": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " ,\n", + " )" + ] + }, + "execution_count": 125, + "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": 126, + "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": 127, + "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.00000028.28427128.284271
0.0511.4349292.42222927.98892427.491730
0.1022.8550173.80438927.70222626.712880
0.1534.2606975.14716527.42383625.947141
0.2045.6523846.45121127.15343325.193958
\n", + "
" + ], + "text/plain": [ + " x y vx vy\n", + "0.000 0.000000 1.000000 28.284271 28.284271\n", + "0.051 1.434929 2.422229 27.988924 27.491730\n", + "0.102 2.855017 3.804389 27.702226 26.712880\n", + "0.153 4.260697 5.147165 27.423836 25.947141\n", + "0.204 5.652384 6.451211 27.153433 25.193958" + ] + }, + "execution_count": 127, + "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": 128, + "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.896100.2747613.58038315.135822-21.336469
4.947101.0440112.48328115.030816-21.686507
4.998101.8079021.36842314.925643-22.032810
5.049102.5664240.23599814.820318-22.375365
5.100103.319572-0.91380014.714856-22.714157
\n", + "
" + ], + "text/plain": [ + " x y vx vy\n", + "4.896 100.274761 3.580383 15.135822 -21.336469\n", + "4.947 101.044011 2.483281 15.030816 -21.686507\n", + "4.998 101.807902 1.368423 14.925643 -22.032810\n", + "5.049 102.566424 0.235998 14.820318 -22.375365\n", + "5.100 103.319572 -0.913800 14.714856 -22.714157" + ] + }, + "execution_count": 128, + "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": 129, + "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": 130, + "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": 133, + "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": 135, + "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": 136, + "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" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap10-fig03.pdf\n" + ] + } + ], + "source": [ + "newfig()\n", + "plot(sweep)\n", + "decorate(xlabel='Launch angle (degree)',\n", + " ylabel='Range (m)',\n", + " legend=False)\n", + "\n", + "savefig('chap10-fig03.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `max_bounded` to search for the peak efficiently." + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 4.74 s\n" + ] + } + ], + "source": [ + "%time res = max_bounded(range_func, [0, 90], condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an `OptimizeResult` object." + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "scipy.optimize.optimize.OptimizeResult" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(res)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the following variables." + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " fun: 109.69517452156008\n", + " message: 'Solution found.'\n", + " nfev: 9\n", + " status: 0\n", + " success: True\n", + " x: 41.603102863878036" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So the optimal angle is about 41 degrees, and the resulting range is 103 meters." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add a print statement to `range_func` that prints `angle`. Then run `max_bounded` again so you can see how many times it calls `range_func` and what the arguments are." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Turning off units\n", + "\n", + "Each time `range_func` runs, it calls `odeint`, which runs `slope_func` many times. And each time `slop_func` runs, it checks the units for all computations, which takes some time. We can speed up the whole process by removing the units from the computation (now that we are satisfied that they are correct).\n", + "\n", + "Because of the way we organized the code, all units are in the `Condition` object, so we can \"turn off units\" by defining a new `Condition` object with no units:" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(g = 9.8,\n", + " mass = 145e-3,\n", + " diameter = 73e-3,\n", + " rho = 1.2,\n", + " C_d = 0.3,\n", + " angle = 45,\n", + " velocity = 40,\n", + " duration = 7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now `range_func` and `max_bounded` are substantially faster." + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 53.1 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "array(102.72237841710975)" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time range_func(45, condition)" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 646 ms\n" + ] + } + ], + "source": [ + "%time res = max_bounded(range_func, [0, 90], condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Manny Ramirez problem\n", + "\n", + "Finally, let's solve the Manny Ramirez problem:\n", + "\n", + "*What is the minimum effort required to hit a home run in Fenway Park?*\n", + "\n", + "Fenway Park is a baseball stadium in Boston, Massachusetts. One of its most famous features is the \"Green Monster\", which is a wall in left field that is unusually close to home plate, only 310 feet along the left field line. To compensate for the short distance, the wall is unusually high, at 37 feet.\n", + "\n", + "Although the problem asks for a minimum, it is not an optimization problem. Rather, we want to solve for the initial velocity that just barely gets the ball to the top of the wall, given that it launches at the optimal angle.\n", + "\n", + "And we have to be careful about what we mean by \"optimal\". For this problem, we don't want the longest range, we want the maximum height at the point where it reaches the wall.\n", + "\n", + "If you are ready to solve the problem on your own, go ahead. Otherwise I will walk you through the process with an outline and some starter code.\n", + "\n", + "As a first step, write a function called `height_func` that takes a launch angle and a condition as parameters, simulates the flights of a baseball, and returns the height of the baseball when it reaches a point 94.5 meters (310 feet) from home plate." + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def height_func(launch_angle, condition):\n", + " condition.set(angle=launch_angle)\n", + " \n", + " system = make_system(condition)\n", + " run_odeint(system, slope_func)\n", + " \n", + " X = interp_inverse(system.results.x, kind='cubic')\n", + " t_wall = X(94.5)\n", + "\n", + " Y = interpolate(system.results.y, kind='cubic')\n", + " return Y(t_wall)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test your function with a launch angle of 45 degrees:" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(11.03098394866538)" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "height_func(45, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now use `max_bounded` to find the optimal angle. Is it higher or lower than the angle that maximizes range?" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "res = max_bounded(height_func, [0,90], condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following lines compute the height of the ball at the wall, given that it's launched at the optimal angle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It's HIGHER" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "angle: 44.5414551274 height: 11.045290303525986\n" + ] + } + ], + "source": [ + "angle = res.x\n", + "height = height_func(angle, condition)\n", + "print(\"angle: \", angle, \" \", \"height: \", height)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to find the height of the ball at the wall, for a given velocity, given that it's launched at the optimal angle.\n", + "\n", + "Write a function called `best_height` that takes velocity and a `Condition` object as parameters. It should use `max_bounded` to find the optimal launch angle, then compute and the highest possible height of the ball at the wall, for the given velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def best_height(velocity, condition):\n", + " condition.set(velocity=velocity)\n", + " res = max_bounded(height_func, [0, 90], condition)\n", + " \n", + " angle = res.x\n", + " height = height_func(angle, condition)\n", + " \n", + " return height" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use this code to test `best_height`" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(11.045290303525986)" + ] + }, + "execution_count": 159, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "best_height(40, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we want to use `fsolve` to find the initial velocity that makes the height of the ball exactly 11 meters when it reaches the wall.\n", + "\n", + "To use `fsolve`, we need an error function that returns 0 when we have the right velocity. Write a function called `error_func` that takes a velocity and a `Condition` object, uses `best_height` to find the height of the ball at the wall, and returns the difference between the result and the target value (11 meters)." + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error_func(velocity, condition):\n", + " height = best_height(velocity, condition)\n", + " return height - 11" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test your error function like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.045290303525986175" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "error_func(40, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then use `fsolve` to find the answer to the problem, the minimum velocity that gets the ball out of the park." + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [], + "source": [ + "solution = fsolve(error_func, 40, condition)" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "39.988697590879859" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min_v = solution[0]\n", + "min_v" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And just to check, run `best_height` with the value you found. The result should be 11 meters." + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(11.000000000013193)" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "best_height(min_v, condition)" + ] + }, + { + "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/chap11mine.ipynb b/code/chap11mine.ipynb new file mode 100644 index 00000000..0612c999 --- /dev/null +++ b/code/chap11mine.ipynb @@ -0,0 +1,1963 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 11: Rotation\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": [ + "### Rolling paper\n", + "\n", + "We'll start by loading the units we need." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "radian = UNITS.radian\n", + "m = UNITS.meter\n", + "s = UNITS.second" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And creating a `Condition` object with the system parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(Rmin = 0.02 * m,\n", + " Rmax = 0.055 * m,\n", + " L = 47 * m,\n", + " duration = 130 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function estimates the parameter `k`, which is the increase in the radius of the roll for each radian of rotation. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def estimate_k(condition):\n", + " \"\"\"Estimates the parameter `k`.\n", + " \n", + " condition: Condition with Rmin, Rmax, and L\n", + " \n", + " returns: k in meters per radian\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " Ravg = (Rmax + Rmin) / 2\n", + " Cavg = 2 * pi * Ravg\n", + " revs = L / Cavg\n", + " rads = 2 * pi * revs\n", + " k = (Rmax - Rmin) / rads\n", + " return k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As usual, `make_system` takes a `Condition` object and returns a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition with Rmin, Rmax, and L\n", + " \n", + " returns: System with init, k, and ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(theta = 0 * radian,\n", + " y = 0 * m,\n", + " r = Rmin)\n", + " \n", + " k = estimate_k(condition)\n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, k=k, ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `make_system`" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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
inittheta 0 radian\n", + "y 0 meter\n", + "r ...
k2.7925531914893616e-05 meter
ts[0.0 second, 1.3 second, 2.6 second, 3.9000000...
\n", + "
" + ], + "text/plain": [ + "init theta 0 radian\n", + "y 0 meter\n", + "r ...\n", + "k 2.7925531914893616e-05 meter\n", + "ts [0.0 second, 1.3 second, 2.6 second, 3.9000000...\n", + "dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "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", + "
value
theta0 radian
y0 meter
r0.02 meter
\n", + "
" + ], + "text/plain": [ + "theta 0 radian\n", + "y 0 meter\n", + "r 0.02 meter\n", + "dtype: object" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can write a slope function based on the differential equations\n", + "\n", + "$\\omega = \\frac{d\\theta}{dt} = 10$\n", + "\n", + "$\\frac{dy}{dt} = r \\frac{d\\theta}{dt}$\n", + "\n", + "$\\frac{dr}{dt} = k \\frac{d\\theta}{dt}$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes the derivatives of the state variables.\n", + " \n", + " state: State object with theta, y, r\n", + " t: time\n", + " system: System object with r, k\n", + " \n", + " returns: sequence of derivatives\n", + " \"\"\"\n", + " theta, y, r = state\n", + " unpack(system)\n", + " \n", + " omega = 10 * radian / s\n", + " dydt = r * omega\n", + " drdt = k * omega\n", + " \n", + " return omega, dydt, drdt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `slope_func`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " )" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0*s, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And look at the results." + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
thetayr
124.81248.046.7070640.054851
126.11261.047.4224870.055214
127.41274.048.1426300.055577
128.71287.048.8674930.055940
130.01300.049.5970740.056303
\n", + "
" + ], + "text/plain": [ + " theta y r\n", + "124.8 1248.0 46.707064 0.054851\n", + "126.1 1261.0 47.422487 0.055214\n", + "127.4 1274.0 48.142630 0.055577\n", + "128.7 1287.0 48.867493 0.055940\n", + "130.0 1300.0 49.597074 0.056303" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extracting one time series per variable (and converting `r` to radians):" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "thetas = system.results.theta\n", + "ys = system.results.y\n", + "rs = system.results.r * 1000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `theta`" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(thetas, label='theta')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angle (rad)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `y`" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nA6ef1MpfzGxDAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Length (m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `r`" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(rs, color='red', label='r')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Radius (mm)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also see the relationship between `y` and `r`, which I derive analytically in the book." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(rs, ys, color='purple')\n", + "\n", + "decorate(xlabel='Radius (mm)',\n", + " ylabel='Length (m)',\n", + " legend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the figure from the book." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap11-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nBSA3N5e5c+dSVlbGQw89RHZ2Nk6n06eyqKurY8SIEWzZsoXdu3eTmprK8uXLcblcPpXDrXpbd2tr\nKwEBAbp+s9mMyWTy2mwuXbrE0qVLGTFiBEuWLAE8LwePeljTYBgyZAjd3d10dXVx773/xNXR0UFg\nYOAgzmxgVFRU4HA4yMjIYNWqVQAEBATQ2dmpG+eNeVRWVnL69GkOHjx4235fyQHQCuQXXniBmTNn\nAjBx4kROnjzJ7t27fSaL+vp6HA4Hu3btIi4uDoDi4mIyMjLYvn27z+TQU2/rHjJkCB0dHbr+zs5O\nlFJYLJYBm+dAqa+vZ9GiRbS1tbFjxw6GDRsGeF4OUiD0YvTo0cCNp13dfA/Q0tJi2KXmbT766CNK\nSkrIysoiPz9fOw9h9OjRtLS06MZ6Yx4VFRU0NzeTmpoKgPr7sSWLFy/mqaee8pkc4J/doOPHj9fa\nTCYTDz74IA0NDT6TxalTp7h+/ToxMTFam9lsJioqirq6Op/Joafe1h0eHm647PHmeG/L5ueff2bx\n4sUEBwezZ88e3e+Gp+Ughxh6ERkZSVBQECdOnNDaGhoauHjxIomJiYM4s/71ySefUFJSwvLly3E4\nHFpxAJCQkEBNTY1u/PHjx3nkkUcGepr96r333uPQoUPs37+f/fv3U1ZWBsBbb73FihUrfCYHgOjo\naCwWCz/99JPWppTC6XQyduxYn8kiPDwcgDNnzmhtN3N44IEHfCaHnnpbd0JCAvX19brj7MePHyco\nKIjIyMgBnWt/cjqdLFy4kDFjxrBr1y5dcQAemMOgXkPhIdatW6eSk5PV119/rd0HoeclPd7kl19+\nUVFRUWr16tWqpaVF97p27Zr69ddfVXR0tNqwYYM6e/asKikpUVarVXdZpDdqamrSXeboazmsX79e\nJSYmqi+//FKdP39evf3228pqtSqn0+kzWXR1dal58+apJ598UtXU1KizZ88qh8Oh4uLiVENDg8/k\nkJWVpbu8r7d1d3d3q3nz5qlnnnlGnTp1Srv+f+PGjYO1hD7RM4c5c+ao1NRUde7cOd3fTbfbrZTy\nvBykQLgLnZ2d6t1331WTJ09W8fHxasWKFdp/uDcqLi5W48ePv+3rww8/VEopdfToUZWRkaFiYmLU\nrFmz1LfffjvIs+5/PQsEpXwrh+7ubvXxxx8rm82mYmJi1Ny5c1VNTY3W7ytZuN1ulZeXp6ZNm6YS\nEhJUdna2On36tNbvCzn0/GFUqvd1t7S0qBdffFE9/PDDKjk5WRUXF6vr168P5LT73K05nDt37o5/\nN6dPn65t40k5mJT6+8CqEEIIIcTf5BwEIYQQQhhIgSCEEEIIAykQhBBCCGEgBYIQQgghDKRAEEII\nIYSBFAhCCCGEMJBbLQshDHJzc6msrPzXMTcf7+vn58f27dsHYFY3OBwOwsPDeemll3odW1dXx8KF\nC6msrGT48OEDMDshvIfcB0EIYfDbb79x6dIl7fObb76Jn58f+fn5WtvQoUOBG89kiIiIGJB5ffPN\nNzgcDr744gvDU/HupLCwELfbTVFRUT/PTgjvInsQhBAG48aNY9y4cdrnoUOH4ufnpz3BcDAopVi7\ndi05OTl3XRwALFq0CJvNRnZ2NtHR0f04QyG8i5yDIIT4vz333HPk5ORonydMmMBnn33Ga6+9xqRJ\nk0hKSqK0tJSrV6+yevVqEhISSElJYd26ddy68/Ly5cvk5+czdepUYmNjefbZZzl58qTuu6qrq3E6\nnWRkZGhtbW1trFmzhrS0NGJiYpgxYwZbt27VbRcaGkpSUhKbN2/unxCE8FJSIAgh+lRhYSEhISFs\n2rSJ9PR0PvjgAzIzMwkMDKS0tJTHH3+csrIyvvrqKwDa29vJycmhurqalStXsnHjRoKDg8nJyeHH\nH3/U/t2qqiri4+MJCwvT2t555x2OHTtGbm4uW7du5bHHHqOoqMhw/oTdbufIkSP89ddfAxOCEF5A\nDjEIIfpUdHQ0eXl5wI3HpVdUVBAaGsrrr78OQFJSElVVVfzwww/Y7XYOHDjAmTNn2Lt3L1arFYC0\ntDQyMzNZv34927ZtA+D7779n9uzZuu86ceIEKSkp2l6FKVOmYLFYCAkJ0Y2zWq10dnZSW1tLampq\nv65fCG8hBYIQok/FxsZq70NCQvDz89O1mUwmgoODuXLlCgDfffcdo0aNIioqiq6uLm1ceno6mzdv\npqOjg66uLtxuN/fff7/uu6ZMmcKePXtwuVzYbDZsNtttr24YM2YMABcvXuzTtQrhzaRAEEL0qaCg\nIEObxWK54/g//vgDl8t1xxMIL1++rL0PDAzU9eXl5REeHs7BgwcpKCigoKCASZMmsWbNGiIjIw3b\n/fnnn/9pLUL4MikQhBCDatiwYURERFBYWHjb/lsPF9zc63CTv78/y5YtY9myZTQ2NnL06FE2bdrE\nqlWrqKqqMmzX89CDEOLO5CRFIcSgSkxMpLGxkZEjR2K1WrXX4cOH+fTTTzGbzfj7+xMWFkZzc7O2\nXXt7O3a7nfLycgDuu+8+5s+fzxNPPEFTU5PuO1wulzZGCHF3ZA+CEGJQPf300+zYsYMFCxawdOlS\nRo0aRXV1Ndu2bePll1/GZDIBkJKSorv0MSAggNjYWEpLSzGbzUyYMIHz589TWVmJ3W7XfUdtbS0W\ni4X4+PgBXZsQnkwKBCHEoAoKCmLnzp0UFxezdu1arl27xtixY3E4HGRlZWnj7HY7r7zyCm63m9DQ\nUODGHR5DQkIoLy/n999/JzQ0lMzMTF599VXddxw7dgybzfafbrAkhK+TWy0LITyCUopZs2Yxc+ZM\nlixZctfbNTY2Mn36dPbt28fEiRP7cYZCeBc5B0EI4RFMJhMrV65k586dtLa23vV25eXlzJgxQ4oD\nIf4jKRCEEB4jPT2dlJQUw+2U7+TChQscOXJEu0mTEOLuySEGIYQQQhjIHgQhhBBCGEiBIIQQQggD\nKRCEEEIIYSAFghBCCCEMpEAQQgghhIEUCEIIIYQw+B/PcvlKSWMYEgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subplot(3, 1, 1)\n", + "plot(thetas, label='theta')\n", + "decorate(ylabel='Angle (rad)')\n", + "\n", + "subplot(3, 1, 2)\n", + "plot(ys, color='green', label='y')\n", + "decorate(ylabel='Length (m)')\n", + "\n", + "subplot(3, 1, 3)\n", + "plot(rs, color='red', label='r')\n", + "\n", + "decorate(xlabel='Time(s)',\n", + " ylabel='Radius (mm)')\n", + "\n", + "savefig('chap11-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use interpolation to find the time when `y` is 47 meters." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(125.33333334940457)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "T = interp_inverse(ys, kind='cubic')\n", + "t_end = T(47)\n", + "t_end" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At that point `r` is 55 mm, which is `Rmax`, as expected." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(55.00000000448797)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "R = interpolate(rs, kind='cubic')\n", + "R(t_end)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The total amount of rotation is 1253 rad." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(1253.3333334940455)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "THETA = interpolate(thetas, kind='cubic')\n", + "THETA(t_end)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unrolling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For unrolling the paper, we need more units:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "kg = UNITS.kilogram\n", + "N = UNITS.newton" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And a few more parameters in the `Condition` object." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(Rmin = 0.02 * m,\n", + " Rmax = 0.055 * m,\n", + " Mcore = 15e-3 * kg,\n", + " Mroll = 215e-3 * kg,\n", + " L = 47 * m,\n", + " tension = 2e-4 * N,\n", + " duration = 180 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`make_system` computes `rho_h`, which we'll need to compute moment of inertia, and `k`, which we'll use to compute `r`." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition with Rmin, Rmax, Mcore, Mroll,\n", + " L, tension, and duration\n", + " \n", + " returns: System with init, k, rho_h, Rmin, Rmax,\n", + " Mcore, Mroll, ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(theta = 0 * radian,\n", + " omega = 0 * radian/s,\n", + " y = L)\n", + " \n", + " area = pi * (Rmax**2 - Rmin**2)\n", + " rho_h = Mroll / area\n", + " k = (Rmax**2 - Rmin**2) / 2 / L / radian \n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, k=k, rho_h=rho_h,\n", + " Rmin=Rmin, Rmax=Rmax,\n", + " Mcore=Mcore, Mroll=Mroll, \n", + " ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `make_system`" + ] + }, + { + "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", + "
value
inittheta 0 radian\n", + "omega 0.0 radi...
k2.7925531914893616e-05 meter / radian
rho_h26.07109543981524 kilogram / meter ** 2
Rmin0.02 meter
Rmax0.055 meter
Mcore0.015 kilogram
Mroll0.215 kilogram
ts[0.0 second, 1.8 second, 3.6 second, 5.4 secon...
\n", + "
" + ], + "text/plain": [ + "init theta 0 radian\n", + "omega 0.0 radi...\n", + "k 2.7925531914893616e-05 meter / radian\n", + "rho_h 26.07109543981524 kilogram / meter ** 2\n", + "Rmin 0.02 meter\n", + "Rmax 0.055 meter\n", + "Mcore 0.015 kilogram\n", + "Mroll 0.215 kilogram\n", + "ts [0.0 second, 1.8 second, 3.6 second, 5.4 secon...\n", + "dtype: object" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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
theta0 radian
omega0.0 radian / second
y47 meter
\n", + "
" + ], + "text/plain": [ + "theta 0 radian\n", + "omega 0.0 radian / second\n", + "y 47 meter\n", + "dtype: object" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we compute `I` as a function of `r`:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def moment_of_inertia(r, system):\n", + " \"\"\"Moment of inertia for a roll of toilet paper.\n", + " \n", + " r: current radius of roll in meters\n", + " system: System object with Mcore, rho, Rmin, Rmax\n", + " \n", + " returns: moment of inertia in kg m**2\n", + " \"\"\"\n", + " unpack(system)\n", + " Icore = Mcore * Rmin**2 \n", + " Iroll = pi * rho_h / 2 * (r**4 - Rmin**4)\n", + " return Icore + Iroll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When `r` is `Rmin`, `I` is small." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "6e-06 kilogram meter2" + ], + "text/latex": [ + "$6e-06 kilogram \\cdot meter^{2}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "moment_of_inertia(system.Rmin, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As `r` increases, so does `I`." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.00037418750000000006 kilogram meter2" + ], + "text/latex": [ + "$0.00037418750000000006 kilogram \\cdot meter^{2}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "moment_of_inertia(system.Rmax, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the slope function." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes the derivatives of the state variables.\n", + " \n", + " state: State object with theta, omega, y\n", + " t: time\n", + " system: System object with Rmin, k, Mcore, rho_h, tension\n", + " \n", + " returns: sequence of derivatives\n", + " \"\"\"\n", + " theta, omega, y = state\n", + " unpack(system)\n", + " \n", + " r = sqrt(2*k*y + Rmin**2)\n", + " I = moment_of_inertia(r, system)\n", + " tau = r * tension\n", + " alpha = tau / I\n", + " dydt = -r * omega\n", + " \n", + " return omega, alpha, dydt " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `slope_func`" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " )" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0*s, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And look at the results." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "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", + "
thetaomegay
172.8503.3769986.83022222.852269
174.6515.7882196.96058022.346268
176.4528.4371507.09437621.835001
178.2541.3301517.23180221.318468
180.0554.4739407.37306620.796665
\n", + "
" + ], + "text/plain": [ + " theta omega y\n", + "172.8 503.376998 6.830222 22.852269\n", + "174.6 515.788219 6.960580 22.346268\n", + "176.4 528.437150 7.094376 21.835001\n", + "178.2 541.330151 7.231802 21.318468\n", + "180.0 554.473940 7.373066 20.796665" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extrating the time series" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "thetas = system.results.theta\n", + "omegas = system.results.omega\n", + "ys = system.results.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `theta`" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nUF2tUFWtoKuqRqur1v+p1VVTqa2iUlvzZ4WuioqKKjSVOjSVNX+WV+go1+jq3Iq1scxNTXC0t8TR\n3hIneyucHGqSRhc7S8xkuXMhRCtrdwnkzJkzlJaWEhkZqS/z9vbGy8uLpKSkRiWQnIIyfjp6leKy\nmj4ERYFqRdH/eTNxKE14Kmgqa0szHGwt9D9d7CxrfmwtsJUnCiFEG9LuEkhWVhYA7u7uBuVqtVpf\n11DHU3PJzC9tttjuxNREhY2VOTZWZthYmmFrbY6djQW2VubY2dT82NtYyJOEEKLdaHcJpLy8HBMT\nE8zNDUcOWVhYUFFR0ajX6tG1C+evFqHV3bl5yUSlwtREhZmZCeZmJpiZ1vxpbmaKuZkJluYmWJib\nYmluiqWFKVYWZvo/rS3NsLYyw8LMRJ4ehBAdSrtLIFZWVlRXV6PT6TAzuxV+ZWUl1tbWjXotf29H\nfD3sb82XUKkwUdUkDJWJSp84ZG0nIYSord0lEE9PTwByc3P1/w2Qk5NTq1mrIWqeImTFWCGEaKx2\nl0CCgoKwtbXl0KFDREdHA3DlyhWuXr3KwIED67ymqqrmCaOxfSRCCNGZ3fzMvPkZ+nvtLoFYWFjw\n5JNP8te//hUnJydcXFz4y1/+QmRkJKGhoXVek5ubC8DUqVNbM1QhhOgQcnNz6datW61yldKaY1Sb\niU6n45133iEhIQGdTqefie7s7Fzn+RqNhpSUFNzc3DA1leYqIYRoiKqqKnJzc+nXrx9WVla16ttl\nAhFCCGF8MulACCFEk0gCEUII0SSSQIQQQjSJJBAhhBBNIglECCFEk3TaBFJVVcW7775LVFQUYWFh\nvPDCC+Tl5Rk7rHYtLS2NwMDAWj9JSUkA7N+/n+joaIKDg5k4cSKJiYlGjrj9WbJkCQsXLjQou9t9\nzc/PZ86cOURERDBkyBDi4uLQ6Rq3OVlnUtc9fuyxx2r9vb79nE57j5VOauXKlcrQoUOV/fv3Kykp\nKcqUKVOU//7v/zZ2WO3a9u3blUGDBik5OTkGP5WVlUpqaqrSr18/5YMPPlDS0tKUlStXKn379lXO\nnTtn7LDbherqauX9999XevXqpbz++uv68obc1yeeeEJ58sknldOnTyt79+5VBg8erLz33nvGeBtt\nWn33uLq6WgkJCVG+/fZbg7/XxcXF+nM66z3ulAmkoqJCCQsLU7766it9WUZGhtKrVy8lOTnZiJG1\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(thetas, label='theta')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angle (rad)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `omega`" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nGHt7e5KTk/Hw8CAwMLBIH/b555+TkZF3g0hCQgKDBg3i448/pmXLlkV6LyHEQ8pKgr9XQdJR03Gv\nluqdunK1bxM0h//mzZuZNWsW169fN455eXnx1ltvGbt/Psi9SzvLlStnHPf0lL08hTCrOxutXFwH\nuel5404e8NgQqFjfcrWJEqcp/Hft2sWECRNo06YNYWFheHl5ER8fz7Zt23j//fepUKGCbOEoRGmW\ncVXdaCX5jOm4d1uo2kdW8tggTeEfHh5Oz549+eyzz0zGe/fuzfjx4/n6668fKvx9fX05c+bMg58o\nhHg4igHifoTYLaDc1aCxXGW19XKFWparTViUppu8zp49S1hYWIHHwsLCiIqKKvCYEMKCUmPgxKdw\ncf1dwa8D307qfroS/DZN05V/5cqVuXr1aoHH4uLicHZ2LtaihBCPIDcTLm1Vr/hR8sadA6D6ULUT\np7B5msK/Xbt2zJ07lzp16lC/ft6XQsePH2fevHm0b9/ebAUKIYog6QT8vRKy8hZmoHME/zDwfUYa\nsQkjTeE/evRofvvtN/r160e1atWoXLkyCQkJxMTE8NhjjzFu3Dhz1ymEuJ/sW2qv/XtbM7jVhqDB\noPe2TF2i1NIU/u7u7mzYsIH169dz6NAhbt68Sd26dRk6dCh9+vSRaR8hLEVRIOEXuLgBctPyxu1d\n1DX7Xi1kdy1RIM3r/PV6PYMGDWLQoEHmrEcIoVXaJXWKJ+WerrqeT6qtGRzdLFOXsAqFhv/kyZM1\nv4lOp5PWDEKUlNxMuPR/t7/QNeSNl6ustmZwr2ux0oT1KDT89+/fr/lNdPJnpRAl48ZRtR9PVmLe\nmM4e/DpDlW5g52i52oRVKTT89+zZU5J1CCHuJ/O6Gvp3b6cI4BasXu07+1mmLmG1itTYLTMzk8jI\nSK5evUqrVq1IT0/H11c2bxbCbAw5ELcLLm0zvUPXwRWq9gOv5vKFrngomsN/5cqVfPnll9y6dQud\nTse6dev48ssvycrKYtGiRZQvL50AhShWN0/BhdWQEW86Xrk1VH0WHFwsU5coEzS1d1i3bh0ff/wx\nzz77LMuXLzf24e/Xrx/Hjh1j/vz5Zi1SCJuSdQPOLoYzc02D3zkA6k1Q1+1L8ItHpOnKf+nSpYwY\nMYLx48eTm5trHO/UqRPx8fEsW7aMCRMmmK1IIWyCIQfidsPlbWDIzBu300NAL/BpBzpN12tCPJCm\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(omegas, color='orange', label='omega')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angular velocity (rad/s)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `y`" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Length (m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the figure from the book." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap11-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subplot(3, 1, 1)\n", + "plot(thetas, label='theta')\n", + "decorate(ylabel='Angle (rad)')\n", + "\n", + "subplot(3, 1, 2)\n", + "plot(omegas, color='orange', label='omega')\n", + "decorate(ylabel='Angular velocity (rad/s)')\n", + "\n", + "subplot(3, 1, 3)\n", + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time(s)',\n", + " ylabel='Length (m)')\n", + "\n", + "savefig('chap11-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Yo-yo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Simulate the descent of a yo-yo. How long does it take to reach the end of the string.\n", + "\n", + "I provide a `Condition` object with the system parameters:\n", + "\n", + "* `Rmin` is the radius of the axle. `Rmax` is the radius of the axle plus rolled string.\n", + "\n", + "* `Rout` is the radius of the yo-yo body. `mass` is the total mass of the yo-yo, ignoring the string. \n", + "\n", + "* `L` is the length of the string.\n", + "\n", + "* `g` is the acceleration of gravity." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(Rmin = 8e-3 * m,\n", + " Rmax = 16e-3 * m,\n", + " Rout = 35e-3 * m,\n", + " mass = 50e-3 * kg,\n", + " L = 1 * m,\n", + " g = 9.8 * m / s**2,\n", + " duration = 1 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a `make_system` function that computes `I` and `k` based on the system parameters.\n", + "\n", + "I estimated `I` by modeling the yo-yo as a solid cylinder with uniform density ([see here](https://en.wikipedia.org/wiki/List_of_moments_of_inertia)). In reality, the distribution of weight in a yo-yo is often designed to achieve desired effects. But we'll keep it simple." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition with Rmin, Rmax, Rout, \n", + " mass, L, g, duration\n", + " \n", + " returns: System with init, k, Rmin, Rmax, mass,\n", + " I, g, ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(theta = 0 * radian,\n", + " omega = 0 * radian/s,\n", + " y = L,\n", + " v = 0 * m / s)\n", + " \n", + " I = mass * Rout**2 / 2\n", + " k = (Rmax**2 - Rmin**2) / 2 / L / radian \n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, k=k,\n", + " Rmin=Rmin, Rmax=Rmax,\n", + " mass=mass, I=I, g=g,\n", + " ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `make_system`" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "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", + "
value
inittheta 0 radian\n", + "omega 0.0 radi...
k9.6e-05 meter / radian
Rmin0.008 meter
Rmax0.016 meter
mass0.05 kilogram
I3.0625000000000006e-05 kilogram * meter ** 2
g9.8 meter / second ** 2
ts[0.0 second, 0.01 second, 0.02 second, 0.03 se...
\n", + "
" + ], + "text/plain": [ + "init theta 0 radian\n", + "omega 0.0 radi...\n", + "k 9.6e-05 meter / radian\n", + "Rmin 0.008 meter\n", + "Rmax 0.016 meter\n", + "mass 0.05 kilogram\n", + "I 3.0625000000000006e-05 kilogram * meter ** 2\n", + "g 9.8 meter / second ** 2\n", + "ts [0.0 second, 0.01 second, 0.02 second, 0.03 se...\n", + "dtype: object" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "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
theta0 radian
omega0.0 radian / second
y1 meter
v0.0 meter / second
\n", + "
" + ], + "text/plain": [ + "theta 0 radian\n", + "omega 0.0 radian / second\n", + "y 1 meter\n", + "v 0.0 meter / second\n", + "dtype: object" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Write a slope function for this system, using these results from the book:\n", + "\n", + "$ r = \\sqrt{2 k y + R_{min}^2} $ \n", + "\n", + "$ T = m g I / I^* $\n", + "\n", + "$ a = -m g r^2 / I^* $\n", + "\n", + "$ \\alpha = m g r / I^* $\n", + "\n", + "where $I^*$ is the augmented moment of inertia, $I + m r^2$.\n", + "\n", + "Hint: If `y` is less than 0, it means you have reached the end of the string, so the equation for `r` is no longer valid. In this case, the simplest thing to do it return the sequence of derivatives `0, 0, 0, 0`" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " theta, omega, y, v = state\n", + " if y < 0 * m:\n", + " return 0, 0, 0, 0\n", + " else:\n", + " unpack(system)\n", + "\n", + " r = sqrt(2*k*y + Rmin**2)\n", + " I_aug = I + mass*r**2\n", + "\n", + " a = (-mass*g*r**2)/I_aug\n", + " alpha = (mass*g*r)/I_aug\n", + "\n", + " return omega, alpha, v, a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test your slope function with the initial conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " ,\n", + " )" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0*s, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": true, + "scrolled": false + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Check the final conditions. If things have gone according to plan, the final value of `y` should be close to 0." + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
thetaomegayv
0.9667.11465144.630635-1.582474e-08-1.994692
0.9767.11465144.630635-1.582474e-08-1.994692
0.9867.11465144.630635-1.582474e-08-1.994692
0.9967.11465144.630635-1.582474e-08-1.994692
1.0067.11465144.630635-1.582474e-08-1.994692
\n", + "
" + ], + "text/plain": [ + " theta omega y v\n", + "0.96 67.11465 144.630635 -1.582474e-08 -1.994692\n", + "0.97 67.11465 144.630635 -1.582474e-08 -1.994692\n", + "0.98 67.11465 144.630635 -1.582474e-08 -1.994692\n", + "0.99 67.11465 144.630635 -1.582474e-08 -1.994692\n", + "1.00 67.11465 144.630635 -1.582474e-08 -1.994692" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "thetas = system.results.theta\n", + "ys = system.results.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`theta` should increase and accelerate." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n/h8lpoQYSMHCWQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(thetas, label='theta')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angle (rad)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`y` should decrease and accelerate down." + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Length (m)')" + ] + }, + { + "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 +}