Organizing book into directories
This commit is contained in:
commit
bda9810ea1
46 files changed
+9049
-9311
No files matched your search
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:aaedbb5dd7c16f3a7777036a6bb62b1f9c7641915224d83029f51ffbefc1d48e"
|
||||
"signature": "sha256:3bb351943b52e55a96cd9d97199451f321cc663d0d6c7ad251edb04a4df0fbbf"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -24,6 +24,8 @@
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -250,15 +252,14 @@
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f5a64035860>"
|
||||
"<IPython.core.display.HTML at 0x7f5e0d759a20>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This book is written in IPython Notebook, a browser based interactive Python environment that mixes Python, text, and math. I choose it because of the interactive features - I found Kalman filtering nearly impossible to learn until I started working in an interactive environment. It is difficult to form an intuition of the effect of many of the parameters that you can tune until you can change them rapidly and immediately see the output. An interactive environment also allows you to play 'what if' scenarios out. \"What if I set $\\mathbf{Q}$ to zero?\" It is trivial to find out with Ipython Notebook.\n",
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:fc7a76981c0f56cd0ecc2e002ce26fdf15803c9b00c697fc5550b071291626ff"
|
||||
"signature": "sha256:34de03d319fbef2790012c38db97348abe5e8f429c2d05cedae3dcdec75dbd5d"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -16,6 +16,8 @@
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -240,13 +242,13 @@
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 3,
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7fe174bfb350>"
|
||||
"<IPython.core.display.HTML at 0x7fa10405ba20>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 3
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
@@ -398,9 +400,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$\\mathbf{\\phi}\\phi$"
|
||||
]
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:df77e6367b272d34fe0d1178b053a99c258abca7195ecda99ac5a7e8e192c698"
|
||||
"signature": "sha256:60b7dd24deaf8929b5cdf8bc775a6bcfea306255a2fe7ef7e7773a6019198647"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -24,6 +24,8 @@
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../') # allow us to import book_format\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -250,7 +252,7 @@
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7fc878ec3d50>"
|
||||
"<IPython.core.display.HTML at 0x7f62500339e8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -0,0 +1,791 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:03a16f585bb3f4a954520990ebb17e6cf9ceb7f9e247874263f66bfe4ac0da5a"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Gaussian Probabilities"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: transparent;\n",
|
||||
" color: #000000;\n",
|
||||
" font-weight: 600;\n",
|
||||
" font-size: 11pt;\n",
|
||||
" font-style: bold;\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 110%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 12,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f8a50209cf8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 12
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Introduction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The last chapter ended by discussing some of the drawbacks of the Discrete Bayesian filter. For many tracking and filtering problems our desire is to have a filter that is *unimodal* and *continuous*. That is, we want to model our system using floating point math (continuous) and to have only one belief represented (unimodal). For example, we want to say an aircraft is at (12.34381, -95.54321,2389.5) where that is latitude, longitude, and altitude. We do not want our filter to tell us \"it might be at (1,65,78) or at (34,656,98)\" That doesn't match our physical intuition of how the world works, and as we discussed, it is prohibitively expensive to compute.\n",
|
||||
"\n",
|
||||
">So we desire a unimodal, continuous way to represent probabilities that models how the real world works, and that is very computationally efficient to calculate. As you might guess from the chapter name, Gaussian distributions provide all of these features.\n",
|
||||
"\n",
|
||||
"Before we go into the math, lets just look at a graph of the Gaussian distribution to get a sense of what we are talking about."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from stats import plot_gaussian\n",
|
||||
"\n",
|
||||
"plot_gaussian(mean=100, variance=15*15, xlabel='IQ', ylabel='percent')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f8a502092b0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Probably this is immediately recognizable to you as a 'bell curve'. This curve is ubiquitous because under real world conditions most observations are distributed in such a manner. In fact, this is the bell curve for IQ (Intelligence Quotient). You've probably seen this before, and understand it. It tells us that the average IQ is 100, and that the number of people that have IQs higher or lower than that drops off as they get further away from 100. It's hard to see the exact number, but we can see that very few people have an IQ over 150 or under 50, but a lot have an IQ of 90 or 110. \n",
|
||||
"\n",
|
||||
"This curve is not unique to IQ distributions - a vast amount of natural phenomena exhibits this sort of distribution, including the sensors that we use in filtering problems. As we will see, it also has all the attributes that we are looking for - it represents a unimodal belief or value as a probability, it is continuous, and it is computationally efficient. We will soon discover that it also other desirable qualities that we do not yet recognize we need.\n",
|
||||
"<p>\n",
|
||||
"<p>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Nomenclature"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"A bit of nomenclature before we continue - this chart depicts the probability of of a *random variable* having any value between ($-\\infty..\\infty)$. For example, for this chart the probability of the variable being 100 is roughly 2.7%, whereas the probability of it being 80 is around 1%.\n",
|
||||
"> *Random variable* will be precisely defined later. For now just think of it as a variable that can 'freely' and 'randomly' vary. A dog's position in a hallway, air temperature, and a drone's height above the ground are all random variables. The position of the North Pole is not, nor is a sin wave (a sin wave is anything but 'free').\n",
|
||||
"\n",
|
||||
"You may object that human IQs cannot be less than zero, let alone $-\\infty$. This is true, but this is a common limitation of mathematical modeling. \"The map is not the territory\" is a common expression, and it is true for Bayesian filtering and statistics. The Gaussian distribution above very closely models the distribution of IQ test results, but being a model it is necessarily imperfect. The difference between model and reality will come up again and again in these filters. \n",
|
||||
"\n",
|
||||
"You will see these distributions called *Gaussian distributions*, *normal distributions*, and *bell curves*. Bell curve is ambiguous because there are other distributions which also look bell shaped but are not Gaussian distributions, so we will not use it further in this book. But *Gaussian* and *normal* both mean the same thing, and are used interchangeably. I will use both throughout this book as different sources will use either term, and so I want you to be used to seeing both. Finally, as in this paragraph, it is typical to shorten the name and just talk about a *Gaussian* or *normal* - these are both typical shortcut names for the *Gaussian distribution*. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Gaussian Distributions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So let us explore how Gaussians work. A Gaussian is a *continuous probability distribution* that is completely described with two parameters, the mean ($\\mu$) and the variance ($\\sigma^2$). It is defined as:\n",
|
||||
"$$ \n",
|
||||
"f(x, \\mu, \\sigma) = \\frac{1}{\\sigma\\sqrt{2\\pi}} e^{-\\frac{1}{2}{(x-\\mu)^2}/\\sigma^2 }\n",
|
||||
"$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<p> Don't be dissuaded by the equation if you haven't seen it before; you will not need to memorize or manipulate it. The computation of this function is stored in stats.py. \n",
|
||||
"\n",
|
||||
"> **Optional:** Let's remind ourselves how to look at a function stored in a file by using the *%load* magic. If you type *%load -s gaussian stats.py* into a code cell and then press CTRL-Enter, the notebook will create a new input cell and load the function into it.\n",
|
||||
"\n",
|
||||
" %load -s gaussian stats.py\n",
|
||||
" \n",
|
||||
" def gaussian(x, mean, var):\n",
|
||||
" \"\"\"returns normal distribution for x given a \n",
|
||||
" gaussian with the specified mean and variance. \n",
|
||||
" \"\"\"\n",
|
||||
" return math.exp((-0.5*(x-mean)**2)/var) / \\\n",
|
||||
" math.sqrt(_two_pi*var)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<p><p><p><p>We will plot a Gaussian with a mean of 22 $(\\mu=22)$, with a variance of 4 $(\\sigma^2=4)$, and then discuss what this means. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from stats import gaussian\n",
|
||||
"plot_gaussian(22,4,mean_line=True,xlabel='$^{\\circ}C$',ylabel=\"Percent\")\n",
|
||||
"\n",
|
||||
"print('Probability of 22 is %.2f' % (gaussian(22,22,4)*100))\n",
|
||||
"print('Probability of 24 is %.2f' % (gaussian(24,22,4)*100))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"Probability of 22 is 19.95\n",
|
||||
"Probability of 24 is 12.10\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f8a50276630>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So what does this curve *mean*? Assume for a moment that we have a thermometer, which reads 22$\\,^{\\circ}C$. No thermometer is perfectly accurate, and so we normally expect that thermometer will read $\\pm$ that temperature by some amount each time we read it. Furthermore, a theorem called **Central Limit Theorem** states that if we make many measurements that the measurements will be normally distributed. If that is true, then this chart can be interpreted as a continuous curve depicting our belief that the temperature is any given temperature. In this curve, we assign a probability of the temperature being exactly 22$^{\\circ}C$ is $19.95\\%$. Looking to the right, we assign the probability that the temperature is 24$^{\\circ}C$ is $12.10\\%$. Because of the curve's symmetry, the probability of 20$^{\\circ}$C is also $12.10\\%$.\n",
|
||||
"\n",
|
||||
"So the mean ($\\mu$) is what it sounds like - the average of all possible probabilities. Because of the symmetric shape of the curve it is also the tallest part of the curve. The thermometer reads $22^{\\circ}C$, so that is what we used for the mean. \n",
|
||||
"\n",
|
||||
"> *Important*: I will repeat what I wrote at the top of this section: \"A Gaussian...is completely described with two parameters\"\n",
|
||||
"\n",
|
||||
"The standard notation for a normal distribution for a random variable $X$ is $X \\sim\\ \\mathcal{N}(\\mu,\\sigma^2)$. This means I can express the temperature reading of our thermometer as\n",
|
||||
"\n",
|
||||
"$$temp = \\mathcal{N}(22,4)$$\n",
|
||||
"\n",
|
||||
"This is an **extremely important** result. Gaussians allow me to capture an infinite number of possible values with only two numbers! With the values $\\mu=22$ and $\\sigma^2=4$ I can compute the probability of the temperature being $22\\,^{\\circ}C$, $20\\,^{\\circ}C$, $87.34\\,^{\\circ}C$, or any other arbitrary value.\n",
|
||||
"\n",
|
||||
"###### The Variance\n",
|
||||
"\n",
|
||||
"Since this is a probability distribution it is required that the area under the curve always equals one. This should be intuitively clear - the area under the curve represents all possible occurences, which must sum to one.\n",
|
||||
"\n",
|
||||
"This leads to an important insight. If the variance is small the curve will be narrow. To keep the area equal to 1, the curve must also be tall. On the other hand if the variance is large the curve will be wide, and thus it will also have to be short to make the area equal to 1.\n",
|
||||
"\n",
|
||||
"Let's look at that graphically:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"xs = np.arange(15,30,0.05)\n",
|
||||
"p1, = plt.plot (xs,[gaussian(x, 23, .2) for x in xs], label='var=0.2')\n",
|
||||
"p2, = plt.plot (xs,[gaussian(x, 23, 1) for x in xs], label='var=1')\n",
|
||||
"p3, = plt.plot (xs,[gaussian(x, 23, 5) for x in xs], label='var=5')\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f8a501220b8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 15
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So what is this telling us? The blue gaussian is very narrow. It is saying that we believe $x=23$, and that we are very sure about that $(90%)$. In contrast, the red gaussian also believes that $x=23$, but we are much less sure about that $(18%)$. Our believe that $x=23$ is lower, and so our belief about the likely possible values for $x$ is spread out - we think it is quite likely that $x=20$ or $x=26$, for example. The blue gaussian has almost completely eliminated $22$ or $24$ as possible value - their probability is almost $0\\%$, whereas the red curve considers them nearly as likely as $23$.\n",
|
||||
"\n",
|
||||
"If we think back to the thermometer, we can consider these three curves as representing the readings from three different thermometers. The blue curve represents a very accurate thermometer, and the red one represents a fairly inaccurate one. Green of course represents one in between the two others. Note the very powerful property the Gaussian distribution affords us - we can entirely represent both the reading and the error of a thermometer with only two numbers - the mean and the variance.\n",
|
||||
"\n",
|
||||
"The standard notation for a normal distribution for a random variable $X$ is just $X \\sim\\ \\mathcal{N}(\\mu,\\sigma^2)$ where $\\mu$ is the mean and $\\sigma^2$ is the variance. It may seem odd to use $\\sigma$ squared - why not just $\\sigma$? We will not go into great detail about the math at this point, but in statistics $\\sigma$ is the *standard deviation* of a normal distribution. *Variance* is defined as the square of the standard deviation, hence $\\sigma^2$.\n",
|
||||
"\n",
|
||||
"It is worth spending a few words on standard deviation now. The standard deviation is a measure of how much variation from the mean exists. For Gaussian distributions, 68% of all the data falls within one standard deviation($1\\sigma$) of the mean, 95% falls within two standard deviations ($2\\sigma$), and 99.7% within three ($3\\sigma$). This is often called the 68-95-99.7 rule. So if you were told that the average test score in a class was 71 with a standard deviation of 9.4, you could conclude that 95% of the students received a score between 52.2 and 89.8 if the distribution is normal (that is calculated with $71 \\pm (2 * 9.4)$). "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The following graph depicts the relationship between the standard deviation and the normal distribution. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from gaussian_internal import display_stddev_plot\n",
|
||||
"display_stddev_plot()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFuCAYAAABECkoSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1XXj/vHXYYOgyHCAoiZu3Lh3brI0R1laebf3trRS\nW2ZlZXuYDbUcmbNu9yy3OFERFRe4EBWRPc75/YG33+7f3XAA7zOu5z/6cORLAs7l4XM+bxARERER\nERERERERERERERERERERERERERERERERERERERERERG5bpa/+8l169bZsrOzS6tFRERERFzXmm7d\nunX+s5/w+LvflZ2dTb169UqkSERKTnBwMHPmzKFTp06mU1yO3vbm6G0v4tji4+P/8oPXrTRDRERE\nRESulgariIiIiNg1DVYRJ6XLeczR294cve1FnJMGq4iT0gO3OXrbm6O3vYhz0mAVEREREbumwSoi\nIiIidk2DVURERETsmgariIiIiNg1DVYRERERsWsarCIiIiJi1zRYRURERMSuabCKiIiIiF3TYBUR\nERERu6bBKiIiIiJ2TYNVREREROyaBquIiIiI2DUNVhERERGxaxqsIiIiImLXNFhFRERExK5psIqI\niIiIXdNgFRERERG7psEqIiIiInZNg1VERERE7JoGq4iIiIjYNQ1WEREREbFrGqwiIiIiYtc0WEVE\nRETErmmwioiIiIhd02AVEREREbumwSoiIiIidk2DVURERETsmgariIiIiNg1DVYRERERsWsarCIi\nIiJi1zRYRURERMSuabCKiIiIiF3zMB0gIuLICgqtJKdmkJaRy8XsPCweqQDYCnIJ8PUi0N+bKiH+\neLjr+QERkWulwSoicoVsNhuJJy/wW1wysQdS2H/8PIkn0sgrsP7fL1o9pujbzq9d/iFvT3duqFyO\n2uHlia5VgU6NqnBDpXJYLJZS/huIiDgmDVYRkb9hs9nYdTiVn37bz/Ltx0hOzfifX1M5qAyh5Xzx\n9/Vk/eqiH2tbvzIZ2fmcuZDNyXOZxB87R/yxc8zfkAhAlRB/ujWN4LaOtWlUI0TjVUTkb2iwioj8\niYzsPKavTmDmmv3EJ527/OPl/b3p2LAK7eqHUb9aEJGVAwnw87r88+GfF3076+U+l3/sYlYeB0+m\nsffoOdbtPcFvcckkp2bw/bK9fL9sL/WqBnF7p9rc0bkO/r7/998SEZEiGqwiIn9wITOXb5fuYdKi\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f8a50039be0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 16
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<p>\n",
|
||||
"<p>\n",
|
||||
"<div style=\"border:1px dotted black;background-color:#DCDCDC#\">**Sidebar**: An equivalent formation for a Gaussian is $\\mathcal{N}(\\mu,1/\\tau)$ where $\\mu$ is the *mean* and $tau$ the *precision*. Here $1/\\tau = \\sigma^2$; it is the reciprocal of the variance. While we do not use this formulation in this book, it underscores that the variance is a measure of how precise our data is. A small variance yields large precision - our measurement is very precise. Conversely, a large variance yields low precision - our belief is spread out across a large area. You should become comfortable with thinking about Gaussians in these equivalent forms. Gaussians reflect our *belief* about a measurement, they express the *precision* of the measurement, and they express how much *variance* there is in the measurements. These are all different ways of stating the same fact.</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Interactive Gaussians"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"For those that are reading this in IPython Notebook, here is an interactive version of the Gaussian plots. Use the sliders to modify $\\mu$ and $\\sigma^2$. Adjusting $\\mu$ will move the graph to the left and right because you are adjusting the mean, and adjusting $\\sigma^2$ will make the bell curve thicker and thinner."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import math\n",
|
||||
"from IPython.html.widgets import interact, interactive, fixed\n",
|
||||
"import IPython.html.widgets as widgets\n",
|
||||
"\n",
|
||||
"def plt_g (mu,variance):\n",
|
||||
" xs = np.arange(2,8,0.1)\n",
|
||||
" ys = [gaussian (x, mu,variance) for x in xs]\n",
|
||||
" plt.plot (xs, ys)\n",
|
||||
" plt.ylim((0,1))\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
"interact (plt_g, mu=(0,10), variance=widgets.FloatSliderWidget(value=0.6,min=0.2,max=4.5))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f8a50078a90>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 17,
|
||||
"text": [
|
||||
"<function __main__.plt_g>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Computational Properties of the Gaussian"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Recall how our discrete Bayesian filter worked. We had a vector implemented as a numpy array representing our belief at a certain moment in time. When we performed another measurement using the `sense()` function we had to multiply probabilities together, and when we performed the motion step using the `update()` function we had to shift and add probabilities. I've promised you that the Kalman filter uses essentially the same process, and that it uses Gaussians instead of histograms, so you might reasonable expect that we will be multiplying, adding, and shifting Gaussians in the Kalman filter.\n",
|
||||
"\n",
|
||||
"A typical textbook would directly launch into a multipage proof of the behavior of Gaussians under these operations, but I don't see the value in that right now. I think the math will be much more intuitive and clear if we just start developing a Kalman filter using Gaussians. I will provide the equations for multiplying and shifting Gaussians at the appropriate time. You will then be able to develop a physical intuition for what these operations do, rather than be forced to digest a lot of fairly abstract math.\n",
|
||||
"\n",
|
||||
"The key point, which I will only assert for now, is that all the operations are very simple, and that they preserve the properties of the Gaussian. This is somewhat remarkable, in that the Gaussian is a nonlinear function, and typically if you multiply a nonlinear equation with itself you end up with a different equation. For example, the shape of `sin(x)sin(x)` is very different from `sin(x)`. But the result of multiplying two Gaussians is yet another Gaussian. This is a fundamental property, and the key reason why Kalman filters are possible."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Computing Probabilities with scipy.stats"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"In this chapter I have used by custom written code for computing Gaussians, plotting, and so on. I chose to do that to give you a chance to look at the code and see how these functions are implemented. However, Python comes with \"batteries included\" as the saying goes, and it comes with a wide range of statistics functions in the module scipy.stats. I find the performance of some of the functions rather slow (the scipy.stats documentation contains a warning to this effect), but this is offset by the fact that this is standard code available to everyone, and it is well tested. So let's walk through how to use scipy.stats to compute various things.\n",
|
||||
"\n",
|
||||
"The scipy.stats module contains a number of objects which you can use to compute attributes of various probability distributions. The full documentation for this module is here: http://http://docs.scipy.org/doc/scipy/reference/stats.html. However, we will focus on the norm variable, which implements the normal distribution. Let's look at some code that uses `scipy.stats.norm` to compute a Gaussian, and compare its value to the value returned by the `gaussian()` function."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from scipy.stats import norm\n",
|
||||
"print (norm(2,3).pdf(1.5))\n",
|
||||
"print (gaussian(x=1.5, mean=2, var=3*3))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"0.131146572034\n",
|
||||
"0.13114657203397997\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 18
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The call `norm(2,3)` creates what scipy calls a 'frozen' distribution - it creates and returns an object with a mean of 2 and a standard deviation of 3. You can then use this object multiple times to get the probability of various values, like so:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"n23 = norm(2,3)\n",
|
||||
"print ('probability of 1.5 is %.4f' % n23.pdf(1.5))\n",
|
||||
"print ('probability of 2.5 is also %.4f' % n23.pdf(2.5))\n",
|
||||
"print ('whereas probability of 2 is %.4f' % n23.pdf(2))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"probability of 1.5 is 0.1311\n",
|
||||
"probability of 2.5 is also 0.1311\n",
|
||||
"whereas probability of 2 is 0.1330\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 19
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"If we look at the documentation for `scipy.stats.norm` <a href=\"http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html#scipy.stats.normfor\">here</a>[1] we see that there are many other functions that norm provides.\n",
|
||||
"\n",
|
||||
"For example, we can generate $n$ samples from the distribution with the `rvs()` function."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print (n23.rvs(size=15))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[ 0.38741053 -4.91803911 -2.00879426 -1.15175952 2.63354369 -0.96097707\n",
|
||||
" 2.45698146 4.22587531 3.69924957 -0.27811435 -0.94132557 4.96510082\n",
|
||||
" 3.43324112 4.09462176 0.6446632 ]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 20
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can get the *cumulative distribution function (CDF)*, which is the probability that a randomly drawn value from the distribution is less than or equal to $x$."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"# probability that a random value is less than the mean 2\n",
|
||||
"print (n23.cdf (2))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"0.5\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 21
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can get various properties of the distribution:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print ('variance is', n23.var())\n",
|
||||
"print ('standard deviation is', n23.std())\n",
|
||||
"print ('mean is', n23.mean())"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"variance is 9.0\n",
|
||||
"standard deviation is 3.0\n",
|
||||
"mean is 2.0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 23
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"There are many other functions available, and if you are interested I urge you to peruse the documentation. I find the documentation to be excessively terse, but with a bit of googling you can find out what a function does and some examples of how to use it. Most of this functionality is not of immediate interest to the book, so I will leave the topic in your hands to explore. The tutorial is quite approachable, and I suggest starting there. <a href=\"http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html\">tutorial</a>[2]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Summary and Key Points"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The following points **must** be understood by you before we continue:\n",
|
||||
"\n",
|
||||
"* Normal distributions occur throughout nature\n",
|
||||
"* They express a continuous probability distribution\n",
|
||||
"* They are completely described by two parameters: the mean ($\\mu$) and variance ($\\sigma^2$)\n",
|
||||
"* $\\mu$ is the average of all possible values\n",
|
||||
"* $\\sigma^2$ represents how much our measurements vary from the mean"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"References"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"[1] http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html#scipy.stats.normfor\n",
|
||||
"\n",
|
||||
"[2] http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
+42
-40
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:689fdab3b9385731104bb925d50f2360185797210ca2900cef719d1f11561ea8"
|
||||
"signature": "sha256:1cf32a918b0518a8dbaabb862de993dcbd8cd2de501bc94b1f4be396791bea47"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -24,6 +24,8 @@
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../') # allow us to import book_format\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -250,7 +252,7 @@
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7fad5e7be860>"
|
||||
"<IPython.core.display.HTML at 0x7f45ed9179e8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -361,7 +363,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad4976dc88>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ed9179b0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -556,7 +558,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41ad3828>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccc52eb8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -603,7 +605,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d9f8d0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccf14898>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -691,7 +693,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAGDCAYAAAA23OZEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGehJREFUeJzt3XmQ1/Wd5/FXHzQ0NjeIyKI44EXaq9TMZBIhSKJrALOl\nJk4kM9mNbsUxWzncpDIzWbPWsGV2sjtTldra0UxGJ8eYqYh4jTCZLY8BJzoaFYNGdERAPMBIc4jQ\n3fS1f7j2fjqA3Qj9+zX4eFRRxe/3+/D7ve361q+efvt71Dz//PM9AQAAkiS11R4AAACGEoEMAAAF\ngQwAAAWBDAAABYEMAAAFgQwAAIX6ag/wm7Zs2ZLW1tZqjwEAwBGsoaEhkydP3udrQy6QW1tbc+qp\np1Z7DOhjwoQJueOOOzJnzpxqjwJ7sX0yVNk2GcrWrFmz39ccYgEAAAWBDAAABYEMA+TQH4Yy2ydD\nlW2Tw5FAhgHyJc9QZvtkqLJtcjgSyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDI\nAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAA\nUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQ\nyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgA\nAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQ\nEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDI\nAABQEMgAAFAQyAAAUBDIAABQEMgAAFAQyAAAUBDIAABQqK/2AADAkefN3Xvy6o7XU1dbmzHDu9PY\nIDk4fFR0a/3a176Wf/mXf0lra2umTp2aL3/5y5k3b14lRwAABtGzL7Xkfy59Is9u3JqtO9tSW1uT\nSWMac9aMSfnjy8/NlPFN1R4R+lXRQL7qqqtyww03pKGhIT//+c/zhS98Ib/4xS/S2NhYyTEAgEHw\nsyc25LofPJzXtu7q8/zO3XuybtOOrFr7Rm7+6sdz0r8ZV6UJYWAqegzyKaeckoaGhvT09KSjoyNH\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41c5c470>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccdb60b8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -718,7 +720,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad4196b320>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccd825c0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -745,11 +747,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAGDCAYAAADUAP09AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0XNWdL/rvqXnSUCrJkizJI7ZlLNuAMaOxMIQQQkg6\nhDRJ6Az0FBrSw8tL0sBaTQbn0Z1Ourm3Xzqd+7pJcq8zdSeQQDqBMNsGzGwDNpI82xqsqTTWPJ33\nxzn7DFUl6UgeVHJ9P2uxsEpVR8fL+p3923v/9t5SV1eXDCIiIiIimpFtvm+AiIiIiGihYPJMRERE\nRGQRk2ciIiIiIouYPBMRERERWcTkmYiIiIjIIibPREREREQWOeb7BqwaHh5GPB6f79sgIiIiovOc\ny+VCfX190e8tmOQ5Ho9j7dq1830bNAehUAiPPvoo2tvb5/tWiMoKY49ofjD2Fr6Ojo4pv8eyDSIi\nIiIii5g8ExERERFZxOSZzgmW3BDND8Ye0fxg7J2/mDzTOcGHCNH8YOwRzQ/G3vmLyTMRERERkUVM\nnomIiIiILGLyTERERERkEZNnIiIiIiKLmDwTEREREVnE5JmIiIiIyCImz0REREREFjF5JiIiIiKy\niMkzEREREZFFTJ6JiIiIiCxi8kxEREREZBGTZyIiIiIii5g8ExERERFZxOSZiIiIiMgiJs9ERERE\nRBYxeSYiIiIisojJMxERERGRRUyeiYiIiIgsYvJMRERERGTROUuen3nmGdx+++1Yv3497rvvPu31\ndDqN+++/H5dccgm2bduGJ5544lzdEhERERHRrDjO1Q+qrKzEn/7pn+Lll19GIpHQXv/Rj36Ew4cP\nY9euXXjvvffw+c9/HhdffDEaGhrO1a0REREREVlyzkaeL7vsMtxwww2oqqoyvf7kk0/i05/+NAKB\nAC677DJcfPHFePrpp8/VbRERERERWXbORp4FWZZNXx8/fhzLly/Hl770JVx33XVYuXIljh07dq5v\ni4iIiIhoRuc8eZYkyfR1PB6Hz+fDoUOH0NbWBr/fj/7+/qKfDYVC5+IW6QxzOp0A+O9HdK4x9ojm\nB2Pv/DbvI89erxfxeByPPfYYAOCb3/wm/H5/0c9u375d+/PWrVvR3t5+9m6UiIiIiMrCzp07sWvX\nLu3rbdu2TfneeR95XrZsGY4cOYJ169YBAI4cOYLrr7++6Gfvvvtu09fhcPjs3CSdUaLnzX8vonOL\nsUc0Pxh7C09bWxva2tq0rzs6OqZ87zlbMJjL5ZBMJpHNZpHNZpFKpZDJZHDTTTdhx44dmJycxKuv\nvop9+/bhhhtuOFe3RURERERk2Tkbef71r3+N+++/X/v68ccfxxe+8AXcddddOHr0KNrb21FVVYUH\nH3wQ9fX15+q2iIiIiIgsk7q6uuSZ3zb/uru7sXbt2vm+DZoDTl8RzQ/GHtH8YOwtfB0dHWhpaSn6\nPR7PTURERERkEZNnIiIiIiKLmDwTEREREVnE5JmIiIiIyCImz0REREREFjF5JiIiIiKyiMkzERER\nEZFFTJ6JiIiIiCxi8kxEREREZBGTZyIiIiIii5g8ExERERFZxOSZiIiIiMgiJs9ERERERBYxeSYi\nIiIisojJMxERERGRRUyeiYiIiIgsYvJMRERERGQRk2ciIiIiIouYPBMRERERWcTkmYiIiIjIIibP\nREREREQWMXkmIiIiIrKIyTMRERERkUVMnomIiIiILGLyTERERERkEZNnIiIiIiKLmDwTEREREVnE\n5JmIiIiIyCImz0REREREFjF5JiIiIiKyiMkzEREREZFFTJ6JiIiIiCxi8kxEREREZBGTZyIiIiIi\ni5g8ExERERFZxOSZiIiIiMgiJs9ERERERBYxeSYiIiIisojJMxERERGRRUyeiYiIiIgsYvJMRERE\nRGQRk2ciIiIiIouYPBMRERERWcTkmYiIiIjIIibPREREREQWMXkmIiIiIrKIyTMRERERkUVMnomI\niIiILGLyTERERERkEZNnIiIiIiKLmDwTEREREVlUMslzV1cXPvGJT2DTpk34wAc+gGeeeWa+b4mI\niIiIyKRkkuevfOUruPbaa/Hmm2/igQcewJe+9CWMjY3N920REREREWlKJnk+evQobrzxRgDAVVdd\nBbfbjZ6ennm+KyIiIiIiXckkz9dccw2efPJJZLNZvPjiiwgEAli9evV83xYRERERkcYx3zcg3Hvv\nvbjzzjvx3e9+Fy6XS/u/USgUmqe7o9PhdDoB8N+P6Fxj7BHND8be+a0kkudEIoHPfe5zuO+++/C+\n970Pb731Fu6++2786le/wuLFi7X3bd++Xfvz1q1b0d7ePh+3S0RERETnkZ07d2LXrl3a19u2bZvy\nvSWRPB88eBDRaBQ33HADAGDTpk1oaWnBvn37TMnz3XffbfpcOBw+p/dJcyN63vz3Ijq3GHtE84Ox\nt/C0tbWhra1N+7qjo2PK95ZEzXNzczMSiQSeeeYZyLKMd999F0eOHMGKFSvm+9aIiIiIiDQlMfJc\nU1ODhx56CA899BC+8pWvIBQK4f7770dra+t83xoRERERkaYkkmcAuO6663DdddfN920QEREREU2p\nJMo2iIiIiIgWAibPREREREQWMXkmIiIiIrKIyTMRERERkUVMnomIiIiILGLyTERERERkEZNnIiIi\nIiKLmDwTEREREVnE5JmIiIiIyCImz0REREREFjF5JiIiIiKyiMkzEREREZFFTJ6JiIiIiCxi8kxE\nREREZBGTZyIiIiIii5g8ExERERFZxOSZiIiIiMgiJs9ERERERBYxeSYiIiIisojJMxERERGRRUye\niYiIiIgsYvJMRERERGQRk2ciIiIiIouYPBMRERERWcTkmYiIiIjIIibPREREREQWMXkmIiIiIrKI\nyTMRERERkUVMnomIiIiILGLyTERERERkEZNnIiIiIiKLmDwTEREREVnE5JmIiIiIyCImz0RERERE\nFjF5JiIiIiKyiMkzEREREZFFTJ6JiIiIiCxi8kxEREREZBGTZyIiIiIii5g8ExERERFZxOSZiIiI\niMgiJs9ERERERBYxeSYiIiIisojJMxERERGRRUyeiYiIiIgsYvJMRERERGQRk2ciIiIiIouYPBMR\nERERWcTkmYiIiIjIIibPREREREQWMXkmIiIiIrKoZJLnRCKBBx54AJdffjk2b96Mr3/96/N9S0RE\nREREJo75vgHhwQcfRHd3N377298iFArh8OHD831LREREREQmJZE8JxIJPPbYY3j00UdRW1sLAFi1\natU83xURERERkVlJlG0cP34ckiThmWeewdVXX42bb74ZzzzzzHzfFhERERGRSUmMPEciEaTTafT0\n9OD555/H3r17cdddd+Gpp55CXV2d9r5QKDSPd0lz5XQ6AfDfj+hcY+wRzQ/G3vnNcvLc19eHN954\nA6Ojo7j11ltRUVGB/fv3IxQKobGx8bRuwuPxIJvN4s4774TL5cLll1+O5cuX4+2338b73vc+7X3b\nt2/X/rx161a0t7ef1s8lIiIiItq5cyd27dqlfb1t27Yp32spee7s7MTPfvYzrFixAkePHkU6nQYA\n9Pf34+2338Ydd9xxWjfc0tICSZJmfN/dd99t+jocDp/Wz6VzQ/S8+e9FdG4x9ojmB2Nv4Wlra0Nb\nW5v2dUdHx5TvtZQ8P/vss7jllltw6aWX4hvf+Ib2+po1a/D666+fxq0qqqqqsHnzZvzoRz/CAw88\ngH379uHYsWPYuHHjaV+b5tcvdx/CM2+/ALtNwi2XLcUHLl0237dEVBb2dJzCz3ftRiyZxhWrF+HO\n96+DzTbzIAURnZ4jp8Zw//9+FadGIli9uBJ//ZGL4PM45/u26AyylDwPDw9j5cqVBa/7fD4kEokz\nciMPPvgg7rvvPmzevBn19fX49re/bap3poUlm8vhaztewQ+eOqC99uuXDuJLH9uEv/noxZZmGoho\nbn78XAfu/+FLyOZkAMDvXj2C1w8O4KG72uF1lcRSF6Lz0svv9eFPH3oa47EUAOApALve7cGP/u8b\nUR/0ze/N0Rlj6SkaCAQwODiIYDBoev3EiRMFr81Vc3MzduzYcUauRfPvmz99DT946gBcDhu+9tl2\nRBIp/MNPX8Z3HnkTbqcdd9/CWQWis+HXLx/G3z78IgDgLz58CdYuqcX9//E8fvPqUQDA9//q+vm8\nPaLzVsfJEdzxrSeQyuTwgc0r8YnrLsRXf/gC3jk2jD988Ld4+u9vhcthn+/bpDPAUvK8efNmPP74\n47jpppsgyzKGh4dx+PBhPP3001y0RwUO9ozi4d/vh02S8JO/vQm3XLMeALA05MHn/+VZPPSrt/DR\nqy9AY41/nu+U6PwSiafwjZ+8CgD46h9dgfv+6FoAwIVNFbjla4/hN68exacPrMXV6xbP410SnX9k\nWcbf/Z+XkcrkcNs1q/C/7/0o7HYbLllWhT/4xm9wuG8MP/j9Adx184b5vlU6Ayzt87x161Zs3LgR\nv/zlL5HJZLBjxw787ne/w6WXXoqrr776bN8jLSCyLOOrO/Ygm5PxR9e34qoL9Ub6Q5evwE2XLkMs\nmcHf/+dr83iXROen//fxtzEwFsPFK+vwpzfqC1/WLqnBX374IgDAV3fsQSabm69bJDov/e7149jT\ncQrBgBtf//SVsNuV9CpU6cX2z1wJAHjo0bcwOBabz9ukM8Ry8dv73/9+tLe3Y2hoCABQV1cHt9t9\n1m6MFqY9Haewa38vqnwufPm2Swu+/3d3XI5n953EIy8exhduuQirm89M2Q9RuQtPxPH//e4dAMDX\nP31lweLAP//gevzshU50dI/g1y8fwW3X8BRXojNBlmX8w38pmyd8+eOXotpvzo2u3dCC91Line truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41aab0f0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccdb60b8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 44
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -776,7 +778,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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\nbEXUPDc1NSGVSmHr1q2QZRn79+9HZ2cnli1bttCXRkRERESkqYie55qaGnz3u9/Fd7/7XXzta1+D\nz+fDQw89hFWrVi30pRERERERaSoiPAPAddddh+uuu26hL4OIiIiIaFoVUbZBRERERPRBwPBMRERE\nRKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8ExER\nERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4Mz0RE\nREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQTwzMR\nERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBM\nRERERKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8\nExERERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4M\nz0REREREOjE8ExERERHpxPBMRERERKQTwzMRERERkU4Mz0REREREOjE8ExERERHpxPBMRERERKQT\nwzMRERERkU4VE55TqRS+8Y1v4NJLL8XFF1+MP/uzP1voSyIiIiIiKmNa6AsQHnnkEfT19eHXv/41\nfD4fjh8/vtCXRERERERUpiLCcyqVwjPPPIOnnnoKtbW1AIAVK1Ys8FUREREREZWriLKN7u5uSJKE\nrVu34sorr8Stt96KrVu3LvRlERERERGVqYie53g8jmw2i/7+fmzbtg27d+/G/fffjy1btsDv92vH\n+Xy+BbxKoqmZzWYAbJ9Uedg2qZKxfdIHle7wPDg4iPfffx9jY2O444474Ha7ceDAAfh8PixatOis\nLsJmsyGfz+O+++6DxWLBpZdeiqVLl2Lv3r244YYbtOMefvhh7ffXXHMNNm3adFZ/LhERERHR9u3b\nsWPHDu315s2bpz1WV3g+fPgwHn/8cSxbtgxdXV3IZrMAgOHhYezduxef//znz+qClyxZAkmSTnnc\nAw88UPY6HA6f1Z9LNBtErwnbI1Uatk2qZGyfVEna29vR3t6uve7o6Jj2WF01zy+//DI+9rGP4Z57\n7oHRaNR+vnLlSvT29p7FpSq8Xi8uvvhi/OQnP0Eul8P777+PEydOYN26dWf92URz6bl3unDnN3+J\nL//jiwhFkgt9OUSa/mAMv/O3v8Zdf/afeHVf30JfDpGmUJDxg1/vw+1/8gv86b/vQCaXX+hLIjot\nunqeQ6EQ2traTvq5w+FAKpWalQt55JFH8OCDD+Liiy9GfX09/uZv/qas3pmo0jz3Thfu/4eXtdfv\nHOrDf/7xbXDYzAt4VUTAaCyFz/zVb3BiOAoAeP7d43jsax/B1e2LF/jKiIBv/eI9fO+5vQCAF9/r\nwrG+AP7+/mt1jUATVQJdPc8ulwuBQOCkn/f09KC6unpWLqSpqQmPPvoodu/ejRdeeKGs1pmo0vQH\nY/iDf34VAHDfLevQXOfBvhMh/OnP3l7YCyMC8NV/24ETw1GsaanFXZtWI5eX8bt/vxXjE+mFvjQ6\nx728pxffe24vjAYJf3jnJXDazPjP14/jZ9sOL/SlEemmKzxffPHFePbZZ3HgwAHIsoxQKIR3330X\nzz//PC666KK5vkaiivOjLQeRzubx0YuX4vt/cAue/v/ugiQBT+44yvINWlDHB8fx4s4e2MxGPPvn\nn8K//9/fwmWrGhBJZPAfrx5Z6Mujc9w//9c+AMD/+eRF+Mvfvg7/8KWbAQA/+PU+FAryQl4akW66\nwvM111yDdevW4Ze//CVyuRweffRR/OY3v8FFF12EK6+8cq6vkaiiTKSyeFwNIb//sXWQJAlrW/24\nYUMzMrkCHn1l+kkGRHPtx1sOAgDuuHI5mvweGAwS7r/1Au29XL6wkJdH57BDvWG81TEEp82Me25c\nAwD49OY1aPQ5cWI4im2szacPCN1L1d10003YtGkTgsEgAMDv98Nqtc7ZhRFVqufe7kI0kcFFK+qx\nvq1Yl//FW9rx0q5ePPbyYfyvj29g/R7Nu2QmhydfOwYA+B+3FGeNX7++Ga31HnSPRPHqvn7csKF5\noS6RzmGPvayUZnxm03nwOCwAAJPRgPtuXIu/+I938ejLHbh+PdsmVb7T2mEwl8vB5XLB5XIhmUxi\nfHwc4+Pjc3VtRBVp625lhZk7r1pe9vMr1zSiodqJ4bEJHOwZXYhLo3Pc2x1DmEhl0d7qw6olNdrP\nDQYJd16ptFfRfonmkyzLJffOFWXv3aHeS187MIBUJjfv10Z0unT1PG/fvh3bt2/X1neerHLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41c147f0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce35a90>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -843,7 +845,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAGDCAYAAAAs4AbKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYU9fjBvD3hi2IQCxUQFG0Cg4UkboQFQWLOFp3VdSq\ndRRH+VZxo3XVrXVVW2nrKE60orW2KIKjDqhaW2XUjeBCUKYykt8f/JIaZtgheT/P4yO59+Scc+/N\nhTcn594IMTExUhARERERaShRdXeAiIiIiKg6MRATERERkUZjICYiIiIijcZATEREREQajYGYiIiI\niDQaAzERERERaTQGYiIluLu7w87OTv4vISGhurtU5Q4fPlzktkdGRirsH29v72rooXorbv8DwOzZ\ns+Hm5lbFvcqzadMm2NnZVUvbqqI69z8RlR8DMakdNzc3DB8+vMDyQ4cOwc7ODvPnzy91nbNnz8bq\n1asxZMiQiuhitZOFq8L+OTg4FPk8QRAKXW5ra4vVq1dj1apVsLW1LbLc206dOoWdO3eWeRsq06NH\njxT2ib29Pdq3b49x48bh0qVL1d29QgmCoNR+V9aPP/6IU6dOVUvbFUX2Or948aLC8gcPHsDOzg6b\nN2+u0PbKuw8uX75c4X1SRnR0NHx8fNC+fXu0bt0aHh4e8PPzw19//VVo+U2bNuHKlStV3EuiyqVd\n3R0gqgz5/zCdOnUK/v7+8PDwwJIlS0pdX48ePQAA2dnZOHDgQIX0URVMnDgRTZo0UVimpaVVaNkP\nP/wQffr0ga6uboF1ZmZm6Nu3LwDg4MGDSrV96tQpXLlyBaNHjy5lr6tOz5490atXL+Tm5uL+/fvY\nu3cvxo0bhx07dqBjx47V3T0FS5cuhUQiqbD6du3ahfbt26Nnz54llp08eTImTJhQYW3XVFJp+b7n\n6sqVK9iyZQumTJlSQT0qWXR0ND7++GOYmppizJgxsLCwQEJCAn777TeEhYWhdevWBZ6zZcsWCIKA\n999/v8r6SVTZGIhJ7V2+fBm+vr54//33sXbtWpUcyaouHTp0UDrYiUSiQsOwOnvvvffkQR/Imzoz\ncOBABAQEqFwg1tLSKvLNjDq3TeWzdetWCIKAAwcOoG7duvLlU6ZMwdOnT6uxZ0RVi1MmSK3dunUL\nn332GZo2bYqtW7dCR0dHYf2RI0cwbtw4dOnSBa1atYKbmxuWLVuGlJSUMrVnZ2eHlStXws3NDZ07\nd8bZs2fh5+cHR0dHTJ06FVlZWfKyoaGh8PHxQffu3dGqVSu4uLhgzpw5Bf4IyeZnPnz4EJ988gkc\nHR3Rq1cv/Pzzz2XqY2n16dOnwuZPvz0V4eeff0ZCQoJC3fk/Ls7KysLGjRvh7u6OVq1aoXv37li/\nfj1ycnIK1C3bT5mZmVi4cCE6duwIR0dHDBw4EE+ePClzn9/WokUL1KlTB48ePVJYLvto/uHDh1i/\nfj1cXV3RunVr9O3bFzdv3pSXS0lJwbJly9C1a1e0atUKvXr1wo8//lignbS0NPj7+6N9+/ZwcnLC\nnDlzkJGRUaBcUlKSwv4raQ7rvXv38MUXX6Bz585wcHCAl5cXtm7ditzcXIXtkB3nI0eOKNQfERGh\nUJ+jo6PC+qJkZGTgq6++gqurK1q2bAl3d3ds27atwIiqt7c3vL29ER4ejn79+qFNmzYYNGgQbt26\nVex2VQTZHODw8HD07t0bDg4O6N+/P8LDwwuUvXfvHsaNG4c2bdrAxcUF3377baF1KnuOy/bfli1b\nFB7b2dlhzpw5CmWlUil27twJLy8vODg4wMXFBYsXL0Z6enqZtjs2NhYNGzZUCMMyFhYW8p9l55fs\nOG/evLnY3wt3797FtGnT0L59ezg4OGDw4ME4d+6cQpnLly/Dzs4OJ06cwGeffQZHR0e4uLhg9erV\nhZ7jRJWJI8Sktu7fv4/x48fD3NwcO3bsQK1atQqU+f7772Fubo5x48bByMgI0dHR2LdvH/7++2/s\n27evTO2GhIRg/Pjx+PHHHzF16lR069YNEyZMwMaNGxESEgIvLy8AwIEDB/Dy5Ut8/PHHqFu3Lu7f\nv4/AwEBcuXIFv/76a4HRWB8fH7i6usLd3R2HDh3CnDlzSgwiJUlLS0NSUpLCMiMjI4W2Z8yYgdTU\nVERERJR7uohYLMbq1asBAPv378edO3cwd+5c+fpmzZrJf5ZIJJg8eTIuX76MIUOGwM7ODtHR0QgI\nCMCTJ0+wcuXKQtuYMWMGkpOTMWHCBIhEIly4cAEvX77Eu+++W66+A3kBNCUlBba2toWuX7lyJR4+\nfIiRI0fC0NAQf/75J549e4YWLVogMzMTI0eORFxcHEaMGIEGDRogMjISK1asQEpKCqZNmyavx9fX\nF+fPn8fw4cNha2uLY8eO4cyZMwU+3TAyMlLYn48fPy6y7zExMRg+fDi0tLQwbNgw2NjY4OHDhwgM\nDMSoUaNgZGQEZ2dnrF69GlKpFF999RWaNGmiMG8+/3YvX74cOTk5+P3334udbzx9+nScO3cOAwcO\nRMuWLfHHH39gw4YNSExMLDCnPz4+HosXL8bHH38MQRCwY8cOTJgwAWfOnCnwhrYiCYKAly9fYsaM\nGfJz8uDBg/Dx8cHu3bvh6OgIIO9NzahRo5CVlYWJEydCR0cHe/bswZs3bwr8jlH2HJcdw99//x0h\nISHyxwDQoEEDhToXLFiAoKAg9OvXD6NHj0ZcXBz27NmDf//9F7t27Sr1J2AWFha4fv06YmNj0bRp\n0yLLeXh4oGHDhpBKpfDz84OHhwfc3d3l601NTeU///vvv/j4449Rp04djB8/HrVq1cKJEycwadIk\nfPfdd+jUqZNC3UuXLoWDgwNmzpyJq1evIiAgABkZGVi4cGGptoWoPBiISS0lJSVh7NixSEpKwowZ\nMxR+Wb8tICAA5ubmCstMTEywefNm3Lhxo9gLzIoyaNAgDB8+HCkpKdiwYQPmzp0LCwsLHD16FLGx\nsfJA/OWXXyqMwABAo0aNMGfOHJw+fRqenp4K64YMGSK/e0O3bt3Qo0cPhIaGlisQT506tcCyuXPn\nYtSoUfLH3bp1A1Ax86cNDAzkUxAuXLiAx48fK0xJeFtwcDAuXLiANWvWoE+fPvLlFhYWWL9+PSZM\nmIDGjRsXeJ5EIsFPP/0kDwajR48u89za169fIykpCRKJBPfv38e6desglUoV+vO2J0+eICgoSB50\nRowYIW87ICAA//77L/bs2QMnJycAecdUX18fAQEBGDNmDIyNjXH16lWcO3cOEyZMwP/+9z8AwODB\ng/HBBx/g1atXCu3p6uoq7M/iRu+XLFmC3NxcHDlyRCFkjR07Fvr6+gCA+vXro379+gCADRs2wNra\nusjjA0D+Gr1//z5CQkIKLRMZGYlz585h9OjR8tHOjz/+GD4+PggMDMSnn36qcB4kJCTg6NGj8jdH\ndevWxaxZs/DXX3+hXbt2RfalvKRSKTIyMrBkyRIMHjwYANC3b1+4ublh8+bNCAgIAAAEBgbi+fPn\n2LFjB1xcXAAA3bt3R58+fQoEYmXPcdk+lu3HovZ5REQEDh06BF9fX0ycOFG+vFmzZpgxYwbOnTsH\nV1fXUm33J598gsmTJ2PAgAHo1KkTOnXqhB49eshfB2+3ITsmfn5+aNq0aZH9XLJkCQwMDBAUFAQT\nExMAwLBhw9CvXz9s2LChQCC2tbXFtm3bAADDhw9Hbm4u9u/fj0mTJhXYf0SVhVMmSC3du3cPWVlZ\nqFevHtavX4/U1NRCy70dhmWjpbJRsIcPH5apbbFYDCDvQjMA8o8iTU1N8fLlS3m5t3/RZ2RkICkp\nCQ0bNiyy7V69esl/trS0hImJSbmnAvj5+eGHH35Q+Ofh4VGuOkujuIuQTp48CSMjI3Tq1AlJSUny\nf61atQKAAh/fy0ycOLHAKJlIVLZfdT/88AM6deoEFxcXjBw5EtHR0Zg8eTJGjBhRaPmxY8cWGNmX\ntf3bb7+hSZMmsLW1Vdie1q1b482bN7hx4wYAyO+I8HbY0NXVxQcffFDmi7aSkpIQGRkJLy+vAiOO\nderUgbZ25Y2NyO7KMWDAAIXlAwYMgEQiweXLlxWW29jYKHxS0Lx5cwCokvmsIpFIYb+bmprCxcUF\nkZGR8jc2Fy9ehJmZmTwMA0Djxo3RokWLAvWV9hwvycmTJyEIAj744AOF15Cs7aLOieJ069YNu3fv\nRseOHXHx4kWsWLEC7u7uGDduHJ49e1bq+pKSknDlyhV0794dEolE3sdXr16hTZs2+Pvvv/HmzRuF\n5+R/g9mvXz9IJBLeyYKqFEeISS0ZGhriu+++w9OnTzFp0iR89dVXWL58eYFyN2/exKZNmxAZGYm0\ntDSFdfl/aStL9rGuLGTILjbS1tZGdna2vNyDBw+wadMmnDt3rsDIX2Ft5x/JNjAwUKivLOzt7VXu\n4jCZBw8eIC0trcBoEpD38XZycnKhz8t/14zy6NevHz766COIRCIYGxujcePGxV5YWNiItcyDBw+Q\nlZVV6P4WBEE+dUUW/OrVq6dQxtLSsiybAACIi4sDULH7RlmyUGVlZaWwXLY9+YNuYa9zAOV+rRcm\n/xsnExMT+Wi5zLvvvos3b94gOTkZYrEYT548KXT6jaWlZYHXZGnP8ZI8ePAAUqlU4c3x29tS1DlR\nknbt2qFdu3bIyMhAREQEgoOD8csvv2D69OnYu3dvqeqSvdYOHDhQ6CdKsqkpb79ZyP9al+3fipr7\nT6QMBmJSS7J7x9rb26NXr144fPgw+vTpoxCu4uPjMWLECFhaWsLX1xf169eHjo4Obt68iTVr1pT7\nFkqFkdWZlpaGESNGQEtLCxMnToStrS309PTw9OlTzJ49u1LarolsbGywaNGiQtdZW1sXutLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad4196b668>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccdb67b8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1837,9 +1839,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAs0AAAGDCAYAAADQ9S0AAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VNXWwOHfmZLehySkQQot9ASp0ouAoGJDARt8CojA\ntSAiKnbscu1elauIci2AgAWkqYAIgoD0FkIglfQ6k5nMnO+PyMiQSnpkvc/DY3L2PnuvMx7jYmcX\n5dixYypCCCGEEEKICmkaOwAhhBBCCCGaOkmahRBCCCGEqIIkzUIIIYQQQlRBkmYhhBBCCCGqIEmz\nEEIIIYQQVZCkWQghhBBCiCpI0iyEuGyNGDGCDh062P8kJyc3dkgNbuXKlRU+++7dux0+n9tvv70R\nIhRCiKZBkmYhRLMwdOhQJk6cWOb68uXL6dChA48//vgltzlv3jxeeeUVxo8fXxchNrrzCXB5f7p2\n7VrhfYqilHs9MjKSV155hZdffpnIyMgK611o48aNLFmypMbPIIQQTZWusQMQQojqujhp27hxIwsW\nLOCqq67i2WefveT2hg0bBoDFYuGrr76qkxibgmnTptGmTRuHa1qttty648aNY+zYsTg5OZUp8/Pz\n45prrgHg66+/rlbfGzdu5Pfff+fOO++8xKiFEKJpk6RZCNEs7dy5kwceeIBevXrx2muvVWsU9HLR\np08f+vbtW626Go2m3IRZCCGEI5meIYRodg4fPsyMGTNo164d7777Lnq93qH8m2++4f/+7/8YMGAA\nXbp0YejQoTz//PPk5eXVqL8OHTrw0ksvMXToUK688kq2bNnC3LlziYmJYdasWZjNZnvdzZs3c999\n9zFkyBC6dOlC//79efTRR0lLS3No86233qJDhw6cOXOGyZMnExMTw8iRI1m1alWNYrxUY8eOrbP5\n3ImJifZ2Vq1aRXJyskPbb7/9tkN9s9nMm2++yYgRI+jSpQtDhgxh0aJFlJSUlGn7/OdkNBp58skn\n6du3LzExMdx4442kpqbWOGYhhLhUMtIshGhWTp8+zd13301AQAAfffQRbm5uZer897//JSAggP/7\nv//Dw8ODo0eP8sUXX3DgwAG++OKLGvW7YcMG7r77bj755BNmzZrF4MGDmTp1Km+++SYbNmxgzJgx\nAHz11Vfk5OQwYcIEWrRowenTp1m2bBm///47a9euLTOqe9999zFw4EBGjBjB8uXLefTRR+3JZk0V\n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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d8e5f8>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce35278>"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1847,7 +1849,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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\nHWyu2UTx7tl3PfK8JOkv77hRv1r2lwmrKxls/mzbUrNt9Up213ylYgrOPp8v+vvvfOc72rBhg1pa\nWpSVlaWenh5t2rRJkrRixQp5vV5JUlZWlrq7u7Vs2TJJUmNjo7Kzsy/6/iM+9ktK0+tvvKkdO7JU\nWVl5JTUBQFzs2LFDTU1NkiSPx6OKiookj+ji4t2z87PCOtbj0otvvq8dO3bQswEYKR49O+bNgZ/m\ncrkUDodVWFiolpYWTZ48WZLU0tKi2bNnS5IKCwvV2toa/R6/36+JEyde9P3+fPYsNbQ06cabbpLP\n59Px48cvZ1jGi/zNLlXruxhqtoMtNft8vmgozcvL086dO5M8otgMd89+4pGv68+/X6/RY8akdM+W\n7Plsf5ptNdtWr2RPzfHo2UOuce7q6tKOHTvU19envr4+/eu//qvy8/M1adIkVVVVaf369erq6tKu\nXbu0e/duzZkzR5JUVVWlxsZG+f1+dXZ2qr6+/pK7s10ulyQp1N9/xQUBgM0S0bM97kjPZl8KALsM\nOeMcCAT04x//WH/3d3+n9PR0TZkyRT/96U+VlpamRYsWqbW1VZWVlcrNzVVdXZ0KCgokSVOnTlVN\nTY2qq6sVDAY1f/78IZtwP00YAK5IInq2281kBwA7DRmcx4wZo+eee+7i35yWprq6OtXV1V30enV1\ntaqrq4ccBLMXADA8EtmzL3LiHQCkNCMeue0mOAOAYzDjDMBWRgRnj/vcMFiqAQDm87iY7ABgJ0OC\n8/k1ztz3AwDjudmXAsBSRgRnlmoAgHNE7hLSswHYxojgzKkaAOAcbOgGYCujgjMbTQDAfG6W1wGw\nlBHB2c1tPwBwDO4SArCVEcGZHdoA4BxuejYASxkRnNmhDQDOwfI6ALYyIjiz0QQAnIPJDgC2MiI4\ncxwdADgHx9EBsJURwfnCA1C47QcApuMuIQBbmRWcyc0AYLzIXUJJCnMkHQCLGBGc3a7IbT+SMwA4\nASdrALCREcGZM0EBwFlYrgHARkYFZxowADgDEx4AbGREcI6eqsFaOQBwBDdnOQOwkBHBmZkLAHAW\n7hQCsJERwZmZCwBwlshZzv3cKQRgESOCs4fd2QDgKDw9EICNjAjONGAAcBaOowNgIyOCM49vBQBn\nYY0zABsZEpxpwADgJNwpBGAjI4JztAGzyQQAHMHDpm4AFjIiOHMcHQA4C3cKAdjIqOBMAwYAZ+BO\nIQAbGRKcI5sDueUHAE4QOVWDO4UAbGJEcGaTCQA4C3cKAdjIiOBMAwYAZ+EYUQA2MiI4c5A+ADgL\ndwoB2MiM4Hy+AUs0YQBwAu4UArCREcFZogkDgJN4OFUDgIUMDM6crAEApnMz2QHAQsYEZ9bLAYBz\nXDiOjskOAPYwJjhHdmhz2w8AzMfyOgA2Mig404QBwClYqgHARsYEZ5owADhH9C4hPRuARYwJzh7W\nOAOAY3CXEICNjAvONGEAMJ+b4+gAWMiY4Ox2RR7fyg5tADAddwkB2Mic4Hx+JDRhADBf5Dg6JjsA\n2MSY4BxdqsFtPwAwHsvrANjIoOAcWapBEwYA03ESEgAbGROceXIgADgHx9EBsJExwdnDejkAcAwP\np2oAsJA5wTk645zkgQAAhsRSDQA2ijk4v/7667rpppv09NNPS5ICgYBqa2s1bdo0zZw5U1u3bh3w\n9evWrVN5ebnKysq0atWqoQdCEwaAYRP3nu1ieR0A+6TF8kXBYFA//OEPVVxcLNf5ZrlmzRr5/X41\nNTVp7969Wrx4sUpLSzV+/Hjt2bNHq1ev1saNG5WTk6MFCxaopKREVVVVl/wZ0fVyYaacAeBKJKZn\nM9kBwD4xzTg//vjjmjlzpsaMGRN9bdu2bVq4cKFycnJUVlam0tJSNTY2Rq/NnTtXxcXFKigo0Lx5\n89TQ0DDoz6AJA8DwSETPvnCXkMkOAPYYMjgfPXpUzz77rL75zW8OeL2trU1FRUVaunSpGhoaVFxc\nrAMHDgy4tnbtWq1cuVKTJk2KXrvkQAjOAHDFEtWzeXIgABsNuVRj5cqVevDBB5WRkTHg9Z6eHmVn\nZ6u5uVk+n09er1cdHR0Drvn9fh0+fFgVFRXq7u6+5M/Iy8vTiPPvn5NzlfLy8q6kJmOlp6dLUsrW\ndzHUbAebazZNonq2NztLkpSZlZ3Sf+42f7Ztqdm2eiW7a75SgwbnN954Q4cOHdKdd94ZfS18/uih\nrKws9fT0aNOmTZKkFStWyOv1Rq91d3dr2bJlkqTGxkZlZ2df8ucsX75chw55JLn15ltvqdw34YqK\nAoB42LFjh5qamiRJHo9HFRUVSR7RQIns2a+3uiV59Idmv6Rb41MQAFyBePTsQYPzu+++q927d+um\nm26Kvvbaa6+publZhYWFamlp0eTJkyVJLS0tmj17tiSpsLBQra2t0e/x+/2aOHHiJX/OkiLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41ce5d30>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce37a20>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2009,9 +2011,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d92a20>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccf11d30>"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2019,7 +2021,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAGDCAYAAADJfsOmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VPW9//H3mS2ThUB2trCDgGETBK0QKuIO2grVXq1a\npVavcL0/rbZCr9bWW+3i1db6sNXaVov1oijuyxU3KEKCyFYBkbCGACH7Ppnt/P4IGQxJSAJJDpx5\nPR8PH49k5uTMx09mwnu+8z3fr7F9+3ZTAAAAgE05rC4AAAAA6EoEXgAAANgagRcAAAC2RuAFAACA\nrRF4AQAAYGsEXgAAANgagRcAulBubq5Gjhypzz77zOpSACBqEXgB2NKyZcs0cuRIvfHGG83u8/v9\nGjdunK677rpuqcUwjG55HABAywi8AGxp2rRpkqScnJxm923cuFH19fWaPn16l9cxefJkbdq0SZMm\nTeryxwIAtMxldQEA0BXS0tI0cuRI5ebmNruv8bbGUNyVDMOQx+Pp8scBALSOEV4AtpWdna2CggLt\n37+/ye05OTlKTU3VqFGjJEmvvvqq5s2bp2nTpmnMmDGaMWOGfvnLX6qysrLZORvn5K5du1bPPvus\nLrjgAo0dO1YXX3yxVq5cGTnu1ltv1ciRIyP/rV27tsUaP/roI82fP1/nn3++xowZo6lTp2rhwoUq\nLCxsctwf/vAHjRw5Uvv27dNNN92kCRMm6OKLL9Zrr73W4nkLCwt1//33a/r06Ro7dqwuuugi/eY3\nv1FNTU2T4zZv3qx58+Zp0qRJGj9+vG644QZt3ry57eYCwGmEEV4AtjVt2jQ9/fTTysnJ0dy5cyVJ\ndXV12rRpk2bPnh057q9//avS09M1b948JSQk6Msvv9SSJUv0r3/9S0uWLGnx3M8995y2bdumq666\nSqmpqdqyZYsKCgoi98+bN0+zZs1SXl6ennrqqVbn8b700ksqLy/Xv/3bvyk1NVV79uzRCy+8oLVr\n1+rdd99tNjo8f/58ZWdn68ILL9TLL7+shQsXRkJ1o8LCQn3nO99RRUWFrr76ao0YMUJFRUV69dVX\ndcUVV0SOXbNmjW655RYNHTpUCxYskGEYeuWVV3TDDTdo6dKlGj58+Ik1HgBOMQReALY1fvx4JSQk\nKDc3NxJ4169fr2Aw2GQ6w1/+8help6c3+dlevXrpiSee0ObNmzV27Nhm596yZYvefPNN9ejRI3Jb\nOByOfD158mRJDSPCTz31VKs1/vznP1dGRkaT2wYPHqyFCxfqww8/1KWXXtrkvquvvlrXX3+9JOmb\n3/ymLrjgAn300UdNAu+jjz6qw4cP6/nnn28yd3jevHkKBAKRWn/2s59pyJAhevnll+V2uyVJc+bM\n0YUXXqgnn3xSjz32WKt1A8DphCkNAGzL7Xbr3HPPbTKPNycnRw6HQ1OnTo3c9vWwW11drdLSUg0Z\nMkSStG/fvhbPfe211zYJu5LkcHT8T+rXw25tba1KS0s1aNCgVh/74osvjnzdt29f9erVS4cOHYrc\nFg6HtXz5cp1zzjnNLpSLiYlRQkKCJGnr1q3at2+fLrnkElVVVam0tFSlpaXy+/0aNWoUy6gBsBVG\neAHY2rRp07R8+XLt3r1bgwcPVk5OjsaOHavExMTIMVu2bNEf/vAHrVu3TtXV1U1+vr6+vsXzDh06\ntFPq27t3r/7whz/on//8pyoqKtp87GNHomNjYyOjtpJUWlqq2tpaDRs27LiP2ximH3/8cT3++OPN\n7nc6ne3+fwCAUx2BF4CtNY7k5ubmKi0tTVu3btX8+fMj9xcUFOi6665T3759deeddyozM1Nut1tb\ntmzRI488ItM0Wzzv1wPziaqurtZ1110np9OpW2+9VUOGDFFMTIwKCwt17733tvrYnemOO+7QhAkT\nuvxxAMBKBF4Atta3b18NGzZMa9asUUZGhkKhkLKzsyP3f/DBB/L5fHr66afVv3//yO3HruzQFXJy\nclRcXKznnntOU6ZMidy+Zs2aEz5ncnKy4uPjtWPHjuMel5mZKUmKi4vTueeee8KPBwCnA+bwArC9\nadOmae3atcrJyVFycrKysrIi9zV+dP/1j/ADgYD+93//t8vraumxTdPU3//+9xM+p8Ph0IUXXqjc\n3FytW7euyX319fWRKRtZWVnq37+/Fi9e3GypMkk6ePDgCdcAAKcaRngB2N60adP0t7/9Ta+99lqz\n3dWys7MVExOj2267TVdffbXq6+v15ptvKhgMnvDj5efna/369ZKkXbt2SZJWrVqlAwcOSJLOOuss\nZWZmauLEiUpOTta9996r733ve3I4HFq+fLnKy8tP+LEl6a677tKaNWt0880365prrtGIESNUXFys\n1157Tb///e81cuRIGYahX/ziF7r11ls1e/ZsXXXVVUpLS1N+fr5WrFihrKwsPfzwwydVBwCcKgi8\nAGxv0qRJio2NVWVlZbPd1QYMGKA//elPevTRR/XII4+oR48emjVrlqZNm6abbrqpxfO1tqZuo88+\n+0yLFi1qcnzj0mSGYejhhx9WZmamEhMT9cwzz+hXv/qVHn/8cXk8Hs2cOVP3339/k3WCG3+urcdt\nlJ6erqVLl+qJJ57Q+++/ryVLlqhPnz6aOXNmZCqDJH3jG9/QCy+8oCeffFKLFy9WXV2d+vTpo4kT\nJ+q73/1uux4LAE4Hxvbt29u8KsLn8+mhhx7S//3f/ykcDmvWrFn62c9+1h31AQAAACelXSO8Dz30\nkPLz8/X2228rJSVFeXl5XV0XAAAA0CnaHOH1+XyaMmWKli1b1mnrTgIAAADdpc1VGvbs2SPDMPTB\nBx/ovPPO0+WXX64PPvigO2oDAAAATlqbUxqqq6sVCAS0f/9+ffzxx9qwYYNuu+02vf/++0pLS+uO\nGgEAAIAT1mbg9Xq9CoVCuummm+TxeDRlyhQNHjxYmzZt0syZMyU1bI15InvIAwAAAB1RVVWl0aNH\nd+hn2gy8mZmZbS6F43A4NGrUqA49MDpHSkqKli1b1mxtUXQP+m8dem8t+m8t+m8dem+tlJQUrVq1\nqsM/1+awbM+ePXX22Wfr2WefVTAY1Lp167R7926NGzfuhAoFAAAAulO7lyVbuHChzj77bGVkZOi3\nv/0t83cBAABwWmhX4G3cbx2nJqaTWIv+W4feW4v+W4v+W4fen3640swGeOFZi/5bh95bi/5bi/5b\nh96ffgi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA\n1gi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8\nAAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAA\nsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUC\nLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUCLwAAAGyNwAsAAABbI/ACAADA1gi8AAAAsDUCLwAA\nAGyNwAsAAABbI/ACAADA1gi8AAAAsDVXew66/vrrtWnTJjmdTknSRRddpF//+tddWhgAAADQGdoV\neCXp/vvv19y5c7uyFgAAAKDTtXtKg2maXVkHAAAA0CXaHXgfffRRnXPOObr55pu1c+fOrqwJAAAA\n6DTtmtLwk5/8RCNGjFAoFNKTTz6p22+/XW+//bZcrqM/npKS0mVFonVut1sS/bcK/bcOvbcW/bcW\n/bcOvbdWY/87yti+fXuH5iqYpqmJEydqyZIlGjFihCQpPz9fH3/8ceSY7OxsTZ8+/YQKQvsFCwtl\nfP65FAzKnDBBrsxMq0uKOo0vvEAgYHEl0YfeW4v+W4v+W4fed78VK1Zo5cqVkiSn06ns7GxldjDz\ntPuita8zDKPZnN7bb7+9yfclJSUncmq0kxEMKvGx32nxiytV6o7V/5vcRxUP/VLB+HirS4sqje/w\neb53P3pvLfpvLfpvHXrf/bKyspSVlSWpof+rVq3q8DnanMNbVVWlFStWyO/3y+/364knnlBqaqqG\nDRvW8YrRaVyVlYp9cYnuGnaxFg2ZqcBrb8hZUWF1WQAAAKecNgNvIBDQ7373O02ZMkVTp07Vxo0b\n9cc//jGyJi+sEUpIkH/GDCUH6iRJhedmK5SQYHFVAAAAp542pzQkJyfr1Vdf7Y5a0AFhj0fVd9+t\nXr94R/vLAtr/o58oPjHR6rIAAABOOWwtfBrzp6crZUAfSdLhWMIuAABASwi8p7nkHrGSpLJqn8WV\nAAAAnJoIvKe5pB5eSVJ5db3FlQAAAJyaCLynucYR3vIaAi8AAEBLCLynOUZ4AQAAjo/Ae5pjhBcA\nAOD4CLynueQjI7xlVQReAACAlhB4T3NJkRFeVmkAAABoCYH3NJfMHF4AAIDjIvCe5pKYwwsAAHBc\nBN7T3NdHeE3TtLgaAACAUw+B9zQXG+NWbIxL/mBYdfVBq8sBAAA45RB4beDo9sJMawAAADgWgdcG\nkhKOLE1G4AUAAGiGwGsDkd3WWJoMAACgGQKvDUR2W2OEFwAAoBkCrw0kJ7I0GQAAQGsIvDbA5hMA\nAACtI/DaQBKrNAAAALSKwGsDkYvWqrloDQAA4FgEXhuITGlgDi8AAEAzBF4bYJUGAACA1hF4bYDA\nCwAA0DoCrw00zuHlojUAAIDmCLw2EBnhramXaZoWVwMAAHBqIfDaQGyMSzFup+oDIfn8IavLAQAA\nOKUQeG3AMAz1io+RJJWxNBkAAEATBF6bSEpoCLwsTQYAANAUgdcmejUGXi5cAwAAaILAaxLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41af0be0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce73208>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2251,9 +2253,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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\nBQVht9tZuHAhADNmzKjc2/N/7d69+5T9QUVEREREalJxcTFdu3Y9o3OqFZTbtGnj8QlQpmkSFRVF\nVlYW3bp1AyArK4uhQ4ee0tZisdClS5fqlCG/Q3h4OPPnzycpKcnbpZyTNP7epfH3Ho29d2n8vUvj\n7z3h4eGsWrXqjM+r1lRuaGgoffv2Zfbs2TidTtatW0dOTg49e/YkOTmZOXPmUFxczLfffsumTZsY\nNmxYdS4nIiIiIlJramR7uGnTptG3b18iIiL461//SrNmzUhJSSE7O5ukpCRCQ0NJTU0lIiKiJmoW\nERERETnrqh2UW7duzZw5c07t2NeX1NRUUlNTq3sJOUu05MW7NP7epfH3Ho29d2n8vUvjX7/oLrpz\nmP7H6l0af+/S+HuPxt67NP7epfGvXxSURUREREQ8UFAWEREREfFAQVlERERExAMFZRERERERDxSU\nRUREREQ8UFAWEREREfFAQVlERERExAMFZRERERERDxSURUREREQ8UFAWEREREfFAQVlERERExAMF\nZRERERERDxSURUREREQ8UFAWEREREfFAQVlERERExAMFZRERERERDxSURUREREQ8UFAWEREREfFA\nQVlERERExAMFZRERERERDxSURUREREQ8UFAWEREREfFAQVlERERExAMFZRERERERDxSURUREREQ8\nUFAWEREREfFAQVlERERExAMFZRERERERDxSURUREREQ8UFAWEREREfFAQVlERERExAMFZRERERER\nDxSURUREREQ8UFAWEREREfFAQVlERERExAMFZRERERERDxSURUREREQ8qHZQHjt2LN27dyc+Pp74\n+HgeeOABABwOBw899BC9evVi8ODBLF68uNrFioiIiNQ132cfZmtugbfLkLPAtyY6efTRR7n66qur\nHJs9eza7du0iPT2djIwMxo0bR3x8PJGRkTVxSRERERGvW7szn7HPpOHv58Onfx5F2+Yh3i5JalCN\nLL0wTfOUY2lpaYwdO5bg4GASEhKIj49n2bJlNXE5EREREa9L37qPMU99xokyBxd0a0mLJsHeLklq\nWI0E5eeee47+/ftzyy23kJWVBUBubi7R0dFMmTKFzz77jJiYGHJycmriciIiIiJetXTDblKeXUJZ\nhYtrEzvy4sTB+Pnq1q+GptpLLx544AE6duyIy+Xi5ZdfZsKECXz66afY7XasViuZmZnExcVhs9nI\nz8/32Ed4eHh1y5Az5OfnB2jsvUXj710af+/R2HuXxr9mzEvfzp+eX47T5Wb8Zb147o5hWCzGr56n\n8feek2N/pqodlOPi4iq/njx5MnPnziUrK4ugoCDsdjsLFy4EYMaMGdhsNo99TJ8+vfLrxMREkpKS\nqluWiIiISI17Z+lmxj+/GLfb5L5r+jHjlkEYxq+HZKl9K1euJD09HQAfHx8SExPPuI8auZnvfxmG\ngWmaREVFkZWVRbdu3QDIyspi6NChHs+ZMGFCldcFBbpz9Gw7+dOsxto7NP7epfH3Ho29d2n8q2f2\nsgwenr0agClX9+aeUedRWFiIb1ERWCw4g395jbLGv3bFxcVVTuiGh4ezatWqM+6jWotpiouLWbly\nJRUVFVRUVPDiiy/StGlTYmNjSU5OZs6cORQXF/Ptt9+yadMmhg0bVp3LiYiIiHjFK598XxmSH72h\nH/de0QvDMLBt3Ej4yJGEjxqFdds2L1cpNa1aM8oOh4Pnn3+ee+65Bz8/P8477zxeeeUVfH19SUlJ\nITs7m6SkJEJDQ0lNTSUiIqKm6hYRERE560zT5Ln5G3hu/gYAnrx5IDde1BUA/yNHaJSSguXIEQAa\nTZiA4+OPcYRoi7iGolpBuUmTJnz00UeeO/b1JTU1ldTU1OpcQkRERMQrTNNkxntrefXTzVgMg+fG\nJXLNhR3/28Dtxigvr3xp2O3gcnmhUjlbtI+JiIiIyM/sPlTELakf8+qnm/G1GLxy55CqIRlwNG9O\n8WuvYVqtmI0aUTxzJo6wMC9VLGdDjd/MJyIiIlJf2SucvPzx97y0aBPlTjeNnOW8Y9nBBdGXU/Gz\ntiZQkpRExVdfgcVCRfPm3ihZziIFZRERETnn+JaWYvr54fppf13TNFm2YQ+PzfmaPYeLAfhj/vc8\nk72MFhUnOL7jWo9B2AQqIiNrs3SpRQrKIiIics4wTBPb119je/RRXC1bUjJ9OhkBjXn0na/5/Pu9\nAHRp04S/d/Hh4od+vA/LBMxf2fpNGiYFZREREWkQLHY7QVu3YhQU4OzalbK2bU9pE7B3L43++EeM\n8nLKd+7i6cdm83ezNRVON42C/Lj/6j7cNKwrQceOUnpsKv5ffIH9xhsp69rVC59IvE1BWURERBoE\n66pVNEpJwQCcbdtifvgh5S1bVm3kdGKWlzO/aRcmx17MHkdjwM21iR156Lq+NAu1AuAID+Line truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41c87828>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce29be0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2311,17 +2313,17 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d686a0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccddde48>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d681d0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce29a58>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2434,9 +2436,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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\nffv2NbhOaWkpRUVFXHXVVV55HQBdunQhNDSUgwcPNtp38ODBRg8YNscdd9zh8R7l5r6XQgjhDRKU\nhRBtSqfT8Zvf/IZXXnmF7du3n7Pn+HRt1aOsKEqT04ZddtllfPnll6xbt44rrrgCgF27dpGTk8Od\nd97pOm706NHodDpWrlzpmm/ZbrezatUqunXr5pqlQVEUxo0bx+rVqyksLHTdLf3www8BmDBhQpP1\nzZo1i23btvHMM88wffr0Fr/GcePG8fnnn5OXl+dqacnMzKSkpITrrrvO7TG90aPc3PfydLt37+aB\nBx4gPj6e5cuXu3U9IYQ4nQRlIYRXNRU4Z86cyRtvvMGrr77qVlD2Vo/y8ePHXSsFZmdno6oqy5Yt\nQ1EUEhMTmTp1KgBXX301b7zxBo888gi5ubkEBgby6quv0qVLF2bNmuUaT6/XM2/ePJYuXcp9993H\nyJEjWbNmDTk5OSxdurTBtefPn8+6deuYPXs2s2bNorCwkNdee41LL730jO9N/fLaTT2I547f//73\nbNiwgf/7v/9j1qxZ1NXV8frrrxMdHc3s2bPdHs8bPcruvJf1zGYzubm5Z20DWbVqFSdOnMBoNAKw\nfft2XnrpJcD5FzJ37noLIc5fHluZb/v27cycOZOnnnqKX//611itVh5//HHWrFlDeHg4DzzwAJMn\nT/bEpYQQHURTK/PVu++++/jiiy/45JNPvNqL2xyZmZncdNNNwKmljOsDfnp6Ov/5z39cx5aUlPDM\nM8+QkZGB3W4nPT2dRx55pMkAv3z5ct566y0KCwvp0aMH8+bNY8qUKY2O2717N3/5y1/Yu3cver2e\nSZMmcd9997lmwDidw+Fg1KhRKIrCxo0b3e4j/qW9e/fy3HPPsXv3bsxmM1qtlk8//ZQePXq0alxP\na+57CbB161Z+97vfkZiYyMaNG5s8pv6uPDT8zBVF4T//+Q8jRozwzgsRQnQoHgnKNpuNmTNnYjQa\nmTNnDjNmzOCVV15h/fr1vP7662RlZTFv3jxWr15NfHy8J+oWQohOad++ffzqV7/innvuYd68eR4d\n+5tvvuG2225jzJgxvPDCC15buEUIIToKjyxh/dZbbzFu3DiioqJc29asWcOsWbMICQkhPT2dtLS0\nBku8CiGEcF9mZiaRkZENWj08ZezYsSxevJiDBw+Sm5vr8fGFEKKjaXVQLi4uZuXKlcyZM6fB9tzc\nXHr27On69WpKSgqHDx9u7eWEEKJTmzt3Lt9//71rvmVPmzJlCuvWrZNloYUQAg8E5WeffZb58+c3\n+hWd2WxGp9Nx4MABioqK0Ov1mEym1l5OCCGEl7kzz7EQQpzPWjXrxQ8//MCxY8e48sorXdvqH4AJ\nDg7GbDa7niR/+umnm1zl6ciRI/IfZSGEEEII4VVGo9HtOeJbFZT37t3Lrl276Nu3r2vbtm3bOHDg\nAD169CAnJ8c1XVBOTk6Tc4JqNBr69evXmjKEDxgMBlauXNmiZYiF78nn13HJZ9exyefXscnnd2Zl\n5lzWH1pIkH841/R+AUVpXzdBDQYDmzZtcvu8Vr2Km266iZ9//tn1z4gRI3j66ad5+OGHmTx5MitW\nrMBoNJKZmcmuXbuYOHFiay4nhBBCCCF8QFVVth1/jX1FH+FQbY32RwZ1Jz7kApIjxmJXLT6o0Du8\ntuDI7NmzOXToEGPHjiU8PJxFixa5Vp0SQgghhBAdR53dyKGKr9FqgukfM63RfkVRGNv9AR9U5l0e\nDcorVqw4NbC/P4sWLWLRokWevIRoR6RlpmOTz6/jks+uY5PPr2PrrJ9ftaUQgJCAeNciPZ1B+2og\nER1KZ/2PxflCPr+OSz67jk0+v46ts35+p4JyrI8raVsSlIUQQgghxFnVB+XQgM7VRuu1HmVPsVqt\nlJeXd6rb/B1BeXk54Fy+vD3SarVERET4ugwhhBDivGCsv6McGO/jStpWuw7KVquV0tJSYmNjZa5l\n4ZaKigpMJpPXVi8TQgghOpNeURMxBKcSozv3qp3ZJas5VPENo5NuIyKoaxtU5z3tOn2Wl5dLSBYt\nEh4eTnV1ta/LEEIIIc4L0bpe9DZcTkgzWi8q645TVXec41Xb26Ay72rXCVRRFAnJokUURZF2HSGE\nEMIHksKGA5BXtc3HlbSepFAhhBBCCOExcfoBaDXBVNblYawr9HU5rSJBWQghhBBCeIyfRktCaBoA\nx4wd+66yBOVObu7cuSQlJZGUlMQ999zj63KEEEIIcR6ob7+oqD3q40paR4JyOzdy5EiWLFnitfH/\n/ve/s3PnTq6++mrp6RVCCCFEI3uLPmRz3ouUmXObfU58yGAmpz7L6KQF3iusDUhQbue8HV5DQ0OJ\niYkhMDAQVVW9ei0hhBBCdDz51XvIq8rE7qhr9jn+mgDCAhO8WFXbkKDsJevWrWP69OkMGDLine truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d0e2e8>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccf10470>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2506,7 +2508,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAGXCAYAAAC9TOY9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XuQZGV9//HPufb9MvfZXRaRgLAGFVdCxai7KoiiUFHU\niqXlJVEhSlAxBo1RyxJ/hiqjxrAYA8YoRmPwgnihLJUkICAhKmqV6KogsOxldq597z59Lr8/hl1d\ncXfn0t2ne/r9+kN3eqa7v7sPc85nnvk+z2Ps3r07EgAAADAkzLgLAAAAAHqJAAwAAIChQgAGAADA\nUCEAAwAAYKgQgAEAADBUCMAAAAAYKgRgAOiQq6++WqeffnrcZRzX6aefrl27dsVdBgDExo67AADY\nSAzD+L2Pl0ol/cd//IduueUWPfTQQ5KkU045RRdffLF27ty55vdrt9vatWuXbrzxRpVKJT3ucY/T\n5Zdfrj/5kz9Z82sCwEbHDDAAdFAU/f6zhX784x/rmmuu0ZYtW/SmN71Jf/VXf6Vms6lLLrlEn/vc\n59b8fu9///t17bXX6rzzztPf/d3fSZIuvvhi/fjHP17zawLARscMMAD0wCmnnKJvf/vbmp6ePvzY\nS1/6Uj33uc/VRz/6Ub3sZS+Taa5uTmLPnj264YYb9IpXvELvete7JEnPf/7zdd555+kf//Ef9W//\n9m8d/TsAwEbBDDAA9MDmzZuPCL+SlEwm9aQnPUmlUkkLCwurfs3/+q//UhRFuuiiiw4/ls1m9bzn\nPU933323KpXKuusGgI2IAAwAMZqfn1cikVChUFj1c3fv3i3LsnTaaacd8fi2bdsUBIF++ctfdqpM\nANhQCMAAEJOf/exn+uEPf6jnP//5chxn1c+fnZ1VoVCQZVn6+Mc/rrPOOkt33323xsbGJElzc3Od\nLhkANgQCMADEoNFo6IorrtDo6Kj++q//ek2v4Xne4eC8b98+1Wo1zc/Py3VdSVKz2exYvQCwkRCA\nAaDHwjDU29/+dj344IP66Ec/qvHx8TW9juu68jxPkvTe975Xt912m84///zDjyWTyY7VDAAbCbtA\nAECPXXXVVfr2t7+tD37wgzrrrLPW/DoTExMqlUoKgkCWZWliYkLScl+xpDUHawDY6JgBBoAe+uQn\nP6nrr79e73jHO3TBBRes67VOO+00hWGon//850c8fu+998o0TZ166qnren0A2KgIwADQI1//+tf1\nwQ9+UH/5l3+pV7/61et+vWc/+9kyTVNf/vKXDz9WrVb1zW9+U2effbZyudy63wMANiJaIACgB37y\nk5/oHe94h0466SSdfPLJuummm474/NOf/vTDuzes1NatW/WSl7xEn/vc52QYhk499VR98YtfVKVS\n0Vve8pZOlg8AGwoBGAB64L777pPv+3rggQd0xRVXHPE5wzB0/fXXrzoAS9K73/1ujYyM6MYbb9QN\nN9yg0047Tddee63OPPPMTpUOABsOARgAeuBFL3qRXvSiF3X8dR3H0eWXX67LL7+8468NABsVPcAA\nAAAYKgRgAAAADBUCMAB0iGEYMgwj7jIAAMdh7N69O4q7CAAAAKBXmAEGAADAUCEAAwAAYKgQgAGg\nQ66++mqdfvrpcZdxXKeffrp27doVdxkAEBsCMAB00PEWwd1000264IIL9MQnPlHnnXeePvOZz6z7\nPb/73e/qla98pZ7ylKdo+/bteslLXqI77rhj3a8LABsVB2EAQAdF0dHXFd988816+9vfrmc84xl6\n9atfrbvuukv/7//9P/m+rz//8z9f0/t99atf1RVXXKEzzzxTb3nLW5RIJHTffffp4MGDa/0rAMCG\nRwAGgB6Iokj/8A//oNNPP13XXnutDMPQS1/6UpVKJV1zzTV62cteplQqtarXrFarev/7368dO3bo\n2muv7VLlALDx0AIBAD2we/du7du3Ty984QuPaJN4yUteomq1qrvuumvVr/md73xH5XJZl112mSSp\nXq8rDMOO1QwAGxUBGAB64Oc//7kkadu2bUc8fujj3bt3r/o1f/SjH8l1XYVhqBe84AXavn27nvKU\np+g973mPWq3W+osGgA2KAAwAPTA7OytJGh8f1/e+9z2dddZZuu666zQ+Pi5JmpubW/VrHjhwQK7r\n6tJLL9VTn/pU7dq1Sy9+8Yt1ww036Kqrrupo/QCwkdADDAA94HmeJMlxHM3Pz6tarWrfvn1yXVeS\n1Gw2V/2ajUZD1WpVz3nOc/Sud71LknTuuedqcXFRX/jCF3TZZZdpdHS0c38JANggCMAA0AOHgm67\n3dYFF1ygs88+W5OTk6pWq5KkZDK55td83vOed8Tjz3jGM/SNb3xD999/PwEYAH4PWiAAoAcmJiYk\n/abVYXJyUpI0Pz8vSYdbIVZjbGxMkjQyMnLE48ViUZLYCg0AjoIADAA9cNppp0mS7r333iMeP/Tx\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad4976dac8>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce4a780>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2535,7 +2537,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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\nxRdfrDPOOENnnHGG3ve+9+mRRx5p2Wv/5Cc/0dq1axf11LRnnnlGl156qU4//XSdfPLJuvDCC/Xg\ngw/O+3rValX/5//8H73xjW/UKaecove///367W9/e9jncfMhgG5EAAbQE1z35e/3ffrpp3XHHXdo\nxYoVuuqqq/Sxj31MjUZDl112me69994Fv26z2dSXvvQlhUKhRQuDjz/+uN773vdqz549uvzyy/Xp\nT39aZ511lsbGxuZ9zY9//OO6//779a53vUvXXHONJiYmdMkll2jnzp0trBwAFgdHIQPoaccee6we\nfvhhjYyMzD528cUX67zzztNtt92m97znPfL7579WcPfdd6uvr08rVqzQSy+91IqSD8lxHH32s5/V\nq1/9av3zP/+zIpHIgq/5+OOPa+vWrbr22mv1wQ9+UJJ09tln69xzz9Wdd96pz3/+8wt+DQBYTKwA\nA+hpy5cvPyD8SlI0GtVJJ52kYrGofD4/72uPjo7q7rvv1rXXXitpcdoBnnzySb300ku69NJLFYlE\nVK/XZVnWgq75s5/9TJJ00UUXzT62bNkyvelNb9JPf/rTBV0bADqBAAwAL2NqakqRSESZTGbe1/i7\nv/s7nXHGGTr99NNbWNmhPfXUU5KkXC6nd7/73TrllFN0yimn6Oqrr1ahUJjXNbdt26bly5cf9G+x\ndu1aFQqFBbVWAEAnEIAB4I88++yzevLJJ/XWt75VoVBoXtd44okn9JOf/ESf/OQnW1zdoY2OjkqS\nPvOZz2jlypXatGmTLr30Uv30pz/Vxo0b53XNiYkJ5XI5SdL111+vN7/5zXrhhRc0MDAgSZqcnGxN\n8QCwSOgBBoA/UK/XtXHjRvX39+sTn/jEvK7hOI6+8IUv6J3vfKeOOeaYFld4aPV6XZI0NDSkr3zl\nK5Kkt7zlLTJNU3fddZeee+65I94SzjAMZbNZSdLu3btVLBZVLpcVDoclSY1Go4VfAQC0HyvAALCP\n4zi69tprtWPHDt12222zK5xH6v7779f27dt11VVXtbjCw9sfSs8///wDHl+3bp0k6bnnnpvXNU3T\nlCRt3rxZjz76qE4++WQZhiFppmcaALyEFWAA2Oemm27Sww8/rJtvvlmnnXbavK5hGIa++tWv6u1v\nf7ssy5ptSTAMQ5ZlaWxsTIlEQslkspWlz9rfqtDf33/A4/v7d8fHx4/4moODg7M7WIRCodlr7299\nmO8PCgDQKQRgAJD0jW98Q1u2bNGnPvUpve1tb5v3dRqNhqanp3XffffpvvvuO+jj69ev1yWXXKJP\nfepTCyn3FR177LGSDg66U1NTkqR0On3E13z1q1+txx9/XNPT0+rr65t9/Nlnn1U2m9Xw8PACKgaA\nxUcLBICe99BDD+nmm2/W5ZdfrksuueSwnz82Nqbzzz9fF1xwwUEfSyQS2rx5s+68887Z/zZv3qzj\njjtO2WxWd955p971rne148uQJL3xjW9UOBzWQw89dMDhH//2b/8mSXr9619/0HOeeeYZnX/++frA\nBz7wstfcsGGDJB1wrPGePXv02GOP6Zxzzmlh9QCwOFgBBtDTnnnmGV133XU6+uijtWbNGv3whz88\n4ONnnnnmbFvBfqZpavv27S+7r28gENBZZ5110OP/8A//oFKp1PbjkLPZrD74wQ/qzjvv1Ic+9CGd\nc8452rZtm+6//36dd955Ou644w56Tr1e1/bt22f7fP/YGWecoTe/+c269dZbVSwWNTQ0pC1btiga\njeryyy9v69cDAO2w4AB8zTXX6D/+4z9Ur9e1YsUKffzjH2dFAIBnvPDCC7IsS9u3bz9omzCfz6ct\nW7YcFIDna7GOQr766quVSqV0//3362//9m+Vy+X0wQ9+UFdfffW867rtttv05S9/Wd/5zndUr9f1\n2te+VrfccotWrVrV6vIBoO1827Ztcw//aa/sueee05o1axQOh/WrX/1Kl112mf7zP/9TsVisVTUC\nwIJs2rRJd9xxx7x2QMD87Nq1Sxs2bNBNN92kd7zjHZ0uBwAOsOAV4P37SbquK9M0lUgkFm2VAwAA\nADhSLekBvuGGG/S9731P0WhUd955J3tCAgAAoGu1ZBeIG264QU899ZSuvvpqffKTn1Sz2WzFZQGg\nJXw+H7+ZAgDMWnAP8B+74IILdO21187eBb1jxw75/ey2BgAAgPYql8t6zWtec9jPa/k2aH+476Qk\n+f1+nXDCCa1+GSyCXC6n73//+23ftgntwfh5F2PnbYyfdzF23pbL5bR169Y5fe6ClmYnJyd1//33\nq1KpyLIs3Xfffcrn8zr55JMXclkAAACgbRa0Auz3+/XQQw/pK1/5ikzT1LHHHquvfe1rymazraoP\nAAAAaKkFBeD+/n794z/+Y6tqQReifcXbGD/vYuy8jfHzLsauN3B3Gg6JicDbGD/vYuy8jfLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41caa940>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ed917978>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2605,7 +2607,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad5e7be518>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccddadd8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2634,7 +2636,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsoAAAGDCAYAAAAyKTZ5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VFX6+PHPnZZkZlInlSRACiUQSoI0UaooSFd3FRXF\n7o+vulgWXV0ryuq6gu66rr0hLq4CYqEjUhVBmhAMoYUEEkgjySSTZMr9/TEyEkggIWVC8rxfL15M\n5t577nPPTOCZM+c+R0lPT1cRQgghhBBCVKPxdgBCCCGEEEK0RJIoCyGEEEIIUQNJlIUQQgghhKiB\nJMpCCCGEEELUQBJlIYQQQgghaiCJshBCCCGEEDWQRFkIIYQQQoga6LwdgBBCtFULFy7k8ccf9/ys\n1WqxWCz079+fBx54gNjY2Hq1V1xczAcffMC2bdvYtWsXFRUVfPDBBwwcOLCxQxdCiDZBEmUhhPCy\ne+65h8TERCorK9m1axcLFy5k48aNfP3111gsljq3c+zYMd58803i4uLo0qULO3fubMKohRCi9ZNE\nWQghvGzAgAGeUd/rrruOuLg4XnrpJRYsWMDdd99d53bi4uLYtGkTISEhLFy4UBJlIYRoIEmUhRCi\nhRk0aBAA2dnZ9TrO19cXX1/fpghJCCHaJEmUhRCihcnMzAQgODiYkpISHA7HOfcPCQlpjrCEEKLN\nkURZCCG8zGq1UlhYSFVVFbt27eKFF15Aq9UyevRoJk6cyLFjx2o9VlEU9u7d24zRCiFE2yGJshBC\neNn9999f7eeIiAhmz55N165d+cc//kFlZaWXIhNCiLZNEmUhhPCyGTNmkJSUhE6nw2KxEB8f79mW\nmprqxciEEKJtk0RZCCG8LCkpqdZax4WFhTidznMeHxYW1hRhCSFEmyeJshBCtGDXXXedzFEWQggv\nkURZCCFaMJmjLIQQ3iOJshBCtGD1naP8xhtvAHhGmb/66iu2b98OwLRp0xo3OCGEaOUkURZCCC9S\nFKVR2/vnP/+JoiioqoqiKCxatMhzHkmUhRCifpT09HTV20EIIYQQQgjR0mi8HYAQQgghhBAtkSTK\nQgghhBBC1EASZSGEEEIIIWogibIQQgghhBA18HrVi5ycHBwOh7fDEEIIIYQQrZjL5aJDhw71Osbr\nibLD4SApKcnbYbQ5FouFhQsXMmTIEG+H0iZJ/3uX9L/3SN97l/S/d0n/e4/FYmHDhg31Pk6mXggh\nhBBCCFEDSZSFEEIIIYSogSTKbZhMefEu6X/vkv73Hul775L+9y7p/4uLJMptmPyyepf0v3dJ/3uP\n9L13Sf97l/T/xUUSZSGEEEIIIWrg9aoX52O32ykqKkJRFG+H0qoUFRUBtNrSfHq9nqCgIG+HIYQQ\nQoiLWItOlO12OwUFBYSHh6PRyOC3qLuTJ09SXl6O0Wj0dihCCCGEuEi16OyzqKhIkmRxQQIDA7Fa\nrd4OQwghhBAXsRadgSqKIkmyuCCKosh0HSGEEEI0iGShQgghhBBC1EASZSGEEEIIIWogiXIbd/vt\ntxMTE0NMTAwPPvigt8MRQgghhGgxGpQoHzt2jJSUlGp/unbtysqVK3E4HDz++OOkpqYybNgwli5d\n2lgxtyn9+/dn9uzZTdb+a6+9xvbt2xk3bpzM6RVCCCGEOE2DysO1a9eO7du3e37OzMxk0qRJXH75\n5XzwwQfs37+fdevWkZaWxj333ENKSgqRkZENDrotaerk1d/fH39/f3x8fFBVtUnPJYQQQghxMWnU\nqRcLFizgyiuvxNfXl2XLljFlyhTMZjP9+vUjJSWFlStXNubpWrQVK1YwadIkunfvTkJCApMmTWLL\nli3V9lm+fDljxowhISGBlJQUHnroIex2O+AeSY6JiSE7O5vZs2d7pkfMmTPHc/x1111XbbQ5KyuL\nmJgYfvzxRwCqqqp46KGHuPTSS4mPj6dPnz4899xzVFVVnRWvjCYLIYQQQlTXaAuOuFwuFi9ezIsv\nvgjA4cOHiYuL45FHHmH48OEkJCRw6NChxjpdi5eXl8f1119PSkoKPj4+vPXWW9x0001s3ryZ4OBg\nVqxYwZ133skDDzzAa6+9Rnl5OV999RWVlZXo9XqWLl2K0+nk6quvZsKECdx7770AZy2gca4E1263\nYzAYmD17NrGxsRw4cIA//elP6PV6/vKXvzTp9QshhBCiaThdVRyz7qSs6gRdQ8d4O5xWrdES5Q0b\nNqAoCgMHDgTAZrNhNBrJyMggOTkZk8lEbm5uY53OI/qmdxq9TYCj8+5q0PE33XRTtZ+feOIJ5s6d\ny+bNmxk1ahSvv/46o0aN4s9//rNnn549e3oeh4SEAKDVajGZTISGhtY7BpPJ5PngAhAdHc3EiRNZ\nvXq1JMpCCCHERcqluvgh63UAEoJHoNf6ejmi1qvREuWFCxcyfvx4z89+fn7YbDYWL14MwPPPP4/J\nZKrxWIvFUuPzRUVFjRVeszty5Agvv/wy27Zto6CgAJfLBUBZWRkAaWlpTJgwocnjmDdvHp9++inZ\n2dnYbDbsdjvt2rVr8vO2BDqdrtb3lrfp9Xqg9ve+aFrS/94jfe9d0v/e1Zj9H5qdQJ41A4c+j8jg\n3g1ur7U71ff11SiJcnFxMd999x2LFi3yPNexY0cOHDhA9+7dAThw4AAjRoyo8fiZM2d6Hg8ePJgh\nQ4bU+dwNHfltKrfeeisdOnRgzpw5hIeHU1VVxfDhwz0Jc2M4c9rFmW1//fXXPPvsszz77LOkpqbi\n6+vLG2+8wdq1a+vUnhBCCCFapqjA7uRZMzhWvJsYSZRrtHbtWtatWwe4v6EfPHhwvdtolET5m2++\noXPnziQkJHieGz16NHPnzmXYsGGkpaWxY8eOatMATjdt2rRqPxcUFADgcDgaI7xmV1hYSEZGBm++\n+SZdunQBYOvWrdX26d69Oz/88AN33HHHOdvS6/WeG/zOFBgYSGlpqefn7Ozsats3b97MkCFDmDx5\nsue5rKysGhNik8lEfn7+uS/sIuNwODzvpZbm1GhCS42vtZP+9x7pe++S/veuxux/f017ALIKdpLg\nP7rB7bVGycnJJCcnA+6+37BhQ73baJSqFwsXLmTixInVnps6dSqdOnViyJAhPPbYY8yaNYuIiIjG\nOF2LFxQUhMViYe7cuWRmZrJp0yaeeeaZagnqfffdx/Lly/nHP/5BRkYGu3fvZubMmVit1mptxcfH\ns27dOnJycqioqMDpdHq29erVi1WrVlFSUoLNZuPNN9+sdmxiYiJbtmzhxx9/5ODBg8yZM4eff/65\nxph79erFhg0b2LFjBydOnMBmszVijwghhBCiMaw/Moctx97H3xAFQIFtPy714hxYvBg0SqK8YMEC\nbr755mrP6XQ6Zs2axbZt21izZg2jR7edTzsajYa33nqLzZs3M3z4cJ588klmzJiBRvN7d48cOZL3\n3nuPNWvWMGrUKCZPnkxeXh4+Pj7V2nrsscfQaDQMHjyYxMRE/vnPf3q2TZ06lfj4eAYOHMi4ceMY\nOXJktWT85ptv5qqrruLOO+9kzJgxHDt2jNtvv73GmK+55hpGjx7N5MmTSU1N5dNPP23kXhFCCCFE\nQ1Q4ijlWuo3MkxsxG8JJCh1LatStqGrjTesU1Snp6eleXWUiKyuLpKSkGrfl5eURFhbWzBGJ1qIl\nv3/k60/vkv73Hul775L+966G9n9m8Q/8mP0GkaYeDOk4ozFDa/VOTb2IjY2t13GNuuCIEEIIIYRo\nGsetuwGIMHf3ciRthyTKQgghhBAtnKqqHC/bA0CESRLl5iKJshBCCCFEC1duz6fcXoBBaybIt723\nw2kzGm3BESGEEEII0TRMhjAmdHmd0spcFEXGOZuLJMpCCCGEEBcBX10gvrrAas8V2g6y58QizIYI\nUqJuruVIcaHkI4kQQgghxEXsmHUHx6w7vR1GqySJshBCCCHERSrItwM6jQ/Wqlxs9pPeDqfVkURZ\nCCGEEOIipVG0WPwSAci3ZXg5mtZHEmUhhBBCiBasyJaJ01X7MtWhxs4A5JelN1dIbYYkykIIIYQQ\nLZTDVcmqQ8/wZfr/w+GqqHGfMGMXAApsB5oztDZBEmVx0enfvz+zZ8/2dhhCCCFEk8sv34dLdeBv\niEKn8a1xH4uxEyPinmRYx8ebObrWT8rDiYuOoijeDkEIIYRoFnVZtlqnMXimX4jGJSPKTWDTpk2k\npqZy++23k5SUxIcffsjIkSPp2bMn69evB6CkpIQZM2bQq1cvkpKSmDx5MhkZv0/C379/P7fddhsp\nKSnEx8czZMgQPv3002rnsdvtPPXUU/Tp04eEhAQuu+wy3n77bc/2rKwsYmJiOHr0qOe5V155hQED\nBlRr57PPPiMmJobdu3czduxYEhIS6NevH3v2uJfKrKqq4vnnn6dPnz506tSJ8ePHs3XrVs/x/fv3\n5/7776d79+7cfffdzJw5k86dO/P444+fdZ4hQ4aQkJDA0KFD+e9//1tte0xMDPPmzWPixIkkJiYy\nduxY9u/fX+08MTExZGdnM3v2bGJiYoiJiWHOnDn1en2EEEKIi0WuLFvtVTKi3ETy8vK499576dCh\nA08++SSff/45q1at4u233+byyy9nypQp6PV6PvroIwIDA3nnnXe44YYbWL9+PUajkcLCQlJSUpg+\nfToWi4V169bx6KOPEh0dzZAhQwD44IMP+OKLL3j77beJi4vj8OHDZGVlnTe22kZkn3jiCe6//36S\nkpL45Zdf0Ov1ADz44IOkp6fz73//m3bt2rFw4UImT57M+vXriYyMRFEUgoOD+eijj5g0aRK33XYb\n8+fPZ+LEiTz88MNYLBY++eQTZs2axd/+9jf69OnDzp07efDBBwkODmbUqFGeGN59911efPLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d73ef0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce0e780>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2668,7 +2670,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d06ac8>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cceebd30>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2699,7 +2701,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41c8b4a8>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccd82908>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2769,17 +2771,17 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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\nTQVgz549zTwS0Rhy/lo2OX8tl5y7li01NZUlS5bQsWPHBu0nM8NCCCGEEKLVkjAshBBCCCFaLQnD\nQgghhBCi1ZIwLIQQQgghWi0Jw0IIIYQQotWSMCyEEEIIIVotCcNCCCGEEKLVkjAshBBCCCFaLQnD\nQgghhBCi1ZIwLIQQQgghWi0Jw+KIM2DAAKZPn97cwxBCCCFEKyBhWBxxFEVp7iEIIYQQopWQMNwI\nS5cupW/fvlxxxRX06NGDWbNmMWzYME488US+/PJLAEpLS7nllls46aST6NGjBxdddBFr166NHWPd\nunVcfvnl9OnTh65duzJkyBDmzp1b7XnC4TBTp06lX79+ZGdnc/rpp/Pcc8/FHs/LyyMrK4tt27bF\n7vv73//OwIEDqx3n9ddfJysrix9//JFzzjmH7Oxs+vfvz08//QRAKBTiL3/5C/369aNbt26ce+65\nfPPNN7H9BwwYwLXXXkvPnj3505/+xP3330/37t254447ajzPkCFDyM7O5swzz+TVV1+t9nhWVhav\nvPIKY8aMIScnh3POOYd169ZVe56srCy2bt3K9OnTycrKIisrixkzZjTo/AghhBBC1Jfe3ANoqXbv\n3s3EiRPp1KkTd999N2+88QYff/wxzz33HGeccQZ/+MMfcDgczJ49mzZt2jBz5kwuvPBCvvzyS+Li\n4igsLKRPnz5MmTKF1NRUFi9ezK233kpmZiZDhgwB4KWXXmLevHk899xzdOnShU2bNpGXl1fn2PY3\ns3rnnXdy7bXX0qNHD3744QccDgcAN9xwA7m5uTz11FN06NCBBQsWcNFFF/Hll1/Srl07FEUhOTmZ\n2bNnM3bsWC6//HJee+01xowZw0033URqaiovv/wyDz74IH/961/p168f33//PTfccAPJyckMHz48\nNobnn3+ehx56iMTERCZNmsS9997LnDlzAFi0aBGmaXL22WczevRoJk6cCEBcXNxBnSshhBBCiP1p\nEWG4Q2ZmrfdvrzIjejDbN0Zqair9+/envLycN998k4EDB+L3+/nkk0/48ssv+fbbb/n2229JT08H\n4P7772fevHl8/PHHnHvuufTv35/+/fvHjnfxxRczZ84cPvnkk1gYzsvLo23btpx++ukAZO7nde3L\ntu1a77/mmmsYNmwYAMcccwwAGzZs4O233+a9997jpJNOAmDKlCm8+eabLFiwgEmTJgEwdOLine truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41ae30f0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cced7b00>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsoAAAGDCAYAAAAyKTZ5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcjvX+x/HXde/L7PcYywyGGZWlrGcsFXGOIonUaTki\ntJx+QqgolUjraaNSCtFBnU4ROlJKZcmxhBTFsWRfZl/v/b6u3x+3uRkzgzEzZvF5enjM3Nfyvb73\nXIa373yu71fZtWuXhhBCCCGEEKIIXVV3QAghhBBCiOpIgrIQQgghhBAlkKAshBBCCCFECSQoCyGE\nEEIIUQIJykIIIYQQQpRAgrIQQgghhBAlkKAshBBCCCFECQxV3QEhhKgpBg0axKZNmwBQFIXY2FiS\nk5O5//776dKlSxX3rqg1a9YwdepU9uzZQ3R0NLfeeivDhw9Hr9dfUHtXXHFFidufe+45brvttvJ0\nVQghqi0JykIIUQaRkZE89dRTaJrG8ePH+eSTTxg2bBgvv/wy/fr1q+ruAbB582YefPBBWrVqxZNP\nPsnOnTuZPn06OTk5PPXUUxfc7vXXX0/Pnj2LbGvTpk15uyuEENWWBGUhhCgDq9VK3759Q6/79+/P\nDTfcwMyZM6tNUJ46dSoxMTHMnTsXq9UKQCAQ4OOPP2bo0KHEx8dfULuXXXZZkfcuhBC1ndQoCyFE\nOcTFxdG0aVMOHTpU1V0BIDs7m82bN3PDDTeEQjLAbbfdRiAQ4Pvvvy9X+263G4/HU95uCiFEjSAj\nykIIUQ6BQIDU1FTi4uLKfK7b7cbpdJ71mLCwMEwm03m3uWfPHlRVpUWLFkW2X3755SiKwq5du8rc\nz0Jz5sxh+vTpaJpGs2bNGDVqVLFSDCGEqE0kKAshRBkEAgGysrLQNI309HTmzp1Leno6zzzzTJnb\nmjlzJtOnTz/rMS+99BL9+/c/7zZTU1MBcDgc7Nmzh0GDBtG7d28mTpxIREQEaWlpZe4nQPv27bnx\nxhtp0KABR48e5cMPP2TkyJG89tpr9OnT54LaFEKI6k6CshBClEFaWhqdO3cOvW7QoAEzZsygW7du\nZW6rf//+dOjQ4azHJCcnl6lNr9cLgMlkIicnh5ycHA4fPgyA0Wi84LKJBQsWFHndr18/evXqxSuv\nvCJBWQhRa0lQFkKIMoiOjub1119HVVW2bt3KjBkzWLFixQUF5YYNG9KwYcMK7V9hmYbX66Vz586s\nWbOGqKgoAHw+H2azuUKuExYWRv/+/Zk1axZ//PEHTZo0qZB2hRCiOpGgLIQQZWA2m0MjyldffTU6\nnY4333yTPn36lHkuZafTSUFBwVmPiYiIKFO4LayVzsjIAIIlGBAMzrm5udSpU6dMfTybunXrApCT\nk1NhbQohRHUiQVkIIcphyJAhfPjhh7z11ltlDsqzZ8+u8Brl5ORkdDodv/32GwMGDAht37lzJ5qm\ncfnll5epj2dz9OhR4FQYF0KI2kaCshBClIPNZuP2229n5syZ/PTTT+esOT5dZdQoR0VF0b59e776\n6ivGjh2LzWYD4LPPPsNgMNC9e/cSz+vVqxeKojB37tzQSHGhrKwsoqOji2zLzMzk888/JzExscLL\nR4QQorqQoCyEEGWgaVqxbXfffTdz5sxh1qxZZQrKlVGjDPDwww9zzz33MGTIEG699VZ27drFv//9\nbwYOHFjqYiP79+9HURQCgUCxfe+++y6//PILnTt3pn79+pw4cYJPPvmEgoICXn/99QrvvxBCVBcS\nlIUQogwURSm2rW7duvTq1Ysvv/ySPXv2lHkUuKJ16NCBd999l2nTpvH8888TExPD8OHDeeihhy6o\nvZSUFHbs2MEnn3xCbm4uVquVdu3aMXz4cFq3bl3BvRdCiOpD2bVrV/HhkfPk9/uZMGEC69atw+12\n06JFCyZOnEhycjJvvfUWM2bMCD2BHRMTw8qVKyus40IIIYQQQlSmci1hraoqjRs3ZuHChfz000/0\n6NGjyIhFnz592Lp1K1u3bpWQLIQQQgghapRyBWWTycRDDz0UevBjwIABHDhwgMzMTKDkWj4hhBBC\nCCFqgnIF5TNt3bqVunXrhp6O/v777+nYsSP9+/fn+++/r8hLCSGEEEIIUanKVaN8ury8PG677TZG\njx5N79692bt3Lw6Hg/DwcL777jvGjRvHokWLZPUmIYQQQghRI1TIrBder5eHHnqIPn360Lt3bwCS\nkpJC+3v27ElKSgpr164tFpQPHDiATlehA9tCCCGEEEIUkZeXR4sWLcp0TrmDciAQYOzYsSQmJjJq\n1Kgyn6/T6WjevHl5uyEuMofDwaJFi+jWrVtVd0VcALl/NZfcu5pN7l/NJvev5nI4HKxdu7bM55V7\nKHfixInodDomTZpUZPs333xDbm4uqqryww8/sHHjRq655pryXk4IIYQQQoiLolwjykeOHGHhwoVY\nrVbat28PBCfjf//991m2bBlPPPEEgUCAxMREpk6dKvXJQgghhBCixihXUI6Pj2fnzp0l7ivLMq6i\nZpKSmZpN7l/NJfeuZpP7V7PJ/bu0yFN04oLJXxY1m9y/mkvuXc0m969mk/t3aZGgLIQQQgghRAkq\nZHq4yuTz+cjKykJRlKruijhNVlYWAH6/v4p7UjKj0UhUVFRVd0MIIYQQNVi1Dso+n4+MjAzi4uJk\nrmVRJtnZ2TidTmw2W1V3RQghhBA1VLVOn1lZWRKSxQWJjIwkPz+/qrshhBBCiBqsWidQRVEkJIsL\noiiKlOsIIYQQolwkhQohhBBCCFECCcpCCCGEEEKUQILyJW7YsGEkJCSQkJDAmDFjqro7QgghhBDV\nhgTlaq5jx468/vrrldb+tGnT2Lp1K3379pWaXiGEEEKI01Tr6eEElR5ew8PDCQ8Px2w2o2lapV5L\nCCGEEKImkRHlSrJixQpuueUWWrZsSVJSErfccgubNm0qcszXX39Nnz59SEpKom3btowdOxafzwcE\nR5ITEhI4fPgwr7/+eqg84o033gidf9tttxUZbT506BAJCQmsX78eAK/Xy9ixY+nSpQtNmzalffv2\nPPvss3i93mL9ldFkIYQQQoiiZES5kqSlpXHHHXfQtm1bzGYz7733HgMHDmTDhg1ER0ezYsUK7rvv\nPkaNGsW0adNwOp0sXboUj8eD0Whk+fLlBAIBbrzxRvr168eDDz4IUGwBjbMFXJ/Ph8lk4vXXX6dh\nw4bs3buXhx9+GKPRyBNPPFGp718IIYQQoqar8UE5fmZ8pbR75P4j5Tp/4MCBRV4/+eSTzJs3jw0b\nNtCrVy/efvttevXqxWOPPRY65qqrrgp9HhMTA4Ber8dutxMbG1vmPtjtdl566aXQ6/j4ePr378/K\nlSslKAshhBBCnEOND8rV1cGDB3nllVfYsmULGRkZqKoKQEFBAQC//fYb/fr1q/R+LFiwgI8++ojD\nhw/jcrnw+Xw0aNCg0q8rhBBCCFHT1figXN6R38pyzz330LhxY9544w3i4uLwer306NEjFJgrwpll\nF2e2/cUXXzB58mQmT55Mu3btsFgsvPPOO6xateq82hNCCCGEuJTJw3yVIDMzk927d/PEE0+QkpJC\nYmIiubm5RY5p2bIl//3vf8/ZltFoDD3gd6bIyEjy8vJCrw8fPlxk/4YNG+jWrRt33XUXl19+OY0b\nN+bQoUMlBmK73Y7T6TyftyeEEEIIcUmQoFwJoqKicDgczJs3jwMHDrBu3TomTZpUJKCOGDGCr7/+\nmldffZXdu3ezfft2pkyZQn5+fpG2mjZtyurVqzl27Bhut5tAIBDa17p1a7799ltyc3NxuVzMmDGj\nyLnJycls2rSJ9evXs2/fPt544w02b95cYp9bt27N2rVr+fnnn0lNTcXlclXgV0QIIYQQouaRoFwJ\ndDod7733Hhs2bKBHjx48/fTTjBs3Dp3u1Je7Z8+ezJ49m++//55evXpx1113kZaWhtlsLtLW448/\njk6no2vXriQnJ/Pmm2+G9g0ZMoSmTZvSuXNn+vbtS8+ePYuE8bvvvpsbbriB++67jz59+nD06FGG\nDRtWYp8HDBhA7969ueuuu2jXrh0fffRRBX9VhBBCCCFqFmXXrl1VusrEoUOHaN68eYn70tLSqFOn\nzkXukagt5M9P6RwOBwAZGRlV3BNRVnLvaja5fzWb3L+ay+FwsHbtWho2bFim82REWQghhBBCiBJI\nUBZCCCGEEKIEEpSFEEIIIYQogQRlIYQQQgghSiBBWQghhBBCiBJIUBZCCCGEEKIEEpSFEEIIIYQo\ngQRlIYQQQgghSiBBWQghhBBCiBJIUBZCCCGEEKIEEpRFjdOxY0def/31qu6GEEIIIWo5CcqixlEU\npaq7IIQQQohLgATlSrBu3TratWvHsGHDaN68OXPnzqVnz55cddVVrFmzBoDc3FzGjRtH69atad68\nOXfddRe7d+8OtbFnzx6GDh1K27Ztadq0Kd26deOjjz4qch2fz8fEiRNp3749SUlJXHPNNbz//vuh\n/YcOHSIhIYEjR46Etr322mt06tSpSDuffPIJCQkJbN++nZtuuomkpCRSUlLYsWMHAF6vl+eee472\n7dvTrFkzbr75Zn766afQ+R07dmTkyJG0bNmSBx54gClTpnDZZZcxYcKEYtfp1q0bSUlJXHfddXz8\n8cdF9ickJLBgwQL69+9PcnIyN910E3v27ClynYSEBA4fPszrr79OQkICCQkJvPHGG2W6P0IIIYQQ\n58NQ1R2ordLS0njwwQdp3LgxTz/9NJ9++inffvst77//Ptdeey2DBg3CaDTy4YcfEhkZycyZM7nz\nzjtZs2YNNpuNzMxM2rZty+jRo3E4HKxevZrx48cTHx9Pt27dAJgzZw6fffYZ77//Pk2aNGLine truncated
|
||||
"png": "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\nGvHEE09ovLCIiIiI1BgHDcNpaWn88ssv5e6ryLKkUjNpiEvNpWdXs+n51Wx6fjWXnt2JR2+2yQHp\nPwo1l55dzabnV7Pp+dVcenYnHoVhERERETlhHfLUakdLKBQiJycHwzCquhTZR05ODgDhcLiKKynL\ntm2SkpJwu91VXYqIiIjUYFUahkOhELt37yY1NVVzEUuFWJbFrl27SElJUSAWERGRSqvSBJqTk6Mg\nLJXicDhITU2N9F6LiIiIVEaVplDDMBSEpdIcDoeG14iIiMhhURIVERERkROWwrCIiIiInLAUho9z\nQ4YMIT09nfT0dG666aaqLkdERESkWlEYrmJdunRh8uTJR639qVOnsmLFCi666CKNrxURERHZR5XP\nM3yiO9oBNT4+nvj4eLxeL7ZtH9VriYiIiNQ06hmupI8//pgBAwbQqlUrmjZtyoABA1i+fHmpY/77\n3//St29fmjZtSvv27RkzZgyhUAgo6RFOT08nIyODyZMnR4YyTJkyJXL+JZdcUqrXeOvWraSnp/PV\nV18BEAwGGTNmDKeffjpNmjShY8eO3HfffQSDwTL1qldYREREpCz1DFdSZmYm//jHP2jfvj1er5dn\nn32WK664gmXLlpGUlMTHH3/Mddddx6hRo5g6dSrFxcW89957BAIB3G43CxYswDRNLrjgAvr168fQ\noUMBiImJKXWdA4XYUCiEx+Nh8uTJNGjQgPXr13PjjTfidru54447jur9i4iIiBwPqn0YTpuZdtTa\n3nb9tkqfe8UVV5T6fOedd/LSSy+xbNkyevfuzdNPP03v3r255ZZbIse0adMm8nVycjIATqeT2NhY\nateuXeEaYmNjeeihhyKf09LS6N+/P5999pnCsIiIiMghqPZhuLrasmULjz76KN999x27d+/GsiwA\nioqKAFi9ejX9+vU76nW88sorvPrqq2RkZODz+QiFQtSvX/+oX1dERETkeFDtw/Dh9N4eTVdddRUN\nGzZkypQppKamEgwG6dmzZyQUHwn7DpHYt+3//Oc/3Hvvvdx777106NCBqKgonnnmGb744otDak9E\nRETkRKcX6CohOzubtWvXcscdd9C5c2caNWpEfn5+qWNatWrFl19+edC23G535KW6fdWqVYuCgoLI\n54yMjFL7ly1bRo8ePbjssss45ZRTaNiwIVu3bi039MbGxlJcXHwotyciIiJywlAYroTExERSUlJ4\n6aWX2Lx5M0uXLmXChAmlQuiIESP473//y2OPPcbatWv56aefmDhxIoWFhaXaatKkCYsWLWL79u34\n/X5M04zsa9u2LZ9++in5+fn4fD5mzJhR6txmzZqxfPlyvvrqKzZs2MCUKVP49ttvy625bdu2LFmy\nhO+//55du3bh8/mO4HdEREREpGZSGK4Eh8PBs88+y7Jly+jZsyd33303t956Kw7HH9/OXr168cIL\nL7Bw4UJ69+7NZZddRmZmJl6vt1Rbt99+Ow6Hg+7du9OsWTOefPLJyL6rr76aJk2a0K1bNy666CJ6\n9epVKnBfeeWVnH/++Vx33XX07duX3377jSFDhpRb88CBA+nTpw+XXXYZHTp04NVXXz3C3xURERGR\nmsdYs2bNUV2JYevWrbRs2bLcfZmZmdSpU+doXl6Oc/o9VL6UlBQAdu/eXcWVSGXo+dVsen41l55d\nzZaSksKSJUto0KBBhc5Tz7CIiIiInLAUhkVERETkhKUwLCIiIiInLIVhERERETlhKQyLiIiIyAlL\nYVhERERETlgKwyIiIiJywlIYFhEREZETlsKwiIiIiJywFIZFRERE5ISlMCzVTpcuXZg8eXJVlyEi\nIiInAIVhqXYMw6jqEkREROQEoTBcCUuXLqVDhw4MGTKEli1bMnv2bHr16kWbNm1YvHgxAPn5+dx6\n6620bduWli1bctlll7F27dpIG+vWreOaa66hffv2NGnShB49evDqq6+Wuk4oFGL8+PF07NiRpk2b\ncuaZZ/Lcc89F9m/dupX09HS2bdsW2fb444/TtWvXUu288cYbpKen89NPP3HhhRfStGlTOnfuzKpV\nqwAIBoPcf//9dOzYkebNm/PXv/6Vb775JnJ+ly5dGDlyJK1ateKGG25g4sSJtGjRgnHjxpW5To8e\nPWjatClnn302r732Wqn96enpvPLKK/Tv359mzZpx4YUXsm7dulLXSU9PJyMjg8mTJ5Oenk56ejpT\npkyp0PMREREROVSuqi6gpsrMzGTo0KE0bNiQu+++m7feeotPP/2U5557jrPOOotBgwbhdruZM2cO\ntWrVYubMmVx66aUsXryYmJgYsrOzad++PaNHjyYlJYVFixZx2223kZaWRo8ePQCYNWsWc+fO5bnn\nnqNx48Zs2rSJrVu3HrS2/fWs3nnnnYwcOZKWLVuycuVK3G43ADfddBNr1qxh2rRp1K9fn/Line truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41d03cc0>"
|
||||
"<matplotlib.figure.Figure at 0x7f45ccf183c8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2846,7 +2848,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fad41c14550>"
|
||||
"<matplotlib.figure.Figure at 0x7f45cce4a198>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -3054,13 +3056,13 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"[1] http://docs.scipy.org/doc/scipy/reference/tutorial/stats.htmly\n",
|
||||
"- [1] http://docs.scipy.org/doc/scipy/reference/tutorial/stats.htmly\n",
|
||||
"\n",
|
||||
"[2] https://en.wikipedia.org/wiki/Kalman_filter\n",
|
||||
"- [2] https://en.wikipedia.org/wiki/Kalman_filter\n",
|
||||
"\n",
|
||||
"[3] Brown, Robert Grover. *Introduction to Random Signals and Applied Kalman Filtering* John Wiley & Sons, Inc. 2012\n",
|
||||
"- [3] Brown, Robert Grover. *Introduction to Random Signals and Applied Kalman Filtering* John Wiley & Sons, Inc. 2012\n",
|
||||
"\n",
|
||||
"[4] `filterpy` library. Roger Labbe.\n",
|
||||
"- [4] `filterpy` library. Roger Labbe.\n",
|
||||
"https://github.com/rlabbe/filterpy"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,475 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:107480012317adfa7c7e4b7cb599197924e13638e3127ea101fc5684332f25b8"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Kalman Filter Math"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: transparent;\n",
|
||||
" color: #000000;\n",
|
||||
" font-weight: 600;\n",
|
||||
" font-size: 11pt;\n",
|
||||
" font-style: bold;\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 110%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7efefefbf9e8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"If you've gotten this far I hope that you are thinking that the Kalman filter's fearsome reputation is somewhat undeserved. Sure, I hand waved some equations away, but I hope implementation has been fairly straightforward for you. The underlying concept is quite straightforward - take two measurements, or a measurement and a prediction, and choose the output to be somewhere between the two. If you believe the measurement more your guess will be closer to the measurement, and if you believe the prediction is more accurate your guess will lie closer it it. That's not rocket science (little joke - it is exactly this math that got Apollo to the moon and back!). \n",
|
||||
"\n",
|
||||
"Well, to be honest I have been choosing my problems carefully. For any arbitrary problem finding some of the matrices that we need to feed into the Kalman filter equations can be quite difficult. I haven't been *too tricky*, though. Equations like Newton's equations of motion can be trivially computed for Kalman filter applications, and they make up the bulk of the kind of problems that we want to solve. If you are a hobbyist, you can safely pass by this chapter for now, and perhaps forever. Some of the later chapters will assume the material in this chapter, but much of the work will still be accessible to you. \n",
|
||||
"\n",
|
||||
"But, I urge everyone to at least read the first section, and to skim the rest. It is not much harder than what you have done - the difficulty comes in finding closed form expressions for specific problems, not understanding the math in this chapter. \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Modeling a Linear System that Has Noise"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We need to start by understanding the underlying equations and assumptions that the Kalman filter uses. We are trying to model real world phenomena, so what do we have to consider?\n",
|
||||
"\n",
|
||||
"First, each physical system has a process. For example, a car traveling at a certain velocity goes so far in a fixed amount of time, and it's velocity varies as a function of it's acceleration. We describe that behavior with the well known Newtonian equations we learned in high school.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"v&=at\\\\\n",
|
||||
"d &= \\frac{1}{2}at_2 + v_0t + d_0\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"But, of course we know this is not all that is happening. First, we do not have perfect measures of things like the velocity and acceleration - there is always noise in the measurements, and we have to model that. Second, no car travels on a perfect road. There are bumps that cause the car to slow down, there is wind drag, there are hills that raise and lower the speed. If we do not have explicit knowledge of these factors we lump them all together under the term \"process noise\".\n",
|
||||
"\n",
|
||||
"Trying to model off of those factors explicitly and exactly is impossible for anything but the most trivial problem. I could try to modify Newton's equations for things like bumps in the road, the behavior of the car's suspension system, heck, the effects of hitting bugs with the windshield, but the job would never be done - there would always be more effects to add. What is worse, each of those models would in themselves be a simplification - do I assume the wind is constant, that the drag of the car is the same for all angles of the wind, that the suspension act as perfect springs, and so on?\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"So control theory makes a mathematically correct simplification. We acknowledge that there are many factors that influence the system that we either do not know or that we don't want to have to model. At any time $t$ we say that the actual value (say, the position of our car) is the predicted value plus some unknown process noise:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"x(t) = x_{pred}(t) + noise(t)\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"This is not meant to imply that $noise(t)$ is a function that we can derive analytically or that it is well behaved. If there is a bump in the road at $t=10$ then the noise factor will just incorporate that effect. Again, this is not implying that we model, compute, or even know the value of *noise(t)*, it is merely a statement of fact - we can *always* describe the actual value as the predicted value plus some other value. \n",
|
||||
"\n",
|
||||
"Let's express this in linear algebra. Using the same notation from previous chapters, we can say that our model of the system (without noise) is:\n",
|
||||
"\n",
|
||||
"$$ f(x) = Fx$$\n",
|
||||
"\n",
|
||||
"That is, we have a set of linear equations that describe our system. For our car, \n",
|
||||
"$F$ will be the coefficients for Newton's equations of motion. \n",
|
||||
"\n",
|
||||
"Now we need to model the noise. We will just call that *w*, and add it to the equation.\n",
|
||||
"\n",
|
||||
"$$ f(x) = Fx + w$$\n",
|
||||
"\n",
|
||||
"Finally, we need to consider inputs into the system. We are dealing with linear problems here, so we will assume that there is some input $u$ into the system, and that we have some linear model that defines how that input changes the system. For example, if you press down on the accelerator in your car the car will accelerate. We will need a matrix $G$ to convert $u$ into the effect on the system. We just add that into our equation:\n",
|
||||
"\n",
|
||||
"$$ f(x) = Fx + Gu + w$$\n",
|
||||
"\n",
|
||||
"And that's it. That is the equation that Kalman set out to solve, and he found a way to compute an optimal solution if we assume certain properties of $w$.\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Walking Through the Kalman Filter Equations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"I promised that you would not have to understand how to derive Kalman filter equations, and that is true. However, I do think it is worth walking through the equations one by one and becoming familiar with the variables. If this is your first time through the material feel free to skip ahead to the next section. However, you will eventually want to work through this material, so why not now? You will need to have passing familiarity with these equations to read material written about the Kalman filter, as they all presuppose that you are familiar with the equations. I will reiterate them here for easy reference.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\text{Predict Step}\\\\\n",
|
||||
"\\mathbf{x}' &= \\mathbf{F x} + \\mathbf{G u}\\;\\;\\;\\;&(1) \\\\\n",
|
||||
"\\mathbf{P} &= \\mathbf{FP{F}}^T + \\mathbf{Q}\\;\\;\\;\\;&(2) \\\\\n",
|
||||
"\\\\\n",
|
||||
"\\text{Update Step}\\\\\n",
|
||||
"\\mathbf{\\gamma} &= \\mathbf{z} - \\mathbf{H x}\\;\\;\\;\\;&(3) \\\\\n",
|
||||
"\\mathbf{K}&= \\mathbf{PH}^T (\\mathbf{HPH}^T + \\mathbf{R})^{-1}\\;\\;\\;\\;&(4) \\\\\n",
|
||||
"\\mathbf{x}&=\\mathbf{x}' +\\mathbf{K\\gamma}\\;\\;\\;\\;&(5) \\\\\n",
|
||||
"\\mathbf{P}&= (\\mathbf{I}-\\mathbf{KH})\\mathbf{P}\\;\\;\\;\\;&(6)\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"I will start with the measurement step, as that is what we started with in the one dimensional Kalman filter case. Our first equation is\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\mathbf{\\gamma} = \\mathbf{z} - \\mathbf{H x}\\tag{3}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"On the right we have $\\mathbf{Hx}$. That should be recognizable as the measurement function. Multiplying $\\mathbf{H}$ with $\\mathbf{x}$ puts $\\mathbf{x}$ into *measurement space*; in other words, the same basis and units as the sensor's measurements. The variable $\\mathbf{z}$ is just the measurement; it is typical, but not universal to use $\\mathbf{z}$ to denote measurements in the literature ($\\mathbf{y}$ is also sometimes used). Do you remember this chart?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"sys.path.insert(0,'../Chapter06_Multivariate_Kalman_Filter')\n",
|
||||
"import mkf_internal\n",
|
||||
"mkf_internal.show_residual_chart()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7efefefbf6d8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The blue prediction line is the output of $\\mathbf{Hx}$, and the dot labeled \"measurement\" is $\\mathbf{z}$. Therefore, $\\gamma = \\mathbf{z} - \\mathbf{Hx}$ is how we compute the residual, drawn in red. So $\\gamma$ is the residual.\n",
|
||||
"\n",
|
||||
"The next line is the formidable:\n",
|
||||
"\n",
|
||||
"$$\\mathbf{K}= \\mathbf{PH}^T (\\mathbf{HPH}^T + \\mathbf{R})^{-1}\\tag{4}$$\n",
|
||||
"\n",
|
||||
"Unfortunately it is a fair amount of linear algebra to derive this. The derivation can be quite elegant, and I urge you to look it up if you have the mathematical education to follow it. But $\\mathbf{K}$ is just the *Kalman gain* - the ratio of how much measurement vs prediction we should use to create the new estimate. $\\mathbf{R}$ is the *measurement noise*, and $\\mathbf{P}$ is our *uncertainty covariance matrix*.\n",
|
||||
"\n",
|
||||
"So let's work through this expression by expression. Start with $\\mathbf{HPH}^T$. The linear equation $\\mathbf{ABA}^T$ can be thought of as changing the basis of $\\mathbf{B}$ to $\\mathbf{A}$. So $\\mathbf{HPH}^T$ is taking the covariance $\\mathbf{P}$ and putting it in measurement ($\\mathbf{H}$) space. Then, once in measurement space, we can add the measurement noise $\\mathbf{R}$ to it. Hence, the expression for the uncertainty in the measurement is:\n",
|
||||
"\n",
|
||||
"$$(\\mathbf{HPH}^T + \\mathbf{R})^{-1}$$\n",
|
||||
"\n",
|
||||
"Taking the inverse is linear algebra's way of doing $\\frac{1}{x}$. So if you accept my admittedly hand wavey explanation it can be seen to be computing:\n",
|
||||
"\n",
|
||||
"$$ \n",
|
||||
"gain_{measurement\\,space} = \\frac{uncertainty_{prediction}}{uncertainty_{measurement}}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"In other words, the *Kalman gain* equation is doing nothing more than computing a ratio based on how much we trust the prediction vs the measurement. If we are confident in our measurements and unconfident in our predictions $\\mathbf{K}$ will favor the measurement, and vice versa. The equation is complicated because we are doing this in multiple dimensions via matrices, but the concept is simple - scale by a ratio.\n",
|
||||
"\n",
|
||||
"Without going into the derivation of $\\mathbf{K}$, I'll say that this equation is the result of finding a value of $\\mathbf{K}$ that optimizes the *mean-square estimation error*. It does this by finding the minimal values for $\\mathbf{P}$ along it's diagonal. Recall that the diagonal of $P$ is just the variance for each state variable. So, this equation for $\\mathbf{K}$ ensures that the Kalman filter output is optimal. To put this in concrete terms, for our dog tracking problem this means that the estimates for both position and velocity will be optimal - a value of $\\mathbf{K}$ that made the position extremely accurate but the velocity very inaccurate would be rejected in favor of a $\\mathbf{K}$ that made both position and velocity just somewhat accurate."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Our next line is:\n",
|
||||
" $$\\mathbf{x}=\\mathbf{x}' +\\mathbf{K\\gamma}\\tag{5}$$\n",
|
||||
"\n",
|
||||
"This just multiplies the residual by the Kalman gain, and adds it to the state variable. In other words, this is the computation of our new estimate.\n",
|
||||
"\n",
|
||||
"Finally, we have:\n",
|
||||
"\n",
|
||||
"$$\\mathbf{P}=(\\mathbf{I}-\\mathbf{KH})\\mathbf{P}\\tag{6}$$\n",
|
||||
"\n",
|
||||
"$I$ is the identity matrix, and is the way we represent $1$ in multiple dimensions. $H$ is our measurement function, and is a constant. So, simplified, this is simply $P = (1-cK)P$. $K$ is our ratio of how much prediction vs measurement we use. So, if $K$ is large then $(1-cK)$ is small, and P will be made smaller than it was. If $K$ is small, then $(1-cK)$ is large, and P will be made larger than it was. So we adjust the size of our uncertainty by some factor of the *Kalman gain*. I would like to draw your attention back to the g-h filter, which included this Python code:\n",
|
||||
"\n",
|
||||
" # update filter \n",
|
||||
" w = w * (1-scale_factor) + z * scale_factor\n",
|
||||
"\n",
|
||||
"This multidimensional Kalman filter equation is partially implementing this calculation for the variance instead of the state variable."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now we have the measurement steps. The first equation is\n",
|
||||
"\n",
|
||||
"$$\\mathbf{x}' = \\mathbf{Fx} + \\mathbf{Gu}\\tag{1}$$\n",
|
||||
"\n",
|
||||
"This is just our state transition equation which we have already discussed. $\\mathbf{Fx}$ multiplies $\\mathbf{x}$ with the state transition matrix to compute the next state. $G$ and $u$ add in the contribution of the control input $\\mathbf{u}$, if any.\n",
|
||||
"\n",
|
||||
"The final equation is:\n",
|
||||
"$$\\mathbf{P} = \\mathbf{FPF}^T + \\mathbf{Q}\\tag{2}$$\n",
|
||||
"\n",
|
||||
"$\\mathbf{FPF}^T$ is the way we put $\\mathbf{P}$ into the process space using linear algebra so that we can add in the process noise $\\mathbf{Q}$ to it."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Design of the Process Noise Matrix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 2
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+10
-8
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:9cb6305654844522aebd6ab807e2b68b865a7b57f69523ba3d4e85317e6035ad"
|
||||
"signature": "sha256:5b8c10926d18dc83f6553700e669eb52f92d2566a745c9a47d73ec59589e45bb"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -24,6 +24,8 @@
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -250,7 +252,7 @@
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f3d30aa40f0>"
|
||||
"<IPython.core.display.HTML at 0x7fb4016249e8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -289,9 +291,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f3d16d504e0>"
|
||||
"<matplotlib.figure.Figure at 0x7fb3e85be550>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -325,7 +327,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1PfhP/DXTe6OO4557CGCCoiKM7jAAaiJmjRpmmY1\nq2lGk2a26f6lSdOmaTqSJuluv23SkaZmD9C4RQXFyRJQBNnjjnl33Pj8/kCpRCGK3H1uvJ6PRx4o\n977PvYhwvO5z78/7LamurhZAREREROShpGIHICIiIiIaDwsrEREREXk0FlYiIiIi8mgsrERERETk\n0VhYiYiIiMijsbASERERkUeTj3djZ2cnzGazu7IQERERkZ9SKpWIjIy86G3jFlaz2Yy0tDSXhCIi\nIiIiOqeysnLM2zglgIiIiIg8GgsrEREREXk0FlYiIiIi8mgsrERERETk0VhYiYiIiMijsbASERER\nkUdjYSUiIiIij8bCSkREREQejYWViIiIiDwaCysREREReTQWViIiIiLyaCysREREROTRWFiJiIiI\nyKOxsBIRERGRR2NhJSIiIiKPxsJKRERERB6NhZWIiIiIPBoLKxERERF5NBZWIiIiIvJoLKxERERE\n5NFYWImIiIjIo7GwEhEREZFHY2ElIiIiIo/GwkpEREREHo2FlYiIiIg8GgsrEREREXk0FlYiIiIi\n8mgsrERERETk0VhYiYiIiMijsbASERERkUdjYSUiIiIij8bCSkREREQejYWViIiIiDwaCysRERER\neTQWViIiIiLyaCysREREROTRWFiJiIiIyKOxsBIRERGRR2NhJSIiIiKPxsJKRERERB6NhZWIiIiI\nPBoLKxERERF5NBZWIiIiIvJoLKxERERE5NFYWImIiIjIo7GwEhEREZFHY2ElIiIiIo/GwkpERERE\nHk0udgAiIiJyL6fTCavVCqvVCofDAYlEAplMBrlcDqlUCplMBplMBqlUColEInZcIhZWIiIiX2Q2\nm2EymdDb14dBsxUDZgsGLVYMmM2w2uyQypWQyBWQSmWAAAiCA4LTCcE5/BHC8J/VqgCEB+sREaqH\nPigIQUFBUKvVYn955GdYWImIiLycw+FAb28venp60NbVjdZOI6x2AVK1FgqVFoqAACgCg6AMViIw\nQAmFQnnJx7ZaLBgY6EdnRz/sjV1wmAcglzgRFhyEyLAQxERHISgoyIVfHRELKxERkVfq7e1Fc0sr\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f3d3002f7f0>"
|
||||
"<matplotlib.figure.Figure at 0x7fb401624550>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -377,7 +379,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f3d0f9e4198>"
|
||||
"<matplotlib.figure.Figure at 0x7fb401624470>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -417,7 +419,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Wd7U2eiLv5bvVrVknu3AWNTTIeQQkLIpE+S2ZNkstu5\nzrnO/9V8h/M9/m/Onl1mMnuSTHohhCRAANMMmOreLVuSVWx1aZ0XJoRiiOT2LGndv+uaF2OHcEO8\ntO71rKeobt26JYGIiIiISKbUogMQERERET0OCysRERERyRoLKxERERHJGgsrEREREckaCysRERER\nyRoLKxERERHJmvZx3/T7/YjH4+uVhYiIiIgUSq/Xo6KiYsnvPbawxuNxtLe3r0koIiIiIqKf3bhx\n45Hf45QAIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIi\nIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIi\nkjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKS\nNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1\nFlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUW\nViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZW\nIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYi\nIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIi\nIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIi\nIpI1regAJE+5XA7RaBRzc3OYm5tDKpVCNptFKp0BAGg1ami1Wmi1WjgcDjidTtjtdmi1/JEiZcjl\ncgiHwwgGgwiFQkin08hkMshkcwB+uUZ0Oh0cDgdcLhfsdjvUao4TkDJkMhmEw2HMzc0hFAotXh/3\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f3d0f22a1d0>"
|
||||
"<matplotlib.figure.Figure at 0x7fb3e0aa8c50>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -487,7 +489,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f3d16914a20>"
|
||||
"<matplotlib.figure.Figure at 0x7fb3e818e048>"
|
||||
]
|
||||
}
|
||||
],
|
||||
+7
-5
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:7cc2ec0d22bd73d36da7d0cba188abf9d87b484f02588427c8330d843bfbc48b"
|
||||
"signature": "sha256:32e7c8eabef27ef8d2921c97d1517b8e61b8095a0469741977c8a4099d9b129c"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -24,6 +24,8 @@
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -250,7 +252,7 @@
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f61b06947f0>"
|
||||
"<IPython.core.display.HTML at 0x7f227ab379e8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -395,7 +397,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f6197639908>"
|
||||
"<matplotlib.figure.Figure at 0x7f2265b10908>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -813,9 +815,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAF2CAYAAACLY5UZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8FPXh//H37CabYxNCiBCQKwgiR7AiEEARBIX+EBFF\noKJQaRW14oGgKFCRFkS0nl8VqVBFURQUFesRGxVJIcihoEIAuW/IAUJINtnN7vz+iGwNWcid3U1e\nz8eDR8nszO4n/Rh5MX5mxti2bZspAAAAoA6y+HsAAAAAgL8QwwAAAKiziGEAAADUWcQwAAAA6ixi\nGAAAAHUWMQwAAIA6ixgGAABAnVVqDD/44IPq1auXunTpouuuu05fffWVJMnlcmnKlCm69NJL1bdv\nX33++efVPlgAAACgKhmlPXRj69atuuCCC2Sz2bRq1SrdeeedWrt2rd5++22lpKTotddeU3p6uu68\n8059/vnnaty4cU2NHQAAAKiUUs8Mt2vXTjabTaZpyuVyyW63yzAMJScna/To0YqKilJSUpI6d+6s\nlJSUmhgzAAAAUCVCyrLT9OnTtXTpUoWHh+uf//ynIiIitGfPHrVq1UoPPvig+vXrp9atW2v37t3V\nPV4AAACgypTpArrp06drw4YNGj9+vB566CEVFBTI4XAoMjJS27dvV0ZGhux2u/Ly8qp7vAAAAECV\nKdOZYUkKCQnRLbfcorfeekurV69WRESEHA6Hli1bJkmaOXOm7HZ7ieP27t0ri4WbVgAAAKB65eTk\nqEOHDuU6pswxfJppmjJNUwkJCdq5c6c6duwoSdq5c6euuuqqEvtbLBa1b9++vB+DABAXF6cPPvhA\nffr08fdQUE7MXXBj/oIXcxfcmL/gFhcXp5UrV5b7uHOess3KytJ7772nU6dOqbCwUO+++66OHTum\nzp07a+DAgVq4cKFycnK0Zs0abdy4Uf3796/wNwAAAADUtHOeGbZYLPrkk0/0zDPPyOVyqU2bNpoz\nZ47q16+vMWPGaNeuXerTp49iYmI0a9YsxcfH19S4AQAAgEo7Zww3aNBAb7zxhu8DQ0I0a9YszZo1\nq1oGhsDAEpfgxdwFN+YveDF3wY35q3u4sg3nxL8UghdzF9yYv+DF3AU35q/uIYYBAABQZ5X7bhJV\nzeVy6fjx4zIMw99DqfNM01RsbKxCQ0P9PRQAAIAa4dcYdrlcys7OVqNGjbgXcQDweDzKyMhQXFwc\nQQwAAOoEvxbo8ePHCeEAYrFY1KhRIx0/ftzfQwEAALVUXr7L30Moxq8VahgGIRxgLBYLS1YAAECV\nO5h9SlNeX6Wu9y5S5ok8fw/Hy+9rhgEAAFB7Hcw+pZc//kHvfLNVzkKPDENa8eNBDbviQn8PTRIx\nDAAAgGrgK4Kv63GBxt/QWRc1a+Dv4XkRwwAAAKgyZ43gwZ3ULjZMRkGBPL4OdDgUuXSpjLy8ol8O\nh4y8PCkkRCcfe6zE7pbsbDXs109GXp4yVq2S4uIqNF5iuBJycnI0fvx4paWlKScnRxMnTtQDDzzg\nfX38+PE6cOCA3n///WLHTZs2Ta+99pokqUePHiVeBwAAqHEej4z8fBn5+fI08HHmtqBAER9+KMvp\nWP31lwxDJx97zGcEjzi5Q389mKbElftlzC66cM4TE6Mj6ekl3t4oKFD9hx8uOazoaJ8xbNpssmZl\nFR2bV/E1yMRwJSxcuFDr1q3TBx98oIYNG8putxd7febMmXK73SWOe/jhh3Xvvfdq7ty5+vHHH8/6\n/mlpaRoxYoTWrFmjpk2bVvn4AQBA3WXk5alh377eqLXk50uSPJGROrJ9e8n9CwsVO3Fiie176zXU\nYy2uLnkmeGAH9e3T1bufabXKjIyUJzra53hMu125t9wiMyKi6FdkZNH+UVG+94+K0pENG4r2PaPB\nyoMYroRdu3apbdu2Z310Y9RZJs9ut8tutysyMlKmaZb6OWXZBwAAwBfrrl1yt2olnXG3KDMsTCEH\nDhTb5jkdlqZZcv+ICOWNGFEUqJGR2h9i13OZEXrziEXOL9NLrgk2TR1Zt84btrLZSrxnMaGhOvHU\nU2X/xgxDnkaNyr7/WXBfswoYP368mjVrpnfffVfffvutmjVrpmbNmum5556TVHTm9/S2YcOGlfv9\n09LS1KxZM40YMUJS0VKK0+938OBB736HDx/WXXfdpY4dOyoxMVFjx47V4cOHi73X4sWL1axZM23a\ntEnXXnutWrduraSkJG3evLkS/w8AAIBgYFu9Wg0HDFC96dOLAve3rFYdXb1aR374QYe3b9eh/ft1\nZMcOHd240Xe0Wiz65bnnlD5hsu49/0p1To/W/MMWuVQUwV/NvlGv3HvV/y6OMwx5zj9fZmysFBZ2\n7hD2o6A4M3z+WZYIHPpNGFZm//KaMWOGpk6dqmnTpunw4cOaP3++JCkyMlKS9Oijj+rBBx/UtGnT\nlPXrWpby6NatmzZu3Kh169Zp7Nix+uyzz3T++edLkhr8uoYnLy9Pw4YNU2JiopYuXaqQkBA9+eST\n+tOf/qTPP/+8xL2Cp06dqnvvvVft27fXTz/9xBPmAACo5WyrV6vB6NGyOByynDzp82yvu0WLMr9f\nsNwdoryCIoYDTXR0tKKjoxUWFqaQkBCdd955xV6PiopSVFSUwsLCKrTEITQ0VOedd55iYmIkSXFx\ncSU+46OPPtIvv/yil156yRu2jz/+uC699FJt3LhRnTt3Lrb/Pffco/79+0uSWpTjH3wAABB8bN9+\n6w3hvBEj9MvTT0sVfNBZbY3g04Iihst7RreqzgAHsp9++kk5OTnq2LFjse2GYWjfvn0lYrh79+41\nOTwAAOAnoevXq8GoUUUhPHx4UQhbreV+n9oewacFRQzDtzZt2uj1118vsf3Ms8iSVK9evZoYEgAA\n8DN3ixZyN2um/Esu0S/PPFPuED6UfUov1YEIPo0YrqQz1+aW53W73a78X29j4svp5Q+FhYUlXuvU\nqZPef/99RUdHe9cRAwAAeBo1UtaHH8qsV69cIXwo+5Re/vcPWrS8bkTwadxNopLOXBPs8XiUkZGh\njIwM5efny+l0KjMzUxkZGXK5XMX2veSSS7R582alpqYqIyNDubm5xV5PSEiQ1WrVsmXLlJOTUyyc\nb7jhBjVq1Ehjx47VunXrtGfPHqWkpOiuu+6Sw+Govm8YAAAEPDM2tswhfCj7lKYuWKXLJyzWgpR0\nudwe33eHqKU4M1wJhmGUOPN78OBB9ezZs9g+nTt3lmEYeu+999SjRw/vaz169NBdd92lcePG6fjx\n47r99ts1ffp07+sNGzbU9OnTNXfuXD3zzDPyeDz69ttv1bRpU0VERGjp0qV6/PHH9ec//1l5eXlq\n0qSJ+vXrJ5vNVmKcAAAAv1VXzwSfydi2bVu1PtFh//79Z30oRWZmpho2bFidH48KOD0vcb8+4zs7\nO9vPI0J5MXfBjfkLXsxdcAvG+bOtWaPwL77QyUcfLfN9fH1F8ODuwR/BcXFxWrlypZo3b16u4zgz\nDAAAEIRsa9YU3TUiL0+u9u3lGD78nPtzJtg3YhgAACDI/DaE84YOlWPo0LPuSwSfGzEMAAAQRGxr\n1xYL4V+ef97nxXJEcNkQwwAAAMHCNFXv8cfPGcJEcPkQwwAAAMHCMHTstddkf+015UyYUCyEieCK\nIYYBAACCiCcuTjkPPeT9mgiuHGIYAAAgUBUUSGFhPl8igqsGMQwAABBI3G6F/fe/inz3XdnS0pSx\nZo3MiAjvy0Rw1SKGAQAAAoB1715FLlmiiCVLFHLokCTJNAzZ1q5VQZ8+Z31YxgNDieDKIIYrIS0t\nTSNGjNCaNWvUtGnTs+63ePFiTZw4UQcOHKiyz05OTtbtt9/u/boq3xsAANS8ejNmKOLzzyVJhS1b\nKm/ECOUNH64D4TF6ecEqn0+Ma9ecCK4sYrgSunXrpo0bN6pBg5r/B7Ffv37auHGj1q1bp7Fjx9b4\n5wMAgKqVN2qUzMhI5d10k5w9eujQ8byzPjaZCK46xHAlhIaG6rzzzvPLZ9tsNp133nmKiYnxy+cD\nAIDysWRlKWLpUlmys5UzZUqJ1wuuvFIFV15ZtBzizdVEcA0hhivgu+++05AhQ7xfn7lMYtOmTXr4\n4Ye1ZcsWdejQQb169SrxHuvWrdMTTzyhH374QXFxcbr22mv18MMPK+zXK0YXL16sN954Q7t27ZLH\n41FSUpKmTZumtm3bVv83CAAAqkZhocKWL1fk4sUKT0mRUVgoMzRUuXfdJc8Z/2X5bGuCieDqFfAx\n3PSWedXyvgffrvjSgt/97ndnXaLgcrl022236eKLL9YLL7ygzZs366GHHpJhGN590tPTddNNN+ne\ne+/Vs88+q8zMTE2aNEmFhYX6+9//LknKysrSnXfeqcTERHk8Hj311FMaNWqU0tLSFBIS8NMGAAA8\nHjXq21chu3ZJkkyrVfn9+yvvppvkiY727kYE+xdVVQEhISFnXaLwzTff6NChQ/rkk0/UsGFDtWnT\nRqtWrdKiRYu8+7zyyiu6/PLLNX78eElSQkKCxo8fr4kTJ3pjeNy4ccXed8KECerfv7+2bt2qxMTE\navzuAABAlbBYVJCUJEnKu+km5Q0bJk98vPdlIjgwBHwMV+YMrj/s3r1bsbGxatiwoXdb+/bti+3z\n008/ae/evcWWPLjdbjmdTmVkZKhRo0bavHmznn32WW3evFnHjx+Xx+ORJOXl5dXMNwIAACrt5N//\nLjMyUvrNfyEmggNLwMdwsPntcohz7XPjjTfq3nvvLfFaXFycHA6HRo4cqauvvlqvvPKKGjRooL17\n9+rmm2/2RjEAAAh8pt3u/T0RHJiI4SrWqlUrHT9+3HuGV5K2bNlSbJ/ExERt27ZNLVu29PLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f61965f1b00>"
|
||||
"<matplotlib.figure.Figure at 0x7f2264ac0b00>"
|
||||
]
|
||||
}
|
||||
],
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
-789
@@ -1,789 +0,0 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:4ced6bfb1e08c63d260e43842dcb48d678646bfb82a467f54245e8e1f7d1dabb"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Gaussian Probabilities"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: transparent;\n",
|
||||
" color: #000000;\n",
|
||||
" font-weight: 600;\n",
|
||||
" font-size: 11pt;\n",
|
||||
" font-style: bold;\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 110%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f4270036748>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Introduction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The last chapter ended by discussing some of the drawbacks of the Discrete Bayesian filter. For many tracking and filtering problems our desire is to have a filter that is *unimodal* and *continuous*. That is, we want to model our system using floating point math (continuous) and to have only one belief represented (unimodal). For example, we want to say an aircraft is at (12.34381, -95.54321,2389.5) where that is latitude, longitude, and altitude. We do not want our filter to tell us \"it might be at (1,65,78) or at (34,656,98)\" That doesn't match our physical intuition of how the world works, and as we discussed, it is prohibitively expensive to compute.\n",
|
||||
"\n",
|
||||
">So we desire a unimodal, continuous way to represent probabilities that models how the real world works, and that is very computationally efficient to calculate. As you might guess from the chapter name, Gaussian distributions provide all of these features.\n",
|
||||
"\n",
|
||||
"Before we go into the math, lets just look at a graph of the Gaussian distribution to get a sense of what we are talking about."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from stats import plot_gaussian\n",
|
||||
"\n",
|
||||
"plot_gaussian(mean=100, variance=15*15, xlabel='IQ', ylabel='percent')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAGECAYAAAABaSdTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0VFXDxeHfpEwKAQJhIASQGgmQICAdpIlEQBGxEQtF\nwYIoCjbABggoEsUuWAAR4QVUbEEJRUIT6UVDgFBDSacESJ/vDyTfyyvohCRzp+xnLdfKTE5u9uhx\nZs/k3nNMCQkJVkREREREpEx5GB1ARERERMQdqHiLiIiIiNiBireIiIiIiB2oeIuIiIiI2IGKt4iI\niIiIHah4i4iIiIjYgd2Kd0xMDJGRkURGRrJy5cpij83MzOSOO+7gtttuo0+fPsTExFzVsUVERERE\njGCyxzreubm59OzZk4ULF5KTk8OAAQOIjY0t1tj8/Hzy8vLw8/MjMzOTXr16sXbtWvLz820+toiI\niIiIUezyifeOHTsIDQ2lcuXKVK9eneDgYHbv3l2ssV5eXvj5+QFw+vRpzGZzsY8tIiIiImIUL3v8\nkrS0NCwWC/Pnz6dixYpYLBZSUlIICwsr1tisrCyioqI4fPgw0dHReHh4FOvYIiIiIiJGsUvxvqh/\n//4AxMbGYjKZij02ICCAH374gcTERB599FHat2+P1Wot9rFFREREROzNLsXbYrGQmppadDs1NRWL\nxXLVY+vXr09ISAj79u2jatWqNh378OHDKuQiIiIiUuZycnJo0KDB3+63S/GOiIhg7969ZGRkkJOT\nQ3JyctGpINHR0ZhMJkaOHPmPY5OTkzGbzVSqVInU1FQOHDhArVq1KFeu3BWP/d9MJhONGjWyx8Mt\nNUFBQXzzzTd07tzZ6CjihDR/pKQ0h6QkNH+kpJx5DsXHx1/2frsUb7PZzKhRo4iKigJgzJgxRd9L\nS0uzaezx48d56aWXisa98MILVKpUCeCKxxYRERERcRR2O8e7V69e9OrV62/3T5482aaxzZo144cf\nfijWsUVEREREHIV2rnRwznZ6jDgWzR8pKc0hKQnNHykpV5tDKt4OztUmnNiX5o+UlOaQlITmj5SU\nq80hFW8RERERETtQ8RYRERERsQMVbxERERERO1DxFhERERGxAxVvERERERE7UPEWEREREbEDFW8R\nERERETtQ8RYRERERsQMVbxERERERO1DxFhERERGxAxVvERERERE7UPEWEREREbEDFW8RERERETtQ\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f425801cba8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Probably this is immediately recognizable to you as a 'bell curve'. This curve is ubiquitous because under real world conditions most observations are distributed in such a manner. In fact, this is the bell curve for IQ (Intelligence Quotient). You've probably seen this before, and understand it. It tells us that the average IQ is 100, and that the number of people that have IQs higher or lower than that drops off as they get further away from 100. It's hard to see the exact number, but we can see that very few people have an IQ over 150 or under 50, but a lot have an IQ of 90 or 110. \n",
|
||||
"\n",
|
||||
"This curve is not unique to IQ distributions - a vast amount of natural phenomena exhibits this sort of distribution, including the sensors that we use in filtering problems. As we will see, it also has all the attributes that we are looking for - it represents a unimodal belief or value as a probability, it is continuous, and it is computationally efficient. We will soon discover that it also other desirable qualities that we do not yet recognize we need.\n",
|
||||
"<p>\n",
|
||||
"<p>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Nomenclature"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"A bit of nomenclature before we continue - this chart depicts the probability of of a *random variable* having any value between ($-\\infty..\\infty)$. For example, for this chart the probability of the variable being 100 is roughly 2.7%, whereas the probability of it being 80 is around 1%.\n",
|
||||
"> *Random variable* will be precisely defined later. For now just think of it as a variable that can 'freely' and 'randomly' vary. A dog's position in a hallway, air temperature, and a drone's height above the ground are all random variables. The position of the North Pole is not, nor is a sin wave (a sin wave is anything but 'free').\n",
|
||||
"\n",
|
||||
"You may object that human IQs cannot be less than zero, let alone $-\\infty$. This is true, but this is a common limitation of mathematical modeling. \"The map is not the territory\" is a common expression, and it is true for Bayesian filtering and statistics. The Gaussian distribution above very closely models the distribution of IQ test results, but being a model it is necessarily imperfect. The difference between model and reality will come up again and again in these filters. \n",
|
||||
"\n",
|
||||
"You will see these distributions called *Gaussian distributions*, *normal distributions*, and *bell curves*. Bell curve is ambiguous because there are other distributions which also look bell shaped but are not Gaussian distributions, so we will not use it further in this book. But *Gaussian* and *normal* both mean the same thing, and are used interchangeably. I will use both throughout this book as different sources will use either term, and so I want you to be used to seeing both. Finally, as in this paragraph, it is typical to shorten the name and just talk about a *Gaussian* or *normal* - these are both typical shortcut names for the *Gaussian distribution*. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Gaussian Distributions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So let us explore how Gaussians work. A Gaussian is a *continuous probability distribution* that is completely described with two parameters, the mean ($\\mu$) and the variance ($\\sigma^2$). It is defined as:\n",
|
||||
"$$ \n",
|
||||
"f(x, \\mu, \\sigma) = \\frac{1}{\\sigma\\sqrt{2\\pi}} e^{-\\frac{1}{2}{(x-\\mu)^2}/\\sigma^2 }\n",
|
||||
"$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<p> Don't be dissuaded by the equation if you haven't seen it before; you will not need to memorize or manipulate it. The computation of this function is stored in stats.py. \n",
|
||||
"\n",
|
||||
"> **Optional:** Let's remind ourselves how to look at a function stored in a file by using the *%load* magic. If you type *%load -s gaussian stats.py* into a code cell and then press CTRL-Enter, the notebook will create a new input cell and load the function into it.\n",
|
||||
"\n",
|
||||
" %load -s gaussian stats.py\n",
|
||||
" \n",
|
||||
" def gaussian(x, mean, var):\n",
|
||||
" \"\"\"returns normal distribution for x given a \n",
|
||||
" gaussian with the specified mean and variance. \n",
|
||||
" \"\"\"\n",
|
||||
" return math.exp((-0.5*(x-mean)**2)/var) / \\\n",
|
||||
" math.sqrt(_two_pi*var)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<p><p><p><p>We will plot a Gaussian with a mean of 22 $(\\mu=22)$, with a variance of 4 $(\\sigma^2=4)$, and then discuss what this means. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from stats import gaussian\n",
|
||||
"plot_gaussian(22,4,mean_line=True,xlabel='$^{\\circ}C$',ylabel=\"Percent\")\n",
|
||||
"\n",
|
||||
"print('Probability of 22 is %.2f' % (gaussian(22,22,4)*100))\n",
|
||||
"print('Probability of 24 is %.2f' % (gaussian(24,22,4)*100))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"Probability of 22 is 19.95\n",
|
||||
"Probability of 24 is 12.10\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f424d69f978>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So what does this curve *mean*? Assume for a moment that we have a thermometer, which reads 22$\\,^{\\circ}C$. No thermometer is perfectly accurate, and so we normally expect that thermometer will read $\\pm$ that temperature by some amount each time we read it. Furthermore, a theorem called **Central Limit Theorem** states that if we make many measurements that the measurements will be normally distributed. If that is true, then this chart can be interpreted as a continuous curve depicting our belief that the temperature is any given temperature. In this curve, we assign a probability of the temperature being exactly 22$^{\\circ}C$ is $19.95\\%$. Looking to the right, we assign the probability that the temperature is 24$^{\\circ}C$ is $12.10\\%$. Because of the curve's symmetry, the probability of 20$^{\\circ}$C is also $12.10\\%$.\n",
|
||||
"\n",
|
||||
"So the mean ($\\mu$) is what it sounds like - the average of all possible probabilities. Because of the symmetric shape of the curve it is also the tallest part of the curve. The thermometer reads $22^{\\circ}C$, so that is what we used for the mean. \n",
|
||||
"\n",
|
||||
"> *Important*: I will repeat what I wrote at the top of this section: \"A Gaussian...is completely described with two parameters\"\n",
|
||||
"\n",
|
||||
"The standard notation for a normal distribution for a random variable $X$ is $X \\sim\\ \\mathcal{N}(\\mu,\\sigma^2)$. This means I can express the temperature reading of our thermometer as\n",
|
||||
"\n",
|
||||
"$$temp = \\mathcal{N}(22,4)$$\n",
|
||||
"\n",
|
||||
"This is an **extremely important** result. Gaussians allow me to capture an infinite number of possible values with only two numbers! With the values $\\mu=22$ and $\\sigma^2=4$ I can compute the probability of the temperature being $22\\,^{\\circ}C$, $20\\,^{\\circ}C$, $87.34\\,^{\\circ}C$, or any other arbitrary value.\n",
|
||||
"\n",
|
||||
"###### The Variance\n",
|
||||
"\n",
|
||||
"Since this is a probability distribution it is required that the area under the curve always equals one. This should be intuitively clear - the area under the curve represents all possible occurences, which must sum to one.\n",
|
||||
"\n",
|
||||
"This leads to an important insight. If the variance is small the curve will be narrow. To keep the area equal to 1, the curve must also be tall. On the other hand if the variance is large the curve will be wide, and thus it will also have to be short to make the area equal to 1.\n",
|
||||
"\n",
|
||||
"Let's look at that graphically:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"xs = np.arange(15,30,0.05)\n",
|
||||
"p1, = plt.plot (xs,[gaussian(x, 23, .2) for x in xs], label='var=0.2')\n",
|
||||
"p2, = plt.plot (xs,[gaussian(x, 23, 1) for x in xs], label='var=1')\n",
|
||||
"p3, = plt.plot (xs,[gaussian(x, 23, 5) for x in xs], label='var=5')\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f424d668080>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So what is this telling us? The blue gaussian is very narrow. It is saying that we believe $x=23$, and that we are very sure about that $(90%)$. In contrast, the red gaussian also believes that $x=23$, but we are much less sure about that $(18%)$. Our believe that $x=23$ is lower, and so our belief about the likely possible values for $x$ is spread out - we think it is quite likely that $x=20$ or $x=26$, for example. The blue gaussian has almost completely eliminated $22$ or $24$ as possible value - their probability is almost $0\\%$, whereas the red curve considers them nearly as likely as $23$.\n",
|
||||
"\n",
|
||||
"If we think back to the thermometer, we can consider these three curves as representing the readings from three different thermometers. The blue curve represents a very accurate thermometer, and the red one represents a fairly inaccurate one. Green of course represents one in between the two others. Note the very powerful property the Gaussian distribution affords us - we can entirely represent both the reading and the error of a thermometer with only two numbers - the mean and the variance.\n",
|
||||
"\n",
|
||||
"The standard notation for a normal distribution for a random variable $X$ is just $X \\sim\\ \\mathcal{N}(\\mu,\\sigma^2)$ where $\\mu$ is the mean and $\\sigma^2$ is the variance. It may seem odd to use $\\sigma$ squared - why not just $\\sigma$? We will not go into great detail about the math at this point, but in statistics $\\sigma$ is the *standard deviation* of a normal distribution. *Variance* is defined as the square of the standard deviation, hence $\\sigma^2$.\n",
|
||||
"\n",
|
||||
"It is worth spending a few words on standard deviation now. The standard deviation is a measure of how much variation from the mean exists. For Gaussian distributions, 68% of all the data falls within one standard deviation($1\\sigma$) of the mean, 95% falls within two standard deviations ($2\\sigma$), and 99.7% within three ($3\\sigma$). This is often called the 68-95-99.7 rule. So if you were told that the average test score in a class was 71 with a standard deviation of 9.4, you could conclude that 95% of the students received a score between 52.2 and 89.8 if the distribution is normal (that is calculated with $71 \\pm (2 * 9.4)$). "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The following graph depicts the relationship between the standard deviation and the normal distribution. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from gaussian_internal import display_stddev_plot\n",
|
||||
"display_stddev_plot()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFuCAYAAABECkoSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1vXi/vHXzQZBkeEAQU3cuHHv3GZpjrKy8rTrtE5l\naaW2zMrK9jAbajkyZx33LLc4UREVF+BAVET2uO/fH3j8dn6n4QDe97ie/+RDLF8ScF/efO7P25KQ\nkGBDRERERMROuZkOEBERERH5KxqsIiIiImLXNFhFRERExK5psIqIiIiIXdNgFRERERG7psEqIiIi\nInbN46/emJaWRk5OTlm1iIiIiIiL8vLyonLlyn/4tr8crDk5OdSvX79UokSk9AQHBzN37lw6d+5s\nOsXl6H1vjt73Io4tPj7+T9+mSwJERERExK5psIqIiIiIXdNgFXFSupzHHL3vzdH7XsQ5abCKOCk9\ncJuj9705et+LOCcNVhERERGxaxqsIiIiImLXNFhFRERExK5psIqIiIiIXdNgFRERERG7psEqIiIi\nInZNg1VERERE7JoGq4iIiIjYNQ1WEREREbFrGqwiIiIiYtc0WEVERETErmmwioiIiIhd02AVERER\nEbumwSoiIiIidk2DVURERETsmgariIiIiNg1DVYRERERsWsarCIiIiJi1zRYRURERMSuabCKiIiI\niF3TYBURERERu6bBKiIiIiJ2TYNVREREROyaBquIiIiI2DUNVhERERGxaxqsIiIiImLXNFhFRERE\nxK5psIqIiIiIXdNgFRERERG7psEqIiIiInZNg1VERERE7JoGq4iIiIjYNQ/TASIijqywyEpyWibp\nmXlczMnH4pEGgK0wjwBfLwL9vakW4o+Hu54fEBG5VhqsIiJXyGazkXjyAr/GJRN7MJUDKedJPJFO\nfqH1/37RmrHF/+zy6uWf8vZ054aqFagTXpGY2pXo3LgaN1SpgMViKeM/gYiIY9JgFRH5Czabjd1H\n0vjx1wOs2HGc5LTM//k1VYPKEVrBF39fTzasKf65dg2qkplTwJkLOZw8l0X88XPEHz/Hgo2JAFQL\n8ad7s0hu61SHxjVDNF5FRP6CBquIyB/IzMlnxpoEZq09QHzSucs/X9Hfm06NqtG+QRgNqgcRVTWQ\nAD+vy28P/6z4n7Nf6nf55y5m53PoZDr7jp1j/b4T/BqXTHJaJt8t38d3y/dRPyKI2zvX4Y4udfH3\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f424d5dcbe0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 5
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<p>\n",
|
||||
"<p>\n",
|
||||
"<div style=\"border:1px dotted black;background-color:#DCDCDC#\">**Sidebar**: An equivalent formation for a Gaussian is $\\mathcal{N}(\\mu,1/\\tau)$ where $\\mu$ is the *mean* and $tau$ the *precision*. Here $1/\\tau = \\sigma^2$; it is the reciprocal of the variance. While we do not use this formulation in this book, it underscores that the variance is a measure of how precise our data is. A small variance yields large precision - our measurement is very precise. Conversely, a large variance yields low precision - our belief is spread out across a large area. You should become comfortable with thinking about Gaussians in these equivalent forms. Gaussians reflect our *belief* about a measurement, they express the *precision* of the measurement, and they express how much *variance* there is in the measurements. These are all different ways of stating the same fact.</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Interactive Gaussians"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"For those that are reading this in IPython Notebook, here is an interactive version of the Gaussian plots. Use the sliders to modify $\\mu$ and $\\sigma^2$. Adjusting $\\mu$ will move the graph to the left and right because you are adjusting the mean, and adjusting $\\sigma^2$ will make the bell curve thicker and thinner."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import math\n",
|
||||
"from IPython.html.widgets import interact, interactive, fixed\n",
|
||||
"import IPython.html.widgets as widgets\n",
|
||||
"\n",
|
||||
"def plt_g (mu,variance):\n",
|
||||
" xs = np.arange(2,8,0.1)\n",
|
||||
" ys = [gaussian (x, mu,variance) for x in xs]\n",
|
||||
" plt.plot (xs, ys)\n",
|
||||
" plt.ylim((0,1))\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
"interact (plt_g, mu=(0,10), variance=widgets.FloatSliderWidget(value=0.6,min=0.2,max=4.5))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f424d60aeb8>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 6,
|
||||
"text": [
|
||||
"<function __main__.plt_g>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 6
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Computational Properties of the Gaussian"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Recall how our discrete Bayesian filter worked. We had a vector implemented as a numpy array representing our belief at a certain moment in time. When we performed another measurement using the `sense()` function we had to multiply probabilities together, and when we performed the motion step using the `update()` function we had to shift and add probabilities. I've promised you that the Kalman filter uses essentially the same process, and that it uses Gaussians instead of histograms, so you might reasonable expect that we will be multiplying, adding, and shifting Gaussians in the Kalman filter.\n",
|
||||
"\n",
|
||||
"A typical textbook would directly launch into a multipage proof of the behavior of Gaussians under these operations, but I don't see the value in that right now. I think the math will be much more intuitive and clear if we just start developing a Kalman filter using Gaussians. I will provide the equations for multiplying and shifting Gaussians at the appropriate time. You will then be able to develop a physical intuition for what these operations do, rather than be forced to digest a lot of fairly abstract math.\n",
|
||||
"\n",
|
||||
"The key point, which I will only assert for now, is that all the operations are very simple, and that they preserve the properties of the Gaussian. This is somewhat remarkable, in that the Gaussian is a nonlinear function, and typically if you multiply a nonlinear equation with itself you end up with a different equation. For example, the shape of `sin(x)sin(x)` is very different from `sin(x)`. But the result of multiplying two Gaussians is yet another Gaussian. This is a fundamental property, and the key reason why Kalman filters are possible."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Computing Probabilities with scipy.stats"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"In this chapter I have used by custom written code for computing Gaussians, plotting, and so on. I chose to do that to give you a chance to look at the code and see how these functions are implemented. However, Python comes with \"batteries included\" as the saying goes, and it comes with a wide range of statistics functions in the module scipy.stats. I find the performance of some of the functions rather slow (the scipy.stats documentation contains a warning to this effect), but this is offset by the fact that this is standard code available to everyone, and it is well tested. So let's walk through how to use scipy.stats to compute various things.\n",
|
||||
"\n",
|
||||
"The scipy.stats module contains a number of objects which you can use to compute attributes of various probability distributions. The full documentation for this module is here: http://http://docs.scipy.org/doc/scipy/reference/stats.html. However, we will focus on the norm variable, which implements the normal distribution. Let's look at some code that uses `scipy.stats.norm` to compute a Gaussian, and compare its value to the value returned by the `gaussian()` function."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from scipy.stats import norm\n",
|
||||
"print (norm(2,3).pdf(1.5))\n",
|
||||
"print (gaussian(x=1.5, mean=2, var=3*3))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"0.131146572034\n",
|
||||
"0.13114657203397997\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 7
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The call `norm(2,3)` creates what scipy calls a 'frozen' distribution - it creates and returns an object with a mean of 2 and a standard deviation of 3. You can then use this object multiple times to get the probability of various values, like so:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"n23 = norm(2,3)\n",
|
||||
"print ('probability of 1.5 is %.4f' % n23.pdf(1.5))\n",
|
||||
"print ('probability of 2.5 is also %.4f' % n23.pdf(2.5))\n",
|
||||
"print ('whereas probability of 2 is %.4f' % n23.pdf(2))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"probability of 1.5 is 0.1311\n",
|
||||
"probability of 2.5 is also 0.1311\n",
|
||||
"whereas probability of 2 is 0.1330\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 8
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"If we look at the documentation for `scipy.stats.norm` <a href=\"http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html#scipy.stats.normfor\">here</a>[1] we see that there are many other functions that norm provides.\n",
|
||||
"\n",
|
||||
"For example, we can generate $n$ samples from the distribution with the `rvs()` function."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print (n23.rvs(size=15))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[ 7.34214043 4.01197645 2.72519952 6.59756375 1.23150108 5.35084192\n",
|
||||
" 5.13531457 -1.17205809 3.62692992 -2.15541009 1.50868156 6.60801968\n",
|
||||
" 4.56818095 0.22491041 -2.23888555]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 9
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can get the *cumulative distribution function (CDF)*, which is the probability that a randomly drawn value from the distribution is less than or equal to $x$."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"# probability that a random value is less than the mean 2\n",
|
||||
"print (n23.cdf (2))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"0.5\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 10
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can get various properties of the distribution:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print ('variance is', n23.var())\n",
|
||||
"print ('standard deviation is', n23.std())\n",
|
||||
"print ('mean is', n23.mean())"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"variance is 9.0\n",
|
||||
"standard deviation is 3.0\n",
|
||||
"mean is 2.0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 11
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"There are many other functions available, and if you are interested I urge you to peruse the documentation. I find the documentation to be excessively terse, but with a bit of googling you can find out what a function does and some examples of how to use it. Most of this functionality is not of immediate interest to the book, so I will leave the topic in your hands to explore. The tutorial is quite approachable, and I suggest starting there. <a href=\"http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html\">(tutorial)</a>[2]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Summary and Key Points"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The following points **must** be understood by you before we continue:\n",
|
||||
"\n",
|
||||
"* Normal distributions occur throughout nature\n",
|
||||
"* They express a continuous probability distribution\n",
|
||||
"* They are completely described by two parameters: the mean ($\\mu$) and variance ($\\sigma^2$)\n",
|
||||
"* $\\mu$ is the average of all possible values\n",
|
||||
"* $\\sigma^2$ represents how much our measurements vary from the mean"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"References"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"[1] http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html#scipy.stats.normfor\n",
|
||||
"\n",
|
||||
"[2] http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,472 +0,0 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:8de0a063add9b29133c1733f57bd0169991ed4e5c592b8968aa06a208803b3c2"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Kalman Filter Math"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: transparent;\n",
|
||||
" color: #000000;\n",
|
||||
" font-weight: 600;\n",
|
||||
" font-size: 11pt;\n",
|
||||
" font-style: bold;\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 110%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f677177b748>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"If you've gotten this far I hope that you are thinking that the Kalman filter's fearsome reputation is somewhat undeserved. Sure, I hand waved some equations away, but I hope implementation has been fairly straightforward for you. The underlying concept is quite straightforward - take two measurements, or a measurement and a prediction, and choose the output to be somewhere between the two. If you believe the measurement more your guess will be closer to the measurement, and if you believe the prediction is more accurate your guess will lie closer it it. That's not rocket science (little joke - it is exactly this math that got Apollo to the moon and back!). \n",
|
||||
"\n",
|
||||
"Well, to be honest I have been choosing my problems carefully. For any arbitrary problem finding some of the matrices that we need to feed into the Kalman filter equations can be quite difficult. I haven't been *too tricky*, though. Equations like Newton's equations of motion can be trivially computed for Kalman filter applications, and they make up the bulk of the kind of problems that we want to solve. If you are a hobbyist, you can safely pass by this chapter for now, and perhaps forever. Some of the later chapters will assume the material in this chapter, but much of the work will still be accessible to you. \n",
|
||||
"\n",
|
||||
"But, I urge everyone to at least read the first section, and to skim the rest. It is not much harder than what you have done - the difficulty comes in finding closed form expressions for specific problems, not understanding the math in this chapter. \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Modeling a Linear System that Has Noise"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We need to start by understanding the underlying equations and assumptions that the Kalman filter uses. We are trying to model real world phenomena, so what do we have to consider?\n",
|
||||
"\n",
|
||||
"First, each physical system has a process. For example, a car traveling at a certain velocity goes so far in a fixed amount of time, and it's velocity varies as a function of it's acceleration. We describe that behavior with the well known Newtonian equations we learned in high school.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"v&=at\\\\\n",
|
||||
"d &= \\frac{1}{2}at_2 + v_0t + d_0\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"But, of course we know this is not all that is happening. First, we do not have perfect measures of things like the velocity and acceleration - there is always noise in the measurements, and we have to model that. Second, no car travels on a perfect road. There are bumps that cause the car to slow down, there is wind drag, there are hills that raise and lower the speed. If we do not have explicit knowledge of these factors we lump them all together under the term \"process noise\".\n",
|
||||
"\n",
|
||||
"Trying to model off of those factors explicitly and exactly is impossible for anything but the most trivial problem. I could try to modify Newton's equations for things like bumps in the road, the behavior of the car's suspension system, heck, the effects of hitting bugs with the windshield, but the job would never be done - there would always be more effects to add. What is worse, each of those models would in themselves be a simplification - do I assume the wind is constant, that the drag of the car is the same for all angles of the wind, that the suspension act as perfect springs, and so on?\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"So control theory makes a mathematically correct simplification. We acknowledge that there are many factors that influence the system that we either do not know or that we don't want to have to model. At any time $t$ we say that the actual value (say, the position of our car) is the predicted value plus some unknown process noise:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"x(t) = x_{pred}(t) + noise(t)\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"This is not meant to imply that $noise(t)$ is a function that we can derive analytically or that it is well behaved. If there is a bump in the road at $t=10$ then the noise factor will just incorporate that effect. Again, this is not implying that we model, compute, or even know the value of *noise(t)*, it is merely a statement of fact - we can *always* describe the actual value as the predicted value plus some other value. \n",
|
||||
"\n",
|
||||
"Let's express this in linear algebra. Using the same notation from previous chapters, we can say that our model of the system (without noise) is:\n",
|
||||
"\n",
|
||||
"$$ f(x) = Fx$$\n",
|
||||
"\n",
|
||||
"That is, we have a set of linear equations that describe our system. For our car, \n",
|
||||
"$F$ will be the coefficients for Newton's equations of motion. \n",
|
||||
"\n",
|
||||
"Now we need to model the noise. We will just call that *w*, and add it to the equation.\n",
|
||||
"\n",
|
||||
"$$ f(x) = Fx + w$$\n",
|
||||
"\n",
|
||||
"Finally, we need to consider inputs into the system. We are dealing with linear problems here, so we will assume that there is some input $u$ into the system, and that we have some linear model that defines how that input changes the system. For example, if you press down on the accelerator in your car the car will accelerate. We will need a matrix $G$ to convert $u$ into the effect on the system. We just add that into our equation:\n",
|
||||
"\n",
|
||||
"$$ f(x) = Fx + Gu + w$$\n",
|
||||
"\n",
|
||||
"And that's it. That is the equation that Kalman set out to solve, and he found a way to compute an optimal solution if we assume certain properties of $w$.\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Walking Through the Kalman Filter Equations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"I promised that you would not have to understand how to derive Kalman filter equations, and that is true. However, I do think it is worth walking through the equations one by one and becoming familiar with the variables. If this is your first time through the material feel free to skip ahead to the next section. However, you will eventually want to work through this material, so why not now? You will need to have passing familiarity with these equations to read material written about the Kalman filter, as they all presuppose that you are familiar with the equations. I will reiterate them here for easy reference.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\text{Predict Step}\\\\\n",
|
||||
"\\mathbf{x}' &= \\mathbf{F x} + \\mathbf{G u}\\;\\;\\;\\;&(1) \\\\\n",
|
||||
"\\mathbf{P} &= \\mathbf{FP{F}}^T + \\mathbf{Q}\\;\\;\\;\\;&(2) \\\\\n",
|
||||
"\\\\\n",
|
||||
"\\text{Update Step}\\\\\n",
|
||||
"\\mathbf{\\gamma} &= \\mathbf{z} - \\mathbf{H x}\\;\\;\\;\\;&(3) \\\\\n",
|
||||
"\\mathbf{K}&= \\mathbf{PH}^T (\\mathbf{HPH}^T + \\mathbf{R})^{-1}\\;\\;\\;\\;&(4) \\\\\n",
|
||||
"\\mathbf{x}&=\\mathbf{x}' +\\mathbf{K\\gamma}\\;\\;\\;\\;&(5) \\\\\n",
|
||||
"\\mathbf{P}&= (\\mathbf{I}-\\mathbf{KH})\\mathbf{P}\\;\\;\\;\\;&(6)\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"I will start with the measurement step, as that is what we started with in the one dimensional Kalman filter case. Our first equation is\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\mathbf{\\gamma} = \\mathbf{z} - \\mathbf{H x}\\tag{3}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"On the right we have $\\mathbf{Hx}$. That should be recognizable as the measurement function. Multiplying $\\mathbf{H}$ with $\\mathbf{x}$ puts $\\mathbf{x}$ into *measurement space*; in other words, the same basis and units as the sensor's measurements. The variable $\\mathbf{z}$ is just the measurement; it is typical, but not universal to use $\\mathbf{z}$ to denote measurements in the literature ($\\mathbf{y}$ is also sometimes used). Do you remember this chart?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import mkf_internal\n",
|
||||
"mkf_internal.show_residual_chart()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f677177b4e0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The blue prediction line is the output of $\\mathbf{Hx}$, and the dot labeled \"measurement\" is $\\mathbf{z}$. Therefore, $\\gamma = \\mathbf{z} - \\mathbf{Hx}$ is how we compute the residual, drawn in red. So $\\gamma$ is the residual.\n",
|
||||
"\n",
|
||||
"The next line is the formidable:\n",
|
||||
"\n",
|
||||
"$$\\mathbf{K}= \\mathbf{PH}^T (\\mathbf{HPH}^T + \\mathbf{R})^{-1}\\tag{4}$$\n",
|
||||
"\n",
|
||||
"Unfortunately it is a fair amount of linear algebra to derive this. The derivation can be quite elegant, and I urge you to look it up if you have the mathematical education to follow it. But $\\mathbf{K}$ is just the *Kalman gain* - the ratio of how much measurement vs prediction we should use to create the new estimate. $\\mathbf{R}$ is the *measurement noise*, and $\\mathbf{P}$ is our *uncertainty covariance matrix*.\n",
|
||||
"\n",
|
||||
"So let's work through this expression by expression. Start with $\\mathbf{HPH}^T$. The linear equation $\\mathbf{ABA}^T$ can be thought of as changing the basis of $\\mathbf{B}$ to $\\mathbf{A}$. So $\\mathbf{HPH}^T$ is taking the covariance $\\mathbf{P}$ and putting it in measurement ($\\mathbf{H}$) space. Then, once in measurement space, we can add the measurement noise $\\mathbf{R}$ to it. Hence, the expression for the uncertainty in the measurement is:\n",
|
||||
"\n",
|
||||
"$$(\\mathbf{HPH}^T + \\mathbf{R})^{-1}$$\n",
|
||||
"\n",
|
||||
"Taking the inverse is linear algebra's way of doing $\\frac{1}{x}$. So if you accept my admittedly hand wavey explanation it can be seen to be computing:\n",
|
||||
"\n",
|
||||
"$$ \n",
|
||||
"gain_{measurement\\,space} = \\frac{uncertainty_{prediction}}{uncertainty_{measurement}}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"In other words, the *Kalman gain* equation is doing nothing more than computing a ratio based on how much we trust the prediction vs the measurement. If we are confident in our measurements and unconfident in our predictions $\\mathbf{K}$ will favor the measurement, and vice versa. The equation is complicated because we are doing this in multiple dimensions via matrices, but the concept is simple - scale by a ratio.\n",
|
||||
"\n",
|
||||
"Without going into the derivation of $\\mathbf{K}$, I'll say that this equation is the result of finding a value of $\\mathbf{K}$ that optimizes the *mean-square estimation error*. It does this by finding the minimal values for $\\mathbf{P}$ along it's diagonal. Recall that the diagonal of $P$ is just the variance for each state variable. So, this equation for $\\mathbf{K}$ ensures that the Kalman filter output is optimal. To put this in concrete terms, for our dog tracking problem this means that the estimates for both position and velocity will be optimal - a value of $\\mathbf{K}$ that made the position extremely accurate but the velocity very inaccurate would be rejected in favor of a $\\mathbf{K}$ that made both position and velocity just somewhat accurate."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Our next line is:\n",
|
||||
" $$\\mathbf{x}=\\mathbf{x}' +\\mathbf{K\\gamma}\\tag{5}$$\n",
|
||||
"\n",
|
||||
"This just multiplies the residual by the Kalman gain, and adds it to the state variable. In other words, this is the computation of our new estimate.\n",
|
||||
"\n",
|
||||
"Finally, we have:\n",
|
||||
"\n",
|
||||
"$$\\mathbf{P}=(\\mathbf{I}-\\mathbf{KH})\\mathbf{P}\\tag{6}$$\n",
|
||||
"\n",
|
||||
"$I$ is the identity matrix, and is the way we represent $1$ in multiple dimensions. $H$ is our measurement function, and is a constant. So, simplified, this is simply $P = (1-cK)P$. $K$ is our ratio of how much prediction vs measurement we use. So, if $K$ is large then $(1-cK)$ is small, and P will be made smaller than it was. If $K$ is small, then $(1-cK)$ is large, and P will be made larger than it was. So we adjust the size of our uncertainty by some factor of the *Kalman gain*. I would like to draw your attention back to the g-h filter, which included this Python code:\n",
|
||||
"\n",
|
||||
" # update filter \n",
|
||||
" w = w * (1-scale_factor) + z * scale_factor\n",
|
||||
"\n",
|
||||
"This multidimensional Kalman filter equation is partially implementing this calculation for the variance instead of the state variable."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now we have the measurement steps. The first equation is\n",
|
||||
"\n",
|
||||
"$$\\mathbf{x}' = \\mathbf{Fx} + \\mathbf{Gu}\\tag{1}$$\n",
|
||||
"\n",
|
||||
"This is just our state transition equation which we have already discussed. $\\mathbf{Fx}$ multiplies $\\mathbf{x}$ with the state transition matrix to compute the next state. $G$ and $u$ add in the contribution of the control input $\\mathbf{u}$, if any.\n",
|
||||
"\n",
|
||||
"The final equation is:\n",
|
||||
"$$\\mathbf{P} = \\mathbf{FPF}^T + \\mathbf{Q}\\tag{2}$$\n",
|
||||
"\n",
|
||||
"$\\mathbf{FPF}^T$ is the way we put $\\mathbf{P}$ into the process space using linear algebra so that we can add in the process noise $\\mathbf{Q}$ to it."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Design of the Process Noise Matrix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 2
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,257 +0,0 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:f0360fc9458bd40069073ce91309aab5fcae24de06b9e4ddd9a1b31f7c2e3b96"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Signals and Noise"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" color: #0000FF;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 110%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 300px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x2c2dbd0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 1
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
File renamed without changes.
@@ -3,7 +3,7 @@ from IPython.core.display import HTML
|
||||
import matplotlib.pylab as pylab
|
||||
|
||||
def load_style():
|
||||
styles = open("./styles/custom2.css", "r").read()
|
||||
styles = open("../styles/custom2.css", "r").read()
|
||||
return HTML(styles)
|
||||
|
||||
pylab.rcParams['lines.linewidth'] = 2
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File diff suppressed because it is too large.
Load diff
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
-1469
File diff suppressed because it is too large.
Load diff
@@ -1,29 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Tue May 13 13:10:50 2014
|
||||
|
||||
@author: RL
|
||||
"""
|
||||
|
||||
# position, velocity (fps)
|
||||
pos = 20000
|
||||
vel = 200
|
||||
|
||||
|
||||
t = 10
|
||||
z = 22060
|
||||
|
||||
|
||||
def predict_dz (vel,t):
|
||||
return vel*t
|
||||
|
||||
|
||||
dz = z - pos
|
||||
|
||||
|
||||
print dz - predict_dz(vel,t)
|
||||
|
||||
|
||||
h = 0.1
|
||||
vel = vel + h * (dz - predict_dz(vel,t)) / t
|
||||
print 'new vel =', vel
|
||||
+13
-13
@@ -33,19 +33,19 @@ if __name__ == '__main__':
|
||||
#merge_notebooks(sys.argv[1:])
|
||||
merge_notebooks(
|
||||
['Preface.ipynb',
|
||||
'g-h_filter.ipynb',
|
||||
'discrete_bayes.ipynb',
|
||||
'Least_Squares_Filters.ipynb',
|
||||
'Gaussians.ipynb',
|
||||
'Kalman_Filters.ipynb',
|
||||
'Multivariate_Kalman_Filters.ipynb',
|
||||
'Kalman_Filter_Math.ipynb',
|
||||
'Designing_Kalman_Filters.ipynb',
|
||||
'Extended_Kalman_Filters.ipynb',
|
||||
'Unscented_Kalman_Filter.ipynb',
|
||||
'Designing_Nonlinear_Kalman_Filters.ipynb',
|
||||
'Appendix_Installation.ipynb',
|
||||
'Appendix_Symbols_and_Notations.ipynb'])
|
||||
'Chapter01_gh_filter/g-h_filter.ipynb',
|
||||
'Chapter02_Discrete_Bayes/discrete_bayes.ipynb',
|
||||
'Chapter03_Least_Squares/Least_Squares_Filters.ipynb',
|
||||
'Chapter04_Gaussians/Gaussians.ipynb',
|
||||
'Chapter05_Kalman_Filters/Kalman_Filters.ipynb',
|
||||
'Chapter06_Multivariate_Kalman_Filter/Multivariate_Kalman_Filters.ipynb',
|
||||
'Chapter07_Kalman_Filter_Math/Kalman_Filter_Math.ipynb',
|
||||
'Chapter08_Designing_Kalman_Filters/Designing_Kalman_Filters.ipynb',
|
||||
'Chapter09_Extended_Kalman_Filters/Extended_Kalman_Filters.ipynb',
|
||||
'Chapter10_Unscented_Kalman_Filters/Unscented_Kalman_Filter.ipynb',
|
||||
'Chapter11_Designing_Nonlinear_Kalman_Filters/Designing_Nonlinear_Kalman_Filters.ipynb',
|
||||
'Appendix_A_Installation/Appendix_Installation.ipynb',
|
||||
'Appendix_B_Symbols_and_Notations/Appendix_Symbols_and_Notations.ipynb'])
|
||||
|
||||
|
||||
# merge_notebooks(['Preface.ipynb', g-h_filter.ipynb discrete_bayes.ipynb Gaussians.ipynb Kalman_Filters.ipynb Multivariate_Kalman_Filters.ipynb Kalman_Filter_Math.ipynb Designing_Kalman_Filters.ipynb Extended_Kalman_Filters.ipynb Unscented_Kalman_Filter.ipynb'])
|
||||
Reference in new issue
Block a user