Ran all notebooks to use new css settings.
This commit is contained in:
1 parent
0a41e78aeb
commit
5240944dd4
19 files changed
+825
-545
No files matched your search
@@ -0,0 +1,540 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Fira+sans');\n",
|
||||
"\n",
|
||||
".CodeMirror pre {\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
"}\n",
|
||||
" div.cell{\n",
|
||||
" width: 900px;\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: 12pt;\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",
|
||||
" text-align: left;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" text-align: left;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 16pt;\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: wrap;\n",
|
||||
" text-align: left;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 14pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" text-align: left;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 100;\n",
|
||||
" font-size: 14pt;\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",
|
||||
"\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" /*font-family: 'Vollkorn', verdana,arial,sans-serif;*/\n",
|
||||
" line-height: 150%;\n",
|
||||
" font-size: 130%;\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: 50000px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 50000px;\n",
|
||||
" }\n",
|
||||
" div.output_wrapper{\n",
|
||||
" margin-top:0.2em;\n",
|
||||
" margin-bottom:0.2em;\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
" code{\n",
|
||||
" font-size: 6pt;\n",
|
||||
"\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",
|
||||
" equationNumbers: { autoNumber: \"AMS\", useLabelIds: true}\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" scale:95,\n",
|
||||
" availableFonts: [],\n",
|
||||
" preferredFont:null,\n",
|
||||
" webFont: \"TeX\",\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.HTML object>"
|
||||
]
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import sys;sys.path.insert(0,'..')\n",
|
||||
"from book_format import load_style;load_style('..')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Interactions\n",
|
||||
"\n",
|
||||
"This is a collection of interactions, mostly from the book. If you have are reading a print version of the book, or are reading it online via Github or nbviewer you will be unable to run the interactions.\n",
|
||||
"\n",
|
||||
"So I have created this notebook. Here is how you run an interaction if you do not have IPython installed on your computer.\n",
|
||||
"\n",
|
||||
"1. Go to try.juptyer.org in your browser. It will launch a temporary notebook server for you.\n",
|
||||
"\n",
|
||||
"2. Click the **New** button and select `Python 3`. This will create a new notebook that will run Python 3 for you in your browser.\n",
|
||||
"\n",
|
||||
"3. Copy the entire contents of a cell from this notebook and paste it into a 'code' cell in the notebook on your browser. \n",
|
||||
"\n",
|
||||
"4. Press CTRL+ENTER to execute the cell.\n",
|
||||
"\n",
|
||||
"5. Have fun! Change code. Play. Experiment. Hack.\n",
|
||||
"\n",
|
||||
"Your server and notebook is not permanently saved. Once you close the session your data is lost. Yes, it says it is saving your file if you press save, and you can see it in the directory. But that is just happening in a Docker container that will be deleted as soon as you close the window. Copy and paste any changes you want to keep to an external file.\n",
|
||||
"\n",
|
||||
"Of course if you have IPython installed you can download this notebook and run it on your own computer. Type\n",
|
||||
"\n",
|
||||
" ipython notebook\n",
|
||||
" \n",
|
||||
"in a command prompt from the directory where you downloaded this file. Click on the name of this file to open it."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Experimenting with FPF'\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"The Kalman filter uses the equation $P^- = FPF^\\mathsf{T}$ to compute the prior of the covariance matrix during the prediction step, where P is the covariance matrix and F is the system transistion function. For a Newtonian system $x = \\dot{x}\\Delta t + x_0$ F might look like\n",
|
||||
"\n",
|
||||
"$$F = \\begin{bmatrix}1 & \\Delta t\\\\0 & 1\\end{bmatrix}$$\n",
|
||||
"\n",
|
||||
"$FPF^\\mathsf{T}$ alters P by taking the correlation between the position ($x$) and velocity ($\\dot{x}$). This interactive plot lets you see the effect of different designs of F has on this value. For example,\n",
|
||||
"\n",
|
||||
"* what if $x$ is not correlated to $\\dot{x}$? (set F01 to 0)\n",
|
||||
"\n",
|
||||
"* what if $x = 2\\dot{x}\\Delta t + x_0$? (set F01 to 2)\n",
|
||||
"\n",
|
||||
"* what if $x = \\dot{x}\\Delta t + 2*x_0$? (set F00 to 2)\n",
|
||||
"\n",
|
||||
"* what if $x = \\dot{x}\\Delta t$? (set F00 to 0)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAARAAAAEoCAYAAACQI67VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl81NW9//HXh0AShICIoAgRcMMmQUSr2LqBcUFvaxVu\nVai1tVcfWr11q94KehV+WrXVam291ltb1Fq11uVa11KCAasiuKCYENQqtIBKAAHDnuXz++M7SQYI\nZPKdmXxnkvfz8fg+ZvvOOSfLvOd8t3PM3RERCaNL1A0QkeylABGR0BQgIhKaAkREQlOAiEhoChAR\nCU0BIiKhKUA6OTNrMLP1ZnZT7PHo2HNfmtnJUbdve2b2sZltMbOHo26LKEAkcIi7/3fc4+Xu3svd\n/9bSymZWYmbTzWylmTUkU7GZ7W1mz5rZ8lhw7bur9d19f+CWZOqU1FGASBhbgT8B/5GCshqAF4Hx\nbXiPpaBeSYGuUTdAso+7fwh8aGYHpKCsauA+M9P/YhZSD0REQlOAiEhoChARCU0BIiKhKUAkFDPL\nB3Jj9/PMLC/JsvJjD/Njj3dFg9hkCAWIQBsPi5rZEGAjUEHwYd4EVMW9/qKZXduGIjcCX8bKWgRs\niCvrN2b2m2TaK+ljGpGsczOzTcAW4G53v9HMjgWmA5uBs919RqQN3I6ZfQDsAzzu7hdE3Z7OTgEi\nIqFpE0ZEQlOAiEhoChARCU0BIpjZkNiVsDVmlnE7Js3sZTPbZGZ/jz3Oiw1BsLVxGAKJhgJE4vV2\n99/t7EUzm2hm/4x9eP/PzPqEqcTMupnZk2a2OBZcx+9qfXc/Abg47vEWd+8JPILOCYmUAkQSYmbF\nwH3Ad4C9CM7duDeJIl8BzgU+J7EQ2Nm5HzonJEK6hFoS9R3gWXd/FcDM/huoMrMe7r5h12/dlrvX\nAr+KlVOf8pZKu1EPRBJVBLzX+MDdPyE4Ae2gyFokkVOASKJ6Auu2e+5LoCCCtkiGUIBIotYDvbd7\nrjdQE0FbJEMoQCRRlcCIxgdmtj/B1bgfRtYiiZwCRBL1CPBNMzvGzHoANwFPtXUHaqPYuRyNl+3H\n398ZHa7NQJEHiJnlmNl8M3su6rbIzg+JuvtCgnMxHgFWAN2BS5re2PJl97vyAcGh4H0Irv7d0Dil\ng5lNNrMXE2ibDuFGLPKrcc3sKuBwoMDdT4+0MZ2UmQ0mGIdjM3C1u/8+4iZtw8xmAKOAue5+Umzw\nohVADvBzd9fZqBGJNEDMbBDwIPBT4Cp3/2ZkjRGRNot6E+Yu4BqCyYVEJMtEFiBm9g2g2t3no21Z\nkawU2SaMmd0CfBeoIxhQtxfBXv3z4tbRnneRiLh7q1/skfVA3H2yuxe6+1DgHODl+PCIW6/dlhtv\nvFH1qb6MrK+9f7ZERb0PJJ56GyJZJiOuxnX32cDsqNshIm2TST2QyI0ePVr1qb6MrK+9f7ZERX4i\n2a6YmWdy+0Q6KjPDM3knqohkPwWIiISmABGR0BQgIhKaAkREQlOAiEhoChARCU0BIiKhKUBEJDQF\niIiEpgARkdAUICISmgJEREJTgIhIaAoQEQlNASIioSlARCS0KOeFyTezuWb2rplVmNmUqNoiIuFE\nPbXlbu6+0cy6Aq8Cl7v73LjXNaShSASyYkhDd98Yu5sLdENTXIpklUgDxMy6mNm7BDOt/83d34yy\nPSLSNlH3QBrc/VBgEDDKzIqjbI+ItE2mTCy1zszKgbFAZfxrU6ZMabo/evTojJ0fQySbzZo1i1mz\nZrX5fVFOrr0nUOfua82sOzAduM3dX4xbRztRRSKQ6E7UKHsgA4CHzCyHYFPq8fjwEJHMp5npRGQH\nWXEYV0SymwJEREJTgIhIaAoQEQlNASIioSlARCQ0BYiIhKYAEZHQFCAiEpoCRERCU4CISGgKEBEJ\nTQEiIqEpQEQkNAWIiISmABGR0BQgIhKaAkREQlOAiEhoUU8sVWhm5WZWGZsf97Io2yMibRP13Lh7\nA3u7+7tm1hN4GzjD3atir2tQZZEIZMWgyu7+ubu/G7u/HqgC9omyTSKSuIzZB2JmQ4CRwNxoWyIi\nicqIqS1jmy9PApfHeiJNNLWlSPpl3dSWTQ0w6wY8D7zk7r/c7jXtAxGJQKL7QKLeiWrAQ8Bqd7+y\nhdcVICIRyJYAOQZ4BVgANDZkkrv/Nfa6AkQkAlkRIK1RgIhEIysO44pIdlOAiEhoChARCU0BIiKh\nKUBEJDQFiIiEpgARkdAUICISmgJEREJTgIhIaAoQEQlNASIioSlARCQ0BYiIhKYAEZHQFCAiEpoC\nRERCU4CISGgKEBEJLeq5caeZ2Qozez/KdohIOFH3QB4AxkbcBhEJKeq5cf8OrImyDSISXkZMbSnZ\nae3atVRWVlJZWcnSpUupqalpWrZs2UJDQwPujrvTq1cvCgsLd1j69etHML+YZKOMDxDNjRu9+vp6\n5s+fz4IFC6ioqGgKjeXLlydddl5eHvvuuy9HHXUUJ554IqWlpQwcODAFrZa2yOa5cYcAz7n78BZe\n08RSEamtrWXWrFk89dRTPPPMM6xYsWKHdbp3705RURHFxcXst99+9O7dm4KCAgoKCsjLy8PMmnoX\na9asYenSpTssa9eu3aHcgw8+mNLSUkpLSxk9ejR9+vRJ+88r28qamekUIJlj8+bNzJgxg6eeeopn\nn32WNWuad08NHTqUr33taxQXF1NSUkJxcTFDhgwhJycnqTrXr1/PRx99xKxZs5g5cyazZ89m/fr1\nTa936dKFU045hSuvvJITTzxRmzvtJCsCxMweA44H+gLVwA3u/kDc6wqQdrBy5Upuv/127rvvPmpq\napqeLyoqYvz48YwbN44RI0a0y4e3traWefPmMXPmTMrKynjjjTeora0FoLi4mMsvv5xzzz2X7t27\np70tnVlWBEhrFCDptWrVKu644w7uueceNmzYAMDIkSMZP34848eP5+CDD464hUEbf/vb33LPPffw\n2WefAdC3b18uvvhiLrnkEvbZZ5+IW9gxJRogTXvJM3EJmieptnr1ap88ebL37NnTAQf8tNNO83nz\n5kXdtJ3asmWLP/LII/7Vr361qc25ubk+depU37x5c9TN63Bin73WP6OJrBTVogBJrbq6Or/tttu8\noKCg6UM4duxYf+ONN6JuWsIaGhr81Vdf9XHjxjX9DMOGDfPy8vKom9ahKEBkG5988okfffTRTR+6\nk046yV9//fWom5WU8vJyHzZsWNPPdNVVV6k3kiKJBoj2gXQCjz/+OBdeeCE1NTUMGDCAadOmMXZs\nC1cQ1NbCqlVQXQ1r1waP45e6upYf19VBt26Qnw/du297W1AAvXo1Lz16QJfUnQC9ZcsWbrvtNm66\n6Sbq6+sZMWIEjz76KEVFRSmrozPSTlShrq6OSZMmcc8ddzAM+O5RR3HxGWfQY+PGICSqq2Hlyub7\na9rhqgKzIEj23hsGDtz5svfe0IZDxHPnzuU73/kOH3/8MbvvvjtlZWUcfvjhafxBOjYFSGe0bh1U\nVUFVFVvffZd3Hn2U/qtWMYQEL3rq0gX23BP694fdd4fc3KBn0bVrcNu4bP84JyfohWzaBJs3b3tb\nUxMsX34ZLLGjPQm1pTFk9t8fhg+HkpJgGTKkxV5MTU0N5557Ls8++yx9+vShrKyMww47LPHfnzRJ\nWYCY2Z3A7929MlWNS5QCZBc2bYK5c+GVV+C116CiAj79tMVVG3Jy6HLQQTBsGAwYAP36BSHRv/+2\n9/v0adO3fij19UHQffYZLF++7bJsWfP96uqdl9GjBxQXNwdKSUkQMHvtxdbaWs466yz+8pe/KESS\nkMoAuRD4PtANmAY85u7rUtHI1ihA4tTXw1tvwV//CmVlMG8ebN267Tr5+fjBB/PG2rW8sGQJn/bq\nxQ1/+hNDTjwx6Clkk61bg5BZtgw+/DAIyIoKeP/94PmW9O0LX/86dcceyzUvvMDds2eze58+zJw5\nk5EjR7Zv+7NcyjdhzOxggiCZCLwK3O/u5ck0MoE6O3eA1NXBc8/Bk0/C9OmwenXza2YwYgQcd1yw\njBwJgwdz3Q03cMstt7Dbbrsxa9YsjjjiiOjany6rV0NlZXOgNIbLdtfV1HTrxszaWubuthuX/PnP\nFJ56akp34HZkKQ0QM8sBvgmcDwwC/gwcA2x097OTbOuu6u2cAfLZZ/C738H//m/QnW80dCiceiqc\ncgoce2ywyRHn3nvv5dJLLyUnJ4fnnnuOU089tZ0bHiF3+Oc/YfZsmDULysuDx/Gr9O2LHX88lJbC\nmWcGm3PSopSdiQrcBfwD+C1w5HavfZDIseKwC53pPJCGBvfycvdvf9u9a9fgFB1wP+gg99tvd1+0\nKFhnJ8rKytzMHPBp06a1X7sz2Sef+Lpf/tIfy831fzX+PhsXM/fjj3e/9173FSuibmnGIVUnkhH0\nOnrs5LXdE6kk7NJpAuSll9yLipr/uXNy3MeNcy8r22VoNKqrq/OSkhIH/LrrrmuHBmeX+++/3wE/\nsm9fX//LX7qffrp7bm7z77tLF/fTTnN/4gl3nYjm7qkNkJdbeG5mIoUnu3T4AFm92v2885r/kQcM\ncL/xRvdly9pUzLRp0xzwwYMH+6ZNm9LT1ixWX1/vxxxzjAN+0UUXBU+uXev+hz+4/9u/bdvj69vX\n/bLL3JcsibbREUs6QIDuBJfZLwD2iFuGAIsSKTzZpUMHyDPPuO+1V/AnyM93//nP3bdubXMxGzZs\n8H322ccB/+Mf/5iGhnYMlZWV3q1bNwf8zTff3PbF6mr3u+5yHz68OUi6dXO/9FL3Tz+NpsERS0WA\nXAEsBrbEbhuXBcB/JlJ4skuHDZBf/ar5H/XYY90/+CB0UTfffLMDfthhh3l9fX0KGLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x71f6828>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"from IPython.html.widgets import interact, interactive, fixed\n",
|
||||
"import IPython.html.widgets as widgets\n",
|
||||
"import numpy as np\n",
|
||||
"import numpy.linalg as linalg\n",
|
||||
"import math\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from matplotlib.patches import Ellipse\n",
|
||||
"\n",
|
||||
"def plot_covariance_ellipse(x, P, edgecolor='k'):\n",
|
||||
" U,s,v = linalg.svd(P)\n",
|
||||
" angle = math.atan2(U[1,0],U[0,0])\n",
|
||||
" width = math.sqrt(s[0]) * 2\n",
|
||||
" height = math.sqrt(s[1]) * 2\n",
|
||||
"\n",
|
||||
" ax = plt.gca()\n",
|
||||
" e = Ellipse(xy=(0, 0), width=width, height=height, angle=angle,\n",
|
||||
" edgecolor=edgecolor, facecolor='none',\n",
|
||||
" lw=2, ls='solid')\n",
|
||||
" ax.add_patch(e)\n",
|
||||
" ax.set_aspect('equal')\n",
|
||||
" \n",
|
||||
" \n",
|
||||
"def plot_FPFT(F00, F01, F10, F11, covar):\n",
|
||||
" \n",
|
||||
" dt = 1.\n",
|
||||
" x = np.array((0, 0.))\n",
|
||||
" P = np.array(((1, covar), (covar, 2)))\n",
|
||||
" F = np.array(((F00, F01), (F10, F11)))\n",
|
||||
"\n",
|
||||
" plot_covariance_ellipse(x, P)\n",
|
||||
" plot_covariance_ellipse(x, np.dot(F, P).dot(F.T), edgecolor='r')\n",
|
||||
" #plt.axis('equal')\n",
|
||||
" plt.xlim(-4, 4)\n",
|
||||
" plt.ylim(-4, 4)\n",
|
||||
" plt.title(str(F))\n",
|
||||
" plt.xlabel('position')\n",
|
||||
" plt.ylabel('velocity')\n",
|
||||
" \n",
|
||||
"interact(plot_FPFT, \n",
|
||||
" F00=widgets.IntSlider(value=1, min=0, max=2.), \n",
|
||||
" F01=widgets.FloatSlider(value=1, min=0., max=2., description='F01(dt)'),\n",
|
||||
" F10=widgets.FloatSlider(value=0, min=0., max=2.),\n",
|
||||
" F11=widgets.FloatSlider(value=1, min=0., max=2.),\n",
|
||||
" covar=widgets.FloatSlider(value=0, min=0, max=1.));"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Covariance Ellipse\n",
|
||||
"\n",
|
||||
"See the effect of varying the variances and covariance of a covariance matrix of the form\n",
|
||||
"\n",
|
||||
"$$\\begin{bmatrix}\\texttt{var}_x & \\texttt{cov}_xy \\\\ \\texttt{cov}_xy & \\texttt{var}_y\\end{bmatrix}$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7427588>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"from IPython.html.widgets import interact, interactive, fixed\n",
|
||||
"from IPython.html.widgets import FloatSlider\n",
|
||||
"from math import cos, sin, pi, atan2, sqrt\n",
|
||||
"import numpy.linalg as linalg\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from matplotlib.patches import Ellipse\n",
|
||||
"\n",
|
||||
"def plot_covariance_ellipse(P):\n",
|
||||
" U,s,v = linalg.svd(P)\n",
|
||||
" angle = atan2(U[1,0],U[0,0])\n",
|
||||
" width = sqrt(s[0]) * 2\n",
|
||||
" height = sqrt(s[1]) * 2\n",
|
||||
"\n",
|
||||
" ax = plt.gca()\n",
|
||||
" e = Ellipse(xy=(0, 0), width=width, height=height, angle=angle,\n",
|
||||
" edgecolor='k', facecolor='none',\n",
|
||||
" lw=2, ls='solid')\n",
|
||||
" ax.add_patch(e)\n",
|
||||
" h, w = height/4, width/4\n",
|
||||
" plt.plot([0, h*cos(angle+pi/2)], [0, h*sin(angle+pi/2)])\n",
|
||||
" plt.plot([0, w*cos(angle)], [0, w*sin(angle)])\n",
|
||||
"\n",
|
||||
"def plot_covariance(var_x, var_y, cov_xy):\n",
|
||||
" P = [[var_x, cov_xy], [cov_xy, var_y]]\n",
|
||||
" plot_covariance_ellipse(P)\n",
|
||||
" plt.xlim(-6, 6)\n",
|
||||
" plt.gca().set_aspect('equal')\n",
|
||||
" plt.ylim(-6, 6)\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
"interact (plot_covariance, \n",
|
||||
" var_x=FloatSlider(value=5., min=0, max=20.), \n",
|
||||
" var_y=FloatSlider(value=5., min=0., max=20.), \n",
|
||||
" cov_xy=FloatSlider(value=1.5, min=0.0, max=50, step=.2));\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# g-h Filter\n",
|
||||
"\n",
|
||||
"Experiment with various values for g-h filter parameters."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7e26358>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"from IPython.html.widgets import interact, interactive, fixed\n",
|
||||
"import IPython.html.widgets as widgets\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"import numpy.random as random\n",
|
||||
"\n",
|
||||
"def gen_data(x0, dx, count, noise_factor):\n",
|
||||
" return [x0 + dx*i + random.randn()*noise_factor for i in range (count)]\n",
|
||||
"\n",
|
||||
"def g_h_filter(data, x0, dx, g, h, dt=1., pred=None): \n",
|
||||
" x = x0\n",
|
||||
" results = []\n",
|
||||
" for z in data:\n",
|
||||
" #prediction step\n",
|
||||
" x_est = x + (dx*dt)\n",
|
||||
" dx = dx \n",
|
||||
" if pred is not None:\n",
|
||||
" pred.append(x_est)\n",
|
||||
" \n",
|
||||
" # update step\n",
|
||||
" residual = z - x_est\n",
|
||||
" dx = dx + h * (residual) / dt\n",
|
||||
" x = x_est + g * residual \n",
|
||||
" results.append(x) \n",
|
||||
" return np.array(results)\n",
|
||||
"\n",
|
||||
"zs = gen_data(x0=5, dx=5, count=100, noise_factor=50)\n",
|
||||
"\n",
|
||||
"def interactive_gh(x, dx, g, h):\n",
|
||||
" data = g_h_filter(data=zs, x0=x, dx=dx, dt=1.,g=g, h=h)\n",
|
||||
" plt.plot(zs, color='r')\n",
|
||||
" plt.plot(data, color='k')\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
"interact (interactive_gh, \n",
|
||||
" x=widgets.FloatSlider(value=0., min=-50, max=50.), \n",
|
||||
" dx=widgets.FloatSlider(value=5., min=-50., max=50.), \n",
|
||||
" g=widgets.FloatSlider(value=0.1, min=0.01, max=2, step=.02), \n",
|
||||
" h=widgets.FloatSlider(value=0.02, min=0.0, max=0.5, step=0.01));"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.5.1"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
Reference in new issue
Block a user