From ec56858fadf4c6fb0a09d1a21b20170d031e3ec2 Mon Sep 17 00:00:00 2001 From: David Freeman <31573859+davidthefree@users.noreply.github.com> Date: Wed, 6 Sep 2017 19:13:31 -0400 Subject: [PATCH 01/24] Adding chap01mine --- code/chap01mine.ipynb | 2201 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2201 insertions(+) create mode 100644 code/chap01mine.ipynb diff --git a/code/chap01mine.ipynb b/code/chap01mine.ipynb new file mode 100644 index 00000000..02f77320 --- /dev/null +++ b/code/chap01mine.ipynb @@ -0,0 +1,2201 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 1: Modeling\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jupyter\n", + "\n", + "Welcome to Modeling and Simulation, welcome to Python, and welcome to Jupyter.\n", + "\n", + "This is a Jupyter notebook, which is a development environment where you can write and run Python code. Each notebook is divided into cells. Each cell contains either text (like this cell) or Python code (like the cell below this one).\n", + "\n", + "### Selecting and running cells\n", + "\n", + "To select a cell, click in the fart margin next to the cell. You should see a blue frame surrounding the selected cell.\n", + "\n", + "To edit a code cell, click inside the cell. You should see a green frame around the selected cell, and you should see a cursor inside the cell.\n", + "\n", + "To edit a text cell, double-click inside the cell. Again, you should see a green frame around the selected cell, and you should see a cursor inside the cell.\n", + "\n", + "To run a cell, hold down SHIFT and press ENTER. If you run a text cell, it will typeset the text and display the result.\n", + "\n", + "If you run a code cell, it runs the Python code in the cell and displays the result, if any.\n", + "\n", + "To try it out, edit this cell, change some of the text, and then press SHIFT-ENTER to run it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding and removing cells\n", + "\n", + "You can add and remove cells from a notebook using the buttons in the toolbar and the items in the menu, both of which you should see at the top of this notebook.\n", + "\n", + "You might want to try the following exercises:\n", + "\n", + "1. From the Insert menu select \"Insert cell below\" to add a cell below this one. By default, you get a code cell, and you can see in the pulldown menu that says \"Code\".\n", + "\n", + "2. In the new cell, add a print statement like `print('Hello')`, and run it.\n", + "\n", + "3. Add another cell, select the new cell, and then click on the pulldown menu that says \"Code\" and select \"Markdown\". This makes the new cell a text cell.\n", + "\n", + "4. In the new cell, type some text, and then run it.\n", + "\n", + "5. Use the arrow buttons in the toolbar to move cells up and down.\n", + "\n", + "6. Use the cut, copy, and paste buttons to delete, add, and move cells.\n", + "\n", + "7. As you make changes, Jupyter saves your notebook automatically, but if you want to make sure, you can press the save button, which looks like a floppy disk from the 1990s.\n", + "\n", + "8. Finally, when you are done with a notebook, selection \"Close and Halt\" from the File menu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "'Hello'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "'Hello'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "'Hello'" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'hello'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using the notebooks\n", + "\n", + "The notebooks for each chapter contains the code from the chapter along with addition examples, explanatory text, and exercises. I recommend you read the chapter first to understand the concepts and vocabulary, then run the notebook to review what you learned and see it in action, and then attempt the exercises.\n", + "\n", + "The notebooks contain some explanatory text, but it is probably not enough to make sense if you have not read the book. If you are working through a notebook and you get stuck, you might want to re-read (or read!) the corresponding section of the book.\n", + "\n", + "If you try to work through the notebooks without reading the book, you're gonna have a bad time. If you have previous programming experience, you might get through the first few notebooks, but sooner or later, you will get to the end of your leash, and you won't like it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importing modsim\n", + "\n", + "The following cell imports `modsim`, which is a collection of functions we will use throughout the book. Whenever you start the notebook, you will have to run the following cell. It does two things:\n", + "\n", + "1. It uses a Jupyter \"magic command\" to specify whether figures should appear in the notebook, or pop up in a new window.\n", + "\n", + "2. It imports everything defined in `modsim`.\n", + "\n", + "Select the following cell and press SHIFT-ENTER to run it." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "If this cell runs successfully, it produces no output other than this message.\n" + ] + } + ], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "# To switch from one to another, you have to select Kernel->Restart\n", + "\n", + "%matplotlib qt5\n", + "\n", + "from modsim import *\n", + "\n", + "print('If this cell runs successfully, it produces no output other than this message.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The penny myth\n", + "\n", + "The following cells contain code from the beginning of Chapter 1.\n", + "\n", + "`modsim` defines `UNITS`, which contains variables representing pretty much every unit you've ever heard of. The following to lines create new variables named `meter` and `second`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "meter = UNITS.meter\n", + "second = UNITS.second\n", + "newton = UNITS.newton" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To find out what units are defined, type `UNITS.` in the next cell and then press TAB. You should see a pop-up menu with a list of units." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "bushel" + ], + "text/latex": [ + "$bushel$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "UNITS.bushel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a variable named `a` and display its value:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "9.8 meter/second2" + ], + "text/latex": [ + "$9.8 \\frac{meter}{second^{2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = 9.8 * meter / second**2\n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Create `t` and display its value:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "4 second" + ], + "text/latex": [ + "$4 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = 4 * second\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "If you create a variable and don't display the value, you don't get any output:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "156.8 meter" + ], + "text/latex": [ + "$156.8 meter$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h = a * t**2\n", + "h" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Add a second line to the previous cell to display the value of `h`.\n", + "\n", + "Now let's solve the falling penny problem. The following lines set `h` to the height of the Empire State Building and compute the time it would take a penny to fall, assuming constant acceleration." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "8.817885349720552 second" + ], + "text/latex": [ + "$8.817885349720552 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h = 381 * meter\n", + "t = sqrt(2 * h / a)\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Given `t`, we can compute the velocity of the penny when it lands." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "86.41527642726142 meter/second" + ], + "text/latex": [ + "$86.41527642726142 \\frac{meter}{second}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = a * t\n", + "v" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "We can convert from one set of units to another like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mile = UNITS.mile\n", + "hour= UNITS.hour" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "193.30546802805438 mile/hour" + ], + "text/latex": [ + "$193.30546802805438 \\frac{mile}{hour}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.to(mile/hour)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** In reality, air resistance prevents the penny from reaching this velocity. At about 20 meters per second, the force of air resistance equals the force of gravity and the penny stops accelerating.\n", + "\n", + "As a simplification, let's assume that the acceleration of the penny is `a` until the penny reaches 20 meters per second, and then 0 afterwards. What is the total time for the penny to fall 381 meters?" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "20.070408163265306 second" + ], + "text/latex": [ + "$20.070408163265306 second$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution goes here\n", + "v_perf = 20 * meter / second\n", + "a = 9.8 * meter / second**2\n", + "height_one = v_perf**2 / (2 * a)\n", + "time_one = sqrt(2 * height_one / a)\n", + "height_two = 381 * meter - height_one\n", + "time_two = time_one + height_two / v_perf\n", + "time_two" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modeling a bikeshare system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll start with a `System` object that represents the number of bikes at each station." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2, babson=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you display the value of a `System` object, it lists the system variables and their values (not necessarily in the order you defined them):" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin-1
wellesley13
\n", + "
" + ], + "text/plain": [ + "olin -1\n", + "wellesley 13\n", + "dtype: int64" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can access the system variables using dot notation." + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-1" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'System' object has no attribute 'wellsley'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mbikeshare\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwellsley\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 3079\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3080\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3081\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3082\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3083\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'System' object has no attribute 'wellsley'" + ] + } + ], + "source": [ + "bikeshare.wellsley" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** What happens if you spell the name of a system variable wrong? Edit the previous cell, change the spelling of `wellesley`, and run the cell again.\n", + "\n", + "The error message uses the word \"attribute\", which is another name for what we are calling a system variable. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add a third attribute called `babson` with initial value 0, and print the state of `bikeshare` again." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting\n", + "\n", + "`newfig` creates a new figure, which should appear either in the notebook or in a new window, depending on which magic command you ran in the first code cell.\n", + "\n", + "`plot` adds a data point to the figure; in this example, you should see a red square and a blue circle representing the number of bikes at each station." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "newfig()\n", + "plot(bikeshare.olin, 'rs-')\n", + "plot(bikeshare.wellesley, 'bo-')\n", + "plot(bikeshare.babson, 'go-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use the operators `+=` and `-=` to increase and decrease the system variables. The following lines move a bike from Olin to Wellesley." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
babson0
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "babson 0\n", + "dtype: int64" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare.olin -= 1\n", + "bikeshare.wellesley += 1\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the following lines plot the updated state of the system. You should see two new data points with lines connecting them to the old data points." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "plot(bikeshare.olin, 'rs-')\n", + "plot(bikeshare.wellesley, 'bo-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** In the cell below, write a few lines of code to move a bike from Wellesley to Olin and plot the updated state." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "bikeshare.wellesley -= 1\n", + "bikeshare.olin += 1\n", + "plot(bikeshare.olin, 'ro-' )\n", + "plot(bikeshare.wellesley, 'bo-' )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Functions\n", + "\n", + "Now we can take the code we've written so far and encapsulate it in functions." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def bike_to_wellesley():\n", + " bikeshare.olin -= 1\n", + " bikeshare.wellesley += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you define a function, it doesn't run the statements inside the function, yet." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_state():\n", + " plot(bikeshare.olin, 'rs-', label='Olin')\n", + " plot(bikeshare.wellesley, 'bo-', label='Wellesley')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now when we run the functions, it runs the statements inside." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
babson0
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "babson 0\n", + "dtype: int64" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_wellesley()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should see two more data points that represent the current state of the system. If the figure is embedded in the notebook, you might have to scroll up to see the change.\n", + "\n", + "One common error is to omit the parentheses, which has the effect of looking up the function, but not running it." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_wellesley" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The output indicates that `bike_to_wellesley` is a function defined in a \"namespace\" called `__main__`, but you don't have to understand what that means." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Define a function called `bike_to_olin` that moves a bike from Wellesley to Olin. Run the new function and print or plot the results to confirm that it works." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "b = 1\n", + "def bike_to_olin (b):\n", + " bikeshare.wellesley -= b\n", + " bikeshare.olin += b\n", + "bike_to_olin(b)\n", + "plot(bikeshare.wellesley, 'ro-')\n", + "plot(bikeshare.olin, 'bo-')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we go on, let's start with a new state object and a new plot." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since we have two similar functions, we can create a new function, `move_bike` that takes a parameter `n`, which indicates how many bikes are moving, and in which direction." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(n):\n", + " bikeshare.olin -= n\n", + " bikeshare.wellesley += n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `move_bike` to write simpler versions of the other functions." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def bike_to_wellesley():\n", + " move_bike(1)\n", + " \n", + "def bike_to_olin():\n", + " move_bike(-1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we define these functions, we replace the old definitions with the new ones.\n", + "\n", + "Now we can test them and update the figure." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_wellesley()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, each time you run `plot_state` you should see changes in the figure." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bike_to_olin()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this point, `move_bike` is complicated enough that we should add some documentation. The text in triple-quotation marks is in English, not Python. It doesn't do anything when the program runs, but it helps people understand what this function does and how to use it." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(n):\n", + " \"\"\"Move bikes.\n", + " \n", + " n: number of bikes: positive moves from Olin to Wellesley;\n", + " negative moves from Wellesley to Olin\n", + " \"\"\"\n", + " bikeshare.olin -= n\n", + " bikeshare.wellesley += n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whenever you make a figure, you should put labels on the axes to explain what they mean and what units they are measured in. Here's how:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, you might have to scroll up to see the effect.\n", + "\n", + "And you can save figures as files; the suffix of the filename indicates the format you want. This example saves the current figure in a PDF file." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap01_fig01.pdf\n" + ] + } + ], + "source": [ + "savefig('chap01_fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The following function definitions start with print statements so they display messages when they run. Run each of these functions (with appropriate arguments) and confirm that they do what you expect.\n", + "\n", + "Adding print statements like this to functions is a useful debugging technique. Keep it in mind!" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike_debug(n):\n", + " print('Running move_bike_debug with argument', n)\n", + " bikeshare.olin -= n\n", + " bikeshare.wellesley += n\n", + " \n", + "def bike_to_wellesley_debug():\n", + " print('Running bike_to_wellesley_debug')\n", + " move_bike_debug(1)\n", + " \n", + "def bike_to_olin_debug():\n", + " print('Running bike_to_olin_debug')\n", + " move_bike_debug(-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running move_bike_debug with argument 1\n" + ] + } + ], + "source": [ + "# Solution goes here\n", + "move_bike_debug(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running bike_to_wellesley_debug\n", + "Running move_bike_debug with argument 1\n" + ] + } + ], + "source": [ + "# Solution goes here\n", + "bike_to_wellesley_debug()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running bike_to_olin_debug\n", + "Running move_bike_debug with argument -1\n" + ] + } + ], + "source": [ + "# Solution goes here\n", + "bike_to_olin_debug()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conditionals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The function `flip` takes a probability and returns either `True` or `False`, which are special values defined by Python.\n", + "\n", + "In the following example, the probability is 0.7 or 70%. If you run this cell several times, you should get `True` about 70% of the time and `False` about 30%." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "flip(0.8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Modify the argument in the previous cell and see what effect it has.\n", + "\n", + "In the following example, we use `flip` as part of an if statement. If the result from `flip` is `True`, we print `heads`; otherwise we do nothing." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "heads\n" + ] + } + ], + "source": [ + "if flip(0.7):\n", + " print('heads')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With an else clause, we can print heads or tails depending on whether `flip` returns `True` or `False`." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "heads\n" + ] + } + ], + "source": [ + "if flip(0.7):\n", + " print('heads')\n", + "else:\n", + " print('tails')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's get back to the bikeshare system. Again let's start with a new `System` object and a new plot." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose that in any given minute, there is a 70% chance that a student picks up a bike at Olin and rides to Wellesley. We can simulate that like this." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Moving a bike to Wellesley\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if flip(0.7):\n", + " bike_to_wellesley()\n", + " print('Moving a bike to Wellesley')\n", + "\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And maybe at the same time, there is also a 60% chance that a student at Wellesley rides to Olin." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Moving a bike to Olin\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if flip(0.6):\n", + " bike_to_olin()\n", + " print('Moving a bike to Olin')\n", + "\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can wrap that code in a function called `step` that simulates one time step. In any given minute, a student might ride from Olin to Wellesley, from Wellesley to Olin, or both, or neither, depending on the results of `flip`." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step():\n", + " if flip(0.7):\n", + " bike_to_wellesley()\n", + " print('Moving a bike to Wellesley')\n", + " \n", + " if flip(0.6):\n", + " bike_to_olin()\n", + " print('Moving a bike to Olin')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you run `step` a few times, it should update the current figure. In each time step, the number of bikes at each location might go up, down, or stay the same." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Moving a bike to Wellesley\n", + "Moving a bike to Olin\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "step()\n", + "plot_state()\n", + "bikeshare" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function labels the axes and adds a legend to the figure." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def decorate(): \n", + " legend(loc='best')\n", + " label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, when you define a function, it has no effect until you run it." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\ProgramData\\Miniconda3\\lib\\site-packages\\matplotlib\\legend.py:326: UserWarning: Unrecognized location \"random string\". Falling back on \"best\"; valid locations are\n", + "\tbest\n", + "\tupper right\n", + "\tupper left\n", + "\tlower left\n", + "\tlower right\n", + "\tright\n", + "\tcenter left\n", + "\tcenter right\n", + "\tlower center\n", + "\tupper center\n", + "\tcenter\n", + "\n", + " six.iterkeys(self.codes))))\n" + ] + } + ], + "source": [ + "decorate()\n", + "legend(loc='random string')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Change the argument of `legend` to `'random string'` and run `decorate` again. You should get an error message that lists the valid location where you can put the legend." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again let's start with a new `System` object and a new plot." + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can make `step` more general by adding parameters. Because these parameters have default values, they are optional." + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step(p1=0.5, p2=0.5):\n", + " print('p1 ->', p1)\n", + " print('p2 ->', p2)\n", + " if flip(p1):\n", + " bike_to_wellesley()\n", + " \n", + " if flip(p2):\n", + " bike_to_olin()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I added print statements, so each time we run `step` we can see the arguments.\n", + "\n", + "If you provide no arguments, you get the default values:" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "step()\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you provide one argument, it overrides the first parameter." + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.5\n" + ] + } + ], + "source": [ + "step(0.4)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you provide two arguments, they override both." + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(0.4, 0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can specify the names of the parameters you want to override." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(p1=0.4, p2=0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which means you can override the second parameter and use the default for the first." + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.5\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(p2=0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can combine both forms, but it is not very common:" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p1 -> 0.4\n", + "p2 -> 0.2\n" + ] + } + ], + "source": [ + "step(0.4, p2=0.2)\n", + "plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One reason it's not common is that it's error prone. The following example causes an error." + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "positional argument follows keyword argument (, line 4)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m step(p1=0.4, 0.2)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m positional argument follows keyword argument\n" + ] + } + ], + "source": [ + "# If you remove the # at the beginning of the next line and run it, you get\n", + "# SyntaxError: positional argument follows keyword argument\n", + "\n", + "step(p1=0.4, 0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the error message, you might infer that arguments like `step(0.4, 0.2)` are called \"positional\" and arguments like `step(p1=0.4, p2=0.2)` are called \"keyword arguments\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Write a version of `decorate` that takes an optional parameter named `loc` with default value `'best'`. It should pass the value of `loc` along as an argument to `legend.` Test your function with different values of `loc`. [You can see the list of legal values here](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.legend)." + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes he\n", + "def decorate(p1='best'): \n", + " legend(loc=p1)\n", + " label_axes(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "decorate(p1='upper left')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## For loop" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we go on, I'll redefine `step` without the print statements." + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def step(p1=0.5, p2=0.5):\n", + " if flip(p1):\n", + " bike_to_wellesley()\n", + " \n", + " if flip(p2):\n", + " bike_to_olin()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And let's start again with a new `System` object and a new figure." + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_state()\n", + "decorate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use a for loop to move 4 bikes from Olin to Wellesley." + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i in range(4):\n", + " bike_to_wellesley()\n", + " plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or we can simulate 4 random time steps." + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i in range(4):\n", + " step()\n", + " plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If each step corresponds to a minute, we can simulate the rest of the hour like this." + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i in range(52):\n", + " step(p1=0.4, p2=0.2)\n", + " plot_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Combine the examples from the previous two sections to write a function named `run_steps` that takes three parameters, named `num_steps`, `p1`, and `p2`. It should use a for loop to run `step` the number of times specified by `num_steps`, passing along the specified values of `p1` and `p2`. After each step, it should plot the updated state.\n", + "\n", + "Test your function by creating a new `System` object, creating a new figure, and running `run_steps`." + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def run_steps(num_steps='a', p1=.'b', p2=.'c'):\n", + " for i in range(num_steps):\n", + " step(p1, p2)\n", + " plot_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [], + "source": [ + "a= 2\n", + "b= 4\n", + "c= 8\n", + "run_steps()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 331b7b23400cd0e690e77dda978be5b953fcb61f Mon Sep 17 00:00:00 2001 From: David Freeman <31573859+davidthefree@users.noreply.github.com> Date: Wed, 13 Sep 2017 21:27:15 -0400 Subject: [PATCH 02/24] swish --- code/chap01_fig01.pdf | Bin 0 -> 15027 bytes code/chap02mine.ipynb | 9327 +++++++++++++++++++++++++++++++++++++++++ code/chap02soln.ipynb | 1692 +------- 3 files changed, 9397 insertions(+), 1622 deletions(-) create mode 100644 code/chap01_fig01.pdf create mode 100644 code/chap02mine.ipynb diff --git a/code/chap01_fig01.pdf b/code/chap01_fig01.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2f887228e99504adf8f5c82844f3ebb0217ed6d7 GIT binary patch literal 15027 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 UArM^*94Rf0g$N6)8K^`4ADKR``Tzg` literal 0 HcmV?d00001 diff --git a/code/chap02mine.ipynb b/code/chap02mine.ipynb new file mode 100644 index 00000000..e4d07a53 --- /dev/null +++ b/code/chap02mine.ipynb @@ -0,0 +1,9327 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modeling and Simulation in Python\n", + "\n", + "Chapter 2: Simulation\n", + "\n", + "Copyright 2017 Allen Downey\n", + "\n", + "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll start with the same code we saw last time: the magic command that tells Jupyter where to put the figures, and the import statement that gets the functions defined in the `modsim` module." + ] + }, + { + "cell_type": "code", + "execution_count": 320, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# If you want the figures to appear in the notebook, \n", + "# and you want to interact with them, use\n", + "# %matplotlib notebook\n", + "\n", + "# If you want the figures to appear in the notebook, \n", + "# and you don't want to interact with them, use\n", + "# %matplotlib inline\n", + "\n", + "# If you want the figures to appear in separate windows, use\n", + "# %matplotlib qt5\n", + "\n", + "%matplotlib notebook\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## More than one System object\n", + "\n", + "Here's the code from the previous chapter, with two changes:\n", + "\n", + "1. I've added DocStrings that explain what each function does, and what parameters it takes.\n", + "\n", + "2. I've added a parameter named `system` to the functions so they work with whatever `System` object we give them, instead of always using `bikeshare`. That will be useful soon when we have more than one `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 321, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run_steps(system, num_steps=1, p1=0.5, p2=0.5):\n", + " \"\"\"Simulate the given number of time steps.\n", + " \n", + " system: bikeshare System object\n", + " num_steps: number of time steps\n", + " p1: probability of an Olin->Wellesley customer arrival\n", + " p2: probability of a Wellesley->Olin customer arrival\n", + " \"\"\"\n", + " for i in range(num_steps):\n", + " step(system, p1, p2)\n", + " plot_system(system)\n", + " \n", + "def step(system, p1=0.5, p2=0.5):\n", + " \"\"\"Simulate one minute of time.\n", + " \n", + " system: bikeshare System object\n", + " p1: probability of an Olin->Wellesley customer arrival\n", + " p2: probability of a Wellesley->Olin customer arrival\n", + " \"\"\"\n", + " if flip(p1):\n", + " bike_to_wellesley(system)\n", + " \n", + " if flip(p2):\n", + " bike_to_olin(system)\n", + " \n", + "def bike_to_wellesley(system):\n", + " \"\"\"Move one bike from Olin to Wellesley.\n", + " \n", + " system: bikeshare System object\n", + " \"\"\"\n", + " move_bike(system, 1)\n", + " \n", + "def bike_to_olin(system):\n", + " \"\"\"Move one bike from Wellesley to Olin.\n", + " \n", + " system: bikeshare System object\n", + " \"\"\"\n", + " move_bike(system, -1)\n", + " \n", + "def move_bike(system, n):\n", + " \"\"\"Move a bike.\n", + " \n", + " system: bikeshare System object\n", + " n: +1 to move from Olin to Wellesley or\n", + " -1 to move from Wellesley to Olin\n", + " \"\"\"\n", + " system.olin -= n\n", + " system.wellesley += n\n", + " \n", + "def plot_system(system):\n", + " \"\"\"Plot the current system of the bikeshare system.\n", + " \n", + " system: bikeshare System object\n", + " \"\"\"\n", + " plot(system.olin, 'rs-', label='Olin')\n", + " plot(system.wellesley, 'bo-', label='Wellesley')\n", + " \n", + "def decorate_bikeshare():\n", + " \"\"\"Add a title and label the axes.\"\"\"\n", + " decorate(title='Olin-Wellesley Bikeshare',\n", + " xlabel='Time step (min)', \n", + " ylabel='Number of bikes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can create more than one `System` object:" + ] + }, + { + "cell_type": "code", + "execution_count": 322, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 322, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare1 = System(olin=10, wellesley=2)\n", + "bikeshare1" + ] + }, + { + "cell_type": "code", + "execution_count": 323, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin10
wellesley2
\n", + "
" + ], + "text/plain": [ + "olin 10\n", + "wellesley 2\n", + "dtype: int64" + ] + }, + "execution_count": 323, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare2 = System(olin=10, wellesley=2)\n", + "bikeshare2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And whenever we call a function, we indicate which `System` object to work with:" + ] + }, + { + "cell_type": "code", + "execution_count": 324, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bike_to_olin(bikeshare1)" + ] + }, + { + "cell_type": "code", + "execution_count": 325, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bike_to_wellesley(bikeshare2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And you can confirm that the different systems are getting updated independently:" + ] + }, + { + "cell_type": "code", + "execution_count": 326, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin11
wellesley1
\n", + "
" + ], + "text/plain": [ + "olin 11\n", + "wellesley 1\n", + "dtype: int64" + ] + }, + "execution_count": 326, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare1" + ] + }, + { + "cell_type": "code", + "execution_count": 327, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
olin9
wellesley3
\n", + "
" + ], + "text/plain": [ + "olin 9\n", + "wellesley 3\n", + "dtype: int64" + ] + }, + "execution_count": 327, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bikeshare2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Negative bikes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the code we have so far, the number of bikes at one of the locations can go negative, and the number of bikes at the other location can exceed the actual number of bikes in the system.\n", + "\n", + "If you run this simulation a few times, it happens quite often." + ] + }, + { + "cell_type": "code", + "execution_count": 328, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub data rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_data_rate_limit`.\n" + ] + } + ], + "source": [ + "bikeshare = System(olin=10, wellesley=2)\n", + "newfig()\n", + "plot_system(bikeshare)\n", + "decorate_bikeshare()\n", + "run_steps(bikeshare, 60, 0.4, 0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The variables `olin` and `wellesley` are created inside `move_bike`, so they are local. When the function ends, they go away.\n", + "\n", + "If you try to access a local variable from outside its function, you get an error:" + ] + }, + { + "cell_type": "code", + "execution_count": 331, + "metadata": {}, + "outputs": [], + "source": [ + "# If you remove the # from the last line in this cell and run it, you'll get\n", + "# NameError: name 'olin' is not defined\n", + "\n", + "#olin" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add print statements in `move_bike` so it prints a message each time a customer arrives and doesn't find a bike. Run the simulation again to confirm that it works as you expect. Then you might want to remove the print statements before you go on." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison operators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `if` statements in the previous section used the comparison operator `<`. The other comparison operators are listed in the book.\n", + "\n", + "It is easy to confuse the comparison operator `==` with the assignment operator `=`.\n", + "\n", + "Remember that `=` creates a variable or gives an existing variable a new value." + ] + }, + { + "cell_type": "code", + "execution_count": 332, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whereas `==` compared two values and returns `True` if they are equal." + ] + }, + { + "cell_type": "code", + "execution_count": 333, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 333, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x == 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use `==` in an `if` statement." + ] + }, + { + "cell_type": "code", + "execution_count": 334, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "yes, x is 5\n" + ] + } + ], + "source": [ + "if x == 5:\n", + " print('yes, x is 5')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if you use `=` in an `if` statement, you get an error." + ] + }, + { + "cell_type": "code", + "execution_count": 335, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nope\n" + ] + } + ], + "source": [ + "# If you remove the # from the if statement and run it, you'll get\n", + "# SyntaxError: invalid syntax\n", + "\n", + "if x < 5:\n", + " print('yup')\n", + "else:\n", + " print('nope')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add an `else` clause to the `if` statement above, and print an appropriate message.\n", + "\n", + "Replace the `==` operator with one or two of the other comparison operators, and confirm they do what you expect." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have a working simulation, we'll use it to evaluate alternative designs and see how good or bad they are. The metric we'll use is the number of customers who arrive and find no bikes available, which might indicate a design problem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we'll make a new `System` object that creates and initializes the system variables that will keep track of the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 336, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0, clock=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we need a version of `move_bike` that updates the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 337, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def move_bike(system, n):\n", + " olin_temp = system.olin - n\n", + " if olin_temp < 0:\n", + " system.olin_empty += 1\n", + " return\n", + " \n", + " wellesley_temp = system.wellesley + n\n", + " if wellesley_temp < 0:\n", + " system.wellesley_empty += 1\n", + " return\n", + " \n", + " system.olin = olin_temp\n", + " system.wellesley = wellesley_temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now when we run a simulation, it keeps track of unhappy customers." + ] + }, + { + "cell_type": "code", + "execution_count": 338, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub data rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_data_rate_limit`.\n" + ] + } + ], + "source": [ + "newfig()\n", + "plot_system(bikeshare)\n", + "decorate_bikeshare()\n", + "run_steps(bikeshare, 60, 0.4, 0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "60" + ] + }, + "execution_count": 344, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution goes here\n", + "bikeshare.clock\n", + "\n", + "#### WHY IS IT BIKESHARE.CLOCK AGAIN AND NOT SYSTEM.CLOCK?????" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the simulation, check the final value of `clock`." + ] + }, + { + "cell_type": "code", + "execution_count": 345, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60\n" + ] + } + ], + "source": [ + "print(bikeshare.clock)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Now suppose we'd like to know how long it takes to run out of bikes at either location. Modify `move_bike` so the first time a student arrives at Olin and doesn't find a bike, it records the value of `clock` in a system variable.\n", + "\n", + "Hint: create a system variable named `t_first_empty` and initialize it to `-1` to indicate that it has not been set yet.\n", + "\n", + "Test your code by running a simulation for 60 minutes and checking the metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 346, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "bikeshare = System(olin=10, wellesley=2, \n", + " olin_empty=0, wellesley_empty=0, clock=0, t_first_empty=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 347, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def move_bike(system, n):\n", + " olin_temp = system.olin - n\n", + " if olin_temp < 0:\n", + " system.olin_empty += 1\n", + " system.t_first_empty += 1\n", + " if system.t_first_empty == 0:\n", + " print('time first empty:', bikeshare.clock)\n", + " return\n", + " \n", + " wellesley_temp = system.wellesley + n\n", + " if wellesley_temp < 0:\n", + " system.wellesley_empty += 1\n", + " system.t_first_empty += 1\n", + " if system.t_first_empty == 0:\n", + " print('time first empty:', bikeshare.clock)\n", + " return\n", + " \n", + " \n", + " system.olin = olin_temp\n", + " system.wellesley = wellesley_temp\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 348, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "newfig()\n", + "for p1 in p1_array:\n", + " system = run_simulation(p1=p1)\n", + " plot(p1, system.olin_empty, 'rs', label='olin')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we should decorate the figure. This version of `decorate_bikeshare` takes `xlabel` as a parameter, for reasons you will see soon." + ] + }, + { + "cell_type": "code", + "execution_count": 377, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def decorate_bikeshare(xlabel):\n", + " decorate(title='Olin-Wellesley Bikeshare',\n", + " xlabel=xlabel, \n", + " ylabel='Number of unhappy customers')" + ] + }, + { + "cell_type": "code", + "execution_count": 378, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "decorate_bikeshare(xlabel='Arrival rate at Olin (p1 in customers/min)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Wrap this code in a function named `parameter_sweep` that takes an array called `p1_array` as a parameter. It should create a new figure, run a simulation for each value of `p1` in `p1_array`, and plot the results.\n", + "\n", + "Once you have the function working, modify it so it also plots the number of unhappy customers at Wellesley. Looking at the plot, can you estimate a range of values for `p1` that minimizes the total number of unhappy customers?" + ] + }, + { + "cell_type": "code", + "execution_count": 381, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def parameter_sweep(p1_array):\n", + " for p1 in p1_array:\n", + " bikeshare = run_simulation(p1)\n", + " plot(p1, bikeshare.olin_empty, 'rs', label='Olin')\n", + " plot(p1, bikeshare.wellesley_empty, 'bs', label='wellesley')\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 382, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Solution goes here\n", + "newfig()\n", + "p2_array = linspace(0, 1, 11)\n", + "parameter_sweep2(p2_array)\n", + "decorate_bikeshare(xlabel='Arrival rate at Olin (p1 in customers/min)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Hold `p1=0.4` and `p2=0.2`, and sweep a range of values for `num_steps`.\n", + "\n", + "Hint: You will need a version of `run_simulation` that takes `num_steps` as a parameter.\n", + "\n", + "Hint: Because `num_steps` is supposed to be an integer use `range` rather than `linrange`." + ] + }, + { + "cell_type": "code", + "execution_count": 385, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def run_simulation(p1=0.4, p2=0.2, olin=10, wellesley=2, olin_empty=0, wellesley_empty=0, num_steps=60):\n", + " bikeshare = System(olin=10, wellesley=2, olin_empty=0, wellesley_empty=0)\n", + " run_steps(bikeshare, 60, p1, p2, plot_flag=False)\n", + " return bikeshare" + ] + }, + { + "cell_type": "code", + "execution_count": 386, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def parameter_sweep3(num_steps_array):\n", + " for num_steps in num_steps_array:\n", + " poppy = run_simulation(p1=.4, p2=.2)\n", + " plot(num_steps, poppy.olin_empty, 'rs', label='Olin')\n", + " plot(num_steps, poppy.wellesley_empty, 'bs', label='wellesley')" + ] + }, + { + "cell_type": "code", + "execution_count": 387, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Solution\n", - "\n", - "newfig()\n", - "p1_array = linspace(0, 1, 101)\n", - "parameter_sweep(p1_array)\n", - "decorate_bikeshare(xlabel='Arrival rate at Olin (p1 in customers/min)')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "**Exercise:** Write a function called `parameter_sweep2` that runs simulations with `p1=0.2` and a range of values for `p2`.\n", - "\n", - "Note: If you run `parameter_sweep2` a few times without calling `newfig`, you can plot multiple runs on the same axes, which will give you a sense of how much random variation there is from one run to the next. " - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def parameter_sweep2(p2_array):\n", - " for p2 in p2_array:\n", - " system = run_simulation(p1=0.2, p2=p2)\n", - " plot(p2, system.olin_empty, 'rs', label='Olin')\n", - " plot(p2, system.wellesley_empty, 'bo', label='Wellesley')" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", - "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap10-fig01.pdf\n" + ] + } + ], + "source": [ + "newfig()\n", + "plot(xs, label='x')\n", + "plot(ys, label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Position (m)')\n", + "\n", + "savefig('chap10-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can plot the velocities the same way." + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "vxs = system.results.vx\n", + "vys = system.results.vy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The x velocity slows down due to drag. The y velocity drops quickly while drag and gravity are in the same direction, then more slowly after the ball starts to fall." + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap10-fig02.pdf\n" + ] + } + ], + "source": [ + "newfig()\n", + "plot(xs, ys, label='trajectory')\n", + "\n", + "decorate(xlabel='x position (m)',\n", + " ylabel='y position (m)')\n", + "\n", + "savefig('chap10-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also animate the flight of the ball. If there's an error in the simulation, we can sometimes spot it by looking at animations." + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "animate2d(system.results.x, system.results.y, 15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Run the simulation for a few different launch angles and visualize the results. Are they consistent with your expectations?" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition.set(angle = 20 * degree)\n", + "system_2 = make_system(condition)\n", + "slope_func(system_2.init, 0, system_2)\n", + "run_odeint(system_2, slope_func)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap10-fig03.pdf\n" + ] + } + ], + "source": [ + "newfig()\n", + "plot(sweep)\n", + "decorate(xlabel='Launch angle (degree)',\n", + " ylabel='Range (m)',\n", + " legend=False)\n", + "\n", + "savefig('chap10-fig03.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `max_bounded` to search for the peak efficiently." + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "45.0\n", + "34.3769410125\n", + "55.6230589875\n", + "21.246117975\n", + "41.8191039876\n", + "41.6971472537\n", + "41.6051027031\n", + "41.6031028639\n", + "41.6034368143\n", + "41.6027689135\n", + "Wall time: 3.23 s\n" + ] + } + ], + "source": [ + "%time res = max_bounded(range_func, [0, 90], condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an `OptimizeResult` object." + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "scipy.optimize.optimize.OptimizeResult" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(res)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the following variables." + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " fun: 109.69517452156008\n", + " message: 'Solution found.'\n", + " nfev: 9\n", + " status: 0\n", + " success: True\n", + " x: 41.603102863878036" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So the optimal angle is about 41 degrees, and the resulting range is 103 meters." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add a print statement to `range_func` that prints `angle`. Then run `max_bounded` again so you can see how many times it calls `range_func` and what the arguments are." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Turning off units\n", + "\n", + "Each time `range_func` runs, it calls `odeint`, which runs `slope_func` many times. And each time `slop_func` runs, it checks the units for all computations, which takes some time. We can speed up the whole process by removing the units from the computation (now that we are satisfied that they are correct).\n", + "\n", + "Because of the way we organized the code, all units are in the `Condition` object, so we can \"turn off units\" by defining a new `Condition` object with no units:" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(g = 9.8,\n", + " mass = 145e-3,\n", + " diameter = 73e-3,\n", + " rho = 1.2,\n", + " C_d = 0.3,\n", + " angle = 45,\n", + " velocity = 40,\n", + " duration = 7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now `range_func` and `max_bounded` are substantially faster." + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "45\n", + "Wall time: 55.1 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "array(102.72237841710975)" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time range_func(45, condition)" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "45.0\n", + "34.3769410125\n", + "55.6230589875\n", + "21.246117975\n", + "41.4051852323\n", + "41.2368620421\n", + "41.1390964616\n", + "41.1364127407\n", + "41.1367466842\n", + "41.1360787972\n", + "Wall time: 483 ms\n" + ] + } + ], + "source": [ + "%time res = max_bounded(range_func, [0, 90], condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Manny Ramirez problem\n", + "\n", + "Finally, let's solve the Manny Ramirez problem:\n", + "\n", + "*What is the minimum effort required to hit a home run in Fenway Park?*\n", + "\n", + "Fenway Park is a baseball stadium in Boston, Massachusetts. One of its most famous features is the \"Green Monster\", which is a wall in left field that is unusually close to home plate, only 310 feet along the left field line. To compensate for the short distance, the wall is unusually high, at 37 feet.\n", + "\n", + "Although the problem asks for a minimum, it is not an optimization problem. Rather, we want to solve for the initial velocity that just barely gets the ball to the top of the wall, given that it launches at the optimal angle.\n", + "\n", + "And we have to be careful about what we mean by \"optimal\". For this problem, we don't want the longest range, we want the maximum height at the point where it reaches the wall.\n", + "\n", + "If you are ready to solve the problem on your own, go ahead. Otherwise I will walk you through the process with an outline and some starter code.\n", + "\n", + "As a first step, write a function called `height_func` that takes a launch angle and a condition as parameters, simulates the flights of a baseball, and returns the height of the baseball when it reaches a point 94.5 meters (310 feet) from home plate." + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def height_func2(angle, condition):\n", + " condition.set(angle = angle)\n", + " system = make_system(condition)\n", + " run_odeint(system, slope_func)\n", + " \n", + " height_time = interp_inverse(system.results.y)\n", + " ### WHAT DOES THIS EVEN MEEEAN\n", + " t_wall = height_time(94.5)\n", + " \n", + " height = interpolate(system.results.y)\n", + " return height(t_wall)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test your function with a launch angle of 45 degrees:" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(-6803.6791082726895)" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "height_func2(45, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now use `max_bounded` to find the optimal angle. Is it higher or lower than the angle that maximizes range?" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Before running scipy.integrate.odeint, I tried\n", + " running the slope function you provided with the\n", + " initial conditions in system and t=0, and I got\n", + " the following error:\n" + ] + }, + { + "ename": "KeyError", + "evalue": "94.5", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2441\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2442\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2443\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5280)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5126)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7471)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7415)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 94.5", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Solution goes here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmax_bounded\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mheight_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m90\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcondition\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmax_bounded\u001b[1;34m(max_func, bounds, *args, **options)\u001b[0m\n\u001b[0;32m 229\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mmax_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 230\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 231\u001b[1;33m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmin_bounded\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmin_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 232\u001b[0m \u001b[1;31m# we have to negate the function value before returning res\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 233\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mres\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmin_bounded\u001b[1;34m(min_func, bounds, *args, **options)\u001b[0m\n\u001b[0;32m 194\u001b[0m the following error:\"\"\"\n\u001b[0;32m 195\u001b[0m \u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merror\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 196\u001b[1;33m \u001b[1;32mraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 197\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 198\u001b[0m \u001b[0munderride\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxatol\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1e-3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmin_bounded\u001b[1;34m(min_func, bounds, *args, **options)\u001b[0m\n\u001b[0;32m 187\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 188\u001b[0m \u001b[0mmidpoint\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbounds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 189\u001b[1;33m \u001b[0mmin_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmidpoint\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 190\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 191\u001b[0m msg = \"\"\"Before running scipy.integrate.odeint, I tried\n", + "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmin_func\u001b[1;34m(*args)\u001b[0m\n\u001b[0;32m 227\u001b[0m \"\"\"\n\u001b[0;32m 228\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmin_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 229\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mmax_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 230\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 231\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmin_bounded\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmin_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m\u001b[0m in \u001b[0;36mheight_func\u001b[1;34m(angle, condition)\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0minterpolate_range\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msystem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mheight\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msystem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m94.5\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 8\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mheight\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\series.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 599\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcom\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_apply_if_callable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 600\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 601\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_value\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 602\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 603\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mis_scalar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\numeric.py\u001b[0m in \u001b[0;36mget_value\u001b[1;34m(self, series, key)\u001b[0m\n\u001b[0;32m 317\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 318\u001b[0m \u001b[0mk\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_values_from_object\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 319\u001b[1;33m \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 320\u001b[0m \u001b[0mnew_values\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_values_from_object\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mseries\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 321\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\numeric.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 376\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 377\u001b[0m return super(Float64Index, self).get_loc(key, method=method,\n\u001b[1;32m--> 378\u001b[1;33m tolerance=tolerance)\n\u001b[0m\u001b[0;32m 379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 380\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mcache_readonly\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2442\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2443\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2444\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2445\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2446\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5280)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5126)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7471)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7415)\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 94.5" + ] + } + ], + "source": [ + "# Solution goes here\n", + "res = max_bounded(height_func, [0,90], condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following lines compute the height of the ball at the wall, given that it's launched at the optimal angle." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "angle = res.x\n", + "height = height_func(angle, condition)\n", + "height" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to find the height of the ball at the wall, for a given velocity, given that it's launched at the optimal angle.\n", + "\n", + "Write a function called `best_height` that takes velocity and a `Condition` object as parameters. It should use `max_bounded` to find the optimal launch angle, then compute and the highest possible height of the ball at the wall, for the given velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use this code to test `best_height`" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "best_height(40, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we want to use `fsolve` to find the initial velocity that makes the height of the ball exactly 11 meters when it reaches the wall.\n", + "\n", + "To use `fsolve`, we need an error function that returns 0 when we have the right velocity. Write a function called `error_func` that takes a velocity and a `Condition` object, uses `best_height` to find the height of the ball at the wall, and returns the difference between the result and the target value (11 meters)." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test your error function like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "error_func(40, condition)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then use `fsolve` to find the answer to the problem, the minimum velocity that gets the ball out of the park." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And just to check, run `best_height` with the value you found. The result should be 11 meters." + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "best_height(min_velocity, condition)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/code/chap10soln.ipynb b/code/chap10soln.ipynb index 09b302ad..3ec8b45b 100644 --- a/code/chap10soln.ipynb +++ b/code/chap10soln.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -57,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": { "collapsed": true }, @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": { "collapsed": true }, @@ -95,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -110,7 +110,7 @@ "" ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -136,7 +136,7 @@ "" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -154,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -169,7 +169,7 @@ "" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -187,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -202,7 +202,7 @@ "" ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -220,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "collapsed": true }, @@ -238,7 +238,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -253,7 +253,7 @@ "" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -271,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -286,7 +286,7 @@ "" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -304,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -319,7 +319,7 @@ "" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -337,7 +337,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -352,7 +352,7 @@ "" ] }, - "execution_count": 12, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -370,7 +370,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": { "collapsed": true }, @@ -391,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -406,7 +406,7 @@ "" ] }, - "execution_count": 14, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -425,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -440,7 +440,7 @@ "" ] }, - "execution_count": 15, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -463,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": { "collapsed": true }, @@ -482,7 +482,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -497,7 +497,7 @@ "" ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -516,7 +516,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -531,7 +531,7 @@ "" ] }, - "execution_count": 18, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -550,7 +550,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -565,7 +565,7 @@ "" ] }, - "execution_count": 19, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -583,7 +583,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -598,7 +598,7 @@ "" ] }, - "execution_count": 20, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -616,7 +616,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -631,7 +631,7 @@ "" ] }, - "execution_count": 21, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -651,7 +651,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -666,7 +666,7 @@ "" ] }, - "execution_count": 22, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -687,7 +687,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -702,7 +702,7 @@ "" ] }, - "execution_count": 23, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -729,7 +729,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "metadata": { "collapsed": true }, @@ -756,7 +756,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -800,7 +800,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -873,7 +873,7 @@ "dtype: object" ] }, - "execution_count": 26, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -892,7 +892,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -931,19 +931,19 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(,\n", - " ,\n", + " ,\n", " ,\n", - " )" + " )" ] }, - "execution_count": 28, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -961,7 +961,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -979,7 +979,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1058,7 +1058,7 @@ "0.204 5.652384 6.451211 27.153433 25.193958" ] }, - "execution_count": 30, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1076,7 +1076,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1155,7 +1155,7 @@ "5.100 103.319572 -0.913800 14.714856 -22.714157" ] }, - "execution_count": 31, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1175,7 +1175,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 34, "metadata": { "collapsed": true }, @@ -1194,7 +1194,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1756,7 +1756,7 @@ "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", @@ -1977,7 +1977,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2014,7 +2014,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -2033,7 +2033,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -2595,7 +2595,7 @@ "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", @@ -2816,7 +2816,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2844,7 +2844,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -3406,7 +3406,7 @@ "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", @@ -3627,7 +3627,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3663,7 +3663,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 39, "metadata": { "scrolled": false }, @@ -4227,7 +4227,7 @@ "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", @@ -4448,7 +4448,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -4480,7 +4480,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 40, "metadata": { "collapsed": true }, @@ -4515,7 +4515,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 41, "metadata": { "scrolled": false }, @@ -5079,7 +5079,7 @@ "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", @@ -5300,7 +5300,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -5337,7 +5337,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 42, "metadata": { "collapsed": true }, @@ -5357,7 +5357,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -5398,16 +5398,16 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(102.72237841710873)" + "array(102.72237841710975)" ] }, - "execution_count": 42, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -5425,20 +5425,9 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 45, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "modsim.Condition" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Hint: rather than modify `condition`, make a copy\n", "\n", @@ -5447,16 +5436,16 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(109.07212101030471)" + "array(109.07212101030548)" ] }, - "execution_count": 47, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -5481,7 +5470,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "metadata": { "collapsed": true }, @@ -5511,24 +5500,23 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 512 ms, sys: 0 ns, total: 512 ms\n", - "Wall time: 498 ms\n" + "Wall time: 289 ms\n" ] }, { "data": { "text/plain": [ - "array(109.07212101030471)" + "array(109.07212101030548)" ] }, - "execution_count": 49, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -5546,23 +5534,23 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "30.0 102.2251288061195\n", + "30.0 102.22512880611951\n", "33.0 105.61073422582602\n", "36.0 107.97200490961362\n", "39.0 109.32525682573122\n", - "42.0 109.6866222500251\n", - "45.0 109.07212101030471\n", - "48.0 107.49791212235655\n", + "42.0 109.68662225002511\n", + "45.0 109.07212101030548\n", + "48.0 107.49791212235652\n", "51.0 104.98068732786591\n", "54.0 101.53816371252147\n", - "57.0 97.18969823610271\n", + "57.0 97.1896982361027\n", "60.0 91.95703077946803\n" ] } @@ -5586,7 +5574,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -6148,7 +6136,7 @@ "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", @@ -6369,7 +6357,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -6405,15 +6393,14 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 4.64 s, sys: 8 ms, total: 4.65 s\n", - "Wall time: 4.62 s\n" + "Wall time: 3.4 s\n" ] } ], @@ -6430,7 +6417,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -6439,7 +6426,7 @@ "scipy.optimize.optimize.OptimizeResult" ] }, - "execution_count": 54, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -6457,21 +6444,21 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - " fun: 109.69517452154857\n", + " fun: 109.69517452156008\n", " message: 'Solution found.'\n", " nfev: 9\n", " status: 0\n", " success: True\n", - " x: 41.603102862839918" + " x: 41.603102863878036" ] }, - "execution_count": 55, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -6507,7 +6494,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 54, "metadata": { "collapsed": true }, @@ -6532,24 +6519,23 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 120 ms, sys: 0 ns, total: 120 ms\n", - "Wall time: 117 ms\n" + "Wall time: 58.2 ms\n" ] }, { "data": { "text/plain": [ - "array(102.72237841710873)" + "array(102.72237841710975)" ] }, - "execution_count": 57, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -6560,15 +6546,14 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 716 ms, sys: 8 ms, total: 724 ms\n", - "Wall time: 715 ms\n" + "Wall time: 513 ms\n" ] } ], @@ -6599,7 +6584,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 57, "metadata": { "collapsed": true }, @@ -6637,7 +6622,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -6650,10 +6635,10 @@ { "data": { "text/plain": [ - "array(11.025366370141436)" + "array(11.025366370142653)" ] }, - "execution_count": 60, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } From dda18207597da1a37e39c0d33a4e227839ee2422 Mon Sep 17 00:00:00 2001 From: David Freeman <31573859+davidthefree@users.noreply.github.com> Date: Tue, 28 Nov 2017 15:53:38 -0500 Subject: [PATCH 21/24] slip --- code/chap11-fig01.pdf | Bin 0 -> 16440 bytes code/chap11-fig02.pdf | Bin 0 -> 16928 bytes code/chap11mine.ipynb | 1973 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1973 insertions(+) create mode 100644 code/chap11-fig01.pdf create mode 100644 code/chap11-fig02.pdf create mode 100644 code/chap11mine.ipynb diff --git a/code/chap11-fig01.pdf b/code/chap11-fig01.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ccbf4d72850e55a22c4e563af61890005e1313a0 GIT binary patch literal 16440 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/A3E&AOjqhf5(bc#)+i~9Yw}yRA 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\n", + "\n", + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rolling paper\n", + "\n", + "We'll start by loading the units we need." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "radian = UNITS.radian\n", + "m = UNITS.meter\n", + "s = UNITS.second" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And creating a `Condition` object with the system parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(Rmin = 0.02 * m,\n", + " Rmax = 0.055 * m,\n", + " L = 47 * m,\n", + " duration = 130 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function estimates the parameter `k`, which is the increase in the radius of the roll for each radian of rotation. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def estimate_k(condition):\n", + " \"\"\"Estimates the parameter `k`.\n", + " \n", + " condition: Condition with Rmin, Rmax, and L\n", + " \n", + " returns: k in meters per radian\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " Ravg = (Rmax + Rmin) / 2\n", + " Cavg = 2 * pi * Ravg\n", + " revs = L / Cavg\n", + " rads = 2 * pi * revs\n", + " k = (Rmax - Rmin) / rads\n", + " return k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As usual, `make_system` takes a `Condition` object and returns a `System` object." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition with Rmin, Rmax, and L\n", + " \n", + " returns: System with init, k, and ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(theta = 0 * radian,\n", + " y = 0 * m,\n", + " r = Rmin)\n", + " \n", + " k = estimate_k(condition)\n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, k=k, ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `make_system`" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
inittheta 0 radian\n", + "y 0 meter\n", + "r ...
k2.7925531914893616e-05 meter
ts[0.0 second, 1.3 second, 2.6 second, 3.9000000...
\n", + "
" + ], + "text/plain": [ + "init theta 0 radian\n", + "y 0 meter\n", + "r ...\n", + "k 2.7925531914893616e-05 meter\n", + "ts [0.0 second, 1.3 second, 2.6 second, 3.9000000...\n", + "dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
theta0 radian
y0 meter
r0.02 meter
\n", + "
" + ], + "text/plain": [ + "theta 0 radian\n", + "y 0 meter\n", + "r 0.02 meter\n", + "dtype: object" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can write a slope function based on the differential equations\n", + "\n", + "$\\omega = \\frac{d\\theta}{dt} = 10$\n", + "\n", + "$\\frac{dy}{dt} = r \\frac{d\\theta}{dt}$\n", + "\n", + "$\\frac{dr}{dt} = k \\frac{d\\theta}{dt}$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes the derivatives of the state variables.\n", + " \n", + " state: State object with theta, y, r\n", + " t: time\n", + " system: System object with r, k\n", + " \n", + " returns: sequence of derivatives\n", + " \"\"\"\n", + " theta, y, r = state\n", + " unpack(system)\n", + " \n", + " omega = 10 * radian / s\n", + " dydt = r * omega\n", + " drdt = k * omega\n", + " \n", + " return omega, dydt, drdt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `slope_func`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " )" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0*s, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And look at the results." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
thetayr
124.81248.046.7070640.054851
126.11261.047.4224870.055214
127.41274.048.1426300.055577
128.71287.048.8674930.055940
130.01300.049.5970740.056303
\n", + "
" + ], + "text/plain": [ + " theta y r\n", + "124.8 1248.0 46.707064 0.054851\n", + "126.1 1261.0 47.422487 0.055214\n", + "127.4 1274.0 48.142630 0.055577\n", + "128.7 1287.0 48.867493 0.055940\n", + "130.0 1300.0 49.597074 0.056303" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extracting one time series per variable (and converting `r` to radians):" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "thetas = system.results.theta\n", + "ys = system.results.y\n", + "rs = system.results.r * 1000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***WHY TF DO WE MULTIPLY BY 1000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `theta`" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(thetas, label='theta')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angle (rad)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `y`" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nA6ef1MpfzGxDAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Length (m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `r`" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(rs, color='red', label='r')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Radius (mm)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also see the relationship between `y` and `r`, which I derive analytically in the book." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(rs, ys, color='purple')\n", + "\n", + "decorate(xlabel='Radius (mm)',\n", + " ylabel='Length (m)',\n", + " legend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the figure from the book." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap11-fig01.pdf\n" + ] + }, + { + "data": { + "image/png": "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\nBSA3N5e5c+dSVlbGQw89RHZ2Nk6n06eyqKurY8SIEWzZsoXdu3eTmprK8uXLcblcPpXDrXpbd2tr\nKwEBAbp+s9mMyWTy2mwuXbrE0qVLGTFiBEuWLAE8LwePeljTYBgyZAjd3d10dXVx773/xNXR0UFg\nYOAgzmxgVFRU4HA4yMjIYNWqVQAEBATQ2dmpG+eNeVRWVnL69GkOHjx4235fyQHQCuQXXniBmTNn\nAjBx4kROnjzJ7t27fSaL+vp6HA4Hu3btIi4uDoDi4mIyMjLYvn27z+TQU2/rHjJkCB0dHbr+zs5O\nlFJYLJYBm+dAqa+vZ9GiRbS1tbFjxw6GDRsGeF4OUiD0YvTo0cCNp13dfA/Q0tJi2KXmbT766CNK\nSkrIysoiPz9fOw9h9OjRtLS06MZ6Yx4VFRU0NzeTmpoKgPr7sSWLFy/mqaee8pkc4J/doOPHj9fa\nTCYTDz74IA0NDT6TxalTp7h+/ToxMTFam9lsJioqirq6Op/Joafe1h0eHm647PHmeG/L5ueff2bx\n4sUEBwezZ88e3e+Gp+Ughxh6ERkZSVBQECdOnNDaGhoauHjxIomJiYM4s/71ySefUFJSwvLly3E4\nHFpxAJCQkEBNTY1u/PHjx3nkkUcGepr96r333uPQoUPs37+f/fv3U1ZWBsBbb73FihUrfCYHgOjo\naCwWCz/99JPWppTC6XQyduxYn8kiPDwcgDNnzmhtN3N44IEHfCaHnnpbd0JCAvX19brj7MePHyco\nKIjIyMgBnWt/cjqdLFy4kDFjxrBr1y5dcQAemMOgXkPhIdatW6eSk5PV119/rd0HoeclPd7kl19+\nUVFRUWr16tWqpaVF97p27Zr69ddfVXR0tNqwYYM6e/asKikpUVarVXdZpDdqamrSXeboazmsX79e\nJSYmqi+//FKdP39evf3228pqtSqn0+kzWXR1dal58+apJ598UtXU1KizZ88qh8Oh4uLiVENDg8/k\nkJWVpbu8r7d1d3d3q3nz5qlnnnlGnTp1Srv+f+PGjYO1hD7RM4c5c+ao1NRUde7cOd3fTbfbrZTy\nvBykQLgLnZ2d6t1331WTJ09W8fHxasWKFdp/uDcqLi5W48ePv+3rww8/VEopdfToUZWRkaFiYmLU\nrFmz1LfffjvIs+5/PQsEpXwrh+7ubvXxxx8rm82mYmJi1Ny5c1VNTY3W7ytZuN1ulZeXp6ZNm6YS\nEhJUdna2On36tNbvCzn0/GFUqvd1t7S0qBdffFE9/PDDKjk5WRUXF6vr168P5LT73K05nDt37o5/\nN6dPn65t40k5mJT6+8CqEEIIIcTf5BwEIYQQQhhIgSCEEEIIAykQhBBCCGEgBYIQQgghDKRAEEII\nIYSBFAhCCCGEMJBbLQshDHJzc6msrPzXMTcf7+vn58f27dsHYFY3OBwOwsPDeemll3odW1dXx8KF\nC6msrGT48OEDMDshvIfcB0EIYfDbb79x6dIl7fObb76Jn58f+fn5WtvQoUOBG89kiIiIGJB5ffPN\nNzgcDr744gvDU/HupLCwELfbTVFRUT/PTgjvInsQhBAG48aNY9y4cdrnoUOH4ufnpz3BcDAopVi7\ndi05OTl3XRwALFq0CJvNRnZ2NtHR0f04QyG8i5yDIIT4vz333HPk5ORonydMmMBnn33Ga6+9xqRJ\nk0hKSqK0tJSrV6+yevVqEhISSElJYd26ddy68/Ly5cvk5+czdepUYmNjefbZZzl58qTuu6qrq3E6\nnWRkZGhtbW1trFmzhrS0NGJiYpgxYwZbt27VbRcaGkpSUhKbN2/unxCE8FJSIAgh+lRhYSEhISFs\n2rSJ9PR0PvjgAzIzMwkMDKS0tJTHH3+csrIyvvrqKwDa29vJycmhurqalStXsnHjRoKDg8nJyeHH\nH3/U/t2qqiri4+MJCwvT2t555x2OHTtGbm4uW7du5bHHHqOoqMhw/oTdbufIkSP89ddfAxOCEF5A\nDjEIIfpUdHQ0eXl5wI3HpVdUVBAaGsrrr78OQFJSElVVVfzwww/Y7XYOHDjAmTNn2Lt3L1arFYC0\ntDQyMzNZv34927ZtA+D7779n9uzZuu86ceIEKSkp2l6FKVOmYLFYCAkJ0Y2zWq10dnZSW1tLampq\nv65fCG8hBYIQok/FxsZq70NCQvDz89O1mUwmgoODuXLlCgDfffcdo0aNIioqiq6uLm1ceno6mzdv\npqOjg66uLtxuN/fff7/uu6ZMmcKePXtwuVzYbDZsNtttr24YM2YMABcvXuzTtQrhzaRAEEL0qaCg\nIEObxWK54/g//vgDl8t1xxMIL1++rL0PDAzU9eXl5REeHs7BgwcpKCigoKCASZMmsWbNGiIjIw3b\n/fnnn/9pLUL4MikQhBCDatiwYURERFBYWHjb/lsPF9zc63CTv78/y5YtY9myZTQ2NnL06FE2bdrE\nqlWrqKqqMmzX89CDEOLO5CRFIcSgSkxMpLGxkZEjR2K1WrXX4cOH+fTTTzGbzfj7+xMWFkZzc7O2\nXXt7O3a7nfLycgDuu+8+5s+fzxNPPEFTU5PuO1wulzZGCHF3ZA+CEGJQPf300+zYsYMFCxawdOlS\nRo0aRXV1Ndu2bePll1/GZDIBkJKSorv0MSAggNjYWEpLSzGbzUyYMIHz589TWVmJ3W7XfUdtbS0W\ni4X4+PgBXZsQnkwKBCHEoAoKCmLnzp0UFxezdu1arl27xtixY3E4HGRlZWnj7HY7r7zyCm63m9DQ\nUODGHR5DQkIoLy/n999/JzQ0lMzMTF599VXddxw7dgybzfafbrAkhK+TWy0LITyCUopZs2Yxc+ZM\nlixZctfbNTY2Mn36dPbt28fEiRP7cYZCeBc5B0EI4RFMJhMrV65k586dtLa23vV25eXlzJgxQ4oD\nIf4jKRCEEB4jPT2dlJQUw+2U7+TChQscOXJEu0mTEOLuySEGIYQQQhjIHgQhhBBCGEiBIIQQQggD\nKRCEEEIIYSAFghBCCCEMpEAQQgghhIEUCEIIIYQw+B/PcvlKSWMYEgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subplot(3, 1, 1)\n", + "plot(thetas, label='theta')\n", + "decorate(ylabel='Angle (rad)')\n", + "\n", + "subplot(3, 1, 2)\n", + "plot(ys, color='green', label='y')\n", + "decorate(ylabel='Length (m)')\n", + "\n", + "subplot(3, 1, 3)\n", + "plot(rs, color='red', label='r')\n", + "\n", + "decorate(xlabel='Time(s)',\n", + " ylabel='Radius (mm)')\n", + "\n", + "savefig('chap11-fig01.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use interpolation to find the time when `y` is 47 meters." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(125.33333334940457)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "T = interp_inverse(ys, kind='cubic')\n", + "t_end = T(47)\n", + "t_end" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At that point `r` is 55 mm, which is `Rmax`, as expected." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(55.00000000448797)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "R = interpolate(rs, kind='cubic')\n", + "R(t_end)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The total amount of rotation is 1253 rad." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(1253.3333334940455)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "THETA = interpolate(thetas, kind='cubic')\n", + "THETA(t_end)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unrolling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For unrolling the paper, we need more units:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "kg = UNITS.kilogram\n", + "N = UNITS.newton" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And a few more parameters in the `Condition` object." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(Rmin = 0.02 * m,\n", + " Rmax = 0.055 * m,\n", + " Mcore = 15e-3 * kg,\n", + " Mroll = 215e-3 * kg,\n", + " L = 47 * m,\n", + " tension = 2e-4 * N,\n", + " duration = 180 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`make_system` computes `rho_h`, which we'll need to compute moment of inertia, and `k`, which we'll use to compute `r`." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition with Rmin, Rmax, Mcore, Mroll,\n", + " L, tension, and duration\n", + " \n", + " returns: System with init, k, rho_h, Rmin, Rmax,\n", + " Mcore, Mroll, ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(theta = 0 * radian,\n", + " omega = 0 * radian/s,\n", + " y = L)\n", + " \n", + " area = pi * (Rmax**2 - Rmin**2)\n", + " rho_h = Mroll / area\n", + " k = (Rmax**2 - Rmin**2) / 2 / L / radian \n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, k=k, rho_h=rho_h,\n", + " Rmin=Rmin, Rmax=Rmax,\n", + " Mcore=Mcore, Mroll=Mroll, \n", + " ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `make_system`" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
inittheta 0 radian\n", + "omega 0.0 radi...
k2.7925531914893616e-05 meter / radian
rho_h26.07109543981524 kilogram / meter ** 2
Rmin0.02 meter
Rmax0.055 meter
Mcore0.015 kilogram
Mroll0.215 kilogram
ts[0.0 second, 1.8 second, 3.6 second, 5.4 secon...
\n", + "
" + ], + "text/plain": [ + "init theta 0 radian\n", + "omega 0.0 radi...\n", + "k 2.7925531914893616e-05 meter / radian\n", + "rho_h 26.07109543981524 kilogram / meter ** 2\n", + "Rmin 0.02 meter\n", + "Rmax 0.055 meter\n", + "Mcore 0.015 kilogram\n", + "Mroll 0.215 kilogram\n", + "ts [0.0 second, 1.8 second, 3.6 second, 5.4 secon...\n", + "dtype: object" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
theta0 radian
omega0.0 radian / second
y47 meter
\n", + "
" + ], + "text/plain": [ + "theta 0 radian\n", + "omega 0.0 radian / second\n", + "y 47 meter\n", + "dtype: object" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we compute `I` as a function of `r`:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def moment_of_inertia(r, system):\n", + " \"\"\"Moment of inertia for a roll of toilet paper.\n", + " \n", + " r: current radius of roll in meters\n", + " system: System object with Mcore, rho, Rmin, Rmax\n", + " \n", + " returns: moment of inertia in kg m**2\n", + " \"\"\"\n", + " unpack(system)\n", + " Icore = Mcore * Rmin**2 \n", + " Iroll = pi * rho_h / 2 * (r**4 - Rmin**4)\n", + " return Icore + Iroll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When `r` is `Rmin`, `I` is small." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "6e-06 kilogram meter2" + ], + "text/latex": [ + "$6e-06 kilogram \\cdot meter^{2}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "moment_of_inertia(system.Rmin, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As `r` increases, so does `I`." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "0.00037418750000000006 kilogram meter2" + ], + "text/latex": [ + "$0.00037418750000000006 kilogram \\cdot meter^{2}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "moment_of_inertia(system.Rmax, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the slope function." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def slope_func(state, t, system):\n", + " \"\"\"Computes the derivatives of the state variables.\n", + " \n", + " state: State object with theta, omega, y\n", + " t: time\n", + " system: System object with Rmin, k, Mcore, rho_h, tension\n", + " \n", + " returns: sequence of derivatives\n", + " \"\"\"\n", + " theta, omega, y = state\n", + " unpack(system)\n", + " \n", + " r = sqrt(2*k*y + Rmin**2)\n", + " I = moment_of_inertia(r, system)\n", + " tau = r * tension\n", + " alpha = tau / I\n", + " dydt = -r * omega\n", + " \n", + " return omega, alpha, dydt " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `slope_func`" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " )" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0*s, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And look at the results." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
thetaomegay
172.8503.3769986.83022222.852269
174.6515.7882196.96058022.346268
176.4528.4371507.09437621.835001
178.2541.3301517.23180221.318468
180.0554.4739407.37306620.796665
\n", + "
" + ], + "text/plain": [ + " theta omega y\n", + "172.8 503.376998 6.830222 22.852269\n", + "174.6 515.788219 6.960580 22.346268\n", + "176.4 528.437150 7.094376 21.835001\n", + "178.2 541.330151 7.231802 21.318468\n", + "180.0 554.473940 7.373066 20.796665" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extrating the time series" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "thetas = system.results.theta\n", + "omegas = system.results.omega\n", + "ys = system.results.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `theta`" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nUF2tUFWtoKuqRqur1v+p1VVTqa2iUlvzZ4WuioqKKjSVOjSVNX+WV+go1+jq3Iq1scxNTXC0t8TR\n3hIneyucHGqSRhc7S8xkuXMhRCtrdwnkzJkzlJaWEhkZqS/z9vbGy8uLpKSkRiWQnIIyfjp6leKy\nmj4ERYFqRdH/eTNxKE14Kmgqa0szHGwt9D9d7CxrfmwtsJUnCiFEG9LuEkhWVhYA7u7uBuVqtVpf\n11DHU3PJzC9tttjuxNREhY2VOTZWZthYmmFrbY6djQW2VubY2dT82NtYyJOEEKLdaHcJpLy8HBMT\nE8zNDUcOWVhYUFFR0ajX6tG1C+evFqHV3bl5yUSlwtREhZmZCeZmJpiZ1vxpbmaKuZkJluYmWJib\nYmluiqWFKVYWZvo/rS3NsLYyw8LMRJ4ehBAdSrtLIFZWVlRXV6PT6TAzuxV+ZWUl1tbWjXotf29H\nfD3sb82XUKkwUdUkDJWJSp84ZG0nIYSord0lEE9PTwByc3P1/w2Qk5NTq1mrIWqeImTFWCGEaKx2\nl0CCgoKwtbXl0KFDREdHA3DlyhWuXr3KwIED67ymqqrmCaOxfSRCCNGZ3fzMvPkZ+nvtLoFYWFjw\n5JNP8te//hUnJydcXFz4y1/+QmRkJKGhoXVek5ubC8DUqVNbM1QhhOgQcnNz6datW61yldKaY1Sb\niU6n45133iEhIQGdTqefie7s7Fzn+RqNhpSUFNzc3DA1leYqIYRoiKqqKnJzc+nXrx9WVla16ttl\nAhFCCGF8MulACCFEk0gCEUII0SSSQIQQQjSJJBAhhBBNIglECCFEk3TaBFJVVcW7775LVFQUYWFh\nvPDCC+Tl5Rk7rHYtLS2NwMDAWj9JSUkA7N+/n+joaIKDg5k4cSKJiYlGjrj9WbJkCQsXLjQou9t9\nzc/PZ86cOURERDBkyBDi4uLQ6Rq3OVlnUtc9fuyxx2r9vb79nE57j5VOauXKlcrQoUOV/fv3Kykp\nKcqUKVOU//7v/zZ2WO3a9u3blUGDBik5OTkGP5WVlUpqaqrSr18/5YMPPlDS0tKUlStXKn379lXO\nnTtn7LDbherqauX9999XevXqpbz++uv68obc1yeeeEJ58sknldOnTyt79+5VBg8erLz33nvGeBtt\nWn33uLq6WgkJCVG+/fZbg7/XxcXF+nM66z3ulAmkoqJCCQsLU7766it9WUZGhtKrVy8lOTnZiJG1\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(thetas, label='theta')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angle (rad)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `omega`" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nGHt7e5KTk/Hw8CAwMLBIH/b555+TkZF3g0hCQgKDBg3i448/pmXLlkV6LyHEQ8pKgr9XQdJR03Gv\nluqdunK1bxM0h//mzZuZNWsW169fN455eXnx1ltvGbt/Psi9SzvLlStnHPf0lL08hTCrOxutXFwH\nuel5404e8NgQqFjfcrWJEqcp/Hft2sWECRNo06YNYWFheHl5ER8fz7Zt23j//fepUKGCbOEoRGmW\ncVXdaCX5jOm4d1uo2kdW8tggTeEfHh5Oz549+eyzz0zGe/fuzfjx4/n6668fKvx9fX05c+bMg58o\nhHg4igHifoTYLaDc1aCxXGW19XKFWparTViUppu8zp49S1hYWIHHwsLCiIqKKvCYEMKCUmPgxKdw\ncf1dwa8D307qfroS/DZN05V/5cqVuXr1aoHH4uLicHZ2LtaihBCPIDcTLm1Vr/hR8sadA6D6ULUT\np7B5msK/Xbt2zJ07lzp16lC/ft6XQsePH2fevHm0b9/ebAUKIYog6QT8vRKy8hZmoHME/zDwfUYa\nsQkjTeE/evRofvvtN/r160e1atWoXLkyCQkJxMTE8NhjjzFu3Dhz1ymEuJ/sW2qv/XtbM7jVhqDB\noPe2TF2i1NIU/u7u7mzYsIH169dz6NAhbt68Sd26dRk6dCh9+vSRaR8hLEVRIOEXuLgBctPyxu1d\n1DX7Xi1kdy1RIM3r/PV6PYMGDWLQoEHmrEcIoVXaJXWKJ+WerrqeT6qtGRzdLFOXsAqFhv/kyZM1\nv4lOp5PWDEKUlNxMuPR/t7/QNeSNl6ustmZwr2ux0oT1KDT89+/fr/lNdPJnpRAl48ZRtR9PVmLe\nmM4e/DpDlW5g52i52oRVKTT89+zZU5J1CCHuJ/O6Gvp3b6cI4BasXu07+1mmLmG1itTYLTMzk8jI\nSK5evUqrVq1IT0/H11c2bxbCbAw5ELcLLm0zvUPXwRWq9gOv5vKFrngomsN/5cqVfPnll9y6dQud\nTse6dev48ssvycrKYtGiRZQvL50AhShWN0/BhdWQEW86Xrk1VH0WHFwsU5coEzS1d1i3bh0ff/wx\nzz77LMuXLzf24e/Xrx/Hjh1j/vz5Zi1SCJuSdQPOLoYzc02D3zkA6k1Q1+1L8ItHpOnKf+nSpYwY\nMYLx48eTm5trHO/UqRPx8fEsW7aMCRMmmK1IIWyCIQfidsPlbWDIzBu300NAL/BpBzpN12tCPJCm\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(omegas, color='orange', label='omega')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angular velocity (rad/s)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting `y`" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Length (m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the figure from the book." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving figure to file chap11-fig02.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subplot(3, 1, 1)\n", + "plot(thetas, label='theta')\n", + "decorate(ylabel='Angle (rad)')\n", + "\n", + "subplot(3, 1, 2)\n", + "plot(omegas, color='orange', label='omega')\n", + "decorate(ylabel='Angular velocity (rad/s)')\n", + "\n", + "subplot(3, 1, 3)\n", + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time(s)',\n", + " ylabel='Length (m)')\n", + "\n", + "savefig('chap11-fig02.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Yo-yo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Simulate the descent of a yo-yo. How long does it take to reach the end of the string.\n", + "\n", + "I provide a `Condition` object with the system parameters:\n", + "\n", + "* `Rmin` is the radius of the axle. `Rmax` is the radius of the axle plus rolled string.\n", + "\n", + "* `Rout` is the radius of the yo-yo body. `mass` is the total mass of the yo-yo, ignoring the string. \n", + "\n", + "* `L` is the length of the string.\n", + "\n", + "* `g` is the acceleration of gravity." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(Rmin = 8e-3 * m,\n", + " Rmax = 16e-3 * m,\n", + " Rout = 35e-3 * m,\n", + " mass = 50e-3 * kg,\n", + " L = 1 * m,\n", + " g = 9.8 * m / s**2,\n", + " duration = 1 * s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a `make_system` function that computes `I` and `k` based on the system parameters.\n", + "\n", + "I estimated `I` by modeling the yo-yo as a solid cylinder with uniform density ([see here](https://en.wikipedia.org/wiki/List_of_moments_of_inertia)). In reality, the distribution of weight in a yo-yo is often designed to achieve desired effects. But we'll keep it simple." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_system(condition):\n", + " \"\"\"Make a system object.\n", + " \n", + " condition: Condition with Rmin, Rmax, Rout, \n", + " mass, L, g, duration\n", + " \n", + " returns: System with init, k, Rmin, Rmax, mass,\n", + " I, g, ts\n", + " \"\"\"\n", + " unpack(condition)\n", + " \n", + " init = State(theta = 0 * radian,\n", + " omega = 0 * radian/s,\n", + " y = L,\n", + " v = 0 * m / s)\n", + " \n", + " I = mass * Rout**2 / 2\n", + " k = (Rmax**2 - Rmin**2) / 2 / L / radian \n", + " ts = linspace(0, duration, 101)\n", + " \n", + " return System(init=init, k=k,\n", + " Rmin=Rmin, Rmax=Rmax,\n", + " mass=mass, I=I, g=g,\n", + " ts=ts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Testing `make_system`" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
inittheta 0 radian\n", + "omega 0.0 radi...
k9.6e-05 meter / radian
Rmin0.008 meter
Rmax0.016 meter
mass0.05 kilogram
I3.0625000000000006e-05 kilogram * meter ** 2
g9.8 meter / second ** 2
ts[0.0 second, 0.01 second, 0.02 second, 0.03 se...
\n", + "
" + ], + "text/plain": [ + "init theta 0 radian\n", + "omega 0.0 radi...\n", + "k 9.6e-05 meter / radian\n", + "Rmin 0.008 meter\n", + "Rmax 0.016 meter\n", + "mass 0.05 kilogram\n", + "I 3.0625000000000006e-05 kilogram * meter ** 2\n", + "g 9.8 meter / second ** 2\n", + "ts [0.0 second, 0.01 second, 0.02 second, 0.03 se...\n", + "dtype: object" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
theta0 radian
omega0.0 radian / second
y1 meter
v0.0 meter / second
\n", + "
" + ], + "text/plain": [ + "theta 0 radian\n", + "omega 0.0 radian / second\n", + "y 1 meter\n", + "v 0.0 meter / second\n", + "dtype: object" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Write a slope function for this system, using these results from the book:\n", + "\n", + "$ r = \\sqrt{2 k y + R_{min}^2} $ \n", + "\n", + "$ T = m g I / I^* $\n", + "\n", + "$ a = -m g r^2 / I^* $\n", + "\n", + "$ \\alpha = m g r / I^* $\n", + "\n", + "where $I^*$ is the augmented moment of inertia, $I + m r^2$.\n", + "\n", + "Hint: If `y` is less than 0, it means you have reached the end of the string, so the equation for `r` is no longer valid. In this case, the simplest thing to do it return the sequence of derivatives `0, 0, 0, 0`" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Solution goes here\n", + "def slope_func(state, t, system):\n", + " theta, omega, y, v = state\n", + " unpack(system)\n", + " \n", + " #if y <= 0:\n", + " # r = 0\n", + " #else:\n", + " # r = sqrt((2*k*y) + Rmin**2)\n", + " \n", + " \n", + " r = sqrt((2*k*y) + Rmin**2)\n", + " Istar = I + (mass * r**2)\n", + " T = mass*g*I/Istar\n", + " a = -(mass*g*r**2)/Istar\n", + " alpha = mass*g*r/Istar\n", + "\n", + " return r, T, a, alpha" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test your slope function with the initial conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " ,\n", + " )" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "slope_func(system.init, 0*s, system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then run the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "run_odeint(system, slope_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Check the final conditions. If things have gone according to plan, the final value of `y` should be close to 0." + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
thetaomegayv
0.960.008946408.869682-0.230606120.404961
0.970.008990413.619000-0.233620121.088588
0.980.009033418.372609-0.236548121.762717
0.990.009076423.130393-0.239392122.427454
1.000.009118427.892240-0.242155123.082906
\n", + "
" + ], + "text/plain": [ + " theta omega y v\n", + "0.96 0.008946 408.869682 -0.230606 120.404961\n", + "0.97 0.008990 413.619000 -0.233620 121.088588\n", + "0.98 0.009033 418.372609 -0.236548 121.762717\n", + "0.99 0.009076 423.130393 -0.239392 122.427454\n", + "1.00 0.009118 427.892240 -0.242155 123.082906" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system.results.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "thetas = system.results.theta\n", + "ys = system.results.y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`theta` should increase and accelerate." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nCgYQERGF4gusi8LJSOJMUgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(thetas, label='theta')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Angle (rad)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`y` should decrease and accelerate down." + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nxf8D4gadsIbR1hIAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(ys, color='green', label='y')\n", + "\n", + "decorate(xlabel='Time (s)',\n", + " ylabel='Length (m)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From acd8aa3686a00c3ac7f27fcebff8544c7eb28d05 Mon Sep 17 00:00:00 2001 From: David Freeman <31573859+davidthefree@users.noreply.github.com> Date: Sun, 3 Dec 2017 14:29:51 -0500 Subject: [PATCH 22/24] deeto --- code/chap10-fig01.pdf | Bin 12934 -> 12934 bytes code/chap10-fig02.pdf | Bin 13518 -> 13518 bytes code/chap10-fig03.pdf | Bin 12417 -> 12417 bytes code/chap10.mine.ipynb | 385 ++++++++++++++++++++++------------------- 4 files changed, 204 insertions(+), 181 deletions(-) diff --git a/code/chap10-fig01.pdf b/code/chap10-fig01.pdf index 95068ee5e0de8b4ac70b0cec0341bb2e21084cc6..8d23169a060f6d84ee2c8c88c20714aee524653a 100644 GIT binary patch delta 22 dcmZomZA;z2r_X6*U~Fh?Y-D7ySzJG#830Y11^@s6 delta 22 dcmZomZA;z2r_X64vp{1e8W@W?G%m7=)2J-*_ diff --git a/code/chap10-fig03.pdf b/code/chap10-fig03.pdf index 3f4425eb6434e6befa38a521b3949ecdde7e0128..ab2a3f520a0aef8cdfec10733af653cd79c2ec6f 100644 GIT binary patch delta 22 dcmZonY)ss+Q-{;Yz}V2(*vQmu^C6x6%m7-S2af;% delta 22 dcmZonY)ss+Q-{;g(8$o-(9+mw^C6x6%m7-t2ax~( diff --git a/code/chap10.mine.ipynb b/code/chap10.mine.ipynb index aa4a36e5..50e94d1b 100644 --- a/code/chap10.mine.ipynb +++ b/code/chap10.mine.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 1, "metadata": { "collapsed": true }, @@ -57,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -95,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -110,7 +110,7 @@ "" ] }, - "execution_count": 89, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -136,7 +136,7 @@ "" ] }, - "execution_count": 90, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -154,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -169,7 +169,7 @@ "" ] }, - "execution_count": 91, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -187,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -202,7 +202,7 @@ "" ] }, - "execution_count": 92, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -220,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -238,7 +238,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -253,7 +253,7 @@ "" ] }, - "execution_count": 94, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -271,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -286,7 +286,7 @@ "" ] }, - "execution_count": 95, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -304,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -319,7 +319,7 @@ "" ] }, - "execution_count": 96, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -337,7 +337,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -352,7 +352,7 @@ "" ] }, - "execution_count": 97, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -370,7 +370,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 13, "metadata": { "collapsed": true }, @@ -391,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -406,7 +406,7 @@ "" ] }, - "execution_count": 99, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -425,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -440,7 +440,7 @@ "" ] }, - "execution_count": 100, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -462,7 +462,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -481,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -496,7 +496,7 @@ "" ] }, - "execution_count": 102, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -515,7 +515,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -530,7 +530,7 @@ "" ] }, - "execution_count": 103, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -549,7 +549,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -564,7 +564,7 @@ "" ] }, - "execution_count": 104, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -582,7 +582,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -597,7 +597,7 @@ "" ] }, - "execution_count": 105, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -615,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -630,7 +630,7 @@ "" ] }, - "execution_count": 106, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -650,7 +650,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 22, "metadata": { "collapsed": true }, @@ -675,7 +675,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -690,7 +690,7 @@ "" ] }, - "execution_count": 108, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -716,7 +716,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 24, "metadata": { "collapsed": true }, @@ -743,7 +743,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 25, "metadata": { "collapsed": true }, @@ -787,7 +787,7 @@ }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -860,7 +860,7 @@ "dtype: object" ] }, - "execution_count": 111, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -879,7 +879,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -918,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -930,7 +930,7 @@ " )" ] }, - "execution_count": 113, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -948,7 +948,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -966,7 +966,7 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1045,7 +1045,7 @@ "0.204 5.652384 6.451211 27.153433 25.193958" ] }, - "execution_count": 115, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -1063,7 +1063,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -1142,7 +1142,7 @@ "5.100 103.319572 -0.913800 14.714856 -22.714157" ] }, - "execution_count": 116, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1162,7 +1162,7 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 32, "metadata": { "collapsed": true }, @@ -1181,7 +1181,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1964,7 +1964,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2001,7 +2001,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 34, "metadata": { "collapsed": true }, @@ -2020,7 +2020,7 @@ }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -2803,7 +2803,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2831,7 +2831,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -3614,7 +3614,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3650,7 +3650,7 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 37, "metadata": { "scrolled": false }, @@ -4435,7 +4435,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -4467,7 +4467,7 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 38, "metadata": { "collapsed": true }, @@ -4502,7 +4502,7 @@ }, { "cell_type": "code", - "execution_count": 124, + "execution_count": 39, "metadata": { "scrolled": false }, @@ -5287,7 +5287,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -5310,7 +5310,7 @@ }, { "cell_type": "code", - "execution_count": 125, + "execution_count": 40, "metadata": { "collapsed": true }, @@ -5324,7 +5324,7 @@ }, { "cell_type": "code", - "execution_count": 126, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -6107,7 +6107,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -6146,7 +6146,7 @@ }, { "cell_type": "code", - "execution_count": 127, + "execution_count": 42, "metadata": { "collapsed": true }, @@ -6166,7 +6166,7 @@ }, { "cell_type": "code", - "execution_count": 128, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -6209,7 +6209,7 @@ }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -6218,7 +6218,7 @@ "array(79.96465676395825)" ] }, - "execution_count": 129, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -6236,7 +6236,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 45, "metadata": { "collapsed": true }, @@ -6250,7 +6250,7 @@ }, { "cell_type": "code", - "execution_count": 131, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -6259,7 +6259,7 @@ "array(83.3427790462922)" ] }, - "execution_count": 131, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -6285,7 +6285,7 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 47, "metadata": { "collapsed": true }, @@ -6316,7 +6316,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -6324,7 +6324,7 @@ "output_type": "stream", "text": [ "45\n", - "Wall time: 319 ms\n" + "Wall time: 388 ms\n" ] }, { @@ -6333,7 +6333,7 @@ "array(109.07212101030548)" ] }, - "execution_count": 140, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -6351,7 +6351,7 @@ }, { "cell_type": "code", - "execution_count": 141, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -6402,7 +6402,7 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -7185,7 +7185,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -7221,7 +7221,7 @@ }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -7238,7 +7238,7 @@ "41.6031028639\n", "41.6034368143\n", "41.6027689135\n", - "Wall time: 3.23 s\n" + "Wall time: 4.36 s\n" ] } ], @@ -7255,7 +7255,7 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -7264,7 +7264,7 @@ "scipy.optimize.optimize.OptimizeResult" ] }, - "execution_count": 137, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -7282,7 +7282,7 @@ }, { "cell_type": "code", - "execution_count": 142, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -7296,7 +7296,7 @@ " x: 41.603102863878036" ] }, - "execution_count": 142, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -7332,7 +7332,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 54, "metadata": { "collapsed": true }, @@ -7357,7 +7357,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -7365,7 +7365,7 @@ "output_type": "stream", "text": [ "45\n", - "Wall time: 55.1 ms\n" + "Wall time: 83.2 ms\n" ] }, { @@ -7374,7 +7374,7 @@ "array(102.72237841710975)" ] }, - "execution_count": 145, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -7385,7 +7385,7 @@ }, { "cell_type": "code", - "execution_count": 146, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -7402,7 +7402,7 @@ "41.1364127407\n", "41.1367466842\n", "41.1360787972\n", - "Wall time: 483 ms\n" + "Wall time: 615 ms\n" ] } ], @@ -7433,7 +7433,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 83, "metadata": { "collapsed": true }, @@ -7444,7 +7444,7 @@ " system = make_system(condition)\n", " run_odeint(system, slope_func)\n", " \n", - " height_time = interp_inverse(system.results.y)\n", + " height_time = interp_inverse(system.results.x)\n", " ### WHAT DOES THIS EVEN MEEEAN\n", " t_wall = height_time(94.5)\n", " \n", @@ -7461,16 +7461,16 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(-6803.6791082726895)" + "array(11.025366370142653)" ] }, - "execution_count": 167, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -7488,55 +7488,12 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 85, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Before running scipy.integrate.odeint, I tried\n", - " running the slope function you provided with the\n", - " initial conditions in system and t=0, and I got\n", - " the following error:\n" - ] - }, - { - "ename": "KeyError", - "evalue": "94.5", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2441\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2442\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2443\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5280)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5126)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7471)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7415)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;31mKeyError\u001b[0m: 94.5", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Solution goes here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmax_bounded\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mheight_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m90\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcondition\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmax_bounded\u001b[1;34m(max_func, bounds, *args, **options)\u001b[0m\n\u001b[0;32m 229\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mmax_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 230\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 231\u001b[1;33m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmin_bounded\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmin_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 232\u001b[0m \u001b[1;31m# we have to negate the function value before returning res\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 233\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mres\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmin_bounded\u001b[1;34m(min_func, bounds, *args, **options)\u001b[0m\n\u001b[0;32m 194\u001b[0m the following error:\"\"\"\n\u001b[0;32m 195\u001b[0m \u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merror\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 196\u001b[1;33m \u001b[1;32mraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 197\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 198\u001b[0m \u001b[0munderride\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxatol\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1e-3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmin_bounded\u001b[1;34m(min_func, bounds, *args, **options)\u001b[0m\n\u001b[0;32m 187\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 188\u001b[0m \u001b[0mmidpoint\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbounds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 189\u001b[1;33m \u001b[0mmin_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmidpoint\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 190\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 191\u001b[0m msg = \"\"\"Before running scipy.integrate.odeint, I tried\n", - "\u001b[1;32m~\\Documents\\GitHub\\ModSimPy\\code\\modsim.py\u001b[0m in \u001b[0;36mmin_func\u001b[1;34m(*args)\u001b[0m\n\u001b[0;32m 227\u001b[0m \"\"\"\n\u001b[0;32m 228\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmin_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 229\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mmax_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 230\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 231\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmin_bounded\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmin_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mheight_func\u001b[1;34m(angle, condition)\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0minterpolate_range\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msystem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mheight\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msystem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m94.5\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 8\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mheight\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\series.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 599\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcom\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_apply_if_callable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 600\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 601\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_value\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 602\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 603\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mis_scalar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\numeric.py\u001b[0m in \u001b[0;36mget_value\u001b[1;34m(self, series, key)\u001b[0m\n\u001b[0;32m 317\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 318\u001b[0m \u001b[0mk\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_values_from_object\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 319\u001b[1;33m \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 320\u001b[0m \u001b[0mnew_values\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_values_from_object\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mseries\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 321\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\numeric.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 376\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 377\u001b[0m return super(Float64Index, self).get_loc(key, method=method,\n\u001b[1;32m--> 378\u001b[1;33m tolerance=tolerance)\n\u001b[0m\u001b[0;32m 379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 380\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mcache_readonly\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2442\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2443\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2444\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2445\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2446\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5280)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc (pandas\\_libs\\index.c:5126)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7471)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.Float64HashTable.get_item (pandas\\_libs\\hashtable.c:7415)\u001b[1;34m()\u001b[0m\n", - "\u001b[1;31mKeyError\u001b[0m: 94.5" - ] - } - ], + "outputs": [], "source": [ "# Solution goes here\n", - "res = max_bounded(height_func, [0,90], condition)" + "res = max_bounded(height_func2, [0,90], condition)" ] }, { @@ -7548,14 +7505,23 @@ }, { "cell_type": "code", - "execution_count": 62, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(11.045254540088495)" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "angle = res.x\n", - "height = height_func(angle, condition)\n", + "height = height_func2(angle, condition)\n", "height" ] }, @@ -7570,13 +7536,21 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 102, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# Solution goes here" + "# Solution goes here\n", + "def best_height(velocity, condition):\n", + " opt = max_bounded(height_func2, [0,90], condition)\n", + " \n", + " # y_vel = sin(opt.x) * velocity\n", + " # y_max = -(y_vel**2) / 19.6\n", + " \n", + " y_max = height_func2(opt.x, condition)\n", + " return y_max" ] }, { @@ -7588,11 +7562,20 @@ }, { "cell_type": "code", - "execution_count": 64, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(11.045254540088495)" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "best_height(40, condition)" ] @@ -7608,13 +7591,16 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 104, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# Solution goes here" + "# Solution goes here\n", + "def error_func(velocity, condition):\n", + " best = best_height(velocity, condition)\n", + " return abs(best-11)" ] }, { @@ -7626,11 +7612,20 @@ }, { "cell_type": "code", - "execution_count": 66, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.045254540088494721" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "error_func(40, condition)" ] @@ -7644,24 +7639,43 @@ }, { "cell_type": "code", - "execution_count": 67, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\ProgramData\\Miniconda3\\lib\\site-packages\\scipy\\optimize\\minpack.py:161: RuntimeWarning: The iteration is not making good progress, as measured by the \n", + " improvement from the last ten iterations.\n", + " warnings.warn(msg, RuntimeWarning)\n" + ] + } + ], "source": [ - "# Solution goes here" + "# Solution goes here\n", + "min_velocity = fsolve(error_func, 40, condition)" ] }, { "cell_type": "code", - "execution_count": 68, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 40.])" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Solution goes here" + "# Solution goes here\n", + "min_velocity" ] }, { @@ -7673,11 +7687,20 @@ }, { "cell_type": "code", - "execution_count": 69, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(11.045254540088495)" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "best_height(min_velocity, condition)" ] From b3a9402e67e96d89b553bc54baa0f33ec3f1f2d4 Mon Sep 17 00:00:00 2001 From: David Freeman <31573859+davidthefree@users.noreply.github.com> Date: Sun, 3 Dec 2017 19:35:13 -0500 Subject: [PATCH 23/24] "jousting" --- code/JOUST.ipynb | 139 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 code/JOUST.ipynb diff --git a/code/JOUST.ipynb b/code/JOUST.ipynb new file mode 100644 index 00000000..3c365e0c --- /dev/null +++ b/code/JOUST.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "from modsim import *" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "radian = UNITS.radian\n", + "m = UNITS.meter\n", + "s = UNITS.second\n", + "kg = UNITS.gram * 1000\n", + "degree = UNITS.degree" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "condition = Condition(rho_ash = 710 * kg/m**3,\n", + " #using european ash via Engineering Toolbox\n", + " rho_air = 1.225 * kg/m**3, \n", + " \n", + " knight_mass = 71 * kg,\n", + " pull_strength = 76 * kg,\n", + " strength = 744.8 * kg * m / s**2,\n", + " #RoyMurray\n", + " \n", + " \n", + " horse_mass = 500 * kg,\n", + " #via medievalwarefare.info\n", + " field_length = 36.6 * m,\n", + " lance_length = 3.04 * m,\n", + " #10 ft\n", + " #harmor_mass = 50 * kg, \n", + " #larmor_mass = 30 * kg, \n", + " lance_angle = 30 * degree,\n", + " max_speed = 13.4 * m / s)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "init = State(x=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_knight_1(condition):\n", + " x_init = 0\n", + " mass = horse_mass + knight_mass\n", + " \n", + " return (rho_ash, rho_air, knight_mass, strength, horse_mass, field_length, \n", + " lance_length, lance_Angle, max_speed, x_init)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def make_knight_2(condition):\n", + " x_init = field_length/2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "f_drag = -rho * v.mag * v * C_d * area / 2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From da2ed50d2200de7e5b4bc8a073206c54de4b3735 Mon Sep 17 00:00:00 2001 From: David Freeman <31573859+davidthefree@users.noreply.github.com> Date: Wed, 6 Dec 2017 13:48:29 -0500 Subject: [PATCH 24/24] i'm slergic tow rok --- code/JOUST.ipynb | 372 ++++++++++++++++++++++++++++++++++++++++-- code/chap11-fig01.pdf | Bin 16440 -> 16440 bytes code/chap11-fig02.pdf | Bin 16928 -> 16928 bytes code/chap11mine.ipynb | 265 ++++++++++++++++-------------- 4 files changed, 502 insertions(+), 135 deletions(-) diff --git a/code/JOUST.ipynb b/code/JOUST.ipynb index 3c365e0c..820bf5b5 100644 --- a/code/JOUST.ipynb +++ b/code/JOUST.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -24,14 +24,304 @@ "radian = UNITS.radian\n", "m = UNITS.meter\n", "s = UNITS.second\n", - "kg = UNITS.gram * 1000\n", + "g = UNITS.gram\n", + "kg = g*1000\n", "degree = UNITS.degree" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "rho_ash = 710 * kg/m**3\n", + " #using european ash via Engineering Toolbox\n", + "rho_air = 1.225 * kg/m**3\n", + " \n", + "knight_mass = 71 #* kg\n", + "pull_strength = 76 * kg\n", + "strength = 744.8 * kg * m / s**2\n", + " #RoyMurray\n", + " \n", + " \n", + "horse_mass = 500 #* kg\n", + " #via medievalwarefare.info\n", + "field_length = 36.6 * m\n", + "lance_length = 3.04 * m\n", + " #10 ft\n", + "heavy_armor = 50 #* kg, \n", + "medium_armor = 40 #* kg,\n", + "light_armor = 30 #* kg, \n", + "lance_angle = 30 * degree\n", + "max_speed = 13.4 * m / s\n", + "og_acceleration = 9.78 * m/s**2\n", + "og_armor_mass = 40 * kg" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "masses = Condition(heavy_armor = 50, \n", + " medium_armor = 40,\n", + " light_armor = 30, \n", + " knight_mass = 71,\n", + " horse_mass = 500,)\n", + " \n", + " \n", + "\n", + "def make_system(condition):\n", + " unpack(condition)\n", + " mass_light = knight_mass+horse_mass+light_armor\n", + " mass_medium = knight_mass+horse_mass+medium_armor\n", + " mass_heavy = knight_mass+horse_mass+heavy_armor\n", + " \n", + " return System(mass_light=mass_light, mass_medium=mass_medium, mass_heavy=mass_heavy)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
mass_light601
mass_medium611
mass_heavy621
\n", + "
" + ], + "text/plain": [ + "mass_light 601\n", + "mass_medium 611\n", + "mass_heavy 621\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mass_system = make_system(masses)\n", + "mass_system" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "angle_sweep = linspace(.8 * degree, 7.8 * degree, 35)\n", + "velocity_sweep = linspace(8 * m/s, 13.4 * m/s, 20)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "condition = Condition(heavy_armor = 50, \n", + " medium_armor = 30,\n", + " light_armor = 10, \n", + " knight_mass = 71,\n", + " horse_mass = 500,\n", + " angle_min = .8 * degree,\n", + " angle_max = 7.8 * degree,\n", + " velocity_min = 8 * m/s,\n", + " velocity_max = 13.4 * m/s)\n", + " \n", + " \n", + "\n", + "def make_system(condition):\n", + " unpack(condition)\n", + " \n", + " mass_light = knight_mass+horse_mass+light_armor\n", + " mass_medium = knight_mass+horse_mass+medium_armor\n", + " mass_heavy = knight_mass+horse_mass+heavy_armor\n", + " angle_sweep = linspace(.8 * degree, 7.8 * degree, 35)\n", + " velocity_sweep = linspace(8 * m/s, 13.4 * m/s, 20)\n", + " \n", + " \n", + " return System(mass_light = mass_light, mass_medium = mass_medium, mass_heavy = mass_heavy,\n", + " angles = angle_sweep, velocities = velocity_sweep)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
mass_light581
mass_medium601
mass_heavy621
angles[0.8 degree, 1.0058823529411764 degree, 1.2117...
velocities[8.0 meter / second, 8.284210526315789 meter /...
\n", + "
" + ], + "text/plain": [ + "mass_light 581\n", + "mass_medium 601\n", + "mass_heavy 621\n", + "angles [0.8 degree, 1.0058823529411764 degree, 1.2117...\n", + "velocities [8.0 meter / second, 8.284210526315789 meter /...\n", + "dtype: object" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "system = make_system(condition)\n", + "system\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def physics(system):\n", + " p1, p2, p3 = Series\n", + " p1 = mass_light * velocities\n", + " p2 = mass_medium * velocities\n", + " p3 = mass_heavy * velocities\n", + " \n", + " return p1, p2, p3" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'type' object is not iterable", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mphysics\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msystem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36mphysics\u001b[1;34m(system)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mphysics\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msystem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mp1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mp2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mp3\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSeries\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mp1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmass_light\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mvelocities\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mp2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmass_medium\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mvelocities\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mp3\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmass_heavy\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mvelocities\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: 'type' object is not iterable" + ] + } + ], + "source": [ + "physics(system)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "condition = Condition(rho_ash = 710 * kg/m**3,\n", @@ -47,17 +337,19 @@ " horse_mass = 500 * kg,\n", " #via medievalwarefare.info\n", " field_length = 36.6 * m,\n", - " lance_length = 3.04 * m,\n", + " lance_length = 3.5 * m,\n", " #10 ft\n", - " #harmor_mass = 50 * kg, \n", - " #larmor_mass = 30 * kg, \n", + " harmor_mass = 50 * kg, \n", + " larmor_mass = 30 * kg, \n", " lance_angle = 30 * degree,\n", - " max_speed = 13.4 * m / s)\n" + " max_speed = 13.4 * m / s,\n", + " og_acceleration = 9.78 * m/s**2,\n", + " og_armor_mass = 40 * kg)\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -68,7 +360,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "metadata": { "collapsed": true }, @@ -78,13 +370,14 @@ " x_init = 0\n", " mass = horse_mass + knight_mass\n", " \n", + " \n", " return (rho_ash, rho_air, knight_mass, strength, horse_mass, field_length, \n", " lance_length, lance_Angle, max_speed, x_init)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": true }, @@ -94,6 +387,65 @@ " x_init = field_length/2" ] }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mass = horse_mass + knight_mass + og_armor_mass\n", + "F_horse = mass * og_acceleration \n", + "\n", + "acceleration = F_horse / mass" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 7)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m7\u001b[0m\n\u001b[1;33m for mass in\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "def acceleration_sweep(condition):\n", + " og_mass = horse_mass + knight_mass + og_armor_mass\n", + " F_horse = og_mass * og_acceleration \n", + " \n", + " armor_array = linspace(larmor_mass, harmor_mass, 20)\n", + " \n", + " for mass in armor_array:\n", + " \n", + "\n", + " acceleration = F_horse / mass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/code/chap11-fig01.pdf b/code/chap11-fig01.pdf index ccbf4d72850e55a22c4e563af61890005e1313a0..c8a534c4cdb88e61bae4b6671c8f34fa2345dea3 100644 GIT binary patch delta 24 fcmdndz__D!P9p!PD3LLLsKJ5L-WlqZOvH#Y@i4U diff --git a/code/chap11mine.ipynb b/code/chap11mine.ipynb index 249c592f..55cdb7d3 100644 --- a/code/chap11mine.ipynb +++ b/code/chap11mine.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": { "collapsed": true }, @@ -70,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": { "collapsed": true }, @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": { "collapsed": true }, @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "collapsed": true }, @@ -157,7 +157,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -212,7 +212,7 @@ "dtype: object" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -224,7 +224,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -275,7 +275,7 @@ "dtype: object" ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -299,7 +299,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "collapsed": true }, @@ -333,7 +333,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -344,7 +344,7 @@ " )" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -362,7 +362,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": { "collapsed": true }, @@ -380,7 +380,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -453,7 +453,7 @@ "130.0 1300.0 49.597074 0.056303" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -471,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": { "collapsed": true }, @@ -498,14 +498,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -528,14 +528,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nA6ef1MpfzGxDAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -558,14 +558,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -588,14 +588,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -619,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -633,7 +633,7 @@ "data": { "image/png": "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\nBSA3N5e5c+dSVlbGQw89RHZ2Nk6n06eyqKurY8SIEWzZsoXdu3eTmprK8uXLcblcPpXDrXpbd2tr\nKwEBAbp+s9mMyWTy2mwuXbrE0qVLGTFiBEuWLAE8LwePeljTYBgyZAjd3d10dXVx773/xNXR0UFg\nYOAgzmxgVFRU4HA4yMjIYNWqVQAEBATQ2dmpG+eNeVRWVnL69GkOHjx4235fyQHQCuQXXniBmTNn\nAjBx4kROnjzJ7t27fSaL+vp6HA4Hu3btIi4uDoDi4mIyMjLYvn27z+TQU2/rHjJkCB0dHbr+zs5O\nlFJYLJYBm+dAqa+vZ9GiRbS1tbFjxw6GDRsGeF4OUiD0YvTo0cCNp13dfA/Q0tJi2KXmbT766CNK\nSkrIysoiPz9fOw9h9OjRtLS06MZ6Yx4VFRU0NzeTmpoKgPr7sSWLFy/mqaee8pkc4J/doOPHj9fa\nTCYTDz74IA0NDT6TxalTp7h+/ToxMTFam9lsJioqirq6Op/Joafe1h0eHm647PHmeG/L5ueff2bx\n4sUEBwezZ88e3e+Gp+Ughxh6ERkZSVBQECdOnNDaGhoauHjxIomJiYM4s/71ySefUFJSwvLly3E4\nHFpxAJCQkEBNTY1u/PHjx3nkkUcGepr96r333uPQoUPs37+f/fv3U1ZWBsBbb73FihUrfCYHgOjo\naCwWCz/99JPWppTC6XQyduxYn8kiPDwcgDNnzmhtN3N44IEHfCaHnnpbd0JCAvX19brj7MePHyco\nKIjIyMgBnWt/cjqdLFy4kDFjxrBr1y5dcQAemMOgXkPhIdatW6eSk5PV119/rd0HoeclPd7kl19+\nUVFRUWr16tWqpaVF97p27Zr69ddfVXR0tNqwYYM6e/asKikpUVarVXdZpDdqamrSXeboazmsX79e\nJSYmqi+//FKdP39evf3228pqtSqn0+kzWXR1dal58+apJ598UtXU1KizZ88qh8Oh4uLiVENDg8/k\nkJWVpbu8r7d1d3d3q3nz5qlnnnlGnTp1Srv+f+PGjYO1hD7RM4c5c+ao1NRUde7cOd3fTbfbrZTy\nvBykQLgLnZ2d6t1331WTJ09W8fHxasWKFdp/uDcqLi5W48ePv+3rww8/VEopdfToUZWRkaFiYmLU\nrFmz1LfffjvIs+5/PQsEpXwrh+7ubvXxxx8rm82mYmJi1Ny5c1VNTY3W7ytZuN1ulZeXp6ZNm6YS\nEhJUdna2On36tNbvCzn0/GFUqvd1t7S0qBdffFE9/PDDKjk5WRUXF6vr168P5LT73K05nDt37o5/\nN6dPn65t40k5mJT6+8CqEEIIIcTf5BwEIYQQQhhIgSCEEEIIAykQhBBCCGEgBYIQQgghDKRAEEII\nIYSBFAhCCCGEMJBbLQshDHJzc6msrPzXMTcf7+vn58f27dsHYFY3OBwOwsPDeemll3odW1dXx8KF\nC6msrGT48OEDMDshvIfcB0EIYfDbb79x6dIl7fObb76Jn58f+fn5WtvQoUOBG89kiIiIGJB5ffPN\nNzgcDr744gvDU/HupLCwELfbTVFRUT/PTgjvInsQhBAG48aNY9y4cdrnoUOH4ufnpz3BcDAopVi7\ndi05OTl3XRwALFq0CJvNRnZ2NtHR0f04QyG8i5yDIIT4vz333HPk5ORonydMmMBnn33Ga6+9xqRJ\nk0hKSqK0tJSrV6+yevVqEhISSElJYd26ddy68/Ly5cvk5+czdepUYmNjefbZZzl58qTuu6qrq3E6\nnWRkZGhtbW1trFmzhrS0NGJiYpgxYwZbt27VbRcaGkpSUhKbN2/unxCE8FJSIAgh+lRhYSEhISFs\n2rSJ9PR0PvjgAzIzMwkMDKS0tJTHH3+csrIyvvrqKwDa29vJycmhurqalStXsnHjRoKDg8nJyeHH\nH3/U/t2qqiri4+MJCwvT2t555x2OHTtGbm4uW7du5bHHHqOoqMhw/oTdbufIkSP89ddfAxOCEF5A\nDjEIIfpUdHQ0eXl5wI3HpVdUVBAaGsrrr78OQFJSElVVVfzwww/Y7XYOHDjAmTNn2Lt3L1arFYC0\ntDQyMzNZv34927ZtA+D7779n9uzZuu86ceIEKSkp2l6FKVOmYLFYCAkJ0Y2zWq10dnZSW1tLampq\nv65fCG8hBYIQok/FxsZq70NCQvDz89O1mUwmgoODuXLlCgDfffcdo0aNIioqiq6uLm1ceno6mzdv\npqOjg66uLtxuN/fff7/uu6ZMmcKePXtwuVzYbDZsNtttr24YM2YMABcvXuzTtQrhzaRAEEL0qaCg\nIEObxWK54/g//vgDl8t1xxMIL1++rL0PDAzU9eXl5REeHs7BgwcpKCigoKCASZMmsWbNGiIjIw3b\n/fnnn/9pLUL4MikQhBCDatiwYURERFBYWHjb/lsPF9zc63CTv78/y5YtY9myZTQ2NnL06FE2bdrE\nqlWrqKqqMmzX89CDEOLO5CRFIcSgSkxMpLGxkZEjR2K1WrXX4cOH+fTTTzGbzfj7+xMWFkZzc7O2\nXXt7O3a7nfLycgDuu+8+5s+fzxNPPEFTU5PuO1wulzZGCHF3ZA+CEGJQPf300+zYsYMFCxawdOlS\nRo0aRXV1Ndu2bePll1/GZDIBkJKSorv0MSAggNjYWEpLSzGbzUyYMIHz589TWVmJ3W7XfUdtbS0W\ni4X4+PgBXZsQnkwKBCHEoAoKCmLnzp0UFxezdu1arl27xtixY3E4HGRlZWnj7HY7r7zyCm63m9DQ\nUODGHR5DQkIoLy/n999/JzQ0lMzMTF599VXddxw7dgybzfafbrAkhK+TWy0LITyCUopZs2Yxc+ZM\nlixZctfbNTY2Mn36dPbt28fEiRP7cYZCeBc5B0EI4RFMJhMrV65k586dtLa23vV25eXlzJgxQ4oD\nIf4jKRCEEB4jPT2dlJQUw+2U7+TChQscOXJEu0mTEOLuySEGIYQQQhjIHgQhhBBCGEiBIIQQQggD\nKRCEEEIIYSAFghBCCCEMpEAQQgghhIEUCEIIIYQw+B/PcvlKSWMYEgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -667,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -676,7 +676,7 @@ "array(125.33333334940457)" ] }, - "execution_count": 18, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -696,7 +696,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -705,7 +705,7 @@ "array(55.00000000448797)" ] }, - "execution_count": 19, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -724,7 +724,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -733,7 +733,7 @@ "array(1253.3333334940455)" ] }, - "execution_count": 20, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -759,7 +759,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -778,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "metadata": { "collapsed": true }, @@ -802,7 +802,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "metadata": { "collapsed": true }, @@ -843,7 +843,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -921,7 +921,7 @@ "dtype: object" ] }, - "execution_count": 24, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -933,7 +933,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -984,7 +984,7 @@ "dtype: object" ] }, - "execution_count": 25, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1002,7 +1002,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -1031,7 +1031,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -1046,7 +1046,7 @@ "" ] }, - "execution_count": 27, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1064,7 +1064,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1079,7 +1079,7 @@ "" ] }, - "execution_count": 28, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -1097,7 +1097,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -1133,7 +1133,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1144,7 +1144,7 @@ " )" ] }, - "execution_count": 30, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1162,7 +1162,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -1180,7 +1180,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1253,7 +1253,7 @@ "180.0 554.473940 7.373066 20.796665" ] }, - "execution_count": 32, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1271,7 +1271,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": { "collapsed": true }, @@ -1291,14 +1291,14 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nUF2tUFWtoKuqRqur1v+p1VVTqa2iUlvzZ4WuioqKKjSVOjSVNX+WV+go1+jq3Iq1scxNTXC0t8TR\n3hIneyucHGqSRhc7S8xkuXMhRCtrdwnkzJkzlJaWEhkZqS/z9vbGy8uLpKSkRiWQnIIyfjp6leKy\nmj4ERYFqRdH/eTNxKE14Kmgqa0szHGwt9D9d7CxrfmwtsJUnCiFEG9LuEkhWVhYA7u7uBuVqtVpf\n11DHU3PJzC9tttjuxNREhY2VOTZWZthYmmFrbY6djQW2VubY2dT82NtYyJOEEKLdaHcJpLy8HBMT\nE8zNDUcOWVhYUFFR0ajX6tG1C+evFqHV3bl5yUSlwtREhZmZCeZmJpiZ1vxpbmaKuZkJluYmWJib\nYmluiqWFKVYWZvo/rS3NsLYyw8LMRJ4ehBAdSrtLIFZWVlRXV6PT6TAzuxV+ZWUl1tbWjXotf29H\nfD3sb82XUKkwUdUkDJWJSp84ZG0nIYSord0lEE9PTwByc3P1/w2Qk5NTq1mrIWqeImTFWCGEaKx2\nl0CCgoKwtbXl0KFDREdHA3DlyhWuXr3KwIED67ymqqrmCaOxfSRCCNGZ3fzMvPkZ+nvtLoFYWFjw\n5JNP8te//hUnJydcXFz4y1/+QmRkJKGhoXVek5ubC8DUqVNbM1QhhOgQcnNz6datW61yldKaY1Sb\niU6n45133iEhIQGdTqefie7s7Fzn+RqNhpSUFNzc3DA1leYqIYRoiKqqKnJzc+nXrx9WVla16ttl\nAhFCCGF8MulACCFEk0gCEUII0SSSQIQQQjSJJBAhhBBNIglECCFEk3TaBFJVVcW7775LVFQUYWFh\nvPDCC+Tl5Rk7rHYtLS2NwMDAWj9JSUkA7N+/n+joaIKDg5k4cSKJiYlGjrj9WbJkCQsXLjQou9t9\nzc/PZ86cOURERDBkyBDi4uLQ6Rq3OVlnUtc9fuyxx2r9vb79nE57j5VOauXKlcrQoUOV/fv3Kykp\nKcqUKVOU//7v/zZ2WO3a9u3blUGDBik5OTkGP5WVlUpqaqrSr18/5YMPPlDS0tKUlStXKn379lXO\nnTtn7LDbherqauX9999XevXqpbz++uv68obc1yeeeEJ58sknldOnTyt79+5VBg8erLz33nvGeBtt\nWn33uLq6WgkJCVG+/fZbg7/XxcXF+nM66z3ulAmkoqJCCQsLU7766it9WUZGhtKrVy8lOTnZiJG1\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1321,14 +1321,14 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nGHt7e5KTk/Hw8CAwMLBIH/b555+TkZF3g0hCQgKDBg3i448/pmXLlkV6LyHEQ8pKgr9XQdJR03Gv\nluqdunK1bxM0h//mzZuZNWsW169fN455eXnx1ltvGbt/Psi9SzvLlStnHPf0lL08hTCrOxutXFwH\nuel5404e8NgQqFjfcrWJEqcp/Hft2sWECRNo06YNYWFheHl5ER8fz7Zt23j//fepUKGCbOEoRGmW\ncVXdaCX5jOm4d1uo2kdW8tggTeEfHh5Oz549+eyzz0zGe/fuzfjx4/n6668fKvx9fX05c+bMg58o\nhHg4igHifoTYLaDc1aCxXGW19XKFWparTViUppu8zp49S1hYWIHHwsLCiIqKKvCYEMKCUmPgxKdw\ncf1dwa8D307qfroS/DZN05V/5cqVuXr1aoHH4uLicHZ2LtaihBCPIDcTLm1Vr/hR8sadA6D6ULUT\np7B5msK/Xbt2zJ07lzp16lC/ft6XQsePH2fevHm0b9/ebAUKIYog6QT8vRKy8hZmoHME/zDwfUYa\nsQkjTeE/evRofvvtN/r160e1atWoXLkyCQkJxMTE8NhjjzFu3Dhz1ymEuJ/sW2qv/XtbM7jVhqDB\noPe2TF2i1NIU/u7u7mzYsIH169dz6NAhbt68Sd26dRk6dCh9+vSRaR8hLEVRIOEXuLgBctPyxu1d\n1DX7Xi1kdy1RIM3r/PV6PYMGDWLQoEHmrEcIoVXaJXWKJ+WerrqeT6qtGRzdLFOXsAqFhv/kyZM1\nv4lOp5PWDEKUlNxMuPR/t7/QNeSNl6ustmZwr2ux0oT1KDT89+/fr/lNdPJnpRAl48ZRtR9PVmLe\nmM4e/DpDlW5g52i52oRVKTT89+zZU5J1CCHuJ/O6Gvp3b6cI4BasXu07+1mmLmG1itTYLTMzk8jI\nSK5evUqrVq1IT0/H11c2bxbCbAw5ELcLLm0zvUPXwRWq9gOv5vKFrngomsN/5cqVfPnll9y6dQud\nTse6dev48ssvycrKYtGiRZQvL50AhShWN0/BhdWQEW86Xrk1VH0WHFwsU5coEzS1d1i3bh0ff/wx\nzz77LMuXLzf24e/Xrx/Hjh1j/vz5Zi1SCJuSdQPOLoYzc02D3zkA6k1Q1+1L8ItHpOnKf+nSpYwY\nMYLx48eTm5trHO/UqRPx8fEsW7aMCRMmmK1IIWyCIQfidsPlbWDIzBu300NAL/BpBzpN12tCPJCm\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1351,14 +1351,14 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1381,7 +1381,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1395,7 +1395,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1446,7 +1446,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 94, "metadata": { "collapsed": true }, @@ -1472,7 +1472,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 95, "metadata": { "collapsed": true }, @@ -1513,7 +1513,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 96, "metadata": {}, "outputs": [ { @@ -1591,7 +1591,7 @@ "dtype: object" ] }, - "execution_count": 40, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -1603,7 +1603,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 97, "metadata": {}, "outputs": [ { @@ -1659,7 +1659,7 @@ "dtype: object" ] }, - "execution_count": 41, + "execution_count": 97, "metadata": {}, "output_type": "execute_result" } @@ -1689,10 +1689,8 @@ }, { "cell_type": "code", - "execution_count": 63, - "metadata": { - "collapsed": true - }, + "execution_count": 107, + "metadata": {}, "outputs": [], "source": [ "# Solution goes here\n", @@ -1700,10 +1698,7 @@ " theta, omega, y, v = state\n", " unpack(system)\n", " \n", - " #if y <= 0:\n", - " # r = 0\n", - " #else:\n", - " # r = sqrt((2*k*y) + Rmin**2)\n", + "\n", " \n", " \n", " r = sqrt((2*k*y) + Rmin**2)\n", @@ -1712,7 +1707,10 @@ " a = -(mass*g*r**2)/Istar\n", " alpha = mass*g*r/Istar\n", "\n", - " return r, T, a, alpha" + " if y <= 0:\n", + " return 0 * radian/sec, 0 * radian/sec**2, 0 * meter/second, 0 * meter/second**2\n", + " else:\n", + " return omega, alpha, v, a" ] }, { @@ -1724,21 +1722,22 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 108, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "(,\n", - " ,\n", - " ,\n", - " )" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" + "ename": "ValueError", + "evalue": "Cannot compare Quantity and ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mslope_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msystem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minit\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msystem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36mslope_func\u001b[1;34m(state, t, system)\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[0malpha\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmass\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mr\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mIstar\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m<=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mradian\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0msec\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mradian\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0msec\u001b[0m\u001b[1;33m**\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mmeter\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0msecond\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mmeter\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0msecond\u001b[0m\u001b[1;33m**\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pint\\quantity.py\u001b[0m in \u001b[0;36m\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 923\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 924\u001b[0m \u001b[0m__lt__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompare\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0moperator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlt\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 925\u001b[1;33m \u001b[0m__le__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompare\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0moperator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mle\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 926\u001b[0m \u001b[0m__ge__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompare\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0moperator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mge\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 927\u001b[0m \u001b[0m__gt__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompare\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0moperator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgt\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Miniconda3\\lib\\site-packages\\pint\\quantity.py\u001b[0m in \u001b[0;36mcompare\u001b[1;34m(self, other, op)\u001b[0m\n\u001b[0;32m 912\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_convert_magnitude_not_inplace\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mUnitsContainer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 913\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 914\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Cannot compare Quantity and {0}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 915\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 916\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_units\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_units\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: Cannot compare Quantity and " + ] } ], "source": [ @@ -1754,7 +1753,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 100, "metadata": { "scrolled": false }, @@ -1772,7 +1771,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 101, "metadata": {}, "outputs": [ { @@ -1805,53 +1804,53 @@ " \n", " \n", " 0.96\n", - " 0.008946\n", - " 408.869682\n", - " -0.230606\n", - " 120.404961\n", + " 79.148555\n", + " 152.914392\n", + " -0.163705\n", + " -2.052485\n", " \n", " \n", " 0.97\n", - " 0.008990\n", - " 413.619000\n", - " -0.233620\n", - " 121.088588\n", + " 80.681953\n", + " 153.757140\n", + " -0.184254\n", + " -2.057147\n", " \n", " \n", " 0.98\n", - " 0.009033\n", - " 418.372609\n", - " -0.236548\n", - " 121.762717\n", + " 82.223526\n", + " 154.548429\n", + " -0.204846\n", + " -2.061233\n", " \n", " \n", " 0.99\n", - " 0.009076\n", - " 423.130393\n", - " -0.239392\n", - " 122.427454\n", + " 83.772733\n", + " 155.283077\n", + " -0.225476\n", + " -2.064733\n", " \n", " \n", " 1.00\n", - " 0.009118\n", - " 427.892240\n", - " -0.242155\n", - " 123.082906\n", + " 85.328977\n", + " 155.954552\n", + " -0.246139\n", + " -2.067640\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " theta omega y v\n", - "0.96 0.008946 408.869682 -0.230606 120.404961\n", - "0.97 0.008990 413.619000 -0.233620 121.088588\n", - "0.98 0.009033 418.372609 -0.236548 121.762717\n", - "0.99 0.009076 423.130393 -0.239392 122.427454\n", - "1.00 0.009118 427.892240 -0.242155 123.082906" + " theta omega y v\n", + "0.96 79.148555 152.914392 -0.163705 -2.052485\n", + "0.97 80.681953 153.757140 -0.184254 -2.057147\n", + "0.98 82.223526 154.548429 -0.204846 -2.061233\n", + "0.99 83.772733 155.283077 -0.225476 -2.064733\n", + "1.00 85.328977 155.954552 -0.246139 -2.067640" ] }, - "execution_count": 66, + "execution_count": 101, "metadata": {}, "output_type": "execute_result" } @@ -1869,10 +1868,8 @@ }, { "cell_type": "code", - "execution_count": 67, - "metadata": { - "collapsed": true - }, + "execution_count": 102, + "metadata": {}, "outputs": [], "source": [ "thetas = system.results.theta\n", @@ -1888,14 +1885,14 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 103, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nCgYQERGF4gusi8LJSOJMUgAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1918,14 +1915,14 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 104, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAERCAYAAABGhLFFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlclOX+//HXDPsm4MLuigsKIiCg5pKJ2nIyzfScXDLt\ncI5lauZSlmZamaFmllaWW6lllrm2nDLT3BcEV8BdEZBV9m0YZn5/8HNqvoCBzjCDfJ6PBw+7r7mG\ned9o94f7vq/7uhRarVaLEEIIYWBKUwcQQghxf5ICI4QQwiikwAghhDAKKTBCCCGMQgqMEEIIo5AC\nI4QQwigsTR3g78yZM4fy8nLmz59fbZ8zZ84wf/584uPjcXd3Z8KECQwZMuSO37ekpISzZ8/SrFkz\nLCwsDB1bCCHuS+Xl5WRkZBAQEICtre0d+5ptgdFqtXz00Uds2rSJYcOGVdvv1q1bREZG8vjjjzN/\n/nwOHTrErFmzaNq0Kb169ar2fWfPnmXUqFHGiC6EEPe9r776itDQ0Dv2McsCc+PGDV5//XUuXryI\nl5fXHft+9913ODo6MmvWLJRKJb6+vsTFxbFmzZo7FphmzZoBFT8kDw8Pg+YXQoj7VWpqKqNGjdId\nQ+/ELAtMTEwMnp6eLFmyhKlTp96xb3R0NGFhYSiVf95OCg8PZ968eWi1WhQKRZXvu31ZzMPDAx8f\nH8OFF0KIBqAmtxbMssAMHjyYwYMH16hvamoqnTp10mtzc3OjuLiY7OxsGjduXKvP/j7ue06lneJJ\nvycJ9gyu1XuFEEL8qd6PIispKcHa2lqv7fa2SqWq3fdSl/Dr5V9JK0hjdexq0grSDJZTCCEamnpf\nYGxtbSsVktvbdnZ2tftelra0dGkJQFl5GV+c/AKNVmOYoEII0cDU+wLj4eFBRkaGXlt6ejr29vY4\nOTnV+vuN6TIGpaLix3Il+wq7r+w2SE4hhGho6n2B6dq1K9HR0fx11YGjR48SEhKid+O/pnwa+fCP\n9v/QbW8/v10ulQkhxF2odwVGpVKRkZGhuww2bNgwbt26xZtvvsnly5dZv349P/zwA5GRkXf9GY+2\nfZTmzs0BuVQmhBB3q94VmNjYWHr16kVsbCwATZs2ZdWqVcTFxTFkyBA2bNhAVFQUPXr0uOvPsFBa\nMDZoLBbKimF4V7KvsOvyLoPkF0KIhsIshyn/1fr16/W2u3Xrxvnz5/XagoKC2Lx5s0E/16eRD4+3\nf5ztCdsB2HF+B53dO+PldOcHP4UQQlSod2cwdemRto/oRpWpNWrWxq6lXFNu4lRCCFE/SIG5A6VC\nybigcVgqK070EnMT+fnSzyZOJYQQ9YMUmL/h6eTJYL8/ZxX48cKPJOYmmjCREELUD1JgaqB/m/74\nNvYFQKPVsCZ2DWXlZSZOJYQQ5k0KTA3cvlRmY2kDwM38m2xL2GbiVEIIYd6kwNRQM4dmDOv057o0\nu6/u5kLWBRMmEkII8yYFphZ6t+iNv5s/ULEg2hcnv6BEXWLiVEIIUb358+fzj3/8Q68tMTGRDh06\nEB8fb9TPlgJTCwqFgjFdxmBvZQ9AVlEWm85uMnEqIYSo3pNPPsmlS5eIi4vTte3YsQM/Pz86duxo\n1M82+wctzY2LrQujAkex8sRKAA7dOESge6CsHSNEA7Lr8i52XthJqbq0zj/bxtKGQe0HMcB3QI36\nd+rUiQ4dOrBjxw7d2lk7duxg5MiRxowJyBnMXQn1CiXcO1y3vf70enJLck2YSAhRl3Zd2WWS4gJQ\nqi5l15XaTV01dOhQfvjhBzQaDbGxsSQnJzNo0CAjJfyTFJi7NKLzCFztXAEoVBXy5akv9WZ0FkLc\nvwa0GaAbVVrXbCxtGNCmZmcvtw0aNIjs7GyOHj3Kjh076NOnD02aNDFSwj/JJbK7ZG9lz3PBz7Hk\n8BK0Wi3n0s+x99peHmr9kKmjCSGMbIDvgBpfojIHTZo0oU+fPvz666/s3r2b2bNn18nnyhnMPWjf\npL3ebxLfx39PSn6KCRMJIUTVhg4dypYtWygtLaVv37518plSYO7RYL/B+DTyASrWjlkdsxq1Rm3i\nVEIIoa9v377Y2try+OOPY21tXSefKQXmHlkqLfl3yL+xsrACICkvia3xW02cSggh9BUUFFBYWMjQ\noUPr7DOlwBiAl5OX3lP+v135jfgM4z7AJIQQNZGdnc0vv/zC66+/TkBAAP7+/nX22VJgDOTBlg8S\n4Bag2157ci35pfkmTCSEEKBWq5k1axbXr19n/vz5dfrZUmAMRKFQ8GzQszjZOAGQW5LLulPrZOiy\nEMKkmjVrRnR0ND/99BO+vr51+tlSYAyokU0jxgaN1W2fTjvN3mt7TZZHCCFMSQqMgQW4BRDRJkK3\nvTluM0l5SSZMJIQQpiEFxgiGdhxKc+fmAKg1albFrEJVrjJxKiGEqFtSYIzAUmlJZEgk1hYVY81v\n5t/k23PfmjiVEELULbMsMOXl5bz//vv06tWL4OBgJk+eTGZmZrX9Dx8+zLBhwwgKCqJ///6sXLnS\n5DfXPRw9eDrgad32/uv7iU6JNmEiIYSoW2ZZYJYtW8bWrVuJiopiw4YNpKamMmnSpCr7Xr9+neef\nf56+ffuyc+dOpk+fzscff8zXX39dx6kre6D5A4R5h+m2159aT2ZR9YVSCCHuJ2ZXYFQqFevWrWPq\n1Kn07NkTf39/lixZQkxMDDExMZX679+/H1tbWyZOnEjz5s155JFHePDBB9m/f78J0utTKBSM6jyK\npvZNAShRl7DyxEqZSkYI0SCYXYFJSEigsLCQ8PA/11vx8fHB29ub6OjKl5gaN25MTk6Obq2DCxcu\nEB0dTUBAQKW+pmBnZcd/uv4HpaLiR30t5xrbEraZOJUQQhif2RWY1NRUANzd3fXa3dzcdK/91cCB\nAxk2bBjTp08nICCAQYMGERYWxoQJE+okb020cmnF0I5/zv+z6/IuTqedNmEiIYQwPrMrMMXFxSiV\nSqysrPTara2tKS2tvIJcXl4eycnJREZGsnnzZqKiojh06BDLly+vq8g10r9Nfzq7d9Ztf3HyC7KL\ns02YSAghjMvsCoytrS0ajQa1Wv8+hUqlws7OrlL/xYsXY2FhwfTp0+nUqRNDhgzhlVde4fPPPyc7\n23wO4AqFgnFB4/RWwVwZs5JyTbmJkwkhhHGYXYHx9PQEICMjQ689PT290mUzgFOnTlW639KlSxfK\nysq4efOm8YLeBQdrB/4T8uf9mMu3Lsv9GCHEfcvsCoyfnx8ODg4cO3ZM15aUlERycjJhYWGV+nt4\neHD+/Hm9tosXL6JUKmnRooXR89aWb2NfhvgN0W3/evlXuR8jhLgvmV2Bsba2ZuTIkSxcuJB9+/Zx\n7tw5pk6dSnh4OEFBQahUKjIyMlCpKqZeGTNmDHv37uWTTz7hxo0b7NmzhwULFjBy5EgcHR1NvDdV\nG+g7UH9q/9i1ZBVlmTCREEIYntkVGIApU6YwaNAgZsyYwZgxY/Dy8uLDDz8EIDY2ll69ehEbGwvA\ngw8+yPLly/ntt9944oknePfdd/nXv/7FzJkzTbkLd6RQKHgu+Dnd/ZiisiI+P/G5PB8jhLivKLSm\nnlPFRJKSkoiIiGD37t34+PiYJMOV7CssPrRYd6P/odYP6U0vI4QQ5qY2x06zPINpKNq4tuGpjk/p\ntvdc3cPx5OMmTCSEEIYjBcbE+rXuR4hniG573al1pOSnmDCREEIYhhQYE7u91LK7Y8UQbFW5ihXR\nKyhRl5g4mRBC3BspMGbA1tKW50Of160fk1aQxpcnvzT5kgNCCHEvpMCYCS8nL0YHjtZtx9yMYdeV\nXSZMJIQQ90YKjBnp5tONvq366ra3xG/hfOb56t8ghBBmTAqMmRnuP5w2rm0A0Gq1rIxZKZNiCiHq\nJSkwZsZSacn40PE0smkEQH5pPiuiV8hDmEKIekcKjBlysXXhv13/q7dI2ddnvpab/kKIekUKjJlq\n16QdwzoN020fTDzI/kTTLwMthBA1JQXGjPVr3Y9uPt1029+c/YbLty6bMJEQQtScFBgzplAoGB04\nmubOzQEo15SzInoFOSU5Jk4mhBB/TwqMmbO2sOaF0BdwsHYAIK80j0+Pf0pZeZmJkwkhxJ1JgakH\nmtg3qXTTf8PpDXLTXwhh1qTA1BN+Tf0Y7j9ct30k6Qi7r+42YSIhhLgzKTD1yEOtHqJni5667c1x\nmzmXfs6EiYQQonpSYOoRhULByM4jKz3pn1aQZuJkQghRmRSYesZSacnzoc/jYusCQHFZMcuPLaeo\nrMjEyYQQQp8UmHrI2daZCWETsLKwAiC9MJ3PT3yORqsxcTIhhPiTFJh6qqVLS8YFjdNtx2fE8+25\nb02YSAgh9EmBqce6enXl8faP67b3XN3D3mt7TRdICCH+QgpMPfd4+8fp6tVVt73p7CYZWSaEMAtm\nWWDKy8t5//336dWrF8HBwUyePJnMzMxq+6empjJ58mSCg4Pp0aMHc+fOpbi4uA4Tm45CoWBs0Fha\nubQCQKPV8PmJz7mZf9O0wYQQDZ5ZFphly5axdetWoqKi2LBhA6mpqUyaNKnKviqVinHjxpGTk8PG\njRv54IMP2Lt3L4sWLarj1KZjbWHNhLAJuNq5AlCiLmH5seXkl+abOJkQoiEzuwKjUqlYt24dU6dO\npWfPnvj7+7NkyRJiYmKIiYmp1H/nzp1kZGSwbNky/Pz86N69O5MmTeL06dMmSG86zrbOvBj2IjaW\nNgBkFmXyyfFPZM4yIYTJ1KrAXL9+nUOHDvHLL79w7Ngxbty4YfBACQkJFBYWEh4ermvz8fHB29ub\n6OjoSv0PHDjAAw88gLOzs67tqaeeYvPmzQbPZu6aOzfn38H/RqFQAHAl+wprT66VOcuEECZh+Xcd\nMjMzWbt2LT/88APp6el6ByuFQkGLFi14+OGHGTNmDE2bNr3nQKmpqQC4u7vrtbu5uele+6tr167R\nvXt3li5dyo4dO1AoFAwcOJApU6ZgY2Nzz3nqmy4eXRjeabhuyPKJlBM0s2/Gkx2fNHEyIURDU22B\nKS8v5+OPP2bVqlX4+PgwdOhQAgIC8Pb2xt7entzcXNLS0jhx4gR79uxh3bp1PPvss0ycOBErK6u7\nDlRcXIxSqaz0PaytrSktLa3Uv6CggM2bN9OnTx8+/PBD0tLSePvtt8nKymLhwoV3naM+69e6HxlF\nGey5ugeA/136H03tm9K7ZW8TJxNCNCTVFphhw4bRokULNm3aRMeOHavs07lzZ/r378+rr77KiRMn\nWL16NcOHD2fbtm13HcjW1haNRoNarcbS8s94KpUKOzu7yjtgaYmzszMLFy7EwsKCzp07o1areeml\nl3jttddwdXW96yz1lUKh4J/+/ySzKJMzaWcA+PrM17jauRLgFmDidEKIhqLaAjNr1ixCQ0Nr/I26\ndu1K165dOXbs2D0F8vT0BCAjI0P33wDp6emVLptBxaU0GxsbLCwsdG1t27YFIDk5uUEWGAClQsl/\nQv7D4kOLScxN1A1fnv7AdFo4tzB1PCFEA1DtTf7aFJe/+uvN+bvh5+eHg4ODXqFKSkoiOTmZsLCw\nSv1DQ0OJj4+nrOzP0VIXLlzAwsICb2/ve8pS39lY2jAxfCKN7RoDUKouZdnRZWQVZZk4mRCiIfjb\nm/y3nTt3jpMnT5KfX/nZCoVCwfjx4w0SyNrampEjR7Jw4UJcXV1p0qQJ8+bNIzw8nKCgIFQqFbm5\nuTg7O2Ntbc3TTz/N+vXrefXVV3nxxRdJS0tj0aJFDB48uMGevfyVs60zk7tNJupgFMVlxeSV5rHs\n2DJmPDBDtwyzEEIYQ40KzJdffsl7771X7XBXQxYYgClTpqBWq5kxYwZqtZrevXszZ84cAGJjYxkz\nZgzr1q2jW7duNG3alK+++ooFCxYwdOhQ7O3teeKJJ5g2bZrB8tR3nk6eTAibwIdHPkStUXMz/yYf\nH/+Yl7u/rJuRWQghDE2hrcFDEn379iUwMJC33noLFxeXushldElJSURERLB79258fHxMHadORKdE\ns/LESt12sGcw/+36X5QKs3veVghhpmpz7KzRkSU3N5dRo0bdN8WloQr1CmW4/3DdduzNWL45+408\niCmEMIoaFZhevXrd8+gwYR76t+lP/zb9ddt/XPuDHy/+aMJEQoj7VY3uwcyZM4cxY8aQkpJC586d\nsbe3r9RnyJAhBg8njGNYp2HkluZyPPk4ADvP76SRTSP6tOxj4mRCiPtJjQrMnj17SExM5OrVq2zd\nurXS6wqFQgpMPXJ7iv8CVQHxGfFAxYOYjtaOhHiGmDidEOJ+UaMC8/HHH9O7d28mTZpkkPnGhOlZ\nKi15PvR5lhxewvWc62i1WlbHrMa+mz1+Tf1MHU8IcR+o0T2YvLw8xo4di7+/P+7u7lV+ifrH1tKW\nSeGTcHes+PtTa9R8cvwTruVcM20wIcR9oUYFJjw8nJMnTxo7izABJxsnXur2km6xslJ1KR8d/UhW\nxBRC3LMaXSIbNmwYs2fPJjExkcDAQBwcKj8BPmjQIIOHE3WjiX0TXur2EosOLaJQVUihqpClR5by\nSs9XaGLfxNTxhBD1VI0etPTzu/M1eYVCQXx8vMFC1YWG+KDl37mWc40lh5dQqq5YFqGZQzNmPDAD\nZ1vnv3mnEKKhqM2xs0ZnMLt37zZIMGHeWrm0YkLYBJYdXYZaoyajMIOlR5Yy/YHpMm+ZEKLW7rjg\n2O0p8GszK/Ff3yfqH7+mfvy3639ZEb0CjVZDSn4KHx79kKk9pmJraWvqeEKIeqTam/yDBw9m//79\ntfpmv//+O0888cQ9hxKm1cWjC+OCx6FQKAC4nnOdZUeX6S6dCSFETVR7BjN37lxmzZqFg4MDgwYN\nYsCAAVVeb7t69Sr79u3ju+++o6ioiKioKKMGFnUj3DucUnUpG05vAODSrUt8cvwTJoZPlBmYhRA1\nUm2BCQ0NZfv27WzYsIG1a9fq1mfx9vbGzs6O/Px80tLSyM7OpnHjxjz33HOMGjUKW1u5jHK/6N2y\nN6XlpXx37jsAEjITWBG9ghfCXsBSWeOlhIQQDdQdjxK2trZERkby7LPPcuTIEY4ePcqNGzcoKCig\nTZs29O7dm549exIaGir3Xe5T/dv0p6y8jG0J2wA4m36Wz098zviu47FQyt+5EKJ6Nfo11MrKit69\ne9O7d29j5xFm6NF2j6IqV/HTxZ8AOJV6ilUxq/hP1//IWjJCiGrJ0UHUyBMdnmCg70DddszNGNbE\nrkGj1ZgwlRDCnEmBETWiUCgY2nEoEW0idG3Hk4/zxckvpMgIIaokBUbUmEKhYHin4fRt1VfXdjTp\nqBQZIUSVpMCIWlEoFDwd8LTe4mRSZIQQVZECI2pNoVAwsvPISkVmbexaKTJCCJ0aP8xw+fJljh07\nRn5+PhqN/kFEoVAwfvx4g4UqLy9n6dKlbN26lcLCQnr37s2cOXNqtNjZ+PHjKSoqYv369QbLIyq7\nXWQA9l3fB8Cx5GNotBqeC35OhjALIWpWYHbu3MnMmTMpLy+v8nVDF5hly5axdetWoqKicHFxYd68\neUyaNImNGzfe8X3ffPMNe/fuJTw83GBZRPVuFxmFQsEf1/4AIDolmnJtOZEhkfIwphANXI2XTA4N\nDeWdd97Bx8dHN0eVMahUKtatW8fs2bPp2bMnAEuWLCEiIoKYmBhCQqpeM/769et88MEHBAcHGy2b\nqEyhUDAiYARKhZI9V/cAEHszls+iP2N86HgpMkI0YDW6B5OcnMz48eNp3ry5UYsLQEJCAoWFhXpn\nIT4+Pnh7exMdHV3le8rLy3n11VeJjIzE19fXqPlEZQqFgn/5/4v+bfrr2k6nnebjYx+jKleZMJkQ\nwpRqVGBat25Nenq6sbMAkJqaCoC7u7teu5ubm+61/+uzzz4D4N///rdxw4lqKRQKhnUaxsNtH9a1\nxWXE8dHRjyhRl5gwmRDCVGpUYF5++WWWLl3KkSNHKCsrM2qg4uJilEolVlb6M/ZaW1tTWlp5uviz\nZ8+ydu1aoqKiUCplUJwpKRQKnvR7kkEd/lw++2LWRZYeWUpRWZEJkwkhTKHaC+T+/v56l8PUajXj\nxo0DqHJiy7NnzxokkK2tLRqNBrVajaXln/FUKhV2dnZ6fUtLS3nllVeYMmUKLVu2NMjni3ujUCh4\nvP3jWFtY833c9wBczb7K+4fe56XuL9HIppGJEwoh6kq1Beb55583+v2Wqnh6egKQkZGh+2+A9PT0\nSpfNTp06xeXLl1m8eDGLFy8GKgqRRqMhODiYH3/8ES8vr7oLL3QG+g7E2sKajWcqRv4l5SWx6OAi\nXu7xMo3tGps4nRCiLlRbYCZNmlTjb5KWlmaQMAB+fn44ODhw7NgxBg8eDEBSUhLJycmEhYXp9Q0M\nDOTXX3/Va1uyZAkpKSksXrwYNzc3g+UStde3VV9sLGz48tSXaLVa0gvTWXhwIS93fxl3R/e//wZC\niHqtRjctOnbsyOnTp6t8LTo6mkceecRggaytrRk5ciQLFy5k3759nDt3jqlTpxIeHk5QUBAqlYqM\njAxUKhW2tra0bNlS78vR0VHX/tdLbMI0ejTvobd2THZxNosOLSIxN9HEyYQQxlbtEXjNmjUUFVXc\nmNVqtXz33Xfs27evUr/Y2Fisra0NGmrKlCmo1WpmzJiBWq3WPcl/+/PGjBnDunXr6Natm0E/VxhH\nsGcwE8Mn8unxT1GVq8gvzef9Q+/zYviLtG/S3tTxhBBGotBqtdqqXvj888/58MMPAdBoNFWO0FIq\nlTRq1Ijx48czZswY4yY1sKSkJCIiIti9ezc+Pj6mjtMgXMm+wrKjy3QjyiyVlkSGRBLsKQ/HClFf\n1ObYWW2B+Ss/Pz82bdpEly5dDBbS1KTAmEZKfgpLjywltyQXqBh1NqrzKHq3lNVShagPanPsrNE9\nmISEhPuquAjT8XLy4tWer+LmUDEAQ6vVsuH0Bn648AM1+F1HCFGP1Ogu+GuvvVbta0qlEnt7e1q1\nasVjjz2Gq6urwcKJ+1MT+ya80vMVlh1bxvWc6wDsPL+T3JJcRnSumNdMCFH/1ajApKamEhMTQ2lp\nKd7e3jRr1oysrCySkpJQKpU0bdqUrKwsPvnkEzZu3EiLFi2MnVvUc042TkzrMY0V0SuIy4gDKqb9\nzynJITIkEhtLGxMnFELcqxr9qvjggw/i7OzMt99+y+7du/nmm2/YtWsXW7duxcvLixdeeIHDhw/T\nunVr3n//fWNnFvcJG0sbXgx/kW4+f44GPJ12miWHl5Bfmm/CZEIIQ6hRgfniiy+YNm0agYGBeu1+\nfn5MmTKFzz77DCcnJ8aOHcvRo0eNElTcnyyVlowLGqc3Sea1nGtEHYwircBwD/AKIepejQpMbm4u\nTk5OVb5mY2NDdnY2AM7OzlVOSCnEnSgUCoZ2HMqIziN00xNlFGYQdTCKS7cumTidEOJu1ajABAcH\ns3z5cl0huS03N5cVK1bozmxiY2NlyK+4a31b9eX50OexsqiYSbtQVcgHhz/gePJxEycTQtyNGo8i\nGz16NP369SM0NJTGjRuTlZVFTEwMNjY2fPHFFxw6dIilS5cya9YsY2cW97EgjyCm9ZjGx8c/Jr80\nH7VGzaqYVWQUZfBo20dNMgGrEOLu1OgMpl27dvz888+MHTuWwsJCTp06RVlZGc899xz/+9//6NCh\nA46OjixevJhRo0YZO7O4z7V2bc3MXjPxcPTQtW1P2M4XJ79ArVGbMJkQojZqPBtk48aNeemll6p9\nPTAwsNIgACHuVlP7prza61U+i/6MhMwEAI4kHSGzKJPnQ5/Hyabqe4JCCPNR4wKTmJjIH3/8QXFx\nMRqNRu81hULB+PHjDR5ONGz2VvZM7jaZr898zYHEAwBcunWJ9w68x4vhL+LlJGv9CGHOalRgduzY\nwcyZMysVltukwAhjsVBaMDpwNB6OHnwf/z1arZbMokzeO/AekSGRBLrLWbMQ5qpGBeaTTz6hR48e\nvPPOO3h4eMiNVlGnFAoFA3wH4ObgxurY1ZSqSylVl/LJ8U940u9JBvoOlH+TQpihGt3kT05OJjIy\nEk9PT/kfWZhMF48uvNLzFZrYNwEqJsrcEr+F1bGrUZWrTJxOCPF/1ajAtGrVitTUVGNnEeJv+TTy\n4bVer9G2cVtd2/Hk4yw8uJBbxbdMmEwI8X/VqMC8/PLLLF++nOPHj6NWyzBRYVpONk683ONlvTVk\nbuTe4N3973Ih64IJkwkh/qpG92AWLVrErVu3dKtWWlhYVOpz9uxZwyYT4g4slZaMDhxNC+cWbDyz\nEY1WQ35pPh8c/oBhnYbRr3U/uZwrhInVqMD84x//MHYOIe5Kn5Z98HT05LMTn5Ffmo9Gq+Hbc99y\nLecaowNHy7T/QphQjQrMxIkTjZ1DiLvWrkk7ZvWexYroFVzLuQbAseRjJOcn83zo87rVM4UQdatW\nSwfGxsayfPly3nzzTVJSUti/fz9ZWVnGyiZEjbnauTKj5wx6teila0vOS2b+vvmcTD1pwmRCNFw1\nKjAqlYrJkyczYsQIPvvsM7799luys7NZvXo1gwcPJjEx0dg5hfhblkpLnunyDM90eQZLZcXJeYm6\nhE+Pf8r3cd9Trik3cUIhGpYaFZilS5dy8OBBPvnkE6Kjo9FqtQC88847ODk58cEHHxg0VHl5Oe+/\n/z69evUiODiYyZMnk5mZWW3/n376icGDBxMUFMSAAQP4/PPPKS+Xg0lD1atFL73nZQB+vfwrSw4v\nIackx4TJhGhYalRgdu7cydSpU+nXrx+Wln/etvHx8WHixIkcO3bMoKGWLVvG1q1biYqKYsOGDaSm\npjJp0qQq+/7xxx9Mnz6d4cOHs2PHDqZNm8bKlStZsWKFQTOJ+qWlS0tm9Z5FgFuAru3SrUu8/cfb\nxGXEmTCZEA1HjVe0bNmyZZWvubq6UlBQYLBAKpWKdevWMXXqVHr27Im/vz9LliwhJiaGmJiYSv2/\n+eYbBg4cyOjRo2nRogWPPPIIY8eOZcuWLQbLJOonB2sHJoZPZIjfEN2Q5QJVAR8d/YhtCdvQaKue\nW08IYRgPdJ2SAAAgAElEQVQ1KjBt27blxx9/rPK1ffv24evra7BACQkJFBYWEh4ermvz8fHB29ub\n6OjoSv1feOGFSqPclEoleXl5Bssk6i+FQsGj7R5lao+pNLJpBFRMMfPzxZ9ZfGgx2cXZf/MdhBB3\nq0YF5oUXXmDr1q1MmDCBLVu2oFAoiImJYcGCBWzYsIHIyEiDBbo9JY27u7teu5ubW5XT1QQGBtK2\n7Z/ThhQUFLBx40Z69+5dqa9ouNo3ac+cB+fQsVlHXdvlW5d564+3ZJSZEEZSowIzYMAAFi1aRFxc\nHG+88QZarZb58+ezc+dO5syZw2OPPWawQMXFxSiVSqysrPTara2tKS0t/dv3TpgwgdLSUqZNm2aw\nTOL+4GTjxEvdXmKI3xCUiop/+kVlRXx6/FM2ntlIWXmZiRMKcX+p8YJjgwYNYtCgQVy5coWcnByc\nnJzw9fVFqazVozR/y9bWFo1Gg1qt1htQoFKpsLOzq/Z9t27dYsKECVy6dIk1a9bg7e1t0Fzi/nD7\nklm7Ju1YFbNKd4ls77W9XMi6QGRIJN6N5N+OEIZQ6+rQpk0bQkJCaNeuHUqlkuPHj7NgwQKDBfL0\n9AQgIyNDrz09Pb3SZbPbkpKSGDFiBElJSWzYsEGWbhZ/q23jtsx5cA4hniG6tpT8FN7d/y67r+zW\nDcUXQty9ez79iIuLY926dYbIAoCfnx8ODg56Q5+TkpJITk4mLCysUv+srCzGjBmDRqNh48aN+Pn5\nGSyLuL/ZW9nz367/ZXTgaKwsKi7JqjVqvj33LR8d/UiemRHiHtX4Elldsba2ZuTIkSxcuBBXV1ea\nNGnCvHnzCA8PJygoCJVKRW5uLs7OzlhbWzNv3jyys7P58ssvsbW11Z35KBQKmjZtauK9EeZOoVDQ\nu2Vv2jZuy+rY1dzIvQFAXEYcb/3xFqM6j6KrV1cTpxSifjK7AgMwZcoU1Go1M2bMQK1W07t3b+bM\nmQNUzIc2ZswY1q1bR5cuXdi1axcajYbhw4frfQ8LCwvi4uSBOlEznk6ezOw1kx3nd/Dr5V/RarUU\nqgr5/MTndEvrxtMBT2NvZW/qmELUK2ZZYCwtLZk5cyYzZ86s9Fq3bt04f/68bjs+Pr4uo4n7mKXS\nkqEdhxLgFsDa2LW6FTKPJh3lfOZ5xnQZg7+bv4lTClF/GHYImBD3gdvPzPRo3kPXllOSw0dHP2LD\n6Q2UqEtMmE6I+qPaM5jnnnuuRt8gJSXFYGGEMBd2VnaMDRpLF/cufHXmK/JL8wHYf30/cRlxjOky\nBr+mMqBEiDuptsCUldXsobNmzZrRrFkzgwUSwpwEewbTtnFbvjrzFbE3YwHIKsrig8Mf0Ltlb4Z1\nGoatpa2JUwphnqotMOvXr6/LHEKYLScbJ8Z3Hc/xlON8c/YbClWFQMXZzNn0s4wOHK03a7MQooLc\ngxGiBhQKBeHe4cztO5dgz2Bde3ZxNsuOLmNN7BoKVIabVVyI+4EUGCFqoZFNI8Z3Hc9/uv4HR2tH\nXfvRpKO8uedNjiYdlVkAhPj/pMAIUUsKhYJQr1DmPTSPbj7ddO0FqgLWxK7hw6MfkllU/QqsQjQU\nUmCEuEuO1o48F/wck7pNwtXOVdcenxHP3L1z+d+l/6HWqE2YUAjTkgIjxD0KcAtgXt95RLSJ0K2c\nWVZextb4rbyz7x0uZl00cUIhTEMKjBAGYGNpwz/9/8lrvV6juXNzXfvN/JssPrSYtbFrySuVVVZF\nwyIFRggDaunSktd7v84//f+JjaWNrv1I0hHm7JnDnqt70Gg1JkwoRN2RAiOEgSkVSiLaRDCv7zy9\n9WaKy4r55uw3zN83Xy6biQZBCowQRuJq58r40PFM7jYZNwc3XXtSXhKLDy1mdcxqWXNG3NekwAhh\nZP5u/rzZ900G+w3WLWwGcCz5GHP2zOGniz9RVl6zqZmEqE+kwAhRByyVljzW7jHeeugtQr1Cde2l\n6lK2J2znzb1vciLlhDykKe4rUmCEqEON7Rrzn67/YWqPqXg5eenas4qy+PzE5yw6tIir2VdNmFAI\nw5ECI4QJdGjagTcefINRgaNwsHbQtV++dZn3DrzHqphVZBVlmTChEPfOLFe0FKIhUCqU9GnZh1Cv\nUH688CN7ru2hXFMOwPHk48TejOWh1g/xaNtH9YqQEPWFnMEIYWL2VvYM9x9eaVizWqNm1+VdzP59\nNr9c+kUGAoh6RwqMEGaimUMzxoeOZ0bPGbRxbaNrLyorYkv8Fmb/PpsDiQfkQU1Rb0iBEcLMtG3c\nlld6vsL40PF6z8/klOSw/tR65u6dS3RKtIw4E2ZP7sEIYYYUCgUhniEEugdyMPEgP1z4QTeXWVpB\nGitPrOTnRj8z2G8wnd066ybZFMKcmOUZTHl5Oe+//z69evUiODiYyZMnk5lZ/foaZ86c4emnn6ZL\nly4MHDiQbdu21WFaIYzHUmnJg60e5J1+7zDEbwh2Vna615Lykvj42Me8d+A9zqWfkzMaYXbMssAs\nW7aMrVu3EhUVxYYNG0hNTWXSpElV9r116xaRkZH4+/uzZcsWnnnmGWbNmsWBAwfqOLUQxmNjacOj\n7R5lfr/5PNruUawtrHWvXcu5xkdHP2LhwYVSaIRZMbtLZCqVinXr1jF79mx69uwJwJIlS4iIiCAm\nJoaQkBC9/t999x2Ojo7MmjULpVKJr68vcXFxrFmzhl69epliF4QwGgdrB4b4DaFf6378fPFn9l3f\np1vU7Er2FT46+hGtXVvzePvH8W/mL5fOhEmZ3RlMQkIChYWFhIeH69p8fHzw9vYmOjq6Uv/o6GjC\nwsJQKv/clfDwcGJiYuQ3OXHfamTTiH8F/Iv5EfPp26ovlso/f1e8mn2VZUeXseDAAk6mnpT/D4TJ\nmF2BSU1NBcDd3V2v3c3NTffa/+1fVd/i4mKys7ONF1QIM+Bi68KIziN4p987lQrN9ZzrfHr8U976\n4y2OJh2V4c2izpldgSkuLkapVGJlZaXXbm1tTWlpaaX+JSUlWFtbV+oLFZfbhGgIXO1cGdF5BPMj\n5vNQ64f0Zm1OyU9hTewa3vj9Df649oc8sCnqjNkVGFtbWzQaDWq1Wq9dpVJhZ2dXZf//W0hub1fV\nX4j7mYutC08HPM27Ee/ycNuH9VbVzCzK5OszX/P67tf56eJPFKoKTZhUNARmV2A8PT0ByMjI0GtP\nT0+vdCkMwMPDo8q+9vb2ODk5GS+oEGaskU0jhnYcyoKIBQzqMEhvLrO80jy2J2zntd2vsensJjKL\nqn8EQIh7YXYFxs/PDwcHB44dO6ZrS0pKIjk5mbCwsEr9u3btSnS0/lPNR48eJSQkRO/GvxANkYO1\nA4+3f5wFEQv4p/8/cbVz1b1Wqi7l96u/M/v32XwW/RlXsq+YMKm4H5ndMGVra2tGjhzJwoULcXV1\npUmTJsybN4/w8HCCgoJQqVTk5ubi7OyMtbU1w4YNY9WqVbz55ps8++yzHDp0iB9++IGVK1eaeleE\nMBs2ljZEtImgb6u+HE85zi+XfiElPwUArVZLzM0YYm7G0Nq1NRGtIwjxDMFCaWHi1KK+M7sCAzBl\nyhTUajUzZsxArVbTu3dv5syZA0BsbCxjxoxh3bp1dOvWjaZNm7Jq1SreeecdhgwZgpeXF1FRUfTo\n0cPEeyGE+bFQWtDdpzvdvLsRlxHHriu7iM+I171+Nfsqq7JX4WLrQt9WfenVohdONnKpWdwdhbaB\nDpJPSkoiIiKC3bt34+PjY+o4QphMUl4Sv135jePJx3UPbd5mqbQkzDuMh1o9REuXliZKKMxJbY6d\nZnkGI4SoOz6NfBgbNJahHYey7/o+9l7bS35pPlCxJs3hG4c5fOMwrVxa0bdVX0K9QvWGQQtRHSkw\nQgigYuTZ4+0f55G2jxCdEs2eq3u4lnNN9/q1nGt8cfILvj33LT2a96BPyz54OHqYLrAwe1JghBB6\nLJWWdPfpTnef7lzLucaeq3uITonWXT4rKiti95Xd7L6ym/ZN2tOrRS9CPEPkrEZUIgVGCFGtVi6t\nGBc8juH+wzmYeJB91/fpPTdzIesCF7Iu8M3Zb+jm041eLXrh00juaYoKUmCEEH/L0dqRh9s+zEDf\ngcRlxLHv+j5Op53WzW9WVFbEnqt72HN1Dy1dWvJA8wcI9w7H3srexMmFKUmBEULUmEKhwN/NH383\nf3JKcjh04xAHEw/qndVcz7nO9ZzrfHfuO7p4dKGHTw/83fxRKuTB54ZGCowQ4q642LrwWLvHeLTt\noyRkJnDwxkFib8bq7tWoNWpOpJzgRMoJGtk0Isw7jO4+3WneqLmsU9NASIERQtwThUJBx2Yd6dis\nI0VlRRxLPsahG4e4nnNd1yevNE83MMDTyZNu3t0I8w6jqX1TEyYXxiYFRghhMPZW9vRt1Ze+rfqS\nkp/C4RuHOZJ0hLzSPF2fm/k32ZawjW0J22jj2oZw73C6enWlkU0jEyYXxiAFRghhFF5OXjzV6Sme\n7PgkCZkJHEk6QuzNWFTlfy6vcSX7Cleyr7Dp3CY6NOlAqFcowZ7BOFo7mjC5MBQpMEIIo1IqlHRq\n1olOzTpR2rmUk6knOZZ8jLiMON0oNK1WS0JmAgmZCXx95ms6NO1AV8+uBHkEyVxo9ZgUGCFEnbGx\ntKGbTze6+XQjvzSf2NRYjicf5+Kti7olNzRaDfEZ8cRnxPPVma9o36Q9IZ4hBHkE4WLrYuI9ELUh\nBUYIYRJONk70admHPi37kFOSUzHi7OYJLt+6rOuj1Wo5n3me85nn2XhmI61dWxPsEUwXjy4yTU09\nIAVGCGFyLrYuRLSJIKJNBNnF2br1aS5nX9ZbTPBq9lWuZl9lS/wW3B3dCfIIItA9kDaubeQ5GzMk\nBUYIYVZc7Vx1xSa3JJfY1FhOpp7kfOZ53T0bgLSCNH659Au/XPoFB2sHOrt1prN7Zzo16yQzCJgJ\nKTBCCLPlbOusG/ZcqCrkdNppTqWd4lz6Ob3RaIWqQo4kHeFI0hGUCiVtG7clwC2AALcAvJy85MFO\nE5ECI4SoFxysHejRvAc9mvegrLyM+Mx4TqWe4nTaab3nbDRajW4Szi3xW3C1c6VTs04EuAXg19RP\nzm7qkBQYIUS9Y2VhRaB7IIHugWi1WhJzEzmddpoz6Wf0ZhAAyC7O5mDiQQ4mHkShUNDapTWdmnWi\nY7OOtHZpjYXSwkR7cf+TAiOEqNcUCgUtXVrS0qUlgzoMIq80j7PpZzmbfpa4jDiKy4p1fbVare7h\nzh8u/ICtpS3tm7THr6kffk395HKagUmBEULcVxrZNOKB5g/wQPMH0Gg1XMm+wrn0c8RlxHE997re\nqLQSdQmn005zOu00UDF0ukOTDnRo2oEOTTrg5uAmBeceSIERQty3bt/wb9u4LYP9BlOgKiAhM4G4\njDjiM+K5VXxLr39+aT7RKdFEp0QDFcWqfZP2tG/SnnZN2uHp6CkFpxbMrsBkZWXx1ltvcfDgQays\nrBg6dCgvv/wylpZVRy0rK+Ozzz5j27ZtZGZm0rp1a1588UX69+9fx8mFEObO0dqRUK9QQr1C0Wq1\nZBRlkJCZQHxGPOezzlOoKtTrn1eap1dwHKwdaNe4He2atKNt47Y0b9Rc7uHcgdkVmEmTJqFQKNiw\nYQNpaWnMnDkTS0tLXn755Sr7L126lO3bt/PWW2/h6+vL//73PyZNmsS6desICwur4/RCiPpCoVDg\n5uCGm4MbfVr2QavVkpyfXDFzQNZ5LmZdpKisSO89hapCTqae5GTqSQCsLaxp5dIK38a++Lr60sa1\nDQ7WDqbYHbNkVgUmNjaWEydO8Ntvv9G8eXP8/Px45ZVXePvtt3nxxRextrbW66/RaPjuu++YMmUK\n/fr1A2D8+PEcOnSILVu2SIERQtSYQqHAp5EPPo18iGgTgUarITkvmQtZF7h46yIXsy5SoCrQe4+q\nXKUbEn2bu6M7bVzb0Ma1Da1dWuPdyLvBzjJgVgUmOjoab29vmjdvrmsLDw+nsLCQ+Ph4unTpotdf\no9GwdOlS2rdvr9euVCrJy8tDCCHullKhpLlzc5o7NyeiTQRarZbUglQu3brExVsXuXTrEllFWZXe\nl1aQRlpBGodvHAYqznJaurSklUsr3VcTuyYN4l6OWRWYtLQ03Nzc9Npub9+8ebNSgbG0tOSBBx7Q\nazt9+jRHjhzhzTffNG5YIUSDolAo8HTyxNPJk94tewOQU5LDlewrXLp1icu3LnMj7wblmnK996nK\nVVzMqjgDus3R2rFiaLVzS92fLrYu913RqdMCk5SURERERJWvWVtb88QTT2BjY6PXbmVlhUKhoLS0\n9G+///Xr15k4cSKBgYE89dRTBskshBDVcbF1IcQzhBDPEADKystIzE3kcvbliok5c66SXZxd6X0F\nqgLOpZ/jXPo5XZujtSMtnFvQwrkFzZ2b08K5Bc3sm9XrolOnBcbd3Z2ffvqpyteUSiUbNmxApVLp\ntZeVlaHVarG3v/P0DmfPnmX8+PE0btyYFStWYGVlZbDcQghRE1YWVhU3/Bv76tpySnK4lnNN7+uv\nD3/eVqAqIC4jjriMOF2bjaUNPo18aN6oOT6NfPBu5I23kzc2ljaV3m+O6rTAWFlZ4evrW+3rHh4e\n/PHHH3pt6enpQEVxqs6BAweYNGkSfn5+rFixAmdnZ8MEFkKIe+Ri60KQRxBBHkEAuuHR13Oucy3n\nGom5iSTmJlKiLqn03lJ1KZdvXdZbI0ehUNDUvmlFwXHyxruRN15OXrg5uJndYAKzugfTtWtXFi9e\nzM2bN/H09ATg6NGjODg44OfnV+V7oqOjeeGFF+jZsydLly7F1ta2LiMLIUSt/HV4dJh3xUjX20Un\nMTeRG7k3Kv7Mu0F+aX6l92u1WjIKM8gozCD2Zqyu3VJpiYejB55Onng5eeHpWPFnM4dmJis8ZlVg\ngoODCQoK4uWXX+aNN94gMzOTRYsWMW7cON0Q5cLCQoqKimjWrBkqlYpp06bRqlUr3nzzTfLz88nP\nr/gLsba2ljMZIUS98NeiE+oVClQUkrzSPG7k3eBG7g2S85NJyksirSBNb12c29QaNUl5SSTlJem1\nWygtcHdwx8PRQ+/L3dEdW0vj/kJuVgVGoVCwfPly5s6dy6hRo3BwcGD48OG8+OKLuj5r1qxh+fLl\nnD9/nmPHjpGamkpqaip9+/bV+149evTgiy++qNsdEEIIA1EoFDjbOuNs60yAW4Cuvay8jNSCVJLz\nk0nOSyY5P5mU/JQqBxMAlGvKSclPISU/pdJrLrYuuDu64+7gjruju67INbVviqXy3suDQvvXmd8a\nkNsj2nbv3o2Pj4+p4wghxD0pKiviZv5NUvJTuFlQ8WdqQWq1hedObj90OjpwNK1cWum9Vptjp1md\nwQghhLg79lb2lUawQcWM0akFqbqvm/k3SStMI70wvdIzO7dptVpu5N7gtyu/ERkSedeZpMAIIcR9\nzNbSVjeDwF9ptBoyizJJL0wnrSCN1IJU0gvTSS9MJ7skG0ulpW7k292SAiOEEA2QUqHU3XP56z0e\nqLjPo1Ao7vk+jBQYIYQQeqwsDPOgeoMtMOXlFdceU1NTTZxECCHqj9vHzNvH0DtpsAUmIyMDgFGj\nRpk4iRBC1D8ZGRm0bNnyjn0a7DDlkpISzp49S7NmzbCwkBXphBCiJsrLy8nIyCAgIOBvZ05psAVG\nCCGEcZnXzGhCCCHuG1JghBBCGIUUGCGEEEYhBUYIIYRRNMgCU15ezvvvv0+vXr0IDg5m8uTJZGZm\nVtv/zJkzPP3003Tp0oWBAweybdu2OkxreLXd/59++onBgwcTFBTEgAED+Pzzz2s0Bt5c1Xb//2r8\n+PE888wzRk5ofLX9GaSmpjJ58mSCg4Pp0aMHc+fOpbi48qqM9UVt9//w4cMMGzaMoKAg+vfvz8qV\nK7lfxkfNmTOHWbNm3bHPXR8DtQ3QBx98oO3Zs6f2wIED2rNnz2qHDx+uffrpp6vsm5WVpQ0PD9e+\n9dZb2kuXLmnXrVun7dSpk3b//v11nNpwarP/e/fu1Xbs2FG7fv167fXr17U///yzNjQ0VLt8+fI6\nTm04tdn/v9q4caO2ffv22tGjR9dBSuOqzc+gtLRU+8gjj2ifeeYZbXx8vPbw4cPaBx98UDtv3rw6\nTm04tdn/a9euaQMDA7XLli3TJiYman/++Wdtly5dtBs2bKjj1Ial0Wi0S5cu1bZv3177+uuvV9vv\nXo6BDa7AlJaWaoODg7Xff/+9ru3GjRva9u3ba0+cOFGp/4oVK7T9+vXTlpeX69pmzpypHTduXJ3k\nNbTa7v/zzz+vfemll/Tali9fru3Xr5/RsxpDbff/tmvXrmnDw8O1//rXv+p9gantz2Dz5s3arl27\nanNycvTannrqqTrJa2i13f/169drw8PD9domT56sHT9+vNGzGktiYqJ29OjR2m7dumn79u17xwJz\nL8fABneJLCEhgcLCQsLDw3VtPj4+eHt7Ex0dXal/dHQ0YWFhKJV//qjCw8OJiYmpl6fItd3/F154\ngYkTJ+q1KZVK8vLyjJ7VGGq7/1BxOeXVV18lMjISX1/fKvvUJ7X9GRw4cIAHHnhAb4XYp556is2b\nN9dJXkOr7f43btyYnJwcfvjhBzQaDRcuXCA6OpqAgIBKfeuLmJgYPD092blz59+u6XIvx8AGV2Bu\nz6Pj7u6u1+7m5lblvGSpqalV9i0uLiY7u/YL+Zhabfc/MDCQtm3b6rYLCgrYuHEjvXv3Nm5QI6nt\n/gN89tlnAPz73/82brg6UtufwbVr1/D29mbp0qX069ePiIgIoqKiKC0trZO8hlbb/R84cCDDhg1j\n+vTpBAQEMGjQIMLCwpgwYUKd5DWGwYMHs3DhQpo1a/a3fe/lGNjgCkxxcTFKpRIrK/3ZQq2trav8\nH6akpARra+tKfQFUKpXxghpJbff//753woQJlJaWMm3aNGPGNJra7v/Zs2dZu3YtUVFRer/B1We1\n/RkUFBSwefNmbty4wYcffshrr73GTz/9xBtvvFFXkQ2qtvufl5dHcnIykZGRbN68maioKA4dOsTy\n5cvrKrJJ3csxsMFNdmlra4tGo0GtVmNp+efuq1Qq7Ozsquz/f3+It7er6m/uarv/t926dYsJEyZw\n6dIl1qxZg7e3d13ENbja7H9paSmvvPIKU6ZM+dtJ/eqT2v4bsLS0xNnZmYULF2JhYUHnzp1Rq9W8\n9NJLvPbaa7i6utZl/HtW2/1fvHgxFhYWTJ8+HYBOnTqhVquZO3cuzzzzTL3b/9q6l2Pg/fErWS14\nenoCf86mfFt6enql00AADw+PKvva29vj5ORkvKBGUtv9h4o1uEeMGEFSUhIbNmwgMDDQ6DmNpTb7\nf+rUKS5fvszixYsJDg4mODiYbdu2ER0dTXBwMCkpKXWW25Bq+2/A3d0dX19fvUlhb182TU5ONmJS\n46jt/p86darS/ZYuXbpQVlbGzZs3jRfUTNzLMbDBFRg/Pz8cHBw4duyYri0pKYnk5GTCwsIq9e/a\ntSvR0dF6N7OOHj1KSEhIvbxkUtv9z8rKYsyYMWg0GjZu3Iifn19dxjW42ux/YGAgv/76K9u2bdN9\n9e/fn4CAALZt24abm1tdxzeI2v4bCA0NJT4+nrKyMl3bhQsXsLCwqJdnsrXdfw8PD86fP6/XdvHi\nRZRKJS1atDB6XlO7l2Ogxdy5c+caOZ9ZsbCwID8/n9WrV9OuXTsKCgp4/fXXadmyJRMmTEClUnHr\n1i2srKywsLCgVatWrFy5kuTkZFq0aMGPP/7I2rVrmTt3Ls2bNzf17tRabfd/5syZnD9/nk8//RRX\nV1eKioooKiqiuLgYe3t7U+9OrdVm/21sbHBxcdH7OnDgAIWFhYwbN65e/oIBtf830KZNG9atW8f5\n8+dp27YtCQkJvP322/Tv35/HH3/c1LtTa7XdfxcXF5YvX45SqcTDw4OYmBjefvtthgwZwoABA0y9\nO/ds69atODs7ExERAWDYY+A9D6iuh8rKyrQLFizQhoeHa0NCQrQvvfSSNisrS6vVarVHjhzRtm/f\nXnvkyBFd/9jYWO1TTz2lDQgI0A4cOFD7ww8/mCq6QdR0/4uLi7V+fn7a9u3bV/rq2LGjiffi7tX2\n7/+vXn/99Xr/HIxWW/ufwcWLF7XPPfecNjAwUNu9e3ftu+++qy0tLTVV/HtW2/3ftWuX9sknn9QG\nBQVp+/fvr122bJlWpVKZKr5BjR49Wu85GEMeA2U9GCGEEEZRP8/xhRBCmD0pMEIIIYxCCowQQgij\nkAIjhBDCKKTACCGEMAopMEIIIYyiwc1FJkRtzJw5k61bt96xT3h4OOvXr+eZZ57BwsKCL774om7C\nVSEnJ4ehQ4eydu3aGs2ftnz5cjIzM2lgz1uLOiLPwQhxB4mJidy6dUu3PW/ePCwsLJg9e7auzdHR\nkbZt23Lp0iUUCoVJ14yZNm0a7u7uvPLKKzXqX1JSwiOPPMKCBQvo0aOHkdOJhkbOYIS4gxYtWujN\nN+Xo6IiFhQVBQUGV+v513RxTOH36NL/88gv79u2r8XtsbW0ZO3YsCxYsYMeOHUZMJxoiuQcjhIE8\n88wzjB07VrfdoUMHNm3axPTp0wkODqZ79+4sX76cgoICXnvtNbp27UrPnj1ZtGiR3kSC2dnZzJ49\nmx49ehAYGMiIESM4ceLE337+qlWreOCBB2jcuLGu7ezZszz77LN07dqV4OBgxo4dy8mTJ/Xe99hj\nj3Hx4kX27t17zz8DIf5KCowQRhQVFYWrqyuffPIJDz30EMuWLWPYsGHY2dmxfPlyBgwYwKpVq/j1\n11+BijVoxo4dy969e5k6dSofffQRzs7OjB07ltOnT1f7OYWFhfz+++8MHDhQ11ZQUEBkZCSurq4s\nW7aMDz74gOLiYiIjIykoKND1c3NzIzg4mJ07dxrvByEaJLlEJoQR+fv7M2vWLKBimvgtW7bQpEkT\n5mAmNs0AAAMYSURBVMyZA0D37t3ZuXMnJ0+e5OGHH2b79u2cP3+e7777js6dOwPQp08fhg0bxgcf\nfMDatWur/Jzo6GjKysr01uq5dOkS2dnZjBkzhpCQEADatGnDpk2bKCwsxNHRUdc3ICCAn376ySg/\nA9FwyRmMEEb01wO+q6srFhYWem0KhQJnZ2fy8vIAOHz4MO7u7nTs2BG1Wo1arUaj0fDQQw9x/Pjx\napeoTUpKAsDHx0fX1q5dOxo3bszzzz/PnDlz2LVrF02bNmXGjBmVFtby9vYmIyOjXi4DLsyXnMEI\nYUQODg6V2u60jk5OTg6pqan4+/tX+Xp2dnaVqy7m5+cD+kvYOjg48NVXX/Hpp5/y888/s2nTJmxt\nbRk8eDCzZ8/WW2f9dqaCggK9ezhC3AspMEKYEScnJ3x9fYmKiqry9erWf7/dnp+fT6NGjXTtbdq0\nYdGiRZSXl3P69Gm2b9/Oxo0badWqFc8995yuX25uLkqlEmdnZwPujWjo5BKZEGYkLCyMlJQU3Nzc\n6Ny5s+5r9+7drF+/Hisrqyrf5+XlBUBqaqqubdeuXXTv3p2MjAwsLCwIDg5m7ty5NGrUqNJa8qmp\nqbi5uWFhYWG8nRMNjhQYIczI0KFDcXd3Z9y4cWzfvp0jR47w3nvv8emnn9K8eXMUCkWV7wsNDcXW\n1lZvOHNISAharZYXX3yR3377jcOHDzNnzhwKCgr0RpsBxMTE0KtXL6Pum2h4pMAIYUZu3zfp0qUL\n7733Hv/973/Zv38/b7zxBpMmTar2fXZ2dvTp00fvIcsmTZqwevVqnJycmDVrFuPHj+fcuXMsW7aM\nsLAwXb+MjAwSEhIqFR0h7pVMFSPEfeL06dOMGDGC33//vcqBANX59NNP+eWXX9i6dWu1Z0hC3A05\ngxHiPhEYGEhERARr1qyp8XuKior4+uuvmTp1qhQXYXBSYIS4j8ydO5dffvmF69ev16j/6tWreeih\nh+jTp4+Rk4mGSC6RCSGEMAo5gxFCCGEUUmCEEEIYhRQYIYQQRiEFRgghhFFIgRFCCGEUUmCEEEIY\nxf8D4gadsIbR1hIAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1939,6 +1936,24 @@ " ylabel='Length (m)')" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null,