From 9064053e855408d95940fe52e95d07a07d1b44ba Mon Sep 17 00:00:00 2001 From: Roger Labbe Date: Sun, 12 Jul 2015 15:57:05 -0700 Subject: [PATCH] Added notebook to allow running via try.jupyter.org I need a way for people to run the book's animations. From this notebook they can cut and paste code into try.jupyter.org. --- Interactions.ipynb | 126 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 Interactions.ipynb diff --git a/Interactions.ipynb b/Interactions.ipynb new file mode 100644 index 0000000..ef94038 --- /dev/null +++ b/Interactions.ipynb @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interactions\n", + "\n", + "This is a collection of interactions, mostly from the book. If you have are reading a print version of the book, or are reading it online via Github or nbviewer you will be unable to run the interactions.\n", + "\n", + "So I have created this notebook. Here is how you run an interaction if you do not have IPython installed on your computer.\n", + "\n", + "1. Go to try.juptyer.org in your browser. It will launch a temporary notebook server for you.\n", + "\n", + "2. Click the **New** button and select `Python 3`. This will create a new notebook that will run Python 3 for you in your browser.\n", + "\n", + "3. Copy the entire contents of a cell from this notebook and paste it into a 'code' cell in the notebook on your browser. \n", + "\n", + "4. Press CTRL+ENTER to execute the cell.\n", + "\n", + "5. Have fun! Change code. Play. Experiment. Hack.\n", + "\n", + "Your server and notebook is not permanently saved. Once you close the session your data is lost. Yes, it says it is saving your file if you press save, and you can see it in the directory. But that is just happening in a Docker container that will be deleted as soon as you close the window. Copy and paste any changes you want to keep to an external file.\n", + "\n", + "Of course if you have IPython installed you can download this notebook and run it on your own computer. Type\n", + "\n", + " ipython notebook\n", + " \n", + "in a command prompt from the directory where you downloaded this file. Click on the name of this file to open it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Experimenting with FPF'\n", + "\n", + "\n", + "The Kaman filter uses the equation $x^- = FPF^\\mathsf{T}$.\n", + "\n", + "**blah**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\na9aMQYMG5T534sQJtmzZQmxsLDt27CAhIYGEhAT27dvH8ePH+eWXX/jll1/8VlNYWBiRkZE0bdo0\nN9SjoqKIioqiadOmOm1UOaLEoDfGrACKGiR8RkQ+L8X7n1cXfdKkSbn3o6OjdfEldd5q165Nr169\n6NWr11mvpaSksH//fvbt20dCQgInTpzg1KlTpKSkcOrUqdwtJSWF1NRUQkJCCAsLIzQ0lLCwMCIi\nIqhatSoRERFUq1aNhg0bEhkZSaNGjXJv69atqz105VcxMTHExMSc18/4e+imGzAp39DN04CnqAOy\nOnSjlFLnL5Dr0Re3kx+BNsaYlsaYysBQYLGP9qmUUqoUyhz0xphbjTEJQDdgiTHmi+znGxtjlgCI\nSCYwDvgSiAM+LmrGjVJKKf/RE6aUUqoc00sJKqWU0qBXSim306BXSimX06BXSimX06BXSimX06BX\nSimX06BXSimX06BXSimX06BXSimX06BXSimX06BXSimX06BXSimX06BXSimX06BXSimX06BXSimX\n06BXSimX06BXSimX06BXSimX8+aasbcbY7YZY7KMMVeU0G6vMWaLMeYnY8wPZd2fUkqpsgnz4md/\nBm4Fpp6jnQDRInLMi30ppZQqozIHvYjsAHth2lIoVSOllFK+F4gxegG+Msb8aIz5rwDsTymlVD4l\n9uiNMSuAyCJeekZEPi/lPq4RkUPGmPrACmPMDhFZc76FKqWUKpsSg15ErvN2ByJyKPv2iDHmU6Ar\nUGTQT5o0Kfd+dHQ00dHR3u5eKaVcJSYmhpiYmPP6GSMiXu3UGLMKeEJENhbxWlUgVESSjTHVgOXA\nCyKyvIi24m0tSilV0RhjEJESj4N6M73yVmNMAtANWGKM+SL7+cbGmCXZzSKBNcaYWGA98J+iQl4p\npZT/eN2j9xXt0Sul1Pnza49eKaVU+aBBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RS\nLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdBr5RSLqdB\nr5RSLqdBr5RSLqdBr5RSLufNxcHfMMZsN8ZsNsYsNMbUKqZdf2PMDmPMLmPMk2UvVSmlVFl406Nf\nDkSJyOXATuDpwg2MMaHAO0B/oB0w3BjT1ot9llsxMTFOl+A3bv5soJ+vvHP75yuNMge9iKwQEU/2\nw/VA0yKadQV2i8heETkDzAMGlXWf5Zmbf9nc/NlAP1955/bPVxq+GqP/M7C0iOebAAn5Hu/Pfk4p\npVSAhJX0ojFmBRBZxEvPiMjn2W2eBU6LyJwi2on3JSqllPKGESl7Fhtj7gX+C7hWRNKLeL0bMElE\n+mc/fhrwiMhrRbTVLwWllCoDETElvV5ij74kxpj+wF+B3kWFfLYfgTbGmJbAQWAoMLwshSqllCob\nb8bo3waqAyuMMT8ZY94FMMY0NsYsARCRTGAc8CUQB3wsItu9rFkppdR58GroRimlVPALmjNjjTEv\nZZ98FWuMWWmMaeZ0Tb5U2hPMyitjzO3GmG3GmCxjzBVO1+Mrbj7hzxgzwxhz2Bjzs9O1+Joxppkx\nZlX27+RWY8wjTtfkS8aYKsaY9dl5GWeMeaXE9sHSozfG1BCR5Oz7DwOXi8gDDpflM8aY64CVIuIx\nxrwKICJPOVyWzxhjLgU8wFTgLyKyyeGSvJZ9wl880Bc4AGwAhrtl+NEY0xNIAT4UkQ5O1+NLxphI\nIFJEYo0x1YGNwC1u+X8HYIypKiKpxpgw4FvgCRH5tqi2QdOjzwn5bNWBP5yqxR9KeYJZuSUiO0Rk\np9N1+JirT/gTkTXAcafr8AcRSRSR2Oz7KcB2oLGzVfmWiKRm360MhALHimsbNEEPYIz5mzFmH3AP\n8KrT9fhRcSeYqeCiJ/y5QPasv07YDpZrGGNCjDGxwGFglYjEFde2zNMry+JcJ2CJyLPAs8aYp4B/\nAvcFsj5v+eAEs6BWms/nMsExrqnKLHvYZgHwaHbP3jWyRwg6Zh/v+9IYEy0iMUW1DWjQi8h1pWw6\nh3LY4z3X58s+wWwAcG1ACvKx8/j/5xYHgPyTApphe/WqHDDGVAI+AT4SkUVO1+MvInIye0r7lUBM\nUW2CZujGGNMm38NBwE9O1eIP+U4wG1TCCWZu4ZaT33JP+DPGVMae8LfY4ZpUKRhjDDAdiBORN52u\nx9eMMRcYY2pn348ArqOEzAymWTcLgEuALOAX4EER+d3ZqnzHGLMLe9Ak54DJOhF5yMGSfMoYcyvw\nFnABcBL4SURucLYq7xljbgDexB7smi4iJU5jK0+MMXOB3kA94HfgeRGZ6WxVvmGM6QGsBraQNwT3\ntIgsc64q3zHGdAA+wHbWQ4BZIvJGse2DJeiVUkr5R9AM3SillPIPDXqllHI5DXqllHI5DXqllHI5\nDXqllHI5DXqllHI5DXqllHI5DXqllHK5/w8IHQw39M9mhgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "from IPython.html.widgets import interact, interactive, fixed\n", + "import IPython.html.widgets as widgets\n", + "import numpy as np\n", + "import numpy.linalg as linalg\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.patches import Ellipse\n", + "\n", + "def plot_covariance_ellipse(x, P, edgecolor='k', ls='solid'):\n", + " U,s,v = linalg.svd(P)\n", + " angle = math.atan2(U[1,0],U[0,0])\n", + " width = math.sqrt(s[0]) * 2\n", + " height = math.sqrt(s[1]) * 2\n", + "\n", + " ax = plt.gca()\n", + " e = Ellipse(xy=(0, 0), width=width, height=height, angle=angle,\n", + " edgecolor=edgecolor, facecolor='none',\n", + " lw=2, ls=ls)\n", + " ax.add_patch(e)\n", + " \n", + " \n", + "def plot_FPFT(F00, F01, F10, F11, covar):\n", + " \n", + " dt = 1.\n", + " x = np.array((0, 0.))\n", + " P = np.array(((1, covar), (covar, 2)))\n", + " F = np.array(((F00, F01), (F10, F11)))\n", + "\n", + " plot_covariance_ellipse(x, P)\n", + " plot_covariance_ellipse(x, np.dot(F, P).dot(F.T), edgecolor='r')\n", + " plt.axis('equal')\n", + " \n", + "interact(plot_FPFT, \n", + " F00=widgets.IntSliderWidget(value=1, min=0, max=2.), \n", + " F01=widgets.FloatSliderWidget(value=1, min=0., max=2., description='F01(dt)'),\n", + " F10=widgets.FloatSliderWidget(value=0, min=0., max=2.),\n", + " F11=widgets.FloatSliderWidget(value=1, min=0., max=2.),\n", + " covar=widgets.FloatSliderWidget(value=0, min=0, max=1.));" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}