diff --git a/code/chap02-fig01.pdf b/code/chap02-fig01.pdf
new file mode 100644
index 00000000..09469263
Binary files /dev/null and b/code/chap02-fig01.pdf differ
diff --git a/code/chap02-fig02.pdf b/code/chap02-fig02.pdf
new file mode 100644
index 00000000..eaafa082
Binary files /dev/null and b/code/chap02-fig02.pdf differ
diff --git a/code/chap05mine.ipynb b/code/chap05mine.ipynb
new file mode 100644
index 00000000..19e03b46
--- /dev/null
+++ b/code/chap05mine.ipynb
@@ -0,0 +1,1814 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Modeling and Simulation in Python\n",
+ "\n",
+ "Chapter 5\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": {},
+ "outputs": [],
+ "source": [
+ "# Configure Jupyter so figures appear in the notebook\n",
+ "%matplotlib inline\n",
+ "\n",
+ "# Configure Jupyter to display the assigned value after an assignment\n",
+ "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
+ "\n",
+ "# import functions from the modsim.py module\n",
+ "from modsim import *"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Reading data\n",
+ "\n",
+ "Pandas is a library that provides tools for reading and processing data. `read_html` reads a web page from a file or the Internet and creates one `DataFrame` for each table on the page."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "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\n",
+ "\n",
+ "The arguments of `read_html` specify the file to read and how to interpret the tables in the file. The result, `tables`, is a sequence of `DataFrame` objects; `len(tables)` reports the length of the sequence."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "6"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "filename = 'data/World_population_estimates.html'\n",
+ "tables = read_html(filename, header=0, index_col=0, decimal='M')\n",
+ "len(tables)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can select the `DataFrame` we want using the bracket operator. The tables are numbered from 0, so `tables[2]` is actually the third table on the page.\n",
+ "\n",
+ "`head` selects the header and the first five rows."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " United States Census Bureau (2017)[28] \n",
+ " Population Reference Bureau (1973–2016)[15] \n",
+ " United Nations Department of Economic and Social Affairs (2015)[16] \n",
+ " Maddison (2008)[17] \n",
+ " HYDE (2007)[24] \n",
+ " Tanton (1994)[18] \n",
+ " Biraben (1980)[19] \n",
+ " McEvedy & Jones (1978)[20] \n",
+ " Thomlinson (1975)[21] \n",
+ " Durand (1974)[22] \n",
+ " Clark (1967)[23] \n",
+ " \n",
+ " \n",
+ " Year \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1950 \n",
+ " 2557628654 \n",
+ " 2.516000e+09 \n",
+ " 2.525149e+09 \n",
+ " 2.544000e+09 \n",
+ " 2.527960e+09 \n",
+ " 2.400000e+09 \n",
+ " 2.527000e+09 \n",
+ " 2.500000e+09 \n",
+ " 2.400000e+09 \n",
+ " NaN \n",
+ " 2.486000e+09 \n",
+ " \n",
+ " \n",
+ " 1951 \n",
+ " 2594939877 \n",
+ " NaN \n",
+ " 2.572851e+09 \n",
+ " 2.571663e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1952 \n",
+ " 2636772306 \n",
+ " NaN \n",
+ " 2.619292e+09 \n",
+ " 2.617949e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1953 \n",
+ " 2682053389 \n",
+ " NaN \n",
+ " 2.665865e+09 \n",
+ " 2.665959e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1954 \n",
+ " 2730228104 \n",
+ " NaN \n",
+ " 2.713172e+09 \n",
+ " 2.716927e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " United States Census Bureau (2017)[28] \\\n",
+ "Year \n",
+ "1950 2557628654 \n",
+ "1951 2594939877 \n",
+ "1952 2636772306 \n",
+ "1953 2682053389 \n",
+ "1954 2730228104 \n",
+ "\n",
+ " Population Reference Bureau (1973–2016)[15] \\\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)[16] \\\n",
+ "Year \n",
+ "1950 2.525149e+09 \n",
+ "1951 2.572851e+09 \n",
+ "1952 2.619292e+09 \n",
+ "1953 2.665865e+09 \n",
+ "1954 2.713172e+09 \n",
+ "\n",
+ " Maddison (2008)[17] HYDE (2007)[24] Tanton (1994)[18] \\\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)[19] McEvedy & Jones (1978)[20] Thomlinson (1975)[21] \\\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)[22] Clark (1967)[23] \n",
+ "Year \n",
+ "1950 NaN 2.486000e+09 \n",
+ "1951 NaN NaN \n",
+ "1952 NaN NaN \n",
+ "1953 NaN NaN \n",
+ "1954 NaN NaN "
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "table2 = tables[2]\n",
+ "table2.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`tail` selects the last five rows."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " United States Census Bureau (2017)[28] \n",
+ " Population Reference Bureau (1973–2016)[15] \n",
+ " United Nations Department of Economic and Social Affairs (2015)[16] \n",
+ " Maddison (2008)[17] \n",
+ " HYDE (2007)[24] \n",
+ " Tanton (1994)[18] \n",
+ " Biraben (1980)[19] \n",
+ " McEvedy & Jones (1978)[20] \n",
+ " Thomlinson (1975)[21] \n",
+ " Durand (1974)[22] \n",
+ " Clark (1967)[23] \n",
+ " \n",
+ " \n",
+ " Year \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2012 \n",
+ " 7013871313 \n",
+ " 7.057075e+09 \n",
+ " 7.080072e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2013 \n",
+ " 7092128094 \n",
+ " 7.136796e+09 \n",
+ " 7.162119e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2014 \n",
+ " 7169968185 \n",
+ " 7.238184e+09 \n",
+ " 7.243784e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2015 \n",
+ " 7247892788 \n",
+ " 7.336435e+09 \n",
+ " 7.349472e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2016 \n",
+ " 7325996709 \n",
+ " 7.418152e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " United States Census Bureau (2017)[28] \\\n",
+ "Year \n",
+ "2012 7013871313 \n",
+ "2013 7092128094 \n",
+ "2014 7169968185 \n",
+ "2015 7247892788 \n",
+ "2016 7325996709 \n",
+ "\n",
+ " Population Reference Bureau (1973–2016)[15] \\\n",
+ "Year \n",
+ "2012 7.057075e+09 \n",
+ "2013 7.136796e+09 \n",
+ "2014 7.238184e+09 \n",
+ "2015 7.336435e+09 \n",
+ "2016 7.418152e+09 \n",
+ "\n",
+ " United Nations Department of Economic and Social Affairs (2015)[16] \\\n",
+ "Year \n",
+ "2012 7.080072e+09 \n",
+ "2013 7.162119e+09 \n",
+ "2014 7.243784e+09 \n",
+ "2015 7.349472e+09 \n",
+ "2016 NaN \n",
+ "\n",
+ " Maddison (2008)[17] HYDE (2007)[24] Tanton (1994)[18] \\\n",
+ "Year \n",
+ "2012 NaN NaN NaN \n",
+ "2013 NaN NaN NaN \n",
+ "2014 NaN NaN NaN \n",
+ "2015 NaN NaN NaN \n",
+ "2016 NaN NaN NaN \n",
+ "\n",
+ " Biraben (1980)[19] McEvedy & Jones (1978)[20] Thomlinson (1975)[21] \\\n",
+ "Year \n",
+ "2012 NaN NaN NaN \n",
+ "2013 NaN NaN NaN \n",
+ "2014 NaN NaN NaN \n",
+ "2015 NaN NaN NaN \n",
+ "2016 NaN NaN NaN \n",
+ "\n",
+ " Durand (1974)[22] Clark (1967)[23] \n",
+ "Year \n",
+ "2012 NaN NaN \n",
+ "2013 NaN NaN \n",
+ "2014 NaN NaN \n",
+ "2015 NaN NaN \n",
+ "2016 NaN NaN "
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "table2.tail()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Long column names are awkard to work with, but we can replace them with abbreviated names."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "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. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " census \n",
+ " prb \n",
+ " un \n",
+ " maddison \n",
+ " hyde \n",
+ " tanton \n",
+ " biraben \n",
+ " mj \n",
+ " thomlinson \n",
+ " durand \n",
+ " clark \n",
+ " \n",
+ " \n",
+ " Year \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1950 \n",
+ " 2557628654 \n",
+ " 2.516000e+09 \n",
+ " 2.525149e+09 \n",
+ " 2.544000e+09 \n",
+ " 2.527960e+09 \n",
+ " 2.400000e+09 \n",
+ " 2.527000e+09 \n",
+ " 2.500000e+09 \n",
+ " 2.400000e+09 \n",
+ " NaN \n",
+ " 2.486000e+09 \n",
+ " \n",
+ " \n",
+ " 1951 \n",
+ " 2594939877 \n",
+ " NaN \n",
+ " 2.572851e+09 \n",
+ " 2.571663e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1952 \n",
+ " 2636772306 \n",
+ " NaN \n",
+ " 2.619292e+09 \n",
+ " 2.617949e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1953 \n",
+ " 2682053389 \n",
+ " NaN \n",
+ " 2.665865e+09 \n",
+ " 2.665959e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1954 \n",
+ " 2730228104 \n",
+ " NaN \n",
+ " 2.713172e+09 \n",
+ " 2.716927e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " census prb un maddison hyde \\\n",
+ "Year \n",
+ "1950 2557628654 2.516000e+09 2.525149e+09 2.544000e+09 2.527960e+09 \n",
+ "1951 2594939877 NaN 2.572851e+09 2.571663e+09 NaN \n",
+ "1952 2636772306 NaN 2.619292e+09 2.617949e+09 NaN \n",
+ "1953 2682053389 NaN 2.665865e+09 2.665959e+09 NaN \n",
+ "1954 2730228104 NaN 2.713172e+09 2.716927e+09 NaN \n",
+ "\n",
+ " tanton biraben mj thomlinson durand \\\n",
+ "Year \n",
+ "1950 2.400000e+09 2.527000e+09 2.500000e+09 2.400000e+09 NaN \n",
+ "1951 NaN NaN NaN NaN NaN \n",
+ "1952 NaN NaN NaN NaN NaN \n",
+ "1953 NaN NaN NaN NaN NaN \n",
+ "1954 NaN NaN NaN NaN NaN \n",
+ "\n",
+ " clark \n",
+ "Year \n",
+ "1950 2.486000e+09 \n",
+ "1951 NaN \n",
+ "1952 NaN \n",
+ "1953 NaN \n",
+ "1954 NaN "
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "table2.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The first column, which is labeled `Year`, is special. It is the **index** for this `DataFrame`, which means it contains the labels for the rows.\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": "markdown",
+ "metadata": {},
+ "source": [
+ "### Series\n",
+ "\n",
+ "We can use dot notation to select a column from a `DataFrame`. The result is a `Series`, which is like a `DataFrame` with a single column."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2557628654\n",
+ "1951 2594939877\n",
+ "1952 2636772306\n",
+ "1953 2682053389\n",
+ "1954 2730228104\n",
+ "Name: census, dtype: int64"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census = table2.census\n",
+ "census.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "2012 7013871313\n",
+ "2013 7092128094\n",
+ "2014 7169968185\n",
+ "2015 7247892788\n",
+ "2016 7325996709\n",
+ "Name: census, dtype: int64"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census.tail()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Like a `DataFrame`, a `Series` contains an index, which labels the rows.\n",
+ "\n",
+ "`1e9` is scientific notation for $1 \\cdot 10^9$ or 1 billion."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "From here on, we will work in units of billions."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2.525149\n",
+ "1951 2.572851\n",
+ "1952 2.619292\n",
+ "1953 2.665865\n",
+ "1954 2.713172\n",
+ "Name: un, dtype: float64"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "un = table2.un / 1e9\n",
+ "un.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2.557629\n",
+ "1951 2.594940\n",
+ "1952 2.636772\n",
+ "1953 2.682053\n",
+ "1954 2.730228\n",
+ "Name: census, dtype: float64"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census = table2.census / 1e9\n",
+ "census.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's what these estimates look like."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap03-fig01.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd8XNWZ+P/PFM2oF0uyuiy5HVfZxt24YIMx1QY2hDR2yRIIhPQCfJdssoEUsoFdWH44ZNkkNJMCoTjBITQbG/fefdwky+q9tyn398cdy5KxrZGt0Yyk5/166WXplpnnSJ555px77nMshmEghBBChBprsAMQQgghzkcSlBBCiJAkCUoIIURIkgQlhBAiJNmDHcC5lFJOYCZQCniCHI4QQojAsgFpwHatdXvXHSGXoDCT04ZgByGEEKJfLQA+6bohFBNUKcCqVatITU0NdixCCCECqKysjC9+8Yvge+/vKhQTlAcgNTWVzMzMYMcihBCif3zqko5MkhBCCBGSJEEJIYQISZKghBBChCRJUEIIIUKSJCghhBAhSRKUEEKIkCQJSgghxAUZhoHX8AbluSVBCSGEOC+v4WXDqW2sL9jKuWsHejyBT1qheKOuEEKIIHN5XHx4ciOFdcUARDkimZkxpXN/u8tDmGEQZrcFLAZJUH1IKcXmzZsZNmxY57Z3332XVatW8fLLLwPwxhtv8Morr+B2u/F4PEydOpWHH36YmJiY8z7mm2++yR//+Efa2tpwuVxMnz6dH/zgB8TGxvZLm4QQQ0+rq413j62jsrm6c1tjezOGYWCxWACIDA+jobkjoAlKhvj60b59+3j22Wf53e9+x+rVq1m9ejU2m43/+I//OO/xzz33HK+99hrPPvssb7/9Nm+//TZ2u5377ruvfwMXQgwpFc1VVLbUdP48MXk8UxKndSanM6LC7Xi8xrmn95kB34PadrCMbYfKAJg1IZVZE7sXmP1kbzF7jlYCcGVeOtPU8G771+48zcGT5qeExdOzmDgysdv+2sY2EmLC+yTWyspKDMOgra0NAJvNxre+9S2OHTv2qWNbWlr4zW9+w5tvvklSUhIAYWFhPPjgg7z//vt0dHTgcDj49a9/zXvvvYfX6yUjI4Mf//jHpKSkcOeddzJ16lR27dpFaWkpc+fO5bHHHsPr9fLYY4+xa9cuwsLCyMzM5Be/+AW1tbXcfPPN7N69G4CioqLOnysrK3nooYeora0FYNGiRXz729/uk9+JECL0jIjPZF7WdDad3snoqPEcO+Ag31bA565V2G1n+zU2W2D7OAM+QQ0kCxcuZM2aNSxZsgSlFNOmTWPhwoUsWrToU8eePHmS8PBwcnJyum2PiIhg+fLlALz11lscPXqU1157Dbvdzp/+9Cd++MMf8vzzzwNQWFjIyy+/TEtLC9dffz3btm3Dbrezbds21qxZg8Vi4Ve/+hVaa4YPH35uCJ3+/Oc/k5mZye9+9ztaWlp45JFHaGxsvOCwpBBiYOk6dHfGpBRFYngSf11bQofLBcDWg2VcmZfeb3FJgupD5/6BAbxeL1ar+SkjLCyMJ598kgcffJCtW7eyfft2HnroIebOnctTTz3V7Tyr1YrXe/FZMmvXrmX//v380z/9U+dztba2du5fvHgxVquV6OhoRowYQX19PXPnzsVms3H77bczf/58li1bRl5eHkVFRRd8ngULFnDvvfdSWlrKvHnz+N73vifJSYhBoqK5mk9ObWPJyCuJD+9+bTstLpEr88yRpginneEJEf0a24BPULMmfnpYr6v5UzKYPyXjgvsXT89i8fSsC+7vzfBeQkICdXV13SZJVFdXEx8fD8Drr79OQkICV199NcuXL2f58uXcf//9LFmyhJqamm7njR49GrfbTUFBQbdeVHt7O1//+tf56U9/itfr5Stf+Qpf+MIXAOjo6KC+vr7z2PDws7FbLBYMwyA2Npa3336bXbt2sWXLFr797W9z9913c9VVV3WbRuryfWICyMvL48MPP2Tz5s1s2bKF22+/neeff55Jkyb5/bsRQoQWr9fLrtID7C49gGEYrMvfzE1jr8Fu6z7pYULuMFrb3UwcmUiEs39ThkyS6EMLFy7k5Zdf7uz51NfX8+abb3YO4VmtVp544gnKyso6zzl27Bjp6enExcV1eyyHw8E999zDI488QlVVFWAmoJ///Oe0traSkpLC/Pnzef3112lqagLg6aef5sEHH7xojGvXruWuu+5i2rRpfOMb3+CWW27hwIEDxMbG4nK5OH78OADvvPNO5zlPPPEEK1eu5JprruGRRx5h9OjR571uJoQYGGpb63nryD/YVbIfwzAwgBMV5fz+HztpaXN1O9ZisTBjfEq/JycYBD2oUPLI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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plot(census, ':', label='US Census')\n",
+ "plot(un, '--', label='UN DESA')\n",
+ " \n",
+ "decorate(xlabel='Year',\n",
+ " ylabel='World population (billion)')\n",
+ "savefig('chap03-fig01.pdf')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following expression computes the elementwise differences between the two series, then divides through by the UN value to produce [relative errors](https://en.wikipedia.org/wiki/Approximation_error), then finds the largest element.\n",
+ "\n",
+ "So the largest relative error between the estimates is about 1.3%."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.3821293828998855"
+ ]
+ },
+ "execution_count": 13,
+ "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",
+ "1. Compute the elementwise differences, `census - un`\n",
+ "2. Compute the absolute differences, `abs(census - un)`\n",
+ "3. Compute the relative differences, `abs(census - un) / un`\n",
+ "4. Compute the percent differences, `abs(census - un) / un * 100`\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "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",
+ "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.057599\n",
+ "2011 -0.061999\n",
+ "2012 -0.066201\n",
+ "2013 -0.069991\n",
+ "2014 -0.073816\n",
+ "2015 -0.101579\n",
+ "2016 NaN\n",
+ "Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "diff = census - un"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "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",
+ "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.057599\n",
+ "2011 0.061999\n",
+ "2012 0.066201\n",
+ "2013 0.069991\n",
+ "2014 0.073816\n",
+ "2015 0.101579\n",
+ "2016 NaN\n",
+ "Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "absdiff = abs (census - un)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 0.012862\n",
+ "1951 0.008585\n",
+ "1952 0.006674\n",
+ "1953 0.006072\n",
+ "1954 0.006286\n",
+ "1955 0.007404\n",
+ "1956 0.008439\n",
+ "1957 0.009887\n",
+ "1958 0.011011\n",
+ "1959 0.010208\n",
+ "1960 0.005617\n",
+ "1961 0.000369\n",
+ "1962 0.000311\n",
+ "1963 0.002702\n",
+ "1964 0.005350\n",
+ "1965 0.006399\n",
+ "1966 0.006829\n",
+ "1967 0.006289\n",
+ "1968 0.005827\n",
+ "1969 0.005821\n",
+ "1970 0.005832\n",
+ "1971 0.006258\n",
+ "1972 0.006166\n",
+ "1973 0.005847\n",
+ "1974 0.005332\n",
+ "1975 0.004437\n",
+ "1976 0.003388\n",
+ "1977 0.002670\n",
+ "1978 0.001965\n",
+ "1979 0.001712\n",
+ " ... \n",
+ "1987 0.003591\n",
+ "1988 0.004604\n",
+ "1989 0.005461\n",
+ "1990 0.005988\n",
+ "1991 0.006900\n",
+ "1992 0.007054\n",
+ "1993 0.007277\n",
+ "1994 0.007490\n",
+ "1995 0.007423\n",
+ "1996 0.007142\n",
+ "1997 0.006903\n",
+ "1998 0.006709\n",
+ "1999 0.006511\n",
+ "2000 0.006386\n",
+ "2001 0.006274\n",
+ "2002 0.006183\n",
+ "2003 0.006197\n",
+ "2004 0.006216\n",
+ "2005 0.006302\n",
+ "2006 0.006365\n",
+ "2007 0.006473\n",
+ "2008 0.006604\n",
+ "2009 0.006805\n",
+ "2010 0.008328\n",
+ "2011 0.008860\n",
+ "2012 0.009350\n",
+ "2013 0.009772\n",
+ "2014 0.010190\n",
+ "2015 0.013821\n",
+ "2016 NaN\n",
+ "Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "r_absdiff = abs (census - un)/un"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 1.286247\n",
+ "1951 0.858540\n",
+ "1952 0.667365\n",
+ "1953 0.607232\n",
+ "1954 0.628640\n",
+ "1955 0.740425\n",
+ "1956 0.843928\n",
+ "1957 0.988701\n",
+ "1958 1.101054\n",
+ "1959 1.020766\n",
+ "1960 0.561750\n",
+ "1961 0.036871\n",
+ "1962 0.031146\n",
+ "1963 0.270201\n",
+ "1964 0.535045\n",
+ "1965 0.639908\n",
+ "1966 0.682939\n",
+ "1967 0.628856\n",
+ "1968 0.582745\n",
+ "1969 0.582126\n",
+ "1970 0.583151\n",
+ "1971 0.625807\n",
+ "1972 0.616597\n",
+ "1973 0.584666\n",
+ "1974 0.533223\n",
+ "1975 0.443692\n",
+ "1976 0.338849\n",
+ "1977 0.266959\n",
+ "1978 0.196499\n",
+ "1979 0.171246\n",
+ " ... \n",
+ "1987 0.359053\n",
+ "1988 0.460423\n",
+ "1989 0.546078\n",
+ "1990 0.598794\n",
+ "1991 0.690025\n",
+ "1992 0.705441\n",
+ "1993 0.727689\n",
+ "1994 0.749047\n",
+ "1995 0.742263\n",
+ "1996 0.714242\n",
+ "1997 0.690252\n",
+ "1998 0.670935\n",
+ "1999 0.651132\n",
+ "2000 0.638560\n",
+ "2001 0.627448\n",
+ "2002 0.618347\n",
+ "2003 0.619705\n",
+ "2004 0.621627\n",
+ "2005 0.630170\n",
+ "2006 0.636478\n",
+ "2007 0.647257\n",
+ "2008 0.660376\n",
+ "2009 0.680460\n",
+ "2010 0.832811\n",
+ "2011 0.885957\n",
+ "2012 0.935034\n",
+ "2013 0.977243\n",
+ "2014 1.019023\n",
+ "2015 1.382129\n",
+ "2016 NaN\n",
+ "Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "percent_r_absdiff = abs (census - un)/un*100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`max` and `abs` are built-in functions provided by Python, but NumPy also provides version that are a little more general. When you import `modsim`, you get the NumPy versions of these functions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Constant growth"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can select a value from a `Series` using bracket notation. Here's the first element:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2.557628654"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census[1950]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And the last value."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "7.325996709"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census[2016]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "But rather than \"hard code\" those dates, we can get the first and last labels from the `Series`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1950"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t_0 = get_first_label(census)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2016"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t_end = get_last_label(census)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "66"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "elapsed_time = t_end - t_0"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And we can get the first and last values:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2.557628654"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_0 = get_first_value(census)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "7.325996709"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_end = get_last_value(census)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Then we can compute the average annual growth in billions of people per year."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "4.768368055"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "total_growth = p_end - p_0"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.07224800083333333"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "annual_growth = total_growth / elapsed_time"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### TimeSeries"
+ ]
+ },
+ {
+ "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": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "Series([], dtype: float64)"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "results = TimeSeries()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Initially the `TimeSeries` 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": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1950 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "1950 2.557629\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "results[t_0] = census[t_0]\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": 29,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for t in linrange(t_0, t_end-1):\n",
+ " results[t+1] = results[t] + annual_growth"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`linrange` is defined in the `modsim` library. It is similar to `linspace`, but instead of taking parameters `start`, `stop`, and `num`, it takes `start`, `stop`, and `step`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Help on function linrange in module modsim:\n",
+ "\n",
+ "linrange(start=0, stop=None, step=1, **options)\n",
+ " Returns an array of evenly-spaced values in the interval [start, stop].\n",
+ " \n",
+ " This function works best if the space between start and stop\n",
+ " is divisible by step; otherwise the results might be surprising.\n",
+ " \n",
+ " By default, the last value in the array is `stop` (at least approximately).\n",
+ " If you provide the keyword argument `endpoint=False`, the last value\n",
+ " in the array is `stop-step`.\n",
+ " \n",
+ " start: first value\n",
+ " stop: last value\n",
+ " step: space between values\n",
+ " \n",
+ " Also accepts the same keyword arguments as np.linspace. See\n",
+ " https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html\n",
+ " \n",
+ " returns: array or Quantity\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "help(linrange)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's what the results looks like, compared to the actual data."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "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": [
+ "plot(census, ':', label='US Census')\n",
+ "plot(un, '--', label='UN DESA')\n",
+ "plot(results, color='gray', label='model')\n",
+ "\n",
+ "decorate(xlabel='Year', \n",
+ " ylabel='World population (billion)',\n",
+ " title='Constant growth')\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": [
+ "### Exercises\n",
+ "\n",
+ "**Optional Exercise:** Try fitting the model using data from 1970 to the present, and see if that does a better job.\n",
+ "\n",
+ "Hint: \n",
+ "\n",
+ "1. Copy the code from above and make a few changes. Test your code after each small change.\n",
+ "\n",
+ "2. Make sure your `TimeSeries` starts in 1950, even though the estimated annual growth is based on later data.\n",
+ "\n",
+ "3. You might want to add a constant to the starting value to match the data better."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Elapsed time is 46\n",
+ "Total growth is 3.613298967\n",
+ "Annual growth is 0.07854997754347826\n"
+ ]
+ }
+ ],
+ "source": [
+ "elapsed_time = t_end - (t_0 + 20)\n",
+ "print('Elapsed time is ',elapsed_time)\n",
+ "total_growth = p_end - (census[t_0+20])\n",
+ "print('Total growth is ',total_growth)\n",
+ "annual_growth = total_growth / elapsed_time\n",
+ "print('Annual growth is ',annual_growth)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for t in linrange(t_0+20, t_end-1):\n",
+ " results[t+1] = results[t] + annual_growth"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap03-minefig02.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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vn3cfffdbNy4kccff9zlPLPZjN1un/F+O3fu5PDhw3ziE5+YuNfQ0NDE8S1btmA2mwkODiYtLY2enh42btyIl5cXN9xwA5s2beKyyy5j5cqVNDY2Tnuf888/ny996Us0NTVx7rnn8q1vfUuSkxDLhM1mo6qqisrKSmy2YwXFvby8yM7OJisrCy8vr9MS25JPUOsLpw7rTbZpVRKbViVNe3zL2hS2rE2Z9vhchvciIiLo7u52mSTR0dFBeHg4AC+++CIRERFcdNFFXHPNNVxzzTV89atfZevWrXR2drqcl52djdVqpba21qUXNTIywu233873v/997HY7t9xyC5/5zGcAGB0ddemW+/sfi91kMmEYBqGhobzyyivs37+f3bt3c+edd/LFL36RCy+80OUh6NjY2MT3K1eu5G9/+xu7du1i9+7d3HDDDTzzzDMUFRW5/XcjhFhcDMOgqamJkpISl19sARITEykoKCAgIOA0RecgkyQW0ObNm9m+fftEz6enp4eXX355YgjPbDbz6KOP0tzcPHFORUUFiYmJU8Z1fX19ufXWW7nvvvtob28HHAno3/7t3xgaGiIuLo5Nmzbx4osvTqzmfuKJJ7jrrrtmjHHnzp3cfPPNrFmzhq997Wtcd911FBcXExoaytjYGJWVlQC89tprE+c8+uijPPnkk1x88cXcd999ZGdnn/C5mRBiaejp6WHXrl18+OGHLskpLCyMc889l7Vr15725ATLoAe1mNx33308/PDDXH311RNd4muvvZaPf/zjAGzbto2hoSFuvfVWRkdHMZlMpKen8+yzz56wC/2Vr3yFgIAAvvjFLwKO3tP69et58sknAbjhhhtoaWnhk5/8JCaTiYSEBB5++OEZY9y8eTPvvPMOV199NYGBgYSFhfHggw8SEhLCd77zHW699VYiIyO5/PLLJ875/Oc/zz333MPVV1+Nr68vSimuuuqqBfk7E0KcOiMjI2itqa+vdxkx8fX1JS8vj9TU1CmPKjoGuxi2jpAUeup3ODdNDnIxUEqlAzV/+9vfZEddIYRYAHa7ndraWsrLy12G700mExkZGeTm5uLj4zPlvPL2av5etxcvsxfbCq4g1C8YgMbWPrp6R1iRHX3SsTU2NnLRRRcBZGitaycfkx6UEEIsY62trVgslimFXWNjYyksLCQ4OHjKOTa7jV0NH1LSWjHx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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plot(census, ':', label='US Census')\n",
+ "plot(un, '--', label='UN DESA')\n",
+ "plot(results, color='gray', label='model')\n",
+ "\n",
+ "decorate(xlabel='Year', \n",
+ " ylabel='World population (billion)',\n",
+ " title='Constant growth')\n",
+ "savefig('chap03-minefig02.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2.557628654"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_0"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/code/chap06mine.ipynb b/code/chap06mine.ipynb
new file mode 100644
index 00000000..0e83b39a
--- /dev/null
+++ b/code/chap06mine.ipynb
@@ -0,0 +1,1594 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Modeling and Simulation in Python\n",
+ "\n",
+ "Chapter 6\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": {},
+ "outputs": [],
+ "source": [
+ "# Configure Jupyter so figures appear in the notebook\n",
+ "%matplotlib inline\n",
+ "\n",
+ "# Configure Jupyter to display the assigned value after an assignment\n",
+ "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
+ "\n",
+ "# import functions from the modsim.py module\n",
+ "from modsim import *\n",
+ "\n",
+ "from pandas import read_html"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Code from the previous chapter\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename = 'data/World_population_estimates.html'\n",
+ "tables = read_html(filename, header=0, index_col=0, decimal='M')\n",
+ "table2 = tables[2]\n",
+ "table2.columns = ['census', 'prb', 'un', 'maddison', \n",
+ " 'hyde', 'tanton', 'biraben', 'mj', \n",
+ " 'thomlinson', 'durand', 'clark']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2.525149\n",
+ "1951 2.572851\n",
+ "1952 2.619292\n",
+ "1953 2.665865\n",
+ "1954 2.713172\n",
+ "Name: un, dtype: float64"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "un = table2.un / 1e9\n",
+ "un.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2.557629\n",
+ "1951 2.594940\n",
+ "1952 2.636772\n",
+ "1953 2.682053\n",
+ "1954 2.730228\n",
+ "Name: census, dtype: float64"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census = table2.census / 1e9\n",
+ "census.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.07224800083333333"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t_0 = get_first_label(census)\n",
+ "t_end = get_last_label(census)\n",
+ "elapsed_time = t_end - t_0\n",
+ "\n",
+ "p_0 = get_first_value(census)\n",
+ "p_end = get_last_value(census)\n",
+ "total_growth = p_end - p_0\n",
+ "\n",
+ "annual_growth = total_growth / elapsed_time"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### System objects"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can rewrite the code from the previous chapter using system objects."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1950.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2016.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " annual_growth \n",
+ " 0.072248 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1950.000000\n",
+ "t_end 2016.000000\n",
+ "p_0 2.557629\n",
+ "annual_growth 0.072248\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system = System(t_0=t_0, \n",
+ " t_end=t_end,\n",
+ " p_0=p_0,\n",
+ " annual_growth=annual_growth)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And we can encapsulate the code that runs the model in a function."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def run_simulation1(system):\n",
+ " \"\"\"Runs the constant growth model.\n",
+ " \n",
+ " system: System object\n",
+ " \n",
+ " returns: TimeSeries\n",
+ " \"\"\"\n",
+ " results = TimeSeries()\n",
+ " results[system.t_0] = system.p_0\n",
+ " \n",
+ " for t in linrange(system.t_0, system.t_end-1):\n",
+ " results[t+1] = results[t] + system.annual_growth\n",
+ " \n",
+ " return results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can also encapsulate the code that plots the results."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_results(census, un, timeseries, title):\n",
+ " \"\"\"Plot the estimates and the model.\n",
+ " \n",
+ " census: TimeSeries of population estimates\n",
+ " un: TimeSeries of population estimates\n",
+ " timeseries: TimeSeries of simulation results\n",
+ " title: string\n",
+ " \"\"\"\n",
+ " plot(census, ':', label='US Census')\n",
+ " plot(un, '--', label='UN DESA')\n",
+ " plot(timeseries, color='gray', label='model')\n",
+ " \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": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation1(system)\n",
+ "plot_results(census, un, results, 'Constant growth model')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Proportional growth"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's a more realistic model where the number of births and deaths is proportional to the current population."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def run_simulation2(system):\n",
+ " \"\"\"Run a model with proportional birth and death.\n",
+ " \n",
+ " system: System object\n",
+ " \n",
+ " returns: TimeSeries\n",
+ " \"\"\"\n",
+ " results = TimeSeries()\n",
+ " results[system.t_0] = system.p_0\n",
+ " \n",
+ " for t in linrange(system.t_0, system.t_end-1):\n",
+ " births = system.birth_rate * results[t]\n",
+ " deaths = system.death_rate * results[t]\n",
+ " results[t+1] = results[t] + births - deaths\n",
+ " \n",
+ " return results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "I picked a death rate that seemed reasonable and then adjusted the birth rate to fit the data."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "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": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap03-fig03.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl8nFW9+PHPLNn3pNnTZu9Jk3RJd6Atm1CF0iKKuHHFn+By8boLXFFRFEUFf3K9Ioj4UxavCILgBXFhK7Z0o+mStjlNszZp9j2dSWb9/TGTaabZppBJs3zfr1dfzZznOfN8J6823zzn+Z5zDG63GyGEEGKmMZ7vAIQQQoixSIISQggxI0mCEkIIMSNJghJCCDEjSYISQggxI0mCEkIIMSOZz3cAQkxEKVUHZI9ocgJNwNPAXVrr0+chrDEppZKBK7TWv/e+fh3Yp7X+2jRc+7dAtNb6g8G+1jjX/zzwNa11TgDnXgK8BsRorQeCHJqYxSRBidngG8D/835tAoqAJ4F44ObzFdQYfgzEAL/3vr4OsJ+/cISY3SRBidmgX2vdMuJ1k1LqAeB2ZlaCMox8obXuOl+BCDEXSIISs5UDGAJQSn0HWIfnmep64AvAY8B/AJ8HFgGVwDe01i95+/zW2z8aeD9wCviW1vp/hi+glPoocAdQCDQAP9Ba/25Ef7P3WCFwFLjIe8yttTacPcQ3yft9B1gG1AD/xxvb08CXtdZOpZQZ+C7wMSAT6AL+AHxFa+2c6BvlHVJ7xvu9+AmQCPwR+A7wK2AjcAK4SWu939unELgP2AS4gGe91+r3Hl8D/Nwb815g51nXXAz8l7d/O/CU9/s7NFGsQowkRRJiVlFKGZVSa/Eknz+POPReYDueBPUSnmHB7wLfxvND9M/AC0qp5SP63AT0ASuB/wae8P4wRyn1MTzDir/09v858IhS6uoR/T/mPX4ZcBWeH/r/C6SPEXcg77cFz7DlBd64bwWu9R77OnAj8Ak8Ce7rZx2fTDzwGW+cHwH+DdgN/A5YA/QAP/PGmgj8C8/w5EY8Q5UbgN+MOP4ycND7vXsM+PKIzxoO/A1Psi3zxv1e4IEAYxUCkDsoMTvcr5S61/t1GOAGXsAzxDfMCvxQa+1SShmALwH3aK3/4D3+HaXUOuA2PIkFoB64VWvtAiq9yelzwOt4fuA+orX+pffcKqVUCZ7E96K3TWutfzscgFLKCpjOGo4cFsj7WYF/11rbAK2U+hywCvgTcATPHc4b3nPrlFJfB4q9xydjAm7TWh8GDiulNLB/REHHb4D7ved+FM8vrzdqra3e4zcBu7x3RpfjucP7vNba7v3ercGThMCTAO14vrdu72f5LPCmUuq2AGIVApAEJWaHHwJPeL+2Aa1jDBXVehMNQAqwAHjrrHP+BVw/4vXOEX0A9nAmeZUA/3eM/h8Z8bo64E8Q2PvVe5PTsD4gBEBr/YJS6lKl1I+BxXjuwnLwJJ5AnRjxtQXPHc6wQTzJfzjWA8PJyWsvnu99MVAKHPYmp2F7OJOgSoA8oF8pNXzcgCfpFZ5DvGKekwQlZoMOrfWJSc6xjvP1SMM/JIc5zjpuxFPGPt57nN1/vOtMFt9472cb55zhZ1RfxDPM9ic8d49/GOP8iZxdUega86zAvn+Gs46NjN2M55eDT47xHk14nhcKMSl5BiXmHK11H56ihwvOOnQhnmKJYSvPOr4Wz3MVgGMB9D/bRHvXvJP3G+lW4Kta669qrR8H6vDMDzs7UUyFY8BypVTEiLbVeO7mKoFD3uNhI46vPKt/IdCotT7h/eUiEbgXCA1CvGKOkjsoMVfdC9ytlGoE3gZuADYDl4w4p0wp9X08D/m3AO/DW4nn7f+MUuoI8E88z10+hafCbjwDQKlSKltrXT9GPOf6fiN1AlcrpbYDsXgq8BI4Myw3lZ4EvgU87r1zSwAeBP6ptT6qlGoC7sJT5PEDPMnpZjyVheAZjv028Dul1PfwzA37NdCgte4dMewnxITkDkrMVf+NZ+Lsj4HDwDZgi9b6zRHn/B3Pb/oH8SSK92ut9wBorf8C/DvwFaACT9XgLVrrJye45m+BNOCYUipt5IF3+H4j3QTkej/Ln/HcQT2Kp4hiSmmtLXieJ8Xiefb0LJ7nZdd5j/cC78FzB1cOfI0Rz9e8q3tciSex7QH+4n2fj051rGJuM8iOumI+Ot9LAwkhJid3UEIIIWYkSVBCCCFmJBniE0IIMSNNSxWfUur9eJadceGp9LlFaz3mJEdv6eoaoJkzc1KEEELMTSY8y4PtPXsCftATlHcuxRPAcq31CaXUl/EsInn1OF3WAG+Oc0wIIcTctBFPtajPdNxBmfBMJozzvo7Gs6zKeJoBnnzySdLS0iY4TQghxGzX0tLCxz72MfD+7B8p6AlKaz3gXShyp1KqE0/CumiCLk6AtLQ0srKygh2eEEKImWHUI52gV/EppZbimVVerLXOAO4B/uRdcVoIIYQY03SUmW8GdowoivgFntWQk6bh2kIIIWap6UhQ+4GLlVKp3tfX4tkaoWMari2EEGKWmo5nUK8qpX4CvK6UsuEpM98W7OsKIYSY3aZlHpTW+hd4hvaEEEKIgMhSR0IIIc6Zy+ViYGAgqNeQ/aCEEEKck97eXvbs2cPg4CBFRUUUFhYG5TqSoIQQQgSss7OTPXv24HA4AOjp6QnatSRBCSGECEhraytvv/02TqdnTm1ISAiLFy8O2vUkQU0hpRRvvfUWiYmJvraXX36ZJ598kscffxyAZ599lieeeAKHw4HT6WTFihXccccdxMTEjPmezz33HH/4wx8YHBzEbrezatUqvv71rxMbGzstn0kIIQCampooLy9neAeMsLAw1q9fH9SfRVIkMY0OHTrEL37xC37zm9/wwgsv8MILL2AymfjOd74z5vkPPfQQTz/9NL/4xS94/vnnef755zGbzXz2s5+d3sCFEPNaXV2dX3KKjIzkoosuCvovyrP+DmrPkRb2HG0BYG1xGmtL/BeY/dfBJg4cbwfgomUZlKkUv+OvvX2SIzWdAFy6aiElef4LXHT3D5IQEz4lsba3t+N2uxkc9KyVazKZ+OIXv0hVVdWocy0WCw8//DDPPfccCxYsADy307fddhv/+Mc/sNlshIaG8stf/pK///3vuFwuMjMzueuuu0hNTeXGG29kxYoV7N+/n+bmZi644AK+973v4XK5+N73vsf+/fsJCQkhKyuLH/7wh3R3d3PNNddQXl4OQGNjo+91e3s7t99+O93d3QBcfPHFfOlLX5qS74kQYuZyu91UVVWhtfa1xcTEsH79esLDp+bn4kRmfYKaTTZt2sRLL73EZZddhlKKsrIyNm3axMUXXzzq3JqaGsLDw8nJyfFrj4iIYOvWrQD8+c9/5vjx4zz99NOYzWaeeuopvvnNb/LII48A0NDQwOOPP47FYuF973sfe/bswWw2s2fPHl566SUMBgM/+clP0FqTkpJydgg+f/zjH8nKyuI3v/kNFouFO++8k/7+/nGHJYUQs5/b7aaiooK6ujpfW3x8POvWrSM0NHRaYpAENYUMhtHr37pcLoxGz0hqSEgI999/P7fddhu7d+9m79693H777VxwwQX87Gc/8+tnNBpxuVwTXu+1117j8OHDfOADH/Bdy2q1+o5feumlGI1GoqOjyc7Opre3lwsuuACTycT111/Phg0b2Lx5M8uWLaOxsXHc62zcuJFPf/rTNDc3c+GFF/LVr35VkpMQc5jL5aK8vJxTp0752pKTk1m9ejVm8/SljVmfoNaWjB7WG2nD8kw2LM8c9/ilqxZy6aqF4x4/l+G9hIQEenp6/IokOjs7iY+PB+CZZ54hISGByy+/nK1bt7J161Y+97nPcdlll9HV1eXXr6CgAIfDQV1dnd9d1NDQEJ///Of5/ve/j8vl4uabb+ajH/0oADabjd7eXt+5I2/BDQYDbreb2NhYnn/+efbv38+uXbv40pe+xKc+9SkuueQS3/gygN1u9329bNkyXnnlFd566y127drF9ddfzyOPPEJpaWnA3xshxOzgcDjYt28f7e3tvraMjAzKysp8v2xPFymSmEKbNm3i8ccf99359Pb28txzz/mG8IxGI/fddx8tLS2+PlVVVWRkZBAXF+f3XqGhodxyyy3ceeeddHR41tW12Wz84Ac/wGq1kpqayoYNG3jmmWd8s7kfeOABbrvttgljfO2117jpppsoKyvjP/7jP7j22mupqKggNjYWu93OiRMnAHjxxRd9fe677z4efPBB3vOe93DnnXdSUFAw5nMzIcTsZrPZeOutt/ySU05ODitXrpz25ARz4A5qJrnzzju599572bJlCyaTCYBt27bx/ve/H4DrrrsOq9XKLbfcgs1mw2AwkJOTw6OPPuo7f6TPfvazRERE8KlPfQrw3D2tXbuWBx98EIDrr7+e1tZWPvShD2EwGEhPT+fee++dMMZNmzaxfft2tmzZQmRkJHFxcXzve98jJiaGr3/969xyyy0kJiby3ve+19fnE5/4BHfccQdbtmwhNDQUpRRXX331lHzPhBAzg8ViYffu3X7LFymlKCwsHPPxxXQwjBzWmQmUUjlA7SuvvCI76gohxDTo6+tj165dDA0NAZ5HAqWlpaOKtIKhsbGRyy+/HCBXa1038pjcQQkhxDzW0dHB3r17fUsXGY1GVq5cSXp6+nmOTBKUEELMW6dOnaK8vNz33DwkJIQ1a9aQlDQzNjyXBCWEEPNQbW0tR44c8VXvhoeHs27duhm1jJok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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation2(system)\n",
+ "plot_results(census, un, results, '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": [
+ "### Factoring out the update function"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`run_simulation1` and `run_simulation2` are nearly identical except the body of the loop. So we can factor that part out into a function."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "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 is ',t,'population is ',pop)\n",
+ " births = system.birth_rate * pop\n",
+ " deaths = system.death_rate * pop\n",
+ " return pop + births - deaths"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The name `update_func` refers to a function object."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 14,
+ "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": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "function"
+ ]
+ },
+ "execution_count": 15,
+ "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": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def run_simulation(system, update_func):\n",
+ " \"\"\"Simulate the system using any update function.\n",
+ " \n",
+ " system: System object\n",
+ " update_func: function that computes the population next year\n",
+ " \n",
+ " returns: TimeSeries\n",
+ " \"\"\"\n",
+ " results = TimeSeries()\n",
+ " results[system.t_0] = system.p_0\n",
+ " \n",
+ " for t in linrange(system.t_0, system.t_end-1):\n",
+ " results[t+1] = update_func(results[t], t, system)\n",
+ " \n",
+ " return results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's how we use it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1950.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2016.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " birth_rate \n",
+ " 0.027000 \n",
+ " \n",
+ " \n",
+ " death_rate \n",
+ " 0.010000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1950.000000\n",
+ "t_end 2016.000000\n",
+ "p_0 2.557629\n",
+ "birth_rate 0.027000\n",
+ "death_rate 0.010000\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t_0 = get_first_label(census)\n",
+ "t_end = get_last_label(census)\n",
+ "p_0 = census[t_0]\n",
+ "\n",
+ "system = System(t_0=t_0, \n",
+ " t_end=t_end,\n",
+ " p_0=p_0,\n",
+ " birth_rate=0.027,\n",
+ " death_rate=0.01)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "t is 1950.0 population is 2.557628654\n",
+ "t is 1951.0 population is 2.601108341118\n",
+ "t is 1952.0 population is 2.645327182917006\n",
+ "t is 1953.0 population is 2.6902977450265952\n",
+ "t is 1954.0 population is 2.7360328066920476\n",
+ "t is 1955.0 population is 2.7825453644058125\n",
+ "t is 1956.0 population is 2.829848635600711\n",
+ "t is 1957.0 population is 2.8779560624059233\n",
+ "t is 1958.0 population is 2.926881315466824\n",
+ "t is 1959.0 population is 2.9766382978297603\n",
+ "t is 1960.0 population is 3.0272411488928666\n",
+ "t is 1961.0 population is 3.078704248424045\n",
+ "t is 1962.0 population is 3.131042220647254\n",
+ "t is 1963.0 population is 3.184269938398258\n",
+ "t is 1964.0 population is 3.2384025273510284\n",
+ "t is 1965.0 population is 3.293455370315996\n",
+ "t is 1966.0 population is 3.349444111611368\n",
+ "t is 1967.0 population is 3.406384661508761\n",
+ "t is 1968.0 population is 3.46429320075441\n",
+ "t is 1969.0 population is 3.523186185167235\n",
+ "t is 1970.0 population is 3.583080350315078\n",
+ "t is 1971.0 population is 3.6439927162704344\n",
+ "t is 1972.0 population is 3.7059405924470314\n",
+ "t is 1973.0 population is 3.768941582518631\n",
+ "t is 1974.0 population is 3.833013589421448\n",
+ "t is 1975.0 population is 3.8981748204416125\n",
+ "t is 1976.0 population is 3.9644437923891203\n",
+ "t is 1977.0 population is 4.031839336859735\n",
+ "t is 1978.0 population is 4.100380605586351\n",
+ "t is 1979.0 population is 4.170087075881319\n",
+ "t is 1980.0 population is 4.240978556171301\n",
+ "t is 1981.0 population is 4.313075191626214\n",
+ "t is 1982.0 population is 4.3863974698838595\n",
+ "t is 1983.0 population is 4.460966226871885\n",
+ "t is 1984.0 population is 4.536802652728707\n",
+ "t is 1985.0 population is 4.613928297825096\n",
+ "t is 1986.0 population is 4.692365078888122\n",
+ "t is 1987.0 population is 4.77213528522922\n",
+ "t is 1988.0 population is 4.8532615850781164\n",
+ "t is 1989.0 population is 4.935767032024445\n",
+ "t is 1990.0 population is 5.0196750715688605\n",
+ "t is 1991.0 population is 5.1050095477855315\n",
+ "t is 1992.0 population is 5.191794710097886\n",
+ "t is 1993.0 population is 5.28005522016955\n",
+ "t is 1994.0 population is 5.369816158912433\n",
+ "t is 1995.0 population is 5.461103033613944\n",
+ "t is 1996.0 population is 5.553941785185382\n",
+ "t is 1997.0 population is 5.648358795533533\n",
+ "t is 1998.0 population is 5.744380895057604\n",
+ "t is 1999.0 population is 5.8420353702735826\n",
+ "t is 2000.0 population is 5.941349971568234\n",
+ "t is 2001.0 population is 6.042352921084894\n",
+ "t is 2002.0 population is 6.145072920743337\n",
+ "t is 2003.0 population is 6.249539160395973\n",
+ "t is 2004.0 population is 6.355781326122704\n",
+ "t is 2005.0 population is 6.46382960866679\n",
+ "t is 2006.0 population is 6.573714712014126\n",
+ "t is 2007.0 population is 6.685467862118366\n",
+ "t is 2008.0 population is 6.799120815774378\n",
+ "t is 2009.0 population is 6.9147058696425425\n",
+ "t is 2010.0 population is 7.032255869426465\n",
+ "t is 2011.0 population is 7.151804219206714\n",
+ "t is 2012.0 population is 7.273384890933229\n",
+ "t is 2013.0 population is 7.397032434079093\n",
+ "t is 2014.0 population is 7.522781985458438\n",
+ "t is 2015.0 population is 7.650669279211232\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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x8UXX8xVV13FVVddxVe+8hUuuugi2tvb/drl5eXhdDqpqanxu4saGBjgq1/9Kj/4wQ9wu93ceOONfOYznwHAbrfT1dXlO3boLbjJZMLj8RAdHc1LL73E7t272bZtG1//+tf54he/yAUXXODrXwZwOBy+rxctWsQbb7zBe++9x7Zt27j22mt5/PHHKS4uDvizEULMDk6nk127dtHS0uLblpaWRklJie+X7ekiRRKTaN26dTz11FO+O5+uri5efPFFXxee2WzmoYceorGx0demoqKCtLQ0YmJi/M4VHBzMTTfdxD333ENrqzGvrt1u54c//CF9fX0kJyezZs0ann/+ed9o7kceeYQ77rhjzBjfeustbrjhBkpKSviP//gPrr76asrKyoiOjsbhcHDkyBEAXnnlFV+bhx56iE2bNvGRj3yEe+65h7y8vBGfmwkhZje73c57773nl5yysrJYunTptCcnOAPuoGaSe+65hwceeIANGzZgsVgA2LhxIx/72McAuOaaa+jr6+Omm27CbrdjMpnIysriiSee8B0/1M0330xYWBhf/OIXAePuaeXKlWzatAmAa6+9lqamJj75yU9iMplITU3lgQceGDPGdevWsXnzZjZs2EB4eDgxMTF8//vfJyoqim9961vcdNNNxMfHc9lll/nafP7zn+euu+5iw4YNBAcHo5TiiiuumJTPTAgxM9hsNrZv3+43fZFSivz8/BEfX0wH09BunZlAKZUFVL/xxhuyoq4QQkyD7u5utm3bxsDAAGA8EiguLh5WpDUV6urquPjiiwGytdY1Q/fJHZQQQpzFWltb2blzp2/qIrPZzNKlS0lNTT3NkUmCEkKIs9bx48cpLS31PTcPCgpixYoVJCTMjAXPJUEJIcRZqLq6mgMHDviqd0NDQ1m1atWMmkZNEpQQQpxFPB4Phw4dorKy0rctMjKS1atXExYWdhojG04SlBBCnCVcLhd79uzxG4AbFxfHypUrR50dorrjGANOOwWJuX7bPR7PlFf3SYISQoizgMPhYOfOnbS1tfm2paamUlJSMuIwF5fbxfa6PZQ1lWM2m5kTHseciJOTCbxf3kzJ/EQslqkbHyUDdYUQ4gxns9nYsmWLX3LKzs5m2bJlIyan3oET/FX/k7KmcsCY+mhbXanfMflzYzlQ3Tas7WSSOyghhDiDDV2efVBhYSE5OTmj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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func1)\n",
+ "plot_results(census, un, results, 'Proportional model, factored')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Remember not to put parentheses after `update_func1`. What happens if you try?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "t is 1950.0 population is 2.557628654\n",
+ "t is 1951.0 population is 2.601108341118\n",
+ "t is 1952.0 population is 2.645327182917006\n",
+ "t is 1953.0 population is 2.6902977450265952\n",
+ "t is 1954.0 population is 2.7360328066920476\n",
+ "t is 1955.0 population is 2.7825453644058125\n",
+ "t is 1956.0 population is 2.829848635600711\n",
+ "t is 1957.0 population is 2.8779560624059233\n",
+ "t is 1958.0 population is 2.926881315466824\n",
+ "t is 1959.0 population is 2.9766382978297603\n",
+ "t is 1960.0 population is 3.0272411488928666\n",
+ "t is 1961.0 population is 3.078704248424045\n",
+ "t is 1962.0 population is 3.131042220647254\n",
+ "t is 1963.0 population is 3.184269938398258\n",
+ "t is 1964.0 population is 3.2384025273510284\n",
+ "t is 1965.0 population is 3.293455370315996\n",
+ "t is 1966.0 population is 3.349444111611368\n",
+ "t is 1967.0 population is 3.406384661508761\n",
+ "t is 1968.0 population is 3.46429320075441\n",
+ "t is 1969.0 population is 3.523186185167235\n",
+ "t is 1970.0 population is 3.583080350315078\n",
+ "t is 1971.0 population is 3.6439927162704344\n",
+ "t is 1972.0 population is 3.7059405924470314\n",
+ "t is 1973.0 population is 3.768941582518631\n",
+ "t is 1974.0 population is 3.833013589421448\n",
+ "t is 1975.0 population is 3.8981748204416125\n",
+ "t is 1976.0 population is 3.9644437923891203\n",
+ "t is 1977.0 population is 4.031839336859735\n",
+ "t is 1978.0 population is 4.100380605586351\n",
+ "t is 1979.0 population is 4.170087075881319\n",
+ "t is 1980.0 population is 4.240978556171301\n",
+ "t is 1981.0 population is 4.313075191626214\n",
+ "t is 1982.0 population is 4.3863974698838595\n",
+ "t is 1983.0 population is 4.460966226871885\n",
+ "t is 1984.0 population is 4.536802652728707\n",
+ "t is 1985.0 population is 4.613928297825096\n",
+ "t is 1986.0 population is 4.692365078888122\n",
+ "t is 1987.0 population is 4.77213528522922\n",
+ "t is 1988.0 population is 4.8532615850781164\n",
+ "t is 1989.0 population is 4.935767032024445\n",
+ "t is 1990.0 population is 5.0196750715688605\n",
+ "t is 1991.0 population is 5.1050095477855315\n",
+ "t is 1992.0 population is 5.191794710097886\n",
+ "t is 1993.0 population is 5.28005522016955\n",
+ "t is 1994.0 population is 5.369816158912433\n",
+ "t is 1995.0 population is 5.461103033613944\n",
+ "t is 1996.0 population is 5.553941785185382\n",
+ "t is 1997.0 population is 5.648358795533533\n",
+ "t is 1998.0 population is 5.744380895057604\n",
+ "t is 1999.0 population is 5.8420353702735826\n",
+ "t is 2000.0 population is 5.941349971568234\n",
+ "t is 2001.0 population is 6.042352921084894\n",
+ "t is 2002.0 population is 6.145072920743337\n",
+ "t is 2003.0 population is 6.249539160395973\n",
+ "t is 2004.0 population is 6.355781326122704\n",
+ "t is 2005.0 population is 6.46382960866679\n",
+ "t is 2006.0 population is 6.573714712014126\n",
+ "t is 2007.0 population is 6.685467862118366\n",
+ "t is 2008.0 population is 6.799120815774378\n",
+ "t is 2009.0 population is 6.9147058696425425\n",
+ "t is 2010.0 population is 7.032255869426465\n",
+ "t is 2011.0 population is 7.151804219206714\n",
+ "t is 2012.0 population is 7.273384890933229\n",
+ "t is 2013.0 population is 7.397032434079093\n",
+ "t is 2014.0 population is 7.522781985458438\n",
+ "t is 2015.0 population is 7.650669279211232\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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x8UXX8xVV13FVVddxVe+8hUuuugi2tvb/drl5eXhdDqpqanxu4saGBjgq1/9Kj/4wQ9wu93ceOONfOYznwHAbrfT1dXlO3boLbjJZMLj8RAdHc1LL73E7t272bZtG1//+tf54he/yAUXXODrXwZwOBy+rxctWsQbb7zBe++9x7Zt27j22mt5/PHHKS4uDvizEULMDk6nk127dtHS0uLblpaWRklJie+X7ekiRRKTaN26dTz11FO+O5+uri5efPFFXxee2WzmoYceorGx0demoqKCtLQ0YmJi/M4VHBzMTTfdxD333ENrqzGvrt1u54c//CF9fX0kJyezZs0ann/+ed9o7kceeYQ77rhjzBjfeustbrjhBkpKSviP//gPrr76asrKyoiOjsbhcHDkyBEAXnnlFV+bhx56iE2bNvGRj3yEe+65h7y8vBGfmwkhZje73c57773nl5yysrJYunTptCcnOAPuoGaSe+65hwceeIANGzZgsVgA2LhxIx/72McAuOaaa+jr6+Omm27CbrdjMpnIysriiSee8B0/1M0330xYWBhf/OIXAePuaeXKlWzatAmAa6+9lqamJj75yU9iMplITU3lgQceGDPGdevWsXnzZjZs2EB4eDgxMTF8//vfJyoqim9961vcdNNNxMfHc9lll/nafP7zn+euu+5iw4YNBAcHo5TiiiuumJTPTAgxM9hsNrZv3+43fZFSivz8/BEfX0wH09BunZlAKZUFVL/xxhuyoq4QQkyD7u5utm3bxsDAAGA8EiguLh5WpDUV6urquPjiiwGytdY1Q/fJHZQQQpzFWltb2blzp2/qIrPZzNKlS0lNTT3NkUmCEkKIs9bx48cpLS31PTcPCgpixYoVJCTMjAXPJUEJIcRZqLq6mgMHDviqd0NDQ1m1atWMmkZNEpQQQpxFPB4Phw4dorKy0rctMjKS1atXExYWdhojG04SlBBCnCVcLhd79uzxG4AbFxfHypUrR50dorrjGANOOwWJuX7bPR7PlFf3SYISQoizgMPhYOfOnbS1tfm2paamUlJSMuIwF5fbxfa6PZQ1lWM2m5kTHseciJOTCbxf3kzJ/EQslqkbHyUDdYUQ4gxns9nYsmWLX3LKzs5m2bJlIyan3oET/FX/k7KmcsCY+mhbXanfMflzYzlQ3Tas7WSSOyghhDiDDV2efVBhYSE5OTmj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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func1)\n",
+ "plot_results(census, un, results, 'Proportional model, factored')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Exercise:** When you run `run_simulation`, it runs `update_func1` once for each year between `t_0` 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": 20,
+ "metadata": {},
+ "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\n",
+ " return pop + net_growth"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's how it works:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "system.alpha = system.birth_rate - system.death_rate\n",
+ "\n",
+ "results = run_simulation(system, update_func2)\n",
+ "plot_results(census, un, results, 'Proportional model, combined birth and death')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Exercises\n",
+ "\n",
+ "**Exercise:** Maybe the reason the proportional model doesn't work very well is that the growth rate, `alpha`, is changing over time. So let's try a model with different growth rates before and after 1980 (as an arbitrary choice).\n",
+ "\n",
+ "Write an update function that takes `pop`, `t`, and `system` as parameters. The system object, `system`, should contain two parameters: the growth rate before 1980, `alpha1`, and the growth rate after 1980, `alpha2`. It should use `t` to determine which growth rate to use. Note: Don't forget the `return` statement.\n",
+ "\n",
+ "Test your function by calling it directly, then pass it to `run_simulation`. Plot the results. Adjust the parameters `alpha1` and `alpha2` to fit the data as well as you can.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1950.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2016.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " alpha1 \n",
+ " 0.020000 \n",
+ " \n",
+ " \n",
+ " alpha2 \n",
+ " 0.017000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1950.000000\n",
+ "t_end 2016.000000\n",
+ "p_0 2.557629\n",
+ "alpha1 0.020000\n",
+ "alpha2 0.017000\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system = System(t_0=t_0, t_end=t_end, p_0=p_0, alpha1=0.02, alpha2=0.017)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "def update_func2(pop, t, system):\n",
+ " print('the year is ', t)\n",
+ "\n",
+ " if t < 1980:\n",
+ " alpha = system.alpha1 \n",
+ " else:\n",
+ " alpha = system.alpha2 \n",
+ " \n",
+ " print('alpha is ', alpha)\n",
+ " \n",
+ " net_growth = alpha * pop\n",
+ " print('the net_growth is ', net_growth)\n",
+ " \n",
+ " return pop + net_growth\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the year is 1950.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.051152573080000006\n",
+ "the year is 1951.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.052175624541600005\n",
+ "the year is 1952.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.053219137032432\n",
+ "the year is 1953.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.05428351977308064\n",
+ "the year is 1954.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.05536919016854225\n",
+ "the year is 1955.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.0564765739719131\n",
+ "the year is 1956.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.057606105451351364\n",
+ "the year is 1957.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.05875822756037839\n",
+ "the year is 1958.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.05993339211158595\n",
+ "the year is 1959.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.06113205995381767\n",
+ "the year is 1960.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.06235470115289402\n",
+ "the year is 1961.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.06360179517595191\n",
+ "the year is 1962.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.06487383107947095\n",
+ "the year is 1963.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.06617130770106036\n",
+ "the year is 1964.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.06749473385508158\n",
+ "the year is 1965.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.0688446285321832\n",
+ "the year is 1966.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.07022152110282687\n",
+ "the year is 1967.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.0716259515248834\n",
+ "the year is 1968.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.07305847055538106\n",
+ "the year is 1969.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.07451963996648868\n",
+ "the year is 1970.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.07601003276581846\n",
+ "the year is 1971.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.07753023342113484\n",
+ "the year is 1972.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.07908083808955753\n",
+ "the year is 1973.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.08066245485134868\n",
+ "the year is 1974.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.08227570394837566\n",
+ "the year is 1975.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.08392121802734316\n",
+ "the year is 1976.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.08559964238789002\n",
+ "the year is 1977.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.08731163523564782\n",
+ "the year is 1978.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.08905786794036077\n",
+ "the year is 1979.0\n",
+ "alpha is 0.02\n",
+ "the net_growth is 0.09083902529916799\n",
+ "the year is 1980.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.07875743493437865\n",
+ "the year is 1981.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.08009631132826309\n",
+ "the year is 1982.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.08145794862084356\n",
+ "the year is 1983.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.0828427337473979\n",
+ "the year is 1984.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.08425106022110367\n",
+ "the year is 1985.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.08568332824486243\n",
+ "the year is 1986.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.0871399448250251\n",
+ "the year is 1987.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.08862132388705052\n",
+ "the year is 1988.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09012788639313038\n",
+ "the year is 1989.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09166006046181359\n",
+ "the year is 1990.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09321828148966442\n",
+ "the year is 1991.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09480299227498873\n",
+ "the year is 1992.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09641464314366353\n",
+ "the year is 1993.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09805369207710582\n",
+ "the year is 1994.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.09972060484241663\n",
+ "the year is 1995.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1014158551247377\n",
+ "the year is 1996.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.10313992466185824\n",
+ "the year is 1997.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.10489330338110983\n",
+ "the year is 1998.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1066764895385887\n",
+ "the year is 1999.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1084899898607447\n",
+ "the year is 2000.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.11033431968837737\n",
+ "the year is 2001.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.11221000312307979\n",
+ "the year is 2002.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.11411757317617213\n",
+ "the year is 2003.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.11605757192016707\n",
+ "the year is 2004.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1180305506428099\n",
+ "the year is 2005.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.12003707000373767\n",
+ "the year is 2006.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.12207770019380121\n",
+ "the year is 2007.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.12415302109709583\n",
+ "the year is 2008.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1262636224557465\n",
+ "the year is 2009.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.12841010403749417\n",
+ "the year is 2010.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.13059307580613155\n",
+ "the year is 2011.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1328131580948358\n",
+ "the year is 2012.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.135070981782448\n",
+ "the year is 2013.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1373671884727496\n",
+ "the year is 2014.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.13970243067678634\n",
+ "the year is 2015.0\n",
+ "alpha is 0.017\n",
+ "the net_growth is 0.1420773719982917\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1950 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " 1951 \n",
+ " 2.608781 \n",
+ " \n",
+ " \n",
+ " 1952 \n",
+ " 2.660957 \n",
+ " \n",
+ " \n",
+ " 1953 \n",
+ " 2.714176 \n",
+ " \n",
+ " \n",
+ " 1954 \n",
+ " 2.768460 \n",
+ " \n",
+ " \n",
+ " 1955 \n",
+ " 2.823829 \n",
+ " \n",
+ " \n",
+ " 1956 \n",
+ " 2.880305 \n",
+ " \n",
+ " \n",
+ " 1957 \n",
+ " 2.937911 \n",
+ " \n",
+ " \n",
+ " 1958 \n",
+ " 2.996670 \n",
+ " \n",
+ " \n",
+ " 1959 \n",
+ " 3.056603 \n",
+ " \n",
+ " \n",
+ " 1960 \n",
+ " 3.117735 \n",
+ " \n",
+ " \n",
+ " 1961 \n",
+ " 3.180090 \n",
+ " \n",
+ " \n",
+ " 1962 \n",
+ " 3.243692 \n",
+ " \n",
+ " \n",
+ " 1963 \n",
+ " 3.308565 \n",
+ " \n",
+ " \n",
+ " 1964 \n",
+ " 3.374737 \n",
+ " \n",
+ " \n",
+ " 1965 \n",
+ " 3.442231 \n",
+ " \n",
+ " \n",
+ " 1966 \n",
+ " 3.511076 \n",
+ " \n",
+ " \n",
+ " 1967 \n",
+ " 3.581298 \n",
+ " \n",
+ " \n",
+ " 1968 \n",
+ " 3.652924 \n",
+ " \n",
+ " \n",
+ " 1969 \n",
+ " 3.725982 \n",
+ " \n",
+ " \n",
+ " 1970 \n",
+ " 3.800502 \n",
+ " \n",
+ " \n",
+ " 1971 \n",
+ " 3.876512 \n",
+ " \n",
+ " \n",
+ " 1972 \n",
+ " 3.954042 \n",
+ " \n",
+ " \n",
+ " 1973 \n",
+ " 4.033123 \n",
+ " \n",
+ " \n",
+ " 1974 \n",
+ " 4.113785 \n",
+ " \n",
+ " \n",
+ " 1975 \n",
+ " 4.196061 \n",
+ " \n",
+ " \n",
+ " 1976 \n",
+ " 4.279982 \n",
+ " \n",
+ " \n",
+ " 1977 \n",
+ " 4.365582 \n",
+ " \n",
+ " \n",
+ " 1978 \n",
+ " 4.452893 \n",
+ " \n",
+ " \n",
+ " 1979 \n",
+ " 4.541951 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 1987 \n",
+ " 5.213019 \n",
+ " \n",
+ " \n",
+ " 1988 \n",
+ " 5.301640 \n",
+ " \n",
+ " \n",
+ " 1989 \n",
+ " 5.391768 \n",
+ " \n",
+ " \n",
+ " 1990 \n",
+ " 5.483428 \n",
+ " \n",
+ " \n",
+ " 1991 \n",
+ " 5.576647 \n",
+ " \n",
+ " \n",
+ " 1992 \n",
+ " 5.671450 \n",
+ " \n",
+ " \n",
+ " 1993 \n",
+ " 5.767864 \n",
+ " \n",
+ " \n",
+ " 1994 \n",
+ " 5.865918 \n",
+ " \n",
+ " \n",
+ " 1995 \n",
+ " 5.965639 \n",
+ " \n",
+ " \n",
+ " 1996 \n",
+ " 6.067054 \n",
+ " \n",
+ " \n",
+ " 1997 \n",
+ " 6.170194 \n",
+ " \n",
+ " \n",
+ " 1998 \n",
+ " 6.275088 \n",
+ " \n",
+ " \n",
+ " 1999 \n",
+ " 6.381764 \n",
+ " \n",
+ " \n",
+ " 2000 \n",
+ " 6.490254 \n",
+ " \n",
+ " \n",
+ " 2001 \n",
+ " 6.600588 \n",
+ " \n",
+ " \n",
+ " 2002 \n",
+ " 6.712798 \n",
+ " \n",
+ " \n",
+ " 2003 \n",
+ " 6.826916 \n",
+ " \n",
+ " \n",
+ " 2004 \n",
+ " 6.942974 \n",
+ " \n",
+ " \n",
+ " 2005 \n",
+ " 7.061004 \n",
+ " \n",
+ " \n",
+ " 2006 \n",
+ " 7.181041 \n",
+ " \n",
+ " \n",
+ " 2007 \n",
+ " 7.303119 \n",
+ " \n",
+ " \n",
+ " 2008 \n",
+ " 7.427272 \n",
+ " \n",
+ " \n",
+ " 2009 \n",
+ " 7.553536 \n",
+ " \n",
+ " \n",
+ " 2010 \n",
+ " 7.681946 \n",
+ " \n",
+ " \n",
+ " 2011 \n",
+ " 7.812539 \n",
+ " \n",
+ " \n",
+ " 2012 \n",
+ " 7.945352 \n",
+ " \n",
+ " \n",
+ " 2013 \n",
+ " 8.080423 \n",
+ " \n",
+ " \n",
+ " 2014 \n",
+ " 8.217790 \n",
+ " \n",
+ " \n",
+ " 2015 \n",
+ " 8.357492 \n",
+ " \n",
+ " \n",
+ " 2016 \n",
+ " 8.499570 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
67 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ "1950 2.557629\n",
+ "1951 2.608781\n",
+ "1952 2.660957\n",
+ "1953 2.714176\n",
+ "1954 2.768460\n",
+ "1955 2.823829\n",
+ "1956 2.880305\n",
+ "1957 2.937911\n",
+ "1958 2.996670\n",
+ "1959 3.056603\n",
+ "1960 3.117735\n",
+ "1961 3.180090\n",
+ "1962 3.243692\n",
+ "1963 3.308565\n",
+ "1964 3.374737\n",
+ "1965 3.442231\n",
+ "1966 3.511076\n",
+ "1967 3.581298\n",
+ "1968 3.652924\n",
+ "1969 3.725982\n",
+ "1970 3.800502\n",
+ "1971 3.876512\n",
+ "1972 3.954042\n",
+ "1973 4.033123\n",
+ "1974 4.113785\n",
+ "1975 4.196061\n",
+ "1976 4.279982\n",
+ "1977 4.365582\n",
+ "1978 4.452893\n",
+ "1979 4.541951\n",
+ " ... \n",
+ "1987 5.213019\n",
+ "1988 5.301640\n",
+ "1989 5.391768\n",
+ "1990 5.483428\n",
+ "1991 5.576647\n",
+ "1992 5.671450\n",
+ "1993 5.767864\n",
+ "1994 5.865918\n",
+ "1995 5.965639\n",
+ "1996 6.067054\n",
+ "1997 6.170194\n",
+ "1998 6.275088\n",
+ "1999 6.381764\n",
+ "2000 6.490254\n",
+ "2001 6.600588\n",
+ "2002 6.712798\n",
+ "2003 6.826916\n",
+ "2004 6.942974\n",
+ "2005 7.061004\n",
+ "2006 7.181041\n",
+ "2007 7.303119\n",
+ "2008 7.427272\n",
+ "2009 7.553536\n",
+ "2010 7.681946\n",
+ "2011 7.812539\n",
+ "2012 7.945352\n",
+ "2013 8.080423\n",
+ "2014 8.217790\n",
+ "2015 8.357492\n",
+ "2016 8.499570\n",
+ "Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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VVVVrrLg4GDWrl074WfXdJBBEjOopKSEhx9+mN///ve88sorvPLKK/j6+vKDH/zguPUfeeQRnnvuOR5++GFefvllXn75Zfz8/LjxxhtnNnAhxGnL4XBQVlbmlpwiIiJYv369V5MTLIAW1PbyZrZXNANwRu4izshzn2D2vX1H2Lu/DYCPFCazUiW4bX971yHKazsAOHf1YvIyYt22H+0dIjo8aFpibWtrw+FwMDQ0BICvry9f/epXqa6uHld3YGCARx99lJdeeom4uDjAaE7fdtttvPHGG5jNZgICAvjNb37DP//5T+x2OykpKdx1110kJiZy9dVXs2LFCnbv3k1TUxPr1q3jnnvuwW63c88997B79278/f1JTU3lJz/5CUePHuXSSy9lz549ABw+fNj1uK2tjdtvv52jR48CcPbZZ3PrrbdOy2sihJi7bDYbu3fvprm52VUWFxdHcXEx/v7+Xj//vE9Q88nGjRt57bXXOO+881BKsXLlSjZu3MjZZ589rm5tbS1BQUGkp6e7lQcHB7N582YA/vrXv7J//36ee+45/Pz8ePbZZ/nud7/LY489BkBDQwNPPfUUAwMDfOxjH2P79u34+fmxfft2XnvtNUwmEz//+c/RWpOQkDA2BJe//OUvpKam8vvf/56BgQHuvPNOent7vf7tSQgxe4aHh9m+fbvbIIiUlBRWrFiBj8/MdL5JgppGJpNpXJndbnf9Mv39/XnggQe47bbb2LZtGzt27OD2229n3bp1/PKXv3Tbz8fHB7vdPun53n77bUpLS/nkJz/pOtfg4KBr+7nnnouPjw9hYWGkpaXR3d3NunXr8PX15corr2T9+vVcdNFFFBYWcvjw4QnPs2HDBm644Qaampo466yz+MY3viHJSYgFrL+/n61btzIwMOAqW7ZsGcuXLz/u55y3zPsEdUbe+G690dYXpbC+KGXC7eeuXsy5qxdPuP1Euveio6Pp6upyGyTR0dFBVFQUAM8//zzR0dF89KMfZfPmzWzevJmbbrqJ8847j87OTrf9MjMzsVqt1NXVubWihoeHueWWW/jRj36E3W7nuuuu47Of/SwAZrOZ7u5uV92goGOxm0wmHA4HERERvPzyy+zevZutW7dy6623cu2113LOOee4RuYAWCwW18+FhYW8+eabfPjhh2zdupUrr7ySxx57jPz8fI9fGyHE/HD06FG2b9+O2WwGjM+O/Pz8cb05M0EGSUyjjRs38tRTT7laPt3d3bz00kuuLjwfHx/uv/9+t/7c6upqkpOTiYyMdDtWQEAA119/PXfeeSft7e2AkYB+/OMfMzg4SGJiIuvXr+f555933c394IMPctttt00a49tvv80111zDypUr+fKXv8zll19OWVkZERERWCwWampqAHj11Vdd+9x///1s2bKF888/nzvvvJPMzMzjXjcTQsxvTU1NfPjhh67k5OvrS3Fx8awkJ1gALai55M477+S+++5j06ZN+Pr6AnDZZZfxiU98AoArrriCwcFBrr/+esxmMyaTifT0dB5//HFX/dFuvPFGgoODufbaawGj9XTGGWewZcsWAK688kpaWlr49Kc/jclkIikpifvuu2/SGDdu3Mi7777Lpk2bCAkJITIyknvuuYfw8HC+9a1vcf311xMTE8PFF1/s2ufzn/88d9xxB5s2bSIgIAClFJdccsm0vGZCiNnncDiora2lsrLS1ZMSGBjImjVriI6OnrW4TKO7deYCpVQ6cPDNN9+UFXWFEMLLHA4HpaWl1NfXu8pCQ0NZu3YtoaGhXj//4cOH+ehHPwqwVGtdN3qbtKCEEOI0ZbVa2bVrF62tra6ymJgY1qxZQ0BAwCxGZpAEJYQQp6HBwUG2b99OT0+PqywlJYWioqLjXnKYDTOSoJRSnwB+CNiBTuB6rfWBmTi3EEIId93d3Wzfvt01aQBAVlYWSqkZHUY+Fa+P4lNKBQNPA1dorVcAfwN+5e3zCiGEGK+5uZn333/flZxMJhNFRUXk5OTMqeQEM9OC8gVMwMg46jBgaOLqQgghptvxRur5+/tTXFzsmk5trvF6gtJa9ymlbgQ+UEp1YCSsj3j7vEIIIQx2u52ysjK3kXohISGsXbuWsLCwWYxscjPRxVcAfB/I1VonA/cCLyil5lZbUgghFiCLxcK2bdvcklNMTAwbNmyY08kJZmYmiYuA90cNingYyAdiJ95FCCHEqerr6+O9995zzUYDkJqayrp16+bEMPKpzESC2g2crZRKdD6+HDiotW6fZJ95SSlFZ2enW9nrr7/O1VdfDRiLFRYWFrJ//363Ol/84hd58cUXxx3vxRdfZPXq1Vx22WVcdtllXHrppdx4442UlZW56txxxx1s2LDBVWfk35NPPgkYb9Dvfve7XHrppWzevJnLL7+c5557bty57rvvPvLz892mYRJCzF/t7e289957rqnQwPiMmsnZyE/VTFyDeksp9XPgHaWUGWOY+WXePu9c5XA4+MY3vsHzzz9PYGDglPWLi4t59NFHXY8/+OADrrvuOl544QVSUoxJcK+55hrXdEhjPfDAA4SEhPDKK69gMploaWnhqquuIikpifXr1wPGFEp//etfueiii3j66af55je/OQ3PVAgxW+rq6igrK3MNhvD19WXFihUkJyfPcmQnZkbug9JaP4zRtTftdh4pYXdjqUd1c+Iz2Zi+1q3s3bptVLXVTLjPquQCilMKTynG0datW4fFYuGnP/0p3//+9094/7POOosLLriAP/3pTx4lkra2NmJjY7FYLAQEBJCYmMhDDz3kmmEdjIlhlyxZ4kp0N998M8HBwSccmxBidjkcDsrLyzl48KCrLCgoiDVr1rj9zc8X86Odt4CYTCZ++tOf8ve//5233377pI6Rk5Pj1k34xBNPjOvi01oDcMstt7B161bOPPNMrr32Wh5++GHCwsJYvPjYEiN//OMf2bx5MwUFBcTHx/PSSy+d2pMUQsw4s9nM1q1b3ZJTVFQUGzZsmJfJCWSqo2k11YKFIxISErj33nv5zne+wyuvvHJS5xq91tNkXXw5OTm8/vrrlJeXs2PHDt5//30eeeQRHnzwQc477zzKy8upqqpyzU5++eWX8+STT/KZz3xmzt20J4Q4vt7eXnbs2EF/f7+rLDk5mRUrVsyZaYtOxrxPUMUphafUBbcxfe24br+TNdWChaOdd955XHzxxdx+++34+Z3Yr6GsrIzs7Owp61mtVu6++26+/vWvk5+fT35+Pl/4whfYsmULzz77LOeddx7PPPMMfn5+rlV5rVYrra2tvPvuu8ddil4IMbe0tLSwe/durFarq0wpRVZW1rz/kildfNNoqgULx7rjjjtobW3lww8/9Pgc//rXv3jnnXe46qqrpqzr5+fHwYMH2bJli2uFXKvVyoEDB8jNzaWnp4fXXnuNRx55hLfeeou33nqLd999l82bN/OHP/zB45iEEDPP4XBQU1PDjh07XMlpZIHB7OzseZ+cYAG0oOaSqRYsHCswMJAHHniAK6+8csJj7ty5k8suMwY9mkwmEhISePzxx4mPj3fVeeKJJ8Z1FRYVFXH33Xfz4IMP8vOf/5yLLrqI4OBg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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "\n",
+ "plot_results(census, un, results, 'Proportional model, combined birth and death')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/code/chap07mine.ipynb b/code/chap07mine.ipynb
new file mode 100644
index 00000000..828c0606
--- /dev/null
+++ b/code/chap07mine.ipynb
@@ -0,0 +1,767 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Modeling and Simulation in Python\n",
+ "\n",
+ "Chapter 7\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": {},
+ "outputs": [],
+ "source": [
+ "# Configure Jupyter so figures appear in the notebook\n",
+ "%matplotlib inline\n",
+ "\n",
+ "# Configure Jupyter to display the assigned value after an assignment\n",
+ "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
+ "\n",
+ "# import functions from the modsim.py module\n",
+ "from modsim import *\n",
+ "\n",
+ "from pandas import read_html"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Code from the previous chapter"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename = 'data/World_population_estimates.html'\n",
+ "tables = read_html(filename, header=0, index_col=0, decimal='M')\n",
+ "table2 = tables[2]\n",
+ "table2.columns = ['census', 'prb', 'un', 'maddison', \n",
+ " 'hyde', 'tanton', 'biraben', 'mj', \n",
+ " 'thomlinson', 'durand', 'clark']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2.525149\n",
+ "1951 2.572851\n",
+ "1952 2.619292\n",
+ "1953 2.665865\n",
+ "1954 2.713172\n",
+ "Name: un, dtype: float64"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "un = table2.un / 1e9\n",
+ "un.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 2.557629\n",
+ "1951 2.594940\n",
+ "1952 2.636772\n",
+ "1953 2.682053\n",
+ "1954 2.730228\n",
+ "Name: census, dtype: float64"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "census = table2.census / 1e9\n",
+ "census.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_results(census, un, timeseries, title):\n",
+ " \"\"\"Plot the estimates and the model.\n",
+ " \n",
+ " census: TimeSeries of population estimates\n",
+ " un: TimeSeries of population estimates\n",
+ " timeseries: TimeSeries of simulation results\n",
+ " title: string\n",
+ " \"\"\"\n",
+ " plot(census, ':', label='US Census')\n",
+ " plot(un, '--', label='UN DESA')\n",
+ " plot(timeseries, color='gray', label='model')\n",
+ " \n",
+ " decorate(xlabel='Year', \n",
+ " ylabel='World population (billion)',\n",
+ " title=title)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def run_simulation(system, update_func):\n",
+ " \"\"\"Simulate the system using any update function.\n",
+ " \n",
+ " system: System object\n",
+ " update_func: function that computes the population next year\n",
+ " \n",
+ " returns: TimeSeries\n",
+ " \"\"\"\n",
+ " results = TimeSeries()\n",
+ " results[system.t_0] = system.p_0\n",
+ " \n",
+ " for t in linrange(system.t_0, system.t_end-1):\n",
+ " results[t+1] = update_func(results[t], t, system)\n",
+ " \n",
+ " return results"
+ ]
+ },
+ {
+ "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": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def update_func_quad(pop, t, system):\n",
+ " \"\"\"Compute the population next year with a quadratic model.\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": [
+ "Here's a `System` object with the parameters `alpha` and `beta`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1950.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2016.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " alpha \n",
+ " 0.025000 \n",
+ " \n",
+ " \n",
+ " beta \n",
+ " -0.001800 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1950.000000\n",
+ "t_end 2016.000000\n",
+ "p_0 2.557629\n",
+ "alpha 0.025000\n",
+ "beta -0.001800\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t_0 = get_first_label(census)\n",
+ "t_end = get_last_label(census)\n",
+ "p_0 = census[t_0]\n",
+ "\n",
+ "system = System(t_0=t_0, \n",
+ " t_end=t_end,\n",
+ " p_0=p_0,\n",
+ " alpha=0.025,\n",
+ " beta=-0.0018)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And here are the results."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap03-fig04.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func_quad)\n",
+ "plot_results(census, un, results, 'Quadratic model')\n",
+ "savefig('chap03-fig04.pdf')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Exercise:** Can you find values for the parameters that make the model fit better?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Equilibrium\n",
+ "\n",
+ "To understand the quadratic model better, let's plot net growth as a function of population."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pop_array = linspace(0, 15, 100)\n",
+ "net_growth_array = system.alpha * pop_array + system.beta * pop_array**2\n",
+ "None"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's what it looks like."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "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": [
+ "sns.set_style('whitegrid')\n",
+ "\n",
+ "plot(pop_array, net_growth_array)\n",
+ "decorate(xlabel='Population (billions)',\n",
+ " ylabel='Net growth (billions)')\n",
+ "savefig('chap03-fig05.pdf')\n",
+ "\n",
+ "sns.set_style('white')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's what it looks like. Remember that the x axis is population now, not time."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It looks like the growth rate passes through 0 when the population is a little less than 14 billion.\n",
+ "\n",
+ "In the book we found that the net growth is 0 when the population is $-\\alpha/\\beta$:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "13.88888888888889"
+ ]
+ },
+ "execution_count": 12,
+ "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": [
+ "`sns` is a library called Seaborn which provides functions that control the appearance of plots. In this case I want a grid to make it easier to estimate the population where the growth rate crosses through 0."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Disfunctions"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "When people first learn about functions, there are a few things they often find confusing. In this section I present and explain some common problems with functions.\n",
+ "\n",
+ "As an example, suppose you want a function that takes a `System` object, with variables `alpha` and `beta`, as a parameter and computes the carrying capacity, `-alpha/beta`. Here's a good solution:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "13.88888888888889\n"
+ ]
+ }
+ ],
+ "source": [
+ "def carrying_capacity(system):\n",
+ " K = -system.alpha / system.beta\n",
+ " return K\n",
+ " \n",
+ "sys1 = System(alpha=0.025, beta=-0.0018)\n",
+ "pop = carrying_capacity(sys1)\n",
+ "print(pop)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now let's see all the ways that can go wrong.\n",
+ "\n",
+ "**Disfunction #1:** Not using parameters. In the following version, the function doesn't take any parameters; when `sys1` appears inside the function, it refers to the object we created outside the function.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "13.88888888888889\n"
+ ]
+ }
+ ],
+ "source": [
+ "def carrying_capacity():\n",
+ " K = -sys1.alpha / sys1.beta\n",
+ " return K\n",
+ " \n",
+ "sys1 = System(alpha=0.025, beta=-0.0018)\n",
+ "pop = carrying_capacity()\n",
+ "print(pop)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This version actually works, but it is not as versatile as it could be. If there are several `System` objects, this function can only work with one of them, and only if it is named `system`.\n",
+ "\n",
+ "**Disfunction #2:** Clobbering the parameters. When people first learn about parameters, they often write functions like this:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "13.88888888888889\n"
+ ]
+ }
+ ],
+ "source": [
+ "def carrying_capacity(system):\n",
+ " system = System(alpha=0.025, beta=-0.0018)\n",
+ " K = -system.alpha / system.beta\n",
+ " return K\n",
+ " \n",
+ "sys1 = System(alpha=0.025, beta=-0.0018)\n",
+ "pop = carrying_capacity(sys1)\n",
+ "print(pop)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In this example, we have a `System` object named `sys1` that gets passed as an argument to `carrying_capacity`. But when the function runs, it ignores the argument and immediately replaces it with a new `System` object. As a result, this function always returns the same value, no matter what argument is passed.\n",
+ "\n",
+ "When you write a function, you generally don't know what the values of the parameters will be. Your job is to write a function that works for any valid values. If you assign your own values to the parameters, you defeat the whole purpose of functions.\n",
+ "\n",
+ "\n",
+ "**Disfunction #3:** No return value. Here's a version that computes the value of `K` but doesn't return it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "None\n"
+ ]
+ }
+ ],
+ "source": [
+ "def carrying_capacity(system):\n",
+ " K = -system.alpha / system.beta\n",
+ " \n",
+ "sys1 = System(alpha=0.025, beta=-0.0018)\n",
+ "pop = carrying_capacity(sys1)\n",
+ "print(pop)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A function that doesn't have a return statement always returns a special value called `None`, so in this example the value of `pop` is `None`. If you are debugging a program and find that the value of a variable is `None` when it shouldn't be, a function without a return statement is a likely cause.\n",
+ "\n",
+ "**Disfunction #4:** Ignoring the return value. Finally, here's a version where the function is correct, but the way it's used is not."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "13.88888888888889"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "def carrying_capacity(system):\n",
+ " K = -system.alpha / system.beta\n",
+ " return K\n",
+ " \n",
+ "sys2 = System(alpha=0.025, beta=-0.0018)\n",
+ "carrying_capacity(sys2)\n",
+ "\n",
+ "# print(K) This line won't work because K only exists inside the function."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In this example, `carrying_capacity` runs and returns `K`, but the return value is dropped.\n",
+ "\n",
+ "When you call a function that returns a value, you should do something with the result. Often you assign it to a variable, as in the previous examples, but you can also use it as part of an expression.\n",
+ "\n",
+ "For example, you could eliminate the temporary variable `pop` like this:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "13.88888888888889\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(carrying_capacity(sys1))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Or if you had more than one system, you could compute the total carrying capacity like this:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "27.77777777777778"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "total = carrying_capacity(sys1) + carrying_capacity(sys2)\n",
+ "total"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exercises\n",
+ "\n",
+ "**Exercise:** In the book, I present 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_func` 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": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def update_func_quad(pop, t, system):\n",
+ " \"\"\"Compute the population next year with a quadratic model.\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",
+ " system.r = system.alpha\n",
+ " system.K = - system.alpha/system.beta\n",
+ " net_growth = (system.r * pop)* (1 - pop / system.K ) \n",
+ " return pop + net_growth"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap03mine-fig04.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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BsPI/zkul8flclFbW4vZbGb37t1s2bKFjRs3cvLkyVGZp8/Ro0dpbW3td9L84jc8pZQusvS5XCan08natWvZtGkTf//733nppZfYsGED9fX1us50uTxms5nt27ezY8cOFi1aRGlpKVlZWfj7++suj91u55FHHqGmpoaSkhKUUv2Oib72XepYUUphNBp1dRxdbZ4r0VOeL0t3g8UOVldXF48//jjh4eEA/OY3vyExMZGOjg5efvllHnzwQd+HpJTCz8+P+Ph4jh8/7ttGY2MjYWFhBAcHj0iGi10uT98l/5IlSwBISkoiIyODEydOjMo8fd566y0WL17c76CJj4+nqanJ9/+mpqZ+3wRH2uUyffbZZzgcDr7xjW8AMHPmTKZMmcLx48d1nelyebxeLyEhIf06TSxYsICkpCQqKyt1k6euro5Vq1YxadIkdu7cSWBg4GX/3lFRUSilaG9v9+VtamoiNjYWs9msi+NoMHmuRM/nhas1ekrpZezevZtf/epXADQ3N7N3714WLlxISEgIu3bt8vUKq6io4MSJE9x8883cdNNNHD9+HKvV6tvG/PnzRypCP5fLk5CQwLRp03w995qbmzl27Bjp6emjMk+fI0eOkJWV1e898+bN48CBA7S0tKCU4k9/+hM5OTnD2u4ruVympKQkOjs7fb3CampqOHPmDGlpabrOdLk8mqaxcuVKXy+yt956C5PJRGpqqm7ydHV1sWLFCnJzc9myZYtvsNH58+ezb98+7HY7vb29vPbaa+Tk5ODn58fcuXPZs2cPAKdOnaKyspLZs2fr4jgabJ4r0UOer2rUX0E98MADPPHEEyxcuBClFEVFRUyfPh2A559/npKSErZu3YrRaGTLli2+e88bN26kqKgIl8tFYmIizz777EjG8LlSnm3btvHTn/6UV155Ba/Xy+rVq33rRmMegOrqaiZMmNDvPddffz2rV6/m29/+Ni6XixkzZrBy5crhbvpl/afP6JlnnqG3txej0cjPfvYz3xWjXjNdKc9zzz3Hj3/8Y1wuFxaLheeffx5N03TzGe3atYu6ujr279/P/v37fcv/8Ic/kJuby1133YXL5WL+/PksXrwYgOLiYn70ox/5ivDmzZsJDQ0FRv44+jJ5LicqKmrE83xVMpq5EEIIXRr1t/iEEEKMTVKghBBC6JIUKCGEELokBUoIIYQuSYESQgihS1KghBgCjzzyCAUFBQNG+D569Cjp6en9RtAWQlyaFCghhsDTTz9NW1sb27Zt8y2z2+08+eSTPPTQQ2RkZIxg64QYHaRACTEEwsPD2bRpEy+88AInTpwALgyKGxcXx0MPPQTA/v37yc/PJzMzk2XLlvWba+nw4cMsW7aMrKwsMjIy+P73v++by+exxx5j7dq1zJs3j9tvvx232z38AYUYDsMyqYcQ16iSkhK1aNEidejQITV79mxVX1+vlFLq448/VrNmzVKHDx9WLpdLvfrqqyo7O1t1dnaqzs5OlZGRod5++22llFINDQ0qNzdXvfjii0oppR599FGVnZ2tGhoaVEdHx0hFE2LIyRWUEEPosccew+v1smrVKkpKSnwDfO7du5fCwkJmz56Nn58fS5YsIT4+nrKyMoKCgnjttddYsGABdrsdm81GREREv+kssrKyiI2N9Q3RI8RYNOrH4hNCzwICArjvvvvYuXNnv8E96+rqKC8vp7S01LfM7XZTX1+P0WjkvffeY+fOnSilSE1NHTBVd9/o9kKMZVKghBhiRqNxwBw8MTExfPe732XNmjW+ZVarlejoaMrLy9m+fTt79+71zYb6wAMP9Hv/peb5EWKskVt8QoyAgoIC9uzZ4+tA8eGHH5Kfn8+pU6fo7OzEYDBgMpnweDy8+eabHDp0aECXdSHGOrmCEmIEZGdn89RTT7F+/Xrq6uqIiYnhmWeeITMzE6/XS15eHgUFBRgMBtLS0rjzzjv57LPPRrrZQgwrmW5DCCGELsktPiGEELokBUoIIYQuSYESQgihS1KghBBC6JIUKCGEELokBUoIIYQuSYESQgihS1KghBBC6NL/A62/fwncfyE8AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func_quad)\n",
+ "plot_results(census, un, results, 'Quadratic model')\n",
+ "savefig('chap03mine-fig04.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/code/chap08mine.ipynb b/code/chap08mine.ipynb
new file mode 100644
index 00000000..bd74f222
--- /dev/null
+++ b/code/chap08mine.ipynb
@@ -0,0 +1,1240 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Modeling and Simulation in Python\n",
+ "\n",
+ "Chapter 8\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": {},
+ "outputs": [],
+ "source": [
+ "# Configure Jupyter so figures appear in the notebook\n",
+ "%matplotlib inline\n",
+ "\n",
+ "# Configure Jupyter to display the assigned value after an assignment\n",
+ "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
+ "\n",
+ "# import functions from the modsim.py module\n",
+ "from modsim import *\n",
+ "\n",
+ "from pandas import read_html"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Functions from the previous chapter"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_results(census, un, timeseries, title):\n",
+ " \"\"\"Plot the estimates and the model.\n",
+ " \n",
+ " census: TimeSeries of population estimates\n",
+ " un: TimeSeries of population estimates\n",
+ " timeseries: TimeSeries of simulation results\n",
+ " title: string\n",
+ " \"\"\"\n",
+ " plot(census, ':', label='US Census')\n",
+ " plot(un, '--', label='UN DESA')\n",
+ " plot(timeseries, color='gray', label='model')\n",
+ " \n",
+ " decorate(xlabel='Year', \n",
+ " ylabel='World population (billion)',\n",
+ " title=title)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def run_simulation(system, update_func):\n",
+ " \"\"\"Simulate the system using any update function.\n",
+ " \n",
+ " system: System object\n",
+ " update_func: function that computes the population next year\n",
+ " \n",
+ " returns: TimeSeries\n",
+ " \"\"\"\n",
+ " results = TimeSeries()\n",
+ " results[system.t_0] = system.p_0\n",
+ " \n",
+ " for t in linrange(system.t_0, system.t_end-1):\n",
+ " results[t+1] = update_func(results[t], t, system)\n",
+ " \n",
+ " return results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Reading the data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename = 'data/World_population_estimates.html'\n",
+ "tables = read_html(filename, header=0, index_col=0, decimal='M')\n",
+ "table2 = tables[2]\n",
+ "table2.columns = ['census', 'prb', 'un', 'maddison', \n",
+ " 'hyde', 'tanton', 'biraben', 'mj', \n",
+ " 'thomlinson', 'durand', 'clark']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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gr4tQX0PeEdrfbwPzymEEANenaOBfSUawzCobWyhtKKJFVPmMitjQvtAARaLhaUXDfNxpOemL5+DugH4Sx+eTwghBoXo4EimpIynqKKB0iIbiS2TqSmMbk9O/VWflKCUUjFAFrChL84nhBADlWEYVDXVEBPS9eH+ycljaaq3sWNnMxaLhdziGhqaHF2myOhv+qqKLwso1Fo7etxSCCHEGdU01/FlzhYKa0u4ftxSIoM7xsS0WW1cNHIsdeU52G0W5kxI6dfJCfqoik9rvVVrndUX5/IlpRQVFV2HCfnggw+46aabAHOywokTJ3L48OEu23z/+9/nzTffPO14b775JtOmTWPFihWsWLGCq6++mttuu419+/a1b3P//fczf/789m3avl544QUA6urq+OlPf8rVV1/N8uXLueaaa3j99ddPO9fDDz/M+PHjuwzDJITwDy7Dxe6iA7y+713yqwtpaG7h6c/fp6C07rRtF88cwqUzhvT75AQy1FGfMwyDu+++mzfeeIOgoKAet58+fTpPP93RK3/Dhg1897vf5R//+AdpaeYguDfffHP7cEinevTRRwkNDWX16tVYLBaKi4u54YYbSElJYd68eYA5hNLbb7/NkiVLeOmll7jnnnt64UqFEL2hpL6cL7I3U95gzsdWWdtEQVkD0YSxfs9JvrpoVJceed6cQLCv9fsEte3kHnYU7PVo29EJWSzInNVl2brszRwqPdrtPlNTJzA9beIFxdjZnDlzcDgcPPLII/zsZz875/3nzp3L4sWL+dvf/uZRIiktLSUuLg6Hw0FgYCBJSUk88cQT7SOsgzkw7JAhQ9oT3R133EFISMg5xyaE6D0tTgfbTu5hX4mGTkPSpcckYK+IIciIoKSyidLKRhJjQ30Yqff0+wTV31gsFh555BFWrFjB/PnzWbhw4TkfY/To0axdu7b99V//+ldWr17dZZvf/e53KKW48847+dGPfsTs2bOZMmUKU6dO5aqrriIjo2OKkVdeeYVrrrmGCRMmkJCQwFtvvdU+hYcQou/lVOXzZc5W6lsa2pfZrDampU5kYtJoNlgLqahuYs6EVBJiBu6HSUlQvainCQvbJCYm8utf/5r/+q//Oi2xeKrzXE9nq+IbPXo0H3zwAfv372fr1q2sX7+ep556iscff5xFixaxf/9+Dh061D46+TXXXMMLL7zA17/+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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "un = table2.un / 1e9\n",
+ "census = table2.census / 1e9\n",
+ "plot(census, ':', label='US Census')\n",
+ "plot(un, '--', label='UN DESA')\n",
+ " \n",
+ "decorate(xlabel='Year', \n",
+ " ylabel='World population (billion)',\n",
+ " title='Estimated world population')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "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": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def update_func_quad(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": [
+ "Extract the starting time and population."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2.557628654"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t_0 = get_first_label(census)\n",
+ "t_end = get_last_label(census)\n",
+ "p_0 = get_first_value(census)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2.557628654"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_0"
+ ]
+ },
+ {
+ "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",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1950.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2016.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " alpha \n",
+ " 0.025000 \n",
+ " \n",
+ " \n",
+ " beta \n",
+ " -0.001800 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1950.000000\n",
+ "t_end 2016.000000\n",
+ "p_0 2.557629\n",
+ "alpha 0.025000\n",
+ "beta -0.001800\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system = System(t_0=t_0, \n",
+ " t_end=t_end,\n",
+ " p_0=p_0,\n",
+ " alpha=0.025,\n",
+ " beta=-0.0018)"
+ ]
+ },
+ {
+ "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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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func_quad)\n",
+ "plot_results(census, un, results, '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": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "system.t_end = 2250\n",
+ "results = run_simulation(system, update_func_quad)\n",
+ "plot_results(census, un, results, '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": [
+ "results[system.t_end]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "13.88888888888889"
+ ]
+ },
+ "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? Run the model with initial populations between 1 and 20 billion, and plot the results on the same axes."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap04mine-fig01.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "system = System(t_0=t_0, \n",
+ " t_end=t_end,\n",
+ " p_0=20.1,\n",
+ " alpha=0.025,\n",
+ " beta=-0.0018)\n",
+ "system.t_end = 2250\n",
+ "results = run_simulation(system, update_func_quad)\n",
+ "plot_results(census, un, results, 'World population projection')\n",
+ "savefig('chap04mine-fig01.pdf')\n"
+ ]
+ },
+ {
+ "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": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " United States Census Bureau (2015)[28] \n",
+ " Population Reference Bureau (1973-2015)[15] \n",
+ " United Nations Department of Economic and Social Affairs (2015)[16] \n",
+ " \n",
+ " \n",
+ " Year \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2016 \n",
+ " 7.334772e+09 \n",
+ " NaN \n",
+ " 7.432663e+09 \n",
+ " \n",
+ " \n",
+ " 2017 \n",
+ " 7.412779e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2018 \n",
+ " 7.490428e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2019 \n",
+ " 7.567403e+09 \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2020 \n",
+ " 7.643402e+09 \n",
+ " NaN \n",
+ " 7.758157e+09 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " United States Census Bureau (2015)[28] \\\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)[15] \\\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)[16] \n",
+ "Year \n",
+ "2016 7.432663e+09 \n",
+ "2017 NaN \n",
+ "2018 NaN \n",
+ "2019 NaN \n",
+ "2020 7.758157e+09 "
+ ]
+ },
+ "execution_count": 20,
+ "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": 21,
+ "metadata": {},
+ "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": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_projections(table):\n",
+ " \"\"\"Plot world population projections.\n",
+ " \n",
+ " table: DataFrame with columns 'un' and 'census'\n",
+ " \"\"\"\n",
+ " census_proj = table.census / 1e9\n",
+ " un_proj = table.un / 1e9\n",
+ " \n",
+ " plot(census_proj.dropna(), 'b:', label='US Census')\n",
+ " plot(un_proj.dropna(), 'g--', 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": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1950.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2100.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " alpha \n",
+ " 0.025000 \n",
+ " \n",
+ " \n",
+ " beta \n",
+ " -0.001800 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1950.000000\n",
+ "t_end 2100.000000\n",
+ "p_0 2.557629\n",
+ "alpha 0.025000\n",
+ "beta -0.001800\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system = System(t_0=t_0, \n",
+ " t_end=2100,\n",
+ " p_0=p_0,\n",
+ " alpha=0.025,\n",
+ " beta=-0.0018)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap04-fig02.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, update_func_quad)\n",
+ "\n",
+ "plot_results(census, un, results, 'World population projections')\n",
+ "plot_projections(table3)\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": [
+ "## Exercises\n",
+ "\n",
+ "**Optional exercise:** The net growth rate of world population has been declining for several decades. That observation suggests one more way to generate projections, by extrapolating observed changes in growth rate.\n",
+ "\n",
+ "The `modsim` library provides a function, `compute_rel_diff`, that computes relative differences of the elements in a sequence. It is a wrapper for the NumPy function `ediff1d`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "def compute_rel_diff(seq):\n",
+ " xs = np.asarray(seq)\n",
+ " diff = np.ediff1d(xs, np.nan)\n",
+ " return diff / seq\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "source_code(compute_rel_diff)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.ediff1d"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's how we can use it to compute the relative differences in the `census` and `un` estimates:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd0ZNd94Pnvq1xAoZBz6EYDjdc5sJvd7GbOlEhRgZKsHdkytfLxyKvVOTqyfWSf+WfW8lr2SLNjyePhjkdjaW1LQ1lUoCUGtZhDsxM7BzykRs6xgELlevtHFSogFmIh/D7n8BCv6tXDrQZQv3fv/d3fVXRdRwghhFhvDOlugBBCCDEbCVBCCCHWJQlQQggh1iUJUEIIIdYlU7obsBiqqlqBO4EeIJTm5gghhFg+I1AKnNc0zZf4xIYKUESC07vpboQQQogVdy/wXuIDGy1A9QD86Ec/oqSkJN1tEUIIsUy9vb18/vOfh+jne6KNFqBCACUlJVRUVKS7LUIIIVbOjGkbSZIQQgixLkmAEkIIsS5JgBJCCLEuSYASQgixLkmAEkIIsS5JgBJCCLEubbQ0c7EMuq4TCIZxewNMeoNMegNMeoLYrEZqK3IwGuV+RQixfkiA2iJGx328fPo2wy7vrM+Puf0c2yOLn4UQ64fcMm8RN28PzRmcAJo6RtewNUIIsbCUelCqqj4JfAuwAleBL2ma5krlHFVV7cDfA8cABTgLfEXTNI+qqrXAc0AhYAH+p6Zp/3lF3plI4vYEYl9n2MxkZ1rIsJlo7XERCusMu7xMegNk2MxpbKUQQsQt2INSVbUQ+AHwjKZpKtAC/PUizvkPRALhgeh/duDPo8/9EPiJpmmHgBPAv1dV9aFlvicxC68/XkXkwSMVPPPQTj5yspqS/MzY4539E+lomhBCzCqVHtRjRMqgN0aPnwOuqKr6FU3T9IXOAd4BWjVNCwOoqnoJ2Bs9738CPwHQNG1MVdUmYNty35SYyesPxr62WeI/9vIiB10DkcDUNTBBXVXumrdNiI3mktbPuZu9BILhVfseZpOBY3tKOKwWLXjuCy+8wA9+8AMMBgO5ubn8zd/8Dbdu3eK5554jEAhgs9n4xje+weHDh/m7v/s7urq6GBgYoKuri+LiYr797W9TVFTEj3/8Y55//nnMZjNWq5W/+Iu/oLa2loceeojvfve77N+/HyB2vHv3br75zW9y8eJFzGYzFRUVfOtb3yIzM3OBFqcmlQBVCXQkHHcCTiALcC10jqZpp6YeVFV1G/A14A8BNE37QcJzTwAngS8t+l2IBfkSelA2qzH2dUWhg3PRr6UHJURqLjcMrGpwAggEw1xuGFgwQNXX1/Od73yHX/ziF5SWlvLDH/6QP/uzP2N4eJh/+qd/Ijc3l8bGRr74xS9y6lTk4/jChQv88pe/xOFw8OUvf5nnn3+er3zlK/zVX/0Vb7zxBkVFRfzyl7/kww8/pLa2ds7vffnyZc6dO8fLL7+Moih8+9vfRtM07rjjjhX5N0glQBkAfZbHQ4s5R1XVI8AvgP+qadqvE09SVfULwP8DfFrTtBkl18XyeeboQRXnZWAyGgiGwoxN+Bif9JOVYUlHE4XYMA7VFa5JD+pQXeGC533wwQfcc889lJaWAvDss89iNpv53ve+x7PPPhs7T1EU2tvbATh27BgOhwOAPXv2MDY2htFo5IknnuBzn/scDzzwAPfccw/333//vN+7rq4Oo9HIZz7zGe655x4ef/xxDhw4sMR3PFMqAaodOJ5wXA6MaJrmTvUcVVU/B/w34P/UNO3HUyepqqoA3wE+DTyiadrlJb0LMa9wWMcfiP8hWc3xHpTRaKCsIJP2vnEAuvon2LU9b83bKMRGclgtSmnobS0YjUYURYkde71ewuEwJ06c4G//9m9jj/f09FBUVMRvf/tbbDZb7HFFUdD1SP/iO9/5Dg0NDZw+fZp/+Id/4MUXX+S73/0uQOwcAL/fD4DT6eTFF1/k4sWLnDlzhq997Wt86UtfmtrfadlSSTM/BdylqurO6PGXgRdTPUdV1Y8B3wMeSwxOUf8JuA84KsFp9fgDodgvl9VixGBQkp4vL3LEvu7sH1/Ttgkhluf48eN88MEH9Pf3A/D888/z5ptv8v7779Pc3AzA22+/zdNPP43XO/dSk+HhYe6//35ycnJ49tln+drXvsa1a9cAyMvL4/r16wCcPXuWgYEBAN58802effZZDh8+zFe/+lU+8YlPxM5bCQv2oDRN61dV9YvAC6qqWoBm4Auqqh4Fvq9p2qG5zole4jtE0su/r6rq1GXfJ5KS/nUiva/fJjz33cS5KbF8cw3vTakoymJqM8vO/gl0XU+6IxNCrF+qqvKnf/qn/MEf/AEAhYWFfOtb3+LixYt8/etfR9d1TCYTzz333LzJC3l5efzRH/0Rzz77LDabDaPRyF/+5V8C8Cd/8if8x//4H/nJT37C3r172bs3kud233338c477/DUU0+RkZFBdnY23/zmN1fsvSmJ3bb1TlXV7cDt119/XXbUXYTeITcvvBFJsCzOy+AzD9clPR8O63z/367jD0SmDH/3id3kZFnXvJ1CiK2ns7OThx9+GKBa07TWxOekksQWkLgGymoxznjeYFAoL4jfWU2lnQshRDpJgNoCEtdA2WcZ4gOZhxJCrD8SoLYAry8eoGbrQcHUPFTE1DyUEEKkkwSoLcCbtEh39h5UfrYtlkDh8QXnLSwrhBBrQQLUFpAUoOboQSmKkjTMJ/NQQoh0kwC1BfgWSDOfUlGYEKCk7JEQIs0kQG0BC2XxTUlKlBiQeSghRHpJgNoCEpMk5utB5WZZY/tB+fwhBkdlHkoIkT4SoLYAX2DhOSiIzENVSLq5EGKdSGlHXbGxeRJ7UHNk8U0pL3TQ0D4CwLXmQTLtZmoqcjAaFi59pOs6LSPtnO28hD8UoMRRSFlWMWXOYvLtuVI+SQixKBKgNrlQKBzbEsCgKFhM83eaE3tQLrefU2fbcFzt5sDOQvZU5805RDjmdfF++wU6x+K7pbSPdtE+2gWA1wd2PZsn952gLDd/uW9LiLS62nuLC91XCYaCC5+8RCajiaNlBzhQsnve886ePcs3v/lNfv3rXycdP/7443NuTLhRyBDfJpc4vGe1GBfsxWQ7rBzbW5LUY5rwBDh9tZv/76WbXGseTDo/GA7xYfc1fnrjpaTglMg16aepa4hr3S38lzd+yrWOtmW8IyHS72rfrVUNTgDBUJCrfbeWdY0LFy7w3e9+l1dffRW73c7zzz+/Qq1bGxKgNjlPigkSiY7tKeH3n9zDsT0l2BOGBAPBMG9f7GRgxAPAsGeUF268xIddVwmHo/tNKQp7iup4Zu9HuWfbMcocFfQN+GPX8AX9/OMHv+LNm9dmfN9wWKe+bZiX3mvhckP/Ut6uEGviQPFuTMbVHYAyGU0cKJ6/97SQ2TYm3EhkiG+T86WwSHc2GTYzx/aWcMeuIhraR7hY38/ohA+AC/V9PHRnGa82vsWEL75vZUFmHvduO0ZhZmQIL8eazY1rOlVhJ17FRY9+kyABQnqYX1x7k76xMT57/CS6DvVtI3xY34fLHQlmt3tclORnUpI/9/YAQqTLgZLdCw69rZXEDQcBAoFA7Ou5NibcKCRAbXKpVJGYj8loYE91PoU5GfzkNQ2A5s5RPI6mWHAyGU0crzjM7sJaDEq8U376Wg99w5MoikKmksMXDj/Nz66dYswXyQ483X6RvrExnIFtuL0zh0vq20YkQAmxgLy8PLq7uxkaGiIvL4+XXnop3U1aMTLEt8klVjJfKINvPoW5dqpLnQAM6+1c7miOPfdg9Un2FtUlBafmzlGuNA7Ejk8eKOVQTTl/8vjvUOaMT9I2jzXT5LmKrkeGCM0JSRyNHSOEQvGt6oUQM9XW1vK5z32OZ555hs9+9rObaq886UFtcl5falUkUnFkdzE3utsZ0lthAopy7Ryt2Ed1bmXSeWMTPt640BE7ri7L5uDOQgCy7Rl8/dFP84/vvcLNvtsAjOuDmMwaT+15gIM1RTz/Ww2X24/PH6K1x0VNRc6y2i3EZveNb3yDb3zjG7Hjr3zlKzPO+epXv7qWTVoR0oPa5Lwp1uFLRVaWwoS9GR3QdfC77RwrP5R0TjAU5jdn2mLZg85MCw/fWZmUPWgxmfj39z/F/XUHcToslBVkUloRYsBwC4NBR63KjZ1b3zayrDYLITYuCVCb3HLnoKaEw2Feb3mPnJzINUyYMY1uYzJh7sjrC/Jv7zTTPzIJRHbqffyu7bMGRkVR+NSh+3j64F3kOW0YFIXOsR5eaXyLHRXxvanaelxJmYhCiK1DAtQml2ol84Wc775C7/gAmTYzmTYzJcpuDLqFSw2ReSaX28/P32qiezCe1XfPwTKK8zLmvKaiKNxZfpAj5Qdij/WM9/F+z/sU5FkACOs6jR3SixJiK5IAtcmlWsl8PsOeUa72RhYMKsADtUfIUCLzQjdahujoG+dnbzQmbXJ4z8EyDtQWLnhtRVE4Uraf45WHY4/1TwwyYrlJUI+knNe3SoASYiuSALXJJVYyty8hi0/XdU63fxhbP1HmLObR3UcpzLEDkTmnF99pxu2NrL0wGBQeO76NQ3WLK6dysGQPJ6uOxh+weOniKgHdS//IpOzwK8QWJAFqk1vuHNTtkQ66Xb1ApLdzsuooBoOBo7uLZ5xrMRt5+t4d1CUkOSzGvmKV+7YfB0XBaFCwZgbp0C/j091obcNLuqYQYuOSALWJ6bqelMVnXeQcVDAU5Eznxdjx3iKVPHtkaG9HeTZ5zvgqdYfdzDMP1lJRlDXjOouxq7CWR3bcg8FgIMdhJYifTv0Kl263Eg5vrFXwQojlkQC1iQVDYULRD3WT0ZC0CDYVV/puxapF2ExWjpTtjz2nKAoPHqkkK8NCRZGDTz+0k/xs+4q0e0deFR/Z+SC5Djsmo0KIIA2ei3zY2rQi1xdCbAyyUHcTW87w3rhvgss9N2LHxyoOYTVZks4pLcjk95/cs7xGzqHcWcLTux6lb+hX9I64CBPmpfo3KS1wUOEsXZXvKYRYX6QHtYklV5FY3L3ImY5LhMKR1xdk5lFXsGNF25aKwsx8Prv/I5ixAjDq9nGq8V1Gva41b4sQYu2l9KmlquqTwLcAK3AV+JKmaa5UzlFV1Q78PXCMSJbyWeArmqZ5VFUtBP4J2AaEgT/UNO30irwzMa2KROo9qC5XL7dH2mPHJ6uOJtXZW0s1JUXsdx7nqusMwbCf/rFxftP4Np/Y/fiMHp0QYnNZ8FMnGkR+ADyjaZoKtAB/vYhz/gORQHgg+p8d+PPoc38PvKtp2h7gd4Gfqqo698pOsShLCVDhcJjT7RdixzvzqylxLLyeabUoisLBHWWUKXsxYGBw1MOoZ4zXmt8lrEshWSE2s1Ruix8Dzmua1hg9fg74vKqqSornvAP8paZpYU3TQsAlYJuqqibgKeB/AGiadhloBJ5Y7psSEUl7QaW4BurGQAMjnsimZiajiWMVhxZ4xerbV5NPjjWXYkXFHwgzMuGjy9XLBx0fprtpQohVlEqAqgQ6Eo47ASeQlco5mqad0jStAUBV1W3A14CfAgWAQdO0gWmv2zy14tNssUkSkwEPF7quxo7vKN1PpiX9HVqzycgdahFZSiH5ShWDox50XedGXwM3+xsXvoAQYkNKJUAZgNkWoIQWc46qqkeAd4H/qmnar+d4jTLtumIZFrsG6mzHJQKhSEWIbJuT/cXqqrVtsfbX5mO3mshjG9ZgHiPR3X3fbz9P93hfmlsnhFgNqQSodqAs4bgcGNE0zZ3qOaqqfg74LfBnmqb9VfScfkBRVTUv4XVlRHpRm1IoFKa918VY9MN1tSVm8S3Ug+qdGKBx6Hbs+O5tRzEalrd/1Eoym4wcritCURSKUXGPmdB1HV3Xeev2B/hDgYUvIoTYUFIJUKeAu1RV3Rk9/jLwYqrnqKr6MeB7wGOapv146gWapgWBl4A/jJ53ANgDvLWkd7IBnDrbxr+928K/vFrPS++10NE3HqtxtxoSK5nPV4cvrId5v+187Lg6t2pdrjWa6kUZFCP5gV1MTEb+7SZ8bs50XFzg1UKIjWbBAKVpWj/wReAFVVVvAfuBP1ZV9aiqqpfnOyd6ie8QGbr7vqqql6P//X30uf8DuFtV1evAj4Df0zRtbAXf37rRNzxJc1fkrem6zu0eFy++08zzv23g5u0hgquwtbknsZK5ee7e0K2BJoYmIxXDjQYjdyVUFl9PzCYjh9VIEVqTYsU4Vh4L8PUDTXSMdaezeUKIFZZSapemaS8DL097eBg4tMA5RNPO57puH/CxlFq6wV1u6J/18aExD29c6ODD+n4+89DOlLPtUpGUZj7HdT0BL+e7rsSOD5fuI8vqWLE2rLT9Nflc0vrx+IIYfbnYwj58xkgh2bdbz/KZvU/K+ighNgmpJLEGXG4/TZ3xjuETJ7azv6YAszH+zz824aO1d2UrJPhSyOI733UFfzCy75LT5uBAye4VbcNKm8rog8gaqcBACVZjpNLEpH9SUs+F2EQkQK2BK40DsaGoyuIsaityuP+OCn7/qT3srMyJnTc8tnJ7HkUqmc8/xNcz3k/9YHPs+GTlUUzrKDFiLvtq8mNzal6vQqmpLvZcw2ALbaObNs9GiC1FAtQq8/qD3Lw9FDs+VBevymCzmKguy44dj4yvXHafLxCKBUWL2YjRmPyj9gX9vHn7NETPqcoppyqnfMW+/2oym4wc2RXfELG308SO3G2x43daz+INrk2mpBBi9UiAWmU3WoYIBCMJEPlOG1XFyfsl5WbF91QaWcFdY+cb3tN1nXfbzsW20rCYLNyz7c4V+95rYe+OfGzRtV0ut59S007s5si/pSfg5XS7DPUJsdFJgFpFoVCYq42DseND0XU8iXKd1thjY27/imXzJQ3vTQtQDUMttAy3xY7v23YchyVzRb7vWjGbjByoLYgdX28c5Z5tx2LHTUO36YruBCyE2JgkQK2ixo5R3N7IAtJMm5m6qpwZ55iMBrIyzECkZzO6QsN8yYVi4xl8Y14X7ycUg91VWMuOvKoV+Z5rbV9NPqbo0OXAqAeTP4eavPhQ37tt5wiGpTCJEBuVBKhVous6l7R4avmBnQUz5oGmJG6dPjK+MsN8Xt/MSuahcIjXW94nGIo8l21zcqLyjhX5fumQYTOze3u8EMlFrZ8TlUcwGyMB3+Ud50rvzXQ1TwixTBKgVkl73zhD0Tkls8nA3h35c56bmxigXCvTg/IFEuegIj2oD7uvMeiOrBkyKAYe3nF37MN8ozpUVxgbIu3oG2fCrSdVYL/Uc50x2eBQiA1JAtQqGBrzcO5GfP5jz/b8pGG26fISEiWGVyhRYnodvubhNi4n9CburDhIQWbebC/dULIdVmor4kOnl7QBdhfWUpgZuSEIh8O813Z+VUtKCSFWhwSoFRIO6zR3jvLLt5v4X6c0+oYngchi0gM7C+Z9ba7TGvt6pTL5puagdF2nw9PM683vxVLKy50lHChe3wtyF2Nq4S5AU+co4+4A9247BtGeVZerl+aEpBAhxMYgAWqZdF3nWtMg//zKLV75oJXO/omk54/sKiLbYZ39xVFJQ3wTPsLh5d/te/0hwnqIXuppmWiIPe60ZfFg9ckZ2YQbWWGuncpo+r6u61xuGKAgM499RfEqW6c7PsQXrZghhNgYJEAtU/egm7cvdTI+Gf/wMygKNRU5fPKBWo7vLVnwGlazEYc9MhcUDuuMuZc/D+XyTtDJVcb1AYyGSDAqc5bwyd1PkGGxL/v6601iL+pW6zCT3gBHyw+QEd1w0Rvwcq7zcrqaJ4RYgi0XoFqG23i//Txu/+TKXK8rXmPPbjVxZFcxX/jobj5yYjvlhY6UeyqJvajlpJoHwyEah25zefQMXn0cAKPRwJ6iOj6688FNW0i1oshBYU4k8AZDYa43D2ExmjlZeSR2zq3BJgbcQ3NdQgixzmypAOUN+nit+T1u9DXwRsvpFblmW0KB10ePVXFifymOjMUHgdys+DDg0CJr8um6zoB7iHdbz/Evl3/Gmy2n8YY8ACgonKg4wj3b7sRg2Lw/bkVRuCOh/NH1liHCYZ3q3Eoqs6N7aeo6p9s/lIQJITaIldvbYQMwoKAoCrqu0zPex7hvYllbS4xN+GK9HZPRQFnh0q+Vl9SDmj9A6brOuN/NgHuIAfcQna5ehqP7OU0JhXSMmChVdnOwdNeS27WR1JTnkGHrZtIbYNIboGfITXmhg5NVR/jp9V7Cepi+iQGahlvZmV+d7uYKIRawpQKUxWShwlka29iuebidQ6V7lny9jr7x2NflhY5YVYOlSBziG562FiocDtPvHqRrvI/e8X4GJodjW2TMJsuaRa6ehVMpwWywYplns8LNxGBQqCnP5lpzpLxUY/sI5YUOsm1O9pfs4kpPJM3+bOcltuVUYNnga8CE2Oy2VIACqMnbFgtQTcOtywpQbb3xAFVVkjXPmQtLHOIbGfcy4hmjY6ybLlcvPRP9seoPczEajOzIrUItrCHblMsPtMiHsdVsxGDYPBl7C9lZmRMLUM1dY9x3uAKDQeFw6T4aBlvwBLxM+j1c7rmRtKB3tYTCOk0dI9gsJraVOlf9+wmxmWy5ALU9txJj2zlC4RDDkyOMeMbItWcv/MJpQqEwnf0rF6DsVhNWs5FR/zBdgQ5+fPkKZtPcPTKLyUJhRh6FmfkUZORR4SzBEk2ASFxLNddGhZtVaUEmDruZCU8Ajy9IZ/84VSVOLEYzxysO89btDwC42ncLtWAH2bbVDRo3W4Z4+1Jkf6qP31cTS4cXQixsywUoi9FMVXY5t0faAWgebuVo+cFFX6d3eDK2jYYz00LOAmud5qPrOm2jXfSbrtHni9z9ewNZmBMy7hzWTMqzSih3llCUmU+Wde4MwfkqmW92SjTF/0rjABBZuFtVEglCO/OruTnQSP/EIOFwmA86LvLEzgdWtT2JNzFa28iaBaiwHo4tUHb7JyNFgXOrNtX6N7H5bbkABVCbvz0WoJqG2zhSdmDRf7htPfHsvW0lziX/4XeP9/F+23lGPGMEjPFFvn5/mG2lFVTllFHuLMW5iGSOuSqZbxU7K+MBqrlrjPsPhzEaDSiKwsmqo/zy5qsAtI920THWHc/yWwVj7vhcYVuvi3BYX7UhV13X6XMP0jTUSstIO95AvCfd5erloj2bI2UHqM6tlEAlNoSt9+kFVGaXYTaaCYQCuLzjDE4Ox2q3paq9b3nDe8FwiPNdl7nWWx97zGo2oeDHqRSz37Gfx3curRxRYh0+u3Vr9aAAivMycGZacLn9+PwhOvon2B6d/ynKzEctqEGLbnV/uv1DPr23GOMqbHWv6zpjE/GEF48vSP/IJCX5K7/3Vperl3fbzuHyjs95zohnjNea3yUvI5ejZfvZllMhgUqsa5t3Ycw8TAYj1bmVseOm4dZFvX7CE2BwNLLOyGBQqChaXHr5gHuIn998JSk4mYwm9hfvolo5RrFSh29y6fcOiT0o6xbsQSmKklRAtqkjOQX/zoqDsSruY14Xl3purEo7PL5gbBh4yu3ula2sHgwFOd1+gZe012cEpwxLBvtLdnGodC8mY/z3YHhyhFNN7/Bu27kVbYsQK23rfXpF1eRto2GwBYikm99VcUfKd5MdCdl7ZQUOzKbU7r7D4TCXem9wsfta0mLRyuwy7tt+HD1oorU+kn03PO5F1/Ul3eF659nufauorczhYnQ/rpZuF8FQOLYMIMNs52j5AT6Ibgt/qec623MrKMhY2eruLvfMpQBtvS5O7C9dkev3u4d4s+V00nYiZqOZmrxt1OZvp8RRiEGJvOcDxbu40neLG30NBMORG5j6gSbq8qspySqa9fpCpNuW7EFBpKK3zRxZezTpn6Rnon+BV8S198U/EFId3pv0e/iV9hofdl2NBSeT0cS924/xxM4HyLRkkGk3xzL3fP4QHt/8qeVz8W3xOSiAwhx7LHHFHwglzRkC7C2qo9hRCESG4t66fYZwODzjOsuROLw3ZXDUM2vgWoxQOMSFriu8eOs3ScGpKqec39n3Me7bfpyyrOJYcAKwmW0crzjM/3bg40lzbmc7L0tlDbFubdkAZVAM7MiNb3XePJTadgzhsJ40/7QthQDVOzHAz26+TN/EQOyxkqxCPr3no+wu3BnrJSmKMm133aXV5PNs4Sy+KYqiUFuZMMzXOZr0vEExcH/1XbG5p+HJES71ruxQ39gcgWh6sFyMLlcvP7v5Mhe7ryfd6Ny3/S4er71/wULAdrONu7fdGQtefRMDsXWBQqw3WzZAAdTmbYt93TLSntIddP/IJL5oAHDYzUkBZTpd17nep/Gr+t/imcqoUhTurDjIU+ojOG0zg1vigt3hRdbkm+LzJyZJbM0eFESy+aa0drsIBENJz+fYnNyZsMTgYvc1hqaVjFoOV0IPqiAnHjhalxCg3P5JXm9+j5e01xn1xF9fklXEp/c+ya7CmpSHg51WB7uLamPH57qkFyXWpy0doIodhWRGt2PwBX10unoWfE37tOoRc30oBENB3rr9AafbL8T++K0mK0/WPcTh0n1Jwy+J8pzxD7KRBWryzSVxiM+6RcoczSbPaYvdQARC4VkDw75iddpQ3wcrNtQ3NhHvQR2ojW9a2dk/PiNYziUcDnO19xY/uf6rpE0XzUYzJ6qO8DH1kUUtQZhyuHRfLHFieHJ00YlCQqyFlG6vVVV9EvgWYAWuAl/SNM21mHNUVa0EzgAHNU0bjD62B/gHwAHowJ9pmvab5b6pVCmKQk3eNq723gIia6KqcsrnfU1i9fKq4tmrEIx4xni95f2kAq4FmXk8WnPvgsVpE3fXnV6TL1W+gAzxQXyY79yNXgCaOkbZWZmbdM7UUN/PbrxMKBxiaHKEy703uaNs37K/f+IQX0VRFvnZdobGPITCOp39E1SXzV3BZGrx9tnOS0nzTBBZx3e84nDs5mopMsx2DhTv4mL3dQAudF1lR27VqqTbC7FUC/agVFUtBH4APKNpmgq0AH+9mHNUVf0C8A4wfUXkfwP+UdO0Q8D/DvyrqqprOibAJuPcAAAgAElEQVRVm7899nXTcGtsfcxsIutYottYKAoVxcnBRtd1bvQ38PObryQFJ7Wghqd3PZZS5fTcrIQ5qCVu/54UoLZwDwqmDfP1uPDOkngy21Bf4nzhUgSCISa9ASCyFMFhN8fWYsH86eb97iF+pb3Gqaa3k4JTjj2bp9SHeWjH3csKTlMOFO/GaorcEI37Jqif53dfiHRIZYjvMeC8pmmN0ePngM+rqqqkco6qqmXAJ4DHZ7m2EZi6pc0ClvaJvAz59lyKHNHhF13n7dtnuNJ7c9ZzO/rGY8N1JXkZSRlynoCX3zS9zftt5wmFIwHCaDBy7/Zj3Lf9OKYU70ydmZbYDrhubyBpTVMqdF3HH4gPUZm3eIDKzbJRlBv5MA+Fda63zL5h4b5iNfZ7ENbDvNzwJj3jqWd2Tpc4vOfMsGAwKEkBqrXHNWPeZ9gzymvN7/HLm6/Sm/C9zUYzxysP88yej1DmXHiH5lRZTBYOl+6NHV/svkYgFFix6wuxXKkEqEqgI+G4E3ASCSgLnqNpWremaZ/SNK1hlmt/BfhzVVU7gdeAP9I0bWm51UukKAqP1d5HfkZ86OdsxyXOdl6a8QHSnJAJNpVeHhmK6eSFGy/RPtoVez4vI5dP7nkiKUsvFQaDQk7W0nfXDQTDsXabTYZYsNvKDuyMz/9caxokFJo5x2RQDDxYfSLWowiEArzc8EZK85KzSUwxdzoiNRWL8zJiSSuT3gD9w5MMuIc413mZn1z7FS9cf4mWhHkmRVHYW1zH5/Y/zcGSPasy/LanqC7WG/MEvFzr01b8ewixVKkEKAOR+aHpQos8J4mqqjbgJ8CzmqZVAPcB/z06V7WmMsx2PqY+krRg8UrPTd5tO0dYj3yYeX1BbifW3yvL5EZ/Az+98RK/aXw7nqUH7CvexSd2P06ePT68tBh5SfNQi+tU+mV4b4adFTlk2iKVI9zeAI3TUs6nZNucfGzXI9ij6+NC4RCvNr5F60jnor9n4vyTzabTO95P62g7puwhBvUWevV6/vnyL/jFzVe53HNjxjxTdW4Vn933FHdX3Rlrz2owGYwcKTsQO77SezPpd1mIdEplvqcdOJ5wXA6MaJrmXuQ50+0DMjRN+zWApmlnVFW9Eb1OxzyvWxUWk4WP1j3E683v0TYa+UCqH2ii3z1Iri2boeEQwyE3JqyYHW5eammYMRxiN9t4oPrEsouP5jqX3oOS+aeZjEYD+2sLOHM90hu60jCAWpU7a882z57D07se5dfa67j9k4TDYX7b/A4PVp9Mmq+cSygcYnBymBv99XTrnXh1F64xE631kezMMd3PsB7JBA2MG3E64zcxJoOJyuwy9pfsoiSaWbgW6gqqudp3k1GPi0AowPmuK9y3/fjCLxRilaUSoE4B/1lV1Z3ROaYvAy8u4ZzpmoBsVVVPapp2WlXVGmAPcGlxb2HlmAxGHq29l7dvn6Fx6DYQScEdnhylpXuMST0y+lhmzSQQigcRk9FEXf4OjpTtX5G7XYc9vtPrYqtJJK6B2io76aZi3458LtzqIxgKMzDqoWtggoqi2RdZZ9ucPL3rUV5qeB2XdwJd13nj9mm0wWZKs4opyyqiMDMfo8FIMByi3z1It6uPnvF++twDhMNhWkddTOiRGxiLOd4jdtjNKAroOnh8IRRM1OZXUp1bRUV2acpzlSvJoBi4q+IOXm18C4D6wWZ2F9YuuoCyECttwQClaVq/qqpfBF5QVdUCNANfUFX1KPB9TdMOzXXOAtcdVVX1k8B3o8N9QeAPNU1LayqRQTHwQPUJMix2rvTeAl3HFwgx6Q1Gn4fsaAmdHLuTPYV11BXsWNHtwxMX186WdTafxB6UBKg4m9XEru15XI/utnulYWDOAAWQZXXwtPoYv254nVHPGOg6Xa5eulyRlHWjwUiOzcmId2zWdVOJQ60ZFguFmflkWuxkmDMIj40yOhrCjI2CyXJKi/IpyXCmJThNqcoppyqnPDKPquu8336Bj+96TKqdi7RKKaVb07SXgZenPTwMHFrgnOnXUaYdvwncmVJL15CiKByvOMz+ol2Mesc4fbONYaWXAF5ysg2ohWWoBTWUZRWvyh9wUnagP7UFnVP8sgZqTgd3FsQC1O0eFyPj3qS0/ukyLJG5yddb3qc7GpimTK2Zmo3D6sAeNJGjZGHDyR/ceRcWU/xnmuUb4N0rkYSarn43Xf1uFEWhND+D7WXZ7NuRn5abixOVd9A51kNYD9M/MUjTcCs786vXvB1CTNm6dXBSkGGxYzPZmBgcIl+JlEV6cn/1vAssV4ItYQ+n5fSgZA4qWW6WjepSZyzZ5UrDAA8cmT8nx2628ZT6MBN+Nz3j/ZGhvIk+XN745pI5dieljmLKnMWUOooI+A0Ma5HF3w67OSk4Aajbc6lvH2YguqYOItmg3YPuyH8DEzx1z44Vec/9I5OMuLxUl2UvGPSybU72l+ziSk9kmcXZzktsy6lY0dEBIRZDAtQCOvvHmfBE5hLsVlNs+/DVZE/qQS0uQCWugZIhvpkOqUWxAFXfNsLxfaUp1St0WDLZmV8d61FM+N24vOPk2LPJMCcXaG0fjmfkOTOtTGezmPjsw3UMu7zc7nbR2uOib3gytjygtcfF+KSfrAzLkt9nKKxz9npPbMsRu9XEnXuK2Vudj9E4d/Lu4dJ9NA7dZtLvYdLv4VLPdY5XHF5yO4RYji1diy8VWlt8GKeuKndN1hVZzMbY0KHPHyIUTr2QZ2KShPSgZioryKQwWrg1GApzY46FuwtxWDIpziyaEZwgOcU82zF7kFEUhfxsO0d3F/Pph3byxaf2UFYQrzSS+Hu3WC63n1+81RQLThBJtnnnUhc/+k09De0jcxaHtRjNHCuPjdxzrbd+Rgq8EGtFAtQ8/IEQzV1jseNd21Z2Q7u5GAxK0kaDvkX0onyBxN10JUBNpygKh+riKdxXGgdo7hyddfHuXMJhnd+ebeP//cU13r86c6sK10RigJrZg5pNhs3M3h3x36/5gsh8mjtH+clrGr1D8RUeU3uMQSR4nTrbxr++1kD/8OSs19iZX51UVeODjouLbocQK0EC1DyaOkcJRj+48rPtFOSs3oLJ6ZISJRYxD+VLGuKTH+9saityYqn8Hl+QVz5o5R9/fYM3P+yge3BiwcBwob4PLRpALjcM4PYkr4cbcydUkchMfZhuR3l2LJgMu7xJc1QL8QdCvH2xk1c+aI31og2Kwsn9ZXzp6X3cc7As6XdqYNTDi+82z7p5oqIo3F11FKK9+PbRrhlJIkKsBfkEm0d9a3yYZde22Rd2rhZ7YqLEIjL5pJLEwoxGA8f3lib9PH3+EDdahvj5m0386Df1cwaHjr5xzt/six3ruk5LQi8bkuvwpdqDAjCbjNSUxxNwUhnmC4d1bt4e4l9eredaNEMRIoHxUw/WcseuIkxGA4fqivi9j+7myK5iTMb4rs2/OdM6a++xMDMfNT+eqFE/2JLy+xBipUiAmsPYhI/uwUimlkFRULflLvCKlWWzLrEHJQt1U7K7Oo9/97jK0d3FM3o5o+M+fvF2Ex0JOycDTHgCnDrbNqOHlbhbr67ruBJ6UNmL6EEBqAnDyA0dI/POP3YPTPDT1xt440JHrHI6QE15Np99pI6S/Myk861mIyf2l/KJ+2swRINz3/AkH1yfvd7g3qK62NetIx1SSFasOQlQc9Da43evlcVZZNjWNtU2cThmManmsg4qdblZNu7aV8rvfWQ3n3qwln078mNDbP5AiF+/10JjR+T3IBzWOXWmLXazYLeaYj2w7kF3LEB4fEECwUiPxGo2LvpnUF7oSBp+nB4kIVJo9pUPWvn5W00MjMZ7eg67mUePVfHEie1Jvz/TleRncmJ/aez4csMAt7vHZpyXn5FLjj3SowuGg9weWfMKZGKLkwA1h+aO+F3xru1r23uCpQ/xyTqoxVMUhbICBw8cqeTTD+2MBYhQWOfU2XauNg1w9kZvrEetKApPnNhOabSHout6LJkmaZsNh2XRw8IGg8LOqvjvm9Y2nPR8MBTmpfdvJ1XWNxkNHNtTwuef2IW6LS+l73morpDqhO0/XjvfPmM+SlEUdk7bL02ItSQBahYTngBD0Srixmn7+KyVpSRJ6NGyTFNkiG/x8rPtPPPQzliFCV3XeedSFx/Wx+edju8tobzQQW1lfL5oKmCMJQ3vpT7/lGhXwnByS9dY7Geq6zpvX+ykLyH7Tq3K5Xef2MWxvSWYTan/vBVF4eE7q2Jrreaaj9qZF68k0enqZdKfeuKGEMslAWoWHb3xYZXSAsei/vBXylLq8QVDOuHonIXJaIhNhovFycqw8MyDtRTnzdy1tqokiyO7Ituy7CjPifVWugYiw3xLSTGfLj/bHlurFQrrseB3rXmQW63xHtW9h8p59Pg2HEtc0Guzmnj8rm1J81HvXulOmvdyWDMpzSqOHOi69KLEmpJPsFm098UXJlYVz11QdDUlJUmkuA5Kek8rx2Y18Yn7a9iWUDnEYTfzyJ1VsaDksJspzY8EsalsvsSNCudapJuKxKQcrW2EroEJ3rscX3O1e3seB2oLZnvpokyfj7rePMj/+k09LV1jsWSQxHp8U1X+hVgLEqCmCYd1Ovriddamds5da4kLdb2+1Oag/EkBSn60y2U2Gfno3dUc3V1MdamTp+7ZMSNZpqYivp9TU+fYtCoSS+tBAeyszE3onU3wyulWwtGAUZyXwf13VKzYsodDdYXsSEhvH53w8fLp2/zirSb6hiepzq3EYIj8Pg1NjjDsmX3DRyFWmnyKTTMw6sEb7bFk2MzkZ6/d4txESUN8KfagZA3UyjMaFO7aV8qT9+ygIGdmWaPEANU1MJG0A/JiU8wTZdrNVBbHSx9N/Q7YrSY+cmL7ig7fKorC48e3cfeBsqSsw+5BNz99vYF3L/ZQ5SyPPS69KLFWJEBN096bOLznSNt+OEtZB5VUh09SzNdEZJgvns03dZNgNChk2pe3NGF6aS2DovCRE9uXPOc0H6PRwGG1iN97YjcHdxZiSKg5Wd82giUQ37ywaah1SWWYhFgsCVDTtCckSKxF5fK5WEyG2OR1IBiOlVyaj6SYp0dtQi9qijPTuuybm+lbZNx7qJyyQsc8r1g+m9XEvYfK+XeP7aIyYf7VP56J1RQZsnT7J+mZ6J/rEkKsGAlQCXyBUCyFV1EUKopW98NgPoqiJPWiUlkLJUkS6VFTMXN/sOUkSEwxmww8dLSSwlw7J/eXsa9m7bZgz8mycnxvSey4d2iSmrxtsePGQRnmE6tPAlSCzr7x2ER0YY59zatHTGe3LG7jQpmDSg9HhmVGWaGlroGarrYih995ROWOXUVrPtxcmGPHHJ3rcrn9lGXE56FaRtoJhhe327MQiyUBKkF7X+LwXnqy9xItdh5K6vClT+20XpRzBXpQ6WY0GihOCLx+txWnLfJ3EQgFaBvtTFfTxBYhASpK1/WkumfpWv+UyLbITD6pw5c+NdPmoZaTYr6elBXGA1TP0GTSmqhbA03paJLYQiRARY1O+GK1yCxmY9KdY7rYF7kWSpIk0icrw0J5NIHBoCizpqRvROUJSRndA27U/B3xIrmuXgYnh+d6qRDLJgEqKjF7r6LIsSZbuy9ksdUkJECl18N3VnFwZyFPnNgeKzi70RXnZcT+FkbGvRh0C9W5VbHnr/dp6Wqa2AIkQEUlpZevg+E9APsit9zwJ+2mKwFqrTkzLdx7qDypKsNGZzIakmoSdg+6OVC8K3bcNNQqBWTFqpEABYRCYboH4uWNKtdJgLIlbLnhSWWITxbqilVQWpA4zDdBkaOAIkekDmBYD3NjoCFdTRObnAQoIneFgehC2ByHdd1McC82SULWQYnVkJgo0T3oBuBA8e7YYzf7GwmGUt9UU4hUSYBi/aWXT1n8EF/iHJT8aMXKKM3PjFU1GRrz4vUH2Z5bgcMaCVy+oI8Gqc8nVsHc+0InUFX1SeBbgBW4CnxJ0zTXYs5RVbUSOAMc1DRtMPpYHvB3wB7ADvzfmqb983Lf1GIlzj+tl+E9WNw6qFAoXg7JoCiyF5RYMRazkcJcO33Dk+i6Ts+gm+qybPYVqZzpuAjA9f56dhfWpq12pdicFvwUU1W1EPgB8IymaSrQAvz1Ys5RVfULwDtA2bTL/xDo1DTtMPAI8D1VVSuW/G6WwBcIMTQWmeQ1pLm80XTTt32fr0Cnb9oaKPmgECupLHEeKjrMt6uwFrMxkq046nHRMdY962uFWKpUbrMfA85rmtYYPX4O+Lyqqkoq56iqWgZ8Ang88aLR3tOjwP8FoGlaJ3AcWNOFFUOj8QykvGxbWnbPnYvJaIil+AZD8xeMlRRzsZqS5qGiCUUWo5ldhTWxx6/21a95u8TmlkqAqgQ6Eo47ASeQlco5mqZ1a5r2KU3Tpqf61AI9wNdVVX1fVdULwB2apk0u9k0sx8BIPEAVZK+vxZWKoiTtCzVfJp+kmIvVVJqwcH1gxEMgGPld3FekQsLC3aHJkbS0T2xOqQQoAzDb2FJokedMZwaqAZemaXcDnwP+i6qqR1Jo04oZHIsHqMJ1uPo/KZNvnnkoX0KWnwQosdJsVhP50Ru4sK7TOxS5j8yyOqjOqYydd016UWIFpRKg2kmeOyoHRjRNcy/ynOmmBqx/AKBpWhPwHnAshTatmIGEIb7C3HUYoCypVZNI7EHJGiixGsoThvm6EtYNHiiJL9xtHLrNhH++P3shUpdKgDoF3KWq6s7o8ZeBF5dwThJN024DF4HfB1BVtRg4CVxIrenLFwqFGR6Lb9G9HuunJSVKzNeDkhRzscqSEiUG4kGo2FGI05LLhCdAWNe52iu9KLEyFvwk0zStH/gi8IKqqreA/cAfq6p6VFXVy/Odk8L3/yTwuKqqN4C3gL/QNO38kt7JEgy5vLH9n7Id1nU5NGZLWgs194ipLNIVqy0xUaJv2I0vEEJrG+bnbzbRptlo7XHRPTBB/UAT3oB3nisJkZqU1kFpmvYy8PK0h4eBQwucM/06yrTjduBjKbV0FQwmDO+tx94TkJwkMc8QX1KZIwlQYhVk2MzkZFkZHfcRCuv88Fc3YhVYMsjFqmQyOuGmMNfH9X6No+UH09xisdFt6bGgxAC1HhMkILke33xDfLIXlFgLicN8gYRlD4qikEclug7DLi/X+xvwhwLpaKLYRLZ0gEpMMV+3ASopSWK+NHMZ4hOrb3qlf2emhbv2lfLw0SocFGLGxsi4D2/Ax62BxjmuIkRqUhri24x0XU9KMd8IQ3ypJ0lIgBKrY0d5Nkd3FzPpDVBTkUNlURYGg4Ku63xY34drvJK+UCOj4z6u9dWzr0jFaJDfR7E0WzZAjU34CQQjQxR2q4kM2/r8p7ClWDBW5qDEWjAYFO7aVzrjcUVR2F9TwMhlD0O0Mezykuv00DDUwu7CnbNcSYiFbdkhvoHReMGKwlz7uq1dl5hmLkN8Yj3bVZ2HxWwiV6nA6w8x6Q1wpfcmYX3uEl1CzGfLBqiNkCABMytJzFUwdnqxWCHWmtVsRN2WRzYlGDExNObF5Z2gZbg93U0TG9SWDVADGyDFHCIFY82myI8prOv4g7PfjcoclFgPDtQWYFBM5ChljE9GhtEv996YtxK/EHPZkgFK1/XkIrHrOEDBwokS4bAem09TFCUW0IRYa3lOGxVFWeRQjqIbGHZ5GZ4cpXm4Ld1NExvQlvwkm/QGYxsAmk0GctbJFu9zSUo1nyVAJc8/GdbtfJrYGg7UFmBUzOQo5YyMR6q1nO+6Qig8X+1oIWbakgEqqYJE9vpNkJhim7Zx4XQyvCfWk+2lTpyZFnKpQA8ZGZvwM+6b4NZAU7qbJjaYLRmg1nsF8+nsC6SaS4AS64nBoLBvR6QXladUMezyoAMXe65LdQmxKFs+QK33+SeYlsk3Sz2+xDVQkmIu1oM91XmYjAayKSXoMzHu9uMNeGW/KLEoWzJAbYQisYkW2lVX1kCJ9cZmNbF3Rz4GxUieso2+kUl04ErvTTxS6VykaMsFKF8gxNiEDwCDopDvtKW5RQuzWRLnoGSIT2wMd+4uxmo24qQYAlZGXF6CoSAXe66lu2lig9hyAWooofeUl23DaFz//wQLbfsulczFemSzmjiyqxhFUcinmv6RSUJhnVv9Tbi84+luntgA1v+n8wpLWv+Uvf6H9yCVIb6E7d6lByXWkQM7C3DYzWSShznsZGjMQ1gPc77rSrqbJjaALRegEiuYr+cSR4kWHOLzJ6+DEmK9MBkN3LW/FEVRKKCawTEvgVCY5uE2+icG0908sc5tuU+zjZZiDgsv1PUF4o9ZzeuzKrvYuuoqcynIsWNXnGToeQyMRAo1v9t2TgrJinltqQAVCoUZHotnEG2EDD6Y3oMKzahr5ksY4pMelFhvDAaFk/sjW3QUsoPR8QC+QIihyRFu9jekuXUiFY1Dt3ml4U26Xb1r+n231KfZhCdAOPrhnu2wbpiUbKPREGurrutJQ3ogSRJi/asqcVJZnIVZsZNHFb1DbnTgfNdV3P7JBV8v0scfCvBO61k6xro503lpTb/3lgpQWRkW8qJp5ftr8tPcmsVJ7EV5ps1DJaeZyxCfWJ9O7i9DURRyqcA3aaKt14Xb5+ODjovpbpqYx4TfHaujGAjNvWnqathSn2YGg8LvPFKH1x8i025Od3MWxW414XL7AfD6QpAVf256sVgh1qPCXDu7t+dy8/YwRdTSOXmNps5Rxt0aav4OKnPK0t1EMYvEhdUZ5rWdFtlyn2ZGo2HDBSeYtvX79B6UbPcuNoj7DldwqK6QTEMeTqWIcFinZ8jN9985Rf/IRLqbJ2YxGYgnltnNa1vYYMsFqI0qaev3hEw+fdomhhtlXk1sTSajgXsOlvPMg7XUOXdjJPL7OuJx8d9fe4P6tuE0t1BMl9iDspvXdmsiCVAbRHI1iXiPyR8Mx7L6LGYjBsP63jpECICS/Ew+/+h+7q4+wtRuN4PhNl4+q3HuRq/swLuOJPagZIhPzCppLVTCEF/SIl3ZSVdsIEajgU/deYw7a6uxWYzo6PTTyNkbPbx+vp1QSNZIrQdJPSiTBCgxi7m2ffdLoVixgRkUA4+rJ9lRno0jw8ykPso4A9S3jfBv77bMWjlFrC1PMDFJYm3noFLK4lNV9UngW4AVuAp8SdM012LOUVW1EjgDHNQ0bXDaa6uBD4HHNE27sPS3s3klLdadK0DJGiixARVm5nOgZBeKotEzOMGgq5lMcukamOCFNxr5+H01ZGVY0t3MLWsyaQ5qnSVJqKpaCPwAeEbTNBVoAf56MeeoqvoF4B1gRh6pqqo24F8A+Q2cR4Ytnnk4MOohHI6M0ctWG2IzOFp+kExLBqUFDgryzAxyG4DRcR+nzrTJnFQaedZ5Ft9jwHlN0xqjx88Bn1dVVUnlHFVVy4BPAI/Pcf2/B34ISOXIeRTm2mPzUBOeAE2do0BygJIMPrFRWYxm7q46ikKkBJmzyI2PyABMz5AbrX0kvQ3cosJ6GE/QFzu2m9ZfgKoEOhKOOwEnSUtF5z5H07RuTdM+pWnajKJbqqr+AWDWNO1/LLrlW4zJaODAzoLY8UWtf0bZIwlQYiPbnlNBVU45ANmZFpS8LvRoMdnTV3uShrPF2vAGfRDtvVpNVoyGtf2MSSVAGYDZ+tehRZ6TRFXVO4AvR/8TKThQU4A5usHi4KiH9r7x5CE+mYMSG5iiKNxddRSTITJSkJEVwmuJFCed9AY4d3NtC5WK6Wug1n738VQCVDvJc0flwIimae5FnjPdF4j0sk6rqno5+vofqar6dEot34JsVhO7q/Nix5e0/mlljiRAiY0ty+rgSPl+AAyKgiFngIAemQO52jjIUMJ+bmL1pTODD1ILUKeAu1RV3Rk9/jLw4hLOSaJp2tc0TavTNO2QpmmHgG7g85qm/Vvqzd96DtUVYYiubOzsn6CzP14eRpIkxGawv2gXeRm5ADgyTfgcHei6TljXeedSlyRMrKFJf0KCxBrPP0EKAUrTtH7gi8ALqqreAvYDf6yq6tFoz2fOc1av2VuXM9PCzsqc2PFgwgaMEqDEZmAwGLhv2zFQFBQgI9vDhDIAQNfARCxBSKy+xB6UfY2rSECK66A0TXsZeHnaw8PAoQXOmX6dOevwaJq2PZW2CDisFs2a1SRzUGKzKHIUsK9I5XpfPTaLiYnsLoKjOZgUC+9f6WZ7qROzSX7fV1tyJfN12IMS609Bjp2qkqwZj8sclNhM7iw/gMOaCUButplRU2Rt1IQnwLmbfels2paRzkW6IAFqwzqyq3jGYzLEJzYTs9HMfduPA2A0KGTkupnQI8slLzcM0D0g23OstqRFuutxDkqsT2UFmRTnZSQ9JpsVis2mwlmKWlADQLbDyqS9jZAeQNd1Tp1tk1p9qyw5i2/t56DkE22DUhSFw2pR0mPSgxKb0V2Vd5BhsaMAxQUWRk1tQGSo780POyWrbxXJEJ9Ysh1l2bFeVHmhA6NRfpxi87GaLNxTdQwAs8lAZv44bj2SJNTcOcrN27LJ4WoI6+FIJYmodAzxpZTFJ9Yng0Hh4/fV0Dc8SWlBZrqbI8Sq2Z5bwY68bbQMt+HMsDCU00FwNAOTYuXdy12UFmSS51z7D9DNzBuIlzmymawYDGt/Ayy33BucxWyksjgLk/SexCZ3suoIVlNky/HcHAOj1gbCeohgKMxvzrQRlA0OV9RkMH1VzKfIp5oQYkPIMNt5uOZuFEXBoCjkFYQZNDSh6zpDYx7euyxVJlZSch2+tU+QAAlQQogNpMJZyonKOwCwWUxk5E4wQicA11uGOHW2nUBQelIrId2LdEEClBBig9lbpLKrsBaAXKeNQGY3bn0IgMaOEX7+ZiMutz+dTdwU0p3BBxKghBAbzNS2HCVZhShARWEmfmcrPj2yecLAqIefvt5AlyzkXRZP4hyUSahZeogAABd0SURBVIb4hBAiJUaDkUdr7sNhzURRFIrzbZiK2wkokwB4fEFefLuZq00DMi+1RDLEJ4QQS2Q323i89n5MxshqGXtGGHPpbUKWMYDY9hyvnWsnEJTdeBdLhviEEGIZ8jNyeWTHPbEgZbGAubgd3dEf6zlp7SO88HojI+Pe+S4lpkmqwycBSgghFq8qp5yP73osVvncZDRgzu/HWNBJWI/0nIZcXn76eiPNspdUyiYD6a3DBxKghBCbQH5GLp/c/QQlWZH6lAZFwZTlwlLeik9xAeAPhHjlg1bev9otqegLCIfD+KbKHCkKtugC6bUmAUoIsSnYzTaerHsoloIOYLB4MZXeZsh8C68+DsAlrZ9/evkm52724vVJNfTZJFYxt5msGJT0hAqpxSeE2DSMBiP3bjtGnj2HMx0XCeth7BYTltIQnf3X0T3Z5LMNfJmcu9HLpfp+dlfncaiuCGemJd3NXzfWQwYfSIASQmwyiqKwr1ilKqecD7uu0jjcitEAVSVORlweesYuYw5mk00pmcE8rjYNcr15iJqKHA7XFVI0bZ+1rWgyzRsVTpEAJYTYlJxWBw/uOMnB0j1c6LpK60gHeU4buU4bYxM+BsfqGfCZyKYUp15CY8cIjR0jVBQ5OFxXRFVJFoqipPttpEXiEF+66vCBBCghxCaXZ8/hsdr7GHAPcaHrKh1j3eQ4rGQ7rLg9fgZHuxjytJFJPtmU0NGn09k/QZ7TxrE9JdRUZG+5QCVDfEIIsYYKM/P5SN2DuLzj3BxoRBtsQbGDw27B4w8yNDpOt3sQo27BSTH+sRJePeOluiyb+++owGE3p/strJn1sEgXJEAJIbYYpy2Luyrv4Gj5QVqG27g50Ej/xCAVRQ6KgxkMubyMuDoZDndgxcFgVy6NfZ08fHAX+3YUbIneVOIi3XStgQIJUEKILcpkMFJXsIO6gh2MeMbQBptpGLqN2WSgMMdO3/Akw64JfEwwHOig9cJVyrQSTqo7qSkqoTAjL1bBYrORHpQQQqwTufZs7qq8g2Plh2gf60YbbMZk7CLbYaF7wI0vECJMiM7xLv71QhdGg4LdZqYwM4fK3EK2FxZT6Mgh2+bEaXGkZXv0lZSYJJGRpkrmIAFKCCFiDAYD23Mr2J5bgT8UoNvVS+toF+ebG+kcHmGqMHoorDMx6Wdisp/bA/2823iDrAwLOVlWnBlWnDYHTqsDhyWTTEsGDktG5P/myP/NxvU9nzW5DurwgQQoIYSYlcVoZntuJdtzK7l/+3Ga+/p5+1Y9XaP9uPxjBJhkaiMPXQeX24/L7cdknCAnawJnphWTUYltUa8okTVaCmAxWSJBKxqwsm1Z5Nic5NicZFkdaavcABAKh/AHoxs+KgpWU/oWMKcUoFRVfRL4FmAFrgJf0jTNtZhzVFWtBM4ABzVNG4w+difwt0AmYAT+RtO0f1numxJCiJWkKAq1JcXUlhSj6zrjkwE6B8Zo7u+ldaiX/vFRAngI6B4CIR+Do14GR2dWT1cUsFtNOOxmMu1uMmxmpqdcGBQDTlsWefYcShwFFP3/7d15dNzVdcDx78xo33dLsi15wb4gO9jEmDULUAJZaAMkLbQlZD0cEtK0SZs2TU+bQtOTpElKW06SpiGFkDRNE8IBmtBCCOWEhDohYGxs4+tdtqx9HS2jbWb6x/tJHslaRqo1+o24n3N8kOb35sfvejxz573fe/cVVFKRW5qyYcMpa6CWscwRJJGgRKQSeAC4UlUPi8gXgM8DH0m2jYjcDtwN1CY8JwD8EPiAqj4tImuAl0Tkl6p6+JxFaIwx51AgEKAoP4uG/Eoa1lUCr6MnPMzBxm60sYfw0LBLVowwPu3PWHyEyPAIQ8Pj0BMhGAxQkJNBXm4m+TmZ5GRnEIvH6I300Rvp41h3I+BKOFXml1NdUMna4lpWFVQsWeKIjPljkS4k14O6DnghIWl8DdgjInepany+NkANcCNwPaAJ580G7lbVpwFUtUlEOoA1gCUoY0zaKC3K4fLX1XLplhpOtfdz8EQPXX0RxqMxotE44zHvv9EY8XicKGMuacVHGIuMMByJEGaIaGCAzOwYeTkZFORlkZftPqKjsSit/e209rfzcst+sjKyWFtUw9riWuqKa8k5h/eJ/LJIF5JLUGuBUwm/NwFFQCEQnq+NqjYDNwOIyGQDVR0Gvjnxu4jc4Z1z10KDMMYYPwgGA9RXF1FfXTTj8cjIOE3t/TS1D3CqrZ/w4OhZbWLD44wORxjo7Wcsf5iC0nGCmWNThgJHx0c52t3I0e5GCARYlV9BfYmb3FGSM/P/O1lTppgvYx0+SC5BBWHyXmCi6ALbzEpEPgX8IfBWVY3M194YY9JRbnYGm9aWsmltKfF4nPDgKE3tAzR3DNDSNUh4cJRgIIMcCsmhEIYgOgT5hQHW1oUI5A7QFG5haHTozEnjcdoGOmgb6OBXTbspzimivmQ1G0rrqMwvX/DC4sh4wiLdLP8P8Z0ELk34fTXQo6qDC2xzFhHJBh4EGoDLVfVEEtdjjDFpLxAIUOzVBNyyoRyAgaFRmjsHOdka5tCpXmIx970/3B9n//5xivKLuOEN24hnDHOy7zQne5tpG+xkcv470DccZm9rmL2tr1KYXcDGsnrOK1tHWV5JUtfll0rmkFyCegr4sohs8u4x3Qk8tog2M/kOkAdcMV8yM8aYla4gL4vNdVlsrivlsq017Dncyb5jnZM7AIcHR9l7uJOrdqylPK+Ui2q2Ehlzyaqx9zRNfS2Mx85swtg/MsDLLft5uWU/pbnFSMVGzq88j6w51mFFxkYmf17OMkeQRIJS1XYReT/wsIhkAUeB20XkYuB+Vd0+W5u5zisilwPvBg4Bv0i4P/Vnqvrk4kMyxpj0V5CXxZXbatlxQRUvvtrO7kPtALR1D01pl5uZg1RsRCo2Mh6L0hxu5VjPSU70nGI0OjbZrifSx65TL/FSyz62VglbV8mMW7n7ZZEuJLkOSlWfAJ6Y9nA3sH2eNtPPE0j4+X/hrCUAxhhjEuRkZXBxw6rJBNXVN8x4NEZG6Oxp5hnBEHUlq6krWU20/hJO9bVwpPsEjb1NRGNuSsDo+CgvNb/C3rZXaajcxIWrLphyrynikzp8YJUkjDHG97IzQ5QUZtPbP0IsHqezN0J1ef6czwkFQ5Nlm8aiYxzpPsGe1gOEhwcAGI+Os7f1Vfa3H2JH7YVcWH0+wUBwaiXzNLgHZYwxZplVlebR2+/uD3X0zJ+gEmWGMrmgchNSsZFj3SfZ3bKPnkgf4NZY/appN0e7T3Bl/c7JYcFAIED2DEOAqWQJyhhj0kBVaS6HTvYA0N4zNE/rmQUDQc4rX8fGsnoae0/z6+a9dA+5c3YN9fD4q09Nts3NzF32va8sQRljTBqoKsub/Lm9e3EJakIgEGBd6RrqimvZ23aQF5v3Tt6jmpC7zL0ncAtsjTHG+FxlyZkeTXf/CGPjSdVBmFMwGGR7TQPv3vJ2aouqpxxb7inmYD0oY4xJC5kZIcoKs+kKDxOPx+nojVBbUXBWu1Nt/ew72kl2VgaryvKoKs2jrDiHUHD24brinCLesfkaDnUdY9ep3YxGR5GKjUsZTlIsQRljTJqoLM2jK+ymgXd0n52gotEYT+5qZHjULdY9cLwLgFAwQEVJLtXl+dRU5FNbkU9eztTFuoFAAKnYyKby9YxGx2ZcI5VqlqCMMSZNVJXlctDtwDHjRImm9oHJ5JQoGovT1j1EW/cQew53AFBSmE1tRQH11YVsWF08OXwYDAR9kZzAEpQxxqSNqtIzEyXaZkhQR0/3Tf68pqqA7KwMOnqGZqya3ts/Qm//CAeOd1FbUcBVO9ZQVrS8656mswRljDFpoqIkl2AgQCwep7d/hNGxKFmZIQBisTjHm88kqMu21kyulRoaHqO9J0JL5wDNHYO09wwRjZ0pMNvcOcD3fqJctLmKnQ2rZqxSsRwsQRljTJrICAUpL86ho9dVe2jvGWJNVSEArV2DREbc8F5+TiarEqal5+Vksq4mk3U1bq+o8WiM9u4hjjX3sfdwJ7F4nFgszosH2zh8qoc3v37NrHtapZIlKGOMSSOVpXkJCSoymaASh/fW1xbNucg2IxSktrKA2soCLlhXxrMvNtHS5TaUCA+O8p/PHaOiJBepK0XqS8+aUJEqlqCMMSaNVJXmcuC4+7nDuw8Vj08d3tuwujjp85UX53Lz1edx4Hg3z7/SzMioW1/V2RuhszfC86+0ULeqEKkvZX1tEZkZoXMXzDwsQRljTBqZMlHCqyjR0RuZnAiRnRlideXZ66PmEggE2LKhnPW1Reza18Khk72MR90eVPF4nMbWMI2tYTJCQdZWFbBhdQnraovIzV7aFGIJyhhj0ki5t+g2GnNbxg+PjHMsYXhvXU0RoUVOcsjLyeSai+t4w7bVHGnqRRt7ON0xMHl8PBrjeEuY4y1hAoEAtRX5XLqlmtoFJsRk+WOqhjHGmKSEQkEqSs6UIerojXD89OKG92aTlRmiYX05N111Hre/vYFLt1RTPm0Kejwe53THAI/97CjxhC3nzyXrQRljTJqpLM2bHN47dLJnsrpERihIXXXhOf1/FeVnsbOhmp0N1fT2j3CsuY/jp/to7R4iHo9TmJ9FLA6hJSh8bgnKGGPSTFXpmR7UwcaeyZ/Xripc0kkMJYXZvF6qeL1UMTQ8Rlff8OSQ41KwBGWMMWkmcaJE4vDaxnMwvJesvJzMJZ9+bvegjDEmzZQV5ZxV7SEYCEwuxF0pLEEZY0yaCXrVyRPVVhaQs8TTvlPNEpQxxqShxPtQkNrhvVSxBGWMMWkocQt4gPWWoIwxxvhBTXn+ZL292ooCCnKXp17eUlpZA5bGGPMaUVyQzVsuqaO5Y4Dtm6uW+3KWhCUoY4xJU5vrStlcV7rcl7FkbIjPGGOMLyXVgxKRdwCfA7KBvcAHVTW8kDYishbYBWxT1U7vsU3AN4EKYAC4XVUP/n+DMsYYk/7m7UGJSCXwAPAuVRXgGPD5hbQRkduBnwG1007/b8A/q2oD8BngYRFZmpoZxhhj0koyQ3zXAS+o6mHv968Bvz8tkczaRkRqgRuB6xNPKiKrgfOB7wGo6n8BBcBFiw3GGGPMypHMEN9a4FTC701AEVAIhOdro6rNwM0AIjL9vM2qGpv2vDXAS8mHYIwxZiVKpgcVBGba7CO6wDbJnDcwz3OMMca8RiSToE4y9d7RaqBHVQcX2Gam89ZMGyqsxfWijDHGvMYlM8T3FPBlEdnk3WO6E3hsEW2mUNUmETkC3AJ8T0SuB2LAK3M8LQTQ2tqaxGUbY4zxu4TP87M2sgoks1WviLwdN4U8CzgK3A5sAO5X1e2ztVHV7mnniQOV06aZfwM3zXwYuENVZ73/JCJvAJ6b94KNMcakmzeq6s8TH0gqQfmFiGQDO4EW7F6VMcasBCGgBjcTfCTxQFolKGOMMa8dVurIGGOML1mCMsYY40uWoIwxxviSJShjjDG+ZAnKGGOML62YDQu9ihQPAq+o6pdEpAxXtHY7MAg8oKr3eW1/E/gWrprFhDeqan8yW4ukwgLjKQPuAxqAXOBvVfXb3jFfxONdS1IxiUgD8N2Ep4aArbhq+Y+IyAeAPwEygaeBj6nqWApDARb8GjUA/4IriBwHPqWqT3rH0jGeq4Ev4z5DuoA/UtU93rFlj0dEbgM+ifu7HvKu4dci8ufAe73r/g5wt6rGvR0ZHgLqcQUD7lDV571z+eI9tNCYEp53HfB3E2tWvcd8EdN8VkQPSkQuAH4KvDvh4Xtxe0w1AJcBbxORG7xjVwBfUtXtCX/6k9laJBUWEc+DQJOqXgRcC/yTiKzxSzywsJhU9UDia4OrVPLvXnLaCtwNvBkQoAT4eCpjgUW9Rl8F/tWL5wPA90UkIx3jEZFi4BHgk6p6IfBhXDzZfohHXFXqLwJv9f6+Pws84hUT+B1gB+4Lz9XAb3tP+wrwnLf1z23AD0Qkzy/vocXEJCK5IvJZ4D9I6Iz4JaZkrIgEBdwF3A/8IOGxHcC3VTWqqqPAjznz5rsCuEZE9ojIcyLyJu/xZLYWSYWk4/G+5b4F96GAqjYBlwLd+CceWPhrBICIvNF77E7voXcCj6tqh1cJ/+u4D5RUW2g8IWBib+5CXOUUSM94NgF9qvpTAG+T0TBwOf6IZwT4kKq2eL//GqjGfXB/V1UHVXUY9yF9m4hkADfgqtqgqi8Dh4G34p/30IJi8tpcD+TjeleJ/BLTvFbEEJ+qfhQmu7ITfgm8R0R+gevGvguYGGbowg0h/RC4EnhMRLaR3NYiS26B8ZyHq6zxCRF5m3fsS6p6yNvFeNnjgUW9RhO+CPxFwvDDWuBEwvGJLVpSahHx3AU8IyIfB6qAW1V13HuNTiScIx3iOQTki8h1qvqUiOwEtuCqASx7PKp6YuIavA/dvwce967vyRmurQIIqmrHDMfy8MF7aBExoaqPAo+KyFXTTuebz4X5rJQe1Ez+GDdWuxt4FPgJMAqgqjer6sOqGvdqPz2P64UsZtuQVJktnkxgPRBW1SuBW4F7RWQH/o4H5niNAETkCqCSqfejpsfkpy1aZoxHRHJwwyzvU9U1wJuAr3vJKe3i8b4s3Ah8WkT24GpzPoN77XwTj4jkA9/HfYn7ELNf21xb//jqPbSAmObiq5jmspITVBHwp6q6VVWvxb1wR0SkREQ+Pa07G8B9M1zMtiGpMmM8QLN3/AEAVT0C/By4BH/HA7PHNOEW4KFpm1pOj8lPW7TMFs9WIE9VfwSgqruA/bih2LSLR0SCwICqXqWq21T1D4DNuFh9EY+I1OG+eEaBq1W1d45rawcC3nD59GO+eQ8tMKa5+Cam+azkBHUncA+AiKzCfdv4LtCPG26Z2OX3ItyH+X/jbsZf5lVZnzjHnNuGpNCM8ajqcdwOxO9NOHYFbozaz/HA7K/RhDfjbtwnehz4LRGp8r5k3IH7du8Hs8VzBCj2eoSIyEbcxIPdpGc8ceAJEbnYO3YL7p7aXnwQj4gUAs8Cj6jqraoa8Q49hrvXku8Vnn4f8KiqjuPur93hPf9C3OvzLD55Dy00pnlO54uYkrEi7kHN4nPAt0VkH+6b31+p6gsAIvJO4D4RuRsYB27RM1uAvB94WEQStxbxg1njAW4CviIiH8Z96bgnIVa/xgNzxwTuZvyJxCeo6l4RuQc3pJSJu0/yhdRc7rzm+jd3E/CP3nDfOG4a81HvWDrG83vAN7x/Vy3Ajd7UZj+8Ph/FTRe/yft7n/AbuNmHv8JtC/QYbmo5wEeA+71Y48B7VLUPfPMeWkxMM1LVdp/ENC+rZm6MMcaXVvIQnzHGmDRmCcoYY4wvWYIyxhjjS5agjDHG+JIlKGOMMb60kqeZG+MbIvJ93GLWnYmVvb21Uf+DW3j5/HJdnzF+ZD0oY1LjTlzNt89MPOCVrXkI+KwlJ2POZuugjEkREbkWeAK4UlVfEJGv4ioWXKOqMW8B5t1AHbAPuCthj6Wrgb/BbWGRjauL935VDYvId3CjIZcBEeB1XnUEY9Ka9aCMSRFVfRq3L9Q3ROQa3FYJt3nJ6VLcJpofw/W07geeEpEir8zNo8C9qloJnI+r7/fBhNNfjavMf5klJ7NS2D0oY1LrU8ALwI+A3/X27wJX5+5bqvqs9/uDInIXbouLh4AdqnrEGxasATqZWvDzGVU9nYoAjEkV60EZk0LepnL/ABxV1cQCnfXAh0Skd+IPbvivTlWjwA0icgI4APw1UIyrjzehGWNWGOtBGZN6Uc7ee6cZt9HkX0484FWbbvN2Ff4McMnELqgi8uNpz7ebyWbFsR6UMf7wEHCHtzstIvIW4BVgG663FAVGRCQkIrfiNtjMWq6LNSYVLEEZ4wOq+gzwCeABEQkD9wEfVNXncDP/fgDsAdpwkyO+iZsoYcyKZdPMjTHG+JL1oIwxxviSJShjjDG+ZAnKGGOML1mCMsYY40uWoIwxxviSJShjjDG+ZAnKGGOML1mCMsYY40v/B9QHYV5JN2amAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "alpha_census = compute_rel_diff(census)\n",
+ "plot(alpha_census)\n",
+ "\n",
+ "alpha_un = compute_rel_diff(un)\n",
+ "plot(alpha_un)\n",
+ "\n",
+ "decorate(xlabel='Year', label='Net growth rate')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 0.014588\n",
+ "1951 0.016121\n",
+ "1952 0.017173\n",
+ "1953 0.017962\n",
+ "1954 0.018999\n",
+ "1955 0.019123\n",
+ "1956 0.019769\n",
+ "1957 0.019640\n",
+ "1958 0.017835\n",
+ "1959 0.014092\n",
+ "1960 0.013462\n",
+ "1961 0.018199\n",
+ "1962 0.022208\n",
+ "1963 0.022236\n",
+ "1964 0.021097\n",
+ "1965 0.020968\n",
+ "1966 0.020363\n",
+ "1967 0.020623\n",
+ "1968 0.021010\n",
+ "1969 0.020769\n",
+ "1970 0.020909\n",
+ "1971 0.020115\n",
+ "1972 0.019534\n",
+ "1973 0.018902\n",
+ "1974 0.018044\n",
+ "1975 0.017388\n",
+ "1976 0.017283\n",
+ "1977 0.017018\n",
+ "1978 0.017404\n",
+ "1979 0.016522\n",
+ " ... \n",
+ "1987 0.017377\n",
+ "1988 0.016987\n",
+ "1989 0.016825\n",
+ "1990 0.015623\n",
+ "1991 0.015740\n",
+ "1992 0.015053\n",
+ "1993 0.014520\n",
+ "1994 0.014331\n",
+ "1995 0.014079\n",
+ "1996 0.013588\n",
+ "1997 0.013186\n",
+ "1998 0.012950\n",
+ "1999 0.012724\n",
+ "2000 0.012589\n",
+ "2001 0.012457\n",
+ "2002 0.012268\n",
+ "2003 0.012203\n",
+ "2004 0.012093\n",
+ "2005 0.012084\n",
+ "2006 0.012005\n",
+ "2007 0.011936\n",
+ "2008 0.011800\n",
+ "2009 0.010367\n",
+ "2010 0.011287\n",
+ "2011 0.011227\n",
+ "2012 0.011157\n",
+ "2013 0.010976\n",
+ "2014 0.010868\n",
+ "2015 0.010776\n",
+ "2016 NaN\n",
+ "Name: census, Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "alpha_census"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Year\n",
+ "1950 0.018891\n",
+ "1951 0.018050\n",
+ "1952 0.017781\n",
+ "1953 0.017745\n",
+ "1954 0.017868\n",
+ "1955 0.018077\n",
+ "1956 0.018307\n",
+ "1957 0.018507\n",
+ "1958 0.018644\n",
+ "1959 0.018720\n",
+ "1960 0.018780\n",
+ "1961 0.018892\n",
+ "1962 0.019136\n",
+ "1963 0.019543\n",
+ "1964 0.020033\n",
+ "1965 0.020532\n",
+ "1966 0.020912\n",
+ "1967 0.021091\n",
+ "1968 0.021017\n",
+ "1969 0.020758\n",
+ "1970 0.020476\n",
+ "1971 0.020208\n",
+ "1972 0.019857\n",
+ "1973 0.019423\n",
+ "1974 0.018951\n",
+ "1975 0.018451\n",
+ "1976 0.018012\n",
+ "1977 0.017733\n",
+ "1978 0.017660\n",
+ "1979 0.017733\n",
+ " ... \n",
+ "1987 0.018413\n",
+ "1988 0.017863\n",
+ "1989 0.017365\n",
+ "1990 0.016556\n",
+ "1991 0.015898\n",
+ "1992 0.015281\n",
+ "1993 0.014738\n",
+ "1994 0.014262\n",
+ "1995 0.013793\n",
+ "1996 0.013343\n",
+ "1997 0.012989\n",
+ "1998 0.012748\n",
+ "1999 0.012596\n",
+ "2000 0.012476\n",
+ "2001 0.012364\n",
+ "2002 0.012281\n",
+ "2003 0.012223\n",
+ "2004 0.012180\n",
+ "2005 0.012148\n",
+ "2006 0.012115\n",
+ "2007 0.012070\n",
+ "2008 0.012004\n",
+ "2009 0.011919\n",
+ "2010 0.011830\n",
+ "2011 0.011728\n",
+ "2012 0.011588\n",
+ "2013 0.011402\n",
+ "2014 0.014590\n",
+ "2015 NaN\n",
+ "2016 NaN\n",
+ "Name: un, Length: 67, dtype: float64"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "alpha_un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "I used the output values for a alpha_un on 1965 and 2005 (40 years) to compute a linear slope: \n",
+ "slope = (0.012180-0.02053)/40 years = -209e-6\n",
+ "\n",
+ "To get the intercept, I plugged in the data for 1965 (1965, 0.020968) with the newly-found slope and got that the intercept = 0.42576. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Other than a bump around 1990, net growth rate has been declining roughly linearly since 1965. As an exercise, you can use this data to make a projection of world population until 2100.\n",
+ "\n",
+ "1. Define a function, `alpha_func`, that takes `t` as a parameter and returns an estimate of the net growth rate at time `t`, based on a linear function `alpha = intercept + slope * t`. Choose values of `slope` and `intercept` to fit the observed net growth rates since 1965.\n",
+ "\n",
+ "2. Call your function with a range of `ts` from 1960 to 2020 and plot the results.\n",
+ "\n",
+ "3. Create a `System` object that includes `alpha_func` as a system variable.\n",
+ "\n",
+ "4. Define an update function that uses `alpha_func` to compute the net growth rate at the given time `t`.\n",
+ "\n",
+ "5. Test your update function with `t_0 = 1960` and `p_0 = census[t_0]`.\n",
+ "\n",
+ "6. Run a simulation from 1960 to 2100 with your update function, and plot the results.\n",
+ "\n",
+ "7. Compare your projections with those from the US Census and UN."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " t_0 \n",
+ " 1960.000000 \n",
+ " \n",
+ " \n",
+ " t_end \n",
+ " 2100.000000 \n",
+ " \n",
+ " \n",
+ " p_0 \n",
+ " 2.557629 \n",
+ " \n",
+ " \n",
+ " alpha \n",
+ " 0.000000 \n",
+ " \n",
+ " \n",
+ " beta \n",
+ " -0.001800 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "t_0 1960.000000\n",
+ "t_end 2100.000000\n",
+ "p_0 2.557629\n",
+ "alpha 0.000000\n",
+ "beta -0.001800\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system = System(t_0=1960, \n",
+ " t_end=2100,\n",
+ " p_0= census[t_0],\n",
+ " alpha=0.0,\n",
+ " beta=-0.0018)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def alpha_func(pop, t, system):\n",
+ " \"\"\"Update population based on a quadratic model that adjusts the alpha\n",
+ " \n",
+ " pop: current population in billions\n",
+ " t: what year it is\n",
+ " system: system object with model parameters\n",
+ " \"\"\"\n",
+ " system.alpha = 0.42576-(209e-6)*t\n",
+ " net_growth = system.alpha * pop + system.beta * pop**2\n",
+ " return pop + net_growth"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def run_simulation(system, alpha_func):\n",
+ " \"\"\"Simulate the system using any update function.\n",
+ " \n",
+ " system: System object\n",
+ " alpha_func: function that computes the population next year\n",
+ " \n",
+ " returns: TimeSeries\n",
+ " \"\"\"\n",
+ " results = TimeSeries()\n",
+ " results[system.t_0] = system.p_0\n",
+ " \n",
+ " for t in linrange(system.t_0, system.t_end-1):\n",
+ " results[t+1] = alpha_func(results[t], t, system)\n",
+ " \n",
+ " return results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saving figure to file chap04min-fig04.pdf\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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1q1bh81mY926dSxevBiLxcKTTz6J1pq0tLT6Ifj861//Iisri5dffpmqqioeeOABysvLG63qFEKcGZfbxdHyo2SXZHOw9CAX9L+AtJgT/5ux9ljKa8sbTVzR4dFkxWfRI74HWfFZxNkD/0etFitTe08N6e/Q0iR5tYKGvsG43W6sVvM2u/DwcJ566inuuece1q5dy/r167n33nuZOHEiTz/9dMB+VqsVt9t9yvMtW7aMbdu2cdlll/nOVV19otpgxowZWK1WYmNj6d27N6WlpUycOJGwsDAuv/xyJk+ezOzZsxkxYgSHDx9u9DxTpkzhpz/9KceOHWPSpEn84he/kMQlRAsoqy1jT+Ee9hXv40DxAXLKcnC4HL71/ZP6ByQvi8VC78Te6AJNemy6majietAzoSc94nqQGJnY7ktSp6tTJ6/xQ0+uKvQ3eWQPJo/s0ej6GWN7MmNsz0bXB1tlmJSURElJSUCHjcLCQhITEwF47733SEpKYtasWcydO5e5c+dy6623MnPmTIqKigL2GzBgAE6nk+zs7IDSV21tLbfffju/+93vcLvd3HjjjfzoRz8CoK6ujtLSUt+2kZEn4rZYLBiGQXx8PB999BEbN25kzZo13Hnnndxwww1Mnz494Nucw3HiH2jEiBF8+eWXrF69mjVr1nD55Zfz4osvMmzYsKCuixDihK25W9l0bBN7i/Y2eZNvdkk2E3tODFh27chribXHEh4WHsow2w0ZYaMVTJ06lddee81XYiotLWXRokW+akGr1cqCBQs4fvy4b589e/bQvXt3EhISAo5lt9u56aabeOCBBygoMO+rqKur4/e//z3V1dWkp6czefJk3nvvPSoqKgB45plnuOeee04Z47Jly7juuusYPXo0P/vZz5g3bx7bt28nPj4eh8PB3r17Afjkk098+yxYsICFCxdy3nnn8cADDzBgwIAG2+mEECe4DTcVdRUnLd+Zv5NVOasaTVwp0SmMyRzD/LPmM6nnpJPWJ0UldZnEBZ285NVePPDAAzzxxBPMmTOHsDCzh8+ll17K97//fQDmz59PdXU1N910E3V1dVgsFvr06cPf//533/b+brnlFqKiorjhhhsAs9Q1fvx4Fi5cCMDll19Obm4uV1xxBRaLhczMTJ544olTxjh16lRWrFjBnDlziI6OJiEhgccee4y4uDh+9atfcdNNN5GcnMyFF17o2+faa6/lvvvuY86cOdjtdpRSXHLJJS1yzYToLAzDIK8yj535O9mZv5M9RXvondCbuybeFbDdwOSBLDuwDDB7BPZN6svA5IH0T+5P74TexEVIlbw/S1M9U9oTpVQf4MCXX34pMykLIdqtyrpKdhXsYlf+Lnbm76SouihgvT3MztMXPh3QXb28tpyVOSsZmDyQ3om9sVm7dtni8OHDzJo1C6Cv1jq7/vqufXWEEKKFVDuq+Xzf5+zM38nB0oOn7LIeaYuksLowoNNFXEQcFw64sNF9RCBJXkII0QLCw8L58sCX1DprT1oXaYtEdVMMSR3CWd3OIi0mrdP1/mttkryEECIIhmFwpPwIW45vYUvuFuaquQxLO9Gz1ma1MShlENtyt2GxWOib2JchqUMYkjqEPol9AqoIRfNJ8hJCiEY43U72FO5hS+4WthzfEtB2tfn45oDkBXBev/M4t+e5qG6K6PDo1g63S5HkJYQQfqocVWzP286W41vYnre90RHWd+TtOGnk9MHdBrdWmF2eJC8hhPDYdGwTL258EZfb1eD6qPAohqUNY2T6SIamDZV2qzYkyUsI0SXVOmtPGiG9T2KfkxJXSnQKozJGMSJ9BAOTB0rbVTshyUsI0WXUuerYlruNDUc3sC1vG/dPuT9gdPWkqCQGJA/A6XYyKmMUIzNGkhmbKSWsdkiSVytoajLKDz74gN/+9re89957DBo0yLfNzTffzOzZs5k/P3DiuA8++IDHH3/cd6O2d9qT22+/3Teu4H333cfKlSsDzglw2WWX8ZOf/ISKigqeeOIJtmzZgsViwWq1cvXVV3P55ZcHbP/EE0/w+uuv89///peMjMbHiRSivXK6nWzP2876I+vZmruVOledb92GoxuYq+YGbH/nOXd2qWGWOipJXu2EYRj84he/4L333iMioumZSMeNG8cLL7zge71q1SpuvPFG3n//fXr0MAcbvu6663xDSNX31FNPER0dzccff4zFYiE3N5crr7ySzMxMJk+eDJjDTn344YfMnj2b119/nV/+8pct8JsK0TpySnNYmbOSdUfWUVlX2eA2R8qOnLRMElfH0KmT14YjW9l4dFtQ2w5OHcDUPhMClq3IXst3+Xsb3WdM9+GM6zGiWTF6TZw4EYfDwR//+Ed+85vfnPb+kyZN4vzzz+ett94KKsnk5+eTkpKCw+HAbreTnp7Os88+6xvpHsxBeHv16uVLgrfddhtRUVGnHZsQrUkXaN7d+S45pTkNrs+IzWBc93GM6z6OzLjMVo5OtJRWS15KKQvwCrBNa71AKRUGPAVc6Iljgdb6+daKp72xWCz88Y9/5NJLL2XKlCnMmDHjtI8xePBgli9f7nv9yiuv8PHHHwds86c//QmlFLfffjt33HEH55xzDqNHj2bMmDFcfPHF9Ox5YgqYN998k3nz5jF8+HBSU1NZtGiRb5oVIdqrCFvESYkrJTqFCT0mMK77OLrHdZc2rE6gVZKXUuos4DlgAuAtCt0MDAKGAXHAaqXURq31utaIqTU1NRmlV1paGo8//jj333//SUknWP5zdZ2q2nDw4MEsWbKEHTt2sH79elauXMnzzz/PM888w8yZM9mxYwffffedb5T4efPm8eqrr/LDH/5Q/vFFu5BXmcfqnNWc3//8gBuCeyf0JjMuk4KqAsZkjmFSz0moFCXv206mtUpetwEvAYf8ln0f+JvW2gkUK6XeBn4MtFjyGtdjRLOq9ab2mXBSVeKZaGoySn8zZ87kwgsv5N5778VmO70/z/bt2wM6fDTG6XTy6KOPcvfddzNs2DCGDRvG9ddfz8KFC3nnnXeYOXMmb7zxBjabzTcbs9PpJC8vjxUrVvjmIROitbkNN5uPb2bZgWXsLtwNQEJkAtP7TPdtY7FYuHHMjSRHJcsoF51Yq0xGqbW+XWv9Zr3FPQH/sv1hoFPOc9LUZJT13XfffeTl5bF69eqgz7F8+XK++uorrrzyyia3tdlsHDhwgIULF/pmRnY6nezbt48hQ4ZQVlbG4sWLef7551m6dClLly5lxYoVzJ07l3/+859BxyRES6msq+SzvZ/xwJcP8MKGF3yJC2BVzqqTts+Kz5LE1cm1ZYcNK+A/Z4AFaPi29g6uqcko64uIiOCpp546qdu6vw0bNnDppZcC5jfNtLQ0/v73v5OamurbpqE2r5EjR/Loo4/yzDPP8OSTTzJ79myioqJwu92cf/753Hbbbbzxxhv079+fc845J2DfW2+9lUsuuYTdu3cHVcITormOlh9l6YGlrDm8BofLEbDOarEyLG0Yk3pOOmmYJtH5ndZklEophVk6cgE5Wut9p3MypdQrwHZPh43/As9prRd51j0MJGqt7zrF/n2QySiF6PQKqwp5dcurfFfw3UnrYu2xTO09lWl9ppEYeXLVu+gcmj0ZpVIqBbgLuAlIAgqBMCBJKXUIeA14WmtdcpqxfQT8j1Lq30AscBVwy2keQwjRCcVFxJFTFthjMCs+i1n9ZnF297PlXixx6jYvpdSPga+BCOBSIEZrnam1TgNigJ8A8cB6pdQ1p3nuvwL7gC3AeuDvWuvlp95FCNHZlNSUUFhVGLDMHmZnSq8pWCwWxmSO4ZeTfsmDUx9kUs9JkrgE0HTJayAwVmtdXX+F1roOWAmsVEr9Bri3qZNpra/ze+4E7jytaIUQnUZBVQGf7f2MVTmrGJUxipvG3hSw/rx+5zG191RSolPaKELRnp0yeWmtHw7mIFrrCuChFolICNGpHSs/xpK9S1h3ZB1uw+yB++2xb5lbMZf02HTfdnERcW0VougAgu5tqJSaDQzAbO/y0Vr/paWDEkJ0PodKD/Hpnk/ZdHwT9TuK9U3sS62rto0iEx1RUMlLKbUQuAazfcq/v6oBSPISQjRqb9FeFu9ZzI68HSetG9xtMBcNvEhGwBCnLdiS13xgitZ6cyiDEUJ0Lu/vfJ/P931+0vIR6SO4aOBF9Evq1wZRic4g2BE2XMDOUAYignfzzTfzwQcfnHKbtWvXMmfOnFaKSIiGDU0b6ntusVgY130cD017iNvG3xaQuPLyoK6uoSMI0bBgS14LgOeVUr8H8vxXaK3LWjwqIUSHc7T8KBmxGVgtJ74TqxTFwJSBpEancuGACwM6ZHj997/w7rtw3XUwcWIrBiw6tGCT16OY93Vdx4khnSye52GN7NOm9u3bx+7du3E6nSE7h81mY9CgQfTv3/+U261du5Y///nPZGZmcuDAAaKiovjpT3/Ka6+9xoEDB7jgggu4//77eeedd3jttdewWq1069aNhx56iL59+5Kbm+sb77B79+4UFp64J2bfvn08/vjjlJSU4HK5uOaaa/jBD34Qst9ZiPryKvP4WH/M+iPruX709ZyTdWJYMYvFwt0T7w5IaPUNHGj+XLlSkpcIXrDJa1hIowiB/fv3hzRxgTmY7f79+5tMXgDbtm3j4YcfZsiQIdx444387W9/49VXX6WiooKpU6cyfPhwXnrpJd555x2Sk5P54IMPuO222/jkk0949NFHGTlyJHfeeScHDx5k3rx5vvP//Oc/509/+hNDhw6lvLycK6+8kgEDBoT09xYCoLi6mE/2fMLKQyt9Xd7/rf/NuO7jsFlPfLRYLVYcDti4EbZtgxtuAP++Gb16Qc+eEBUFTiec5mQKoosK6m2itT6olIoHLsEcDT4X+ERrXRDK4JqjX79+rVLy6tcvuAbnrKwshgwZAkCvXr2Ii4vDbreTnJxMTEwMn332GRdffLFv2pT58+fz+OOPc/jwYVatWsW995r3gPfu3ZsJE8xpWrKzszl06BD333+/7zw1NTXs3LkzqIQqxJkory1nyd4lfJX9FU534P9Xj/geVDuqA+7RMgx45BHIzzdfn3sunHXWiX0sFvj1ryGsXdbhiPYq2K7yw4HPgRIgG+gL/Fkpdb7WemPowjtz/fv3b1cf4Ha7PeB1/bm6GuombBgGTqcTi8UScF+Md1+Xy0VcXBwfffSRb11BQQFxcXFs3iwdQ0XLqnHW8MW+L/hi/xfUOgPvyVLdFPMGz2uw96DFAsOGwbJl5uuvvw5MXiCJS5y+YHsbPg0s0FqfpbW+SGs9GPiDZ7loAePHj2fx4sUUFRUB8P7775OYmEjv3r2ZMmUK77zzDgBHjx5l7dq1APTt25fIyEhf8jp27Bhz5sxh+/btbfNLiE5r5aGVPLj0Qf6z+z8BiatPYh/umngXd0+8m56x/Vi5Ehqahm7aNEhJgXnz4KqrWjFw0WkFW7s8Grig3rKngd+0bDhd14QJE7BarVx77bW43W6Sk5N54YUXsFqtPPzww/z617/moosuIiMjg8GDBwNmaW7hwoU8/vjjvPTSSzidTu644w7Gjh3rS3BCtIScshzKa8t9rzPjMpk3eB4j00disVg4dAj+8hcoL4ekJBg/PrA0lZkJjz8e2NYlRHMENZ+XUmovMF9rvdVv2UjgPa31wBDGVz+OPsh8XkK0uoq6Ch5c+iCRtkjmDZ7H+B7jA3oQOhxmu1W5J7/ddBOMG9dGwYpOodnzeXk8AyxWSj0DHAT6AD8H/tQyYQoh2oPy2nIW71nMRQMvIj4i3rc81h7Lzyf8nKz4LI4cslNZAXF+4+aGh8P06fDNNzBzJnj6JgkRMsH2NnxWKVWDOb5hGnAIuFdr/UYogxNCtA6n28nSA0v5ZPcn1DhrqHPVcc3IelP0Fffj2Zdh92646CKz/crfBRfAxReDNdiWdCGaIeg7KrTWLwIvhjAWIUQrMwyDTcc38f7O9ymoOnHny8qclcweMJu0mDTfspISM3GB2XNw9mzz3iyveh1qhQipUyYvpdQ3WuvJSqlNnBhZI4DWekxIIhNChFROaQ5vb3+bvUV7A5anx6Zz2Vk/IDU6NWD5qFGQnm7erzVqlDkWoX/yEqI1NVXyWuj5+QyNJC8hRMdS5ajio+8+YvnB5QH3D8bYY7hk4PeIypvKhy+EkXkrpJ0oeGG1muMPJiSY3d6FaEtNzaT8pufnK60SjRAipDYe28ib294M6PYeZg1jRp8ZXDLoEt59M5pVq8zln34K114buH+QA8oIEXJNVRs2Wl3oJdWGQnQcbsMdkLiGpA6gREKoAAAgAElEQVThqmFX+UZ7P/dcfMlryxaoqYHIyLaIVIhTa6raUEbQEKITGZs5lq+7fc3xilzOTbyS740bFTA02YABMHYsdO9udnmXxCXaq6aqDf/ZWoEIIVqOYRiszFlJanQqqpvyLbdYLEyOvZ7Pvorik+wIhiZD/SFAf/rTVg5WiDMg1YZCdDIHSw7y1va3OFB8gPTYdH4z7TcBU5RsXZdITrb5fNEi+MUvZNgm0fFItaEQnUS1o5oPv/swoBdhbkUuy7OXM6vfLN92c+fChg1m78FevcDlkjm0RMcj1YZCdAKbj2/mrW1vUVJT4ltmuG10r76Ayb2mBGybmmp2eR80yBxEV4iOSG5SFqIDK6kp4e3tb7Pp2KaA5fbSodR+exXHqtLY2h/OPjtwP898pkJ0WMHepCzVh0K0I4Zh8PWhr3l/5/vUOGt8y+Mi4rhq2FVkrxrLF1VmQ9aiRTB6tFQNis4l2JuU/wmglIoBMoEcrXXtqfYVQoROUXUR/9rxLxwuh2/Zub3O5bKzLiPGHsOQi81JIaOjYf58malYdD5BfRdTSnUD/g7MASyAWyn1JnCb1rr8lDsLIVpcSnQKlwy8hH9t+5CK42n8dv41DM0Y5FsfHQ133QUZGVLiEp1TsJMXPA/UAgqIAoYC8cCzIYpLCOGntKb0pGVRxy6gdOUVJG75DYc2DTppfVaWJC7ReQX71p4OZGmtvZXrWil1DXAgJFEJIQCocdbw/s73WX14NQ9Nfcg3jBOA2xlGaoXZBf7TT2HqVIiJaatIhWhdwZa89gP17sMnEyhoYFshRAvQBZpHlz/KioMrcLgcvL719YBR4KdPN4dxSk+Hm2+WxCW6lqa6yv/c83QL8IVS6jngIJAB/C/w7+YGoJT6PvAI4AaKgJu01vuae1whOqo6Vx2Ldi1i6YGlgHmPyrGjoJIiqXXVEmkzBxy0WuH2280pSqR6UHQ1Tb3lv+/3XAPn+b0+CAxvzsmVUlHA68BIrfVepdRdwF+AS5pzXCE6qv3F+/nHpn+QV5kHQHkFZO+OIT3/h6RGjyNycuA4TjKvluiqmuoqPyPE5w/D7L2Y4HkdC9Q0vrkQnZPT7eRj/TGf7/s8oGqwV8QIIo79GLuRwDffwJQp0KdP28UpRHvRVLXhM8DDWuuSJrZLAR7VWt92OifXWlcopW4BVimlCjGT2bmncwwhOrqc0hxe3vQyR8uP+pZF2iK5ctiVnNNjIn89ZmHXLrjkErMHoRCi6WrDL4E1SqmvgX8B67TWpQBKqSRgIvADYBpw1+meXCk1HPgNMERrvc/Txva+UmqU1vqUo9kL0VlUOio5Wn6U2jrz9cjug7l21LUkRyUD8KMfmYPnduvWhkEK0c6csreh1vpjYBzwHWZbVJFSqlIpVY3Z0/APwC5guGfb0zUbWOnXQeM5YBggNfmiy1Apg8momcGmDXbisn/IHRPu9CUuMAfPlcQlRKAm+yhprSuAp4CnlFLpQE/MnoE5Wuv8Zp5/I3C7Uipda50LzAMOaK2lC77olAzDoKi6iJToE9/PDh+Go1/OZ6RlJnVFaaxfLwPnCtGU0+pg60kwuS11cq31UqXUk8BXSqk6zK7yl7bU8YVoT0prSvnH5n9wrPwYD017iFh7LAA9e8Ks6XaWLUsjPV1KWUIEo83vDtFaP4dZXShEp7U1dyv/3PxPKuoqMIBXt7zKreNuxeKZwvj73zfv1zrvPAgPb9tYhegI2jx5CdGZOVwO3t/1PssOLMMAjh6BggILF/bvjoGBBTN5RUTARRe1baxCdCSSvIQIkaPlR3nx2xc5Wn4UA9i2DaqLElHV1xNxYDDWIW0doRAdV9DJSyk1GxiAeS+Wj9b6Ly0dlBAdmWEYLD+4nPd2vuebb8sCjMsaReWhnxBuxLB1q1nSsgY7uqgQIkCw83ktBK7BHOPQ4bfKwOxCL4QAKuoqeHXLq2w5vsW3LDwsnCuGXsG5WVN4Ot/CoEFw8cWSuIRojmBLXvOBKVrrzaEMRoiOblvuNjYf30JhASQlQ+/ELG4ccyOZcZmAOUGkJC0hmi/YfyMXsDOUgQjRUfmPRTg86Ryq9o5h5y6IOjaL+ybf50tcIIlLiJYSbMlrAfC8Uur3QJ7/Cq11WYtHJUQH4XK7WHZgFd3j0hmSNohduyxE6GsYFjaZuk1D2aNhiHTMEKLFBZu8HgVigOsw27nAbIM2qNeBQ4iuwuFy8MW+rzlceoz9xTmEh4Uzblxfxm+MZuPGoUyeDP36tXWUQnROwSavYSGNQogOpqS6lC/3r+R4eSG5hVVkpERTWFXMwJS+XH01TJoEw5s1250Q4lSCqoHXWh8EioFJwJXAdKDSs1yILie/qogDBbnsPVxCSUUttsoMxvcYBUBsrCQuIUItqOTlmbpEY05fMgP4NaCVUmNCGJsQ7dbAlL70ju+F2wVplgE4itMoKJF5VIVoLcFWGz4NLNBaP+VdoJT6pWf51FAEJkR74nK7CLMGNu9eOmIqUXWZFBXCrLN7kZYc3UbRCdH1BJu8RgMX1Fv2NGZJTIhOy2242XxsB7sLspndbxZJsScSlD0snNljFYYB9nDptyREawr2rpMiYGi9ZUNpwelRhGhvKuoq+UQvZcX+jXy77xB/X/EFbnfgBN/htjBJXEK0gWBLXs8Ai5VSzwAHgT7Az4E/hSguIdrUgeIclmevoaq2huxjZbjdBvmOEtZ/d4wJQ7q3dXhCdHlBJS+t9bNKqRrM8Q3TgEPAvVrrN0IZnBCtzelysjpnI7vy9wBgC7OSmhiFsziVjPC+JMREtnGEQgg4jVHltdYvAi+GMBYh2lRhVTFf7l9JSXWpb1mMPZo5E85j7z4HowalER9jb8MIhRBep0xeSqlvtNaTlVKbODGyRgCttXSXFx2aYRhsz9Ms27OeY0UV9EqPI8xqoW9SL6b2mUCEzU730W0dpRDCX1Mlr4Wen0+HOhAh2sr+4kN8vPUb8oqrMAwoLKnlB2Omo7r1w2KxtHV4QogGnDJ5aa3f9DxN1VovqL9eKfW7kEQlRCvql9SLjNg0couyibTEklQ9jL6JfSRxCdGONZq8lFJpwDmel48opTTmYLxeCcAdwIOhC0+I0LNYLFwxZhaOqpWkhfXhgvF9iJDu70K0a6cqeZUBD2D2Lozk5BmTa4HHQxSXECGRX1nIhsM7mdZ7AtGRJzpfxEXEcMO0WdjCrFLiEqIDaDR5aa1rgAkASqkPtNbzWy0qIVqYOVLGTpbu2cDR/HJyDtdw08zzAhJVuE1KW0J0FMHe5zVfKWXFnNPL+99uB4Zprb8KUWxCtIiymnKWHVjNwaJjHDpuzp26q2AP2w4MZ0S/jDaOTghxJoJKXkqpK4C/AXH1VhUA6S0dlBAtwTAMvivYy+qcjThdTiLtNpLjI6guj6Bf1DBS4mLbOkQhxBkK9ibl32F2zKgEZgELgD8Cy0IUlxDNUlVXzfLsNeSUHvUts1gsXDJsIrVFKZw9JEM6ZQjRgQU7MG93rfX/AZ8DSmu9GbgOuClUgQlxpvYVHeSVDR+yes9u3531iVHxzDtrNmf3HMHkkT0kcQnRwQVb8jqqlIrXWh9RSvVVSlmA40BqCGMT4rTtKTzA29/+l4KSagwDIu1hTFejGZ81CptVEpYQnUWwyWsJ5qjylwJrMEeZrwEOhCowIc5E36RexNvjyTeqCSeCmErF2d0lcQnR2QRbbfhL4BPABdwGKGAKUm0o2hmbNYwfjjuPnrG9ODdjOv9zwQTpAi9EJxRsV/k64A+elyXA7JBFJESQDpcdY+uRvZw3YCL28BNv5bTYFH523hwi7GFyw7EQnVRTo8ovopHR5L2ae/OyUmo48CzmcFMu4Gat9bfNOabo3BwuB6sPbeSbvdvIK66ivNjGlZMmBmwTGRH0bD9CiA6oqf/wzaE8uVIqGrMH4w1aa2+b2hvA4FCeV3RcR8tzWX5gDUeKizheVAXAupxtnHN8CL0zEto4OiFEa2lqVPlHQnz+C4B9WuvFntcfI51ARAOcLifrjmxme64GIC7aTnx0OO7qeIYljSAuOqKNIxRCtKZgR9j4oLF1zaw2HAQcV0r9HRiJ2Z52TzOOJzqh4xX5fHVgNWU15b5lETY7V4w9D0dpPKNVGlartG0J0ZUE2zCwpd7rFOAy4OVmnj8cuBiYobVe66k2XKyU6q21rm3msUUH53K7WH9kC8v3bKaqxkH31FgsQM+E7kztM4EYezR0b+sohRBtIdjehidVHyql/gb8tZnnPwrs0lqv9ZznI6XUS0A/YFczjy06uPVHtvKfzWspq3IAkBATxcVDzpUZjoUQQd/n1ZB9wIhmnv9ToK9SaiyAUmoqZu9GafcSjMocQrQ9GoBoSyJpdSMlcQkhgODbvObWW2QHrgS2NefkWuvjSql5wEKlVAzmBJfzPXOJiS4u0hbBD8+exUcrdzK6x1lMGtFDEpcQAgi+zeuZeq9dwG7gp80NQGu9As+kl6Lr2ld0kIMFecwYOC4gQfVNzuK2izJllAwhRIBg27z6hjoQ0TU5XA6+ObiBVft2kFdchaMqktmjhgdsI4lLCFFf0MMQKKUmAFcBGUAO8JrWulnVhqJrK6gq4st9KzmQn0eu54bjpXu+ZVSvfqQnx7RxdEKI9iyoDhtKqeuApUA3IBvIAlZ5urYLcVoMw2B7rubDXZ9RWlNGUlwk0ZE24i1pjE4eT6RdhnYSQpxasJ8SDwMXaq2/9i5QSs0EFgIfhSIw0TnVOutYnr2G7OIc37LwMBtXjJ6FsyKBcYPT5YZjIUSTgk1eycDaestWYN6sLERQ8isL+XjnV+SVlZASHwlASnQS5/WfTEJkfBtHJ4ToSIK9z+vvwAKlVASAUsoKPAi8FarAROeyr/Ag/1j3b7ZlH+V4YSUV1Q6Gpg9i3lmzJXEJIU5bsCWvizHHIbxeKXUUSMOcwqRcKfVj70Za6+SWD1F0BslRCZRVOHC7DayEYS/ry8SscVJFKIQ4I8Emr5tDGoXo9JKiE7n67Fm8vmoFA6NGcOm5QyRxCSHOWLD3eS1XSoUB44GeQC6wUmvtDGVwouOqcdYSaQucpuSsjH7cOTOdxNgowm3NGZlMCNHVBdtVvjfmxJRLgEeAfwNaKdUvhLGJDsgwDDYf3ckfP3+NTQcOnrQ+NTFGEpcQotmC/RR5BvgS6Ka1Pgvzfq//AM+GKjDR8bjcLpbob3hz7TIKy6t469vPOV5c1tZhCSE6oWCT17nAPVprB4DWug6417NcCKoc1fxb/5fs0oO4DcNc6Lax70hx2wYmhOiUgu2wUQ1kAv71QJmYMx+LLq6gsojP9i6nsq6KMKuFnmlxlORGc9mo6Qzrn9rW4QkhOqFgk9c/gH8rpR4FDgF9MO/z+meI4hIdxO6CA3x9cC0ut8tcYLEwY8B4Bo0fKMM8CSFCJthPl0c92/4Z8x6vQ5iJ648hiku0c27DzZIda1m6+1t6pccRabdht9k5r99kshIy2zo8IUQnF2xXeRfwAPCAUipSJovs2gzD4JU1i9mSsx/DgJy8Csb068lFajqJMlqGEKIVBDuTcjSwAPghEK+UKgReAR7wduIQXYfFYmFgWhZbDx/AMAyijWSmZU2TxCWEaDXBVhsuBPoBPwAOY7Z5/QZ4ErgzJJGJdm1yv5EcLMylpNjguqkziI2KaHonIYRoIcEmr0uBflprb79nrZTaBOxCklenV13noLCsnKxuJ4autFgsXH32Bb7nQgjRmoJNXsVAvOenlxUobPGIRLuy91gur65dgtsNv77oKmL8SliStIQQbSXY5PUysEQp9TiwD+gB3AcsU0rN9W6ktf645UMUbcEwDL7L38/Lqz6n1mk2a766ahm3zJwtSUsI0eaCTV43eH4+Vm/5BZ4HgAFI8uoE6lwOvjm4nr2FB0jvFsmh4w7CrFZ6d5MbjoUQ7UOwXeX7hjoQ0T7kVuSzdP8qymsrAIiPtjMgI43vDZlO39SMNo5OCCFMMgSCAKDW4eSdNV9TEX4EW9iJasFB3fpxbq9xhIeFt2F0QggRSJKXIDs/n1dWfUZRTRExkeH06R6PPSycKb3HMyClT1uHJ4QQJ5HkJdhdcIDi2iIAKmschLti+cGIWcRFxLZxZEII0TCZFVAwS42lX1oGYVYLswadzbXj50jiEkK0a6cseSmlFmH2ImyU1np+i0YkQsrhdFFaWUO3hBjfsjBrGD8++wJKK6vplyaD6goh2r+mSl6bgS1ABTANcz6vr4A9wGQgP5TBiZa192g+T3zyLgu/+hiH0xWwLiUmURKXEKLDOGXJS2v9CIBSai1wgdb6W+86pdQbwBuhDU+0BMMw2Jm7l3+s+i91LvOG40Ub1nHFORPbODIhhDgzwXbYOAuzBOZvD9C7ZcMRLa2irpKvs9eRU3qUbkl2jhY4CLNasNpkMgAhRMcVbPJaBzyrlPq11rpEKdUNc4qU5aELTTSH0+lib3E2q3O+xeEpbSXFR2IjknkjpjMgtUcbRyiEEGfudIaHeg8oVErVAJGYbV8/bIkglFLzgNe01nEtcbyuzO02WPddDkv0StIyndjCTjRrDk9XnD1mpNxwLITo8IIdHuogcLZSqi+QARzRWh9qiQCUUgMxS3Ey2msLeG3FSjblbsGNC3dhBFlpscRHxjGtzzlkxqW1dXhCCNEimuoqP7eRValKqVHQvJHkPTM0vw7cDbx5pscRJ8QmOnDnmj0Ja+qcnNVtEBN7jcYWJvejCyE6j6Y+0Z5pYn1zR5J/wfPY2oxjCD/fG3YuOvcQUeHhXDF2Jj0SZDBdIUTn01RX+b4ASqnhWuttLXlipdT/Ak6t9ctKqT4teeyuwOU2WL3jEAN7JpOeeKKp0G6zc/OUuSRExElpSwjRaQU7PNRSpVRLjxd0HWY72mZgMRCllNqslOrewufpdIrKanjxs695f+cnvLbqSwwjcBCUlOgkSVxCiE4t2E84DUwEvmipE2utx3ufe0pe27XWo1rq+J1VtaOGr7JXsqt8BwZwqPwQK77bxbSzhrR1aEII0WpO5+v5EqVUAXAUv/EOtdZjWjwq0aD9RYf45tB6ahw1pCZGUVBSTa/UFPp3T27r0IQQolUFm7xe9DxCQmudDcgw5g0wDIPCikq25G1mX9FB3/LUxCjG9hrMrIHnYJf7toQQXUyw93n9E0AplQn0BHI9936JECqtqOW91RvYW7GD3j2isVrMW+Gi7dFM7T2eXokySoYQomsKKnkppVIwB+E9H6gD7EqpVcB8rbWMLB8CNQ4H/+/zDyly5AKQV2whIzmaQd36MbHnWCJs9jaOUAgh2k6wvQ3/H1AGdNdaR2GWvo4DT4cqsK4uwmajV6Y555bFAlFhkVw4cDrT+06UxCWE6PKCbfM6Hxiota4A0FofVUrdAGSHKrCuxjAMLJYTI2RZLBYuHzODo2V5jOjRn9mDJWkJIYRXsMnLwByMt8JvWQRQ0+IRdUEHj5eyePNGrp46kfjoSN/yuIgY7p75Q6LDo9owOiGEaH+CTV4fAP9SSt0DHAL6AE94lotmWPLtTpbuW0uNUc7ba5z8dOb5AeslcQkhxMmCTV73An8DVnr2qcXswHFviOLq9Gqddaw/soVdlTuoMcoB+K5Qc6R4ND2SurVxdO2LYRg4nU4cDgcOh4O6ujrfc4fDgcvlwuVy4XQ6fc/rv3a73RiG4Xv4v/Y+B3xVtxaLJeC5/7KwsDCsVuspf4aHh2Oz2XyPhl7b7XbCwsLa5qIK0cE1Nar8AK31Xq11JXC1Uup/gCTMrvLGqfYVDXMbbr7L38v6I1upddYSExVOYmwEFouV2UPGkZGQ1NYhtgq3201tbS21tbXU1NT4nvsv809S9YfAChXveVrrfGFhYdjt9kYfERERREZG+n5arcH2sRKic2uq5KWVUvuBT4FPgK+01sdDH1bnU+dwsmTzdkqs2dS4KwPWTRgwkMm9x5EQGd9G0bUswzCora2lurq60UddXV1bh9kuuFwu3zUJRkMJLTIykujoaKKiooiKiiI8XG5aF51fU8krA5gBzASeBXoopZZjDqT7qdZ6X4jj6xR2HD7MuxtWUFRbQHSkjb7dE7AAsRExTOw5lj6JWQE9DTsCt9tNVVUVVVVVVFRUUFVVRWVlJZWVlVRXV+N2u1v0fN6qNu/Dbrf7noeFhWGz2QgLC/M96r+2Wq1YLBbfz/rP/a+/f+mr/nNvNaO3KrKhn94qS29Vp/e5/2tv9efpXqe6ujrq6uooLy9vdJvw8HBfIvMmNf/kZrfbO9z7TYj6mpoSJR/4l+eBUqoHZiKbBtyjlKrWWquQR9nBVbsqKK4rAKCqxkl1tZupA0YzIuMsbNb23eZRW1tLRUUF5eXllJeX+5JVdXV1s6rWLBYLERERvoe3JFH/4U1QrVld1lof7IZh4HK5fAmpoYe3CtVbtRrMNfdWtZaVlTW43mazERMT43vExsYSHR1NTEyMJDbRYQQ9MK9SKh6YhJm4pmJ2nV8Rorg6LMMwcBsQZj3xATCm1yBW7NvM4aICJvQZwpwR5xBjj27DKAMZhuH7Nl9eXh6QrM60es9ut/u+6dd/REdHy4ckZpL0duCIjm76/eD9O3kTmTep1dTUUFVV5at+dLlcpzyO0+mktLSU0tLSk9aFh4eflNi8D+lcItqTJjtsAHOAucC5wHbMKsNrgTXSaeOEqhoHm/Yd4Zv9mxia2Y8540b61lktVq4cOxMrYWQmpLRhlOYHYEVFBWVlZZSVlVFaWkpZWRm1tbWnfayoqKiADzrvt/fo6GhsNplPrKX5l1Yb401w1dXVAQnN+7yqqgqn09no/g6Hg5KSEkpKSk46d3R0NLGxscTFxREXF+dLavK3Fm2hqXfdbmA15ojyP5LOGg0rqylnyc71rNyzAwODipwyLh4zPKCqq0dCWqvH5XK5AhJUaWkp5eXlTX4z92ez2XwfWN4PK2+Ckm/i7Y9/gktMTDxpvTe5edsnKysrA9osG0tshmH4ts/NzQ1YVz+pxcfHExcXJz0jRUg1lbzeBi4AfgGcpZT6D7BSa92yrfEdVHF1KZuO7WBfUTZut5uwMHC6oNxZxu68IwzO6NlqsXhLVCUlJRQXF/uqhYJtl/JPUv7frKOiorp89V5n4p/ckpMD54Hz9hKtn9i8bZ2NvZe8HXfy8vICzhMbG0t8fHzAIyIiQt5PokU01WHjR0opK2aV4RzgeSBTKfU5Ztf5T7XWBaEPs30wDIP9R0pZuWsvyVnlHK08Bn43t6YlRdMtqhvnDT6bPsndQxpHTU2Nr3rHm6xOVR3kLzIykoSEBOLj430/o6Oj5UOli7NYLL6u9ykpgdXbLpeLysrKgDbRiooKKioqGkxqhmH42k2PHDniW263232JLCEhgYSEBGJjY+W9J05bk5XVnlLW157HvUqpPsClwCPAP4I5Rmfx3sqNfHt0B1VGCd3cUWQkn2hk7x6fwfcGDyczruWrB91uN6WlpRQVFVFcXExRUVHQbVSxsbG+Dwn/b79CnI6wsDDf+8ef2+32ldDKysooLy+ntLSUqqqqBo9TV1dHQUEBBQUnvvN6j52QkEBiYqIvoUm1oziVYOfzigUmY/YynAaMADYAL4QutPbHFltBlWE2ZJeU15CWFEWfpCzGZA4jLbblhnRyOBy+JFVUVERJSUlQ7VQREREkJSWRmJjoe8gNqyKUrFarr5o5MzPTt9zpdPo6BXkf5eXlDdYOuFwuiouLKS4uDjhu/YQm7WjCX1O9DRdgJquRwEHgc+CPwJeeIaM6pTqHi31Hizird2rA8plqNOsO7iQ6Mpyz+wxifM8RJEef3Ch+uqqqqnyJqqioqNGqGH82my0gSSUmJhIZGSnVL6JdsNlsJCcnB7SrGYZBVVVVQE/X0tJSampOnpzC7Xb7qsUPHjQnba+f0JKSkqTKsQtrquQ1GPgnsERrvbcV4mlTbrebxd/uYN3BHZS5Crg7+kf0Sj3xz5cQFc+1k86nR3wGcRGxZ3ye6upqCgsLKSgooLCwsNEqFn/R0dG+D4Pk5GT5pxUdjsVi8d1W4V9Kq62t9SWykpISSktLGxwuq6GEVv9LXFJSEpGRkSftKzqfpjpszGmtQNpSncvB3sJsdubvYUteDqUusz3pix0buWH6eQHbDk4dcNrHr6mp8SWqwsJCKitPXWi1WCwkJCT4EpX8Q4rOLCIigrS0NNLSTrQX+yc076OhL3lOp/OkNrTIyEhf9XlSUhIJCQlyL1on1CX/om63wfHCSgqqSijjGHsKD+BwOQBIiY+ktKKWSHsY4VHB9d6rr7a21pesCgoKmkxWNpuNpKQkX7JKTEyUfzbRpTWU0Orq6nylM28v24Y6LtXU1HDs2DGOHTsGnOi275/Q4uLipOaig+tyn5D5JZW8vnwdx2sP4Q6vYEBWIv5v4bjoCM4bMopJ/YbRLSa50ePUZxgG2dnZZGdnU1FRccptw8LCSE5OJiUlhZSUFBITE6UhWogm2O12UlNTSU0126K9t4wUFxf7ElpDnZv8u+0fOnQIOPGF0f8hnZs6li6XvCqNEg7VbcdlGFAH1bVOoiNsJETGMzRtIANT+hFhs5/2ccvKyti+fXuD66xWqy9ZdevWTZKVEC3AYrH4xsvs3t28r9KbqLwJrbi4uMEOUE6nk/z8fPLz833Hio2N9VXTJyUlERMTI6WzdqzLJa/eid1JjUukoKKEhJgI+ib15OyeQ8iMS2/WGzUiIgK73U5dXR1Wq5WkpKSAZCVDKQkRehaLxXc/Wu/evYETAxF7E1pD90n6l868nUHsdrsvkXmr8+X/uP3ocsnLYrHwvRETqHFXMyRtYIuN7h4ZGcmMGTOoqqoiLi5O3uRCtBM2m81XRQ9moqqurvbdW1ZUVERZWdlJpbO6ujpyc3N9Yzl6O1L5VzXK8Gltp8slL4Dh3QeF5LjeqcdEjssAAAy8SURBVNuFEO2Xd4T86OhoevToAZwonXlHsSkuLj5pOiDDMHztagcOHADMmRX8b2GRjiCtp0smLyGE8NdQ6ayysjKgdNbQ7NXV1dUcOXLEN36j/83ZUtUYWpK8hBCiHm8HjtjYWHr2NGeH8A7b5v+oP9yV0+kkLy/PN8K+xWIhMTEx4J5NGVu0ZUjyEkKIIISHhwfce2YYBmVlZQFDu9Uf6sowDF+i27dvH4CvV6P3ITM6nBlJXkIIcQa8HTgSEhLo27evryOIfzJrqKrRO5WM954z79xq3kd8fLzcShMESV5CCNEC/DuCZGVlAWaPxfozRLjdgXP51tbWBowIEhYWFjDiTlJSkoy404A2vSJKqR8DvwIMoAr4udZ6Q1vGJIQQLcVut5Oenk56ejpgTv/i7dXofTgcjoB9XC5XwHiN3nvX/EtnMtZpGyYvpZQCngTGaK2PKaUuBj4AerVVTEIIEUreoeG8U8UYxv9v7+6DrKrrOI6/l1WIXQVWwVbAdRqtbzqUNoiSpg0PGppjkdrQgKZCROE4qVk6kxZmkfmU4UMmtIjGjA/j+Dz5EDGZFkGpadY3oZgARcmClbvK093++P3O5e7lAu6Ve8896+c1szNwzj13v3vuOfd7fr/zO99fFxs3buyWzEoLEHd1dRWKEydD9DXLRLotr03ANHd/Lf5/GdBqZn3dffMuthMR6RUaGhoKk3kmFUGS+2a7eoC6s7OTzs5OVq9eDYTBJKXFvXv7EP3Ukpe7rwRWAphZA3A98JASl4i8n/Xv359hw4YVHqB+NzOrb9mypdsQ/T59+hSmVUqSWm8bop/6XUAzawbmAwcBE9KNRkSkvpQO0c/n892qgZSr1ZjP5wtD9BPNzc3duhqzXng47QEbbcDDwN+AMe6+4/SpIiJSkBT+bmlpAcI9sc7Ozm73zcpNy5TL5cjlcqxatQrYXng4SWYDBw7MVFdjmgM29gUWA3e4+6y04hARybKGhgaam5tpbm4uVAN5N0P0SwsP9+nTp1ANJElq9VyrNc2W1/nAwcBEM5tYtHycu7+ZUkwiIplXOkQ/n88XpoNJklpp4eF8Pl9Idol6rgaS5oCN2cDstH6/iMj7RTIhbvEQ/VwuV0hWyaSdpcpVAyntakyrGkjqAzZERKS2igsPt7WFR2s3bdrUratxw4YNZauBrF27lrVr1wLbuxqL5zir1QPUSl4iIkK/fv1obW2ltbUVCJU+1q9f3y2hlVYDKdfV2NTUREtLC21tbQwePLhq8Sp5iYjIDhobG3eY4yypBpIktFwut8N2yQPUa9asYdy4cTQ17ZnZ6kspeYmIyG6VqwaSdDUmP8UPUFd72L2Sl4iIVKS0qzGfz9PR0cFbb73FgAEDqtbqAiUvERHZQ5IBHIMGDar+76r6bxAREdnDlLxERCRzlLxERCRzlLxERCRzlLxERCRzlLxERCRzsjZUvhEo1NUSEZHeqeh7vuzTzllLXgcCTJ48Oe04RESkNg4EVpQuzFryWgocD7wGbEs5FhERqZ5GQuJaWm5lQ1dXV23DEREReY80YENERDJHyUtERDJHyUtERDJHyUtERDJHyUtERDIna0PlU2FmDcB84EV3v9bM9gNuBY4EckC7u8+Jr90PmAMcDvQHfuDud8Z1nwVmA/2AvwBT3b2jTuI+HPg5sA/QBVzq7o/HdecB3wT2Bp4CLnD3LVWKeQpwSYyhM/6uZWZ2GfBlwjF7FzDL3bvMbAiwADgYyAPT3f3Z+F41298VxH0o4bMYAvQF5rn7dfG9jgFuInwWrwJT3P21asRdSexF27UAfwK+5e731Tr2CvZ5f+Aa4DigGbjd3a/JQNxDgXagldDguNrd74rvlfoxHtcNAn4LnFe0rKrnplpeu2FmhwG/Bs4oWnwDsJGQoEYDJ5vZqXHdfGC1u38CGA/81MyGxw+yHTjd3Q34J/CjOor7FuAX7n4kcB5wj5ntZWYjgFnApwEDBgEXVilmI3y5TIhxXAXcb2anAF8ERgIjgDHAmXGzm4Gn3f1wYApwr5k11XJ/Vxj3fODu+PpPAl81s7Fm1he4D/iGux8W/z2vGnG/h9iTC6M7gIFFy2oWe4VxXw3sBxwFjAJmmtnoDMT9Q2CJux8BTABuNbPWejjG47pTgCWE74diVT03lbx2byYwF7i3aNlI4E533+bum4FHgTNiy+ZEwpc97r4aOAb4L3ASsNTdX4nvcSswOX4JpBp3XNcItMR/7wu8E//9OeAhd1/n7nngNsKBWA2bgGlFV7zLCFebZwIL3T3n7u8QDvwpZrYXcCpwO4C7Pw+8QjjBa7m/exR3fM08YGGMewOwnHCFOgrocPdnil43zsz2r0LclcYO8B3gxfiTqGXsPT1WGoCzgCvi8b+BkCD+Xs9xx9c0AgPj39AEbCW0ZFI/xmPivyDGWmip1uLcVLfhbrj7+QBmdlLR4iXAWWb2DKHZezqwBTiU8AFeZGYnx3XXuvs/zOwgYFXRe6wGBhASxR5v5vcwbgjJbpGZXQgcAExy960x7pUlcQ/f0/HGmFcmvyseyNcDDxGesn+8TAyDgT7uvq7MuiZqtL8riBt3b08WmtkE4FhgKqGFW4jb3Teb2TpgGPDmnoy70tjN7MQY52cIrftEt2O8mrFXEPcQwmc/3szmEnoQ2t39xtJzs87iBrgMeJqQ4IYAF7v7G7X8TtlZ3PEieEJcXrxJ1c9NtbwqczGh3/c54AHgSWAz4Z7QhwhXcccBk4AbzGwkYV+XK2dSyzJXZeM2sw8AdwPnuPtw4ATgtnhylMbdUO2YzawZuIdwMTBtFzGU26e7WgdVjL0HcRdvczbh/sYZ8ap2V39T1bzb2M2sjfDFNcXdS2Oqeew92Od7E1owhwBjCYl3hpl9vs7jBvgl8GN3H0ro8v+2mR29k7ipcdw7U/VzU8mrMgMIN6lHuPt4woeynHCjF0KTH3dfDvwOOBr4NzC06D2GAf9z91zNot553COAJnd/JMb9B+CvhC7P0riHEq6UqiJ+OT5LOJDHuPv6XcTwBtAQu2tL19V0f/cwbsyswcyuA74PjHf3p+Jrum1jZnsD+wNrqhF3BbGfSbhy/pWZPU+4f3SNmc2odew9jHsdoZdhgbvn3f114BHC/ca6jdvMBgOfYnv32yuEi84TymyTxjG+M1U/N5W8KjMDuBLAzD5IuAJZ6O7/Av5MGDGUrDuW0D/8BDDazD5c9B4P1kPchAQ20MyOjesOIVzhPUfo0jjNzA6I3QXTCa22Pc7M9gUWA/e7+yR3fzuuepDQJ95sZv2Ac4AH3H0r4b7d9Lj9x2Pci6nh/u5p3HHdjwlfQEfF+wGJJcD+yWdBGDzz+918UdQsdne/zt0Pcfcj4437ZcAl7v6zWsZeQdybgYfZfm7uQ7g/vbSe4yZ0W64m3puOyeyEGHM9HONl1eLc1D2vyswG7jSzlwitlyvcPal8PBG42cy+Rrg4uDJZZ2bnAvfFm5wrgLPrJW4zmwjcGLsQtxKGta6I664EFhG6XpYQRm1Vw/mEQQsTYzyJcYSRTX8kDCt/kDAEF+DrwNz4N3UBZ8Wb8bXc3z2K28yGAxcRrkCfLLpXcKO7t5vZF4CbYhfNm1WMu8ex7+qN3H1LDWOvJO6vEI7xlwldiAt9+xD/uozbw1D504A5ZnY5YaDGbHd/Osad+jHu7ju7L1jVc1NV5UVEJHPUbSgiIpmj5CUiIpmj5CUiIpmj5CUiIpmj5CUiIpmjofIiNWZm9wAfAUZ5UXX++JzRbwgPgD6bVnwiWaCWl0jtzSDUfvtusiA+X7QAuEqJS2T39JyXSArMbDzwGHCcuy81s1sIFQjGuns+Pgg6C2gDXgJmuvsLcdsxhLJSRiiw/CRwrrt3mNldhB6V0cDbwMditQORXkUtL5EUxFqGtwC3m9lYQs3AKTFxHUOYK+sCQgttLvCEmQ2IZXoeAG5w9yHARwm1KacWvf0YwoSLo5W4pLfSPS+R9FxKqK33CPClOP8bhJqTd7j74vj/+WY2kzCFzQJgpLsvj12NBwL/oXuh00XuXrVCviL1QC0vkZTESQd/Aqxw9+LCpAcD08xsffJD6FJsi9OQnGpmK4GXge8RZjMunsjvVUR6ObW8RNK1jR3nMXqVMInp5cmCWIH7dTM7njDQ4+hkJloze7Rke93Ill5PLS+R+rMAmG5mo6Awc/GLwBGEVtY2YJOZNZrZJMLUHn3TClYkDUpeInXG3RcRpkxpN7MOYA4wNU6D8RhwL/AC8DphoMY8wqANkfcNDZUXEZHMUctLREQyR8lLREQyR8lLREQyR8lLREQyR8lLREQyR8lLREQyR8lLREQyR8lLREQy5///shh+y5OmawAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = run_simulation(system, alpha_func)\n",
+ "\n",
+ "plot_results(census, un, results, 'World population projections')\n",
+ "plot_projections(table3)\n",
+ "savefig('chap04min-fig04.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/code/chap09mine.ipynb b/code/chap09mine.ipynb
new file mode 100644
index 00000000..7d2938d7
--- /dev/null
+++ b/code/chap09mine.ipynb
@@ -0,0 +1,1071 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Modeling and Simulation in Python\n",
+ "\n",
+ "Chapter 9\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": {},
+ "outputs": [],
+ "source": [
+ "# Configure Jupyter to display the assigned value after an assignment\n",
+ "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
+ "\n",
+ "# import everything from SymPy.\n",
+ "from sympy import *\n",
+ "\n",
+ "# Set up Jupyter notebook to display math.\n",
+ "init_printing() "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following displays SymPy expressions and provides the option of showing results in LaTeX format."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sympy.printing import latex\n",
+ "\n",
+ "def show(expr, show_latex=False):\n",
+ " \"\"\"Display a SymPy expression.\n",
+ " \n",
+ " expr: SymPy expression\n",
+ " show_latex: boolean\n",
+ " \"\"\"\n",
+ " if show_latex:\n",
+ " print(latex(expr))\n",
+ " return expr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Analysis with SymPy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Create a symbol for time."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAcAAAANBAMAAACX52mGAAAALVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAEN0iVJnNiUSru3YyZmh4TpEAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABBSURBVAgdY2BgVGZgYGB5CCRYE4AEUwEDQ+e6lRsYGPyAPIYwEKEOxIwvgATHAwYBBvYElgMMrBOkGRiY115gAAAqOAp4YMdHJwAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$t$$"
+ ],
+ "text/plain": [
+ "t"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "t = symbols('t')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "If you combine symbols and numbers, you get symbolic expressions."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAACoAAAAQBAMAAACSDPCjAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEN0iVJnNiUSru3YyZu9l18v4AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAfklEQVQYGWNgwA4YldHEWR4CBVg+QkRZNkBoyUiQAGsCqigDN0iUqQCLaOf6lRCtMBMgav0hShlQRcOwiqqDRNnT0pKepaVNALFBtjH+ALGAAMUEjg8MApii7AksBzBFWSdIgwVRTWBeewFVlHXet7kQERAJtw0hBGQxGiC4AJR2JRh3Dfv5AAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$t + 1$$"
+ ],
+ "text/plain": [
+ "t + 1"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "expr = t + 1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The result is an `Add` object, which just represents the sum without trying to compute it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "sympy.core.add.Add"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(expr)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`subs` can be used to replace a symbol with a number, which allows the addition to proceed."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOBAMAAADkjZCYAAAAKlBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmU0mKAAAADXRSTlMAIom7VJlmdt1E7xDNIS4hGwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFJJREFUCB1jYBBSMmFgYAxg8E1gYL/CwNvAwLmSYe8BBiAAijAwcDcBCUaNaCDJwKA1AURyrWZgFGBgBiq+DSK5DBg4LjKwJTD4FjAwTA21ZAAAM4UOK1ZklQ8AAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$3$$"
+ ],
+ "text/plain": [
+ "3"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "expr.subs(t, 2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`f` is a special class of symbol that represents a function."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "f"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "f = Function('f')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The type of `f` is `UndefinedFunction`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "sympy.core.function.UndefinedFunction"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "SymPy understands that `f(t)` means `f` evaluated at `t`, but it doesn't try to evaluate it yet."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAUBAMAAAAevyJ8AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJl2IquJVETdZu8yu83OyatpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA70lEQVQYGTWQMWsCQRCF30W5nAY1pPIavSKxDJJfcHUgpDDYiCB2NmJjIQTO1kqLxE4Q06UIAf9A/kEskj6lhYV2NoF8O1wW3rw3b5jZnZXSc+s4H1t2cRMruzH5YLGZDFSkFsaqOMM7lqUVIjmXX4dP94QncE3xHfZnUhZoDrZMbj1HykQK2r8NqYtZqkuFZdr6hnH/IeUG0skPyQgk4GyM2UF8gh5wRhWY8Q27lqk8aUKyBm5oX48SQ70jhh9JVx7X1aTggBHMpLtXxI7iBranQ7x4WFw6wy3HYblFaKoQG7H+y6Wp9IO+LLHw/4V/hfArzA7LVpkAAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$f{\\left (t \\right )}$$"
+ ],
+ "text/plain": [
+ "f(t)"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "f(t)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`diff` returns a `Derivative` object that represents the time derivative of `f`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAADYAAAArBAMAAADBI2arAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMrvvmVREEIndzSJ2Zqtw62vAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABt0lEQVQ4EXWSMUjDQBSGf9M2lzZWwdWhBQdBB0VcRISMRUXjKA4tOIhTA0462Co6KA4dBUEqiJNCEFelgohjBxcFpYibHapQ6yDou0uNSdN75O7ee9/lEv7/AB49o2JpP9Xbt3lXbciZVpCzmCFjF3sJU8LUcQxZErZSxqQEYdbCvoyNgH1KGPtCpCZjdSjFBQk8xUMlL2Hrd73VjJdd8iJue1uUs+kpQE+K7lsL69omQ2L0xqqNtRaWW8oA99RMW9BKfpjm5QENEooN+9kOlXqBJi7UiY89j70CnQbUl48qsOVj+KZSKcMR6tHH9HcqoyYQLlIy72NC11CGeJ76Cfz8RQ0Q14azHA1i3lAqVPEzs2DAshchVKKS/8su5gD/v4ijNAOYYbQrRRv/I2tRrhaA8ydKjv4BZZui4ppRCH3Q0WfwIlI544vQmpam1t0mNyXaT6dRKLZYmh7Rd8iU+I3TbHo7KHaA5CdT3PDdiWPHFBe6iZ66rjumuC03WbSVhuT2sgnuCD1tItzgjghTAjSU5I4IJQMslwfdLmFKkJkYiNjClACLleKHmmNKgLHqxtWtY0or+wWPt29WzftxaAAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$\\frac{d}{d t} f{\\left (t \\right )}$$"
+ ],
+ "text/plain": [
+ "d \n",
+ "──(f(t))\n",
+ "dt "
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dfdt = diff(f(t), t)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "sympy.core.function.Derivative"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(dfdt)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We need a symbol for `alpha`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAA0AAAAJBAMAAAAbVLtZAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAiXaZRCLdEO9Uu81mqzIdlvb2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAATElEQVQIHWNgYBBSdmAAgjAH9lb2CQwMjQwMi5kKGJi/MzBYMzIwcCxgYJAQZ2CoF2BgkAdK8x8A0kDlzBcYeOz5ChgYBM8cYBZiAAB/PgtMBwlgJgAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$\\alpha$$"
+ ],
+ "text/plain": [
+ "α"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "alpha = symbols('alpha')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we can write the differential equation for proportional growth."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIMAAAArBAMAAACp/CbWAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMrvvmVREEIndzSJ2Zqtw62vAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC1klEQVRIDaVVTWgTQRT+mjTZTdZtc/NowIOgtIoHUVDISYJKjUcvJuBBvNhAVagISaUeWhSCoCiFEKF4UITQmwd1haIXDz14UitBPQj2EAVbD4p+b2bDZhJE2Plg3ryf2S8zk/fmAYKRnQU124jxks3X6tvpqjXFgjUDli0pvOKLH5YUZ9uJLTsK5whGW3YUo1vI1O0oknnUKnYUtTrKdgyolbA71bYiyQZ+07VigLMx9+xlP8VTMfz/7ctbk2XvRBi4uNqGl1eur0bAMJwTx4EV5Rob+qUv5RKy9M62ccX4yjDGrjObHwHOEpyWEaFv8zLwhs5yFW4wEIzM2rkK/AKQYlLfiNxKS3U5LXEcI92+gWBkSg5kuFdJ6pnIrTS3AXgcuMvxYCAYmfI0POGQpM5WqETwPzUL2FZA+uP3DWA+CoSa+/qoaB8OfQZWgQt7JwO4hTAYTuMBkFjjIbt0vFXOxYeCZdG9O5hpX6Lyi2OCQw7ktyj68DzH3ZX0IXG6L6DUZB2JwitSfaN5m4M3hlSDog9Cm6zoQ2IHDQMnq7zAerjHAwzJjY108acH2bvcU7ICXblDFPsB92CVQn6YFM4mZ1IYmKQlB5mGA5xXoYV7giZ15ye/lhcy0aHgQdJdVJEWvj4cpi7XuYhTvevsi/4mhfxmMqDgdbqtVG7wOtXO5F+acriqyIUGppi53e3hMed56Z2rFHVjTVpeYdnZyjqV+0aMhntzHcWAx6zS4DG9CW44mzOWuXkxJcEJlaVaHZDXxM60tVeyNGrKZ7Jk1WXGyQ3EGEaq81icUmaCsMzYlFnduDWrnAnN/69iz+xqqGV7lOwVOw/H6sZ7PiSEl1eTXqJUQ/h8lQT6yQl/TzJKcrWHOA8fi0hyNTakKevqjk2hmrKq7rgUuilb9WXdlOUJiw3dlGuV2ASsGdWUVXXHZdFNWVV3XArdlFV1x6XQTVlVd0yKv0lCuXdWm975AAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$\\frac{d}{d t} f{\\left (t \\right )} = \\alpha f{\\left (t \\right )}$$"
+ ],
+ "text/plain": [
+ "d \n",
+ "──(f(t)) = α⋅f(t)\n",
+ "dt "
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eq1 = Eq(dfdt, alpha*f(t))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And use `dsolve` to solve it. The result is the general solution."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHIAAAAYBAMAAADUnLRyAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJl2IquJVETdZu8yu83OyatpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACFElEQVQ4EZ1UTWsTURQ9k8TMtKZxKFLsQhvQFsSvQXctytCFC0UiVl1YhFhX3dQguBCEZCsuVGgFF7ah3bkopUK7NPgH7MLuxY1ZiLZgtQhCz70veS9pUyi5cO+ce88972veDNCZZaud6YCBsFPl006EDycQjs6etdJrgrpjm+8LusqHogK+K997MUZqTeHtNgLv8p17qYIlzqG7VsZvze+WisjGQH+ME7bBgZEK/DMVm68iWEawJLm3fQyYJyiFSEe2owGOvya6EDdSzpbZRPLmURb8DYZp+nmOomPZLgG/QoYXrlRD30aY4FaB9CsgRccbeo3eYom/kn5ytdHhaKgYjFV5nuMzOSRzCO7/HwMmXItBeRkTsjZa36VTBph4JAJ6KvVVL2pt6qfYN8GPyIplvgLBNK5qUg/5KtBVBBLksOduzJGlZQY59/Wi5y4AiyX64TLVBYLP9Bb7GEoawqdyfGFYs0bDJIEoB+h7lXMswq+qcktwk60Ty2pfwgOeKzH5VmxGsL7JBMWc84+SLnwglBOawjPAnJAjkS8weWCUK0CyifK2maRzwKAXAUNNjEL/H/CYu5M5r8BrfivBJjsC1m+8J/ixW4ne9VtlFkWZPCkt1tJrAuX20fQuGbgrirLVnmQrUpg31TY33hDwl+rAPt71K+yJ9dHuK1MidXorUuDCgtlz/cv+4ogDowP/TRoj7gDYqmeaCiX2YAAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$f{\\left (t \\right )} = C_{1} e^{\\alpha t}$$"
+ ],
+ "text/plain": [
+ " α⋅t\n",
+ "f(t) = C₁⋅ℯ "
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution_eq = dsolve(eq1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can tell it's a general solution because it contains an unspecified constant, `C1`.\n",
+ "\n",
+ "In this example, finding the particular solution is easy: we just replace `C1` with `p_0`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "C1, p_0 = symbols('C1 p_0')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG4AAAAYBAMAAADpDtUUAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJl2IquJVETdZu8yu83OyatpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACDklEQVQ4EZ1UO0scURT+7s46O/uaHZIgEQVXFCsjwwYbi7BYBGKKCEJAbBa3sgnTWFg5EEybFKtokbCoWCSNRjBNigH/wBaxSZNFCLEKM7A+CpGcc/cx18dK3A/OOd95seeee2eBTmB6nXQB/VZnfYv3byvOwZr4NNJqnJRsq+W3IXG3yy7gj8w+yOURrUjalW9T3ww/QeLYRU26r5ccmNQgShDVZkEb+w3GVxg7nBXnj4ENIrEAKLapb4ZrSAXQph5xuU+qRBKpAr1k78Ixun0rQkcE9A9AlARx8kyXyB2YGLeHHWPaAxKzK1loWWD516ENncgVvPtxMGbVI91Ph9RUxgbSZYoskSSqpPDmL+OIaWHG0StasQAYJTynQAuvPBrRIXeUJMYDK4g6v5Hwt7EAvHREeN1Uwj+TdEmtkqR8UgoEzqAHa8hYmN0ct5QM5snhPnFO5HofjADp3QskHZyoTcQPSXhOw4cFQ845v85Y4ULadv9IDfEyTtlVsEec96JXY15jL0rWzOJLX4C4jX1AUxJyPF5/ZOohqYKSYpqppL6nakjaeAah3gMdgGak8aI/y3TvHnkq3r/N5cUFMi60wc9qQq+wx++M8aJuQs1bg9xnGGO2YJbZ8Ltm3HjX8vJzfH9X8bFH+um8NDe+I3HGcX14QKYVtVk/a+O7bbSH+cVLO3RuY//5P9Fs/Qfx4XGtn//y6QAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$f{\\left (t \\right )} = p_{0} e^{\\alpha t}$$"
+ ],
+ "text/plain": [
+ " α⋅t\n",
+ "f(t) = p₀⋅ℯ "
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "particular = solution_eq.subs(C1, p_0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the next example, we have to work a little harder to find the particular solution."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Solving the quadratic growth equation \n",
+ "\n",
+ "We'll use the (r, K) parameterization, so we'll need two more symbols:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "r, K = symbols('r K')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we can write the differential equation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/latex": [
+ "$$\\frac{d}{d t} f{\\left (t \\right )} = r \\left(1 - \\frac{1}{K} f{\\left (t \\right )}\\right) f{\\left (t \\right )}$$"
+ ],
+ "text/plain": [
+ "d ⎛ f(t)⎞ \n",
+ "──(f(t)) = r⋅⎜1 - ────⎟⋅f(t)\n",
+ "dt ⎝ K ⎠ "
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eq2 = Eq(diff(f(t), t), r * f(t) * (1 - f(t)/K))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And solve it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAAAwBAMAAAB6TlzuAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJl2IquJVETdZu8yu83OyatpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD/UlEQVRYCa2WXYgTVxTH/5NkZybZNVlqlYqoAbeFQi1TdaW1VqeiggqaVumDi5rS9mFf3ID4ICIbH/RFZH1YS/tgG9wWiiCsH/gkOiD4aoRKwZcNK9KHttl01RpKd7fnnMnMJGYW7s7mwNx7zrnn/HJz5947B4gk1z7/ciMnmhO/IT3TG4kRkrTPwqpx8X8M7LSbI9JOs7UwPVEHUmXJOQzDYqXLI6xZxOSTeaBHcLiJD4W4xOOe9BS1vn/uWS+OzjoSvY3mpMm8tPqqkriYmzo0dnD7D++JrdzMUuRp2w2/7HafAUb9WFkM4Y4Uv8Pv7phqa/5D8yk0oqelP3cL0P81/xODuZ9+Qs0LMZUbvQ7tay/6W1L2AKNAOotLZByp/lGtWjhAG2/cC1Lr0zU88CPXkZYXbqaAYZv9PF/cAeK5N1lTlkwllZXg5Rv6kCxhuS3chza6xc/cRA2IWXnS1GUkP3SRo81R7AK+eecD0keh/9iHU7LazDXL9BxwSFOXoU2xVxy9t6D5G4nW1xdZB99SV6ZKCd5pGBjb3NvIuj9dCPKjcmeACYcwLwNUi5ZosZQN8zkwkqNw2sadFJ12f/JvIt6mrdRBcLJGPJ7rVmh9C+LS+SH5KTxn2dRLCx/N/UrwtVfDQ0K8b6y3kSjLQJcdMh7V9cVwAWkCaqPQKlEh7Xla/S3gCvkNejFftY9H9Rj0TvhuQqwCrIxKac/TL9KVQQ+Sebr4iu0B0TypgUtZxLPA2YnHFnRSOiQZi67PEsGG6UlVqMGxKsskq9Flv0NLUKD89+kxeEE6IzzN7iI1/HnpqVHTGRkkDHO1Oilt3MxcJCHUY3p4HcwaemHKOgx+z8JfxEXITcrl96ZXDKfx3hZB81Pl7/P2iuWWUpP3B1oVr4LEhZkCph61DoZZJl+r/PcTT0p0LpywGCCoIOPjSBxsCfqzxfIMvcwan2OW3W73ettUQXaVcVyGc40gjSfWJifSJfbxvcMyz73DR7xRQXZb8SJHQuZDffiWv7xCgpbY0s13TwYVJNaceSKhwv35av+Odycd1+G1xnXSxtzPSuNeb+C9CL8PKkgMn/vLdfN8f6kni+mCHybKsrebF2aP+Ob5DiGoIDFUGnEklriJpdRkbDGDJt7MDdxhGh9x+mV+u5NI5qjur1bvVp+iywLOv56gyOVKbx3l5l3uKxgvhERTRbcD9Gu22H6jxpVKL6ggewh6QxDM3U/PWt0nuooa1630vAoSg9O2cS/LAOZeoOfsFraaRI3bVOn5p0cgzA1ktVxVcvTUuE2VXksF6Z+LgN3Q1LhcPYWKHeolpxr3NgXORwj3q3EXXOkpznchlZ7MPzYweyj8j3TA+z9dMCFhmpF/uAAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$f{\\left (t \\right )} = \\frac{K e^{C_{1} K + r t}}{e^{C_{1} K + r t} - 1}$$"
+ ],
+ "text/plain": [
+ " C₁⋅K + r⋅t \n",
+ " K⋅ℯ \n",
+ "f(t) = ───────────────\n",
+ " C₁⋅K + r⋅t \n",
+ " ℯ - 1"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution_eq = dsolve(eq2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The result, `solution_eq`, contains `rhs`, which is the right-hand side of the solution."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG0AAAAwBAMAAADpxulMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAdqvNEDJUuyJEiWaZ3e/xv6KKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAClklEQVRIDe1VTWsTURQ9SabpzDTpjAURsdiECgoVTRl05UcqgiIF6y8wf0ANLoorHcSFCyHBjSvNFDeubBRRRBdRUEQQxa5UJIofGzdqlBqrxPvuzCQv6StNBHGhF+bdc+675703Lx8HUMXA0YcTrpgwTkwjNp8VsIvQx6Ed9/vWAiddWbJFJh24UARu+LX1iNsCpXwK7UsAVOk5FQ/4E6+xmkE+6Is/CYCfIptr6xBt+IeIiDV384RW31NmIHRXbw2dfrRtink4WBkgfsxnSdEERLNUql/0iRhv1pPFWI6AFCUPuB5wqyKAcdkFzAXjqyAgnT5Bg0VFOWaL2BeWkh41lZEkHqvgKe3sOG+ccURt4IIsIrwTfR4ljgSta4J1Vg5HXFGkEgangCHNJdSKGm4z0WaGXbyAdsnXHXQxWBETQleg5w4tKIXx3fzJ9LyrezA3zmRZZ1Yf4PAPMSF05+g5u1KwZpifvMc5Yvp7TNJpOMT7NUPoFBFbQCFD9eiHFdeC6b6R+1LjEjorj35x4VZK6pWhK5MWLtkwPhO1vFatGzRLL1XN0lWTzu5GEPRUKY+QJpLBpBvUlk/aaCONSHWeFMNrysv3/+/4d2+g8Vvx8W9d2B9woBj9NpcKhQNFw9792RAtzgoH6g+7DoVgcVY5kNANjF3ZcGbuXocg/jYsqByIdaXiM2wNu4K8627TO1UOJHSnVtHwrUMHPh0XFzkQRp0djmMjTX72Sq0TTqJyIL6Xd/QXl9rbIfT3YydROJDQ6fQ9TNieSuc7icKBhM7I05Pu/Nx5P8lJ2Cmba/M5m0zb/pJijpdgneQk7Q7UrmsuQMDXeXJJwrqE2yHrenUSWoJ1vTkJb8y63p0ksak21n7wHtgv14vi2Bx3v2kAAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$\\frac{K e^{C_{1} K + r t}}{e^{C_{1} K + r t} - 1}$$"
+ ],
+ "text/plain": [
+ " C₁⋅K + r⋅t \n",
+ " K⋅ℯ \n",
+ "───────────────\n",
+ " C₁⋅K + r⋅t \n",
+ "ℯ - 1"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "general = solution_eq.rhs"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can evaluate the right-hand side at $t=0$"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFIAAAAwBAMAAABwPjD5AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAdqvNEDJUuyJEiWaZ3e/xv6KKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACYElEQVQ4Ee2UQWgTURCG/ySbsJtkk616UFttDoKCpVYvXpTEIhRKwfTqxXjyZoOICIJd9KagPQhCQbJVD140Kwg9eImCGnoSPVgUsYKIqGBttDEaiPPm7S677Rq9iBcH9s0//3zMWx68B4TF7MD19exfbpaQPx6GSO+sgZEFlpEFqNukGbaqLSBV5k60jMNhiOPpFhA3uMgYkakguaazq4AdjSK7/QVAoY/iwKVTnH1Lg/QRUxrPZNpCaWJ6tyy8VftOv1Zyyjbn6XeUqnZF7uO0gGQLyg23ek7iPDBPaQ/0nGvLHFvEQc95RMqS5DIS3zyfRXYoVWMx2lOHbmPUZDJO2Ef2vaViVR+LQpvHOeDq3DrStPvNtpn4VBMNL6ob08uiuFBSHrim+M/VkbdVcU4YvN1bcLrj7ZKjAqkJTIrjWAq4IYX2GajkqEHH2j2SXwH9CzHvgUhXVF8kQsxbC6XejRzOLxnY1DlJ+L273cD/vX9yAp0/jb/5d6ljc/tMsYE2eQKxZkHI0FB3QjktO5uBM2YoxObFKWBWtrciYfwahHg2xmX/NTZ0ASPiZuxnQGmN2KvIxBvX0susogUg0bomC7dHefi+mMSRrYmk3TLpLfuh0fVbEbwne7oFqDZ0E4jV8GQFR9eLZyozfWaaNkzSRSYyW8IEpWBI8oqpWnjBz6cgD5nI1IKcM1N9i7EikgMzBZ6ZfFXHUfko+3CeGf3Qc8f1xEwvlL0vKZ4WhcFkNuf14v0PPR0UkrSCZmjFZIZII7TtM5mMDGHM9Jmhkkn09dqhXZ+ZHmxs95W/kz8BIJu3LLDpAPkAAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$\\frac{K e^{C_{1} K}}{e^{C_{1} K} - 1}$$"
+ ],
+ "text/plain": [
+ " C₁⋅K \n",
+ " K⋅ℯ \n",
+ "─────────\n",
+ " C₁⋅K \n",
+ "ℯ - 1"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "at_0 = general.subs(t, 0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we want to find the value of `C1` that makes `f(0) = p_0`.\n",
+ "\n",
+ "So we'll create the equation `at_0 = p_0` and solve for `C1`. Because this is just an algebraic identity, not a differential equation, we use `solve`, not `dsolve`.\n",
+ "\n",
+ "The result from `solve` is a list of solutions. In this case, [we have reason to expect only one solution](https://en.wikipedia.org/wiki/Picard%E2%80%93Lindel%C3%B6f_theorem), but we still get a list, so we have to use the bracket operator, `[0]`, to select the first one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(list, 1)"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solutions = solve(Eq(at_0, p_0), C1)\n",
+ "type(solutions), len(solutions)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKcAAAAyBAMAAADLk9YvAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWYyuyJEid24QR+aAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADq0lEQVRYCa1XTWgTQRR+aZrmfxN6FGkrVQ/iIZSAB9EsCupFG4oHRaQ5SG+xOajgQdqb4CXBq2iiBy+Cxovgyb2Jp+RgC1Yw8aDoQa1YrdZKnJndmc682T+LA9l5733f+3Z25ydvAQJb1gqkCEJRWAHGUgAuw5ma7HnbWdMb05HrIhSZFKZujBb0mHck1XWw4ulv3qzofm/MBYnu4sERH9FUmbPC9aOc5ic6/k9PD2Dw5/cTfcfvjPrMytO5oyhG3chvJ+gjmuAcnJ8dfgsrUK3iOPBR+IgaLS3LDjyOm1BPdCMmxuvO+/IRbVo4yfELuTz0DlugzXGpYjN8RGc8NAE6BbhXaoBYQpwYrwWK7uZcrX8D0e/NNnzAwIgzC94jTf7EOcK/DInJZgHei4BjpJ0Ub1F+W5xJ/A242SAj3atB9sPFjqyf0CA7kJrwACCzOXcOyDvd1AgP1UjyON8OPD7U4hbus30SMVxmH3qIOmWiQKmMAsKNU2SkrK9TqFuCxIyUqfrQrKCAcEt5ai4tFUSEGzhHEx1nqZwu9ZEvVyRPMfHTaaL1hsIP5eRMlUZEo8tVCzInz8y1KDTfVglhvFxLZRHRO224T7agsVihUG8bokM1TfQTQLNxCob7DJktqIQw3lAfBqKRhJSZ/AqQ685w0WmmcuAzbVdBIossxVildGOCJYlLyoyQHZJrPWtM5VnQFhV4KEMXZSMtP1l+Zedv5/GNvnpvMlF7yElp7eTh/zJRLXL0wDV4/uKWLTvf4PLhe3ReJKfX2unzLy2IDwZkxKThfRxGOlcmrAuDSwWYXpfHdBcOjlWowLhFr1JzIUsoM0td2q2T3442C9iXSAsgQX5kyVboVW4aWQaZzXIyf4hEXsaiH8mSZRH2KDKkk2WU2ewQym5C9LUKHVqunmURo6YC4EJGDHtrx1fhNga4H1vlltP7kR0K2zC5WqKMUoWbwLWCGxmVVftodqfb6wsVZNANpjQ3slpWpX/QhF41hlO3dHAx4UZWyyr7X31hMU3XiXubReEtsji6QC2rUn2asgHwqIFyhduxhMkMV7JSVpUqhJgh76BjsgyXi6HOoTtZKavmC0Qm+4ucq3iShTyafneyUlaxWTBWSVFANpVHsw8WDrqT5bKKlefFhbUKXBw84Gm4Vz4k3MlKWcUqFyyC/RAkpawK9S2XJq88oMllVchvubEASQC5rAr5LRczA1SVsupGAJnDx7gRog/7aQ4xK4SaQynSlQ9/AaNEMCQ//0eFAAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$\\frac{1}{K} \\log{\\left (- \\frac{p_{0}}{K - p_{0}} \\right )}$$"
+ ],
+ "text/plain": [
+ " ⎛ -p₀ ⎞\n",
+ "log⎜──────⎟\n",
+ " ⎝K - p₀⎠\n",
+ "───────────\n",
+ " K "
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "value_of_C1 = solutions[0]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now in the general solution, we want to replace `C1` with the value of `C1` we just figured out."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/latex": [
+ "$$- \\frac{K p_{0} e^{r t}}{\\left(K - p_{0}\\right) \\left(- \\frac{p_{0} e^{r t}}{K - p_{0}} - 1\\right)}$$"
+ ],
+ "text/plain": [
+ " r⋅t \n",
+ " -K⋅p₀⋅ℯ \n",
+ "────────────────────────\n",
+ " ⎛ r⋅t ⎞\n",
+ " ⎜ p₀⋅ℯ ⎟\n",
+ "(K - p₀)⋅⎜- ─────── - 1⎟\n",
+ " ⎝ K - p₀ ⎠"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "particular = general.subs(C1, value_of_C1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The result is complicated, but SymPy provides a method that tries to simplify it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIcAAAAyCAMAAABBPjj+AAAAM1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxgEwMAAAAEHRSTlMAdqvNEDJUuyJEiWaZ3e9AqUJ7gQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAptJREFUWAntmNuCqyAMRRPBCyBO/v9rTwLexmJRi855KA8zaHFnG0PsKsC9Q9X36h9U16QPrrx3WeNL62NFpCq5O5nksu0q57D66b3qc0tPGyUVL2naLnutM2TAG1BNdunZBYZsuMQdkO40tmEx5S2f9WH5DgG0PaZcoeib4WyU/HpFvKaOOcmvHkJZYAX6mO+84rRCysP10xEY23Y1Yqjc+SSnC7HnyJ2YBugRjhpfNN7PpDwsLdvQQuW5UizXAVocoxkvHvjAxPIwFZbeLpY4WE9TkXYNqIqdOwLHcRuZQzfwx7r8Tl1nSJGTdI97F7iRBE+WNG9PPgidZXCI7t4OSiHTLc15NiF0O+hwSjIBFLKydl98bihuxCWUlVrR1NehR3jOFowdpnjwlaAdE+HnF5eSveMGXYczXmwOsVyD49W1Jac+bkTA+Z7lQdXcJmI+BgmOUj1a9u09Q1eKKHRI9ETx9cIvkNgqYn2EZgvYo5MH9OAI5RHiLfvlwfBzqFAe4Qi5UGL/mD98bqLnjsY9tbf9vU1j974aT+rObbEb+PvBNwN/mgH6P8af5uAb/OkMZMHzGUMXMf8cQx+4lcuYP30PP8LQ+z4i5XfdZczfZ+jmzFt1ovzLmL/P0Gd8zJQPVzF/n6HP+OCfaGL2LmP+hqFXFbDx8Z6uIVI+5DA/rcJUvGHofR/v6Xqk/CzmJ1U46IahVzbgdz4ydD1SPmQwP6kiQTcMHX1YJcMP4d8IrufpWis/j6nJJlUk6AtDRyfy93c+5BHKN/NP6TqhwqqvDC0O4tj6KEPXCRUO98rQk4vXfJSh64QKh3xl6H0fZeg6oZJi6MXGtj7K0HVSZRU0Md3URxm6vqCy+fmzDF1/rFKGrj9WKUPXSZV/IhUha3YQ10IAAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$\\frac{K p_{0} e^{r t}}{K + p_{0} e^{r t} - p_{0}}$$"
+ ],
+ "text/plain": [
+ " r⋅t \n",
+ " K⋅p₀⋅ℯ \n",
+ "────────────────\n",
+ " r⋅t \n",
+ "K + p₀⋅ℯ - p₀"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "particular = simplify(particular)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Often simplicity is in the eye of the beholder, but that's about as simple as this expression gets.\n",
+ "\n",
+ "Just to double-check, we can evaluate it at `t=0` and confirm that we get `p_0`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAABMAAAANBAMAAAC5okgUAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARIm7IjJ2qxDdVM1m75kH/PNjAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAhElEQVQIHWNgEDIJS29gAAOFygVMBmxqCgwMLAu2M/B8OMSwnIGBg+EXA9OPiQz8QEWMPxiYb3xl4F3AwMA0gaH/6RcGzgMMDNwPGM62/mDgTGBg4Ddgvcr6hYEXyJQXy3Pg+MrAL8DAoMkABBAT9oGYeWBzf4GYTI9eMDCs/J0AYgMBAK4AIVrirvdQAAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$p_{0}$$"
+ ],
+ "text/plain": [
+ "p₀"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "particular.subs(t, 0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This solution is called the [logistic function](https://en.wikipedia.org/wiki/Population_growth#Logistic_equation).\n",
+ "\n",
+ "In some places you'll see it written in a different form:\n",
+ "\n",
+ "$f(t) = \\frac{K}{1 + A e^{-rt}}$\n",
+ "\n",
+ "where $A = (K - p_0) / p_0$.\n",
+ "\n",
+ "We can use SymPy to confirm that these two forms are equivalent. First we represent the alternative version of the logistic function:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAuBAMAAADZ8SrdAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWZEibsiMt01+HRvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACE0lEQVRIDe1UPU8bQRB9+MDG54+zotQIiTrCokRCKaKQLiCRKlIUF1DjgpQkBokGUbiiSOOrKLF/AMWVqZJUqd1FkaLYyBGOAsbM7tyJm71jZaiZYmfnvZn1evbNAQ+3J9X71zov1x5QBWw/VsWa/diNWDPeLO40ovBLtLnTHyWZYgfIrg1fYHq8m2Q1Mh0kiJyCvDowdZbgQsAh1rADFbd8YM8gYuFJbM/b38q1m1gOOE5bl0yw2FXIJ5R85e+wXNMgsusKGEJfVHCfz35sVhlxdVKMLTQoyP93r2MYb/3XFbeTPfEpmq0bbLlCgHvhv1c+bsXKDmb7h3hK4FQX3jiyPgGZJi25f/hW1yXOxz9kP78DDs7hDn7BqwKlviZvF13ldVAY3WK8yw9QWBghU0mp0jds1ZD/a1a5XTx/d4Vyg/531yB1N9p0ox7dRFhuHfsrA5RrKd3QTe1R+rYvakhlndKz0hUyVDXjQxr9uPNqvIps7zKQTOt4K3BG8JrULbqLNK0oCXF0qhz38GuCT4oiTPmg/JZ+r6R6C0GYZTjnXAHu2w16urrBAWoq02xuWIvgtIMn/ALExBydNoHXYp4gT6SwmHkEBGENWMw8AtZESSoxz/PzScIaKTFv8AhY8ySpxcwjIAlrpMXMI2DNk6QSczgCkrBGSszhCFjzJKnFfN8esph5BORxtojFrEfAlia5G5qIjfjnXoFAAAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$\\frac{1}{p_{0}} \\left(K - p_{0}\\right)$$"
+ ],
+ "text/plain": [
+ "K - p₀\n",
+ "──────\n",
+ " p₀ "
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "A = (K - p_0) / p_0"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAALcAAAA1BAMAAADxOGd/AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAdqvNEDJUuyJEiWaZ3e/xv6KKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADUklEQVRYCe1WTWsTURQ9+WiSSZomrQuhIk2xC8GP1gZdCR11oRS0AXeiNuKiK0t3utIs1IXWNv8gKQotWEm7EaUFoyiILowIpSKaCurCjWljralKvO/NR2aSSZsxDCr0Lubde+65Z968d19egNqtpdgtojMfqb3CDDNP5IGYmYraucIq4IvWzjfF9BbgnDBVYYLsyOGECbo5aqDLlzZXYYKdSKYyJujmqKnWxm/mKkywe6Y8rBmtsRXgkkUnCMIikAhZM294lwH/V4vE/TnARofUCjvYsxTE1uIFK7Q3NDdW4H9egaJ1Rif6L9hxC995cpeF4jj3b4s7ql9apZlfX/cb7hky+kRDmIGquGeIrojOfAfsxb1V2PaYUUJSGBQNcqq4g1UGugBX1WvCSVmd+XZMbx9+9QRw7uwU5cwZDUMVn2VgIgnc1WTL3LGy2JeIv8Y+DraJcs5QfJ4lU3H0xmSWwXCsDLu8mYDvHDQUH5T5ngxzetCQpKGaOeJKZuA8mYh2QFjgmJH4cJbyzGxp9syDrw5zVRPGrzR3SJE3zcbe5qdSCHykwtARFhmJKyy4p8gVVr2/VERxvPY5jKO1lWIf21FhHtfknCcHNAaTLFpT3B8lhncx+YKNOrvqCOGBL+kKUSNlKDMSdVJ/cBOG6F3tEeZL4jfD4XfhcLeULT2b4uQ7fmC0S8IOvWXGOl4MRJE6Ggf9B2vIUbx7eosocbTPipkHlJ94YnHxwBDcy9oS7idEXOyL4JMsvlRBYECFuJbFlyURhFBZewfOn/0xvKElyFCJ8R+9NcX5hqYiQFbUvpP5++H70C/ipbyhn6lDyinrzJx3WZaK2pLllSs4HaGZv6fOYLlNcKqtqFIffemekoIzKlZy6Iud24rtsGVXYiWUeUKB+prWvEAbTl8G28MZPUEfqeKzMy2Mzo0ffyXQjt4MRX7eLTe0eBWfHymWu19oYJXcKo+mnHCkybGlWZ+PyVAtg+dAyJNz3r7Fue5YlZK+KEtMToqo+MmtUiHB9qBrwS0e5gG7LIzMld2jwFXfrxB0Y1PEng6gSeTgn15zOkVNMBo7JY7Ar26qJlW/e7b5MSwTf0bzU5el/rnqFeYoVDZUn6k/alwS6eJ+PlG30m/GWBoP2GtObwAAAABJRU5ErkJggg==\n",
+ "text/latex": [
+ "$$\\frac{K}{1 + \\frac{1}{p_{0}} \\left(K - p_{0}\\right) e^{- r t}}$$"
+ ],
+ "text/plain": [
+ " K \n",
+ "──────────────────\n",
+ " -r⋅t\n",
+ " (K - p₀)⋅ℯ \n",
+ "1 + ──────────────\n",
+ " p₀ "
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "logistic = K / (1 + A * exp(-r*t))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "To see whether two expressions are equivalent, we can check whether their difference simplifies to 0."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOBAMAAADkjZCYAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJmJZjLNVN0i77urRHZ72Yd1AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAVElEQVQIHWNgEDIxZWBgSGeQmMDAsoCBOYGB+wAD+0cG/gMMvN8Z5BUYeP8xzDdgYP3MMF8BREJEgLLs3xm4NzCwfATpYkpgYGhnkApgYBB+d5QBAPogE3QldevOAAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$0$$"
+ ],
+ "text/plain": [
+ "0"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "simplify(particular - logistic)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This test only works one way: if SymPy says the difference reduces to 0, the expressions are definitely equivalent (and not just numerically close).\n",
+ "\n",
+ "But if SymPy can't find a way to simplify the result to 0, that doesn't necessarily mean there isn't one. Testing whether two expressions are equivalent is a surprisingly hard problem; in fact, there is no algorithm that can solve it in general."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Exercises\n",
+ "\n",
+ "**Exercise:** Solve the quadratic growth equation using the alternative parameterization\n",
+ "\n",
+ "$\\frac{df(t)}{dt} = \\alpha f(t) + \\beta f^2(t) $"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAATBAMAAABW2/GaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAImZ2VBC7MkTdq++ZzYkDIcvSAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAb0lEQVQIHWNgYGBgVBIAkgwmrOlAkqmAoQ1ICTEweAIpAwaGVWCKYyMDA0fh4ZsBDAzMrO9OFzAw8AFZF4AYKP6BgaEdqHMDA8MDBgauBQwMQHFpAQaGJAb2GUDposfvAsDqgSaBtIFAMIQCagMCAOX+Eqx2lY/DAAAAAElFTkSuQmCC\n",
+ "text/latex": [
+ "$$\\beta$$"
+ ],
+ "text/plain": [
+ "β"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "beta = symbols('beta')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAANcAAAArBAMAAAAZAwDkAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMrvvmVREEIndzSJ2Zqtw62vAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEEElEQVRYCb1XS2hTQRS9Jk3ea9K02YluDLgQFL8LUVQMLrSoaBRcCGIjLsSNDVbFH+QpFakfKIo/KqVCcVFRQnHjQn2CqBQXii5ErRR1ISoSBT8LpZ57Z6bvE7uyeZe+mfs5nTMzb3LvGyKWSdPz0kfTtBSi4RGW9lKEZF0RclF/ZGTp1nvfIyPbXon9jIrMWkYNfVGRNfykRicqsniOysX6kNkrVoUGLjvUFnJNlHmSPoaGKhdoZqISck6M2UPTQgOn3EyvPTGDh0c5T3eLQZ/1+cidB37XbTYyoSn5AaKnn4wHu/3KA7eViBTS59ThPfcrlM6J8cn7j7BmrV1DNKi8tbCmwu4sYgKiy9AUsrlm9h/aCpSC90CFDoYpPLv5GDLONdj/hD2lZA4xAdl5aEBaPWT1QfWL9WMf0XN4sHrb9UcCenlHkTJ5uPywLRqCTUt0Q2eQjMXIBFLUKQ0wXaIKrQfPakxmnvHW9PxLacT6AzBD1oRFjSDGoKSTzAqSU1QHHH6xMaU0HrqI56o/EtC5IN1ijx/mI9vOE2HQ1E0bS4LkFJUqwuNJ5l1vnprylHz77TNRpxfQmv14JWtvFr8nuo95B2CGbNvNoQsGtHx0VJC75s5xSd6fHom7Fpco9gRbXIXxkj10YoCln9X0eeqo7IXyG89sPD4YkSFz93fOR0xA3AuS9zTTx5Ynd7N4GQVSVWCz51da3KFY/iFIv8I+h0eKhYEZModoCDEBoVdInAF1bMSjGp5AvAhCh4im4QnI+hKGd/SCFiLkwbD+swMDNxjuErWjk1WzTYzklzupSqNGeOf4pcaLOLZ4askWENmLSmi6EeUhAjC9Mhw/eoaYgNAL0vqBHmQBmQOLt7GdLKKdEuq6xNIL3fqFIfj7ITaChrfRBxt7Z5xlv+AREHpBJqtUoiTP0SdLofMBOUEbzAHxRf+AjGcXd9HwAQnA9MpSeF1LDAi9IO2+RDZ8QGS1fELXWS5RKyP9sg4ZoTpZ714nIgGYJsNcpxQRK3MjAmTDyGE0jpimSfJ3D692cBjKFeM2vX16mFpd7F4JHt7kAEyTbXvx6Dj/g4BYYWR6NrYrlRXTNHaONU5XEMkkSg21R9lurCjvGEyTOcpNAhLdICXnjF0rtqbAr5InOttlo1YSI9fZKYkY/RjskII60mmQ6AapEzGuFSgWdOaABGNqzuOVmMYZ3QKbJW24EvHLhhiQGAppSgz2F8WCXq+RWDrng4gaaDKoryy6eGpOA+GfGcSAxFBIvQb+LXM+MfK/nwVmHNMHPwuQZjmfRCB8rVDFIgIyuVZ4abOujOpaIcWirjwyuLpWSLGoP1k8x2kMf1FIWa4VUizqT6euFVIs6k+mrhVSLOpPpq4VUizqTvYXZ+YXUMUS68kAAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$\\frac{d}{d t} f{\\left (t \\right )} = \\alpha f{\\left (t \\right )} + \\beta f^{2}{\\left (t \\right )}$$"
+ ],
+ "text/plain": [
+ "d 2 \n",
+ "──(f(t)) = α⋅f(t) + β⋅f (t)\n",
+ "dt "
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eq3 = Eq(diff(f(t), t), alpha * f(t) + beta * f(t)**2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/latex": [
+ "$$f{\\left (t \\right )} = - \\frac{\\alpha e^{\\alpha \\left(C_{1} + t\\right)}}{\\beta \\left(e^{\\alpha \\left(C_{1} + t\\right)} - 1\\right)}$$"
+ ],
+ "text/plain": [
+ " α⋅(C₁ + t) \n",
+ " -α⋅ℯ \n",
+ "f(t) = ───────────────────\n",
+ " ⎛ α⋅(C₁ + t) ⎞\n",
+ " β⋅⎝ℯ - 1⎠"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution_eq = dsolve(eq3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Solution goes here"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Exercise:** Use [WolframAlpha](https://www.wolframalpha.com/) to solve the quadratic growth model, using either or both forms of parameterization:\n",
+ "\n",
+ " df(t) / dt = alpha f(t) + beta f(t)^2\n",
+ "\n",
+ "or\n",
+ "\n",
+ " df(t) / dt = r f(t) (1 - f(t)/K)\n",
+ "\n",
+ "Find the general solution and also the particular solution where `f(0) = p_0`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "f(t) = (α p_0 e^(α t))/(α - β p_0 (e^(α t) - 1))"
+ ]
+ }
+ ],
+ "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.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/code/queue.ipynb b/code/queue.ipynb
index 443052b0..6618029e 100644
--- a/code/queue.ipynb
+++ b/code/queue.ipynb
@@ -15,10 +15,8 @@
},
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 8,
+ "metadata": {},
"outputs": [],
"source": [
"# Configure Jupyter so figures appear in the notebook\n",
@@ -66,11 +64,13 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
- "# Solution goes here"
+ "def make_system(lam, mu):\n",
+ " system = System(lam, mu, duration=600)\n",
+ " return system"
]
},
{
@@ -82,11 +82,116 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "function"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(make_system)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "TypeError",
+ "evalue": "make_system() missing 2 required positional arguments: 'lam' and 'mu'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmake_system\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mTypeError\u001b[0m: make_system() missing 2 required positional arguments: 'lam' and 'mu'"
+ ]
+ }
+ ],
+ "source": [
+ "make_system()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
- "# Solution goes here"
+ "def make_system(lam, mu):\n",
+ " system = System(lam=lam, mu=mu, duration=600)\n",
+ " return system"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " lam \n",
+ " 0.125 \n",
+ " \n",
+ " \n",
+ " mu \n",
+ " 0.200 \n",
+ " \n",
+ " \n",
+ " duration \n",
+ " 600.000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "lam 0.125\n",
+ "mu 0.200\n",
+ "duration 600.000\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "make_system(1/8,1/5)"
]
},
{
@@ -102,13 +207,140 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " lam \n",
+ " 0.125 \n",
+ " \n",
+ " \n",
+ " mu \n",
+ " 0.200 \n",
+ " \n",
+ " \n",
+ " duration \n",
+ " 600.000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "lam 0.125\n",
+ "mu 0.200\n",
+ "duration 600.000\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 70,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system = System(lam=1/8, mu=1/5, duration=600)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "Series([], dtype: float64)"
+ ]
+ },
+ "execution_count": 71,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "results = TimeSeries()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {},
"outputs": [],
"source": [
- "# Solution goes here"
+ "def update_func(x, t, system):\n",
+ " if x == 0:\n",
+ " if flip(system.lam):\n",
+ " x += 1\n",
+ " return x\n",
+ " else:\n",
+ " return x\n",
+ "\n",
+ " else:\n",
+ " if flip(system.mu):\n",
+ " if flip (system.lam):\n",
+ " x += 1\n",
+ " return x\n",
+ " else:\n",
+ " return x\n",
+ " else:\n",
+ " return x\n",
+ " \n",
+ " return x\n",
+ " \n",
+ " "
]
},
{
@@ -120,11 +352,70 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 86,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.125"
+ ]
+ },
+ "execution_count": 86,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "system.lam\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.2"
+ ]
+ },
+ "execution_count": 87,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "system.mu\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x is not 0\n",
+ "flip(system.mu) is 0\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "1"
+ ]
+ },
+ "execution_count": 88,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "update_function(1, 0, system)\n"
]
},
{
@@ -136,7 +427,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
@@ -166,11 +457,355 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 100,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 5 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 6 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 7 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 8 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 9 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 10 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 11 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 12 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 13 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 14 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 15 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 16 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 17 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 18 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 19 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 20 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 21 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 22 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 23 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 24 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 25 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 26 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 27 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 28 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 29 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 571 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 572 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 573 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 574 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 575 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 576 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 577 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 578 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 579 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 580 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 581 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 582 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 583 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 584 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 585 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 586 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 587 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 588 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 589 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 590 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 591 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 592 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 593 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 594 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 595 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 596 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 597 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 598 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 599 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 600 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
601 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ "0 0\n",
+ "1 0\n",
+ "2 0\n",
+ "3 0\n",
+ "4 0\n",
+ "5 1\n",
+ "6 1\n",
+ "7 1\n",
+ "8 1\n",
+ "9 1\n",
+ "10 1\n",
+ "11 1\n",
+ "12 1\n",
+ "13 1\n",
+ "14 1\n",
+ "15 1\n",
+ "16 1\n",
+ "17 1\n",
+ "18 1\n",
+ "19 1\n",
+ "20 1\n",
+ "21 1\n",
+ "22 1\n",
+ "23 1\n",
+ "24 1\n",
+ "25 1\n",
+ "26 1\n",
+ "27 1\n",
+ "28 1\n",
+ "29 1\n",
+ " ..\n",
+ "571 8\n",
+ "572 8\n",
+ "573 8\n",
+ "574 8\n",
+ "575 8\n",
+ "576 8\n",
+ "577 8\n",
+ "578 8\n",
+ "579 8\n",
+ "580 8\n",
+ "581 8\n",
+ "582 8\n",
+ "583 8\n",
+ "584 8\n",
+ "585 8\n",
+ "586 8\n",
+ "587 8\n",
+ "588 8\n",
+ "589 8\n",
+ "590 8\n",
+ "591 8\n",
+ "592 8\n",
+ "593 8\n",
+ "594 8\n",
+ "595 8\n",
+ "596 8\n",
+ "597 8\n",
+ "598 8\n",
+ "599 8\n",
+ "600 8\n",
+ "Length: 601, dtype: int64"
+ ]
+ },
+ "execution_count": 100,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "results = run_simulation(system, update_func)"
]
},
{
@@ -186,10 +821,8 @@
},
{
"cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 101,
+ "metadata": {},
"outputs": [],
"source": [
"def compute_metrics(results, system):\n",
@@ -205,6 +838,359 @@
" return L, W"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 102,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 5 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 6 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 7 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 8 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 9 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 10 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 11 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 12 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 13 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 14 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 15 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 16 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 17 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 18 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 19 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 20 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 21 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 22 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 23 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 24 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 25 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 26 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 27 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 28 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 29 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 571 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 572 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 573 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 574 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 575 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 576 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 577 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 578 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 579 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 580 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 581 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 582 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 583 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 584 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 585 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 586 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 587 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 588 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 589 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 590 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 591 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 592 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 593 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 594 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 595 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 596 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 597 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 598 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 599 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " 600 \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
601 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ "0 0\n",
+ "1 0\n",
+ "2 0\n",
+ "3 0\n",
+ "4 0\n",
+ "5 1\n",
+ "6 1\n",
+ "7 1\n",
+ "8 1\n",
+ "9 1\n",
+ "10 1\n",
+ "11 1\n",
+ "12 1\n",
+ "13 1\n",
+ "14 1\n",
+ "15 1\n",
+ "16 1\n",
+ "17 1\n",
+ "18 1\n",
+ "19 1\n",
+ "20 1\n",
+ "21 1\n",
+ "22 1\n",
+ "23 1\n",
+ "24 1\n",
+ "25 1\n",
+ "26 1\n",
+ "27 1\n",
+ "28 1\n",
+ "29 1\n",
+ " ..\n",
+ "571 8\n",
+ "572 8\n",
+ "573 8\n",
+ "574 8\n",
+ "575 8\n",
+ "576 8\n",
+ "577 8\n",
+ "578 8\n",
+ "579 8\n",
+ "580 8\n",
+ "581 8\n",
+ "582 8\n",
+ "583 8\n",
+ "584 8\n",
+ "585 8\n",
+ "586 8\n",
+ "587 8\n",
+ "588 8\n",
+ "589 8\n",
+ "590 8\n",
+ "591 8\n",
+ "592 8\n",
+ "593 8\n",
+ "594 8\n",
+ "595 8\n",
+ "596 8\n",
+ "597 8\n",
+ "598 8\n",
+ "599 8\n",
+ "600 8\n",
+ "Length: 601, dtype: int64"
+ ]
+ },
+ "execution_count": 102,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "results"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -214,11 +1200,22 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 103,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(4.342762063227953, 34.742096505823625)"
+ ]
+ },
+ "execution_count": 103,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "compute_metrics(results, system)"
]
},
{
@@ -234,11 +1231,23 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 109,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0.1 , 0.15, 0.2 , 0.25, 0.3 , 0.35, 0.4 , 0.45, 0.5 , 0.55, 0.6 ,\n",
+ " 0.65, 0.7 , 0.75, 0.8 ])"
+ ]
+ },
+ "execution_count": 109,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "lam_array = linspace(0.1,0.8,15)"
]
},
{
@@ -254,11 +1263,21 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 113,
"metadata": {},
"outputs": [],
"source": [
- "# Solution goes here"
+ "def sweep_lam(lam_array, mu, update_func):\n",
+ " \n",
+ " sweep = SweepSeries()\n",
+ " \n",
+ " for lam in lam_array:\n",
+ " results = run_simulation (system, update_func)\n",
+ " L = results.mean()\n",
+ " W = L / system.lam\n",
+ " sweep[lam] = W\n",
+ " \n",
+ " return sweep"
]
},
{
@@ -270,20 +1289,161 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"metadata": {},
"outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 118,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " values \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0.10 \n",
+ " 38.762063 \n",
+ " \n",
+ " \n",
+ " 0.15 \n",
+ " 81.304493 \n",
+ " \n",
+ " \n",
+ " 0.20 \n",
+ " 37.324459 \n",
+ " \n",
+ " \n",
+ " 0.25 \n",
+ " 57.770383 \n",
+ " \n",
+ " \n",
+ " 0.30 \n",
+ " 73.024958 \n",
+ " \n",
+ " \n",
+ " 0.35 \n",
+ " 61.124792 \n",
+ " \n",
+ " \n",
+ " 0.40 \n",
+ " 65.091514 \n",
+ " \n",
+ " \n",
+ " 0.45 \n",
+ " 65.011647 \n",
+ " \n",
+ " \n",
+ " 0.50 \n",
+ " 56.838602 \n",
+ " \n",
+ " \n",
+ " 0.55 \n",
+ " 59.713810 \n",
+ " \n",
+ " \n",
+ " 0.60 \n",
+ " 73.903494 \n",
+ " \n",
+ " \n",
+ " 0.65 \n",
+ " 69.058236 \n",
+ " \n",
+ " \n",
+ " 0.70 \n",
+ " 87.094842 \n",
+ " \n",
+ " \n",
+ " 0.75 \n",
+ " 50.968386 \n",
+ " \n",
+ " \n",
+ " 0.80 \n",
+ " 76.752080 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "0.10 38.762063\n",
+ "0.15 81.304493\n",
+ "0.20 37.324459\n",
+ "0.25 57.770383\n",
+ "0.30 73.024958\n",
+ "0.35 61.124792\n",
+ "0.40 65.091514\n",
+ "0.45 65.011647\n",
+ "0.50 56.838602\n",
+ "0.55 59.713810\n",
+ "0.60 73.903494\n",
+ "0.65 69.058236\n",
+ "0.70 87.094842\n",
+ "0.75 50.968386\n",
+ "0.80 76.752080\n",
+ "dtype: float64"
+ ]
+ },
+ "execution_count": 118,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "sweep = sweep_lam(lam_array, 1/5, update_func)"
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 117,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 117,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "plot(sweep)"
]
},
{
@@ -295,11 +1455,22 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 119,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "63.58291735995564"
+ ]
+ },
+ "execution_count": 119,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# W_avg = sweep.mean()"
+ "W_avg = sweep.mean()"
]
},
{
@@ -319,7 +1490,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
@@ -342,11 +1513,60 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 122,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/lindavanasupa/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:7: RuntimeWarning: divide by zero encountered in true_divide\n",
+ " import sys\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "# Solution goes here"
+ "plot_W(lam_array, 1/5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 123,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plot(sweep)"
]
},
{
@@ -559,7 +1779,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.4"
+ "version": "3.6.5"
}
},
"nbformat": 4,