Spell check

This commit is contained in:
Roger Labbe committed 2015-02-16 09:53:22 -08:00
1 parent 1528dc8473
commit 909f4a7989
5 files changed
+275 -277

No files matched your search

+28 -28
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:ed27079cf7cc6b818d3cd0af27d1a7dafbe17aa5469f61f0a49355a3d1a14ae1"
"signature": "sha256:953a8361ab344a30a15bfc69cb8a100efcbe9fbcc4b8d88a8d2af337aa5651c5"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -259,7 +259,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7f3e37ae46a0>"
"<IPython.core.display.HTML at 0x7f526ce35240>"
]
}
],
@@ -269,7 +269,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"The Kalman filter belongs to a family of filters called *bayesian filters*. Most textbook treatments of the Kalman filter present the Bayesian formula, perhaps shows how it factors into the Kalman filter equations, but mostly keeps the discussion at a very abstract level. \n",
"The Kalman filter belongs to a family of filters called *Bayesian filters*. Most textbook treatments of the Kalman filter present the Bayesian formula, perhaps shows how it factors into the Kalman filter equations, but mostly keeps the discussion at a very abstract level. \n",
"\n",
"That approach requires a fairly sophisticated understanding of several fields of mathematics, and it still leaves much of the work of understanding and forming an intuitive grasp of the situation in the hands of the reader.\n",
"\n",
@@ -359,7 +359,7 @@
"output_type": "display_data",
"png": "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\nqqqqoqqqqtNja9euPW3t1ltvjVtvvTVtMgAAoNfo8XeFAgAAzj7CAgAASCYsAACAZMICAABIJiwA\nAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACA\nZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTC\nAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIA\nAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABI\nJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYs\nAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGRZhUVtbW2MGjUqiouLo7y8POrr67u95m//9m9j7Nix\n0b9//xg2bFjU1NQkDwsAAOSnPt2dsHHjxliwYEGsWbMmpkyZEqtXr45p06bFT3/60xgxYkSn11RX\nV8dzzz0Xf/3Xfx3jx4+PY8eOxZEjR3p8eAAAID90GxbLly+POXPmxNy5cyMiYuXKlfH888/HmjVr\n4pFHHjnt/Ndeey2+/e1vx549e2LMmDHt6xMmTOjBsQEAgHzS5VOhTp06Fbt27YrKysoO65WVlbF9\n+/ZOr/mnf/qnKCsri02bNkVZWVmMGjUqZs+eHf/1X//Vc1MDAAB5pSCTyWTOdPDw4cMxfPjw2LZt\nW0yZMqV9/aGHHooNGzbE/v37T7tm3rx5sX79+vjsZz8by5Yti4iI+++/PyIiduzYEQUFBe3nHjt2\nrP3rAwcOpN8bAADgIzF69Oj2rwcOHHja8W6fCvVBtbW1xcmTJ+Opp56KT3/60xER8dRTT8WYMWOi\noaEhrr766p6+SQAAIMe6DIvBgwdHUVFRtLS0dFhvaWmJ0tLSTq8pLS2NPn36tEdFRMSnP/3pKCoq\nijfeeOOMYVFeXv5BZ//QGhoaPvbb7K3sVfbsVfbsVfbs1Qdjv7Jnr7Jnr7Jnr7LXG/fq/z/bqDNd\nvsaib9++MXHixNi8eXOH9bq6uqioqOj0milTpsS7774bTU1N7WtNTU3R2toal1xySbZzAwAAvUi3\nn2NRXV0d69atiyeffDL27dsX8+fPj+bm5pg3b15ERNTU1MTUqVPbz586dWpcddVVcdddd0VjY2Ps\n3r077rrrrrjmmmt6VZEBAADZ6/Y1FjNnzoyjR4/GkiVL4siRIzF+/PjYtGlT+2dYNDc3d3h0oqCg\nIJ599tn42te+Ftddd10UFxdHZWVlLF++/KO7FwAAQE5l9eLtqqqqqKqq6vTY2rVrT1u78MIL4+mn\nn06bDAAA6DW6fSoUAABAd4QFAACQTFgAAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQTFgA\nAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQTFgAAADJhAUAAJBMWAAAAMmEBQAAkExYAAAA\nyYQFAACQTFgAAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQTFgAAADJhAUAAJBMWAAAAMmE\nBQAAkExYAAAAyYQFAACQTFgAAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQTFgAAADJhAUA\nAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQTFgAAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQ\nTFgAAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyYQFAACQTFgAAADJhAUAAJBMWAAAAMmEBQAAkCyr\nsKitrY1Ro0ZFcXFxlJeXR319fVbf/MCBAzFgwIAYMGBA0pAAAEB+6zYsNm7cGAsWLIhFixZFY2Nj\nVFRUxLRp0+LQoUNdXnfq1Km444474vrrr4+CgoIeGxgAAMg/3YbF8uXLY86cOTF37twYM2ZMrFy5\nMkpLS2PNmjVdXrdw4cL47Gc/G7fddltkMpkeGxgAAMg/XYbFqVOnYteuXVFZWdlhvbKyMrZv337G\n65577rl47rnnYtWqVaICAADOAn26Ovjmm29Ga2trDB06tMP6kCFDorm5udNrDh8+HHfffXc888wz\nUVJSkvUgDQ0NWZ/bU3Jxm72Vvcqevcqevcqevfpg7Ff27FX27FX27FX2etNejR49usvjPf6uUHfe\neWdUVVXF1Vdf3dPfGgAAyFNdPmIxePDgKCoqipaWlg7rLS0tUVpa2uk1W7dujW3btsWDDz4YERGZ\nTCba2trinHPOiTVr1sRXvvKVTq8rLy//MPN/KO+X4cd5m72Vvcqevcqevcqevfpg7Ff27FLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b60d908>"
"<matplotlib.figure.Figure at 0x7f524ff92f28>"
]
}
],
@@ -502,7 +502,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGNCAYAAACMgOcOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XFw1/V9+PFXEgQTi5wMwSAoxDKoiFSJTCJVb4e5YR1l\nU1G62YJ0jsxaMHPH0rJzCkotOzagBJ31gNnR4q4911PmEU+UMuiNCHFIweGyIb2QdDILlhU4ku/v\nj17za0pIvvqOfL+Rx+OOu/D+fj75vr7vC3d58v1+P9+CTCaTCQAAgASFuR4AAADo/YQFAACQTFgA\nAADJhAUAAJBMWAAAAMmEBQAAkExYAAAAyboNiy1btsS0adNi2LBhUVhYGOvWrev2m+7evTtuuumm\nKCkpiWHDhsWiRYt6ZFgAACA/dRsWx44di6uvvjqWL18excXFUVBQ0OXxR48ejVtuuSVKS0ujvr4+\nli9fHkuXLo1ly5b12NAAAEB+Kfggn7zdv3//WLVqVXzhC1844zGrV6+OmpqaaGlpiX79+kVExGOP\nPRarV6+On/zkJ+kTAwAAeafH32Oxffv2+MxnPtMeFRERlZWV0dTUFAcOHOjpuwMAAPJAn57+hs3N\nzXHZZZd1WBsyZEj7bZdffnn7+pEjR3r67gEAgI/YgAEDTlvr8WcsunsPBgAA8PHT42FxySWXRHNz\nc4e1lpaW9tsAAICPnx5/KdSkSZNiwYIFceLEifb3WdTV1cWll17a4WVQv6mzp1M+KvX19RERUV5e\nftbus7eyV9mzV9mzV9mzVx+M/cqevcqevcqevcpeb9yr7t7GkNXlZhsaGqKhoSHa2triwIED0dDQ\nEAcPHoyIiJqampgyZUr78Z///OejpKQkZs2aFXv27Invf//78cQTT0R1dXXiQwEAAPJVt2GxY8eO\nuPbaa+Paa6+N48ePx8MPPxzXXnttPPzwwxHxyzdkNzY2th9/4YUXRl1dXTQ1NUV5eXk88MAD8dBD\nD8WDDz740T0KAAAgp7p9KdTNN98cbW1tZ7x9zZo1p61dddVV8dprr6VNBgAA9Bo9/uZtAADg3CMs\nAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAA\ngGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBk\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b369a58>"
"<matplotlib.figure.Figure at 0x7f524ff1cc18>"
]
}
],
@@ -554,7 +554,7 @@
"output_type": "display_data",
"png": "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\nAOhBuvwci5qamli1alU899xzsXv37pg9e3Y0NzfHrFmzIiKitrY2Jk6c2Hb8xIkT4/rrr4/7778/\nGhoaYseOHXH//ffHjTfe2KOKDAAAyF6X77GYOnVqHDx4MBYsWBAHDhyI0aNHx7p169o+w6K5ubnd\nsxMFBQXx0ksvxVe+8pW4+eabo7i4OKqqqmLx4sVn71EAAAA5ldWbt6urq6O6urrD21auXHnK2mWX\nXRYvvPBC2mQAAECP0eVLoQAAALoiLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAA\ngGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBk\nwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMIC\nAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAA\nSCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgm\nLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwA\nAIBkWYVFXV1dDBs2LIqLi6OioiI2bdqU1Tffu3dv9O3bN/r27Zs0JAAAkN+6DIu1a9fGnDlzYt68\nedHQ0BCVlZUxadKk2L9/f6fnHT9+PO6999645ZZboqCgoNsGBgAA8k+XYbF48eKYMWNGzJw5M0aM\nGBFLly6N0tLSWLFiRafnzZ07Nz796U/H3XffHZlMptsGBgAA8k+nYXH8+PHYvn17VFVVtVuvqqqK\nzZs3n/a8l19+OV5++eVYtmyZqAAAgPNAr85ufP/996O1tTUGDRrUbn3gwIHR3Nzc4TlNTU3xwAMP\nxIsvvhglJSVZD7Jt27asj+0uubjPnspeZc9eZc9eZc9enRn7lT17lT17lT17lb2etFfDhw/v9PZu\nvyrUfffdF9XV1XHDDTd097cGAADyVKfPWAwYMCCKioqipaWl3XpLS0uUlpZ2eM6GDRti48aN8dhj\nj0VERCaTiZMnT8YFF1wQK1asiC996UsdnldRUfFR5v9IflWG5/I+eyp7lT17lT17lT17dWLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b25ab00>"
"<matplotlib.figure.Figure at 0x7f524ff09f98>"
]
}
],
@@ -564,7 +564,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Normalization is done by dividing each element by the sum of all elements in the list. If this is not clear you should spend a few minutes proving it to yourself algebraically. We can see from the output that the sum is now 1.0, and that the probability of a door vs wall is still three times larger. The result also fits our intuitiion that the probability of a door must be less than 0.333, and that the probability of a wall must be greater than 0.0. Finally, it should fit our intuition that we have not yet been given any information that would allow us to distinguish between any given door or wall position, so all door positions should have the same value, and the same should be true for wall positions. "
"Normalization is done by dividing each element by the sum of all elements in the list. If this is not clear you should spend a few minutes proving it to yourself algebraically. We can see from the output that the sum is now 1.0, and that the probability of a door vs wall is still three times larger. The result also fits our intuition that the probability of a door must be less than 0.333, and that the probability of a wall must be greater than 0.0. Finally, it should fit our intuition that we have not yet been given any information that would allow us to distinguish between any given door or wall position, so all door positions should have the same value, and the same should be true for wall positions. "
]
},
{
@@ -579,9 +579,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Recall how quickly we were able to find an exact solution to our dog's position when we incorporated a series of measurements and movement updates. However, that occured in a fictional world of perfect sensors. Might we be able to find an exact solution even in the presence of noisy sensors?\n",
"Recall how quickly we were able to find an exact solution to our dog's position when we incorporated a series of measurements and movement updates. However, that occurred in a fictional world of perfect sensors. Might we be able to find an exact solution even in the presence of noisy sensors?\n",
"\n",
"Unfortunately, the answer is no. Even if the sensor readings perfectly match an extremely complicated hallway map we could not say that we are 100% sure that the dog is in a specific position - there is, after all, the possibility that every sensor reading was wrong! Naturally, in a more typical situation most sensor readings will be correct, and we might be close to 100% sure of our answer, but never 100% sure. This may seem head-spinningly complicated, but lets just go ahead and program the math, which as we have seen is quite simple.\n",
"Unfortunately, the answer is no. Even if the sensor readings perfectly match an extremely complicated hallway map we could not say that we are 100% sure that the dog is in a specific position - there is, after all, the possibility that every sensor reading was wrong! Naturally, in a more typical situation most sensor readings will be correct, and we might be close to 100% sure of our answer, but never 100% sure. This may seem complicated, but lets just go ahead and program the math, which as we have seen is quite simple.\n",
"\n",
"First let's deal with the simple case - assume the movement sensor is perfect, and it reports that the dog has moved one space to the right. How would we alter our `pos_belief` array?\n",
"\n",
@@ -634,7 +634,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGaCAYAAACSU9UtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0lPWd+PHPhIsE5aIiFxW5rIq6DQhEK1ERWJpdypZ6\nvHCsrhTEdWG9gKirdF3FSr128baC1wJVq7DV6jmKLKiARVChmOoq1gsu0oVkC2pALBfJ/P7wkF/T\nhCT4DR0ir9c5nlO+8zwzn5k8h+bNPM9MJpvNZgMAACBBXq4HAAAAGj9hAQAAJBMWAABAMmEBAAAk\nExYAAEAyYQEAACQTFgB72D333BN//dd/HS1btoy8vLy44YYbcj1SozNgwIDIy6v6f1kLFy7c469n\n165do1u3bnvs/gG+SYQFwNdw1113RV5eXuTl5cXrr7++y+2eeOKJGDduXOzYsSPGjRsXkyZNigED\nBsSkSZMiLy8vZs6c+RecunHLZDK7tV4fXbt2rRYsf37fKfcPsC9pmusBABqjBx54oMr/PvHEE2vc\n7tlnn42IiJ///OdVtlmwYEFEpP1SvK/79re/He+++260a9cu6X5q+xm89NJLSfcNsC/xjgXAbvr1\nr38dK1eujHPOOScOP/zwmDVrVmzatKnGbdeuXRsRER06dKjx9mw2u8fm/KbLz8+Po48+Og466KA9\n9hjdunVzKhRAPQkLgN20892KCy+8MEaMGBGbN2+Oxx57rMo2O091WrhwYUR89QvqzlOnBg4cGD/+\n8Y8jImLUqFGV63l5efHxxx9X3kdFRUU89NBDcfLJJ0ebNm0iPz8/CgoK4pZbbont27dXmysvLy+6\ndesWGzdujPHjx0eXLl2iWbNmcdddd9X6fHZeqzBq1Kh45513YtiwYXHQQQfFAQccEP37948XX3yx\n2j4zZsyovL7h1VdfjSFDhsSBBx4YeXl5sXHjxq81f8RXp4717ds3WrZsGR06dIgRI0ZUxtmu5q7p\nGotPP/00/u3f/i0KCgrigAMOiDZt2kRBQUFcddVV8dlnn8X//M//VL7e2Wy2ys9g4MCBlfezq2ss\ntm3bFrfffnscf/zxsf/++0fr1q2jX79+MX369Bpn3fmz+eKLL+Kqq66KI444Ilq0aBFHHXVU3Hbb\nbTXuA9DYOBUKYDd88skn8ctf/jK6dOkSgwYNii5dusRNN90UDz74YIwZM6Zyu4EDB0Ymk4kZM2bE\n6tWrY/z48dG2bduIiOjSpUtERCxatChOP/30OP744yv3a9OmTUREfPnll3HGGWfEs88+Gz169Ijz\nzjsvWrRoEQsXLowf/ehH8eKLL8bcuXOjSZMmVebbunVrDBw4MDZu3BhDhw6Nli1bRufOnev13D76\n6KM4+eST4/jjj4+xY8fG73//+5g9e3b87d/+bcyePTvOOOOMavssWbIkbrrpphgwYEBcdNFFsW7d\numjSpMnXmv+OO+6IK664Itq2bRsjRoyIAw88MP7rv/6rMkx25c9PZfroo49i4MCB8fHHH0efPn0q\nfy7vvfdeTJ06Nc4///zo0qVLXH/99XHnnXdGeXl5TJo0qXL/rl271nr/27dvjyFDhsSCBQuiR48e\n8c///M+xdevWeOqpp2L06NGxePHiePjhh6vNuX379iguLo5169bF0KFDo2nTpvGrX/0qrrnmmtiy\nZUtcd911u3yOAI1CFoB6u+OOO7KZTCZ7/fXXV671798/m8lkssuWLau2/WmnnZbNZDLZ1atXV1m/\n/vrrs5lMJjtz5swaH+fGG2/MZjKZ7KWXXpqtqKioXK+oqMhedNFF2Uwmk73nnnuq7JPJZLKZTCZb\nXFyc/eMf/1jv57RgwYLKff/lX/6lym2vvfZatmnTptmDDz44+/nnn1euT58+vXKfBx98MHn+jz76\nKNusWbPsgQcemP3oo4+qbD98+PBsJpPJ5uXl1Tj3DTfcUGW9X79+2Uwmk508eXK1ucrLy6s8jy5d\nulS73z/VpUuXbLdu3aqs3XLLLdlMJpP9u7/7u+z27dur3Pe3vvWtbCaTyf7yl7+sss/O12ro0KHZ\nLVu2VK7/3//9X7Zt27bZtm3bVrkvgMbIqVAAu+GBBx6IvLy8GDlyZOXaBRdcUHlbQ6ioqIi77ror\nOnToEHfeeWeVfzHPZDJx6623RiaTiUcffbTavplMJn76059GixYtdvtx27ZtW+1fzU888cQYPnx4\nfPLJJ/HMM89U26d3795x4YUXfq35H3nkkcr1xx57LL788su4+OKLq7xjsHP72j656U/95je/iVdf\nfTV69uwZ//qv/1rt9tatW8f+++9fr/valYceeigymUxMmTIlmjb9/2/8t27dOm6++eaIiHjwwQer\n7ZfJZOLuu++O/fbbr3LtkEMOiWHDhkV5eXm89957SXMB5JpToQDq6de//nW8++67MWDAgCq//J59\n9tlx6aWXxhNPPBFTpkyJAw44IOlx3nvvvdiwYUP81V/9VeW1GH+uRYsW8c4779S4XlBQ8LUet0+f\nPjX+0t2/f/94/PHHo6SkJM4999wqt9X0aVj1nX/lypWVf16xYkVERJx22mnVtu3atWt07ty5yvUn\nu/Lqq69GRERxcXGd234dmzZtig8//DA6duwYxx57bLXbBw0aFBERb7zxRrXb2rRpE927d6+2vvNU\ntU8//bSBpwX4yxIWAPV0//33R0TED3/4wyrrLVu2jLPPPjumT58ev/jFL+Kiiy5KepwNGzZERMSH\nH364y1/MI2r+mNT27dt/7cfd1SdX7VwvLy+vdlvHjh2rrX2d+Xfed20z1CcsPvvss4iIOOyww+rc\n9uvYOWdNzzviq2OhdevWlXP8qZ3X2Py5ne967Nixo4GmBMgNp0IB1MPOi7Yjqn+SU15eXuWnATXE\n6VA7L1QeNmxYVFRU7PK/mn4RTflejLKyslrXa7qAuqbH+zrz79ynrhnqsvOX99///vf12n537Zyz\ntLS0xtu/+OKL2LhxY60XmwN8U3nHAqAeZs6cGdu2bYvevXtH3759a9zm+eefjxUrVsSKFSuiT58+\ntd7fzk9DqikOjj322Gjbtm289tprsX379mjWrFn6E6iHFStWxOeff17tVK5FixZFxFfXU9TH15m/\nb9++8atf/SoWLlwYgwcPrnLbRx99FGvWrKnXY/fr1y8iIubNmxe33XZbnaG18+eQzWbrFWWtWrWK\nI488Mj744INYuXJltdOhdn6h3q6OEYBvMu9YANTDAw88UHnx7QMPPFDjf5dffnnltn+qpl9YDz74\n4IiIWL16dbXbmjRpEuPGjYuysrK4+OKL449//GO1bdavXx+//e1vG+KpVfrss8+qnbr02muvxezZ\ns+Oggw6K73//+/W6n68z/3nnnRfNmjWLe++9Nz766KPK9YqKirjmmmuioqKiXo/dp0+fKCoqirfe\neit+8pOfVLu9vLw8Nm/eXPnngw8+OLLZbI0/h10ZPXp0RERcccUV8eWXX1aub9y4MX70ox9FRFS7\noB1gX+AdC4A6vPzyy/G73/0ujj322Dj55JN3ud2IESNi4sSJ8fjjj8e///u/V14Ina3h27X/5m/+\nJvLy8uLOO++MDRs2VF5bcNlll0Xr1q3j2muvjbfeeiseeuiheO6552LQoEFx+OGHxx/+8If48MMP\n45VXXolLLrkkpkyZ0mDP89RTT40HH3wwXn/99SgqKor//d//jVmzZkUmk4kHHnggWrZsWe/72t35\nu3TpErfccktcccUV0adPnxg+fHjl91iUl5dHz549480336zXYz/66KMxYMCAuO666+Lpp5+OAQMG\nRMRX13zMmzcvli5dGj179oyIry7yXr58eZxxxhkxZMiQyM/Pj65du8Y//MM/7PL+J0yYEHPnzo25\nc+dGQUFBDB06NLZv3x5PPvlkrF27Nn74wx/GmWeeWe/XCuAbo67Po120aFH2e9/7Xvawww7LZjKZ\n7IwZM+r8DNs333wz279//2x+fn72sMMOy/74xz9O/2BcgBw599xzs3l5edk77rijzm2HDx+ezcvL\nyz700EPZbDabHTBgQDYvL6/a91hks9ns448/nu3bt2+2ZcuWld/T8OfbPf7449ni4uLswQcfnG3e\nvHn20EMPzfbr1y87adKk7AcffFBl20wmU+07F+pj5/dBjBo1Krty5crssGHDsgceeGB2//33z/bv\n3z/74osvVttnxowZ2by8vGrfIVHTc6zv/Du379OnT7ZFixbZ9u3bZ88///zsunXrKl/HmuauaYYN\nGzZkJ06cmD3mmGOyLVq0yLZt2zbbs2fP7NVXX5397LPPKrf74osvspdeemn2iCOOyDZr1iybyWSy\nAwcOrLy9a9euNb6mW7duzd56663Znj17ZvPz87MHHHBA9qSTTso+/PDDNb4Otf1sJk2alM3Ly8su\nWrSo5hcRoJHIZLM1/FPan3j++efjlVdeid69e8eIESNi2rRpMWLEiF1uv3Hjxjj66KMr/7Vo5cqV\nMWrUqJg0aVJMmDChwcMIgDQLFy6MQYMGxciRI+NnP/tZrscBoJGq81SoIUOGxJAhQyIiqnwh1K48\n9thjsWXLlpg5c2bst99+cdxxx8W7774bU6ZMERYAAPAN1eAXby9dujROPfXUKt8sWlxcHGvXrt2t\ni+MAAIDGo8Ev3i4tLY0jjjiiytrOixJLS0ujS5cules1fdkSAH9Zn3/+eUREbNu2zd/LANRLTd/X\n0+BhkfLlTAD85Z166qnx6aef5noMABq5Bj8VqmPHjtW+kXTnN6Z27NixoR8OAADYCzT4Oxb9+vWL\nq6++OrZu3Vp5ncX8+fPjsMMOq3Ia1J+r6e0U/r/ly5dHRERhYWGOJ4E9z/HOvsTxzr7E8dLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b26c828>"
"<matplotlib.figure.Figure at 0x7f524feb0780>"
]
}
],
@@ -700,7 +700,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b21e5c0>"
"<matplotlib.figure.Figure at 0x7f524fbf7b38>"
]
}
],
@@ -737,7 +737,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b216748>"
"<matplotlib.figure.Figure at 0x7f524fe7ee80>"
]
}
],
@@ -766,7 +766,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b5f8e10>"
"<matplotlib.figure.Figure at 0x7f524fe32eb8>"
]
}
],
@@ -804,7 +804,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b1a59e8>"
"<matplotlib.figure.Figure at 0x7f524feedc88>"
]
}
],
@@ -840,7 +840,7 @@
"source": [
"The problem of losing information during an update may make it seem as if our system would quickly devolve into no knowledge. However, recall that our process is not an endless series of updates, but of *measure->update->measure->update->measure->update...* The output of the measure step is fed into the update. The update step, with a degraded certainty, is then fed into the measure step. \n",
"\n",
"Let's think about this intuitively. After the first measure->update round we have degraded the knowledge we gained by the measurement by a small amount. But now we take another measurement. When we try to incorporate that new measurement into our belief, do we become more certain, less certain, or equally certain. Consider a simple case - you are sitting in your office. A co-worker asks another co-worker where you are, and they report \"in his office\". You keep sitting there while they ask and answer \"has he moved\"? \"No\" \"Where is he\" \"In his office\". Eventually you get up and move, and lets say the person didn't see you move. At that time the questions will go \"Has he moved\" \"no\" (but you have!) \"Where is he\" \"In the kitchen\". Wow! At that moment the statement that you haven't moved conflicts strongly with the next measurement that you are in the kitchen. If we were modelling these with probabilities the probability that you are in your office would lowever, and the probability that you are in the kitchen would go up a little bit. But now imagine the subsequent conversation: \"has he moved\" \"no\" \"where is he\" \"in the kitchen\". Pretty quickly the belief that you are in your office would fade away, and the belief that you are in the kitchen would increase to near certainty. The belief that you are in the office will never go to zero, nor will the belief that you are in the kitchen ever go to 1.0 because of the chances of error, but in practice your co-workers would be correct to be quite confident in their system.\n",
"Let's think about this intuitively. After the first measure->update round we have degraded the knowledge we gained by the measurement by a small amount. But now we take another measurement. When we try to incorporate that new measurement into our belief, do we become more certain, less certain, or equally certain. Consider a simple case - you are sitting in your office. A co-worker asks another co-worker where you are, and they report \"in his office\". You keep sitting there while they ask and answer \"has he moved\"? \"No\" \"Where is he\" \"In his office\". Eventually you get up and move, and lets say the person didn't see you move. At that time the questions will go \"Has he moved\" \"no\" (but you have!) \"Where is he\" \"In the kitchen\". Wow! At that moment the statement that you haven't moved conflicts strongly with the next measurement that you are in the kitchen. If we were modeling these with probabilities the probability that you are in your office would lower, and the probability that you are in the kitchen would go up a little bit. But now imagine the subsequent conversation: \"has he moved\" \"no\" \"where is he\" \"in the kitchen\". Pretty quickly the belief that you are in your office would fade away, and the belief that you are in the kitchen would increase to near certainty. The belief that you are in the office will never go to zero, nor will the belief that you are in the kitchen ever go to 1.0 because of the chances of error, but in practice your co-workers would be correct to be quite confident in their system.\n",
"\n",
"That is what intuition tells us. What does the math tell us?\n",
"\n",
@@ -891,7 +891,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e37ae75f8>"
"<matplotlib.figure.Figure at 0x7f524fe32470>"
]
}
],
@@ -927,7 +927,7 @@
"output_type": "display_data",
"png": "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\nFhERlZWVUVlZ2epjK1euPGPt/vvvj/vvvz9tMgAAoNPo8HeFAgAALj3CAgAASCYsAACAZMICAABI\nJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYs\nAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAA\ngGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBk\nwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMIC\nAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAA\nSCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGRZhUVVVVUMHjw4iouLo6ysLGpqato952//9m9j\n2LBh0b179+jfv3/MnTs3eVgAACA/dWnvgLVr18asWbNixYoVMXbs2Fi+fHmMHz8+fvzjH8fAgQNb\nPWf27Nnx+uuvx1//9V/HiBEj4vDhw3HgwIEOHx4AAMgP7YbF4sWLY+rUqTFt2rSIiFi6dGm88cYb\nsWLFinj22WfPOP7999+Pb37zm7Fjx44YOnRo8/rIkSM7cGwAACCftPlUqJMnT8a2bduioqKixXpF\nRUVs3ry51XP+6Z/+KUpLS2PdunVRWloagwcPjilTpsR//dd/ddzUAABAXinIZDKZsz24f//+GDBg\nQGzatCnGjh3bvP7000/HmjVrYvfu3WecM3369Fi9enV8+tOfjkWLFkVExBNPPBEREVu2bImCgoLm\nYw8fPtz89Z49e9J/GgAA4LwYMmRI89e9evU64/F2nwp1rk6fPh0nTpyIl19+OT75yU9GRMTLL78c\nQ4cOjdra2rj11ls7+pIAAECOtRkWffr0iaKiomhsbGyx3tjYGCUlJa2eU1JSEl26dGmOioiIT37y\nk1FUVBQffvjhWcOirKzsXGf/jdXW1l7wa3ZW9ip79ip79ip79urc2K/s2avs2avs2avsdca9+v/P\nNmpNm6+x6Nq1a4waNSrWr1/fYr26ujrKy8tbPWfs2LFx6tSpqK+vb16rr6+PpqamuO6667KdGwAA\n6ETa/RyL2bNnx6pVq+Kll16KXbt2xcyZM6OhoSGmT58eERFz586NcePGNR8/bty4uOWWW+KRRx6J\nurq62L59ezzyyCNx2223daoiAwAAstfuaywmTZoUhw4digULFsSBAwdixIgRsW7duubPsGhoaGhx\nd6KgoCBee+21+MpXvhJ33HFHFBcXR0VFRSxevPj8/RQAAEBOZfXi7crKyqisrGz1sZUrV56xdvXV\nV8crr7ySNhkAANBptPtUKAAAgPYICwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAA\nIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZ\nsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAA\nAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAA\nkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJ\nCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsA\nACBZVmFRVVUVgwcPjuLi4igrK4uampqsvvmePXuiZ8+e0bNnz6QhAQCA/NZuWKxduzZmzZoV8+bN\ni7q6uigvL4/x48fHvn372jzv5MmT8dBDD8Wdd94ZBQUFHTYwAACQf9oNi8WLF8fUqVNj2rRpMXTo\n0Fi6dGmUlJTEihUr2jxvzpw58elPfzoeeOCByGQyHTYwAACQf9oMi5MnT8a2bduioqKixXpFRUVs\n3rz5rOe9/vrr8frrr8eyZctEBQAAXAK6tPXgwYMHo6mpKfr169divW/fvtHQ0NDqOfv3749HH300\nXn311ejRo0fWg9TW1mZ9bEfJxTU7K3uVPXuVPXuVPXt1buxX9uxV9uxV9uxV9jrTXg0ZMqTNxzv8\nXaEefvjhqKysjFtvvbWjvzUAAJCn2rxj0adPnygqKorGxsYW642NjVFSUtLqORs3boxNmzbFU089\nFRERmUwmTp8+HZdddlmsWLEivvSlL7V6XllZ2W8y/2/k4zK8kNfsrOxV9uxV9uxV9uzVubLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b27d940>"
"<matplotlib.figure.Figure at 0x7f524fdd16d8>"
]
}
],
@@ -956,7 +956,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b313908>"
"<matplotlib.figure.Figure at 0x7f5250dbb128>"
]
}
],
@@ -985,7 +985,7 @@
"output_type": "display_data",
"png": "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\nRETMmjUrZs2a1eZtq1evPmPt3nvvjXvvvTdtMgAAoMvo9HeFAgAALj7CAgAASCYsAACAZMICAABI\nJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYs\nAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAA\ngGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBk\nwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMIC\nAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAA\nSCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGRZhcXKlStj6NChUVxcHGVlZVFdXd3hOX/7t38b\nI0aMiJ49e8bAgQNj/vz5ycMCAAD5qVtHB6xfvz7mzp0bq1ativHjx8eKFSti4sSJ8dOf/jQGDx7c\n5jmVlZXx2muvxV//9V/HqFGj4siRI3Hw4MFOHx4AAMgPHYbFkiVLYvr06TFjxoyIiFi2bFm8/vrr\nsWrVqnjmmWfOOP69996Lb3/727Fr164YPnx4y/ro0aM7cWwAACCftPtUqFOnTsWOHTuioqKi1XpF\nRUVs3bq1zXP+6Z/+KUpLS2PDhg1RWloaQ4cOjWnTpsV//dd/dd7UAABAXinIZDKZs91YX18fgwYN\nii1btsT48eNb1p988slYt25d7N2794xzZs6cGWvXro3PfvazsXjx4oiIeOyxxyIiYtu2bVFQUNBy\n7JEjR1q+3rdvX/q9AQAAzolhw4a1fN2nT58zbu/wqVCfVHNzc5w8eTJeeuml+PSnPx0RES+99FIM\nHz48ampq4uabb+7sSwIAADnWblj069cvioqKorGxsdV6Y2NjlJSUtHlOSUlJdOvWrSUqIiI+/elP\nR1FRUXzwwQdnDYuysrJPOvv/WU1NzXm/Zldlr7Jnr7Jnr7Jnrz4Z+5U9e5U9e5U9e5W9rrhX//vZ\nRm1p9zUW3bt3jzFjxsTGjRtbrVdVVUV5eXmb54wfPz5Onz4ddXV1LWt1dXXR1NQU11xzTbZzAwAA\nXUiHn2NRWVkZa9asiRdffDH27NkTc+bMiYaGhpg5c2ZERMyfPz8mTJjQcvyECRPipptuioceeihq\na2tj586d8dBDD8Utt9zSpYoMAADIXoevsZgyZUocPnw4Fi5cGAcPHoxRo0bFhg0bWj7DoqGhodWj\nEwUFBfHqq6/G1772tbjtttuiuLg4KioqYsmSJefuXgAAADmV1Yu3Z82aFbNmzWrzttWrV5+xduWV\nV8bLL7+cNhkAANBldPhUKAAAgI4ICwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAA\nIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZ\nsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAA\nAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAA\nkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJ\nCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsAACCZsAAAAJIJCwAAIJmwAAAAkgkLAAAgmbAAAACSCQsA\nACBZVmGxcuXKGDp0aBQXF0dZWVlUV1dn9c337dsXvXv3jt69eycNCQAA5LcOw2L9+vUxd+7cWLBg\nQdTW1kZ5eXlMnDgxDhw40O55p06digceeCBuv/32KCgo6LSBAQCA/NNhWCxZsiSmT58eM2bMiOHD\nh8eyZcuipKQkVq1a1e558+bNi89+9rNx3333RSaT6bSBAQCA/NNuWJw6dSp27NgRFRUVrdYrKipi\n69atZz3vtddei9deey2WL18uKgAA4CLQrb0bDx06FE1NTTFgwIBW6/3794+GhoY2z6mvr4+HH344\nXnnllejVq1fWg9TU1GR9bGfJxTW7KnuVPXuVPXuVPXv1ydiv7Nmr7Nmr7Nmr7HWlvRo2bFi7t3f6\nu0I9+OCDMWvWrLj55ps7+1sDAAB5qt1HLPr16xdFRUXR2NjYar2xsTFKSkraPGfz5s2xZcuWeOKJ\nJyIiIpPJRHNzc1xyySWxatWq+MpXvtLmeWVlZf+X+f9PPi7D83nNrspeZc9eZc9eZc9efTLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b0be748>"
"<matplotlib.figure.Figure at 0x7f524ff76518>"
]
}
],
@@ -1052,7 +1052,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGNCAYAAACMgOcOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X901fV9+PFXEgQTixwZgkFQiGVQEakSmUSqnh3MGdZR\ndlSUbrYgnSOzFszcYWnZcSpKLTtsQAk66wFmR4s77XE9yjzEA0oZ9IwIcUjBYbMhPZB0MAuUFTiE\n+/3DY75LCcl178C9gcfjHM4J7/v55PPK++DFJ/dXQSaTyQQAAECCwlwPAAAAdH/CAgAASCYsAACA\nZMICAABIJiwAAIBkwgIAAEgmLAAAgGSdhsWGDRti0qRJMWjQoCgsLIyVK1d2+k23b98et912W5SU\nlMSgQYPiqaee6pJhAQCA/NRpWBw9ejSuv/76WLRoURQXF0dBQUGHxx8+fDjuuOOOKC0tjfr6+li0\naFEsWLAgFi5c2GVDAwAA+aXgk3zydu/evWPp0qXxpS996YzHLFu2LGpqaqK5uTl69eoVERFPP/10\nLFu2LH7+85+nTwwAAOSdLn+NxebNm+Nzn/tca1RERFRWVsa+fftiz549XX05AAAgD/To6m/Y1NQU\nV111VZu1AQMGtN529dVXt64fOnSoqy8PAACcZX369DltrcsfsejsNRgAAMD5p8vD4oorroimpqY2\na83Nza23AQAA558ufyrUuHHjYs6cOXH8+PHW11nU1dXFlVde2eZpUL+pvYdTzpb6+vqIiCgvLz9n\n1+yu7FX27FX27FX27NUnY7+yZ6+yZ6+yZ6+y1x33qrOXMWT1drMNDQ3R0NAQp06dij179kRDQ0Ps\n3bs3IiJqampiwoQJrcd/8YtfjJKSkpg2bVrs2LEjfvjDH8azzz4b1dXViT8KAACQrzoNiy1btsSN\nN94YN954Yxw7diwef/zxuPHGG+Pxxx+PiI9ekN3Y2Nh6/KWXXhp1dXWxb9++KC8vj0ceeSQee+yx\nePTRR8/eTwEAAORUp0+Fuv322+PUqVNnvH358uWnrV133XXx1ltvpU0GAAB0G13+4m0AAODCIywA\nAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACA\nZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTC\nAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIA\nAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABI\nJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYs\nAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIllVY1NbWxtChQ6O4uDjK\ny8tj48aNHR6/Zs2auPnmm+PSSy+Nyy+/PCZPnhy7d+/ukoEBAID802lYrF69OmbPnh1z586NhoaG\nqKioiIkTJ8bevXvbPf7999+PyZMnx+233x4NDQ3xxhtvxLFjx+LOO+/s8uEBAID80GlYLFy4MKZP\nnx4zZsyI4cOHx+LFi6O0tDSWLVvW7vENDQ1x6tSpmD9/fpSVlcXo0aNjzpw58bOf/Sz++7//u8t/\nAAAAIPc6DIsTJ07E1q1bo7Kyss16ZWVlbNq0qd1zbrnllvjUpz4VL7zwQrS0tMSRI0dixYoVMXbs\n2Ojbt2/XTQ4AAOSNgkwmkznTjfv27YtBgwbFhg0bYvz48a3rTz75ZKxatSp27drV7nmbNm2KyZMn\nx4cffhinTp2KG264If75n/85Lr/88jbHHTp0qPVrr8EAAID8NWzYsNav+/Tpc9rtXf6uUI2NjTF5\n8uSYPn161NfXx5tvvhm9e/eOKVOmRAcNAwAAdGM9OrqxX79+UVRUFM3NzW3Wm5ubo7S0tN1znn/+\n+Rg8eHA8++yzrWvf/e53Y/DgwbF58+aoqKho97zy8vJPOvv/WX19/Tm/Zndlr7Jnr7Jnr7Jnrz4Z\n+5U9e5U9e5U9e5W97rhX//vZRu3p8BGLnj17xpgxY2Lt2rVt1uvq6s4YCJlMJgoL237bj39/6tSp\nTgcGAAC6n06fClVdXR0rVqyIF198MXbu3BmzZs2KpqammDlzZkRE1NTUxIQJE1qPnzRpUmzdujWe\neuqp2L17d2zdujWmT58eV111VYwZM+bs/SQAAEDOdPhUqIiIKVOmxMGDB2PevHmxf//+GDVqVKxZ\nsyYGDx4cERFNTU3R2NjYevz48eNj9erV8c1vfjO+9a1vRUlJSYwbNy5ef/31KC4uPns/CQAAkDOd\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b23c080>"
"<matplotlib.figure.Figure at 0x7f524ff03ac8>"
]
}
],
@@ -1081,7 +1081,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b194b00>"
"<matplotlib.figure.Figure at 0x7f524fd4d908>"
]
}
],
@@ -1091,7 +1091,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"That one bad measurment appears to have significantly eroded our knowledge. However, note that our highest probabilities are still at 0 and 5, which is correct. Now let's continue with a series of correct measurements"
"That one bad measurement appears to have significantly eroded our knowledge. However, note that our highest probabilities are still at 0 and 5, which is correct. Now let's continue with a series of correct measurements"
]
},
{
@@ -1114,7 +1114,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b0241d0>"
"<matplotlib.figure.Figure at 0x7f524fc98f98>"
]
}
],
@@ -1143,13 +1143,13 @@
"\n",
"With that said, while this filter is used in industry, it is not used often because it has several limitations. Getting around those limitations is the motivation behind the chapters in the rest of this book.\n",
"\n",
"The first problem is scaling. Our dog tracking problem used only one variable, $pos$, to denote the dog's position. Most interesting problems will want to track several things in a large space. Realistically, at a minimum we would want to track our dogs $(x,y)$ coordinate, and probably his velocity $(\\dot{x},\\dot{y})$ as well. We have not covered the multidimensional case, but instead of a histogram we use a multidimensional grid to store the probabilities at each discrete location. Each *sense()* and *update()* step requires updating all values in the grid, so a simple four variable problem would require $O(n^4)$ running time *per time step*. Realistic filters have 10 or more variables to track, leading to exhorbinant computation requirements.\n",
"The first problem is scaling. Our dog tracking problem used only one variable, $pos$, to denote the dog's position. Most interesting problems will want to track several things in a large space. Realistically, at a minimum we would want to track our dogs $(x,y)$ coordinate, and probably his velocity $(\\dot{x},\\dot{y})$ as well. We have not covered the multidimensional case, but instead of a histogram we use a multidimensional grid to store the probabilities at each discrete location. Each *sense()* and *update()* step requires updating all values in the grid, so a simple four variable problem would require $O(n^4)$ running time *per time step*. Realistic filters have 10 or more variables to track, leading to exorbitant computation requirements.\n",
"\n",
"The second problem is that the histogram is discrete, but we live in a continuous world. The histogram requires that you model the output of your filter as a set of discrete points. In our dog in the hallway example, we used 10 positions, which is obviously far too few positions for anything but a toy problem. For example, for a 100 meter hallway you would need 10,000 positions to model the hallway to 1cm accuracy. So each sense and update operation would entail performing calculations for 10,000 different probabilities. It gets exponentially worse as we add dimensions. If our dog was roaming in a $100x100 m^2$ courtyard, we would need 100,000,000 bins ($10,000^2$) to get 1cm accuracy.\n",
"\n",
"A third problem is that the histogram is multimodal. This is not always a problem - an entire class of filters, the particle filters, are multimodal and are often used because of this property. But imagine if the GPS in your car reported to you that it is 40% sure that you are on D street, but 30% sure you are on Willow Avenue. I doubt that you would find that useful. Also, GPSs report their error - they might report that you are at $(109.878W, 38.326N)$ with an error of $9m$. There is no clear mathematical way to extract error information from a histogram. Heuristics suggest themselves to be sure, but there is no exact determination. You may or may not care about that while driving, but you surely do care if you are trying to send a rocket to Mars or track and hit an oncoming missle.\n",
"A third problem is that the histogram is multimodal. This is not always a problem - an entire class of filters, the particle filters, are multimodal and are often used because of this property. But imagine if the GPS in your car reported to you that it is 40% sure that you are on D street, but 30% sure you are on Willow Avenue. I doubt that you would find that useful. Also, GPSs report their error - they might report that you are at $(109.878W, 38.326N)$ with an error of $9m$. There is no clear mathematical way to extract error information from a histogram. Heuristics suggest themselves to be sure, but there is no exact determination. You may or may not care about that while driving, but you surely do care if you are trying to send a rocket to Mars or track and hit an oncoming missile.\n",
"\n",
"This difficulty is related to the fact that the filter often does not represent what is physically occuring in the world. Consider this distribution for our dog:"
"This difficulty is related to the fact that the filter often does not represent what is physically occurring in the world. Consider this distribution for our dog:"
]
},
{
@@ -1168,7 +1168,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGNCAYAAACMgOcOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X901fV9+PFXEgQTixwZgkFQiGVQEakSmUSqnh3MGdZR\ndlSUbrYgnSOzFszcYWnZcSpKLTtsQAk66wFmR4s77XE9yjzEA0oZ9IwIcUjBYbMhPZB0MAuUFTiE\n+/3DY75LCcl178C9gcfjHM4J7/v55PPK++DFJ/dXQSaTyQQAAECCwlwPAAAAdH/CAgAASCYsAACA\nZMICAABIJiwAAIBkwgIAAEgmLAAAgGSdhsWGDRti0qRJMWjQoCgsLIyVK1d2+k23b98et912W5SU\nlMSgQYPiqaee6pJhAQCA/NRpWBw9ejSuv/76WLRoURQXF0dBQUGHxx8+fDjuuOOOKC0tjfr6+li0\naFEsWLAgFi5c2GVDAwAA+aXgk3zydu/evWPp0qXxpS996YzHLFu2LGpqaqK5uTl69eoVERFPP/10\nLFu2LH7+85+nTwwAAOSdLn+NxebNm+Nzn/tca1RERFRWVsa+fftiz549XX05AAAgD/To6m/Y1NQU\nV111VZu1AQMGtN529dVXt64fOnSoqy8PAACcZX369DltrcsfsejsNRgAAMD5p8vD4oorroimpqY2\na83Nza23AQAA558ufyrUuHHjYs6cOXH8+PHW11nU1dXFlVde2eZpUL+pvYdTzpb6+vqIiCgvLz9n\n1+yu7FX27FX27FX27NUnY7+yZ6+yZ6+yZ6+y1x33qrOXMWT1drMNDQ3R0NAQp06dij179kRDQ0Ps\n3bs3IiJqampiwoQJrcd/8YtfjJKSkpg2bVrs2LEjfvjDH8azzz4b1dXViT8KAACQrzoNiy1btsSN\nN94YN954Yxw7diwef/zxuPHGG+Pxxx+PiI9ekN3Y2Nh6/KWXXhp1dXWxb9++KC8vj0ceeSQee+yx\nePTRR8/eTwEAAORUp0+Fuv322+PUqVNnvH358uWnrV133XXx1ltvpU0GAAB0G13+4m0AAODCIywA\nAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACA\nZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTC\nAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIA\nAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABI\nJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYs\nAACAZMICAABIJiwAAIBkwgIAAEgmLAAAgGTCAgAASCYsAACAZMICAABIllVY1NbWxtChQ6O4uDjK\ny8tj48aNHR6/Zs2auPnmm+PSSy+Nyy+/PCZPnhy7d+/ukoEBAID802lYrF69OmbPnh1z586NhoaG\nqKioiIkTJ8bevXvbPf7999+PyZMnx+233x4NDQ3xxhtvxLFjx+LOO+/s8uEBAID80GlYLFy4MKZP\nnx4zZsyI4cOHx+LFi6O0tDSWLVvW7vENDQ1x6tSpmD9/fpSVlcXo0aNjzpw58bOf/Sz++7//u8t/\nAAAAIPc6DIsTJ07E1q1bo7Kyss16ZWVlbNq0qd1zbrnllvjUpz4VL7zwQrS0tMSRI0dixYoVMXbs\n2Ojbt2/XTQ4AAOSNgkwmkznTjfv27YtBgwbFhg0bYvz48a3rTz75ZKxatSp27drV7nmbNm2KyZMn\nx4cffhinTp2KG264If75n/85Lr/88jbHHTp0qPVrr8EAAID8NWzYsNav+/Tpc9rtXf6uUI2NjTF5\n8uSYPn161NfXx5tvvhm9e/eOKVOmRAcNAwAAdGM9OrqxX79+UVRUFM3NzW3Wm5ubo7S0tN1znn/+\n+Rg8eHA8++yzrWvf/e53Y/DgwbF58+aoqKho97zy8vJPOvv/WX19/Tm/Zndlr7Jnr7Jnr7Jnrz4Z\n+5U9e5U9e5U9e5W97rhX//vZRu3p8BGLnj17xpgxY2Lt2rVt1uvq6s4YCJlMJgoL237bj39/6tSp\nTgcGAAC6n06fClVdXR0rVqyIF198MXbu3BmzZs2KpqammDlzZkRE1NTUxIQJE1qPnzRpUmzdujWe\neuqp2L17d2zdujWmT58eV111VYwZM+bs/SQAAEDOdPhUqIiIKVOmxMGDB2PevHmxf//+GDVqVKxZ\nsyYGDx4cERFNTU3R2NjYevz48eNj9erV8c1vfjO+9a1vRUlJSYwbNy5ef/31KC4uPns/CQAAkDOd\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f3e1b004a58>"
"<matplotlib.figure.Figure at 0x7f524fca3dd8>"
]
}
],
@@ -1216,7 +1216,7 @@
"\n",
"However, we are a long way from tracking an airplane or a car. This code only handles the 1 dimensional case, whereas cars and planes operate in 2 or 3 dimensions. Also, our position vector is *multimodal*. It expresses multiple beliefs at once. Imagine if your GPS told you \"it's 20% likely that you are here, but 10% likely that you are on this other road, and 5% likely that you are at one of 14 other locations\". That would not be very useful information. Also, the data is discrete. We split an area into 10 (or whatever) different locations, whereas in most real world applications we want to work with continuous data. We want to be able to represent moving 1 km, 1 meter, 1 mm, or any arbitrary amount, such as 2.347 cm. \n",
"\n",
"Finally, the bar charts may strike you as being a bit less certain than we would want. A 25% certaintly may not give you a lot of confidence in the answer. Of course, what is important here is the ratio of this probability to the other probabilities in your vector. If the next largest bar is 23% then we are not very knowledgable about our position, whereas if the next largest is 3% we are in fact quite certain. But this is not clear or intuitive. However, there is an extremely important insight that Kalman filters implement that will signficantly improve our accuracy from the same data.\n",
"Finally, the bar charts may strike you as being a bit less certain than we would want. A 25% certainty may not give you a lot of confidence in the answer. Of course, what is important here is the ratio of this probability to the other probabilities in your vector. If the next largest bar is 23% then we are not very knowledgeable about our position, whereas if the next largest is 3% we are in fact quite certain. But this is not clear or intuitive. However, there is an extremely important insight that Kalman filters implement that will significantly improve our accuracy from the same data.\n",
"\n",
"\n",
"**If you can understand this chapter you will be able to understand and implement Kalman filters.** I cannot stress this enough. If anything is murky, go back and reread this chapter and play with the code. The rest of this book will build on the algorithms that we use here. If you don't intuitively understand why this histogram filter works, and can't at least work through the math, you will have little success with the rest of the material. However, if you grasp the fundamental insight - multiplying probabilities when we measure, and shifting probabilities when we update, leading to a converging solution - then you understand everything important you need to grasp the Kalman filter. "
+23 -23
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:bb9a8f2c142d326ed76d662b23ad42518b72c5dc661e7861848dbcbae2bb8a2f"
"signature": "sha256:12b400da5636d0bf2d4ee7091c049e5452feebe2ac4945343e1bc32b250f408c"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -259,7 +259,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7f7c7d8396a0>"
"<IPython.core.display.HTML at 0x7f870739a320>"
]
}
],
@@ -300,7 +300,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5d274cc0>"
"<matplotlib.figure.Figure at 0x7f86e565a518>"
]
}
],
@@ -346,7 +346,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5d06ee10>"
"<matplotlib.figure.Figure at 0x7f86e2d7eb70>"
]
}
],
@@ -423,7 +423,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx8AAAGkCAYAAABQNpg6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYlGe+PvD7nYGBQQQFqYpdrNgoKmJXFHs3xhhrjG7K\nxpTd9Zzs/s5usrtnT/akr5pqTayxiwUbgmJBxAJ2ERsgINLrzPz+yNnRR6oKPFPuz3X5x3PPO8M9\neYPwdd6iGAwGA4iIiIiIiOqYSnYBIiIiIiKyDhw+iIiIiIioXnD4ICIiIiKiesHhg4iIiIiI6gWH\nDyIiIiIiqhccPoiIiIiIqF5w+CAiIiIionpRo+Fj6dKlaNWqFbRaLQICAhAdHV3ptkeOHMG4cePg\n7e2NBg0aoFu3blixYkW57SIjI+Hv7w+tVos2bdrgm2++ef53QUREREREJq/a4WPDhg1455138OGH\nHyI+Ph7BwcEICwvDnTt3Ktw+JiYG3bp1wy+//IKEhAQsWrQICxYswLp164zbJCUlYeTIkQgJCUF8\nfDyWLFmCt956C1u2bKm9d0ZERERERCZFqe4O57169UL37t2FTyZ8fX0xefJk/O1vf6vRF5k2bRp0\nOh02b94MAPj973+Pbdu24cqVK8ZtXnvtNSQkJOD48ePP8z6IiIiIiMjEVfnJR0lJCeLi4hAaGirk\noaGhzzQkZGdnw8XFxbiOiYmp8DVjY2Oh0+lq/LpERERERGQ+bKp6MCMjAzqdDh4eHkLu7u6O1NTU\nGn2BXbt24dChQ8KwkpaWVu41PTw8UFZWhoyMDONj2dnZNfoaRERERERkWpydnctldXq1q2PHjmHG\njBn46quvEBAQUJdfioiIiIiITFyVw0eTJk2gVquRlpYm5GlpafDy8qryhaOjozFy5Eh89NFHeP31\n14XHPD09y31ykpaWBhsbGzRp0uRZ+hMRERERkZmo8rArjUYDf39/7N+/H5MmTTLmERERmDJlSqXP\nO3r0KEaPHo2//OUvePvtt8s93qdPH2zdulXIIiIiEBgYCLVaXeFrVvSxzZNiY2MBgJ+wWDjuZ+vA\n/Wza0h7eRfSFvThzJQp5hc9+eOxX72wT1m99Pv65erT26ohenQajh28I7DXa53oNqlv8XrYO3M+W\n71n2cXWnTVQ5fADAu+++i5kzZyIoKAjBwcFYvnw5UlNTsXDhQgDAkiVLcPr0aRw4cADAr/f5GDVq\nFN58801Mnz7d+AmHWq2Gm5sbAGDhwoX4+uuvsXjxYixYsADHjh3DqlWrsH79+mrfEBER1T+9QY+E\npFhEnt2Jq3cv1Og5NmpbNG3SEu6Nm8LVyQONndzgqHXCV++I270x4c/IK8xBbsEjPMrLRNrDu0h9\neAeZOWkVv/D/uZlyCTdTLmFL1I8I7jwMA7qPgYuT2/O+RSIiqgfVDh9Tp05FZmYmPv74Y6SkpMDP\nzw/h4eHw8fEBAKSmpuLmzZvG7VetWoWioiJ88skn+OSTT4x5y5Ytjdu1bNkS4eHhWLx4MZYtW4am\nTZviq6++woQJE2r7/RER0QvQ63U4e+049p/ehJTM21Vua6fRwreZH9o374423h3h6eIDtbraHzNo\n37xbhXlBUR6SUi7j5v1LuHL7HG4/uF7hdsUlhTh8dgci43ehp28/jOg1De6Nvat/c0REVO+qvc+H\nTE9+bMPDrgjgfrYW3M/yGQwGJN46g23RK5H28G6l22ntGqBrm97o6RsC32Z+NRo2FOXpr1WzTlm5\nGbiYdBpxV6Jw435ipdupFBWCOg3GiKCpcHFyr9mLU53g97J14H62fM972FVFv79X/1OCiIisyr30\nW9gWtQJX7pyrdJvWXh0R0nUEurUNhq2Nbb30atywCfp1DUO/rmFIf5SCk4mHEHNxP3KfOu9Eb9Dj\nRMIBxF6OxBD/CRgWMAkaW7t66UhERFXj8EFERACAwuIC7Dy2Gscu7IMB5T+OUBQVerTri6EBE9DM\nrbWEho+5NfLC6OAZGB40BbGXI3Ho7PZyn9CU6Uqx79RGnEo8hPH956J72z5Qnv7YhYiI6hWHDyIi\nwoWbp7Dx8DfIzsss95gCBYEdByI0cDLcGzeV0K5ytjYa9OkyDL06D0H8teMIj/kZDx7dF7bJysvA\nivD/Qdc2vTF10OtwatBYUlsiIuLwQURkxXILsvFL5PeIuxpV4eO+zfwwvv8c6Z90VEelqNDTNwTd\n2vbBqUuHsev4WuQWPBK2OX/jBK7fS8CkAfMR0L4/PwUhIpKAwwcRkZW6euc8Vu/7DDn5WeUec3P2\nwoT+c9G5VYBZ/ZKuVqnRp/NQdG8bjH2nNuJI/E7o9Trj4wVFuViz7zOcux6D6UPfQAP7hhLbEhFZ\nHw4fRERWRqfXYc+JdYg4/Uu5cztUigqD/SdgRK+p0NiY70naWjsHjO83G706DcHPB75CcupV4fHz\nN07gzoMbmB32Plp5tZfUkojI+qhkFyAiovqTlZuBLzf/J/af3lxu8Gjm1hrvvfRPjO0706wHjyd5\nufpg8ZS/Y1zIbNioxatyZeWm44vN/4GDZ7ZBb9BLakhEZF34yQcRkZW4ef8Sftj9j3LnQihQMCxw\nEsJ6vVSj+3SYG5VKjSH+49GldSDW7Psct9OuGR/T63XYHr0SN+8nYubwxbDXaCU2JSKyfPzkg4jI\nChy/uB9f/fLHcoOHU4PGeGPinzE6+BWLHDye5NG4Kd6Z8jcM7DG23GMXbp7CZxt/j8zsNAnNiIis\nB4cPIiILptPrsPHwN1h/cCl0+jLhsU4teuL3L38OX5+uktrVPxu1LSb2n4vXxvwHHOwchcdSMm/j\nnxs+wPV7CZLaERFZPg4fREQWqri0CN/t/Buiz+8p99jwoClYMO5DNHRwltBMPr/WQfjdy5+Wu4Rw\nfmEOvt7yJ5xMPCSpGRGRZePwQURkgXILHuGrX/6IxFtnhFxjY4c5I3+HUX1mQKVY948AFyd3/HbK\n39C9bbCQ6/U6/BTxJQ7EboHBUP5O70RE9Pys+ycPEZEFSn+Ugs82/kE4sRoAXBq6YfHU/0aPdsGV\nPNP62NnaY/bI9xHW66Vyj+04thpbo1bwSlhERLWIwwcRkQW5n3ELn2/8AzKyU4W8mVtrvDvtf9DU\nrZWkZqZLpagQ1vslzA57v9xJ90fO7sCafZ9Dpyur5NlERPQsLPvSJkREVuR22nUs3fZnFBTlCnmH\n5t0xd9TveRnZavT0DYGj1hnf7/o7ikoKjPmZK0dRUlqE2WEfwNbGtopXICKi6vCTDyIiC5CUchn/\n2vKncoNHUMdBWDD2Pzl41JCvjx/envwxnBwaC/mFm6fw4+5/oLSsRFIzIiLLwOGDiMjM3biXgKVb\n/wuFT/xrPQAM6D4aM4a9Xe7O3lS1Zm6tsXjqf8PN2UvIE27F4rtdf0dJWbGkZkRE5o/DBxGRGUtK\nuYJl2z9CcWmRkA/1n4iJ/edBURRJzcybq7MH3p78V7g3birkl5PP4rsdf+MAQkT0nDh8EBGZqTsP\nbmL5tj+j5KnBI6zXSxjTdyYHjxfk7OiCtyd9DE8XHyG/cuccVuz+BGW6UknNiIjMF4cPIiIzlJJ5\nB0u3lT/UanTwKwjr/RIHj1ri1KAx3pr0EbxdWwh5wq1YrNn3OfR6naRmRETmicMHEZGZSX+Ugn9t\n/RPyC3OEfESvaQgNnCypleVq6NAIb076CF6uzYX87LVjWHdwKe8DQkT0DDh8EBGZkazcDHy95U/I\nyc8S8sE9x1d4ozyqHY5aJ7wx4c/lTkI/mXgQW4/+yDuhExHVEIcPIiIzUVicj2+2f4Ss3HQhD/Eb\ngXEhs3ioVR1zatAYb0z8Mxo7NhHyyPhdOBS3XVIrIiLzwuGDiMgMlOlK8f2u/8b9zGQhD+o4CJMH\nLeDgUU9cnNzxxsS/oKFDIyHfHr0SZ64cldSKiMh8cPggIjJxeoMeP0d8jWt3Lwi5X+sgTB/6JlQK\n/yqvT+6NvfGb8f8Fe42DkK/d/yWu3rlQybOIiAjg8EFEZPJ2HVuL2CuRQtbSqz1mhb0HtUotqZV1\na+rWEvNH/wFqlY0x0+nL8MOuv+N+RnIVzyQism4cPoiITFjUuXAcOLNFyNwaeWPBmP+ExsZOUisC\nAF+frpgx7C0hKywpwPLtf8GjvExJrYiITBuHDyIiE3U5OR6bI78XsoZaZywa/yc4ap0ktaInBXQY\ngDF9XxWyR3mZ+H7n33kXdCKiCnD4ICIyQQ+y7mHFnk9geOIeEhobO7w+7o9o4uwpsRk9baj/BIR0\nDROy2w+u4+eIr3kJXiKip3D4ICIyMQXFefh2599QWJxvzBQomBX2Hpp7tJXYjCqiKAomD5iPzi0D\nhDzuahT2n94sqRURkWni8EFEZEJ0eh1W7vlfPMi6J+Rj+s6EX+sgSa2oOiqVGq+OeBeeLj5Cvjvm\nJ5y7fkJSKyIi08Phg4jIhGyPXoXLyWeFLLDDQAzxnyCpEdWU1s4Br435DzjYNxTyNfs/x730W3JK\nERGZGA4fREQm4tSlwzhydoeQtfD0xUtDfsObCJoJt0ZemDvyd1A9cQnkktIifLfzr8gvzJHYjIjI\nNHD4ICIyAffSk7Dh4DIhc3Z0xfzRf4CtjUZSK3oevj5+mDzgNSF7mJuO1fs+h16vk9SKiMg0cPgg\nIpKsoDgPP+z+B0p1JcbMVq3Ba6OXwLmBi8Rm9LxCuo4odwWsS8lx2Htqo6RGRESmgcMHEZFEeoMe\na/d9gYzsVCGfOnghr2xl5ib2n4uWXu2FbN/JjUi8dUZSIyIi+Th8EBFJdOD0L7iYdFrI+nYZjl6d\nBktqRLXFRm2LuSN/h4ZaZ2NmgAGr936GzOw0ic2IiOTh8EFEJMnl5HjsPrFOyJp7tMPEAfLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5cff8fd0>"
"<matplotlib.figure.Figure at 0x7f86e2d19eb8>"
]
}
],
@@ -435,7 +435,7 @@
"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. So, when we look at this chart we can *sort of* think of it as representing the probability of the thermometer reading a particular value given the actual temperature of 22$^{\\circ}C$. However, that is not quite accurate mathematically. \n",
"\n",
"Recall that we said that the distribution is *continuous*. Think of an infinitly long straight line - what is the probability that a point you pick randomly is at, say, 2.0. Clearly 0%, as there is an infinite number of choices to choose from. The same is true for normal distributions; in the graph above the probability of being *exactly* 22$^{\\circ}C$ is 0% because there are an infinite number of values the reading can take.\n",
"Recall that we said that the distribution is *continuous*. Think of an infinitely long straight line - what is the probability that a point you pick randomly is at, say, 2.0. Clearly 0%, as there is an infinite number of choices to choose from. The same is true for normal distributions; in the graph above the probability of being *exactly* 22$^{\\circ}C$ is 0% because there are an infinite number of values the reading can take.\n",
"\n",
"So what then is this curve? It is something we call the *probability density function.* Later we will delve into this in greater detail; for now just understand that the area under the curve at any region gives you the probability of those values. So, for example, if you compute the area under the curve between 20 and 22 the result will be the probability of the temperature reading being between those two temperatures."
]
@@ -501,7 +501,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Since this is a probability density 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. We can prove this ourselves with a bit of code. (If you are mathematically inclined, integrate the Gaussian equation from $-\\infty$ to $\\infty$)"
"Since this is a probability density 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 occurrences, which must sum to one. We can prove this ourselves with a bit of code. (If you are mathematically inclined, integrate the Gaussian equation from $-\\infty$ to $\\infty$)"
]
},
{
@@ -554,7 +554,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx4AAAGNCAYAAACfV6f6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl41NXd///XzGQlCyEJhICAgIiiKEpADdyCloYfrVJv\najFqpURuLdGqFK2KBVstWksr9kuVpZbFgtZQxHqraAGBImIVDGhxA2RVkmBCdsg2M78/uDPh85ks\nQzKT2Z6P6+Kq58w5nzlz4GrynvdZLE6n0ykAAAAA8CGrvwcAAAAAIPQReAAAAADwOQIPAAAAAD5H\n4AEAAADA5wg8AAAAAPgcgQcAAAAAnyPwAAAAAOBzHgUeCxcuVP/+/RUbG6uMjAxt27at1farV6/W\nsGHDFBcXp3PPPVd/+MMfvDJYAAAAAMGpzcAjLy9PM2bM0OzZs7V7925lZmZqwoQJOnr0aLPt33rr\nLd16662aPn26Pv30Uy1cuFDPPPOMnnvuOa8PHgAAAEBwsLR1c/kVV1yhYcOGacmSJa66888/Xzfe\neKOefPJJt/a33HKLamtr9corr7jqnn32Wc2bN09Hjhzx4tABAAAABItWMx51dXXKz89XVlaWoT4r\nK0vbt29vsU90dLShLiYmRl9//TWBBwAAABCmIlp7sbi4WHa7XWlpaYb6Hj16qLCwsNk+48eP14wZ\nM7RhwwZ95zvf0f79+/X0009LkgoKCtS3b19X2/Ly8o6OHwAAAEAn69q161n38fqpVnfccYfuuece\n/eAHP1B0dLQyMzN18803n34zK4doAQAAAOGo1UggNTVVNptNRUVFhvqioiKlp6e32O+pp55SdXW1\njhw5osLCQo0YMUKSNGDAAC8MGQAAAECwaXWpVVRUlIYPH67169frhz/8oat+w4YN+tGPftTqgy0W\niys4+dvf/qbMzEylpKS02L496Rq0z86dOyVJGRkZfh5JeGHe/YN5949gnPetH6/Tmi1/dpXHj/yR\nvnflLbJYLH4c1dkJxnkPdsy5fzDv/tHRbRKtBh6SNHPmTN12220aOXKkMjMztXjxYhUWFmr69OmS\npFmzZmnHjh3auHGjJKmkpESrV6/W2LFjVVtbq+XLl+uVV17Rv/71rw4NFAAAX1m/Y43e2L7KUPfP\nD/+uU7UnNWnMNFktLBUGgI5qM/CYPHmySkpKNHfuXBUUFGjo0KFat26d+vTpI0kqLCzUgQMHDH1W\nrlypBx98UE6nU5mZmdqyZQsRKQAgIL2/Z4Nb0NFo68dvKi42UROuuKmTRwUAoafNwEOScnNzlZub\n2+xry5cvN5RTUlJaPGoXAIBA4nA69PaHq1ttsyn/H/rO5TcoKjK61XYAgNaROwYAhK0Dxz5XaeW3\nrnKELVLZ37lbXaLjXXW1dae05+AOfwwPAEIKgQcAIGzt/MK4//DSgVcq8+Lv6ooh17baDgBw9gg8\nAABhqb6hXrv2vWeoy7hgjOF/G312OF9Vpyo6bWwAEIo82uMBAECo+ezQRzpVW+0qx8Um6oK+wyRJ\n53QfoLTkc1R04mtJksNh16692/Rfl37PL2MF/MXhcKiurs7fw3DTr18/SVJNTY2fRxJaoqKifHrh\nN4EHACAs7fxii6E8/PzRstlO/1i0WCwaMXiM3nj/RdfrO778F4EHworD4VBtba1iYmIC7j6bmJgY\nfw8h5DidTtXU1Cg6OtpnwQdLrQAAYaem7pT2HNppqMu4YKyhPPyCqw3lQwVfqqSiyNdDAwJGXV1d\nQAYd8A2LxaKYmBifZrgIPAAAYedQwZey2xtc5ZSuaeqXNsjQJiUxTQPSLzTUffXNZ50yPiBQEHSE\nF1//fRN4AADCzsHCLw3l88+5pNkfuIP6DDX2K/jSrQ0AwDMEHgCAsHPYFECc2/P8ZtuZ6w8VEngA\nQHsReAAAworT6dShwr2GunPTBzfb1hx4HCs+rNp6TtEBgPYg8AAAhJXjZcd0srbKVY6J6qK05HOa\nbRsXm6geSb1cZafToSNF+3w+RgAIRQQeAICwcsi0zKpfz0GyWlr+cWjOhhwq2NtCSwDwHqfTqXnz\n5mnAgAGKjY3V0KFD9eKLL7bdUdKOHTv0s5/9TBdddJHi4+PVr18/3XTTTdq3z79fnBB4AADCitsy\nq57NL7Nq1I99HgD84JFHHtHDDz+s7373u3r22Wd17rnn6rbbbtNLL73UZt/f/e53evXVV/Xd735X\nCxYs0J133qmtW7fq8ssv1549ezph9M3jAkEAQFg5VPCFody/hf0dLb1+qOBLOZ1OjhkF0KLq6mrF\nxcW1u/8333yjp59+Wrm5uXruueckSdOmTdOYMWP0i1/8QjfddJNsNluL/e+//36NGDFCERFNv+rf\ndNNNGjp0qJ588kmPghdfIOMBAAgbtXWndKzkiKHOfH+HWXpKP0VFRLvKlafKdaLiuE/GB8D31qxZ\nI6vVqk2bNrm9tmrVKlmtVm3dulWffPKJcnJyNHDgQMXGxqp79+66+eabdfToUUOfFStWyGq1avPm\nzbr33nuVlpamhISEDo3xtddeU0NDg3Jzcw31ubm5Kigo0LZt21rtf9VVVxmCDkk677zzNGTIEH3+\n+ecdGltHkPEAAISNI8f3y+l0uMo9knopLjax1T42q019087T/m8+ddUdKvxSKV3TfDZOIBjd+/9u\n8NmzF9z3D68967rrrlNCQoLy8vJ07bXXGl7Ly8tT7969dfXVV+vpp5/W3r17NXXqVPXq1Uv79+/X\n4sWL9eGHH2rPnj2KjY019L3nnnuUnJysOXPmqLy8XNLpfRolJSUejSsxMVFRUVGSpF27dikmJkYX\nX3yxoc2IESMkSbt379aYMWPO6nM7nU4VFRXpwgsvbLuxjxB4AADCxqFC48bKlo7RNTs3/QJT4LFX\nwwdf7dWxAegcMTExmjhxotauXauFCxe6liyVlZVp/fr1uvvuuyVJd911l+6//35D34kTJ2rUqFFa\nu3atbr31VsNrCQkJ2rJli6zWpgVFhw8f1oABAzwa14oVKzRlyhRJUkFBgdLS3L/cSE9PlyQdO3bM\nw0/b5MUXX9SxY8f02GOPnXVfbyHwAACEjULTMqs+PQZ61K+vqV1hydEWWgIIBtnZ2XrxxRe1ceNG\njR8/XpL06quvqr6+XtnZ2ZJkyGhUVVWptrZWgwYNUlJSkvLz890CjzvuuMMQdEinA4WNGzd6NKYh\nQ4a4/vvUqVOKjo52axMTE+N6/Wx88cUXuvvuu3XVVVfp9ttvP6u+3kTgAQAIG4UnjAFDekpfj/r1\nTOnT6nMABJfx48erW7duevnll12Bx8svv6z+/ftr5MiRkqTS0lI9/PDDWrNmjUpLSw39G5dSnWng\nQPcvMqKjo92Wc3kiNjZWNTXul5U21pmXebWmsLBQ3//+99WtWze98sorfj0Yg8ADABAWHE6Hik58\nbajrmdynhdZG3bumy2q1yeGwS5LKq0/oVG21YqPbf2oNEGq8uQ/D1yIiIjRp0iStWbNGzz//vMrK\nyrR582Y98MADrjaTJ0/W9u3b9cADD+iyyy5zbRjPzs6Ww+Fwe2ZzwYDD4dDx454dRpGUlOTKaKSn\np+udd95xa1NQUCBJ6tWrl9trzSkvL9eECRNUUVGhd999Vz179vSon68QeAAAwkJZZbHqGmpd5S7R\n8UrokuRRX5stQj2SehkyHYUnvm7zKF4AgSs7O1tLly7VW2+9pWPHjqmhocG1zKq0tFTvvPOOHnvs\nMc2ZM8fVp6amRidOnPD4PY4cOdKuPR6XXXaZli5dqv/85z8aOnSoq80HH3wgSRo2bFibz6upqdH1\n11+v/fv3a+PGjbrgggs8HrevEHgAAMKCeXlUWvI5Z7XkIC35HFPgcZTAAwhiY8eOVVpamvLy8nTs\n2DFdeOGFuuSSSyTJteHcnNl45pln5HQ6PX6P9u7x+MEPfqCf//znWrRokRYuXCjp9KlUixcvVnp6\nukaPHu1qW1JSom+//Vb9+vVzZV3sdrtuuukmffDBB3rttdd0xRVXeDxmXyLwAACEBXPg4ekyqzPb\nf6z3XeUi9nkAQc1ms+nGG2/UsmXLVFtbq0cffdT1WmJiosaOHat58+aprq5Offv21bZt27R161al\npKR4HHy0d49H7969NWPGDP3+97+X3W7XiBEj9Nprr2nbtm3661//arg88E9/+pMef/xxbd682XXE\n7v3336/XX39d119/vYqLi7Vq1SrD83/84x+f9Zi8gcADABAWzCdRtSfwaO15AIJPdna2nnvuOVks\nFtcyq0YvvfSS7rvvPi1ZskT19fUaM2aMNm3apHHjxrllS32xYfupp55ScnKylixZohdeeEGDBg3S\nX//6V7egwWKxuP40+vjjj2WxWPT666/r9ddfd2tP4AEAgA8VmjeWp3Qw8CDjAQS9UaNGNbtRXJJ6\n9uypvLw8t/qDBw8aylOnTtXUqVO9PjaLxaKHHnpIDz30UKvtfvWrX+lXv/qVoW7z5s1eH483WNtu\nAgBAcHM6nW5Lo3omn3NWz+jRrZcslqYfmycqv1VtvftxlwCA5hF4AABCXkV1qU7VnXSVoyNjlBSf\nelbPiIyIUmpX41GU5uN5AQAtI/AAAIQ89xOt+rRrTXaaKUvCcisA8ByBBwAg5LmfaHV2y6ya+pn3\neZDxAABPeRR4LFy4UP3791dsbKwyMjK0bdu2VtuvW7dOV155pRITE9W9e3fdcMMN2rdvn1cGDADA\n2eroiVZN/ch4AEB7tRl45OXlacaMGZo9e7Z2796tzMxMTZgwQUePNv9/tvv379cNN9ygsWPHavfu\n3dq4caNqamr0ve99z+uDBwDAEx29w6OlfkUcqQsAHmsz8Jg/f75ycnI0bdo0DR48WAsWLFLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c595a2f28>"
"<matplotlib.figure.Figure at 0x7f86e2a21ba8>"
]
}
],
@@ -596,7 +596,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAv4AAAGGCAYAAAAD/IWIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Wd8VHWixvFnZlJIAom0hN57kRZ670V6EVRQsa9617be\nVXf37t3du0VXd9fewYKA0rv0EkLvVXpvCQSSkIS0OfcFuwOHgLQk/ym/7yvPMwk+fDTk4eTMOQ7L\nsiwBAAAA8GtO0wUAAAAAFDyGPwAAABAAGP4AAABAAGD4AwAAAAEg6EYvJCcnF2YPAAAAAPkkKioq\nT8YZfwAAACAAMPwBAACAAHDDS32udr0fFQDAtTZs2CBJio2NNdwEP4f/Tr6B/04AbtfNLtXnjD8A\nAAAQABj+AAAAQABg+AMAAAABgOEPAAAABACGPwAAABAAGP4AAABAAGD4AwAAAAGA4Q8AAAAEAIY/\nAAAAEAAY/gAAAEAAYPgDAAAAAYDhDwAAAAQAhj8AAAAQABj+AAAAQABg+AMAAAABgOEPAAAABACG\nPwAAABAAGP4AAABAAGD4AwAAAAGA4Q8AAAAEAIY/AAAAEAAY/gAAAEAAYPgDAAAAAYDhDwAAAAQA\nhj8AAAAQABj+AAAAQABg+AMAAAABgOEPAAAABACGPwAAABAAGP4AAABAAGD4AwAAAAGA4Q8AAAAE\nAIY/AAAAEAAY/gAAAEAAYPgDAAAAAYDhDwAAAAQAhj8AAAAQAIJMFwAAFKzc3BylZiTrUla6MrMy\ndPLCQUnS4dORCg0OU5GQMBULj1KQK9hwUwBAQWL4A4AfychM1/4TO3Tk9F6dTjquM+eP6+yF08p1\n5+T52EU7x3v+2elwqlRUGUWXqKCY4uVVOaamalZsqIgixQqzPgCgADH8AcCHWZalE2cPaev+1dpz\ndJuOntknt+W+7V/HbbmVcOGkEi6c1I5/Zw45VCG6mmpVvFeNarRW5Ziacjgc+fsbAAAUGoY/APig\n5ItJ2rBnudbvXqaT547c8ue9/+J02/F//WvgDT/WkqVjCQd0LOGAFm+cpuh7yql53U6KrdNRJSNj\n7rg7AMAMhj8A+JATiYe0aMNUbdoXL+s2zuwXDYtSeGhEnjy6eHllZKYpNf3CTX+NhAsnNWf1eM1Z\nPV4Nq7VQt9ghqlq29m31BwCY47Asy7reC8nJyZ5/joqKKrRCAHzXhg0bJEmxsbGGm/if/Sd2auH6\nKdp9ZNNNPzamRAXVrnivKkbXUMy/r9kP+/fov/ZKnf98B7iUlaGE8yd05vxxHUs4qL3Htunk2cM3\n/XfVKF9f3WKHqG7lJlwGlM/4egJwu2623znjDwBe7Mz5E5oeN1Y7D2244cc4HE7VrdRYTWq1U51K\njRVVtMRt/3uKhISpUkwNVYqpoeZ1OkmSUtMvaO+xbdq8L147D2287huE95/Yqf0ndqpmhYYa1GG0\nKpSudtv/bgBA4WD4A4AXSruUqh/Xfq+4bfPkdude92PKlKio1vW7q1nt9oqMKJ7vHYqF36NmtTuo\nWe0OSstI0aa9K7V65yIdTzyY52P3Hd+uv49/RS3rd1Xf1g8VSB8AwN1h+AOAF7EsS5v3xWvSss+U\nlpFy3Y+pWraOusUOVv2qsXI6Cuc5jBFhkWrfqI/a3dtbe49t06INU7Xn2Fbbx1iytGbnIm3eF69B\n7R9T6/rduPwHALwIwx8AvERq+gX9sPRTbd2/+rqvVy1bR/3bjlL18vULudkVDodDtSs1Uu1KjXT0\nzH7NWvWt9hy1/wUgMytDExd/qC374jWi63MqEVnaUFsAwNV4cy+AfMObEe/cln2r9P2Sj5V2KTXP\nayWKlVb/do+oSc22d30G/UZv7r1TlmVp1+GNmhY3VgnnT+R5PTQkTEM6PKGW9bpw9v828fUE4Hbx\n5l4A8GLZOdmasXKsVmydm+c1lytIvVrcry5NByo4KMRAu5tzOByqXzVWdSo11optczVn1XfKysn0\nvJ6ZlaHxi97X/hM7NKzz0woNLmKwLQAENoY/ABiSlJKgMXP/rqNn9uV5rVJMTT3U/b9UtmQlA81u\nn8sVpM5N+qthtRYav/B97T+x0/b6ut1LdSzhgB7r89+KKVHBUEsACGyF864wAIDNrsOb9Nb4l/OM\nfpcrSP3ajNJL9//NZ0b/1UpFldHzQ/6koZ2eUkhQqO21U+eO6u8Tf6XN++INtQOAwMYZfwAoZCu2\nztWU5V/kefJuichoPdbnv1UppoahZvnD6XCqQ6M+qlWxocbMeUunk455XsvKvqSxc/+uhNYn1aP5\nUK77B4BCxBl/ACgkbneupiz/QpOXfZZn9Deo1kL//cA/fH70X61MiYp6ZcTfFVunY57X5qz+Tt8t\nfE85udkGmgFAYOKMPwAUgsysDH394z+049B6W+6QQ/3ajlLXZoP88ux3aHARjerxoqqXq6fJyz63\nPf133e6lSkpJ0ON9X1NEkWIGWwJAYOCMPwAUsPRLF/Xh9P/NM/pDgovoiX6vq1vsYL8c/f/hcDjU\ntmFPPTvofxUeWtT22v4TO/Xe5N8oJe28oXYAEDgY/gBQgFLTL+j9Kb/V4VN7bHlU0ZJ6Yehf1LBa\nC0PNCl/NCg308vA3VTqqrC0/de6o3p30hpJSEgw1A4DAwPAHgAJyPjVR7056QyfOHrbl5UtX1SvD\n31LF6GpmihkUXby8Xhr+pqqVq2vLE5NP6V+TXteZ6zwEDACQPxj+AFAAziWf0b8mvaGECydtefVy\n9fTLIf+ne4qWNNTMvKJhkXp20P+qfhX7E2kvXDyndye9oZNnjxhqBgD+jeEPAPksKSVR70/9nc6n\nJtryupWb6hcDf6+w0AhDzbxHSFCoHu/7azWp2daWX8xI1ofTfs+ZfwAoAAx/AMhHyReT9OHU/8lz\nvXqjGq31ZL/XFRIceoPPDDxBrmA90utltarfzZanpl/QB1N+p8QLpww1AwD/xPAHgHySmn5BH0z9\nHyUm2wdrs1rt9WjvXynIFWyomfdyOl16oOtzan9vH1uenJakD67zFygAwJ1j+ANAPkjPvKgPp/2v\nzpw/bssb1WitkT1flMvpMtTM+zkcDg3p9IRa1+9uy8+nXr5kilt9AkD+YPgDwF3KzsnS57P+qpPX\n3L2nQdXmeqTXy4z+W+B0ODW86y/Uom5nW34u+Yw+nvFHZWSmG2oGAP6D4Q8Ad8HtztU38/+pAyd2\n2vK6lZtqdJ//5vKe2+B0OPVgt+fVtFZ7W34i8ZC+nPM3ZedkG2oGAP6B4Q8Ad8iyLE1Z/qW27l9t\ny6uWraPH7/u1goMY/bfL6XRpVI8XVK9KM1u+99g2fbfwPbktt6FmAOD7GP4AcIcWbpiiuG1zbVlM\niQp6qv9vuHvPXXC5gjS6z6uqHFPTlm/aG6fpcV+ZKQUAfoDhDwB3YPO+eM1eNc6WRRUtqV8M+L0i\nihQz1Mp/hAYX0dMDfqfoe8rZ8mWbZyp++3xDrQDAtzH8AeA2HT2zX+MWvGvLwkLC9YsB/6MSkaUN\ntfI/RcMi9YuBv1dkeHFbPmnpp9pzdKuhVgDguxj+AHAbzqee1Wez/qzsnCxP5nIG6Yl+r6tcqcoG\nm/mnklExenrA7xQSdOXSKbfl1pi5bymBp/sCwG1h+APALcrMvqTPZ/0lz33l7+/yjGpWaGiolf+r\nGF1No3q+ZMsyMtP06cw/K+1SqqFWAOB7GP4AcAssy9L4he/reOJBW96l6UC1rt/NUKvA0ahGK/Vr\nM8qWJV44qa/mvi23O9dQKwDwLQx/ALgFSzbN0OZ98basQbUW6t921A0+A/mtW+zgPA/42nNsq2av\nHm+oEQD4FoY/ANzE3mPbNDP+G1tWrmRlPdzzJTl5Km+hcTgcGt7lWVUrW9eWL9owRVv2rTLUCgB8\nB8MfAH5GUkqixs57W9ZVD44KC43Q431fU5GQMIPNAlNwULBG3/eqIiPsd/r5buF7Op10zFArAPAN\nDH8AuIHsnCyNmfOm0jJSPJlDDj3S62WVvqeswWaBLSqihB7r82u5nEGeLDP7kr6Y/TdlZKYbbAYA\n3o3hDwA3MG3FGB1N2G/LercaoXpVmhlqhP+oVq6OBnd4zJYlnD+hiYs/lGVZhloBgHdj+APAdWza\nu1Irt/9oyxpUa6EeLYYZaoRrtbu3t1rW7WLLNu+Lz/PfDQBwGcMfAK6ReOGUJiz+0JaViiqjUT1e\nkNPBH5vewuFwaFiXp1W+dFVbPnXFlzqWcPAGnwUAgYvvYABwleycLI2d+3dlZmV4MpcrSKP7vKqw\n0AiDzXA9IUGhGt37VYUGF/Fkubk5+mru37neHwCuwfAHgKtMj/sqz0O6BrV/TBWjqxtqhJuJLl5O\nI7o+Z8sSk0/p+yUfcb0/AFyF4Q8A/7btwBrFbZtryxrXaKP29/Y21Ai3qlnt9mrboKct27R3pdbs\nXGSoEQB4H4Y/AEhKvpikCYvs1/WXjIrRA92ek8PhMNQKt2NQx8dUvlQVWzZl+RdKOH/CTCEA8DIM\nfwABz2259e2CfyntUqonczpdGt2b6/p9SUhQqEb3eVUhQaGeLCsnU9/8+E/l5GYbbAYA3oHhDyDg\nLds8U3uPbbNl97V+SJViahhqhDsVXby8hnR8wpYdTdiveWsmGmoEAN6D4Q8goB1LOKhZ8eNsWc0K\nDdW12UBDjXC3WtXvpkbVW9myRRumat/x7YYaAYB3YPgDCFhZOZn6Zv4/lOvO8WThoUU1kvv1+zSH\nw6ER3Z5TVNGSnsySpW/n/0vpmRcNNgMAs/jOBiBgzV71nc4kHbdlI7o+q+LFShlqhPwSUaSYRvV4\nQQ5deWP2hYvnNHX5lwZbAYBZDH8AAWnf8R1avnmWLWtZr6sa12xjqBHyW62K96rLNZdsrdLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c595a2b38>"
"<matplotlib.figure.Figure at 0x7f86e2a21ac8>"
]
}
],
@@ -650,7 +650,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAGNCAYAAACWvAeAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8FHX+x/H3ZtMhoScECBB6CzW0AII0KQqIgnKeBbEQ\nz4rth6fniZz1jrOC3olgRVAUlCZBOgElhhB6gAgESIOEBELq7v7+QHOOCU2HTJJ9PR8PH6efmVne\nuXmQ5L07M1+by+VyCQAAAABM5GF1AAAAAABVD0UDAAAAgOkoGgAAAABMR9EAAAAAYDqKBgAAAADT\nUTQAAAAAmI6iAQAAAMB0Fy0a69ev16hRo9SoUSN5eHjogw8+uOiL7tixQ/3795e/v78aNWqk559/\n3pSwAAAAACqHixaN3NxcdezYUa+//rr8/Pxks9kuuH9OTo6GDBmikJAQxcbG6vXXX9err76qGTNm\nmBYaAAAAQMVmu5yVwQMCAvT222/rtttuO+8+s2bN0tSpU5WWliYfHx9J0j/+8Q/NmjVLR48e/eOJ\nAQAAAFR4pt+jsXnzZvXr16+kZEjS0KFDdfz4cR0+fNjsPw4AAABABeRp9gumpqaqcePGhllwcHDJ\ntiZNmpTMs7Ozzf7jAQAAAFxhNWrUuOg+pn+icbF7OAAAAABUfaYXjfr16ys1NdUwS0tLK9kGAAAA\noOoz/dKp3r1768knn1RBQUHJfRrR0dFq2LCh4bKp37qUj19Q+cXGxkqSIiIiLE6C8sI5d0+cd/fD\nOXc/nHP3c7m3PVzS423j4+MVHx8vp9Opw4cPKz4+XsnJyZKkqVOnavDgwSX7/+lPf5K/v7/uuOMO\n7dq1S19++aVefvllTZky5TK/FAAAAACV1UWLxtatW9W1a1d17dpV+fn5evbZZ9W1a1c9++yzks7d\n4J2UlFSyf2BgoKKjo3X8+HFFRETogQce0GOPPaZHHnnkyn0VAAAAACqUi146NWDAADmdzvNunzNn\nTqlZhw4dtG7duj+WDAAAAEClZfrN4AAAAABA0QAAAABgOooGAAAAANNRNAAAAACYjqIBAAAAwHQU\nDQAAAACmo2gAAAAAMB1FAwAAAIDpKBoAAAAATEfRAAAAAGA6igYAAAAA01E0AAAAAJiOogEAAADA\ndBQNAAAAAKajaAAAAAAwHUUDAAAAgOkoGgAAAABMR9EAAAAAYDqKBgAAAADTUTQAAAAAmI6iAQAA\nAMB0FA0AAAAApqNoAAAAADAdRQMAAACA6SgaAAAAAExH0QAAAABgOooGAAAAANNRNAAAAACYjqIB\nAAAAwHQUDQAAAACmo2gAAAAAMB1FAwAAAIDpKBoAAAAATEfRAAAAAGA6igYAAAAA01E0AAAAAJiO\nogEAAADAdBQNAAAAAKajaAAAAAAwHUUDAAAAgOkoGgAAAABMR9EAAAAAYDqKBgAAAADTUTQAAAAA\nmI6iAQAAAMB0FA0AAAAApqNoAAAAADAdRQMAAACA6SgaAAAAAExH0QAAAABgOooGAAAAANNRNAAA\nAACYjqIBAAAAwHQUDQAAAACmo2gAAAAAMB1FAwAAAIDpKBoAAAAATEfRAAAAAGA6igYAAAAA01E0\nAAAAAJiOogEAAADAdJdUNGbOnKmwsDD5+fkpIiJCGzduvOD+y5YtU69evRQYGKh69eppzJgx2r9/\nvymBAQAAAFR8Fy0a8+fP18MPP6ynn35a8fHxioyM1PDhw5WcnFzm/gcOHNCYMWM0YMAAxcfHa9Wq\nVcrPz9eIESNMDw8AAACgYrpo0ZgxY4YmTpyoSZMmqXXr1nrjjTcUEhKiWbNmlbl/fHy8nE6nXnzx\nRTVr1kydOnXSk08+qYMHDyozM9P0LwAAAABAxXPBolFYWKi4uDgNHTrUMB86dKhiYmLKPKZPnz6q\nXr26/vvf/8rhcOj06dOaO3euevToodq1a5uXHAAAAECFZXO5XK7zbTx+/LgaNWqk9evXq2/fviXz\nadOm6dNPP9XevXvLPC4mJkZjxoxRVlaWnE6nunTpouXLl6tevXqG/bKzs0v+nXs4AAAAgIqrZcuW\nJf9eo0aNi+5v+lOnkpKSNGbMGE2cOFGxsbFau3atAgICNH78eF2g0wAAAACoQjwvtLFu3bqy2+1K\nS0szzNPS0hQSElLmMe+++65CQ0P18ssvl8w+/vhjhYaGavPmzYqMjCzzuIiIiMvNjkooNjZWEufb\nnXDO3RPn3f1wzt0P59z9/PpqpEtxwU80vL291a1bN61cudIwj46OPm9hcLlc8vAwvuwv/+10Oi8r\nHAAAAIDK6aKXTk2ZMkVz587V7NmztWfPHj300ENKTU3V5MmTJUlTp07V4MGDS/YfNWqU4uLi9Pzz\nz2v//v2Ki4vTxIkT1bhxY3Xr1u3KfSUAAAAAKowLXjolSePHj9fJkyc1ffp0paSkKDw8XMuWLVNo\naKgkKTU1VUlJSSX79+3bV/Pnz9dLL72kV155Rf7+/urdu7dWrFghPz+/K/eVAAAAAKgwLlo0JCkq\nKkpRUVFlbpszZ06p2Y033qgbb7zxjyUDAAAAUGmZ/tQpAAAAAKBoAAAAADAdRQMAAACA6SgaAAAA\nAExH0QAAAABgOooGAAAAANNRNAAAAACYjqIBAAAAwHQUDQAAAACmo2gAAAAAMB1FAwAAAIDpKBoA\nAAAATEfRAAAAAGA6igYAAAAA01E0AAAAAJiOogEAAADAdBQNAAAAAKajaAAAAAAwHUUDAAAAgOko\nGgAAAABMR9EAAAAAYDqKBgAAAADTUTQAAAAAmI6iAQAAAMB0FA0AAAAApqNoAAAAADAdRQMAAACA\n6SgaAAAAAExH0QAAAABgOooGAAAAANNRNAAAAACYjqIBAAAAwHQUDQAAAACmo2gAAAAAMB1FAwAA\nAIDpKBoAAAAATEfRAAAAAGA6igYAAAAA01E0AAAAAJiOogEAAADAdBQNAAAAAKajaAAAAAAwHUUD\nAAAAgOkoGgAAAABMR9EAAAAAYDqKBgAAAADTUTQAAAAAmI6iAQAAAMB0FA0AAAAApqNoAAAAADAd\nRQMAAACA6SgaAAAAAExH0QAAAABgOooGAAAAANNRNAAAAACYjqIBAAAAwHQUDQAAAACmo2gAAAAA\nMB1FAwAAAIDpKBoAAAAATEfRAAAAAGC6SyoaM2fOVFhYmPz8/BQREaGNGzde9JjXXntNbdq0ka+v\nrxo0aKCpU6f+4bAAAAAAKgfPi+0wf/58Pfzww5o1a5b69u2rt99+W8OHD9fu3bsVGhpa5jFTpkzR\n0qVL9c9//lPh4eHKzs5WSkqK6eEBAAAAVEwXLRozZszQxIkTNWnSJEnSG2+8oRUrVmjWrFl64YUX\nSu2/b98+vfXWW9qxY4dat25dMu/UqZOJsQEAAABUZBe8dKqwsFBxcXEaOnSoYT506FDFxMSUeczi\nxYvVrFkzLVu2TM2aNVNYWJjuuOMOZWRkmJcaAAAAQIV2wU80Tpw4IYfDoeDgYMM8KChIqampZR6T\nlJSkw4cPa8GCBfrwww8lSY899piuu+46bd68WTabrczjYmNjf09+VFKcb/fDOXdPnHf3wzl3P5xz\n99GyZcvL2v+il05dLqfTqYKCAn300Udq0aKFJOmjjz5S69atFRsbq+7du5v9RwIAAACoYC5YNOrW\nrSu73a60tDTDPC0tTSEhIWUeExISIk9Pz5KSIUktWrSQ3W7XkSNHzls0IiIiLjc7KqFf3vXgfLsP\nzrl74ry7H865++Gcu5/s7OzL2v+C92h4e3urW7duWrlypWEeHR2tyMjIMo/p27eviouLlZSUVDJL\nSkqSw+FQkyZNLiscAAAAgMrpoutoTJkyRXPnztXs2bO1Z88ePfTQQ0pNTdXkyZMlSVOnTtXgwYNL\n9h88eLC6du2qO++8U/Hx8dq2bZvuvPNO9erVi8YLAAAAuImL3qMxfvx4nTx5UtOnT1dKSorCw8O1\nbNmykjU0UlNTDZ9e2Gw2LVmyRA8++KCuuuoq+fn5aejQoZoxY8aV+yoAAAAAVCiXdDN4VFSUoqKi\nytw2Z86cUrP69etrwYIFfywZAAAAgErropdOAQAAAMDlomgAAAAAMB1FAwAAAIDpKBoAAAAATEfR\nAAAAAGA6igYAAAAA01E0AAAAAJiOogEAAADAdBQNAAAAAKajaAAAAAAwHUUDAAAAgOkoGgAAAABM\nR9EAAAAAYDqKBgAAAADTUTQAAAAAmI6iAQAAAMB0FA0AAAAApqNoAAAAADAdRQMAAACA6SgaAAAA\nAExH0QAAAABgOooGAAAAANN5Wh0AAFA5FRUXKut0hjJzMpR5OkNZp9N1MiddWTkZyshMlY+Xv3Zm\nrFPtgHqqHRik2oH1VCvg3P/6ePlaHR8AcIVRNAAA5+V0OpSUslcpJw7/XCYySspEztmsCx+cn6mM\n00fL3FTNL/BcAQmop1qBQaoTGKSgWg3VomEHeXl6XYGvBABQ3igaAAADl8ulYyd+0tY9a/Vj4gbl\n5F6kUPwOuXk5ys3LUXL6QcPcz6eaurTso+5t+iusQVt52LjCFwAqK4oGAECSlHU6Q7F71yt23zql\nnDxiSYa8glzF7FypmJ0rVTswSBGt+6t7m/4Krt3IkjwAgN+PogEAbiyvIFfxBzZr6961Onh0l1xy\nXfKxNtlUo3pt1Q4I+tU9GOfuxzh6KEX5RbmqF1JbmTnpyjydrszTGcrMSdepMyfldDou+vqZOela\nufVzrdz6uRoHtVBEm/7q2qqfAqvV/CNfMgCgnFA0AMDNOBzF2n04TrF712ln0lYVOQovuL+Pl6/a\nh0UoqFZD1QkMKrmhu2b1OvK0l30/RW7GuSIR0T6i1Dan06Hs3MyfC8i5m8lPnErRzkOxysLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5d00ee10>"
"<matplotlib.figure.Figure at 0x7f86e2c45f60>"
]
},
{
@@ -687,7 +687,7 @@
"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 `update()` function we had to multiply probabilities together, and when we performed the motion step using the `predict()` 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",
"A typical textbook would directly launch into a multi-page 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 a key reason why Kalman filters are possible."
]
@@ -704,7 +704,7 @@
"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",
"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."
]
@@ -784,9 +784,9 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 5.21312379 4.07998256 -1.88727855 1.8810597 5.83528749 3.17323975\n",
" 3.61095259 6.35085461 0.85512558 7.86604454 1.68210737 4.50882311\n",
" 6.25585727 7.3637816 2.37546818]\n"
"[ 1.70508045 -1.94666722 6.00121242 2.29360836 -5.14849844 3.90455228\n",
" -4.38911057 -0.67009073 4.61567921 1.89171207 1.00920315 8.21336208\n",
" -2.33595224 5.93621895 -2.57558884]\n"
]
}
],
@@ -870,7 +870,7 @@
"source": [
"Earlier I spoke very briefly about the *central limit theorem*, which states that under certain conditions the arithmetic sum of **any** independent random variables will be normally distributed, regardless of how the random variables are distributed. This is extremely important for (at least) two reasons. First, nature is full of distributions which are not normal, but when we apply the central limit theorem over large populations we end up with normal distributions. Second, Gaussians are mathematically *tractable*. We will see this more as we develop the Kalman filter theory, but there are very nice closed form solutions for operations on Gaussians that allow us to use them analytically.\n",
"\n",
"However, a key part of the proof is \"under certain conditions\". These conditions often do not hold for the physical world. The resulting distributions are called *fat tailed*. Let's consider a trivial example. We think of things like test scores as being normally distributed. If you have ever had a professor 'grade on a curve' you have been subject to this assumption. But of course test scores cannot follow a normal distribution. This is because the distribution assigns a nonzero probability distribution for *any* value, no matter how far from the mean. So, for example, say your mean is 90 and the standard deviation is 13. The normal distribution assumes that there is a large chance of somebody getting a 90, and a small chance of somebody getting a 40. However, it also assumes that there is a tiny chance of somebody getting a -10, or of 150. It assumes that there is a infitesimal chance of getting a score of -1e300, or 4e50. In other words, the *tails* of the distribution are infinite. \n",
"However, a key part of the proof is \"under certain conditions\". These conditions often do not hold for the physical world. The resulting distributions are called *fat tailed*. Let's consider a trivial example. We think of things like test scores as being normally distributed. If you have ever had a professor 'grade on a curve' you have been subject to this assumption. But of course test scores cannot follow a normal distribution. This is because the distribution assigns a nonzero probability distribution for *any* value, no matter how far from the mean. So, for example, say your mean is 90 and the standard deviation is 13. The normal distribution assumes that there is a large chance of somebody getting a 90, and a small chance of somebody getting a 40. However, it also assumes that there is a tiny chance of somebody getting a -10, or of 150. It assumes that there is a infinitesimal chance of getting a score of -1e300, or 4e50. In other words, the *tails* of the distribution are infinite. \n",
"\n",
"But for a test we know this is not true. You cannot get less than 0, or more than 100. Let's plot this using a normal distribution."
]
@@ -892,7 +892,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5d0c49b0>"
"<matplotlib.figure.Figure at 0x7f86e2bbe0b8>"
]
}
],
@@ -946,9 +946,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5d07d9b0>"
"<matplotlib.figure.Figure at 0x7f86e2c6b240>"
]
}
],
@@ -958,7 +958,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"That looks like I would expect. The signal is centered around 10. A standard deviation of 2 means that 68% of the measurements will be within $\\pm$ 2 of 10, and 99% will be within $\\pm$ 6 of 10, and that looks like what is happenning. \n",
"That looks like I would expect. The signal is centered around 10. A standard deviation of 2 means that 68% of the measurements will be within $\\pm$ 2 of 10, and 99% will be within $\\pm$ 6 of 10, and that looks like what is happening. \n",
"\n",
"Now let's look at a fat tailed distribution. There are many choices, I will use the Student's T distribution. I will not go into the math, but just give you the source code for it and then plot a distribution using it."
]
@@ -1000,9 +1000,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAGNCAYAAADghrULAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXe8FcX1wM++9+giYqEIFlTssWCJmmgsMYmJUdQYEzUG\nzS+axIhoYosFTLBjQVFRUYpYEBFQpIn0JvXRedTX4DVe7+3u7497997d2ZnZmd3Zu3vfO18/Ce9u\nmTk7OzszZ+bMOZqu6zogCIIgCIIgCIIEQFrQAiAIgiAIgiAI0n5BhQRBEARBEARBkMBAhQRBEARB\nEARBkMBAhQRBEARBEARBkMBAhQRBEARBEARBkMBAhQRBEARBEARBkMBAhQRBEARBEARBkMAQUkhe\neOEFuOiii6BHjx7Qq1cvuOGGG2Dbtm2260aMGAH9+vWDrl27wlVXXQXbt29XLjCCIAiCIAiCIG0H\nIYVkyZIl8M9//hNWrVoFCxcuhIyMDPj5z38O5eXl8WteeukleO2112DMmDGwdu1a6NWrF1x77bVQ\nU1Pjm/AIgiAIgiAIgqQ2mptI7bW1tdCjRw+YOXMm/OY3vwFd1+HYY4+FoUOHwhNPPAEAAA0NDdCr\nVy8YNWoU3HvvvcoFRxAEQRAEQRAk9XG1h6SqqgoikQj07NkTAAD2798PRUVF8Itf/CJ+TefOneGK\nK66AlStXqpEUQRAEQRAEQZA2R4abmx588EE4//zz4dJLLwUAgMLCQgAA6N27t+W6Xr16wcGDBy3H\nKisr3WSJIAiCIAiCIEjA9OjRQ3ma0grJww8/DCtXroTly5eDpmmO14tcgyAIgiAIgiBI+0TKZOuh\nhx6CKVOmwMKFC+HEE0+MH+/Tpw8AABQVFVmuLyoqip9DEARBEARBEAQhEV4hefDBB2Hq1KmwaNEi\nOPXUUy3nBgwYAH369IH58+fDBRdcAADRTe3Lly+HUaNGMdP0Y8kHaZ+sW7cOAAAuvPDCgCVB2hpY\ntxA/wHqF+AHWK8Qv/N5yIaSQ3H///TB58mSYMWMG9OjRI75npHv37tCtWzfQNA2GDRsGzz//PJx+\n+ukwcOBAGDlyJHTv3h1uv/12Xx8AQRAEQRAEQZDURUgheffdd0HTNLjmmmssx0eMGAHPPPMMAAA8\n+uijUF9fD/fffz+Ul5fDJZdcAvPnz4du3bqplxpBEARBEARBkDaBkEISiUSEEhs+fDgMHz7ck0AI\ngiAIgiAIgrQfXMUhQRAEQRAEQRAEUQEqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiC\nBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiC\nIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiC\nIAiCIAiCBAYqJAiCIAiCIAiCBAYqJAiCIAiCIAFxoGQ/DB09OGgxECRQUCFBEARBEAQJiEOVRUGL\ngCCBgwoJgiAIgiAIgiCBgQoJgiAIgiAIgiCBgQoJgiAIgiAIgiCBgQoJgiAIgiAIgiCBgQoJgiAI\ngiAIgiCBgQoJgiAIgiAIgiCBgQoJgiAIgiAIgiCBgQoJgiAIgiAIgiCBgQoJgiAIgiAIgiCBgQoJ\ngiAIgiAIgiCBgQoJgiAIgrRjyqtLQNf1oMVAEKQdgwoJgiSZPQe2waPv3h60GAiCIAAAMPyjv8L2\n7PVBi4EgSDsGFRIESTI5hbugoakuaDEQBEHiYJuEIEiQoEKCIAiCIAiCIEhgoEKCIAiCIAiCIEhg\noEKCIAiCIAiCIEhgoEKCIAiCIAiCIEhgoEICANuzN0Be8b6gxUAQBEEQBEGQdgcqJAAwduZ/YeLc\nV4MWA0EQBEEQBGFQVlUMrZHWoMVAfAAVEgMMCoUkDS1oARAEQRAk5Rgx/l5YkjkraDEQH0CFBEEY\n1DXWYPRiBEEQBAkR9Y01QYuA+AAqJDFw2ImQPD72Ttiwa3nQYiAIgiAIgrRpUCFBEA5VteVBi4Ag\nCIIgCNKmQYXEAE1zEARBEARBECTpoEKCIClGTX1V0CIgCIIgSCDg/HHbBBWSGDruIkFShP+8fxcU\nleUHLQaCIAiCIIgSUCFBkBSkoak+aBEQBEEQF6zbuQQmzX09aDFSFg0957dJUCGJgSskCJXQNnxY\nXxEEUUloG7s2x+ptC2Bd1pKgxUhZ0GSrbYIKCYLw8KHhw9kdBEFUs/fANnhtymNBi4EgCOIKVEgM\nUONGkgTO7iDtjaaWRojokaDFaNPsyNkI2YVZQYuBIL6Dk3ptE1RIEIQHNnwI4pl/v30bLNk4K2gx\n2jheGyucKUFSA5zUa5ugQhID95AgyQJnd5D2SEllQdAitGmwXUkdcLSBIHZQIUEQBEGQNkp5dQkM\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f7c5cfb6978>"
"<matplotlib.figure.Figure at 0x7f86e2dbe9e8>"
]
}
],
@@ -1014,7 +1014,7 @@
"source": [
"We can see from the plot that while the output is similar to the normal distribution there are outliers that go far more than 3 standard deviations from the mean. This is what causes the 'fat tail'.\n",
"\n",
"It is unlikely that the Student's T distribution is an accurate model of how your sensor (say, a GPS or doppler) performs, and this is not a book on how to model physical systems. However, it does produce reasonable data to test your filter's performance when presented with real world noise. We will be using distributions like these throughout the rest of the book in our simulations and tests. \n",
"It is unlikely that the Student's T distribution is an accurate model of how your sensor (say, a GPS or Doppler) performs, and this is not a book on how to model physical systems. However, it does produce reasonable data to test your filter's performance when presented with real world noise. We will be using distributions like these throughout the rest of the book in our simulations and tests. \n",
"\n",
"This is not an idle concern. The Kalman filter equations assume the noise is normally distributed, and perform sub-optimally if this is not true. Designers for mission critical filters, such as the filters on spacecraft, need to master a lot of theory and emperical knowledge about the performance of the sensors on their spacecraft. \n",
"\n",
+51 -51
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:f266278bc454b99b80665131e586500ae1621e39395bb328b8773e2a40a2afed"
"signature": "sha256:6b0f6b4b7459b6e1411f6ca33aa1f415af9dcb1f244d8949d97692080fd7b1e6"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -258,7 +258,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7f86157fe0b8>"
"<IPython.core.display.HTML at 0x7ffb9b2234e0>"
]
}
],
@@ -360,10 +360,10 @@
"output_type": "stream",
"stream": "stdout",
"text": [
" 1.4246\t-0.1778\t 0.6594\t-1.6780\t 0.2510\t\n",
"-0.1169\t 1.3496\t-1.8051\t-0.9663\t-0.3046\t\n",
" 0.0541\t 1.0872\t 0.6392\t-0.2048\t 0.2456\t\n",
" 0.1668\t 0.5042\t-0.8189\t 0.3422\t-2.3804\t\n"
"-0.5762\t-1.3449\t-0.1718\t 1.3409\t 2.3209\t\n",
" 0.1190\t 0.6340\t-0.5067\t 1.4452\t 0.4620\t\n",
"-0.5450\t-0.2927\t 0.1839\t-1.1850\t-0.0830\t\n",
" 1.1443\t-1.2217\t 1.2208\t-0.8636\t 0.4844\t\n"
]
}
],
@@ -411,7 +411,7 @@
"output_type": "display_data",
"png": "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\nEgzDoEKFCvj4+PDkk0/yyy+//OPciIiIiLjK3r176devH9WqVWPy5MmkpKTw3HPP8fXXX7Nu3Tqe\nfPLJPFsmQGcocsz27dt5+umnCQgI4I033iAjI4M33niDUqVK/eUF9Oqrr/Luu+/SuXNnQkJC2Lx5\nM3Fxcfz888988sknWePsdjtxcXE899xztG3blm3bttG2bVvS0tJu+0W5ceNG3n//fYKDgylcuDBJ\nSUk899xzrF+/nqZNmwK/n5Z77LHHuHLlCiNGjKB06dLMnz+fF154gYULF9KtWzcAZs2axbBhw+ja\ntSsjRozg2rVr/Pzzz3zzzTcMHDjwps//2muvERYWxq+//srEiRNvOuaPP8vtZrkuNjYWDw8PwsLC\nuHDhArGxsbzyyits2rTptuZHRERE5G79+OOPREVFsXTpUkzTxGaz8fLLLxMREcEDDzxgdTzXMXPA\nhQsXsj5uJSUl5Y72C9yzD1fr2LGj6ePjYx49ejRr2969e00PDw/TZrNlbdu2bZvp5uZm9u3b94bv\nHzt2rOnm5mZ+/PHHpmma5okTJ0wPDw/z+eefv2HcG2+8Ybq5uZl9+vT5x0xubm6mzWYzN23alLXt\n7NmzZokSJczHH388a9uoUaNMNzc384svvsjalpKSYtapU8csV66cmZGRkfUz1q9f/5bPOXv2bNPN\nzc08fPhw1rb27dubVapU+duMb7zxxm1nuXbtmmmaprl+/XrTzc3NrFOnTtY20zTNyZMnm25ubuaO\nHTv+NuOdvg7l/9u8ebO5efNmq2PkC5pL19J8upbm03U0l66VW+Zz48aN5jPPPJN1XOnp6Wn279/f\n3Lt3r9XRbtvtHr+bpmnqLU85IDMzk08//ZQOHTpQoUKFrO01atSgTZs2N4y9fgZi9OjRN2wfNWoU\n7u7urFy5EoC1a9eSmZnJ4MGDbxg3fPjwO8oWFBTEww8/nPV5iRIl6N69Oxs3biQ5OTkrU6NGjWje\nvHnWOG9vb4YMGcKJEyf4/vvvAShWrBhHjx5ly5Ytd5ThTvxTlh9++OGG8T179rzhDgmPP/44AAcO\nHLhnGUVERKTgMU2TNWvW0LJlS5o2bcrKlSvx8fFh5MiRHDhwgJkzZ1KjRg2rY94TebpQmKZ5zz5c\n6fTp06Smpt70RVSzZs0bnu/w4cO4ublRs2bNG8YVLVqUcuXKcejQoaxxANWrV79hXPHixSlevPht\nZ7tZpuvbrj/H4cOHqVWr1l/G1a5dGyArU3h4OEWKFKFJkyZUr16dwYMH8/nnn992lttxu1muq1Sp\n0g2fX5+b8+fPuzSXiIiIFExOp5P//Oc/NG7cmDZt2vDFF1/g7+/Pa6+9xuHDh0lISLjhD8r5UZ4u\nFAXN7RYdVxei270eo3bt2uzZs4elS5fSunVrPv74Y1q3bs2wYcNyPMt1f3fLWVfPkYiIiBQs165d\nY968edSrV4/OnTuzdetWSpcuTVRUFEeOHOHNN9+kdOnSVsfMESoUOaB06dL4+Piwd+/ev3xt7969\nNxwkV65cGdM02bNnzw3jLl68yPHjxwkMDMwaB2Qty37d2bNnuXDhwm1n+/P3X8/0x+eoXLkyu3fv\n/su469uuZwLw8fGhc+fOJCUlcejQIV555RWmTZvG8ePH/zbDnZSEO8kiIiIi4mqpqalMnz6dmjVr\n0qtXL3bt2kXFihWZMmUKhw4dIiIigqJFi1odM0epUOQAd3d32rRpw4oVKzh69GjW9r179/7lFq3P\nPvsswF/ueDRp0iScTmfW15988kk8PDyYPn36DeMSExPvKNuWLVtuuOPR2bNnWbRoEU2bNsXf3z8r\n0/fff8+GDRuyxl3/x1SuXDkaNWqU9b1//rnr1asHcMuS4+fnd9tvQbrdLCIiIiKudOnSJeLi4ggM\nDGTIkCEcOnSIWrVqMXv2bPbv38+wYcPw9fW1OqYldNvYHPLGG2+wevVqmjVrxuDBg8nMzGTq1KnU\nrVuXn376KWtc/fr16devH7NmzSI5OZlWrVrx/fffM3v2bNq1a0e7du0AKFOmDMHBwcTHx9OhQ4es\n28auWrXqprei/Tt169bl2WefZfjw4Vm3jb1y5QpRUVFZY8LDw1m8eDHt27dnxIgRlCpVigULFrB7\n924WLlyYtW7E9dviNm3alLJly7J//34SExNp0KAB999//99maNy4Me+//z4jR46kSZMm2Gy2v9z+\n9U6ziIiIiLjC2bNnmTx5MpMnT876A2nDhg1xOBx06tTpb99eXZCoUOSQ+vXr8+mnnzJ69Ghef/11\nKlasyNixYzl27Bjbt2+/YeyMGTOoUqUK7777Lh999BFly5YlNDT0Lwu8xcTE4Ovry8yZM1m7di2P\nPPIIq1evpkWLFnh7e99Wrscff5yWLVsyduxYDhw4QO3atfnggw+y7oYEv79la+PGjYSHhzLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc3e2eb8>"
"<matplotlib.figure.Figure at 0x7ffb7e376e10>"
]
}
],
@@ -457,9 +457,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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\n1rp27apsbW2Vp6enCgoKUqNGjVJKKbVz506laZr69NNPjfZ7//33VcmSJVXv3r3Vhx9+qEaOHGm4\nPmvUqGHymSxcuNBwHDs7O/XKK68of39/1atXL2VhYaFsbW1VRESE0T737t1T7du3N7TNQYMGqaCg\nINWnTx9VqlQpNXPmTEPelJQU5eHhYTj+oEGD1IgRI1SDBg2UpmnqlVdeUampqY98z3Na3759laZp\navny5SbbUlNTlZ2dnbKyslLJycmPLOujjz5Smqap0NBQs9urV6+udDqdOn/+/FPXW4i8QIIYIfKo\nSZMmKU3T1IwZM0y2+fv7K03T1OLFiw1p9+7dU1evXjXJGxcXp2rXrq2KFy+uEhMTjbZl3BjWq1dP\nRUdHm+ybWRDz119/meRNT0833EA9eGOdkV60aFF14sQJo219+vRRmqaplStXGqU3b95caZqmJkyY\nYPac4uPjDb+3a9dOWVhYmNxI3LlzRzVs2FDpdDqjG92HWbdunRo3blyWX48bIO3atUtZWFgYndeT\nBDHOzs5Kp9OpmJgYs9sLFy6sdDqdyWf+uDLaiJubm7p9+7YhPTExUb344otK0zS1bNkyo300TVOa\npqkOHTqYHH/v3r1K0zRVvnx5de3aNaNtGe1kyJAhRuk52RaKFy+uypUrp+7evWtS9q1btwz/njVr\nltI0zehGO0NycrJRHTKzf/9+pWma6t69u8m2TZs2KU3TVP/+/Y3Sn/RaK1KkiNk2n1kQc+nSJZWe\nnm6Sf8GCBWZvrDOCmAf/Diml1Ny5c5WmacrX19coPSNg7Nq1q0lbT01NVVFRUYbfP/vsM6Vpmho6\ndKhRvdLT05WPj4/SNE19+eWXJvU158iRI491TY8bN05dvHgxS2U3btxYaZqmDh8+bHb7Cy+8oHQ6\nnTpz5swjy+rZs2emQa5SSnXp0kVpmqbCw8OzVDch8joJYoTIoyIjI1WhQoVU/fr1jdJTU1NV6dKl\nTb6xfZhp06YpTdPUrl27jNIzblA3btxodr/MgpjMHDp0SGmapj777DOj9Iwbq7Fjx5rsk3FT5e/v\nb0g7ePCgIbh6lGPHjilN09Qbb7xhdvvGjRuVpmlq9OjRWToHLy8vw81ZVl46nS5L5Sqlv+GuWLGi\natq0qUpLSzOkP0kQY2lpqXQ6nVE59ytTpozS6XTq+vXrWS7TnIw2smTJEpNtW7ZsUZqmqfbt2xul\nZ7wvx44dM9nnvffeU5qmqTlz5phsi4qKUra2tsre3l6lpKQopXK+LTg5OanKlSs/8r3/8ssvM+3R\nfBy1atVSVlZW6ubNm0bpb775ZrZeayNHjjS7X2ZBTGbS09OVg4ODateunVF6RhDTsmVLk31SUlJU\noUKFVJMmTQxpqampqmjRosrOzk5duXLlocdMS0tTzs7OqlSpUmbbd2xsrNLpdKpp06ZZOodFixY9\n9jWd1c+hWrVqD+0dadGiRaY9pg/K6KXKrFcv4wsfc70+QuRHhXL7cTYhxJMpXbo07du3Jzw8nD/+\n+IN69eoBsGXLFq5fv46Xlxd2dnZG+5w8eZIpU6awa9curl+/bjIlp7mxJ5qm8eKLLz5W3aKjo5ky\nZQr/93//x19//cXdu3eNtl+9etXsfo0bNzZJK1euHIDRc/f79u0DoEOHDo+sy+7duwH9OIjg4GCT\n7Tdv3gT005ZmxcKFC1m4cGGW8j6uoUOHcuPGDcLDw9Hp8s6QRU3TaNWqlUl6y5YtATh69KjJNhsb\nG+rUqWOSfvjwYQDatm1rss3FxYU6depw4MABzp49S82aNXO8LfTt25cvv/ySmjVr8uabb/Lyyy/T\nokULk5m7unXrxpgxYxgyZAjh4eF06NCB5s2bU7du3cearvjdd98lMDCQpUuXMnz4cEDf9jdu3Ejl\nypVxd3c3yv+k19rjXtMpKSnMnTuX5cuXc+rUKe7cuWM05uZxrulChQpRsmRJo2v6zJkz3Llzh8aN\nG1O2bNmH1uXPP/8kOjqaKlWqMH78eLN5bGxsOHXqVFZOjXfffZd33303S3mFEM8PCWKEyMP69+9P\neHg4ixcvZvr06QAsXrwY0A/gvd++ffto27Yt6enptGvXjtdeew0HBwd0Oh1Hjhxhw4YN3Lt3z+xx\nSpYsmeU6Zcx+dfHiRZo2bYqXlxfFixenUKFCxMbGMnPmzEyP4+joaJJWqJD+z1RaWprRMYBH3uyA\n/iYPYPv27Wzfvt1sHk3TMh0w/qz88MMPfP/990ybNg03NzezedRjDPAvWrQoMTExxMXFUaxYMZPt\ncXFxhnzZwVwbsbGxwcHBwXCs+7m4uJgtJy4uDk3TKFWqlNntpUuXBv5rAzndFmbMmEHVqlVZtGgR\nU6ZMYfLkyeh0Otq1a8eUKVOoW7cuABUqVODAgQN8+umnhIeHs379ekD/vgwdOpTAwMAsBaLine truncated
"png": "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\nK1tbW+Xj46NCQkLUuHHjlFJKbdu2TWmapj766COjem+99ZYqW7as6tevnxo/frwaO3as4fqsXbu2\nye9k0aJFhtexs7NTHTt2VAEBAapv377KwsJC2draqri4OKM6KSkpqlOnToZzc/jw4SokJET1799f\nlStXTs2aNctQNi0tTXl5eRlef/jw4WrMmDGqUaNGStM01bFjR5Wenv7Q9zyvDRgwQGmappYvX26y\nLz09XdnZ2SkrKyuVmpr60Lbee+89pWmaCg8PN7u/Vq1aSqfTqdOnTz9xv4UoCiSIEaKIioiIUJqm\nqRkzZpjsCwgIUJqmqaioKMO2lJQU9ccff5iUTUpKUs8995xydHRUd+/eNdqXdWPYoEEDlZiYaFI3\nuyDmzJkzJmUzMzMNN1D331hnbS9ZsqQ6evSo0b7+/fsrTdPUihUrjLa3atVKaZqmJk6caPaYbt26\nZfi5Q4cOysLCwuRG4ubNm6px48ZKp9MZ3eg+yPfff69CQ0Nz/PWoAdLOnTuVhYWF0XE9ThDj7Oys\ndDqdunbtmtn99vb2SqfTmfzOH1XWOeLu7q5u3Lhh2H737l3VvHlzpWma+uabb4zqaJqmNE1TnTt3\nNnn9PXv2KE3TVOXKldWlS5eM9mWdJyNHjjTanpfngqOjo6pUqZK6c+eOSdt//fWX4fvPPvtMaZpm\ndKOdJTU11agP2dm3b5/SNE317NnTZN/69euVpmlqyJAhRtsf91orXry42XM+uyAmPj5eZWZmmpRf\nuHCh2RvrrCDm/r9DSik1b948pWmaGjFihNH2rICxe/fuJud6enq6unLliuHnTz75RGmapkaNGmXU\nr8zMTDVs2DClaZr6/PPPTfprzqFDhx7pmg4NDVXnzp3LUdtNmzZVmqapgwcPmt1ft25dpdPp1G+/\n/fbQtry9vbMNcpVSqlu3bkrTNBUTE5OjvglR1EkQI0QRlZCQoIoVK6YaNmxotD09PV2VL1/e5BPb\nB5k2bZrSNE3t3LnTaHvWDeq6devM1ssuiMnOgQMHlKZp6pNPPjHannVj9cEHH5jUybqpCggIMGyL\njY01BFcPc+TIEaVpmurTp4/Z/evWrVOapqnAwMAcHYOvr6/h5iwnXzqdLkftKqW/4XZzc1MtWrRQ\nGRkZhu2PE8RYWloqnU5n1M69KlSooHQ6nbp8+XKO2zQn6xxZtmyZyb5NmzYpTdNUp06djLZnvS9H\njhwxqfPGG28oTdPU3LlzTfZduXJF2draKgcHB5WWlqaUyvtzwcnJSVWrVu2h7/3nn3+e7Yjmo/Dw\n8FBWVlbqzz//NNr+6quv5uq1NnbsWLP1sgtispOZmalKlCihOnToYLQ9K4h54YUXTOqkpaWpYsWK\nqWbNmhm2paenq5IlSyo7Ozt18eLFB75mRkaGcnZ2VuXKlTN7fl+/fl3pdDrVokWLHB3D4sWLH/ma\nzunvoWbNmg8cHWndunW2I6b3yxqlym5UL+sDH3OjPkI8jYoV9ONsQojHU758eTp16kRMTAy//PIL\nDRo0AGDTpk1cvnwZX19f7OzsjOocO3aMqVOnsnPnTi5fvmySktPc3BNN02jevPkj9S0xMZGpU6fy\nv//9jzNnznDnzh2j/X/88YfZek2bNjXZVqlSJQCj5+737t0LQOfOnR/al127dgH6eRBhYWEm+//8\n809An7Y0JxYtWsSiRYtyVPZRjRo1iqtXrxITE4NOV3SmLGqahqenp8n2F154AYDDhw+b7LOxsaFe\nvXom2w8ePAhA+/btTfa5uLhQr1499u/fz8mTJ6lTp06enwsDBgzg888/p06dOrz66qs8//zztG7d\n2iRzV48ePZgwYQIjR44kJiaGzp0706pVK+rXr/9I6Ypff/11goOD+frrrxk9ejSgP/fXrVtHtWrV\naNu2rVH5x73WHvWaTktLY968eSxfvpzjx49z8+ZNozk3j3JNFytWjLJlyxpd07/99hs3b96kadOm\nVKxY8YF9+f3330lMTKR69ep8/PHHZsvY2Nhw/PjxnBwar7/+Oq+//nqOygohCg8JYoQowoYMGUJM\nTAxRUVFMnz4dgKioKEA/gfdee/fupX379mRmZtKhQwd69epFiRIl0Ol0HDp0iLVr15KSkmL2dcqW\nLZvjPmVlvzp37hwtWrTA19cXR0dHihUrxvXr15k1a1a2r1OqVCmTbcWK6f9MZWRkGL0G8NCbHdDf\n5AFs2bKFLVu2mC2jaVq2E8bzy//93/+xdOlSpk2bhru7u9ky6hEm+JcsWZJr166RlJRE6dKlTfYn\nJSUZyuUGc+eIjY0NJUqUMLzWvVxcXMy2k5SUhKZplCtXzuz+8uXLA/+eA3l9LsyYMYMaNWqwePFi\npk6dypQpU9DpdHTo0IGpU6dSv359AKpUqcL+/fv56KOPiImJYc2aNYD+fRk1ahTBwcE5CkLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc106320>"
"<matplotlib.figure.Figure at 0x7ffb7e32b2b0>"
]
}
],
@@ -474,7 +474,7 @@
"\n",
"So the output of the sensor should be a wavering blue line drawn over a dotted red line. The dotted red line shows the actual position of the dog, and the blue line is the noise signal produced by the simulated RFID sensor. Please note that the red dotted line was manually plotted - we do not yet have a filter that recovers that information! \n",
"\n",
"If you are running this in an interactive IPython Notebook, I strongly urge you to run the script several times in a row. You can do this by putting the cursor in the cell containing the Python code and pressing Ctrl+Enter. Each time it runs you should see a different jagged blue line wavering over the top of the dotted red line.\n",
"If you are running this in an interactive IPython Notebook, I strongly urge you to run the script several times in a row. You can do this by putting the cursor in the cell containing the Python code and pressing CTRL+Enter. Each time it runs you should see a different jagged blue line wavering over the top of the dotted red line.\n",
"\n",
"I also urge you to adjust the noise setting to see the result of various values. However, since you may be reading this in a read only notebook, I will show several examples. The first plot shows the noise set to 100.0, and the second shows noise set to 0.5."
]
@@ -491,9 +491,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAzEAAAGxCAYAAABSuThxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYU9cbB/DvTSAEEJSpIDJcIO5BVVSgarEquDeCiL9q\n3ahl1bagVXGvatVWiziwrRPrQBxYFLV1VtwTKCAOlkJln98fl0RCAgRkie/nefJE7j33npNwiffN\nGS/HGGMghBBCCCGEkA+EoKYbQAghhBBCCCHlQUEMIYQQQggh5INCQQwhhBBCCCHkg0JBDCGEEEII\nIeSDQkEMIYQQQggh5INCQQwhhBBCCCHkg0JBDCEEABAQEACBQIA///yzpptCCPmAODg4QCCg2wlC\nSPWiTx1CCACA4zjpg7y/+Ph4LF68GCNHjkTz5s0hEAggEAjw4MGDUo97+/YtAgICYGlpCXV1dTRs\n2BCjR4/GvXv3Sq1r0qRJMDY2hlgshoWFBebMmYO0tLRytzs1NRVz5syBubk5xGIxGjdujEmTJiEh\nIaHc5yIfB/rcqHwV+RwoSX5+PtatW4d27dpBQ0MDenp6GDhwIC5evFgFLSek+nCU7JIQAgDJyclI\nTk5GkyZNoK6uXtPN+eAdOnQIw4YNg0AggIWFBZKTk5Geno67d++iZcuWCo/Jzs5G3759ERUVBRsb\nG/Tu3RtxcXHYu3cvRCIRzpw5g08++UTmmCdPnsDW1hYvXrzAkCFDYGVlhb/++gsRERGwtLREVFQU\ndHV1lWpzcnIyevTogQcPHqBPnz6wsbHB3bt3ERoaCkNDQ1y8eBEWFhbv/d6QuuXff//F27dvS7yu\nSflU5HOgJIwxjB49Gvv27YOVlRWcnZ2RnJyM3377DVlZWdi/fz8GDRpUxa+IkCrCCCGEVLr4+Hh2\n/vx59ubNG8YYY/b29ozjOHb//v0Sj1myZAnjOI6NGjVKZntoaCjjOI61bt2aFRQUyOxzdHRkHMex\nDRs2yGyfO3cu4ziOffnll0q3efLkyYzjOPbVV1/JbF+/fj3jOI59/vnnSp+LEFIxFfkcKElISAjj\nOI717NmTZWdnS7dfvnyZqampMUNDQ+lnFCEfGgpiCKlhFy9eZBzHMWdn5xLLdO7cmQkEAhYTE8MY\nYywnJ4f98MMPrH///szU1JSpqakxHR0d1qdPH3bkyBGF5zAzM2Mcx7Hs7Gzm7+/PmjdvzkQiEfP0\n9GSMMebv7884jmN//vmnzHEHDx5kLi4urEWLFkxTU5NpamqyTp06sbVr17L8/Hy5eiZMmMA4jmNn\nz55le/fuZTY2NkxDQ4Pp6uqyMWPGsISEBIXtS0lJYd988w1r06YN09TUZNra2qxNmzbsq6++Yqmp\nqTJl09LS2Lfffstat27NNDQ0mJaWFuvZsyfbu3dvyW90DSsriCkoKGCmpqYyv+ei7OzsGMdxLCIi\nQrrt0aNHjOM41rRpU7nyb968YZqamqxevXosMzOzzPa9efOGqaurMy0tLZaRkSHXNsn18+TJkzLP\nVZqgoCDGcRwLCAhg58+fZ71792ba2tpMW1ub9e/fn127dk3uGMm1uX37dnb06FHWq1cvpqWlxXR0\ndKRlkpKS2MyZM5mFhQVTU1Njenp6zMnJiUVGRpbYlvDwcObs7MwMDQ2ZmpoaMzExYQMHDmR//PGH\nXNkzZ84wZ2dnpq+vz0QiETMzM2PTpk1jSUlJcmUfP37MJk+ezJo3b87U1dWZjo4Oa9WqFfPw8GBx\ncXEyZYODg5mtrS0zMDBgYrGYmZiYsN69e7Off/65zPcyMDCQcRzHVq1apXB/cnIyE4lEMtdHQkIC\nW7BgAbO1tWUNGzZkIpGIGRsbs7Fjx7Lbt2/LnePp06eM4zjm4ODAEhIS2MSJE1mjRo2YUChkoaGh\njLF313ZR7/MZlZeXxxYvXsyaN2/O1NTUWJMmTZiPjw/LyclReNy9e/eYh4cHMzc3Z2pqaszAwIDZ\n2tqy1atXy5V9+PAhmzRpkrRNBgYGbOjQoQqvu5pQkc+B0vTq1Uv6eVycm5sb4ziOBQUFvWerCakZ\nFMQQUgu0atWKqaqqshcvXsjtu3XrFuM4jn366afSbc+ePWNCoZDZ2dmxL774gn399dfM3d2d6enp\nMY7j2JYtW+TOI7lBGDhwIDM2NmaTJk1iPj4+bPPmzYyxkoMYKysr1rp1a+bm5sb8/PzYtGnTmKWl\nJeM4jo0bN06uHkkQM2rUKCYWi9no0aOZt7e39D/fVq1ayXwjyBhjT548kbavc+fObN68eWzevHnM\n2dmZaWhosH/++UdaNj4+nrVo0YJxHMfs7e3Z3Llz2eTJk1njxo2lN8e1UVlBzMOHDxnHcczKykrh\nfskN67fffivd9vPPP5fa2yLppTl9+nSZ7Tt58mSpvS1TpkxhHMexbdu2lXmu0kiCmP79+zM1NTXm\n7OzM5s+fz0aOHMmEQiHT0NBgFy5ckDlGcm0OHDiQqaiosCFDhjBfX182ceJExhhjMTExzMTERPp3\nIvl70NDQYEKhkG3fvl2uHd999x3jOI5paWkxV1dXNn/+fObh4cGsra3Z0KFDZcouXbqUcRzH9PX1\n2YQJE5iPjw/7/PPPGcdxzMTEhMXHx0vLJiYmMl1dXaaqqsoGDRrEfHx82Jw5c9iwYcNYgwYNZH4X\nfn5+0iB0+vTpbP78+WzSpEmsc+fOzM7Orsz3MiEhgQmFQtauXTuF+zds2MA4jmMLFiyQbtuzZw/T\n0NBgTk5ObMaMGczX15cNGzaMiUQipqmpya5fvy5zDkkQ07ZtW2ZmZsbat2/PZs+ezWbOnMnOnTvH\nGOOvbYFAIHPc+3xGjRw5khkZGbFJkyaxOXPmsJYtWzKO46S/76KOHDnC1NXVmUAgYAMGDGBff/01\nmz59OrOzs2N6enoyZU+fPs3q1avHRCIRGzZsGPPx8WEuLi5MXV2dicViduLEiTLf86pWkc+Bkrx9\n+5YJhUJWr149hV847dmzh3Ecx9zc3N673YTUBJWaHs5GCAHc3d3h6+uL3bt3w9PTU2ZfcHCwtIyE\nrq4u4uLiYGxsLFP29evX6NGjB/z8/ODm5gaxWCxXV3x8PKKjo5WeJ3Hs2DG5eRCMMUycOBE7duzA\nrFmz0LVrV7njTpw4gStXrqB169bSbS4uLtizZw9CQ0MxcuRIme1xcXH4/vvvMX/+fLnXJBQKpT9P\nmDABT548wZ49ezB69Gjp9jdv3sDBwQELFy7E0KFD0a5duzJf26FDh3Djxo2y34RCHMfB399f6fLl\ncf/+fQAocV5B8+bNAQAPHz5U+pgWLVrg5MmTePjwIXr37l3p9b+PsLAwbNy4EVOnTpVuO3DgAEaM\nGAEPDw/cvXtX4THHjh2Do6OjzPYvv/wSCQkJWLBgAb799lvp9nnz5qFr16748ssv0bdvXzRu3BgA\nEB4eju+//x7m5uY4d+6cdLtE0UUMIiMj4efnh+7du+P48ePQ1taW7tu1axfc3Nwwe/Zs7Nu3DwCw\nb98+pKamYu3atZg1a5bMeXNzc5GTkyP9ecuWLWjcuDFu3bolNw8tJSWl9DcQgLGxMRwdHREWFoYb\nN26gQ4cOMvuDg4MhEAgwYcIE6bY+ffrgxYsX0NTUlCl78+ZN6WfH8ePH5eq6desW3Nzc8Msvvyi1\nEtn7fEY9ffoUd+7cQYMGDQAAixYtQvv27bFjxw4EBgaiYcOGAIBXr15h3LhxyM/Px+nTp+Hg4CBz\nnqK/x/T0dIwaNQpisRiXL1+GlZWVdN+9e/fwySefYOLEiXj69ClEIlGZr2/t2rXlWjjDwsJC5vdQ\nksr8O3z8+DEKCgrQtGlThb8zybnKWmyEkFqrpqMoQgj/7a2Kigrr0KGDzPa8vDxmZGTEtLS0lBoS\nxBhjq1atYhzHyQ2jkXzLefjwYYXHldQTU5KrV68yjuPY999/L7Nd0hOj6JvCiIgIxnEc8/Lykm67\ncuUK4ziOtW/fvsw6b968yTiOY8OHD1e4//Dhw4zjOObt7a3Ua3B3d2ccxyn9KP5tc3mU1ROze/du\nxnEcc3V1Vbg/PDxcrqfkiy++KLV35Ouvv2Ycx7GlS5eW2b7FixeX+g3vTz/9VO45NopIemJatmyp\ncL+trS3jOI5FRUVJt0muzWHDhsmVj4+PZxzHMVNTU5abmyu3f968eYzjOBYYGCjd5uTkxDiOY/v2\n7SuzvcOGDWMcx7Ho6GiF+zt27MhUVFSkQ/Ak84cU9TQUp6enx5o2bSrXM1kev/32G+M4js2ePVtm\n++3bt+V6cMvi7OzMxGIxy8vLk26T9MSIxWL28uVLhccp6okpTVmfUYp6DiXXwNGjR6XbVq5cyTiO\nYzNmzCizTsnv5YcfflC4f86cOYzjOHbs2DGlXoO5uXm5PjuU/T1U5HOgJFFRUYzjONarVy+F+x88\neFBqrw8htR31xBBSCxgZGeGzzz5DWFgY/vnnH7Rv3x4A/41xUlIS3N3doaGhIXPM7du3sWLFCkRG\nRiIpKQlZWVky+xMTE+Xq4ThO6VVtJJKTk7FixQocO3YMT548wX///Sezv6Sld7t06SK3zcTEBAC/\njK/EpUuXAEDu23VFoqKiAPDfqgYEBMjtf/nyJQAo/BZfkaCgIAQFBSlVllSuXr16KdxuZ2eHixcv\n4saNG7C1tZXZp+javXbtGgCgR48eUFGR/y+tb9++WL16Na5fvy7ddunSJXAch/79+5fZzqioKKio\nqGD//v3S3paisrOzkZ+fj/v376NTp04YPHgw5s+fjxkzZiAsLAyOjo7o3r072rVrJ7cMsYuLC374\n4Qe0atUKI0eORM+ePWFra6t0LykADBkyBA0aNEBISAhWrlwpfQ8U9eBKHD16FJs3b8aVK1Line truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc3e2518>"
"<matplotlib.figure.Figure at 0x7ffb7e14fe48>"
]
}
],
@@ -511,9 +511,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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\nlmnTpk2K8uT35dChQ6m2efrpp41lWWbBggWp6s6dO2fc3d2Np6eniYuLM8Zkfl8oVKiQKVu2bKqL\n6pu99tpr6Y5o3gk/Pz/j4uJiLly4kKL8ySefvKvn2ogRI9LcLr0kJj2JiYkmb968plWrVinKk5OY\nJk2apNomLi7O5MqVy9SrV89eFh8fb/Lly2c8PDzMmTNnbnnMhIQE4+XlZXx8fExCQkKq+sjISGOz\n2Uz9+vUz9BqWLVt2x+d0Rj+HChUq3HJ0pGHDhmkmm2lJHqVKb1Qv+QuftEZ9RHKiXI6+nU1E/pmi\nRYvSpk0bwsLC+OGHH6hRowYAW7ZsITw8nL59++Lh4ZFim8OHDzNz5kx27NhBeHh4qik503r2xLIs\nHnzwwTuKLSIigpkzZ/LZZ59x4sQJ/v777xT1f/zxR5rb1a1bN1VZiRIlAFLcd//dd98B0LZt29vG\nsnPnTiDpOYiJEyemqr9w4QKQNG1pRixdujTLPZeSFj8/P/z8/Oy/e3h40K5dOxo2bEjNmjXZvXs3\n69evT3PmsjtlWRbNmjVLVd6kSRMADh48mKrOzc2NatWqpSrfv38/QJozp3l7e1OtWjX27NnD8ePH\nqVKlSqb3hZ49e/Laa69RpUoVnnzySRo3bkzDhg1TzdzVoUMHXnzxRZ5//nnCwsJo27YtDRo0oHr1\n6nc0XXGfPn0IDg5m1apVDB06FEjq+xs2bKBs2bI0bdo0Rft/eq7d6TkdFxfHokWLeP/99zly5AhX\nr15N8czNnZzTuXLlokiRIinO6aNHj3L16lXq1q1L8eLFbxnLL7/8QkREBOXKlWPSpElptnFzc+PI\nkSMZeWn06dOHPn36ZKitiGQdSmJEsrF+/foRFhbG8uXLmTNnDgDLly8Hkh7gvdF3331Hy5YtSUxM\npFWrVnTs2JG8efNis9k4cOAA69evJyYmJs3jFClSJMMxXb58mXr16nHq1Cnq169P3759KViwILly\n5SIyMpL58+ene5z8+fOnKsuVK+nPVEJCQopjALe92IGkizyArVu3snXr1jTbWJaV7gPj90ryg/xX\nrlxJsz65PK336E54enrSo0cPpkyZws6dO+9KEgNp9xE3Nzfy5s2b5mvy9vZOcz9XrlzBsix8fHzS\nrC9atCjwvz6Q2X1h7ty5lC9fnmXLljFz5kxmzJiBzWajVatWzJw5k+rVqwNQqlQp9uzZw8Line truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc070898>"
"<matplotlib.figure.Figure at 0x7ffb7e221550>"
]
}
],
@@ -544,7 +544,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAzEAAAGxCAYAAABSuThxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlclNX+wPHPM4hssrkiLoh75o57KqSGWZKW5BKpiL/o\nhqmoAY63FLsqoLimqTdNceFWWi5lrqm5lbnmUu5irpigeEEBkfP7Y2Ku4wyKKYv4fb9evLpzznnO\n852Z5/E+33mec46mlFIIIYQQQgghxFNCV9gBCCGEEEIIIcSjkCRGCCGEEEII8VSRJEYIIYQQQgjx\nVJEkRgghhBBCCPFUkSRGCCGEEEII8VSRJEYIIYQQQgjxVJEkRgiR7yIjI9HpdPz444+FHYoQz6yF\nCxei0+mIi4sr7FCEEOKxSRIjhMh3mqYZ/8STs2jRIlq2bImjoyMuLi68+OKLrFmzprDDEkWUnIf5\nY82aNbz44os4Ozvj6OhIq1atWLRo0SP1kZCQgE6ny/WvT58++RS9EE8vTRa7FELkt6SkJJKSkqhS\npQp2dnaFHU6xEBYWxuTJk6lSpQr+/v5kZGTwxRdfkJyczCeffMKgQYMKO0RRxNy8eZMrV67g5uaG\nk5NTYYdTLMyaNYvBgwdTtmxZevXqRcmSJVm2bBkXLlxgxIgRTJo0KU/9JCQkUL16dapVq0ZgYKBZ\nff369XnjjTeecPRCPN0kiRFCiKfMrl27aNu2LTVr1mTPnj04OzsDcO7cOby8vEhLS+PYsWN4eHgU\ncqRCFF8JCQnUrVsXR0dH9u3bR9WqVQG4ceMGzZs35/Tp0+zatYtWrVrlqa/q1avj4+PD5s2b8zt0\nIYoFeZxMiGLs559/RqfT8dprr+XaplmzZlhZWXHu3DkA7ty5w8yZM3nllVfw8PDA1taW0qVL06lT\np1wfVapWrRo6nY7MzEwiIyOpVasWNjY2DBs2DPjfmJht27aZbLdy5UrefvttateuTalSpShVqhRe\nXl5Mnz6d7Oxss/0EBgYax9YsX76cFi1a4ODgQJkyZejTpw+XLl2yGN/169f56KOPaNCgAaVKlcLZ\n2ZkGDRoQFhbGjRs3TNqmpKQwevRo6tevj4ODA05OTrRr147ly5fn/kEXsDlz5gDwz3/+05jAAHh4\neDBo0CAyMjJYsGDBY+9Hp9Ph6elJSkoKISEhuLu7Y2dnR/369fn000/N2uc8EvPiiy9y6dIlgoKC\nqFixIiVKlGDVqlUAKKWYN28erVq1wtHREQcHB5o2bcqUKVPIysqyGMfFixcJDQ2ldu3a2NvbU7p0\naZo1a8aYMWPMtrly5QqhoaHUqlULOzs7SpcuTefOnS1eGGZmZvLJJ5/g5eVF2bJlsbe3x8PDg1de\neYUVK1aYtD106BBvvfUWnp6e2NnZUa5cORo1asSgQYO4efPmAz/HixcvYmVlRcOGDXNt4+/vb3aO\nLFy4kB49elC9enXs7e1xdnambdu2LF682GIfPj4+6HQ6zp49y/Tp06lfvz52dna8/vrrxv4sjYnZ\nsmULwcHB1KtXD2dnZ+zt7alfvz6RkZGkp6eb7SfnfI6Li2PLli34+Pjg5OSEs7MzXbt25dixYxbj\nu337NpMmTaJ58+Y4OjpSqlQp6taty6BBgzh//rxJ2/T0dGJjY/Hy8jL+29C8eXPmzp2b62dY0D7/\n/HMyMzN5//33jQkMgIuLC6NGjQL+d64KIfKBEkIUa88995yytrZWV69eNas7cuSI0jRNvfjii8ay\ny5cvKysrK9W+fXv1zjvvqFGjRqnAwEBVpkwZpWmamjt3rlk/Hh4eStM09eqrryp3d3c1cOBAFRER\noebMmaOUUmrMmDFK0zT1448/mmxXt25d9fzzz6t+/fopvV6vQkJCVJ06dZSmaeqtt94y20///v2V\npmmqZ8+eytbWVvXq1UuFh4er9u3bK03T1HPPPacyMjJMtjlz5owxPi8vLzVixAg1YsQI5efnp+zt\n7dWvv/5qbHvhwgVVq1YtpWma8vb2VsOHD1fBwcGqUqVKStM0FRkZ+Wgffj6pVKmS0ul06sqVK2Z1\nP/30k9I0TbVv3/6x96NpmnJ3d1fNmjVTderUUWFhYWrw4MHKzc1NaZqmhg4datL+7NmzStM01aBB\nA+Xh4aEaNWqkhg4dqgYPHqy2b9+ulFKqb9++StM0VaVKFTV06FD1wQcfqNq1aytN01Tnzp1VVlaW\nSZ979uwxHnve3t4qIiJCDR06VPn6+qqSJUuqlJQUY9tDhw6pChUqKJ1Op7p06aLCwsLUgAEDlKur\nq9LpdOrzzz836btPnz5K0zRVv359NXToUDVq1CjVv39/9dxzz6m+ffsa2/3666/K1tZWOTg4qF69\neqlRo0apIUOGqK5duyoHBwd1+vTph36WL7/8stI0Te3fv9+sLikpSZUsWVLVqFHDpNzOzk41b95c\nDRgwQI0aNUoFBwerypUrK03T1KhRo8z68fb2Np6Hrq6uqm/fvmrkyJFq/PjxSimlFixYoDRNU3Fx\ncWaxeXp6qoCAABUeHq6GDBmimjZtajyO7v9Ocs5nf39/ZW1trbp166bCw8PVq6++qjRNU+XLl1fX\nrl0z2SY5OVk1btxYaZqm6tatq4YOHaoiIiKUv7+/cnFxUatWrTK2vXnzpmrRooXxnB08eLAaPHiw\n8dwMDAx86OddEF544QWlaZr6+eefzeouX76sNE1TVatWzVNfOedO48aN1bx589T48ePVrFmz1L59\n+5502EIUG5LECFHMxcTEKE3T1NSpU83qwsLCzC5qMjIy1MWLF83apqSkqPr166vSpUur27dvm9Tl\nJAmNGjVSSUlJZtvmlsScOXPGrG12drYxWbn/4iCn3NnZWR05csSk7q233lKapqmvvvrKpLx169ZK\n0zQ1btw4i+8pNTXV+Lpjx47KyspKffHFFybtbt68qZo2bap0Op1J0vMgK1asUGPGjMnzX14TpNTU\nVKVpmnJycrJY/+effypN05Sbm1ue+nsQTdOUpmmqXbt2KjMz01h+7do15enpqTRNU7t27TKW51yI\naZqm+vfvr+7evWvS3xdffGG8UPvvf/9rLM/MzFQdO3ZUmqap2NhYY3lGRoaqVq2a0ul0avHixWbx\nJSYmGi+ws7KyVO3atZWdnZ3atm2bSbvLly+rKlWqKHt7e2Myf+PGDaVpmmrevLlZnDnvMcfw4cOV\npmkmF9o5UlNTzRJnS7788kuLiZ9SSs2aNUtpmqbGjh1rUm7p/Mj5rEqUKKEuXLhgUpeTxFSuXFmd\nO3fObNvckhhL+1FKqY8++khpmmZ2PuScz9bW1mrz5s0mdXq9XmmapiZOnGhSnpMwBgcHm+3n9u3b\nKjk52fh64MCBFvvIyMgwJkrffvutxZjvt2XLlkc6D8eMGaNu3LiRp77Lli2rdDqdSez3cnBwUDqd\nzuzfS0vuPXfu/3vhhRfU2bNn8xSTEM8SSWKEKOYuXbqkSpQooRo3bmxSnpWVpSpWrKgcHR1VWlpa\nnvqaPHmy0jTN7CIxJ4lZvXq1xe1yS2Jys2/fPqVpmvrXv/5lUp6TxHz00Udm22zZskVpmqbCwsKM\nZXv37jUmVw9z6NAhpWma6tGjh8X61atXK03TVHh4eJ7eQ2BgYK4XJZb+dDpdnvq9ePGi8U6GJZmZ\nmUrTNGVra5un/h4kJ64dO3aY1f373/9Wmqapd955x1iWcyFma2ur/vzzT7NtOnXqpDRNU2vXrjWr\ny/n869SpYyxbvny50jRNde3a9aGx5nw/I0aMsFg/Y8YMpWma+vTTT5VShgQ25wLxYXKSmPXr1z+0\nbW4yMjKUq6urKleunLpz545JXfPmzZWVlZVKSEjIU19ff/210jRNLVq0yKQ8J4mZMWOGxe1yS2Jy\nk5SUpDRNUwMHDjQpzzmf771blSPnGHjzzTeNZYmJiUqn06mKFSs+9N+apKQkVaJECeXl5WWxPuc4\n6dmzZ57eQ2Rk5COfh5YSQEusra2VTqezmAQrpZS7u3uud0zvd/XqVTVmzBh14MABlZKSolJSUtS2\nbdtUhw4dlKZpqnr16iY/uAghlCpR2I+zCSHyV8WKFXnppZdYt24dv/76K40aNQJgw4YNXLlyhcDA\nQOzt7U22OXr0KJMmTWLbtm1cuXLF7Ll4S2NPNE2jRYsWjxRbUlISkyZN4vvvv+fMmTPcunXLpP7i\nxYsWt2vWrJlZWeXKlQHD+JccP//8MwC+vr4PjWXnzp2AYUxMZGSkWf2ff/4JwO+///7QvgAWLFjw\nRMalFLYSJUrQpk0bs3Jvb28ADh48aFZXrVo1ypYta1a+f/9+NE3jxRdfNKtr0KAB5cqV4+TJk9y6\ndQt7e3vj99elS5eHxpnz/Z07d87i93fy5Engf9+fk5MTfn5+fPvttzRs2JA33niDtm3b0qpVK0qV\nKmWybe/evZkxYwbdu3enR48edOjQgdatW1O3bt2HxpWjZMmS9O7dmzlz5rBmzRq6detmjGfv3r34\n+PiYTcTwxx9/EBMTww8//MD58+e5ffu2SX1uY8Ae9TxMS0tj+vTprFixghMnTpCamoq6Z86fxz0P\n9+zZg1KKtm3bmv1bc79ffvmFu3fvommaxe/xzp07QN7PwzFjxjBmzJg8tS1M5cqVM3u/7dq1Y8OG\nDbRt25bdu3fz2WefERoaWjgBClEESRIjxDNgwIABrFu3jri4OKZMmQJgHNx7/3SeP//8Mx06dCA7\nO5uOHTvSvXt3nJyc0Ol0HDhwgFWrVpGRkWFxPxUqVMhzTDkz+CQkJNCyZUsCAwMpXbo0JUqU4Pr1\n60yfPj3X/bi4uJiVlShh+Ofs7t27JvsAqFSp0kPjSUpKAuCHH37ghx9+sNhG0zTS0tIe2lLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fbfe9588>"
"<matplotlib.figure.Figure at 0x7ffb7e215f98>"
]
}
],
@@ -573,7 +573,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fbfaa0b8>"
"<matplotlib.figure.Figure at 0x7ffb7e2152b0>"
]
}
],
@@ -609,7 +609,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fbecd860>"
"<matplotlib.figure.Figure at 0x7ffb7c7e0908>"
]
}
],
@@ -649,7 +649,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc0132e8>"
"<matplotlib.figure.Figure at 0x7ffb7e376dd8>"
]
}
],
@@ -680,7 +680,7 @@
" \n",
"The measurement term might not be obvious, but recall that measurement in this case was always 1 or 0, and so it was left out for convenience. \n",
" \n",
"If we are implementing this with gaussians, we might expect it to be implemented as:\n",
"If we are implementing this with Gaussians, we might expect it to be implemented as:\n",
"\n",
" new_gaussian = measurement * old_gaussian\n",
" \n",
@@ -691,7 +691,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"It is not particularly difficult to perform the algebra to derive the equation for multiplying two gaussians, but I will just present the result:\n",
"It is not particularly difficult to perform the algebra to derive the equation for multiplying two Gaussians, but I will just present the result:\n",
"$$\n",
"N(\\mu_1, \\sigma_1^2)*N(\\mu_2, \\sigma_2^2) = N(\\frac{\\sigma_1^2 \\mu_2 + \\sigma_2^2 \\mu_1}{\\sigma_1^2 + \\sigma_2^2},\\frac{1}{\\frac{1}{\\sigma_1^2} + \\frac{1}{\\sigma_2^2}}) $$ \n",
"\n",
@@ -752,7 +752,7 @@
"output_type": "display_data",
"png": "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\nIiKi/ygUChw6dAhffPGFqjABgGLFiqF///44f/48nj17pooPGjToo4XJv//+i6tXr6J3796qwgQA\nGjdujGrVquU4twEDBkjaXl5eUCgUePDggSr2vjBRKpWIjY1FdHQ0GjZsCFEUcfHixRw/S1tYnBAR\nERER/ef58+eIj4+Hm5tbhmMVK1YEANy/f18V+7CAycr74qF8+fIZjuXk+vdKliwpaVtbWwMAXr58\nqYpdvXoVbdu2hYWFBaytrWFvb4+mTZsCQLbDznQFh3URERERkdrl97wQbfpwPsiHQ6jULasVvN4v\nCRwbG4tmzZrBwsICs2bNQvny5WFqaorHjx+jf//+UCqVGss1t1icEBERERH9x87ODkWKFEF4eHiG\nY+9jpUuXxrVr13J8z1KlSgEAbt++neHYnTt3cplpRkePHkVMTAwCAgIkk/aDgoLy7RnqxmFdRERE\nRET/kcvlaN26Nf744w9ERESo4i9evMDGjRtRp04d2NnZfdI9nZycULVqVWzevBlv375VxY8dO4ar\nV6/ma+4AJD0kSqUSixYtyrdnqBt7ToiIiIiIPjBjxgwcPnwYXl5eGDZsmGop4devX2PhwoW5uues\nWbPQvn17NGzYEP3798erV6/w888/o2rVqqrNG/PKy8sLxYoVQ79+/TBixAgYGBhg165d+XZ/TWDP\nCRERERHRBypWrIgTJ06gVq1amDt3LqZMmQInJyccOXIEXl5eqvOy2wE+/bF27dph27ZtSE5Ohp+f\nHwICArBu3Tq4urrCxMTkozll9awP49bW1jhw4ABcXFzw008/Yc6cOahRowZ+++23TK/L7Q726iSI\n72fQ6KAPVxSwsrLSYiaUE6GhoQAADw8PLWdCH8N3pV/4vvQH35X+4LvKu4SEhBx9qabs1axZEw4O\nDjh06JC2U8mx7N59Xr+/s+eEiIiIiEjNUlJSkJKSIokFBwfj8uXLqqV+iXNOiIiIiIjU7vHjx2jZ\nsiX69OkDR0dHhIeHY9WqVXB0dISvr6+209MZLE6IiIiIiNTMxsYGHh4eWLNmDZ4/fw5zc3N88cUX\nmDNnjmozRWJxQkRERESkdpaWlti+fbu209B5nHNCREREREQ6gcUJERERERHpBBYnRERERESkE1ic\nEBERERGRTmBxQkREREREOoHFCRERERER6QQWJ0REREREpBNYnBARERERkU5gcUJEREREpGH9+/dH\nmTJlcnRucHAwZDIZQkJCcvWs0qVLw8fHJ1fXahqLEyIiIiIiLRAEQdKeNWsW9u7dm6NzP/U5eble\nk1icEBERERFpgSiKknZWxUmTJk0QHx+PRo0aaSo1rTHQdgJERERERJTaw5G+YHkfNzIy0kJGmsee\nEyIiIiKi/0yZMgUymQzh4eHo3bs3ihYtCjs7O0yaNAkA8OjRI7Rv3x5WVlYoXrw4FixYoLp2w4YN\nkMlkePjwoeSeOZkzIpPJEBcXh40bN0Imk0Emk6FZs2ZZXt+/f3+Ympri4cOH8Pb2hoWFBYoXLw4/\nPz8oFIosn/P69WsUKVIEo0aNynAsJiYGRkZG8PPzy9lvlhqw54SIiIiI1E7WMGOPQH5Rnsz/+RQ9\nevRApUqVMHfuXBw4cACzZ8+GlZUV1qxZg5YtW2LevHnYvHkzxo8fD3d3d1UhkVubNm3CwIEDUa9e\nPQwePBgA4ODgkO01SqUSrVu3Rq1atTBv3jwcPXoUc+fORWxsLFasWJHpNZaWlujYsSP8/f2xaNEi\nyOVy1TF/f3+kpKSgb9++efosecGeEyIiIiKidDw8PLB161YMGTIEe/bsQYkSJTBx4kT4+PhgxYoV\nGDJkCPbv3w9TU1OsW7cuz8/r1asXDAwMULZsWfTs2RM9e/ZEixYtsr0mOTkZTZo0wZYtWzB06FDs\n2LEDffr0werVq3H79u0sr+vbty+ePXuGw4cPS+KbN29G7dq1UalSpTx/ntxicUJERERElM7AgQNV\n/1smk8Hd3R2CIGDAgAGquJWVFdzc3HDv3j1tpAgAGDlyZIa2KIoIDAzM8prPPvsMjo6O2LRpkyoW\nERGBf/75B3369FFbrjnB4oSIiIiIKJ2SJUtK2lZWVjA0NIS9vb0kbmlpiZcvX2oyNRVBEFC+fHlJ\nrEKFCgCABw8eZHmdTCZD7969sW/fPsTFxQFI7TWRy+Xo0aOH+hLOAc45ISIiIiK1U8e8EHX6cC7G\ne1ntFfJ+ha2sjmc3QV1b+vbti/nz52P37t3o27cvtmzZglatWmUovjSNPSdERERERPnA2toaAPDq\n1StJPLtejA996kaJoihmmFty69YtAKm7wmenSpUqqF27NjZt2oSzZ8/i9u3bWh/SBbA4ISIiIiLK\nkY8VD+XKlQMAHDt2TBVTKBT45ZdfcnQ/MzMzvHjx4pNyWrp0qaS9bNkyyGQytG3b9qPX9uLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f26f1160>"
"<matplotlib.figure.Figure at 0x7ffb6d22c978>"
]
}
],
@@ -768,7 +768,7 @@
"\n",
"\"Measure twice, cut once\" is a useful saying and practice due to this fact! The Gaussian is just a mathematical model of this physical fact, so we should expect the math to follow our physical process. \n",
"\n",
"Now let's multiply two gaussians (or equivalently, two measurements) that are partially separated. In other words, their means will be different, but their variances will be the same. What do you think the result will be? Think about it, and then look at the graph."
"Now let's multiply two Gaussians (or equivalently, two measurements) that are partially separated. In other words, their means will be different, but their variances will be the same. What do you think the result will be? Think about it, and then look at the graph."
]
},
{
@@ -800,7 +800,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f014fac8>"
"<matplotlib.figure.Figure at 0x7ffb6d232780>"
]
}
],
@@ -850,7 +850,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAycAAAGNCAYAAAALsQ4IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xtc1FX+P/DXzMAwIwKi3EEFFRDUVRfUvKRZRqn1a+2i\nWermaqnfait3s7C+u9m6amVll69aWepq7lpmaWUqlmKmlXhLRUUFFJUZwQsgOAwM8/uDnYHPZwYY\nmMtnLq/n49Fj95z5fM45H0dk3nPO+xyZ0Wg0goiIiIiISGJyqQdAREREREQEMDghIiIiIiI3weCE\niIiIiIjcAoMTIiIiIiJyCwxOiIiIiIjILTA4ISIiIiIit8DghIiIiIiI3IJNwcnSpUuRkJAAtVqN\n9PR07Nmzp8lrc3NzMXLkSERFRUGtVqN79+546aWXUFNTI7guOzsbaWlp5ms++OAD+56EiIiIiIg8\nWovByfr16/Hss8/i5ZdfxuHDhzFkyBCMHj0aRUVFVq8PCAjA1KlTkZWVhby8PCxZsgQff/wx5s6d\na76moKAAY8aMwbBhw3D48GFkZmbi6aefxsaNGx33ZERERERE5FFkLZ0QP2jQIPTr108ws5GUlIQH\nH3wQCxYssKmT2bNn4+eff8bevXsBAC+88AK++uornDp1ynzN448/juPHj5uvISIiIiIi39LszIle\nr8fBgweRkZEhqM/IyLA5iDhz5gy2bdsmaGPfvn1W28zJyYHBYLB17ERERERE5EX8mnuxtLQUBoMB\nkZGRgvqIiAhoNJpmGx4yZAgOHTqE6upqPPbYY3jllVfMr2m1Wos2IyMjUVtbi9LSUvNrZWVlrXkW\nIiIiIiJyEyEhIa2+x2m7dX322Wc4dOgQ1q1bh6ysLMyZM8dZXRERERERkRdoduYkLCwMCoUCWq1W\nUK/VahEdHd1sw3FxcQCAnj17wmAw4E9/+hMWLlwIhUKBqKgoi5kXrVYLPz8/hIWFteU5iIiIiIjI\nwzUbnCiVSqSlpWH79u144IEHzPVZWVl46KGHbO7EYDCgrq4OdXV1UCgUGDx4ML788kvBNVlZWRgw\nYAAUCoXVNtoyLUSeKScnBwCQnp4u8UjIVfie+x6+576J77vv4Xvue+xNy2g2OAHqd9qaPHkyBg4c\niCFDhmD58uXQaDSYOXMmACAzMxP79+/Hjh07AABr1qyBWq1G7969oVQqkZOTg7lz52LChAnw9/cH\nAMycORPvv/8+nnvuOTzxxBP46aefsHr1avznP/+x62GIiIiIiMhztRicjB8/HleuXMH8+fNRXFyM\nPn36YMuWLejcuTMAQKPRID8/33y9v78/Fi5ciNOnT8NoNKJr16546qmn8Nxzz5mviY+Px5YtW/Dc\nc89h2bJliI2NxXvvvYdx48Y54RGJiIiIiMgTtHjOiZQaTwtxWZfv4BSw7+F77nv4nvsmvu++h++5\n77H387vTdusiIiIiIiJqDQYnRERERETkFhicEBERERGRW2gxIZ6IiIiIPF9dXR30er1L++zatSsA\nQKfTubRfcg6ZTAalUgmZTOa0PhicEBEREXm5uro6VFdXQ6VSOfWDpZhKpXJZX+R8BoMBOp0OAQEB\nkMudswCLy7qIiIiIvJxer3d5YELeR6FQQKVSOXUGjsEJERERkQ9gYEKO4Oy/RwxOiIiIiIjILTA4\nISIiIiIit8DghIiIiIiI3AKDEyIiIiIicgsMToiIiIiIfNDy5csxYcIEJCQkQC6XY/To0VIPieec\nEBERERH5otdeew3l5eUYMGAArly54hY7ujE4ISIiIiLyIJWVlQgMDLS7nd27d6Nz584AgPj4eLvb\ncwQu6yIiIiIij/XKK69ALpfj5MmTmDRpEjp06IDw8HC89NJLAICioiLcd999CAkJQVRUFBYvXmzR\nRnV1NebNm4fExESoVCrExcVh9uzZuHnzpuC6VatWYdSoUYiOjoZKpUJSUhIWLVoEo9EouO7MmTMY\nP348YmJioFKpEBsbiwcffBAajQYAUFhYCLlcjtWrV1uMRS6XY968eRbPd/z4cUyePBkdO3ZEnz59\nzK9v374dI0aMQFBQEIKCgjB69GgcOXLEpj87U2DiTjhzQkREREQCf37nD05r+91nvnJKuxMnTkRK\nSgpee+01fPvtt1i4cCFCQkKwYsUKjBo1Cq+//jrWrl2LOXPmIC0tDSNHjgQAGI1GjBs3Drt378YT\nTzyB1NRU5ObmYunSpTh+/Di2bdtm7mPp0qVITU3FPffcA5VKhR07dmDu3LkoKyvDwoULAQA1NTW4\n6667UF1djaeeegrR0dG4dOkStm3bhuLiYkRFRZnba2oZlbX6CRMmoFu3bliwYIH5hPZ169Zh8uTJ\nyMjIwKJFi6DT6fDhhx/i1ltvxf79+5GcnOywP19XYXBCRERERB4vPT0dH330EQDg8ccfR3x8PF58\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f268c748>"
"<matplotlib.figure.Figure at 0x7ffb6d160c50>"
]
}
],
@@ -1018,7 +1018,7 @@
"source": [
"That is a beautiful result, but it is not yet a filter. We assumed that the dog was sitting still, an extremely dubious assumption. Certainly it is a useless one - who would need to write a filter to track non-moving objects? The histogram used a loop of sense and update functions, and we must do the same to accommodate movement.\n",
"\n",
"How how do we perform the predict function with gaussians? Recall the histogram method:\n",
"How how do we perform the predict function with Gaussians? Recall the histogram method:\n",
"\n",
" def predict(pos, move, p_correct, p_under, p_over):\n",
" n = len(pos)\n",
@@ -1031,15 +1031,15 @@
" return result\n",
" \n",
" \n",
"In a nutshell, we shift the probability vector by the amount we believe the animal moved, and adjust the probability. How do we do that with gaussians?\n",
"In a nutshell, we shift the probability vector by the amount we believe the animal moved, and adjust the probability. How do we do that with Gaussians?\n",
"\n",
"It turns out that we just add gaussians. Think of the case without gaussians. I think my dog is at 7.3m, and he moves 2.6m to right, where is he now? Obviously, $7.3+2.6=9.9$. He is at 9.9m. Abstractly, the algorithm is `new_pos = old_pos + dist_moved`. It does not matter if we use floating point numbers or gaussians for these values, the algorithm must be the same. \n",
"It turns out that we just add Gaussians. Think of the case without Gaussians. I think my dog is at 7.3m, and he moves 2.6m to right, where is he now? Obviously, $7.3+2.6=9.9$. He is at 9.9m. Abstractly, the algorithm is `new_pos = old_pos + dist_moved`. It does not matter if we use floating point numbers or gaussians for these values, the algorithm must be the same. \n",
"\n",
"How is addition for gaussians performed? It turns out to be very simple:\n",
"How is addition for Gaussians performed? It turns out to be very simple:\n",
"$$ N({\\mu}_1, {{\\sigma}_1}^2)+N({\\mu}_2, {{\\sigma}_2}^2) = N({\\mu}_1 + {\\mu}_2, {{\\sigma}_1}^2 + {{\\sigma}_2}^2)$$\n",
"\n",
"All we do is add the means and the variance separately! Does that make sense? Think of the physical representation of this abstract equation.\n",
"${\\mu}_1$ is the old position, and ${\\mu}_2$ is the distance moved. Surely it makes sense that our new position is ${\\mu}_1 + {\\mu}_2$. What about the variance? It is perhaps harder to form an intuition about this. However, recall that with the `update()` function for the histogram filter we always lost information - our confidence after the update was lower than our confidence before the update. Perhaps this makes sense - we don't really know where the dog is moving, so perhaps the confidence should get smaller (variance gets larger). I assure you that the equation for gaussian addition is correct, and derived by basic algebra. Therefore it is reasonable to expect that if we are using gaussians to model physical events, the results must correctly describe those events.\n",
"${\\mu}_1$ is the old position, and ${\\mu}_2$ is the distance moved. Surely it makes sense that our new position is ${\\mu}_1 + {\\mu}_2$. What about the variance? It is perhaps harder to form an intuition about this. However, recall that with the `update()` function for the histogram filter we always lost information - our confidence after the update was lower than our confidence before the update. Perhaps this makes sense - we don't really know where the dog is moving, so perhaps the confidence should get smaller (variance gets larger). I assure you that the equation for Gaussian addition is correct, and derived by basic algebra. Therefore it is reasonable to expect that if we are using Gaussians to model physical events, the results must correctly describe those events.\n",
"\n",
"I recognize the amount of hand waving in that argument. Now is a good time to either work through the algebra to convince yourself of the mathematical correctness of the algorithm, or to work through some examples and see that it behaves reasonably. This book will do the latter.\n",
"\n",
@@ -1124,7 +1124,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f26e4940>"
"<matplotlib.figure.Figure at 0x7ffb6d160a20>"
]
}
],
@@ -1184,7 +1184,7 @@
"\n",
"Wait, why `predict()` before `update()`? It turns out the order does not matter once, but the first call to `,DogSensor.sense()` assumes that the dog has already moved, so we start with the update step. In practice you will order these calls based on the details of your sensor, and you will very typically do the `sense()` first.\n",
"\n",
"So we call the update function with the gaussian representing our current belief about our position, the another gaussian representing our belief as to where the dog is moving, and then print the output. Your output will differ, but when writing this I get this as output:\n",
"So we call the update function with the Gaussian representing our current belief about our position, the another Gaussian representing our belief as to where the dog is moving, and then print the output. Your output will differ, but when writing this I get this as output:\n",
"\n",
" PREDICT: 1.000 502.000\n",
"\n",
@@ -1264,7 +1264,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f2739160>"
"<matplotlib.figure.Figure at 0x7ffb6da40f28>"
]
},
{
@@ -1272,7 +1272,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc020d68>"
"<matplotlib.figure.Figure at 0x7ffb7e1a91d0>"
]
},
{
@@ -1359,7 +1359,7 @@
" self.measurement_variance = measurement_variance\n",
" self.movement_variance = movement_variance\n",
"\n",
"That works, but I am going to use different naming. The Kalman filter literature has settled on one letter notations for each of these concepts, and so you might as well start getting exposed to it now. At first it seems impossiblely terse, but as you become familiar with the nomenclature you'll see that the math formulas in the textbooks will have an exact one-to-one correspondance with the code. Unfortunately there is not a lot of meaning behind the names chosen; you will just have to memorize them. If you do not make this effort you will never be able to read the Kalman filter literature.\n",
"That works, but I am going to use different naming. The Kalman filter literature has settled on one letter notations for each of these concepts, and so you might as well start getting exposed to it now. At first it seems impossibly terse, but as you become familiar with the nomenclature you'll see that the math formulas in the textbooks will have an exact one-to-one correspondence with the code. Unfortunately there is not a lot of meaning behind the names chosen; you will just have to memorize them. If you do not make this effort you will never be able to read the Kalman filter literature.\n",
"\n",
"So, we use `x` for the state (estimated value of the filter) and `P` for the variance of the state. `R` is the measurement error, and `Q` is the movement error. This gives us:\n",
"\n",
@@ -1381,7 +1381,7 @@
" self.x += u\n",
" self.P += self.Q\n",
" \n",
"That give us the following code. Production code would require signficant comments. However, in the next chapter we will develop Kalman filter code that works for any dimension, including 1, so this class will never be more than a stepping stone for us, since we can, and will use the class developed in the next chapter in the rest of the book."
"That give us the following code. Production code would require significant comments. However, in the next chapter we will develop Kalman filter code that works for any dimension, including 1, so this class will never be more than a stepping stone for us, since we can, and will use the class developed in the next chapter in the rest of the book."
]
},
{
@@ -1479,11 +1479,11 @@
"\n",
"$$g_n = \\frac{\\sigma^2_{x'}}{\\sigma^2_{y}}$$\n",
"\n",
"The end result is multipying the residual of the two measurements by a constant and adding to our previous value, which is the *g* equation for the g-h filter. *g* is the variance of the new estimate divided by the variance of the measurement. Of course in this case g is not truly a constant, as it varies with each time step as the variance changes, but it is truly the same formula. We can also derive the formula for *h* in the same way but I don't find this a particularly interesting derivation. The end result is\n",
"The end result is multiplying the residual of the two measurements by a constant and adding to our previous value, which is the *g* equation for the g-h filter. *g* is the variance of the new estimate divided by the variance of the measurement. Of course in this case g is not truly a constant, as it varies with each time step as the variance changes, but it is truly the same formula. We can also derive the formula for *h* in the same way but I don't find this a particularly interesting derivation. The end result is\n",
"\n",
"$$h_n = \\frac{COV (x,\\dot{x})}{\\sigma^2_{y}}$$\n",
"\n",
"The takeaway point is that *g* and *h* are specified fully by the variance and covariances of the measurement and preditions at time *n*. In other words, we are just picking a point between the measurement and prediction by a scale factor determined by the quality of each of those two inputs. That is all the Kalman filter is. "
"The takeaway point is that *g* and *h* are specified fully by the variance and covariances of the measurement and predictions at time *n*. In other words, we are just picking a point between the measurement and prediction by a scale factor determined by the quality of each of those two inputs. That is all the Kalman filter is. "
]
},
{
@@ -1601,7 +1601,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc3e2c88>"
"<matplotlib.figure.Figure at 0x7ffb7e23bd30>"
]
},
{
@@ -1609,7 +1609,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f8033e48>"
"<matplotlib.figure.Figure at 0x7ffb6d1cce48>"
]
},
{
@@ -1645,7 +1645,7 @@
"source": [
"For those reading this in IPython Notebook, here is an animation showing the filter working. The top plot in the animation draws a green line for the predicted next voltage, then a red '+' for the actual measurement, draws a light red line to show the residual, and then draws a blue line to the filter's output. You can see that when the filter starts the corrections made are quite large, but after only a few updates the filter only adjusts its output by a small amount even when the measurement is far from it. \n",
"\n",
"The lower plot shows the Gaussian belief as the filter innovates. When the filter starts the Gaussian curve is centered over 25, our initial guess for the voltage, and is very wide and short due to our inital uncertainty. But as the filter innovates, the Gaussian quickly moves to about 16.0 and becomes taller, reflecting the growing confidence that the filter has in it's estimate for the voltage. You will also note that the Gaussian's height bounces up and down a little bit. If you watch closely you will see that the Gaussian becomes a bit shorter and more spread out during the prediction step, and becomes taller and narrower as the filter incorporates another measurement (the innovation step)."
"The lower plot shows the Gaussian belief as the filter innovates. When the filter starts the Gaussian curve is centered over 25, our initial guess for the voltage, and is very wide and short due to our initial uncertainty. But as the filter innovates, the Gaussian quickly moves to about 16.0 and becomes taller, reflecting the growing confidence that the filter has in it's estimate for the voltage. You will also note that the Gaussian's height bounces up and down a little bit. If you watch closely you will see that the Gaussian becomes a bit shorter and more spread out during the prediction step, and becomes taller and narrower as the filter incorporates another measurement (the innovation step)."
]
},
{
@@ -1729,7 +1729,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f0149a58>"
"<matplotlib.figure.Figure at 0x7ffb6d206668>"
]
}
],
@@ -1809,7 +1809,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f26ee278>"
"<matplotlib.figure.Figure at 0x7ffb7e23bac8>"
]
},
{
@@ -1817,7 +1817,7 @@
"output_type": "display_data",
"png": "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\n/vSnIWvHueesXr06aEpUaWmp7rvvvnpfy9tcDz30kCTpv/7rv1RSUhJ0zjTNoEXhjz76qKqqqnTv\nvfcGplud7/Tp0w1usAgAsBbTqwAgQpxbUL5hwwZJ0g9/+EO1adMmcP7b3/62Lr/8cr3wwgvavHmz\nBg4cqP379+uDDz7QzTffrIULF4akHenp6br99tu1cOFCDRw4UCNHjlRJSYk++ugjJSYmauDAgRc0\nzanmyxR/9KMfKTc3V7///e91+eWX6zvf+Y46duyogoICrVy5UmPHjtWLL74oqXo/kw0bNujll1/W\nZZddpm9+85vq0qWLTp48qb1792r16tX65je/qffeey8kfwYAgOZpcKRjzpw5GjBggNxut9xut4YP\nH67FixcH1ZkxY4Y6d+6sxMREXXfdddq2bZulDQaA1uw///M/JSloAfk5iYmJWrZsme68805t3bpV\nL7/8srZs2aKf//zneuutt+q8n2EYzVrPcc4bb7yhJ554QuXl5Zo7d64++ugjjRkzRh9//LHcbnez\n71lfO+bNm6e3335bV1xxhf7v//5PL774olasWKFhw4bptttuC6o7e/Zs/eMf/9CIESO0YsUKvfji\ni3r//fd17NgxPfDAA5o+fXqzf08AQGg0uE/HX//6V8XFxSk7O1t+v1/z5s3TL3/5S61bt04DBgzQ\nrFmz9Oyzz2r+/Pnq0aOHnnnmGeXm5mrHjh1B//oGAAAAoPVq9uaAKSkp+sUvfqEf/ehH6tSpkx56\n6CFNmzZNklRRUaG0tDT96le/qvUvcAAAAABapyYvJPf5fFq4cKEqKio0YsQI5efnq6ioSKNGjQrU\niY+P14gRI7RmzRpLGgsAAAAg8jS6kHzz5s36+te/rsrKSiUkJOidd95Rz549A8EiPT09qH5aWpoO\nHz5c6z413zwCAAAAIDKc2xPpQjUaOnr16qXPP/9cJSUlevfdd3X77bfXeh1jTReyKBEAAABAdGp0\nelVsbKy6d++uQYMG6bnnntOVV16pOXPmKDMzU5JUVFQUVL+oqEgZGRnWtBYAAABAxGn2Ph0+n09+\nv1/dunVTRkaGli5dqiFDhkiqXkiem5urX/3qVw3eo6XDM8A553YqzsnJsbkliDb0LViBfgUr0K9g\nlVAuj2gwdDz++OO6+eablZWVpdOnT2vBggVauXKllixZIkl65JFH9Nxzz6lXr17Kzs7WzJkzlZyc\nrDvvvDNkDQQAAAAQ2RoMHUVFRbr77rtVWFgot9utAQMGaMmSJRo5cqQk6bHHHlN5ebkmT56s4uJi\nXXnllVq6dKmSkpIuSuMBAAAAhL8GQ8ebb77Z6A2mT5/OLq8AAAAA6tXkfToAAAAA4EIQOgAAAABY\nitABAAAAwFKEDgAAAACWInQAAAAAsBShAwAAAIClCB0AAAAALEXoAAAAAGApQgcAAAAASxE6AAAA\nAFiK0AEAAADAUoQOAAAAAJYidAAAAACwFKEDAAAAgKUIHQAAAAAsZUvo8Jt+Ox4LAAAAwAa2hI4q\nr8eOxwIAAACwgS2ho9JTYcdjAQAAANjAltDh8RI6AAAAgNaCkQ4AAAAAlrIndFQROgAAAIDWwqbQ\nUW7HYwEAAADYwJ41HVWVdjwWAAAAgA0Y6QAAAABgKdZ0AAAAALCUTdOrCB0AAABAa8FIBwAAAABL\nMdIBAAAAwFJsDggAAADAUkyvAgAAAGApe6ZXeQkdAAAAQGvB9CoAAAAAlmJ6FQAAAABLsSM5AAAA\nAEsx0gEAAADAUjbt01Fpx2MBAAAA2IDpVQAAAAAsZUvoqPJ65Pf77Hg0AAAAgIvMltAhSZVMsQIA\nAABaBdtCBxsEAgAAAK2DfSMdbBAIAAAAtAo2Tq8idAAAAACtgX3Tq3iDFQAAANAqsJAcAAAAgKWY\nXgUAAADAUkyvAgAAAGApRjoAAAAAWIo1HQAAAAAsxfQqAAAAAJZqMHQ8//zzGjp0qNxut9LS0jRm\nzBht3bo1qM7EiRPlcDiCPsOHD2/0wWwOCAAAALQODYaOlStX6oEHHtDatWu1bNkyxcTE6MYbb1Rx\ncXGgjmEYGjlypAoLCwOfxYsXN/pg1nQAAAAArUNMQyeXLFkSdPzWW2/J7XZrzZo1uummmyRJpmnK\n5XIpLS2tWQ/2EDoAAACAVqFZazpOnTolv9+v9u3bB8oMw1Bubq7S09PVs2dPTZo0SUePHm30Xox0\nAAAAAK2DYZqm2dTKt956q3bv3q3169fLMAxJ0qJFi5SUlKRu3bopPz9fTz31lHw+nz777DO5XK7A\ntSUlJYHvP5s3QRnuLhp1xfdD+KsAAAAACJXs7OzAd7fb3aJ7NTi96nxTp07VmjVrlJubGwgcknTb\nbbcFvvft21dDhgxRly5d9MEHH2jcuHH13q/KV3WBTQYAAAAQSZoUOqZMmaJ33nlHy5cvV9Line truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f003b0f0>"
"<matplotlib.figure.Figure at 0x7ffb6d06ad30>"
]
}
],
@@ -1895,7 +1895,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f268c7f0>"
"<matplotlib.figure.Figure at 0x7ffb6d08a400>"
]
}
],
@@ -1960,7 +1960,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85eabceef0>"
"<matplotlib.figure.Figure at 0x7ffb6d08a2b0>"
]
}
],
@@ -2023,7 +2023,7 @@
"output_type": "display_data",
"png": "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\nixcvxsMPP4z4+HiEhobi4YcfxtmzZ/Htt99i0aJFqFSpEgCgSZMmuHXrFvr27Yvw8HC88sorqFix\nIuLj47F582ZkZWXBtySfeDAMwzCMC0hlKcNUWaKoWcnmzlUv2ItCp07AsWNAlSrytnr1KC2wp9iw\nAVi1Cli3jt57ewNZWc6PEw+Tr1+XM3BlZrouxiQX2b17t/TAAw9INWrUkHQ6nbRixYqCfXl5edKM\nGTOkli1bSv7+/lK1atWk0aNHS/Hx8ao+cnJypOeff16qVKmS5O/vLw0ZMkRKSEhQtblz5440ZswY\nKTg4WAoODpbGjh0rpaSk2I0nJSWl4McR2dnZrl7eXcVXX30l6XQ66e+//5Y+++wzyd/fX8rKypIk\nSZLGjh0rderUSZIkSWrWrJnUs2dPSZIk6c8//5R0Op20evVqVV979+6VdDqdtHz58oJtoi8lc+bM\nkfR6vXTlyhVJkiQpOTlZ0ul00ocffljoWHU6nTR79my77XXr1pWeeOIJu2u69957JYvFUrDdarVK\nkZGRUt++fVXHm0wmqVmzZlLnzp0Lts2cOVPS6XTShAkTCrZZLBapVq1akk6nk+bMmVOwPSUlRapQ\noYI0ZsyYgm3ffPONpNfrpT179qjO9c0330g6nU7avn276rqMRqN0/vz5gm3Hjh2TdDqd9N///rdg\n2/z58yWdTiddvnxZ1eeGDRsknU4nHTx4UGPWCqe83tflnZiYGCkmJqa0h8GUQ/jeYkqCmJgY6faA\nAZK0alVpD6Xscfu2JM2Y4bzdrVuSdOyYZ88dFiZJiYme7dOW0aMlSSkR5s+XpOnTXTu2cWNJOnFC\nfu/rq+qrsPW7yzIvMzMTLVu2xMcffww/Pz/VU+7MzEwcPnwYb775Jg4fPoyNGzfiypUrGDBgACwW\nS0G7F154AevXr8d3332HP/74A2lpaRg8eDCsCtPg6NGjceTIEWzbtg1bt27FoUOHMHbsWFeHWTxm\nzSI1Z/sza5Zn2pcAjzzyCPLy8rBhwwZkZ2djw4YNmq5ba9asQUBAAPr164fbt28X/ERGRiI8PBy7\ndu0qaOvn5wcAsFqtSE1Nxe3bt3HfffdBkiQcPny4oI2Pjw927dqF5ORkj13PxIkToVc8fTh69Cji\n4uIwatQo1bhTU1PRp08f/P3333buThMmTCj4Xa/Xo127dtDpdHjqqacKtgcHByMyMhIXL15UzVGj\nRo3QtGlT1bm6desGnU6nmiMA6NmzJyIiIgret2jRAkFBQao+HRESEgIA2Lx5s11MEMMwDMOUBbzS\n0tRP5BkiLAyYN895u927Pb8mTErSLtpIS3/PnMO2n88/BzZudO1Yg0Ht8ueGy5rL7lsDBw7EwIED\nAQDjx49X7QsODsb27dtV2z777DM0a9YMp0+fRrNmzZCamoovv/wSK1asQO/evQEAq1atQp06dbBz\n507069cPp06dwrZt2/Dnn3+iY8eOBf107doVcXFxaFQSGQuUzJrl3s3jbvsSoGLFiujfvz9Wr14N\nvV6P7OxsjBgxwq5dXFwcMjIyUMXBH5dbt24V/B4bG4sZM2Zg9+7ddrEUwqXKaDRi3rx5ePnll1Gl\nShV07NgRgwYNwtixY1GzZs0iX49tcH5cXBwAqASFEp1Oh6SkJNSoUaNgW+3atVVtgoOD4e3tjfDw\ncNX2oKAg1XXHxcXhzJkzqFy5suZ5lG21zgPQ5+GKSOvevTuGDx+O2bNnY+HChejevTuGDBmC0aNH\no0KFCk6PZxiGYZiSxvvWLcDmfyfjBmlpQFBQ8fuxWik1s+hLKxFQQABw5w6Q74pfLGxFSWgoUKeO\na8fq9WpR8v77wKFDLh1aYjElYvFasWJFAMDBgweRl5eHfv36FbSpWbMmmjRpgujoaPTr1w/R0dEI\nCAhAp06dCtp07twZ/v7+iI6OLnlRcpcyevRojBs3Dmlpaejbt29B7IISq9WKsLAwfP/995p9iM8p\nNTUVPXv2RGBgIObMmYMGDRrAz88PCQkJGD9+vMqqNW3aNAwdOhQbN27Ejh078O6772LOnDn46aef\n7OI8bHFkHRBWGuW4AWDevHlo166d5jG212vQCKhylBpZUnzxrFYrmjVrho8//lizbfXq1Z2ex7bP\nwlizZg1iYmLw008/YceOHXj66acxd+5c/PXXX5rCiGEYhmH+Ubh4omOuXgUqVSpcBKSkeKYuSXw8\n0KOHnLlLa01jNJJw8YQosaV5c6B9e9fa2oqSoCCXa5eUiCgxmUx46aWXMGTIkIKF3I0bN2AwGBAW\nFqZqW6VKFdzIN0PduHHDbjGm0+kQHh5e0EaLAwcOaG6vU6fOvyJgeOjQoTAajdi3bx9Wrlyp2aZ+\n/frYuXMnOnbsCH9/f4d97dq1C0lJSVi/fj26du1asH3Hjh2a7evWrYtp06Zh2rRpuHr1KlLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85eabce550>"
"<matplotlib.figure.Figure at 0x7ffb7e28ad68>"
]
}
],
@@ -2075,7 +2075,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f26fc978>"
"<matplotlib.figure.Figure at 0x7ffb7e1d72b0>"
]
}
],
@@ -2087,7 +2087,7 @@
"source": [
"This simple change significantly improves the results. On some runs it takes 200 iterations or so to settle to a good solution, but other runs it converges very rapidly. This all depends on whether the initial measurement $Z$ had a small amount or large amount of noise. \n",
"\n",
"200 iterations may seem like a lot, but the amount of noise we are injecting is truly huge. In the real world we use sensors like thermometers, laser rangefinders, GPS satellites, computer vision, and so on. None have the enormous error as shown here. A reasonable value for the variance for a cheap thermometer might be 10, for example, and our code is using 30,000 for the variance. "
"200 iterations may seem like a lot, but the amount of noise we are injecting is truly huge. In the real world we use sensors like thermometers, laser range finders, GPS satellites, computer vision, and so on. None have the enormous error as shown here. A reasonable value for the variance for a cheap thermometer might be 10, for example, and our code is using 30,000 for the variance. "
]
},
{
@@ -2204,7 +2204,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxkAAAGNCAYAAAB9i7yDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VFX+//HXTNqkkVASCDUhEDD0ItI7KlIURbCDKyCK\nroJtLT9Bv4plBdFVdHVdZcFCEREFFaVKlSrSW+gtQBJISJ/7++NCwpCQBDKZmSTv5+ORB5kz5977\nmTDivHPuOcdiGIaBiIiIiIiIk1jdXYCIiIiIiJQtChkiIiIiIuJUChkiIiIiIuJUChkiIiIiIuJU\nChkiIiIiIuJUChkiIiIiIuJUChkiIiIiIuJUBYaMN954g+uvv56QkBDCw8Pp378/W7dudegzdOhQ\nrFarw1f79u1LtGgREREREfFcBYaMpUuX8thjj7Fq1SoWLVqEt7c3PXv2JCEhIaePxWKhV69eHD9+\nPOdr/vz5JV64iIiIiIh4Ju+Cnvz5558dHk+dOpWQkBBWrlxJnz59ADAMA19fX8LDw0uuShERERER\nKTWuak7G2bNnsdvtVKxYMafNYrGwfPlyqlatSoMGDRgxYgTx8fFOL1REREREREoHi2EYRlE7Dxo0\niL1797Ju3TosFgsA06dPJzAwkKioKOLi4njppZfIzs5m/fr1+Pr65hyblJTk/OpFRERERKTEhYSE\nXFX/IoeMMWPGMGPGDJYvX05kZOQV+x07dow6deowffp0BgwYkNOukCEiIiIiUjpdbcgocE7GRaNH\nj2bGjBksXry4wIABEBERQc2aNdmzZ89VFSIiIiIiImVDoSHjiSeeYObMmSxevJiYmJhCTxgfH8+R\nI0eIiIi4Yp+rTUIipc26desAaN26tZsrESl5er9LeaL3u5QnxbkTqcCJ36NGjeKLL77gyy+/JCQk\nJGeJ2pSUFABSUlJ4+umnWb16Nfv372fJkiX079+fqlWrOtwqJSIiIiIi5UeBIeOjjz4iOTmZHj16\nUL169ZyvCRMmAODl5cWWLVu49dZbadCgAUOHDuW6665j1apVBAYGuuQFiIiIiIiIZynwdim73V7g\nwTabLc9eGiIiIiIiUr5d1T4ZIiIiIiIihVHIEBERERERp1LIEBERERERpyrSPhmuZBgGGRkZXMVG\n5CJu5evri9WqvC4iIiJykUeFDLvdTnp6Or6+vnh5ebm7HJFCGYZBWloafn5+ChoiIiIiF3jUp6KM\njAxsNpsChpQaFosFm81GRkaGu0sRERER8RgeFTLA/NAmUproPSsiIiLiyONChoiIiIhIiZszB/r0\ngcxMd1dSJilkiIiIiEjZ9csv0Ls3bNtmPj5xAgYNggEDYP58eOcd99ZXRnnUxG8REREREafJyoIx\nY8yA8euv8MgjcPQozJ6d2+eVV8zA0bCh++osgzSSISIiIiJl0yef5I5gZGfDhx/C8OFQuXJun/R0\nGDYM7Hb31FhGKWSI5GP+/Pm88sor7i5DRERErlVCArz8smPbkCFw883w/vuO7StWwEcfua62ckAh\nQyQfChkiIiKl3GuvwenTuY8DA+H1183v777bnPR9UXQ0NGrk2vrKOIUMcbqUlBR3l+AUWppWRESk\nFAsPh4CA3Mf/+AdUr25+b7GYIxcVK8Izz8DmzdC1q1vKLKsUMlxg3LhxWK1WduzYwX333UdoaChh\nYWG8+OKLABw6dIhbb72VkJAQqlWrxjuXrXKQnp7OK6+8Qv369bHZbNSsWZMxY8aQmprq0O+LL76g\nZ8+eREREYLPZiImJ4c0338QwDId+e/bsYdCgQVSvXh2bzUaNGjUYOHAgx48fB2D//v1YrVamTJmS\n57VYrVaH3/BffG1bt27l/vvvp1KlSjRp0iTn+QULFtClSxeCg4MJDg6md+/e/Pnnnw7nHDp0KP7+\n/hw6dIi+ffsSHBxMjRo1eP/CUObmzZvp3r07QUFB1KlTh2nTpuWpKykpiTFjxlC7dm38/PyIjo7m\ntddew37J/ZUXX9dbb73Fp59+SnR0NDabjTZt2rBu3TqHeiZPnoxhGFit1pyvgwcP5vO3KyIiIh7p\nuedg927zFqk6deCppxyfr1UL9u2Dt992DCPiFKV7dakr/ab5sg/V19zfye6++26uu+463nrrLebN\nm8cbb7xBSEgI//nPf+jZsydvv/0206ZN49lnn6VVq1Z069YNwzAYMGAAy5YtY8SIEcTGxrJt2zYm\nT57M1q1b+eWXX3LOP3nyZGJjY+nbty82m43ffvuNF154gaSkJN544w0AMjMzuemmm0hPT+exxx4j\nIiKCo0eP8ssvv3Ds2DGqVauWc74r/SY/v/bBgwdTt25dxo8fn7P79VdffcX999/PjTfeyJtvvkla\nWhqffPIJnTp1Yu3atTRo0CDneLvdzi233ELHjh155513mDZtGk8++ST+/v6MHTuW+++/n4EDB/LR\nRx8xdOhQ2rVrR3R0NACpqal069aNgwcPMnLkSCIjI1mzZg3jxo3jwIEDfPrppw61Tp8+neTkZB55\n5BEA3n77bW6//Xb27duHt7c3I0eO5NixY/z6668OgaZKlSpX9fctIiIibla9OnzxBZw7B/7+eZ8P\nDXV5SeWG4SKJiYk5X1eSmpp6dSc140HeL2f1d5KxY8caFovFGDZsWE5bdna2UatWLcNisRjjx4/P\naU9MTDQCAgKM++67zzAMw/jyyy8Nq9VqLFu2zOGcX375pWGxWIwFCxbktOX38xsxYoQRFBRkZGRk\nGIZhGJs2bTIsFovx7bffXrHeuLg4w2KxGFOmTMnznMViMV555ZU8r23gwIEO/ZKTk42KFSsaDz30\nkEN7QkKCER4ebtxzzz05bUOGDDEsFovx2muv5fk5WCwW46uvvspp37lzp2GxWIyXXnopp+311183\nAgICjJ07dzpc6/XXXzcsFktO+8XXFRYW5vA+nDt3rmGxWIwff/wxp23UqFGGxWK54s/ocpf/7Neu\nXWusXbu2yMeLlGZ6v0t5ove7lCdF+fx+JbpdyoWGDRuW873VaqVVq1ZYLBYeeuihnPaQkBAaNGhA\nXFwcADNmzCAmJobY2FhOnTqV89W5c2csFguLFy/OOdZmswGQnZ1NQkJCTr+UlBR27NgBQIUKFQD4\n+eefOX/+vNNe28VRgYt+/fVXEhMTufvuux3qzsrKomPHjg51X3TpzyckJISYmBgCAgK4++67c9pj\nYmIIDQ3N+fmA+TPq1KkTlStXdrhWjx49AFiyZInDde644w5CQkJyHnfs2BHA4ZwiIiJSTqWkmLdW\nzZ3r7kpKtdJ9u1QpU7t2bYfHISEh+Pj4EB4e7tBeoUIF4uPjAdi1axc7d+4kLCwsz/ksFktOP4Dl\ny5fzwgsv8Mcff+TcsnRRUlISAFFRUYwZM4aJEycybdo0OnToQL9+/bjvvvuoVKnSNb+2i7cuXbRr\n1y4AevXqlW9/Ly8vh8e+vr5UrVrVoS0kJIQaNWrkObZChQokJCQ4XGvz5s1F+hlB3r+HihUrAjic\nU0REREqZpCRYuNDcWO9aF29ZtMjcR2PfPvjmG+jcWbdUXaPSHTKudi6Fi+ZeXMnlH6zhyvMejAu1\n2u12GjVqxHvvvZdvv+oXVknYt28fPXv2pGHDhkyaNInatWtjs9lYv349zz33nMME6HfeeYe//e1v\nzJ07lwULFvDUU0/x2muvsXTpUq677ror1pSdnX3F1+Z/2X2OF683ZcqUfIPC5a50zfx+ZoDDZHbD\nMOjRowfPP/98vn2joqKu+pwiIiJSyrz+Ovzzn2YwmDQJWrS4uuOPHDH30MjMNB8fPQrPPmtu6CdX\nrXSHjHIgOjqaDRs20L179wL7zZ07l4yMDH744Qdq1aqV07537958+8fGxhIbG8s//vEP/vrrL1q1\nasW7777LJ598kvOb/cTERIdjDhw4UOS669WrB5iTpQurvbiio6M5e/asU6+j5WtFRERKkT17zGAB\nsGwZtGoF330Ht95a9HPUqGGGiot7aQB8+incdReU8GeZskhzMtyssA+zd911FydOnOCjfHahTE9P\nJzk5Gcj97fylIxbp6el88MEHDsecO3eOrKwsh7aGDRtis9lybqmqUKECVapUYenSpQ79Jk+eXMRX\nBTfddBOhoaGMHz+ezIu/EbjE5bcwFedD/eDBg1m7di0//fRTnufOnTuX59axoggMDATyBi0RERHx\nQM8+mzsCAWZguMIt2wV66SVo2NCxbfhwcOI81vJCIxludqVbdC6233fffcyaNYtRo0axdOlSOnTo\ngGEY7Ny5k5kzZzJr1iw6d+7MzTffjK+vL3379uXhhx8mLS2NqVOn5rk1aOHChYwaNYo777yTmJgY\nDMNg+vTppKSkMHjw4Jx+w4YN480332T48OG0atWKZcuWsXv37iK/ruDgYD7++GPuvfdeWrRowd13\n3014eDgHDx7k559/pnHjxnz++edF/jkU5JlnnuGHH37g1ltvZciQIbRs2ZLU1FS2bNnCrFmz2LJl\nS555GIW5/vrrAXjssce4+eab8fb2pn///gRoHW0RERHPsmSJOWpxqTffvLa9L2w2+M9/oFOn3Nvs\nr78e0tK0l8ZVUshwAYvFku9v6ovSbrFYmD17NpMmTWLKlCl8//33+Pv7Ex0dzahRo3I2vqtfvz5z\n5szhhRde4NlnnyUsLIwHHniALl26cNNNN+Wcu3nz5txyyy3Mnz+fTz/9FJvNRuPGjZkzZw79+vXL\n6ffyyy8THx/PrFmzmDFjBrfccgs//fRTnknqV3oNQM6Gf+PHj2fChAmkpaVRo0YNOnTowMiRI4v1\n87mUzWZjyZIlvPHGG8yYMYOpU6cSHBxMTEwML7/8cp4J5UVx++238+STT/L111/z9ddfA+Line truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85fc020780>"
"<matplotlib.figure.Figure at 0x7ffb7e1e2128>"
]
},
{
@@ -2294,7 +2294,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGNCAYAAADpbRVxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdcU9f7B/BPEvYGARHcE8Etori17r33qltrh6O1Vttq\n7VfrrHvUbevee++BIspwKzJUQBFBVDbk/v7wZ8i5IYCQ5N4kz/v18tXew73JQTPuOec5zyPhOI4D\nIYQQQgghhOiAVOgOEEIIIYQQQowHDUAIIYQQQgghOkMDEEIIIYQQQojO0ACEEEIIIYQQojM0ACGE\nEEIIIYToDA1ACCGEEEIIITpDAxBCCCGEEEKIzmh0ABIbG4uhQ4fC1dUVlpaW8Pb2xuXLlzX5FIQQ\nQgghhBA9ZqKpB3r37h0aNWqEpk2b4vjx43BxcUF4eDhcXV019RSEEEIIIYQQPSfRVCX0X375BVeu\nXMGVK1c08XCEEEIIIYQQA6SxEKyDBw/C19cXffv2RfHixVG7dm2sXLlSUw9PCCGEEEIIMQAaWwGx\nsLCARCLBpEmT0KdPHwQFBeHbb7/FX3/9hW+++UZxXlJSkiaejhBCCCGEEKJj9vb2RX4MjQ1AzMzM\n4Ovri6tXryrapk+fjgMHDuDBgweKNhqAEEIIIYQQop80MQDRWAiWu7s7vLy8mDZPT088f/5cU09B\nCCGEEEII0XMay4LVqFEjPHr0iGl78uQJypYtq/YaTYygCAGAwMBAAICPj4/APSGGhl5bRBvodUW0\ngV5XRFs0HcGksRWQiRMn4saNG5gzZw7CwsKwZ88eLF++nNn/QQghhBBCCDFuGhuA+Pj44ODBg9i9\nezeqV6+OX3/9FX/++SfGjRunqacghBBCCCGE6DmNhWABQIcOHdChQwdNPiQhhBBCCCHEgGhsBYQQ\nQgghhBBC8kMDEEIIIYQQQojO0ACEEEIIIYQQojMa3QNCCCGEEEJIfuRyOTIyMoTuBsGnYuJSqW7X\nJGgAQgghhBBCdEYulyM9PR0WFhaQSCRCd8eocRyHtLQ0mJub63QQQiFYhBBCCCFEZzIyMmjwIRIS\niQQWFhY6X42iAQghhBBCCNEpGnyIhxD/FoIOQNIzsoR8ekIIIYQQQoiOCToAeR6XJOTTE0IIIYQQ\nQnRM0AHIm3cpQj49IYQQQgghRMcEHYDEvUsW8ukJIYQQQgjRiM2bN0MqleL58+dCd0X0BF4BoQEI\nIYQQQggxDGLZXJ+amoqZM2fi0qVLQnclVxSCRQghhBBCSBENGTIEqampKF26tNBdQXJyMv744w8a\ngOTmTRKtgBBCCCGEEP0nlUphZmYmdDcYHMcJ3YVc0QoIIYQQQgghRcTfA9K8eXNUrVoVDx48QMuW\nLWFtbY2SJUtiwYIFzHUXL16EVCrF9u3b8fvvv8Pd3R3W1tZo164dwsLCmHObN2+OFi1aqDz3sGHD\nUK5cOQBAZGQkXF1dAQCzZs2CVCqFVCrF119/rY1fu1BMhHxyGoAQQgghhJA8qdtXoW52/0vP1xKJ\nRIKkpCR06NABPXr0QN++fbFnzx5MnToV1atXR7t27Zjz582bB7lcjp9++gkJCQlYunQpWrRogdDQ\nUDg6OioeU90+k8/trq6uWL16NcaNG4cePXqgR48eAIAKFSpo8bf9MsIOQCgEixBCCCGEGCCO4/Dq\n1Sts3boVgwYNAgAMHz4cZcqUwYYNG1QGIHFxcXj8+DHs7OwAAC1atMBXX32FxYsXY/bs2YrHVDcA\n+RxuZWVlhZ49e2LcuHGoUaMGBgwYoK1fsdAoBIsQQgghhBAtsLKyUgw+AMDU1BS+vr4IDw9XOXfI\nkCGKwQfwaQDi7e2No0eP6qSvuiR4Gl6xbo4hhBBCCCGkKDw8PFTaHBwckJiYqNJeqVKlXNsiIyO1\n0TVBCToASc/MxsfUDCG7QAghhBBCxIzjcv+jqfO1SCaT5dr+JRPwyiFX6sKvsrOzv6xjAhN0AAJQ\nGBYhhBBCCCFPnjzJta1s2bKKY0dHx1xXT6Kiogo0UBELEQxAaCM6IYQQQggxHrkNELZu3YqkpCTF\n8fnz5/HgwQN07NhR0VaxYkU8evQI8fHxiraQkBBcu3aNeSwrKysAQEJCgqa7rhGCZsECgDgagBBC\nCCGEEAOkLtQqt3Y3Nzc0atQII0aMQGJiIpYsWQJ3d3dMmjRJcc7w4cOxePFitG3bFsOHD0dcXBzW\nrl2LatWq4f3794rzLC0t4e3tjZ07d6Jy5cpwcnJC+fLl4evrq/lfshBEsAJCIViEEEIIIUT/8cOg\nclvpUNc+depU9OzZEwsWLMDChQvRsGFDXLhwQVEDBAA8PT0VKyWTJ0/G0aNH8d9//6FOnToqj7lh\nwwaULVsWkydPxoABA7BmzRoN/qZFI/gKCNUCIYQQQggh+m7YsGEYNmyY4vjChQu5nrdp06Zc22Uy\nGWbNmoVZs2bl+TwDBgxQqe3RqlUrlfN8fX1x48aNfHotDFoBIYQQQgghhOgMDUAIIYQQQgghOiP8\nAIRCsAghhBBCiBETe9pcTRN+DwitgBBCCCGEECPVvHlzvSskWFTCr4BQGl5CCCGEEEKMhvADkCRa\nASGEEEIIIcRYCD4ASUnLREpaptDdIIQQQgghhOiA4AMQgMKwCCGEEEIIMRaiGIDE0QCEEEIIIYQQ\no6DRAcjMmTMhlUqZP+7u7vleR5mwCCGEEEIIMQ4aT8Pr6emJixcvKo5lMlm+11AIFiGEEEIIIcZB\n4wMQmUwGV1fXL7qGMmERQgghhBBiHDS+ByQ8PBweHh4oX748+vfvj4iIiHyvoRUQQgghhBBiCIKC\ngtCkSRPY2tpCKpWiW7dukErZW+7mzZujRYsWAvVQeBpdAWnQoAG2bNkCT09PvH79Gn/++ScaNmyI\n+/fvw8nJSe11D589R2BgoCa7QowUvY6IttBri2gDva6INoj9dVWmTBlYWFgI3Q2tkMvl6Nu3LwBg\n8eLFsLa2RkBAACQSCXOeRCJh2lJTUzFv3jy0aNECzZo102mfAeDDhw+4d++e2p9XqlRJo8+n0QFI\nu3btFP9frVo1+Pn5oVy5ctiyZQsmTpyo9rrEjxma7AYhhBBCCCE6FxMTg7CwMCxduhSjRo0CAPTt\n2xfz589nzuM4jhmAJCcn448//oBUKhVkAKJrGt8DoszKygre3t4ICwvL87xMmMLHx0ebXSEG7vNs\nD72OiKbRa4toA72uiDboy+sqLS1N6C5oTVxcHADAzs5O0SaTyQqUlAn4NDDRpIyMjAI9v62tbZ6v\nm6SkJI32S6t1QNLS0vDw4UOUKFEiz/NoEzohhBBCCNFnw4YNU9zEf/3115BKpWjRooWiTIU6kZGR\nigROs2bNUpSy+PrrrxXnxMbGYuTIkXBzc4OFhQW8vLywZs0a5nEuXrwIqVSK7du3Y+bMmShdujSs\nrKwQHR2thd+2aDS6AjJlyhR06dIFpUqVQlxcHGbPno3U1FQMHTo0z+toEzohhBBCCMmNpMUsrT02\nd+F3jT3W2LFjUbFiRfz2228YM2YMmjRpguLFi+PKlSt5Xufq6orVq1dj3Lhx6NGjB3r06AEAqFCh\nAoBPqyoNGjQAx3GYMGECXF1dcfbsWYwfPx5v377F9OnTmcebM2cOZDIZJk6cCI7jYG1trbHfUVM0\nOgCJjo5G//79ER8fDxcXF/j5+eHGjRsoVapUntd9SMlAekYWzM20GhFGCCGEEEKIVjRo0AAmJib4\n7bff4OfnhwEDBgBAvgMQKysr9OzZE+PGjUONGjUU1302Y8YMZGZm4u7duyhWrBgAYPTo0Rg9ejTm\nzJmDCRMmwN7eXnH+x48f8fDhQ1haWmr4N9Qcjd7x79ixo9DXvklKQUkXu/xPJIQQQgghxAhwHIe9\ne/eiZ8+e4DgO8fHxip+1bt0a69evx82bN9GmTRtF+5AhQ0Q9+AC0vAn9S8QlJtMAhBBCCCGEkP/3\n5s0bvHv3Dhs2bMCGDRtUfi6RSPDmzRum7XPolpiJZgBC+0AIIYQQQgifJvdp6Bu5XA4AGDBgAIYP\nH57rOV5eXsyx2Fc/ADENQCgTFiGEEEIIMUL8QoWfubi4wNbWFpmZmWjZsqWOe6U9Wk3D+yVoBYQQ\nQgghhBgjKysrAEBCQgLTLpPJ0KtXLxw8eBChoaEq1/HDr/SFeFZA3tEKCCGEEEIIMQ7KRQctLS3h\n7e2NnTt3onLlynByckL58uXh6+uLv/76CxcvXoSfnx9GjRoFLy8vJCYmIjg4GAcPHkRqaqqAv0Xh\niGcAkkQrIIQQQgghRL/xw6kkEkmB2jZs2IDvvvsOkydPRnp6OoYNGwZfX1+4uLjg5s2bmD17Ng4e\nPIjVq1fDyckJXl5eWLx4cZ7PLVYSTtM13/OhXMrdodsSxf93bVQFB//sp8uuEAMSGBgIAIoKpIRo\nCr22iDbQ64pog768rtLS0mBhYSF0N4iS/P5NlO/flWuOFJaI9oBQCBYhhBBCCCGGTjwDEArBIkYm\n9u0HnL8TgYT3+he7SYTDcRzevEvGs+gE6HgBmxBiwDiOQ9LHNGRny4XuCjEC4tkDQisgxMC9T07H\npZBInL0djrO3I/Ag6lPmCisLU0zu7YcpfRvCztpc4F4SsYhPSsH9iDiERScgLCYBz6ITERaTgLDo\nBHxIyQAA1PN0x/opXVCjQnGBe0vE4lJwJLaeDkHcuxRkZcuRmZX9//+Vf/pvdjZKu9pjbBcftPOt\nKHR3iUgEh73CiPmHcedpLGRSCdycbODhbAd3Z1t4KP7YwbeqBzxLOwvdXWIABB2ASCTA5wm8dx/T\nkJGZDTNTmZBdIkSjAh/H4PC1xzh7JxwBD6ORLVedsU5Jy8Tsfy9jzZFA/Dq4KcZ09qH3gRLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f26fb8d0>"
"<matplotlib.figure.Figure at 0x7ffb7e13ceb8>"
]
}
],
@@ -2379,7 +2379,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f2702a90>"
"<matplotlib.figure.Figure at 0x7ffb6d2cab70>"
]
}
],
+142 -143
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:294c484342e32ceca58f2c7bb93ee9f5a0c3d347fe840425870ddfb1a33ce140"
"signature": "sha256:45e715eb8ce52ab26b8fba2572cb3468b69c53681696aa1c085e10dcda86cf3e"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -259,7 +259,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7f860c7ed780>"
"<IPython.core.display.HTML at 0x7f22c6bd9438>"
]
}
],
@@ -297,7 +297,7 @@
"\n",
"$$ x = \\frac{1}{6}jt^3 + \\frac{1}{2}a_0 t^2 + v_0 t + x_0$$\n",
"\n",
"As a reminder, we can generate these equations using basic calculus. Given a constant velocity v we can compute the distance travelled over time with the equation\n",
"As a reminder, we can generate these equations using basic calculus. Given a constant velocity v we can compute the distance traveled over time with the equation\n",
"\n",
"$$\\begin{aligned} v &= \\frac{dx}{dt}\\\\\n",
"dx &= v\\, dt \\\\\n",
@@ -318,7 +318,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"What might a *multivariate normal distribution* look like? In this context, multivariate just means multiple variables. Our goal is to be able to represent a normal distribution across multiple dimensions. Consider the 2 dimensional case. Let's say we believe that $x = 2$ and $y = 17$ This might be the *x* and *y* coordinates for the position of our dog, or the temperare and wind speed at our weather station, it doesn't really matter. We can see that for $N$ dimensions, we need $N$ means, like so:\n",
"What might a *multivariate normal distribution* look like? In this context, multivariate just means multiple variables. Our goal is to be able to represent a normal distribution across multiple dimensions. Consider the 2 dimensional case. Let's say we believe that $x = 2$ and $y = 17$ This might be the *x* and *y* coordinates for the position of our dog, or the temperature and wind speed at our weather station, it doesn't really matter. We can see that for $N$ dimensions, we need $N$ means, like so:\n",
"\n",
"$$\n",
"\\mu = \\begin{bmatrix}{\\mu}_1\\\\{\\mu}_2\\\\ \\vdots \\\\{\\mu}_n\\end{bmatrix}\n",
@@ -394,7 +394,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e84c5ef0>"
"<matplotlib.figure.Figure at 0x7f22ae25d898>"
]
}
],
@@ -423,7 +423,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"I have programmed the multivariate Gaussian equation and saved it in the file `stats.py` with the function name `multivariate_gaussian`. I am not showing the code here because I have taken advantage of the linear algebra solving apparatus of numpy to efficiently compute a solution - the code does not correspond to the equation in a one to one manner. If you wish to view the code, I urge you to either load it in an editor, or load it into this worksheet by putting `%load -s multivariate_gaussian stats.py` in the next cell and executing it with ctrl-enter. \n",
"I have programmed the multivariate Gaussian equation and saved it in the file `stats.py` with the function name `multivariate_gaussian`. I am not showing the code here because I have taken advantage of the linear algebra solving apparatus of NumPy to efficiently compute a solution - the code does not correspond to the equation in a one to one manner. If you wish to view the code, I urge you to either load it in an editor, or load it into this worksheet by putting `%load -s multivariate_gaussian stats.py` in the next cell and executing it with CTRL-enter. \n",
"\n",
"However, please note that the Kalman filter equations incorporate this computation automatically; you will not be using this function very often in this book, so I would not spend a lot of time mastering this function unless it interests you."
]
@@ -537,7 +537,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"> Note that the function can accept lists, np.array, or np.matrix as arguments, or even scalars. Type `multivariate_gaussian?` in a cell and press ctrl-enter to get the help for this function. \n"
"> Note that the function can accept lists, np.array, or np.matrix as arguments, or even scalars. Type `multivariate_gaussian?` in a cell and press CTRL-enter to get the help for this function. "
]
},
{
@@ -562,7 +562,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f860c7f2588>"
"<matplotlib.figure.Figure at 0x7f22c6bd9978>"
]
}
],
@@ -572,7 +572,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"The result is clearly a 3D bell shaped curve. We can see that the gaussian is centered around (2,7), and that the probability density quickly drops away in all directions. On the sides of the plot I have drawn the Gaussians for $x$ in greens and for $y$ in orange."
"The result is clearly a 3D bell shaped curve. We can see that the Gaussian is centered around (2,7), and that the probability density quickly drops away in all directions. On the sides of the plot I have drawn the Gaussians for $x$ in greens and for $y$ in orange."
]
},
{
@@ -594,9 +594,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f860c7f2390>"
"<matplotlib.figure.Figure at 0x7f22c6bd9828>"
]
}
],
@@ -655,7 +655,7 @@
"output_type": "display_data",
"png": "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\nBAHbtm07qoB65vcdKy7LsvCpT33qmMfavn07C6gOxgKKjjI2Ntby13zRi16EAwcOtPx1iahzMdcQ\n0XK1Oo88cxRpKXbu3HnMIuj222/H7bff3qqwqA1xDRQREREREdESsYAiIiIiIiJaIhZQRERERERE\nS8QCqksJgtA2m8wRUXAx1xDRcnVLHumG9xgUgud5nt9BEBERERERdQKOQBERERERES0RCygiIiIi\nIqIlYgHVpa699lqIooiJiQm/Q1lEFEXs3r3b7zCIqAWYa4houdo5j7TSpk2bsGPHDr/DoCVgAUXH\ndODAAezYsQPpdBqpVAovetGLcOedd57Saxw6dAg33ngjXvnKV2LDhg2IRCIYGhrCxRdfjHvuueeE\nP8uFlETdoRW5BgDq9To++tGP4pxzzkEsFkMmk8GOHTvwne9854Q/x1xD1LlqtRo+9alP4W1vexvO\nOeccyLIMURRx7733nvJrLeea5dmy2SxuvfVWXHLJJdiyZQtisRj6+vqwffv2E+a3bmmWEQSy3wFQ\n+/n85z+Pq666CgMDA3j729+OcDiMb3zjG9i1axf+7//+D5/61KeW9DrXXHMNvv71r+Oss87Cq171\nKgwODuLw4cP49re/jXvvvRdXX301brzxxhV+N0TUrlqVa6rVKl72spfhkUcewdlnn433vOc9aDab\nuOeee/DGN74R+/btw549e1b43RDRahsbG8OHPvQhCIKAdevWYXBwEPl8/rSKkFZes9xyyy248cYb\nsXHjRmzfvh1r165FNpvF/v37sWvXLhw4cABf+9rXFv0c+7p1EI+60t69ez1BELzx8fGjHh8bG/Mi\nkYg3MDBw1HOVSsU744wzPEEQvJ///OdLOsbtt9/u/frXv170+O9//3svnU57giB4//M//7PoeUEQ\nvN27d5/iOyKidrQaueZ973ufJwiC98Y3vtGzbXvh8Vqt5p177rmeJEnMNUQd7Hh5pFKpeA888IBX\nqVQ8z/O8nTt3eoIgePfee+8pH+N0r1mOZf/+/d6DDz646PFcLuetX7/eEwTB279//6LnN27c6O3Y\nseOUY6fVxyl8dJQvf/nLME0Tf/d3f4cNGzYsPJ7JZPDhD38YAPDFL35xSa+1a9cuvOAFL1j0+HOf\n+1xcfvnlAIAHH3xw+UETUcdpZa7Zv38/BEHAxz/+cUiStPB4T08P9uzZA9d18fnPf761b4CIfDc/\nVTeTySz7tVp5zXLppZdi27Ztix4fHR3FFVdccUqvRe2JBRQd5YEHHgAAvOpVr1r03MUXXwwAOHjw\n4LKPI8vyUX8SUXdpZa6ZmZkBAGzZsmXRc/OPzR+PiOhUtfKahdc/wcACio7y+OOPQxAEPOc5z1n0\n3MjICOLxOKampmAYxmkfo1ar4Vvf+hYkScJFF120nHCJqEO1MtcMDAwAAA4fPrzouSeffBIAMD4+\njmazucyoiajbtPKaxbbthSYSx7p5RJ2DBRQdpVarAQDS6fQxn59/fP77TpXruti9ezdmZ2dxxRVX\n4Mwzzzy9QImoo7Uy17zuda+D53n46Ec/CsdxFh5XFAXXXXfdwn9Xq9XlhExEXabV1yxXX301Hnnk\nEbzmNa/BhRde2KIoyQ8cP6RV43ke/vZv/xbf+c53sGPHDnz605/2OyQiCoB9+/bh/vvvx/79+3Hu\nuefiFa94BZrNJr7//e8jEokgnU5DURSIIu8ZEtHStPqa5ZOf/CRuvvlmPO95z8Ndd93VoijJLzyb\n0FFOdtf3ZHeNj8fzPLz3ve/Fv/3bv+GVr3wlDhw4wPm/RF2slblmaGgIv/rVr/D+978fuq7ji1/8\nIr7zne/goosuwkMPPQTbtiHLMvr6+lr3BogosFp9zXLdddfhIx/5CM4991wcPHjwlK+hqP2wgKKj\nnHnmmfA8D48//vii56anp6FpGtatW4doNLrk13QcB7t27cKXvvQlXHzxxfj+979/Sj9PRMHT6lzT\n19eHT3/603jyySfRbDYxMzODL3/5y9B1HY1GA+edd95RHfqIiI6l1dcse/bswTXXXIPzzz8fBw8e\nRH9/fwujJb+wgKKjvOIVrwAA/PCHP1z03A9+8AMAwMtf/vIlv55lWXjrW9+Ku+66C294wxvw3e9+\nF+FwuDXBElHHanWuOZ477rgDAPC2t71t2a9FRMHW6muWD37wg7j++uvx4he/GD/60Y9a0m6d2gML\nKDrK7t27EYlEcOutt2J8fHzh8Uqlguuvvx6CIOC9733vkl6r2Wzisssuwze+8Q1cfvnl+OY3v8lp\ne0QEoLW5xvM81Ov1RY//4Ac/wI033oizzjoL7373u1sWOxG1N8/zjvtcqVTCY489trD9wbxWXrN4\nnocrrrgCn/3sZ7Ft2zbcf//9SKVSp/Va1J54NUtH2bRpE2666SZcddVVOP/883H55ZcjFALine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7d1a0f0>"
"<matplotlib.figure.Figure at 0x7f22ac065f28>"
]
}
],
@@ -673,7 +673,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"From a mathematical perspective these display the values that the multivariate gaussian takes for a specific standard deviation. This is like taking a horizontal slice out of the 3D plot. By default it displays one standard deviation, but you can use the `variance` parameter to control what is displayed. For example, `variance=3**2` would display the 3rd standard deviation, and `variance=[1,4,9]` would display the 1st, 2nd, and 3rd standard deviations as in the chart below. This takes 3 different horizontal slices of the multivariate Gaussian chart and displays them in 2D."
"From a mathematical perspective these display the values that the multivariate Gaussian takes for a specific standard deviation. This is like taking a horizontal slice out of the 3D plot. By default it displays one standard deviation, but you can use the `variance` parameter to control what is displayed. For example, `variance=3**2` would display the 3rd standard deviation, and `variance=[1,4,9]` would display the 1st, 2nd, and 3rd standard deviations as in the chart below. This takes 3 different horizontal slices of the multivariate Gaussian chart and displays them in 2D."
]
},
{
@@ -694,7 +694,7 @@
"output_type": "display_data",
"png": "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\nKQMAthkN2ACAyr397W/X3//93+uv/uqv9E3f9E166UtfqjiO9bd/+7cKgkCzs7PqdruybT7jAoBp\nwl0bAHBOz1V5eK7KxVfbv3+/Pv/5z+tNb3qTRqORfu/3fk8f+chH9LKXvUwPP/ywsiyT67paWFgw\n9wMAACpHmAAAnNMNN9ygsiz16KOPnvXa8ePHNRwOdejQIYVhuKnxFhYW9O53v1tf/vKXFcexTpw4\nofe///0ajUYaDAZ6wQtecNpOTwCAyUeYAACc00tf+lJJ0sc+9rGzXvu7v/s7SdJLXvKSi77OH/3R\nH0mSXvva1170WACA7UWYAACc0xve8AYFQaD3vOc9euKJJza+vra2pne84x2yLEs/9mM/tqmxyrJU\nv98/6+t/93d/p3e961268cYb9cY3vtHY3AEA24MGbADAOV199dX69V//df3kT/6kbr75Zr3qVa+S\n53n68Ic/rGPHjulnf/Zn9S3f8i2bGmswGGj//v2644479DVf8zVyXVePPPKIPvWpT+mqq67SRz/6\nUQVBUPFPBAAwbVOViV/7tV/TC1/4Qs3Ozmr//v2666679IUvfOGs7zt8+LCuuOIK1et13X777fri\nF79ofMIAgO1z77336m//9m/1/Oc/Xx/4wAf0h3/4h7r88sv14IMP6l3vetemxwnDUK997Wv16KOP\n6vd///f1u7/7u1peXtZ9992n//qv/9LXfu3XVvhTAACqsqnKxD/90z/pJ37iJ/TCF75QRVHovvvu\n07d/+7fri1/8oubn5yVJ73znO/Xud79bDz74oK6//nq9/e1v1x133KFHH31UzWaz0h8CAFCd7/zO\n79R3fud3XtQYruvqD/7gDwzNCAAwKTYVJs5svvvgBz+o2dlZffazn9UrXvEKlWWp3/qt39Jb3/pW\n3X333ZKkBx98UPv379ef/MmfsA4WAAAAuARtqQG72+2qKIqNqsSRI0e0uLiol73sZRvfE4ahbr31\nVn32s581M1MAAAAAE2VLDdg//dM/rRe84AV60YteJEk6ceKEJOnAgQOnfd/+/fv1zDPPnPa18x1+\nBADYGVEUSRp/UDSJ9+gkSSZyXgCwG515UOkFh4mf+Zmf0Wc/+1k9/PDDsizrOb9/M98DANg5lmVx\nrwYAbMkFhYk3v/nN+tCHPqRPfvKTuvrqqze+fvDgQUnS4uKiDh06tPH1xcXFjdcAAJPpF37hF/QL\nv/ALOz2Nc1pbW9vpKQAAnsWmw8RP//RP6y/+4i/0yU9+Utdff/1pr11zzTU6ePCgPv7xj+ubv/mb\nJY3L5g8//LB+/dd//bxjnlkmuRQ98sgjkqSbb755h2eCacTvD7aK3x1cDH5/sFX87lyanm2p6abC\nxL333qs//uM/1kc+8hHNzs5u9Ei0Wi01Gg1ZlqU3velNesc73qEbb7xR1113nR544AG1Wi39wA/8\ngJmfAgAAAMBE2VSYeN/73ifLsvTSl770tK8fPnxY9913nyTp53/+5zUajXTvvfdqbW1Nt9xyiz7+\n8Y+r0WiYnzUAAACAHbepMFEUxaYGu//++3X//fdf1IQAAAAATIctnTMBAAAAAIQJAAAAAFtCmAAA\nAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtC\nmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAA\nAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJ\nAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACw\nJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAA\nAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtCmAAAAACwJYQJAAAAAFtC\nmAAAAACwJYQJAAAAAFvi7vQEAADTqSxLDaNUWV6oKEsVRSlJsm1LtmXJ9xyFvivLsnZ4pgCAqhAm\nAACbEiWZBqNEgyjVIEo0jFJFWaSsyMZhoiwkSbZly7YseY6vmheoHnhq1Hw1Qk/1wFPg89YDAJcK\n7ugAgPNKs1zLnaGW2kMN4kijbKRROlKUjRTnsTzXku/ZsixL6wWIoihVFlIyKpRlUuiGqrk11bzx\n/zfCUPvnGtozU5PjsNoWAKYZYQIAcJb+KNFSe6CV7lDtqK21qK2iTBSGjmp1VzOBo9BvybaffQlT\nXpQaRZmipK9O3NGJQS6vG+hkb0Fz4Yz2zja0b66uWuBt008GADCJMAEA2LDWG+nEal/twVLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7cf4278>"
"<matplotlib.figure.Figure at 0x7f22ac09fb70>"
]
}
],
@@ -712,7 +712,7 @@
"\\end{aligned}\n",
"$$ \n",
"\n",
"Let this be our current belief about the position of our dog in a field. In other words, we believe that he is positioned at (2,7) with a variance of $\\sigma^2=2$ for both x and y. The contour plot shows where we believe the dog is located with the '+' in the center of the ellipse. The ellipse shows the boundary for the $1\\sigma$ probability, where $1\\sigma$ is one *standard deviation*. In other words, for this Gaussian 68% of the data will fall within this ellipse. Recall from the Gaussians chapter the the 68-95-99.7 rule - 68% of all values will fall within 1 standard deviation ($1\\sigma$), 95% within $2\\sigma$, and 99.7% within $3\\sigma$. The dog could be at (356443,58483), but the chances for values that far away from the mean are infitestimally small.\n",
"Let this be our current belief about the position of our dog in a field. In other words, we believe that he is positioned at (2,7) with a variance of $\\sigma^2=2$ for both x and y. The contour plot shows where we believe the dog is located with the '+' in the center of the ellipse. The ellipse shows the boundary for the $1\\sigma$ probability, where $1\\sigma$ is one *standard deviation*. In other words, for this Gaussian 68% of the data will fall within this ellipse. Recall from the Gaussians chapter the the 68-95-99.7 rule - 68% of all values will fall within 1 standard deviation ($1\\sigma$), 95% within $2\\sigma$, and 99.7% within $3\\sigma$. The dog could be at (356443,58483), but the chances for values that far away from the mean are infinitesimally small.\n",
"\n",
"An equivalent way of thinking about this is the circle/ellipse shows us the amount of error in our belief. A tiny circle would indicate that we have a very small error, and a very large circle indicates a lot of error in our belief. We will use this throughout the rest of the book to display and evaluate the accuracy of our filters at any point in time. "
]
@@ -776,7 +776,7 @@
"output_type": "display_data",
"png": "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\nmzeP6dOnY2dnh5+fH0uWLEndmlhERESeLHfv3mX69OlUr16d+fPnkytXLt577z1OnTrFokWL0g0n\nAImJicD/rVcVkaePxUZQHBwc0v3DxdvbG29v7xzqSERERLKD0Whk3bp1jBgxgpMnTwLg6urK9OnT\nqVGjxiPda9u2bQA0bNgwy/sUEetglWtQRERE5Olw4sQJBg0aRHh4OACvvvoqM2bMwNnZOVP327Rp\nEwBt2rTJsh5FxLpY5UGNIiIi8mS7d+8eS5Ys4bXXXiM8PJySJUsya9Ys/vjjj0yHkytXrhAREUGe\nPHlwcHDI2oZFxGpoBEVERESy1J9//kmfPn04evQoAF5eXsyYMeOxD1cMCgrCYDDg4OBA4cKFs6JV\nEbFCGkERERGRLJGUlMQXX3yBvb09R48epWzZsoSEhLBkyZLHDicGg4Gvv/4agH79+mVFuyJipTSC\nIiIiIo8tIiKCvn37cvjwYQA8PT0ZOnRolk3FWrduHcePH6dKlSp06tQpS+4pItZJAUVEREQyLTk5\nmc8//5yvvvoKg8FAtWrVWLBgQZZOwTIajUyZMgWADz/8kNy59c8XkaeZpniJiIhIppw6dYqmTZsy\nadIkAEaMGMGhQ4eyfAH77t272bdvHyVKlKBPnz5Zem8RsT76EYSIiIg8Mn9/f959911u3bpFpUqV\n8Pf3p1mzZln+HKPRyJdffgnAkCFDtDhe5BmgERQRERHJsJs3b+Ll5UWPHj24desWHTt25I8//siW\ncAKwceNGwsLCKFasGMOGDcuWZ4iIddEIioiIiGTIvn376NatG1FRURQsWJCZM2fSp08fbGxssuV5\nycnJfPjhhwCMGzeOMmXKZMtzRMS6aARFRERE0nTv3j0mTpxIkyZNiIqKok6dOvz222/07ds328IJ\ngJ+fH3///TfVq1dn6NCh2fYcEbEuGkERERERs2JjY+nRowfbt28HYOTIkUyYMIF8+fJl63MvX77M\nF198AcDXX39N3rx5s/V5ImI9FFBERETEpFWrVtGvXz+uXbvGc889x+LFi2ndunWOPNvHx4fr16/T\nqlUr3n777Rx5pohYB03xEhERkQfEx8czYMAAPD09uXbtGq6urhw6dCjHwsnhw4f57rvvyJUrFzNm\nzMjWaWQiYn00giIiIiKpDh06RJcuXTh27Bj58uVj+vTpDBkyJMdCQkpKCn379sVgMDB06FBq1aqV\nI88VEeuhgCIiIiIABAQE0L9/fxISEqhZsybLli3Dzs4uR3v49ttviYiIoFKlSkycODFHny0i1kFT\nvERERJ5xSUlJDBs2DC8vLxISEujduzf79+/P8XASGRnJZ599BsDcuXMpWrRojj5fRKyDRlBERESe\nYWfPnqVz587s3r2bPHnyMGvWLAYMGJDj6z4MBgP9+/cnMTGRHj160LZt2xx9vohYDwUUERGRZ9TO\nnTvp3Lkz58+fp0KFCgQFBdGwYUOL9DJv3jy2b99O2bJlmTFjhkV6EBHroCleIiIizxij0Yivry8t\nWrTg/PnzODg48Ntvv1ksnMTGxjJq1Cjgn8MZS5UqZZE+RMQ6KKCIiIg8Q+Lj4/Hy8mL48OGkpKQw\ncuRINm/eTNmyZS3Sj9FoZODAgdy6dQsPDw88PT0t0oeIWA9N8RIREXlGnDhxgg4dOnD48GEKFSrE\nwoUL6dSpk0V7mj9/Phs3bqR48eL4+fnpzBMRUUARERF5FoSEhNC9e3du3LjByy+/zKpVqyx+xshf\nf/3F8OHDAZgzZw7PP/+8RfsREeugKV4iIiJPMaPRyKRJk2jXrh03btzA3d2dX3/91eLh5O7du3Tt\n2pWEhAS8vb3p2rWrRfsREeuhERQREZGn1O3bt+nduzcrV67ExsaGL7/8ko8//hhbW8v/fHLs2LH8\n8ccfVKtWjVmzZlm6HRGxIgooIiIiT6GoqCjc3d05dOgQRYoUISAggHbt2lm6LQA2bdrEjBkzyJ07\nN8uWLaNIkSKWbklErIgCioiIyFNm69atdO7cmStXrvDyyy+zdu1aatSoYem2ALhw4QLe3t4ATJgw\ngfr161u4IxGxNpYf4xUREZEscf98k9atW3PlyhXatm3LL7/8YjXhxGAw0KtXLy5evEiLFi346KOP\nLN2SiFghBRQREZGnQGJiIr1792b48OHcu3ePMWPGsH79eooXL27p1lLNnDmTTZs2UbJkSRYvXmwV\na2FExPpoipeIiMgT7uzZs3h4ePDrr79SoEABFi5cSJcuXSzd1gMOHjzI6NGjAfjhhx+oUKGChTsS\nEWulgCIiIvIE27t3Lx06dOD8+fNUqVKFNWvW8MYbb1i6rQfcuXOHrl27kpSUxODBg2nfvr2lWxIR\nK6axVRERkSfU4sWLcXBw4Pz58zRv3pyIiAirCycAH3zwAceOHaNmzZpMnz7d0u2IiJVTQBLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e779d438>"
"<matplotlib.figure.Figure at 0x7f22a1fe3048>"
]
}
],
@@ -813,7 +813,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAygAAAGdCAYAAAD5bFceAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4zXf/x/FnpllRW0pbt6K2onQoikokEZs0Zs2qvVva\nRtDS2DVaahaxR0KQELM1Y5RSP1GjVJEKERkyzvf3h1vuKjkZIifh9biuXBc5n8/3+z5xJHmdz7Iy\nDMNAREREREQkC7C2dAEiIiIiIiIPKKCIiIiIiEiWoYAiIiIiIiJZhgKKiIiIiIhkGbaWLiAjRERE\nWLoEERERERFJIwcHh0c+pxEUERERERHJMhRQREREREQky3gmpnj90+OGiSRrCgkJAaBmzZoWrkSy\nCr0m5J/0epB/02tC/k2viewppeUZGkEREREREZEsQwFFRERERESyDAUUERGRbGD0aEtXICKSORRQ\nREREsgFvb0tXICKSORRQREREREQky1BAERERERGRLEMBRUREREREsgwFFBERERERyTIUUERERLIB\nLy9LVyAikjkUUERERLIBbTMsIs8LBRQREREREckyFFBERERERCTLsFhA2bNnD+7u7pQoUQJra2sW\nL178SJuzZ8/SsmVLXnzxRfLkyUONGjU4c+aMBaoVEREREZHMYLGAEhUVRZUqVZg+fTq5cuXCysrq\noccvXLjAu+++S+nSpdm5cyenTp3iq6++Im/evBaqWEREREREnjZbS924SZMmNGnSBIAuXbo88vio\nUaNwdnZm4sSJSZ979dVXM6k6ERGRrGX0aC2UF5HnQ5Zcg2Iymdi0aRPly5fH2dmZIkWKUKtWLVat\nWmXp0kRERCzC29vSFYiIZA4rwzAMSxfxwgsvMGvWLDp16gTAtWvXcHR0JHfu3IwbN44GDRoQHBzM\n8OHD8fPzw8XF5aH+ERERSX8ODQ3N1NpFREQyw5tv1uTw4RBLl/HMSEhI4NSpU+zfv5/Q0FBsbGyw\ns7OjdOnSuLq6UrRoUUuXKPLMKlOmTNKfHRwcHnncYlO8zDGZTAA0b96cgQMHAlClShVCQkKYOXPm\nIwFFREREJCXR0dFs376dffv2cejQISIjIx/bbsGCBXz99dfUrVs3kysUEciiAaVQoULY2tpSoUKF\nhz7/+uuvs3LlSrN9a9as+TRLkwwUEnL/nUD9m8kDek3IP+n18Kjn/WuR3tfE9evXmTFjBrNnz+bW\nrVtJn3/ttddwdnamTp062NjYEB0dzerVq9m0aRNffPEFly9fpkCBAhn6HCRj6ftE9vTP2U+PkyUD\nir29PW+++eYjWwqfPXtWC+VFREQkVUJDQ5k8eTKLFi3i3r17ALz99tt06NABJycnSpcu/Uifjh07\n0qBBA3bt2sXy5cvp06dPZpct8tyzWECJiopKWi9iMpm4dOkSx48fp2DBgpQsWZLhw4fTtm1b3nvv\nPd5//3127tzJypUr8fPzs1TJIiIiFuPlZekKso+TJ0/i7e3NunXreLDU1t3dneHDh/Puu++a7Wtl\nZYWrqyu7du3i3LlzmVGuiPyLxXbxOnz4MNWrV6d69erExsbi5eVF9erV8frvd+BmzZoxd+5cJk2a\nRJUqVZg1axZLlixJ2ppYRETkeaIthlMWFhZG7969qVatGmvXrsXOzo5u3bpx+vRp/Pz8UgwnD+TI\nkQOA+Pj4p1muiCTDYiMo9evXT1oMn5zOnTvTuXPnTKpIREREsqO4uDhmzZqFt7c3ERER2NjY0Ldv\nX0aOHEnx4sXTfL0H08ESExMzulQRSYUsuQZFREREJCWGYRAQEMCQIUM4e/YsAE5OTkyZMuWRjXbS\nYteuXQDUqlUrI8oUkTRSQBEREZFs5/Tp0wwaNIigoCAAypYty5QpU3BxccHKyird17137x47d+4E\n7ocdEcl8WfIkeREREZHHiYuL48svv6Rq1aoEBQWRP39+pk6dysmTJ3F1dX2icALw008/ER0dTZUq\nVXB0dMygqkUkLRRQREREsgEtkodff/2VDh06MHbsWBISEujVqxehoaEMHDgQe3v7DLlHYGAgoNET\nEUtSQBEREckGvL0tXYHlREdHM3jwYLp27cqFCxcoU6YMe/bs4fvvv6dQoUIZdp+4uDiWLVsGgIuL\nS4ZdV0TSRmtQREREJMvauXMn3bt35/z581hbW9OxY0e+//57cuXKleH38vX15erVq1SqVIl69epl\n+PVFJHUUUERERCTLiYiIYPjw4cydOxeAKlWqMGTIECpUqPBUwonJZGLixIkADBs27InXsohI+mmK\nl4iIiGQpmzdvpmLFisydOxc7OzvGjBnD4cOHn2jr4JRs2bKF06dP89JLL+Hh4fHU7iMiKdMIioiI\niGQJMTExDBs2jFmzZgH3zyFZsGABFStWfOr39vHxAWDQoEEZtuBeRNJHAUVERCQb8PKydAVP1/Hj\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7774b70>"
"<matplotlib.figure.Figure at 0x7f22a250cb38>"
]
}
],
@@ -830,14 +830,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Multiplying Multidemensional Gaussians"
"## Multiplying Multidimensional Gaussians"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the previous chapter we incorporated an uncertain measurement with an uncertain estimate by multipling their Gaussians together. The result was another Gaussian with a smaller variance. If two piece of uncertain information corroborate each other we should be more certain in our conclusion. The graphs look like this:\n"
"In the previous chapter we incorporated an uncertain measurement with an uncertain estimate by multiplying their Gaussians together. The result was another Gaussian with a smaller variance. If two piece of uncertain information corroborate each other we should be more certain in our conclusion. The graphs look like this:"
]
},
{
@@ -870,7 +870,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7be6198>"
"<matplotlib.figure.Figure at 0x7f22a24712b0>"
]
}
],
@@ -924,7 +924,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e77832e8>"
"<matplotlib.figure.Figure at 0x7f22a2511780>"
]
}
],
@@ -953,7 +953,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxEAAAGNCAYAAABuXPx3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Wd03Od55/3vVMwAg947ARIAKyhBFFVZJFnNsZWVFTmS\n2/okmzwlb/bV7tlzskd5kWefk+fs8Vq7a2ed9TqhnTheW7ZVbauyiBIpszeQRO+DQS/Ty///vADJ\nkCoUAQKYGczvc44OKIw4c5Ej/Gd+c9/XfVlM0zQRERERERG5RdZkFyAiIiIiIulFIUJERERERBZF\nIUJERERERBZFIUJERERERBZFIUJERERERBZFIUJERERERBZFIUJERERERBblpiHi0KFDPPXUU9TU\n1GC1Wtm3b98Nt//H//gf2bRpEx6Ph6KiIr7whS9w5MiRFS1YRERERESS66YhIhAI0Nrayosvvojb\n7cZisdxw+8aNG/n+97/P+fPnOXz4MA0NDTz++OP4fL4VLVpERERERJLHcqsTq3Nzc/ne977Ht771\nrc/8b+bm5igoKODNN9/k0UcfXbYiRUREREQkdSxbT0Q0GuXv/u7vKC4u5q677lquuxURERERkRRj\nv907eP3113n++ecJBoOUlpbyxhtvUFRUdMN/Mzs7e7sPIyIiIiIiSZCfn/+J7932SsTDDz/MmTNn\nOHLkCF/60pf48pe/TH9//+3erYiIiIiIpKjbDhHZ2dk0Njayc+dOfvjDH5Kfn88//MM/LENpIiIi\nIiKSim57O9PHJRIJDMP4zNs/bTnkVh0/fhyAHTt2LPk+JDXpuV3b9PyuXXpu1zY9v2uXntu1bTme\n389rR7hpiAgEAnR2dgJgGAb9/f2cPn2a4uJiCgoK+Ju/+RueeuopKioqGB8f53vf+x4jIyN89atf\nXXLBIiIiIiKS2m66nenYsWO0tbXR1tZGOBzmhRdeoK2tjRdeeAG73U57eztPP/00zc3NPPXUU0xP\nT/P++++zZcuW1apfRERERERW2U1XIvbu3XvTrUm/+tWvlr0gERERERFJbcs2J0JERERERDKDQoSI\niIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiI\niCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyKQoSIiIiIiCyK\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7c20a90>"
"<matplotlib.figure.Figure at 0x7f22c6bd9e10>"
]
}
],
@@ -963,14 +963,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"To combine the information we multiply the two Gaussians together. Let's see the result of that. I will use FilterPy's `multivarite_multiply` method to perform the multiplication."
"To combine the information we multiply the two Gaussians together. Let's see the result of that. I will use FilterPy's `multivariate_multiply` method to perform the multiplication."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from filterpy.common import multivariate_multiply\n",
"from stats import multivariate_multiply\n",
"\n",
"P2 = multivariate_multiply((10,10), P0, (10,10), P1)[1]\n",
"\n",
@@ -986,17 +986,17 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxEAAAGNCAYAAABuXPx3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYXGWd9/937Wt39d7pdHaSEBJIIITFUdlki0sUAZVV\nxhlnHp0ZZ34zPs6gYnREXMdn+CnO4DOoKIKAgGyDoAMYkQAJEFmSkL3Te3d17XudOuf5o0kAgSTd\n6c7p6vq8ritXQp/uqm84qarzOff9vW+HZVkWIiIiIiIih8hpdwEiIiIiIlJdFCJERERERGRMFCJE\nRERERGRMFCJERERERGRMFCJERERERGRMFCJERERERGRMFCJERERERGRMDhgi1q1bx5o1a5g1axZO\np5Obb775DcevueYajjnmGMLhME1NTZx99tmsX79+UgsWERERERF7HTBEZLNZli9fzvXXX08gEMDh\ncLzh+JIlS/jBD37ASy+9xBNPPMH8+fM577zzGBwcnNSiRURERETEPo5D3bG6rq6OG264gSuvvPJt\nvyeVStHQ0MDDDz/MOeecM2FFioiIiIjI1DFhPRGlUokf/vCHNDc3c+KJJ07Uw4qIiIiIyBTjPtwH\neOCBB7jkkkvI5XK0trby4IMP0tTU9IbvSSaTh/s0IiIiIiJig0gk8qavHfZIxFlnncUf//hH1q9f\nz/vf/34+8IEP0NXVdbgPKyIiIiIiU9Rhh4hgMMiCBQs4+eST+a//+i8ikQg/+clPJqA0ERERERGZ\nig57OtOfqlQqmKb5tsffajjkUG3cuBGAVatWjfsxZGrSuZ3edH6nL53b6U3nd/rSuZ3eJuL8Hqwd\n4YAhIpvNsn37dgBM06Srq4tNmzbR3NxMQ0MD3/zmN1mzZg0zZsxgeHiYG264gb6+Pj7ykY+Mu2AR\nEREREZnaDjidacOGDaxcuZKVK1dSKBRYu3YtK1euZO3atbjdbjZv3swFF1zA4sWLWbNmDfF4nN//\n/vcsW7bsSNUvIiIiIiJH2AFHIs4444wDTk26++67J7wgERERERGZ2iZsnwgREREREakNChEiIiIi\nIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjIm\nChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEiIiIiIjImChEi\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7bdb1d0>"
"<matplotlib.figure.Figure at 0x7f22a24cdcc0>"
]
}
],
"prompt_number": 65
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here I have plotted the orignal estimate it a very transparent yellow, the radar reading in blue, and the estimate generate by multiplying the two Gaussians together in yellow.\n",
"Here I have plotted the original estimate it a very transparent yellow, the radar reading in blue, and the estimate generate by multiplying the two Gaussians together in yellow.\n",
"\n",
"It retained the same shape and position as the radar measurement, but is smaller. We've seen this with the one dimensional Gaussians - multiplying two Gaussians makes the variance smaller because we are incorporating more information, hence we are less uncertain. But the main point I want to make is that the covariance shape reflects the physical layout of the aircraft and the radar system.\n",
"\n",
@@ -1019,17 +1019,17 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx4AAAGNCAYAAACfV6f6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlwXOd95vvv6QVoNPZ9JRaCAElwB0iKlCiK2ihRC2XK\ncWzLCsXxRB7Fju+NK1FcqpoKXXNV8eg6o5HKVkbOeDyXliNZTqLFi2xLsbmIi0gAJLiAIAAS+75v\njW6gt/sHh7RpiuCGxmkAz6cKZaFPn3N+5yXc3U+/531fIxgMBhEREREREQkhi9kFiIiIiIjI3Kfg\nISIiIiIiIafgISIiIiIiIafgISIiIiIiIafgISIiIiIiIafgISIiIiIiIafgISIiIiIiITdl8Dhw\n4ADbt28nJycHi8XCnj17Lm/z+Xx885vfZNWqVcTExJCVlcWXvvQlWltbr3vS/fv3U1ZWRlRUFIWF\nhXz/+9+//SsREREREZGwNWXwcLlcrFy5kldffZWoqCgMw7hi24kTJ/jP//k/c+LECd5//31aW1t5\n+OGH8fv91zxmY2MjjzzyCJs2baKqqooXXniBr3/967zzzjvTd1UiIiIiIhJWjBtduTw2NpbXXnuN\nnTt3XvM5NTU1LFu2jNOnT7Ns2bJPfc43v/lN3nvvPWpray8/9uyzz1JdXc3hw4dvsnwREREREZkN\npnWMx/DwMACJiYnXfM6RI0fYunXrFY9t3bqVioqKKXtKRERERERk9rJN14EmJyf567/+a7Zv305W\nVtY1n9fd3U16evoVj6Wnp+Pz+ejr67ti26UgIyIiIiIis0d8fPxVj01L8PD5fDz99NOMjIzwi1/8\nYjoOKSIiIiIic8htBw+fz8cXv/hFqqur2bdv35S3WQFkZGTQ1dV1xWPd3d3YbDZSUlJutxwRERER\nEQlDtxU8vF4vX/jCFzh79iz79u0jLS3tuvts3LiRd99994rHPvroI9atW4fVar3mfp/WXXMjKioq\nAFi7du0t7S83Ru0cemrjmaF2nhlq59BTG88MtfPMUDuH3nS08fWGSVx3Ot2qqiqqqqoIBAI0NzdT\nVVVFa2srfr+fz33ucxw9epQ333yTYDBIV1cXXV1deDyey8fYuXMnzzzzzOXfn3vuOdrb2/nGN75B\nTU0NP/jBD9izZw9/8zd/c8sXKSIiIiIi4W3K4FFeXk5paSmlpaV4PB52795NaWkpu3fvpq2tjZ/9\n7Gd0dnZSVlZGVlbW5Z+f/vSnl4/R2tp6xaKC+fn5fPDBBxw4cIA1a9bw7W9/m+9+97vs2LEjdFcp\nIiIiIiKmmvJWqy1bthAIBK65faptl+zdu/eqxzZv3kxlZeUNlCciIiIiInPBtK7jISIiIiIi8mkU\nPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPERE\nREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPERERERE\nJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQU\nPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPERE\nREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPEREREREJOQUPERERERE\nJOQUPEREREREJOSmDB4HDhxg+/bt5OTkYLFY2LNnzxXb33nnHR566CHS0tKwWCzs37//uifct28f\nFovlqp+6urrbuxIREREREQlbUwYPl8vFypUrefXVV4mKisIwjCu2j4+Ps2nTJl5++WWAq7ZP5ezZ\ns3R1dV3+WbRo0S2ULyIiIiIis4Ftqo3btm1j27ZtAOzateuq7U8//TQAfX19N33i1NRUkpOTb3o/\nERERERGZfUwb47F27VqysrJ44IEH2Ldvn1lliIiIiIjIDDCCwWDwRp4YGxvLa6+9xs6dO6/a1tfX\nR1paGvv27WPz5s1THqeuro59+/axbt06JiYmeOONN3j99dfZv38/mzZtuuK5w8PDl/+7vr7+RsoU\nERERERETFBUVXf7v+Pj4q7ZPeatVKBQXF1NcXHz59w0bNtDU1MR3vvOdq4KHiMxvgUCQriE37kk/\n/kDw//wE8PuDOCNtpCU4iIuy39T4MhERETHHjAePT7N+/XrefvvtKZ+zdu3aWzp2RUXFbe0vN0bt\nHHrzpY2DwSDnWvqorOvk5IUuOnsnmJyAQACCwd//b0TEBNHRLhLjIshOjSUnJY6c1DgKMhPJTI65\n5TAyX9rZbGrn0FMbzwy188xQO4fedLTxH96t9GnCInhUVVWRlZVldhkiYrL23hF+svcMJ871090N\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7787a90>"
"<matplotlib.figure.Figure at 0x7f22ac05f358>"
]
}
],
"prompt_number": 66
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, to incorprate this new information we will multiply the Gaussians together."
"Again, to incorporate this new information we will multiply the Gaussians together."
]
},
{
@@ -1050,11 +1050,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx4AAAGNCAYAAACfV6f6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmUXGd97vvvrrmqq4fqedLYas1qDS0ZyZblAVu2wJiY\nhAQcH1mXG3MdOKwFN3GyvG5WxLmHG+LA8bUXkGNzOOQqEINJYmLDMWCHWJJna2qNLbWkHtRj9VzV\nNU/7/iEkLGS1NXR19fB81uqFu3btvX/7VVNVT737fV/DNE0TERERERGRLLLkugAREREREZn5FDxE\nRERERCTrFDxERERERCTrFDxERERERCTrFDxERERERCTrFDxERERERCTrFDxERERERCTrxg0ee/fu\n5f7776e2thaLxcKuXbsubkulUvzlX/4lq1evxuv1Ul1dzR//8R/T2dn5oSfds2cPjY2NuN1u6urq\nePbZZ2/8SkREREREZMoaN3iEw2EaGhp4+umncbvdGIZxybZDhw7xV3/1Vxw6dIgXX3yRzs5O7r33\nXtLp9BWP2dbWxsc+9jE2b95MU1MTjz/+OF/60pd44YUXJu6qRERERERkSjGuduXy/Px8vvOd77B9\n+/YrPqe5uZkVK1Zw9OhRVqxY8YHP+cu//Ev+7d/+jVOnTl187JFHHuH48eO89dZb11i+iIiIiIhM\nBxM6xiMQCADg8/mu+Jy3336brVu3XvLY1q1b2b9//7g9JSIiIiIiMn3ZJupAiUSCP/uzP+P++++n\nurr6is/z+/1UVFRc8lhFRQWpVIrBwcFLtl0IMiIiIiIiMn0UFhZe9tiEBI9UKsVDDz1EMBjk5z//\n+UQcUkREREREZpAbDh6pVIrPfvazHD9+nN27d497mxVAZWUlfX19lzzm9/ux2WyUlpbeaDkiIiIi\nIjIF3VDwSCaTfOYzn+HEiRPs3r2b8vLyD91n06ZN/PSnP73ksVdffZUNGzZgtVqvuN8Hdddcjf37\n9wOwfv3669pfro7aOfvUxpND7Tw51M7ZpzaeHGrnyaF2zr6JaOMPGybxodPpNjU10dTURCaToaOj\ng6amJjo7O0mn03z605/m3Xff5bnnnsM0Tfr6+ujr6yMWi108xvbt23n44Ycv/v7oo4/S3d3NV77y\nFZqbm/ne977Hrl27+PM///PrvkgREREREZnaxg0e+/btY926daxbt45YLMbOnTtZt24dO3fupKur\ni5deeone3l4aGxuprq6++POTn/zk4jE6OzsvWVRw/vz5vPzyy+zdu5e1a9fy9a9/nW9961s88MAD\n2btKERERERHJqXFvtbr99tvJZDJX3D7etgtee+21yx7bsmULBw4cuIryRERERERkJpjQdTxERERE\nREQ+iIKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhk\nnYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKH\niIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiI\niIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhk\nnYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKHiIiIiIhknYKH\niIiIiIhknYKHiIiIiIhk3bjBY+/evdx///3U1tZisVjYtWvXJdtfeOEF7rnnHsrLy7FYLOzZs+dD\nT7h7924sFstlPy0tLTd2JSIiIiIiMmWNGzzC4TANDQ08/fTTuN1uDMO4ZHskEmHz5s08+eSTAJdt\nH8+JEyfo6+u7+LNo0aLrKF9ERERERKYD23gbt23bxrZt2wDYsWPHZdsfeughAAYHB6/5xGVlZZSU\nlFzzfiIiIiIiMv3kbIzH+vXrqa6u5q677mL37t25KkNERERERCaBYZqmeTVPzM/P5zvf+Q7bt2+/\nbNvg4CDl5eXs3r2bLVu2jHuclpYWdu/ezYYNG4jH4/zgBz/gmWeeYc+ePWzevPmS5wYCgYv/ffr0\n6aspU0REREREcqC+vv7ifxcWFl62fdxbrbJh8eLFLF68+OLvGzdupL29nW984xuXBQ8Rmd0yGZO+\n0SjRRJp0xvzNT4Z02sTjtFFe5KLAbb+m8WUiIiKSG5MePD7ITTfdxPPPPz/uc9avX39dx96/f/8N\n7S9XR+2cfbOljU3T5OS5QQ609HL4bB+9A3EScchkwDR/+78OR5y8vDC+Agc1ZfnUlhZQW1bAgiof\nVSXe6w4js6Wdc03tnH1q48mhdp4caufsm4g2fv/dSh9kSgSPpqYmqqurc12GiORY90CQH792jEMn\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7966438>"
"<matplotlib.figure.Figure at 0x7f22a2174f98>"
]
}
],
"prompt_number": 67
"prompt_number": 19
},
{
"cell_type": "markdown",
@@ -1086,11 +1086,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7b46b00>"
"<matplotlib.figure.Figure at 0x7f22ac065358>"
]
}
],
"prompt_number": 70
"prompt_number": 20
},
{
"cell_type": "markdown",
@@ -1121,11 +1121,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxEAAAGNCAYAAABuXPx3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmQnPd93/n38/TT9zX3AQxmcBA8ABKkAJK6JZCWRFGR\nGCuObSlWFFZir7PJpsr5x95skkWqNlVZpVzeKBt5o5SsiEmVnXhTOizJWlG2RFGUKArgTQAkcc59\n9X13P9f+McCQEHFjZnp6+vOqmuqZ6We6vz09092f/v2+v5/h+76PiIiIiIjIdTLbXYCIiIiIiHQW\nhQgREREREbkhChEiIiIiInJDFCJEREREROSGKESIiIiIiMgNUYgQEREREZEbohAhIiIiIiI35Koh\n4umnn+axxx5jbGwM0zR54oknLjn/X/7Lf8ldd91FIpGgr6+Pj3zkIzz77LPrWrCIiIiIiLTXVUNE\ntVrlwIEDfPGLXyQajWIYxiXn33nnnfzxH/8xr732Gs888wy7du3ikUceYXFxcV2LFhERERGR9jGu\nd8fqZDLJl770JT7/+c9f8ZhSqURPTw/f//73+ehHP7pmRYqIiIiIyOaxZj0RrVaL//Sf/hP9/f0c\nOnRorS5WREREREQ2GetWL+A73/kOn/3sZ6nVagwODvLd736Xvr6+S44pFou3ejUiIiIiItIG6XT6\nHd+75ZGIhx9+mJdffplnn32WT37yk3zqU59icnLyVi9WREREREQ2qVsOEbFYjN27d/Pggw/yla98\nhXQ6zde+9rU1KE1ERERERDajW57O9Mtc18XzvCuef7nhkOt17NgxAO6///6bvgzZnHTfbm26f7cu\n3bdbm+7frUv37da2FvfvtdoRrhoiqtUqp06dAsDzPCYnJ3nppZfo7++np6eHL3zhCzz22GOMjIyw\nvLzMl770Jebm5viN3/iNmy5YREREREQ2t6tOZzp69CgHDx7k4MGDNBoNjhw5wsGDBzly5AiWZXHi\nxAk+/elPc/vtt/PYY4+Rz+f5yU9+wv79+zeqfhERERER2WBXHYk4fPjwVacmff3rX1/zgkRERERE\nZHNbs30iRERERESkOyhEiIiIiIjIDVGIEBERERGRG6IQISIiIiIiN0QhQkREREREbohChIiIiIiI\n3BCFCBERERERuSEKESIiIiIickMUIkRERERE5IYoRIiIiIiIyA1RiBARERERkRuiECEiIiIiIjdE\nIUJERERERG6IQoSIiIiIiNwQhQgREREREbkhChEiIiIiInJDFCJEREREROSGKESIiIiIiMgNUYgQ\nEREREZEbohAhIiIiIiI3RCFCRERERERuiEKEiIiIiIjcEIUIERERERG5IQoRIiIiIiJyQxQiRERE\nRETkhihEiIiIiIjIDbHaXYCIiGwOtuNiO97Kqeutft1yXDzPx/d9fFg59Vd+5sxCGR+InlvCMAwM\ng5VTWP3aCpgErQDBgEkoGFj9PGgFME2jjbdYRERulkKEiEgXaNku9aZN6wpBwXE9XM/G953LfuB7\ngM+FGLF6uY3mFAD5UhC4GAgMjNXPTTACmGYQw7AwsMCwME0Lw7CwAm8FiqBlXhIwIiGLaNjCMBQ0\nREQ2G4UIEZEtpmW71Jo2tYZNrWlTrbdoOS08r4nvXwwKNr7n4HMhJOBimQZBy7gwcmBcGDkwsQIG\nAdNYfTH/1kgD+JWV790xFgLA97lktMLzfRzXxnFaF0KLfyHErHzu+eZKoLgQLoyLAYMghhkiYIaJ\nRYLEwkFikSDxSEjBQkRkE1CIEBHpYFcODI23fdQJmB7RsEk4GCAYMAhaK+EgaAUJBkIErZtrkQtZ\nKy/mI6HATf286/pvhYtfChuNlkut6VNvhMmbEQJmFMOMKFiIiGwCChEiIh2kUm9RqjavKzDEYxbR\ncIBYOEYouDnX0QgEDAKBAJHQ5c/3PJ9a06XebFBrVqk3rx0sEtEQ6UQEK7A5b7OIyFagECEisol5\nnk+p1qRQaVCsNGjadVy3gufVOy4w3AzTNEhELRLRt56urh0s4lhWgkQ0TE8iQjoRIRLS052IyFrS\no6qIyCZjO+5KaKg2KVUb2E4V1y3juhXCQY/euEU8Ym25wHC9rhUsSrUKlfo8jUaUfDlBIJAkFl4J\nEz2JCInoFYY9RETkuilEiIhsArWGTbHaoFBpUG00cZ0KjlvG86rEwwYD6SCpeOSmew+2urcHi8Ge\n8IURHIdiNUeptkS+GaJUTTKXSRAOxkgnIqTjYdLxiJaZFRG5CQoRIiJtUq41yZcbFKsNGq3GymiD\nUwHqJGMBUrEg6Xhcc/tvgmka9CSC9CSCAFTqDqVaaSVUVEyq9QSLuSRWIE4qvjLtqTcZ1e9aROQ6\nKUSIiGwg1/XIFGssF2vUGpUL05TKWKZNKh4kHbdIRpNaaWiNXRyl2NYPTdulWGlQrJWp1n0azTi5\nYpJgMEVfKsZgOkZcU55ERK5KIUJEZAPUGjZLhSq5Ug3bLmI7eYKBJgPJEKl4iFg42u4Su0Y4GGCo\nN8BQbxjX9SnWbAqVJcq1RRrNNMuFXhLRGIM9cfqSUU13EhG5DIUIEZF14nk++XKd5WKNcq2K4xRw\nnQKJqMH2/hDpeKrdJXa9QMCgLxmiLxmiZXtkS1WypQK5ZpRSpYeZcJr+VJTBnrhWeBIReRs9IoqI\nrLFmy2G5WCNbrNFolXDsPIZRoz8VpD8VJRxUc/RmFAqajPZHGOkLk6/YZIsLlCuL1Bs9LOR6Scdj\nDPXGScfDmm4mIl1PIUJEZI0UKg2WC1UKlRqOU8BxCsTCHiODIXoT6nPoFIbx1uhEvemSKZXIl7Ms\nt5Lky71EwwkGe2IMpGMELQVCEelOChEiIrfA932ypTrz2TL1ZgXbzuN7FXqTAQbSYWJhvcjsZNFw\ngB2DUbb1RchXWmSK05QqQWqNHuYyPfSn42zrTxLS6JKIdBmFCBGRm5Qv15nLlKnUS9j2EiGrxWhv\niL5kgkBAow5bSSBgMJAOM5AOU6k7LBezFKvLtOw+ssV+hnoTjPYntUSsiHQNhQgRkRtUrjWZzZQp\nVUvYrWWCVp3xoTC9iWS7S5MNcHG52JbtMZ8rUqgUmHX6yRT7GOlLMNyb0IpOIrLlKUSIiFynWsNm\nNlOiUKnQai1jUmH7QJi+ZEL9Dl0oFDSZGI4x1OMyn8tSquaYag2ylO9htD/JYE9MfxcismUpRIiI\nXEOz5TCXLZMplrHtDL5XZLg3xGBa7zjLSt/E7tE4lbrDfHaRcjVLozXIYj7Ntv4k/elYu0sUEVlz\nChEiIldgOy7z2QrLhTItO4vr5BnssRjuSarnQd4hEbXYO5agWLWZz85RKmepN4dYzKfYPpAknYi0\nu0QRkTWjECEi8ktc12MhV2ExX6Fl53DsLL1Jk9G+OEFLjbNydel4kHQ8SK7cYiE3Rb4Up1IfIh1P\nsH0wRSIaaneJIiK3TCFCRORtCpUGU4tF6o0cLXuZdBxGR6JEQlrCU25MXzJEbyJIpthiIX+OTCFF\nqTbAUE+ascEUAa3kJCIdTCFCRARwXI/ppSKZYolWc45oqMXE9gjxiB4m5eYZhsFgT5j+VIilQoPF\n/Dnms4OUak0mhntIxcPtLlFE5KZc822Qp59+mscee4yxsTFM0+SJJ55YPc9xHP7gD/6Ae++9l0Qi\nwbZt2/it3/otpqen17VoEZG1VKg0OHF+mcXcLM3GObb1++wdSyhAyJoxTYORvgh3jscImRlK5XO8\nMb3A5EIB1/XaXZ6IyA27ZoioVqscOHCAL37xi0Sj0UuWq6tWq7z44ov8i3/xL3jxxRf51re+xfT0\nNB//+MdxXXddCxcRuVWO63FuPs+pmUXKlbOEAlnuGo8zkNa7w7I+wsEAe8cSjPR6NBvnmM/OcmJy\nmVK12e7SRERuyDXfZnv00Ud59NFHAXj88ccvOS+dTvPkk09e8r0vf/nL7N+/n9dff539+/evXaUi\nImvoYu9DrbGMY2fYPhBiIJ1od1nSJYZ6w6QTFlOLGUrlMm+0RtUrISIdZc3H6ovFIgC9vb1rfdEi\nIrfsHb0P4RZ7R+OEgnrhJhvr4qjEUr7JfE69EiLSWQzf9/3rPTiZTPKlL32Jz3/+85c9v9Vq8dBD\nDzE4OMg3v/nN1e9fDBYAp06duoVyRURuXrlus5Cv03LyGBQZSpv0JrTqkrRfy/GZz9vUW2EMY5De\nRJShdJSANjMUkTbZu3fv6ufpdPod56/ZSITjOHzuc5+jVCrxne98Z60uVkTkljmux2KxQbFaw/eX\niYVajPYGCVp6gSabQ8gymBgMkS3bZEqz5Cu9VBtpRnqjJCLBdpcnIvIOaxIiHMfhs5/9LMePH+ep\np5666lSm+++//6av59ixY7d8GbI56b7d2tp5/9YaNmfmcgwnlum3PbYP7FHj9Bo6ceIEAPv27Wtz\nJVtH03aZWqxTb4UJhUcZ7e9l+2CqLbXosXnr0n27ta3F/fv2mUSXc8shwrZtPvOZz3DixAmeeuop\nhoaGbvUiRUTWRK5U5/xCjnpjlmiwzt5x9T7I5ndpr8R5ZpZt6i2HXSM9aroWkU3jmiGiWq2u9jF4\nnsfk5CQvvfQS/f39bNu2jV//9V/n2LFjfPvb38b3fRYWFgDo6ekhEomsb/UiIlcwu1xiLpun2Zyh\nL+kzNhC/ZIlqkc1uqDdMLBLg3MI0mUKTZsvhtu19hEPav0RE2u+ab2kcPXqUgwcPcvDgQRqNBkeO\nHOHgwYMcOXKEmZkZ/uIv/oL5+XkOHTrEtm3bVj/+/M//fCPqFxG5hOf5nJ7NMbO8TLNxnu39BjsG\nowoQ0pESUYs7xhIEWKZYmeHklPaUEJHN4ZpvZxw+fBjPu/Jumlc7T0RkIzVbDmfm8pSqS3Line truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7c96860>"
"<matplotlib.figure.Figure at 0x7f22a2025cf8>"
]
}
],
"prompt_number": 81
"prompt_number": 21
},
{
"cell_type": "markdown",
@@ -1153,11 +1153,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx4AAAGNCAYAAACfV6f6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0lPed5/v389RepQXtQhICITaxI8AGG+MdGydxmnQn\nnXa7bSaJPZnJzZ3kdLtzfafPkLmT04knGV/7Zhk7naSbTtpZuoNjJ20ndmIWYzBGGLFIAgm0oH1f\nSyrV8tT9Q0Y2wQgQKpWWz+ucOpSerb7Pg06pPvV7fr+fEY1Go4iIiIiIiMSQGe8CRERERERk5lPw\nEBERERGRmFPwEBERERGRmFPwEBERERGRmFPwEBERERGRmFPwEBERERGRmFPwEBERERGRmBszeBw4\ncIAHH3yQvLw8TNNk9+7do+vC4TBf+cpXWLNmDQkJCeTk5PCXf/mX1NfXX/VF9+/fz/r16/F4PBQW\nFvL888/f+JmIiIiIiMiUNWbw8Pv9rF69mmeffRaPx4NhGJesO378OH/3d3/H8ePHeemll6ivr+f+\n++8nEolc8Zg1NTU88MADbNmyhdLSUp588km++MUvsmfPnok7KxERERERmVKMa525PDExke9+97s8\n8sgjV9ymoqKCFStWcOrUKVasWPGh23zlK1/hV7/6FWfPnh1d9thjj1FWVsahQ4eus3wREREREZkO\nJrSPR29vLwApKSlX3Obw4cNs27btkmXbtm2jpKRkzJYSERERERGZvuwTdaBgMMhf//Vf8+CDD5KT\nk3PF7VpbW8nKyrpkWVZWFuFwmI6OjkvWXQwyIiIiIiIyfSQnJ1+2bEKCRzgc5uGHH6avr4/f/OY3\nE3FIERERERGZQW44eITDYf7iL/6CsrIy9u3bN+ZtVgDZ2dm0tLRcsqy1tRW73U56evqNliMiIiIi\nIlPQDQWPUCjEpz/9acrLy9m3bx+ZmZlX3Wfz5s28+OKLlyx7/fXX2bhxIzab7Yr7fVhzzbUoKSkB\nYMOGDePaX66NrnPs6RpPDl3nyaHrHHu6xpND13ly6DrH3kRc46t1k7jqcLqlpaWUlpZiWRZ1dXWU\nlpZSX19PJBLhk5/8JEeOHOGFF14gGo3S0tJCS0sLgUBg9BiPPPIIjz766OjPn//852lsbOTLX/4y\nFRUV/OAHP2D37t38zd/8zbhPUkREREREprYxg8fRo0cpLi6muLiYQCDArl27KC4uZteuXTQ0NPDy\nyy/T3NzM+vXrycnJGX384he/GD1GfX39JZMKLliwgFdeeYUDBw6wbt06vv71r/Ptb3+bHTt2xO4s\nRUREREQkrsa81eqOO+7Asqwrrh9r3UV79+69bNnWrVs5duzYNZQnIiIiIiIzwYTO4yEiIiIiIvJh\nFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxE\nRERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERE\nRCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTm\nFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxE\nRERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERERCTmFDxERERE\nRCTmFDxERERERCTmxgweBw4c4MEHHyQvLw/TNNm9e/cl6/fs2cN9991HZmYmpmmyf//+q77gvn37\nME3zskdlZeWNnYmIiIiIiExZYwYPv9/P6tWrefbZZ/F4PBiGccn6wcFBtmzZwtNPPw1w2fqxlJeX\n09LSMvpYtGjROMoXEREREZHpwD7Wyu3bt7N9+3YAdu7cedn6hx9+GICOjo7rfuGMjAzS0tKuez8R\nEREREZl+4tbHY8OGDeTk5HDPPfewb9++eJUhIiIiIiKTwIhGo9Fr2TAxMZHvfve7PPLII5et6+jo\nIDMzk3379rF169Yxj1NZWcm+ffvYuHEjw8PD/PjHP+a5555j//79bNmy5ZJte3t7R59XVVVdS5ki\nIiIiIhIHixcvHn2enJx82foxb7WKhSVLlrBkyZLRnzdt2kRtbS3f/OY3LwseIjK7WVaUlp4hhoIR\nIlb0vYdFJBLF67KTOcdNksdxXf3LREREJD4mPXh8mJtuuomf//znY26zYcOGcR27pKTkhvaXa6Pr\nHHuz5RpHo1HOXOjgWGUzJ8630Nw+THAYLAui0ff/dTqH8fn8pCQ5yc1IJC89ibyMJArmpjA3LWHc\nYWS2XOd403WOPV3jyaHrPDl0nWNvIq7xB+9W+jBTIniUlpaSk5MT7zJEJM4a2/v42d7THD/TSWsr\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e77842e8>"
"<matplotlib.figure.Figure at 0x7f22a2357e80>"
]
}
],
"prompt_number": 82
"prompt_number": 22
},
{
"cell_type": "markdown",
@@ -1196,11 +1196,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx8AAAGdCAYAAABzQ85fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGjhJREFUeJzt3X1slfUZ8PGrx67jvVEQM0TgIYItKgYeGsEwQhRd5gtj\nziy6Tal/GGW+oM5XtqnJDGxOt4kS0C0zTqMGNkWZxmSLSK2YUJAKG7KRTMDJMCoLCltRevr8sQcy\nhqJAz3Vj+XwSEnqfu+dcf9wlfPu7X6o6Ojo6AgAAoMJKRQ8AAAAcHsQHAACQQnwAAAApxAcAAJCi\nuugBPs3WrVuLHgEAADgAtbW1e3xt5QMAAEghPgAAgBSH/GlX/+1/l22gq1m+fHlERIwZM6bgSaDy\nHO8cThzvHE72ddmElQ8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKI\nDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8A\nACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAg\nhfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4\nAAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAA\nAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABS\niA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogP\nAAAghfgAAABSiA8AACCF+AAAAFKIDwAAIIX4AAAAUogPAAAghfgAAABSiA8AACCF+AAAAFKIDwAA\nIEV10QMAAHRF5XJHPPXS6zFv0fLYsOndiIgYPGBNTJvcEFPG10WpVFXwhJCvsPiYM2dOPPjgg7F+\n/fqIiDjxxBPjBz/4QZx99tlFjQQA0Cm2bmuL82Y8Hi1r34q2j9p3b1/3jw+iedXGaKg7NhbNvChq\ne3UrcErIV9hpV8cdd1zcddddsXLlylixYkWcfvrpMWXKlHjttdeKGgkA4KCVyx1x3ozH46XVG/cI\nj13aPmqPl1ZvjPNmPB7lckcBE0JxCouPyZMnx1e+8pUYOnRoHH/88XHnnXdG7969Y9myZUWNBABw\n0BY2r42WtW996n4tf9kUC5vXJkwEh45D4oLz9vb2eOKJJ6KtrS0mTJhQ9DgAAAds7jMtH7vi8b/a\nPtwZc59pSZgIDh2FXnC+evXqGDduXOzYsSO6d+8e8+fPjxNOOOET91++fHnidFAcxzqHE8c7Xc2u\ni8s/675+Buhqhg0b9omvFbryUVdXF6tWrYply5bFVVddFRdeeKEfQAAA6KKqOjo6Dpkrnc4888wY\nOHBgPPTQQ7u3bd26dfffa2trixgL0uyK7zFjxhQ8CVSe452u6swbfhN/XPHGZ9p30v/9P/GHuy+p\n8ESQa1//fz8krvnYpb29PcrlctFjAAAcsGmTG6LbF4741P261VTHtMkNCRPBoaOwaz5uueWWOPfc\nc2PgwIHxwQcfxGOPPRZLliyJ559/vqiRAAAO2pTxddFQd2y8tHrjPvdrOGFATBlflzQVHBoKW/l4\n++234zvf+U7U1dXFpEmTYsWKFfH888/HmWeeWdRIAAAHrVSqikUzL4ovnzwoutXs/XvebjXV8eWT\nB8WimRd5yjmHncJWPv77ug4AgK6ktle3ePEXjbGweW3MfaZl9x2wBg/oF9MmN8SU8XXCg8NSobfa\nBQDoqkqlqjh/Qn2cP6HeDRbg/zukLjgHAAC6LvEBAACkEB8AAEAK8QEAAKQQHwAAQArxAQBwACZO\nnBhXX331AX//kiVL4rTTTot+/fpFjx49or6+Pu65555OnBAOPW61CwBQgN69e8e1114bJ598cvTo\n0SOam5vj8ssvj27dusWVV15Z9HhQEVY+AAD2U2NjYzQ1NcWcOXOiVCpFqVSKjRs37td7jB49Or75\nzW9GfX19DB48OL797W/HWWedFUuXLq3Q1FA8Kx8AAPtp9uzZsW7duqivr4+ZM2dGRES/fv2iV69e\nUVW195PLy+VyRPznVK1nn332Y99z5cqV8corr8SsWbMqNzgUTHwAAOynPn36RE1NTfTo0SP69++/\ne/uqVas+dv9d20899dS9Xhs4cGC8++678dFHH8UPf/jDaGxsrMjMcCgQHwAAnWTo0KEfu33Lli0R\nEfGlL31pr9defvnl2LZtW7zyyitx4403Rv/+/eO73/1uReeEoogPAIBOciCnXQ0ePDgiIk488cR4\n++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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e78df470>"
"<matplotlib.figure.Figure at 0x7f22a23de3c8>"
]
}
],
"prompt_number": 20
"prompt_number": 23
},
{
"cell_type": "markdown",
@@ -1223,11 +1223,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7964c88>"
"<matplotlib.figure.Figure at 0x7f22a2176c88>"
]
}
],
"prompt_number": 21
"prompt_number": 24
},
{
"cell_type": "markdown",
@@ -1256,11 +1256,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e79ab080>"
"<matplotlib.figure.Figure at 0x7f22a2121390>"
]
}
],
"prompt_number": 22
"prompt_number": 25
},
{
"cell_type": "markdown",
@@ -1283,11 +1283,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAGkCAYAAADni2AdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtwXPV9///X2at2Ja11MZYs24DxjVsIAUPAoYmhgZj+\nUtJMSCmEa1P4pTQFkmkyoc13uAxDhma+CfAlpQkN32FIoEkv6a9JqYEmIYYmBZtwCXff8VW2LFla\n3fb+++Ocz9mz0q60tla71u7zMUO0Pues52OPYuml9+f9/li5XC4nAAAAAJiDfLVeAAAAAAAcLQIN\nAAAAgDmLQAMAAABgziLQAAAAAJizCDQAAAAA5iwCDQAAAIA5i0ADAAAAYM6aM4Fmw4YNuuyyy7R4\n8WL5fD499thjBfevv/56+Xy+gv/WrFlTo9UCAAAAqIY5E2hGRkZ0xhln6IEHHlAkEpFlWQX3LcvS\nxRdfrP3797v/PfXUUzVaLQAAAIBqCNR6AeW69NJLdemll0qyqzET5XI5hUIhLViwoMorAwAAAFAr\nc6ZCMx3LsvTCCy+oq6tLq1at0k033aSDBw/WelkAAAAAZtGcqdBMZ926dfrMZz6jpUuXavv27fr6\n17+uiy66SC+//LJCoZD73ODgYA1XCQAAAOBozZs3b9K1ugk0V1xxhfv6tNNO09lnn60TTjhB//Ef\n/6FPf/rTNVwZAAAAgNlSN1vOJlq4cKEWL16sLVu21HopAAAAAGZJ3VRoJjp48KD27NmjhQsXlnym\nWMlqLtq0aZMkafXq1TVeCeYiPn9wtPjcwUzw+YOjxedO45muZWTOBJqRkRFt3rxZkpTNZrVz5069\n+uqr6uzsVEdHh+644w5dfvnl6u7u1o4dO3T77berq6uL7WYAAABAHZszW842btyos846S2eddZbG\nx8d1xx136KyzztIdd9whv9+vN954Q5/61Ke0atUqXX/99TrllFP0m9/8Rs3NzbVeOgAAAIBZMmcq\nNGvXrlU2my15f/369VVcDQAAAIBjwZyp0AAAAADARAQaAAAAAHMWgQYAAADAnEWgAQAAADBnEWgA\nAAAAzFkEGgAAAABzFoEGAAAAwJxFoAEAAAAwZxFoAAAAAMxZBBoAAAAAcxaBBgAAAMCcRaABAAAA\nMGcRaAAAAADMWQQaAAAAAHMWgQYAgFmQzmSVzeZqvQwAqHsEGgAAKmz9S1vUcdl96rn8f2vLnv5a\nLwcA6hqBBgCAChpLpHTz/f+h+GhSvQMj+ov7n6r1kgCgrhFoAACooP96eZu27zus+fOiagoF9Mym\nrdqx/3CtlwUAdYtAAwBABa1/aYsk6YufPkd/8OEVkqSnnWsAgMoj0AAAUCG5XE7/6YSXS89doXXn\nLpMkrd+4tZbLAoC6Fqj1AgAAqBdb9vRr+77D6oxFdPbKheruaJFkb0NLpTMKBvw1XiEA1B8qNAAA\nVMhv39snSbrgA8fL7/fp+K55WrqwTcNjSaadAcAsIdAAAFAh7+0+JEk6+fj57rVVS+zX7+06VJM1\nAUC9I9AAAFAh7+22qzArFnW411Yutl9vpkIDALOCQAMAQIWYKszKJZ3utZWLOwvuAQAqi0ADAEAF\n5HI5d8uZCTGStMIEmt0EGgCYDQQaAAAq4NDQmA4PjyvWHNaC9mb3uqnWEGgAYHYQaAAAqACzpWzF\nog5ZluVeX3JcTOGgX/sODSs+mqjV8gCgbhFoAACogGLbzSTJ7/dpuTMkgNHNAFB5BBoAACqg2EAA\nw912xmAAAKg4Ag0AABWws3dQkrS0u23SvZMWtkuSdvQeruqaAKAREGgAAKiA/f3DkqSFna2T7nV3\ntEiSevtHqromAGgEBBoAACqgd8AONF2eCWeGudY7QKABgEoj0AAAUAGmQmOqMV7mmnkGAFA5BBoA\nAGYolc7o0NCYfD5L8+dFJ93vaifQAMBsIdAAADBDB5ytZMfNi8rvn/yl1e2hGSDQAEClEWgAAJgh\n0xtjKjETdcYi8vksHRoaUyqdqebSAKDuEWgAAJihqfpnJPtwzQVt9mCAAwwGAICKItAAADBDU004\nM8w9+mgAoLIINAAAzNB0FRrvPUY3A0BlEWgAAJght4emY6oKDZPOAGA2EGgAAJght0JTYiiAJHV3\nsOUMAGYDgQYAgBnKV2hKBxpToWF0MwBUFoEGAIAZMpPLzCSzYsxQgAOHR6uyJgBoFAQaAABmaGB4\nTJLUEYuUfKa91b43EB+rypoAoFEQaAAAmKGB+Lgkqb2lqeQz7a1NBc8CACqDQAMAwAyMJ9MaT6YV\n8PsUbQqWfK7NCTummgMAqAwCDQAAM3B42KnOtDbJsqySz5ktZ+Z5AEBlEGgAAJgB0xNjAkspZjva\nQHxcuVxu1tcFAI2CQAMAwAyU0z8jSeFQQJFwQOlMViPjqWosDQAaAoEGAIAZyG85m7pC432GbWcA\nUDkEGgAAZsBsOWubpkIjSW3NZtsZgwEAoFIINAAAzMDQaEKSNK85PO2z81rsZ4ZGErO6JgBoJAQa\nAABmID6alCTFotMHmtaI/Ux8LDmrawKARkKgAQBgBkyFpjUamvbZWDMVGgCoNAINAAAzYMKJt0KT\nSmf0yM9e1r9ueLvg2ZgTekwIAgDMXKDWCwAAYC4z4STm6aF54F9e1Ff+/llJ0tN/e7UuOWdZwTNU\naACgcqjQAAAwAxN7aHK5nL79z//j3ve+zvfQEGgAoFIINAAAzEC+h8YOK29sP6C9fXH5fZYk6blX\nd2gsYR+kSYUGACqPQAMAwAy4PTROWHl641ZJ0rWXfFBnr1yo8WRaz7/+vv2ME3rooQGAyiHQAAAw\nA2b7WMxToZGk809brPNPW1xwzUxCM9vUAAAzN2cCzYYNG3TZZZdp8eLF8vl8euyxxyY9c+edd2rR\nokWKRqO68MIL9dZbb9VgpQCARjKxQrN174AkaVlPh5b1dDjX+u1nqNAAQMXNmUAzMjKiM844Qw88\n8IAikYgsyyq4f9999+lb3/qWHnroIW3cuFELFizQxRdfrOHh4RqtGADQCNwemohdfdm2zwSadp20\nsN25dlgSPTQAMBvmTKC59NJLdc899+gzn/mMfL7CZedyOd1///26/fbb9elPf1qnnXaaHnvsMcXj\ncT3xxBM1WjEAoN5lszl3+1hLJKSxREp7++IKBnxafFxMy3rsQGMqNK1UaACg4uZMoJnK9u3b1dvb\nq0suucS91tTUpI9+9KP69a9/XcOVAQDq2ch4Psz4/T5tc7abndjdJr/fp6VOhWbH/sPKZLLuljN6\naACgcuriYM39+/dLkrq6ugquL1iwQHv37i35vk2bNs3quqqt3v48qC4+f3C0Gvlz58DguCQpErS0\nadMmbXirV5I0v9nv/r3Mj4XVN5TQU794QZGQ/WV3YGikof/evPh7wNHic6dxrFixYsr7dVGhmcrE\nXhsAACplZNw+XyYatoPK7kOjkqRFHVH3mcWdUfdeNOyXJA2Pp5XL5aq5VACoW3VRoenu7pYk9fb2\navHixe713t5e914xq1evnvW1VYP5CUW9/HlQXXz+4GjxuSNl394jaYMWdM7T6tWr9divnZHNZ65y\n/17OWLFbr24fUKDlOK0572yFgs8qmcroAx/8kJpCdfFl+Kjw+YOjxedO4xkcHJzyfl1UaJYuXaru\n7m4988wz7rXx8XG98MILWrNmTQ1XBgCoZ6a53/TGbNtrTzM7yRkGIMkdDGCmn7mjm5l0BgAVMWd+\nNDQyMqLNmzdLkrLZrHbu3KlXX31VnZ2dWrJkiW677Tbde++9Ovnkk7VixQrdc889am1t1VVXXVXj\nlQMA6pUJJWZ62fb9dmgx45qlfLgxYac1GlLf4KiGRhNa0N5czeUCQF2aM4Fm48aNuuiiiyTZfTF3\n3HGH7rjjDl1//fV69NFH9dWvflVjY2P6i7/4Cw0MDOi8887TM888o+ZmvlgAAGbHeDItSW6z/8HD\ndg/Nws4W95nuDvt13+Co82yw4L0AgJmZM4Fm7dq1ymazUz5jQg4AANWQTGckSaGgX9lsTv3xMUlS\nW0uT+0xHa0SS3HuhoD0YIJnKVHOpAFC36qKHBgCAWkg4VZZw0K/4aELZbE6t0ZCCAb/7TEesMNCE\nnUCTSFGhAYBKINAAAHCUvBUaE1hMRcZod6o1/UNUaABgNhBoAAA4SgknlISDATewmIqMEWsOy++z\nNDyWVDKVUTgYKHgvAGBmCDQAABwlU2UJBUpXaCzLUrtzbSA+ppCzHc1UdwAAM0OgAQDgKJk+mHDI\nn6/QTAg0UmEfTTjk9NAw5QwAKoJAAwDAUXJ7aDwVmvbWpknPuZPOhqjQAEClEWgAADhKiaSnhyZe\nvIdGKhzdTA8NAFQWgQYAgKNUMOWsjC1nA/FxhYL2l16mnAFAZRBoAAA4Sm4PTdCvgfi4pMJDNQ13\ndHNBhYYeGgCoBAINAABHKZnKSrJ7aIZGE5Kkec2TA02sOSxJio8m6KEBgAoj0AAAcJTyU84CbqAx\n4cUrFrWvDY0mPFPOCDQAUAkEGgAAjpJ3yll8NCkpH1688hWaJBUaAKgwAg0AAEcpP+XMr6ERu0LT\nGg1Neq41Yl8bGknQQwMAFUagAQDgKHmnnLlbzqao0AyNJhQKOhUappwBQEUQaAAAR2Vbb1wvvnew\noU+8z085O4IeGifQcA4NAFRGoNYLAADMPa9s3qcr//cGZXPSO305/Z9b/qDWS6oJU2UJBnyKj5ot\nZ2X20BBoAKAiqNAAAI7YLf9nvbI5+/V3/m2j3th+oLYLqhFTZclkc8rlpEg4oIB/8pfW1oIpZ4GC\n9wIAZoZAAwA4Inv74nrhd++rKejXx89YqFxO+tcNb9d6WTVhqiwpp5emWP+M9/rQCOfQAELine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7b4ec88>"
"<matplotlib.figure.Figure at 0x7f22a210fb38>"
]
}
],
"prompt_number": 23
"prompt_number": 26
},
{
"cell_type": "markdown",
@@ -1310,17 +1310,17 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAGkCAYAAADni2AdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYzeX/x/HnmTP7amaYsWcP9dVCv0olKaKFCsmS5RtS\n2dqUFlsibV8kUVFC1kJ2RYUoS0jJMvYGw5hh9vWc3x/3nDkzDI2ameOM1+O6XM75LMd95lzMvLzv\n+31b7Ha7HRERERERETfk4eoBiIiIiIiI/FMKNCIiIiIi4rYUaERERERExG0p0IiIiIiIiNtSoBER\nEREREbelQCMiIiIiIm5LgUZERERERNyWWwSa0aNHc9NNNxESEkJERAStW7fmjz/+OO+6YcOGUalS\nJfz9/bnrrrvYtWuXC0YrIiIiIiIlxS0CzY8//kjfvn3ZuHEja9aswdPTk3vuuYf4+Pjca8aMGcP7\n77/PhAkT2Lx5MxERETRv3pykpCQXjlxERERERIqTxW632109iEuVnJxMSEgIixYt4v7778dut1Ox\nYkX69+/P4MGDAUhLSyMiIoJ3332X3r17u3jEIiIiIiJSHNyiQnOuhIQEbDYboaGhABw8eJCYmBha\ntGiRe42vry9NmjRhw4YNrhqmiIiIiIgUM09XD+CfGDBgADfccAO33norACdOnAAgMjIy33UREREc\nO3Ys37GzZ8+WzCBFRERERKRIhYSEnHfM7QLNc889x4YNG1i/fj0Wi+Vvry/MNSIiIiIi4p7casrZ\ns88+y5w5c1izZg3VqlXLPV6+fHkAYmJi8l0fExOTe05EREREREoft6nQDBgwgHnz5vH9999Tp06d\nfOeqV69O+fLlWbVqFQ0bNgRMU4D169fz7rvvXvA1CypZyfm2bNkCQKNGjVw8EikO+nxLL322pZs+\n39JLn23pps/30v3dkhG3CDTPPPMMM2bMYOHChYSEhOSumQkKCiIgIACLxcLAgQMZNWoUdevWpXbt\n2owcOZKgoCA6derk4tGLiIiIiEhxcYtA89FHH2GxWLj77rvzHR82bBhDhgwBYNCgQaSmpvLMM88Q\nHx/PLbfcwqpVqwgICHDFkEVEREREpAS4RaCx2WyFum7o0KEMHTq0mEcjIiIiIiKXC7dqCiAiIiIi\nIpKXAo2IiIiIiLgtBRoREREREXFbCjQiIiIiIuK2FGhERERERMRtKdCIiIiIiIjbUqARERERERG3\npUAjIiIiIiJuS4FGRERERETclgKNiIiIiIi4LQUaERERERFxWwo0IiIiIiLithRoRERERETEbSnQ\niIiIiIiI21KgERERERERt6VAIyIiIiIibkuBRkRERERE3JYCjYiIiIiIuC0FGhERERERcVsKNCIi\nIiIi4rYUaERERERExG0p0IiIiIiIiNtSoBEREREREbelQCMiIiIiIm5LgUZERERERNyWAo2IiIiI\niLgtBRoREREREXFbCjQiIiIiIuK2FGhERERERMRtKdCIiIiIiIjbUqARERERERG3pUAjIiIiIiJu\nS4FGRERERETclgKNiIiIiIi4LQUaERERERFxWwo0IiIiIiLithRoRERERETEbSnQiIiIiIiI21Kg\nERERERERt6VAIyIiIiIibkuBRkRERERE3JYCjYiIiIiIuC0FGhERERERcVsKNCIiIiIi4rYUaERE\nRERExG0p0IiIiIiIiNtSoBEREREREbelQCMiIiIiIm5LgUZERETcR2oqzJ4NrVvDyJFgt7t6RCLi\nYm4TaNauXUvr1q2pXLkyHh4eTJs2Ld/57t274+Hhke9X48aNXTRaERERKXILF0LNmtCxIyxeDK+/\nDj/+6OpRiYiLuU2gSU5OpkGDBowbNw4/Pz8sFku+8xaLhebNm3PixIncX8uWLXPRaEVERKTIxMTA\no4/Cww/D8eMm1DhUreq6cYnIZcHT1QMorFatWtGqVSvAVGPOZbfb8fb2JiIiooRHJiIiIsXCbocZ\nM2DgQIiLg4AAeOstiI+HIUPg9tuhRg1Xj1JEXMxtAs3fsVgsrF+/nsjISMqUKcOdd97Jm2++Sbly\n5Vw9NBEREblUSUnQowfMn2+eN28OH39s1tBcf705NmSI68YnIpcNi93ufqvpgoKC+PDDD+natWvu\nsTlz5hAQEED16tU5ePAgr732GtnZ2WzduhVvb+/c686ePZv7eN++fSU6bhEREfl7PkePUuuFF/A7\ncIDsgACOPPccpx98EGw26vbqReDOnZxq3ZrDr7/u6qGKSAmoXbt27uOQkJDzzpeaCk2HDh1yH19z\nzTU0bNiQq666iqVLl/Lwww+7cGQiIiJSWMEbNlDjtdfwTEwktVo1ot55h/Rq1QCImDuXwJ07yShb\nlr8GDnTtQEXkslFqAs25KlSoQOXKlYmKirrgNY0aNSrBEbmvLVu2APp6lVb6fEsvfbalW6n7fO12\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7c85908>"
"<matplotlib.figure.Figure at 0x7f22a2176240>"
]
}
],
"prompt_number": 24
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This superposition of the two covariances is where all the magic happens. The only reasonable estimate at time t=1 (where position=5) is roughly the *intersection* between the two covariance matrices! More exactly, we can use the math from the last section and *multipy* the two covariances together. If we multiply the position covariance with the velocity covariance using the equations above, we get the result shown in the next chart."
"This superposition of the two covariances is where all the magic happens. The only reasonable estimate at time t=1 (where position=5) is roughly the *intersection* between the two covariance matrices! More exactly, we can use the math from the last section and *multiply* the two covariances together. If we multiply the position covariance with the velocity covariance using the equations above, we get the result shown in the next chart."
]
},
{
@@ -1337,17 +1337,17 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAGkCAYAAADni2AdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0XfV5L/zv3mc+mgdLsiwPsjWPZmqApMQhgcBKakpL\nXi6ExOSmobkhBZImWdDJwMuFxW0uBRZp3iQttxQCTdJekoZQQpsJHAgY8GzJ1ixb82RJ5+jMe79/\nPGeffY4syZKtaR++n7UcSefsLX5HWpH19fP8np+i67oOIiIiIiIiC1LXegFERERERETni4GGiIiI\niIgsi4GGiIiIiIgsi4GGiIiIiIgsi4GGiIiIiIgsi4GGiIiIiIgsi4GGiIiIiIgsyxKB5pFHHsFl\nl12GnJwcFBUVYffu3Th27NhZ191///3YtGkTvF4vPvKRj+D48eNrsFoiIiIiIlotlgg0v/nNb/Dl\nL38Zb775Jn75y1/CbrfjYx/7GCYmJhLXPProo3jsscfw1FNPYf/+/SgqKsI111wDn8+3hisnIiIi\nIqKVpOi6rq/1IpbK7/cjJycHP/nJT/CJT3wCuq6jtLQUd911F+677z4AQDAYRFFREb75zW/ijjvu\nWOMVExERERHRSrBEhWa2qakpaJqGvLw8AEBXVxeGhoZw7bXXJq5xu9246qqr8MYbb6zVMomIiIiI\naIXZ13oB5+Puu+/GRRddhCuuuAIAMDg4CAAoLi5Oua6oqAj9/f0pj01OTq7OIomIiIiIaFnl5OSc\n9ZjlAs1Xv/pVvPHGG9i3bx8URTnn9Yu5hoiIiIiIrMlSLWdf+cpX8IMf/AC//OUvsW3btsTjJSUl\nAIChoaGU64eGhhLPERERERFR+rFMhebuu+/Gj370I/zqV79CVVVVynPl5eUoKSnBq6++iksuuQSA\nDAXYt28fvvnNb877OecqWdHZ3nnnHQDApZdeusYroZXA72/64vc2vfH7m774vU1v/P4u3bm2jFgi\n0Nx555147rnn8OMf/xg5OTmJPTNZWVnIyMiAoii455578PDDD6OmpgaVlZV46KGHkJWVhVtvvXWN\nV09ERERERCvFEoHm29/+NhRFwUc/+tGUx++//378zd/8DQDgG9/4BgKBAO68805MTEzg8ssvx6uv\nvoqMjIy1WDIREREREa0CSwQaTdMWdd3evXuxd+/eFV4NERERERGtF5YaCkBERERERJSMgYaIiIiI\niCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyL\ngYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaI\niIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiI\niCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyL\ngYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaI\niIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiI\niCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyLgYaIiIiIiCyL\ngYaIiIiIiCyLgYaIiIiIiCzLvtYLICIiIlo0TQNGR4HhYSArC9i6da1XRERrzDIVmtdeew27d+9G\nWVkZVFXFM888k/L87bffDlVVU/5ceeWVa7RaIiIiWnajo8BbbwHHj8v7XV3AmTNrvSoiWmOWCTR+\nvx9NTU144okn4PF4oChKyvOKouCaa67B4OBg4s/LL7+8RqslIiKiZRMOS4g5ehQIhQCPx3zO7V67\ndRHRumCZlrPrr78e119/PQCpxsym6zqcTieKiopWeWVERES0YoaGgPZ2IBIBbDZg+3YgGpXqTE4O\nAw0RWadCcy6KomDfvn0oLi5GdXU17rjjDoyMjKz1soiIiOh8xGLAsWNAS4uEmfx84LLLgLw8oKdH\nrtm2bU2XSETrg6Lrur7Wi1iqrKwsfOtb38JnP/vZxGM/+MEPkJGRgfLycnR1deGv/uqvEIvF8O67\n78LpdCaum5ycTLzf1ta2qusmIiKic1OCQXg6OmALBqHbbAiWlSFaWAjoOjwnT8Lu8yFcUIAQAw3R\n+0JlZWXi/ZycnLOet0zL2bncfPPNiffr6+txySWXYOvWrfjZz36GG2+8cQ1XRkRERItlm5yEp6sL\nSiwGze1GYMcOaPG2MsfwMOw+HzSHA6GysjVeKRGtF2kTaGbbuHEjysrK0N7ePu81l1566SquyLre\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7cf18d0>"
"<matplotlib.figure.Figure at 0x7f22a237fa20>"
]
}
],
"prompt_number": 25
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the new covariance lies at the intersection of the position covariance and the velocity covariance. It is slightly tilted, showing that there is some correlation between the position and velocity. Far more importantly, it is far smaller than either the position or velocity covariances that make it up. In the previous chapter our variance would get smaller each time we performed an `update()` because the previous estimate's Gaussian was multiplied by the new measurement's Gaussian. The same thing is happening here. However, the amount that the covariance got smaller by is a huge amount in this chapter. This is because we are using two different kinds of infomation which are nevertheless correlated. Knowing the velocity approximately and the position approximately allows us to very quickly hone in on the correct answer. "
"We can see that the new covariance lies at the intersection of the position covariance and the velocity covariance. It is slightly tilted, showing that there is some correlation between the position and velocity. Far more importantly, it is far smaller than either the position or velocity covariances that make it up. In the previous chapter our variance would get smaller each time we performed an `update()` because the previous estimate's Gaussian was multiplied by the new measurement's Gaussian. The same thing is happening here. However, the amount that the covariance got smaller by is a huge amount in this chapter. This is because we are using two different kinds of information which are nevertheless correlated. Knowing the velocity approximately and the position approximately allows us to very quickly hone in on the correct answer. "
]
},
{
@@ -1363,14 +1363,14 @@
"source": [
"What makes this possible? Imagine for a moment that we superimposed the velocity from a *different* airplane over the position graph. Clearly the two are not related, and there is no way that combining the two could possibly yield any additional information. In contrast, the velocity of the this airplane tells us something very important - the direction and speed of travel. So long as the aircraft does not alter its velocity the velocity allows us to predict where the next position is. After a relatively small amount of error in velocity the probability that it is a good match with the position is very small. Think about it - if you suddenly change direction your position is also going to change a lot. If the position measurement is not in the direction of the assumed velocity change it is very unlikely to be true. The two are correlated, so if the velocity changes so must the position, and in a predictable way. \n",
"\n",
"We are going to see this again and again in the rest of the book, so don't worry if this feels a bit magical to you. But it is important to understand that we are taking advantage of the fact that velocity and position are correleated coupled with the ability to infer velocity by looking at the distance and time between two measurement, to produce very accurate estimates after only a few observations. Please reread this section if you have any doubts. If you grasp this point the rest is straightforward. If you do not you will quickly find it impossible to reason about what you will learn in the rest of this chapter."
"We are going to see this again and again in the rest of the book, so don't worry if this feels a bit magical to you. But it is important to understand that we are taking advantage of the fact that velocity and position are correlated coupled with the ability to infer velocity by looking at the distance and time between two measurement, to produce very accurate estimates after only a few observations. Please reread this section if you have any doubts. If you grasp this point the rest is straightforward. If you do not you will quickly find it impossible to reason about what you will learn in the rest of this chapter."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In summary we have taken advantage of the geometry and correlations of the system to produce a very accurate estimate. The math does not care whether we are working with two positions, or a position and a correlated velocity. If we can express our uncertainties as a multidimensional Gaussian we can then multiply our uncertainty in position with our uncertainty in velocity and get a much more accurate result, in exactly the same way we can multipy the uncertainty in two position estimates to get a more accurate result."
"In summary we have taken advantage of the geometry and correlations of the system to produce a very accurate estimate. The math does not care whether we are working with two positions, or a position and a correlated velocity. If we can express our uncertainties as a multidimensional Gaussian we can then multiply our uncertainty in position with our uncertainty in velocity and get a much more accurate result, in exactly the same way we can multiply the uncertainty in two position estimates to get a more accurate result."
]
},
{
@@ -1398,7 +1398,7 @@
"source": [
"The chart shows a prior estimate of $x=2$ and a velocity $\\dot{x}=1$. \n",
"\n",
"> We use the familar dot notation $\\dot{x}$ to denote the derivative of x with respect to time.\n",
"> We use the familiar dot notation $\\dot{x}$ to denote the derivative of x with respect to time.\n",
"\n",
"With the time step $\\Delta t = 1$ we predict $x= 2+(1 \\times 1) = 3$.\n",
"\n",
@@ -1422,11 +1422,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7ab3b70>"
"<matplotlib.figure.Figure at 0x7f22a21764e0>"
]
}
],
"prompt_number": 26
"prompt_number": 29
},
{
"cell_type": "heading",
@@ -1462,7 +1462,7 @@
"\\end{aligned}\n",
"$$\n",
"\n",
"Dash off, wipe the blood out of your eyes, and we'll disuss what this means. "
"Dash off, wipe the blood out of your eyes, and we'll discuss what this means. "
]
},
{
@@ -1526,7 +1526,7 @@
"source": [
"Before we go any further let's gain some familiarity with the equations by programming them in Python. I have written a production quality implementation of the Kalman filter equations in my `FilterPy` library, and we will be using that later in the chapter and the remainder of the book. We could just look at that code, but it contains a significant amount of code to ensure that the computations are numerically stable, that you do not pass in bad data, and so on. Let's just try to program this.\n",
"\n",
"The filter equations are *linear algebra* equations, so we will use the Python library that implements linear algebra - numpy. In the filter equations a **bold** variable denotes a matrix. Numpy provides two types to implement matrices: `numpy.array` and `numpy.matrix`. You might suspect that the latter is the one we want to use. As it turns out `numpy.matrix` does support linear algebra well, except for one problem - most of the rest of `numpy` uses `numpy.array`, not `numpy.matrix`. You can pass a `numpy.matrix` into a function, and get a `numpy.array` back as a result. Hence, the standard advice is that `numpy.matrix` is deprecated, and you should always use `numpy.array` even when `numpy.matrix` is more convienient. I ignored this advice in a early version of this code and ended up regretting that choice, and so now I use 'numpy.array' only.\n",
"The filter equations are *linear algebra* equations, so we will use the Python library that implements linear algebra - NumPy. In the filter equations a **bold** variable denotes a matrix. Numpy provides two types to implement matrices: `numpy.array` and `numpy.matrix`. You might suspect that the latter is the one we want to use. As it turns out `numpy.matrix` does support linear algebra well, except for one problem - most of the rest of `numpy` uses `numpy.array`, not `numpy.matrix`. You can pass a `numpy.matrix` into a function, and get a `numpy.array` back as a result. Hence, the standard advice is that `numpy.matrix` is deprecated, and you should always use `numpy.array` even when `numpy.matrix` is more convenient. I ignored this advice in a early version of this code and ended up regretting that choice, and so now I use `numpy.array` only.\n",
"\n",
"`numpy.array` implements a one or more dimensional array. You can construct it with any list like object. The following constructs a 1-D array from a list:"
]
@@ -1552,7 +1552,7 @@
]
}
],
"prompt_number": 27
"prompt_number": 30
},
{
"cell_type": "markdown",
@@ -1581,7 +1581,7 @@
]
}
],
"prompt_number": 28
"prompt_number": 31
},
{
"cell_type": "markdown",
@@ -1610,7 +1610,7 @@
]
}
],
"prompt_number": 29
"prompt_number": 32
},
{
"cell_type": "markdown",
@@ -1655,7 +1655,7 @@
]
}
],
"prompt_number": 30
"prompt_number": 33
},
{
"cell_type": "markdown",
@@ -1688,7 +1688,7 @@
]
}
],
"prompt_number": 31
"prompt_number": 34
},
{
"cell_type": "markdown",
@@ -1723,13 +1723,13 @@
]
}
],
"prompt_number": 32
"prompt_number": 35
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is a lot of useful functionality in `numpy`, but let's move on to implementing the Kalman filter. Let's start with the prediction equations.\n",
"There is a lot of useful functionality in NumPy, but let's move on to implementing the Kalman filter. Let's start with the prediction equations.\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
@@ -1738,7 +1738,7 @@
"\\end{aligned}\n",
"$$\n",
"\n",
"Those are linear algebra equations using matrix multiplication and addition. Assuming each variable is already defined somewhere, we can implement these equations in Python and numpy with:\n",
"Those are linear algebra equations using matrix multiplication and addition. Assuming each variable is already defined somewhere, we can implement these equations in Python and NumPy with:\n",
"\n",
" x = dot(F, x) + dot(B, u)\n",
" P = dot(F, P).dot(F.T) + Q\n",
@@ -1894,7 +1894,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
"prompt_number": 36
},
{
"cell_type": "heading",
@@ -2165,7 +2165,7 @@
"\n",
"$$f(x) = \\mathbf{F}x + w$$\n",
"\n",
"where $\\mathbf{F}x$ is the state transition and $w$ is the process noise. In other words $\\mathbf{F}x$ is the 'true' behavior of the process as we understand it, and $w$ is things like winds, control surface fluctuations, maybe circuit noise - whatever affects our process that is not modelled."
"where $\\mathbf{F}x$ is the state transition and $w$ is the process noise. In other words $\\mathbf{F}x$ is the 'true' behavior of the process as we understand it, and $w$ is things like winds, control surface fluctuations, maybe circuit noise - whatever affects our process that is not modeled."
]
},
{
@@ -2195,7 +2195,7 @@
"\n",
"In this equation $\\mathbf{FP{F}}^\\mathsf{T}$ is just some linear algebra 'magic' that projects $\\mathbf{P}$ forward to the next time step, and $\\mathbf{Q}$ is the *process noise matrix*. We are just adding matrices, so hopefully it is clear that each element in $\\mathbf{Q}$ specifies how much uncertainty is added to the system due to the process noise. \n",
"\n",
"We have not given the math for computing the elements of $\\mathbf{Q}$ yet, but if you suspect the math is sometimes difficult you would be correct. One of the problems is that we are usually modelling a *continuous* system - the behavior of the system is changing at every instant, but the Kalman filter is *discrete*. That means that we have to somehow convert the continuous noise of the system into a discrete value, which usually involves calculus. There are other difficulties I will not mention now."
"We have not given the math for computing the elements of $\\mathbf{Q}$ yet, but if you suspect the math is sometimes difficult you would be correct. One of the problems is that we are usually modeling a *continuous* system - the behavior of the system is changing at every instant, but the Kalman filter is *discrete*. That means that we have to somehow convert the continuous noise of the system into a discrete value, which usually involves calculus. There are other difficulties I will not mention now."
]
},
{
@@ -2274,7 +2274,7 @@
]
}
],
"prompt_number": 34
"prompt_number": 37
},
{
"cell_type": "code",
@@ -2289,14 +2289,14 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 35,
"prompt_number": 38,
"text": [
"array([[ 0.00005875, 0.001175 ],\n",
" [ 0.001175 , 0.0235 ]])"
]
}
],
"prompt_number": 35
"prompt_number": 38
},
{
"cell_type": "heading",
@@ -2357,7 +2357,7 @@
]
}
],
"prompt_number": 36
"prompt_number": 39
},
{
"cell_type": "markdown",
@@ -2382,7 +2382,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 37
"prompt_number": 40
},
{
"cell_type": "markdown",
@@ -2466,7 +2466,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 38
"prompt_number": 41
},
{
"cell_type": "markdown",
@@ -2560,7 +2560,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 39
"prompt_number": 42
},
{
"cell_type": "markdown",
@@ -2581,9 +2581,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85f07c9f60>"
"<matplotlib.figure.Figure at 0x7f22a2166b70>"
]
},
{
@@ -2591,11 +2591,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7cb3b00>"
"<matplotlib.figure.Figure at 0x7f22a23a1630>"
]
}
],
"prompt_number": 40
"prompt_number": 43
},
{
"cell_type": "markdown",
@@ -2603,9 +2603,9 @@
"source": [
"There is still a lot to learn, but we have implemented our first, full Kalman filter using the same theory and equations as published by Rudolf Kalman! Code very much like this runs inside of your GPS and phone, inside every airliner, inside of robots, and so on. \n",
"\n",
"The first plot plots the output of the Kalman filter against the measurements and the actual position of our dog (drawn in green). After the initial settling in period the filter should track the dog's position very closely. The yellow shaded portion between the black dotted lines shows 1 standard deviations of the filter's variance, which I explain in the next paragrah.\n",
"The first plot plots the output of the Kalman filter against the measurements and the actual position of our dog (drawn in green). After the initial settling in period the filter should track the dog's position very closely. The yellow shaded portion between the black dotted lines shows 1 standard deviations of the filter's variance, which I explain in the next paragraph.\n",
"\n",
"The next two plots show the variance of $x$ and of $\\dot{x}$. If you look at the code, you will see that I have plotted the diagonals of $\\mathbf{P}$ over time. Recall that the diagonal of a covariance matrix contains the variance of each state variable. So $\\mathbf{P}[0,0]$ is the variance of $x$, and $\\mathbf{P}[1,1]$ is the variance of $\\dot{x}$. You can see that despite initializing $\\mathbf{P}=(\\begin{smallmatrix}500&0\\\\0&500\\end{smallmatrix})$ we quickly converge to small variances for both the position and velocity. The covariance matrix $\\mathbf{P}$ tells us the *theoretical* performance of the filter *assuming* everything we tell it is true. Recall from the Gaussian chapter that the standard deviation is the square root of the variance, and that approximately 68% of a Gaussian distribution occurs within one standard deviation. Therefore, if at least 68% of the filter output is within one standard deviation we can be sure that the filter is performing well. In the top chart I have displayed the one standard deviation as the yellow shaded area between the two dotted lines. To my eye it looks like perhaps the filter is slightly exceeding that bounds, so the filter probably needs some tuning. We will discuss this later in the chaper."
"The next two plots show the variance of $x$ and of $\\dot{x}$. If you look at the code, you will see that I have plotted the diagonals of $\\mathbf{P}$ over time. Recall that the diagonal of a covariance matrix contains the variance of each state variable. So $\\mathbf{P}[0,0]$ is the variance of $x$, and $\\mathbf{P}[1,1]$ is the variance of $\\dot{x}$. You can see that despite initializing $\\mathbf{P}=(\\begin{smallmatrix}500&0\\\\0&500\\end{smallmatrix})$ we quickly converge to small variances for both the position and velocity. The covariance matrix $\\mathbf{P}$ tells us the *theoretical* performance of the filter *assuming* everything we tell it is true. Recall from the Gaussian chapter that the standard deviation is the square root of the variance, and that approximately 68% of a Gaussian distribution occurs within one standard deviation. Therefore, if at least 68% of the filter output is within one standard deviation we can be sure that the filter is performing well. In the top chart I have displayed the one standard deviation as the yellow shaded area between the two dotted lines. To my eye it looks like perhaps the filter is slightly exceeding that bounds, so the filter probably needs some tuning. We will discuss this later in the chapter."
]
},
{
@@ -2671,7 +2671,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 41
"prompt_number": 44
},
{
"cell_type": "markdown",
@@ -2700,7 +2700,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 42
"prompt_number": 45
},
{
"cell_type": "markdown",
@@ -2758,9 +2758,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7ba50f0>"
"<matplotlib.figure.Figure at 0x7f22a1fbbba8>"
]
},
{
@@ -2768,11 +2768,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxEAAAGaCAYAAABwj85UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VfWd//H3ufdmh1wCWSCAYQtE9iWgYIVKFYt1UEdR\nqVZkWhk7ohZ1HrXajuiDn1tbLaVolSqiIwqM1c6Mu0NYwqIgENmUJWyyBAJZyJ7cc35/BC7cBEhO\nkpu75PV8PHgk53vP95xP8PtA3pzv93wNy7IsAQAAAEAjOQJdAAAAAIDQQogAAAAAYAshAgAAAIAt\nhAgAAAAAthAiAAAAANhCiAAAAABgCyECANqoffv2yeFwaNq0aYEuBQAQYggRABAAd9xxhxwOh+bO\nndvguZMnT5bD4dBrr73ml1oMw/DLdQEA4ctgszkAaH2rVq3SuHHjNGjQIOXk5FzwvGPHjqlbt26K\njY3V4cOHFRsb22I11NTUKDc3V263WykpKS12XQBA+ONJBAAEwJVXXqmMjAxt2bJFX3311QXPW7hw\noWpqajRlypQWDRCS5HK51LdvXwIEAMA2QgQABMj06dMlSfPnz7/gOX/7299kGIamT5+urKwsTZ8+\nXf3795fb7VZsbKwGDhyoWbNmqaKiol7fWbNmyeFwaOHChfroo480duxYxcfHq2PHjpIuvCZi586d\nevTRR5WZmamkpCRFR0erR48euueee3Tw4MF691m+fLn3Ovv27dPtt9+uxMRExcTEaOTIkfrwww8v\n+PMtWbJE11xzjTp16uS9z6233qrVq1fXO/e9997T1VdfrY4dOyo6Olp9+/bVb37zG506deqC1wcA\n+AchAgACZOrUqYqMjNTixYtVUlJS7/MVK1Zo165dGj58uIYNG6bnnntOX3zxhYYPH657771X99xz\nj6KiovTUU0/p2muvlcfjOe99li5dqhtuuEGdOnXSfffdpxtvvNHn87prIv7+97/rlVdeUVpamu64\n4w498MAD6t+/v15//XWNHDlShw4dOu999u/fr8suu0wHDhzQ1KlTddttt2nr1q264YYbtHz5cp9z\nLcvS3Xffrdtvv105OTm66aab9PDDD2vcuHFav3693nvvPZ/z/+3f/k2TJ0/Wrl27dPPNN+uBBx5Q\nSkqKnnvuOf3gBz847+8fAMCPLABAwNx5552WYRjWq6++Wu+zn/70pz6f5ebmnvcav/vd7yzDMKx3\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e798a518>"
"<matplotlib.figure.Figure at 0x7f22ac091f98>"
]
}
],
"prompt_number": 43
"prompt_number": 46
},
{
"cell_type": "markdown",
@@ -2800,7 +2800,7 @@
"\n",
"> **Note:** This section will provide you with a strong intuition into what the Kalman filter equations are actually doing. While this section is not strictly required, I recommend reading this section carefully as it should make the rest of the material easier to understand. It is not merely a proof of correctness that you would normally want to skip past! The equations look complicated, but they are actually doing something quite simple.\n",
"\n",
"Let'start with the predict step, which is slightly easier. Here are the multivariate equations. \n",
"Let's start with the predict step, which is slightly easier. Here are the multivariate equations. \n",
"$$\n",
"\\begin{aligned}\n",
"\\mathbf{x}^- &= \\mathbf{F x} + \\mathbf{B u} \\\\\n",
@@ -2875,8 +2875,7 @@
"\\end{aligned}\n",
"$$\n",
"\n",
"Here we will say that $\\mu_1$ is the state $x$, and $\\mu_2$ is the measurement $z$. That is entirely arbitrary, we could have chosen the opposite assigment. \n",
"Thus it follows that that $\\sigma_1^2$ is the state uncertainty $P$, and $\\sigma_2^2$ is the measurement noise $R$. Let's substitute those in.\n",
"Here we will say that $\\mu_1$ is the state $x$, and $\\mu_2$ is the measurement $z$. That is entirely arbitrary, we could have chosen the opposite assignment. Thus it follows that that $\\sigma_1^2$ is the state uncertainty $P$, and $\\sigma_2^2$ is the measurement noise $R$. Let's substitute those in.\n",
"\n",
"$$ \\mu = \\frac{Pz + Rx}{P+R} \\\\\n",
"\\sigma^2 = \\frac{1}{\\frac{1}{P} + \\frac{1}{R}}\n",
@@ -2899,7 +2898,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's look at $\\sigma^2$. The corresponding equation in the multivarate case is\n",
"Now let's look at $\\sigma^2$. The corresponding equation in the multivariate case is\n",
"\n",
"$$ \n",
"\\begin{aligned}\n",
@@ -2936,7 +2935,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 44
"prompt_number": 47
},
{
"cell_type": "markdown",
@@ -3002,13 +3001,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAGaCAYAAAD+VYcoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8lOWd///3zGQyOQ8h5EBIyAEDIZyEIIJgBIGoiFQ8\nValVQlu+3cW22nb9rXa3oKV26bpWt1q2dbtAVaynekYMKiAhRAgHOYRzAgRCBgghIafJYe7fH8HI\nkAQCmWQS8no+HjyI13Xd1/0JjynNm/u+rstkGIYhAAAAAPACs7cLAAAAANBzEUgAAAAAeA2BBAAA\nAIDXEEgAAAAAeA2BBAAAAIDXEEgAAAAAeA2BBAAAAIDXEEgAAG5cLpf++te/atKkSQoLC5Ovr68i\nIiI0bNgwzZ49W2+88UbT2KVLl8psNuupp57yyL0PHToks9msSZMmeWQ+AEDX5+PtAgAAXYfL5dKM\nGTO0YsUK9erVS9OnT1dMTIzq6uq0a9cuvfPOO9q4caO++93vul1nMpk8cv9v5vHUfACAro9AAgBo\n8ve//10rVqzQtddeq7Vr1yo4ONitv7a2VllZWc2uMwzDI/f31DwAgO6DV7YAAE3Wr18vSZo9e3az\nMCJJvr6+uvnmm5vGzJkzR5L01FNPyWw2N/368ssvJUnl5eX6z//8T918882KiYmRzWZTRESEZsyY\noQ0bNrjNvXTpUiUmJkqS1qxZ4zbfha+EbdmyRffff7+io6Nls9kUHR2thx56SAcPHvTsHwgAoMPx\nhAQA0CQsLEyStHfv3kuOnTlzpsrKyvT+++9r4sSJmjhxYlNffHy8JCkvL0//9m//pptuukl33HGH\nQkNDdfjwYX3wwQf65JNP9MEHH+i2226TJI0cOVI/+9nP9MILLyg+Pl6zZ89umu/8uV977TXNnj1b\nfn5+mjFjhmJjY7V//369/vrr+vDDD7VmzRqNGDGi3X8WAIDOYTJ4Pg4AOGfbtm26/vrrVV9fr1mz\nZunOO+/UqFGjFB8f3+K6jqVLl2rOnDlasGCBfv3rXzfrLy8vV319vXr37u3WfuzYMY0ZM0YhISHa\nvXt3U/vhw4eVkJCgiRMn6osvvmg234EDBzR06FDFxsbqyy+/VN++fZv61q5dqylTpmjEiBHKzc1t\nzx8DAKAT8coWAKDJtddeq1dffVWRkZF67bXXdO+992rAgAEKDQ3V9OnT9cYbb1zWOo+QkJBmYUSS\n+vXrp7vvvlt79+7V0aNHm9ovNffixYtVW1urP/zhD25hRFLTU5gtW7a4hRwAQNfGK1sAADf33nuv\nZs6cqdWrV2v9+vXaunWrsrKytGLFCq1YsUJLly7VBx98IKvV2qb51q9frxdeeEEbNmzQyZMnVVtb\n69Z/7NgxxcTEtHkuqfFpSEtPQRwOhyRp9+7dGjx4cJvmBAB4F4EEANCMj4+Ppk6dqqlTp0pq3A74\nnXfe0Zw5c/Tpp59q8eLF+ulPf3rJed59913dc889CggI0NSpUzVgwAAFBgbKbDZr9erVWrt2rZxO\nZ5vrKikpkST913/9V6tjTCaTKisr2zwnAMC7CCQAgEsym8269957tWPHDi1cuFBffPFFmwLJv//7\nv8vPz0+5ubkaNGiQW9+xY8e0du3ay6rDbrfLZDKppKREvXr1uqxrAQBdE2tIAABtFhQUJOnbtR4W\ni0WS1NDQ0OL4AwcOKCUlpVkYcblcLZ5ncqn5brjhBhmG0bStMACg+yOQAACavP766/rss89aXFxe\nXFysl19+WZKUlpYm6dttgg8fPtzifAkJCdq3b5+OHz/e1GYYhhYsWKDdu3c327krNDRUklRYWNji\nfI888oh8fX31i1/8osWtievr67V69epLfZsAgC6EbX8BAE0ee+wxvfDCC4qKitKECROazhMpKCjQ\nxx9/rJqaGt1www36/PPPZbPZVFZWppiYGNXV1en73/+++vfvL5PJpIceekj9+/fXX/7yF/34xz9W\nRESE7rrrLlmtVq1fv167d+/WlClTms4N+SbgSNKECROUnZ2t6dOna+TIkbJarbrpppt04403Smo8\nTT4jI0P19fW69dZblZSUpIaGBhUWFmr9+vWqq6vT6dOnvfHHBwC4EoYHFRUVGQ899JARHh5u+Pn5\nGSkpKcbatWvdxsyfP9+Ijo42/P39jYkTJxq7du3yZAkAgHY4evSosXjxYuOuu+4ykpOTDbvdblit\nViMqKsqYOnWq8Ze//MWor693u2bVqlXGhAkTjODgYMNkMhlms9nt7/6lS5ca1157rREYGGiEh4cb\nd911l7Fz505jwYIFzcYahmHk5+cbM2fONPr06WNYLBbDbDYbTz31lNuYvLw844c//KGRkJBg2Gw2\nIzQ01EhJSTHmzJljfPzxxx33BwQA8DiPPSE5c+aMRo0apbS0ND3yyCMKDw9Xfn6++vbtq+TkZEnS\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e79ab668>"
"<matplotlib.figure.Figure at 0x7f22a24ed0f0>"
]
}
],
"prompt_number": 45
"prompt_number": 48
},
{
"cell_type": "markdown",
@@ -3018,7 +3017,7 @@
"\n",
"The output of the filter that incorporates velocity into the state produces much better output than the filter that only tracks position - the output is much closer to a straight line. We've already discussed why unobserved variables increase the precision of the filter, so I will not repeat that explanation here. But the last exercise and this one is intended to trigger a train of thought:\n",
"\n",
"1. The equations in this chapter are mathematically equivalient to the equations in the last chapter when we are only tracking one state variable.\n",
"1. The equations in this chapter are mathematically equivalent to the equations in the last chapter when we are only tracking one state variable.\n",
" \n",
"2. Therefore, the simple Bayesian reasoning we used in the last chapter applies to this chapter as well.\n",
"\n",
@@ -3043,7 +3042,7 @@
"\n",
"Let's start varying our parameters to see the effect of various changes. This is a *very normal* thing to be doing with Kalman filters. It is difficult, and often impossible to exactly model our sensors. An imperfect model means imperfect output from our filter. Engineers spend a lot of time tuning Kalman filters so that they perform well with real world sensors. We will spend time now to learn the effect of these changes. As you learn the effect of each change you will develop an intuition for how to design a Kalman filter. As I wrote earlier, designing a Kalman filter is as much art as science. The science is, roughly, designing the ${\\mathbf{H}}$ and ${\\mathbf{F}}$ matrices - they develop in an obvious manner based on the physics of the system we are modeling. The art comes in modeling the sensors and selecting appropriate values for the rest of our variables.\n",
"\n",
"Let's look at the effects of the noise parameters ${\\mathbf{R}}$ and ${\\mathbf{Q}}$. We will want to see the effect of different settings for ${\\mathbf{R}}$ and ${\\mathbf{Q}}$, so I have hard coded our measurements in `zs` based on a variance of 50 meters. That is very large, but it magnifies the effects of varius design choices on the graphs, making it easier to recognize what is happening. "
"Let's look at the effects of the noise parameters ${\\mathbf{R}}$ and ${\\mathbf{Q}}$. We will want to see the effect of different settings for ${\\mathbf{R}}$ and ${\\mathbf{Q}}$, so I have hard coded our measurements in `zs` based on a variance of 50 meters. That is very large, but it magnifies the effects of various design choices on the graphs, making it easier to recognize what is happening. "
]
},
{
@@ -3074,7 +3073,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e778ccc0>"
"<matplotlib.figure.Figure at 0x7f22b40a62e8>"
]
},
{
@@ -3082,11 +3081,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7c71048>"
"<matplotlib.figure.Figure at 0x7f22a202fb70>"
]
}
],
"prompt_number": 46
"prompt_number": 49
},
{
"cell_type": "markdown",
@@ -3125,11 +3124,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAGZCAYAAAB4wfWGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVGX7wPHvGfZNRBR3BRRFcVeE0lzLsjI1LctcW8yy\nerPMFt9CTetX2Wq2mbn05ptppZZp2uuWpoRbqQgubKKAyDIgO8zz++MgiSyyDIzC/bmuuQbPOc/z\n3DMcde55Nk0ppRBCCCGEEEIICzBYOgAhhBBCCCFE/SUJiRBCCCGEEMJiJCERQgghhBBCWIwkJEII\nIYQQQgiLkYRECCGEEEIIYTGSkAghhBBCCCEsRhISIeo4g8FQ7GFlZYWbmxv9+vXj448/Jj8/39Ih\n3pBiY2NZuHAh9913H+3bty96f0+ePFluuaysLObOnUvHjh1xcHCgadOmjBs3jrCwsHLbeuSRR2jR\nogX29vZ4eXkxc+ZMUlNTyyyzb98+7rrrLho1aoSjoyPdu3fnww8/xGQylVlm1apVBAQE4OLiQsOG\nDRk8eDCbNm269ptxnYqPj+eVV16hZ8+eNGzYEAcHBzw9PRk/fjw7d+60dHg3vE2bNjF48GBcXV1x\ncXEhMDCQVatWVaqOU6dO8fbbb3PrrbfSpk0b7Ozs8PDwYPjw4fz00081FLkQ4nqjyT4kQtRtBoMB\nTdMICgoCID8/n6ioKH744QcyMzMZMWIEGzZssHCUN57169dz7733YjAY8PLyIikpCaPRyIkTJ+jQ\noUOpZXJycrj11lvZu3cv/v7+DBkyhJiYGNauXYutrS3bt2+nb9++xcpERERw8803c+HCBUaNGoWv\nry/BwcHs2LGDjh07snfvXho1alSszIYNGxgzZgyOjo6MGzeORo0asXHjRsLDwxk7dizfffddidhe\neOEF3n33XVq3bs3YsWPJycnh22+/JTk5mcWLFzNjxgzzvXm1YP369UycOJGMjAx69uzJgAEDcHBw\nICwsjC1btpCdnc2UKVP4/PPPsbGxsXS4N5wlS5bw9NNP07hxY8aNG4etrS1r164lNjaW559/nnfe\neadC9TzwwAN89913+Pr60r9/f5o0aUJERAQ//vgjubm5zJo1i7fffruGX40QwuKUEKJO0zRNGQyG\nEsdPnjypnJ2dlaZpaufOnRaI7MYWGxur9uzZo9LT05VSSg0cOFBpmqbCw8PLLPPGG28oTdPU/fff\nX+z4hg0blKZpys/PT5lMpmLnhg0bpjRNUx9//HGx488995zSNE1Nnz692HGj0aiaNGmi7O3t1cGD\nB4uOZ2dnq5tvvllpmqa+/fbbYmX27t2rNE1TPj4+KjU1teh4VFSUcnd3V/b29ioqKqoC78r1YefO\nncra2lo5ODio//73vyXOR0dHqx49eihN09S0adMsEOGNLTIyUtnZ2anGjRur6OjoouMpKSmqffv2\nStM0tW/fvgrVtXz58mL36WXHjh1Trq6uStM0dejQIbPFLoS4PklCIkQdV1ZCopRSd955p9I0TS1a\ntKjS9WZlZamGDRsqd3d3lZubW+o1zz//vNI0Ta1cubLo2I8//qgeeugh5ePjo5ycnJSTk5Pq1auX\n+uCDD1RBQUGJOiZPnlyUNK1atUr16dNHOTk5qR49elQ65pp0rYTEZDKpNm3aKIPBUOqH+wEDBihN\n09SOHTuKjp0+fVppmqa8vb1LXJ+enq6cnJyUs7OzysjIKDq+bNkypWmamjJlSoky27dvV5qmqYED\nBxY7PnHiRKVpmlqxYkWJMq+99prSNE0FBQWV8cqLCwoKKqpr69atqn///srZ2Vk1adJEPfLII8po\nNCqllAoODla33367cnV1Vc7OzmrkyJHFPtxWVUFBgerYsaPSNE19+umnZV537tw51bBhQ6Vpmtq/\nf3+l2/H19VU2NjYqISGh1POLFy9WmqapefPmFR3bvn27euyxx1SnTp1UgwYNlIODg/Lz81NBQUEq\nKyurRB1XvpebNm1St9xyi3JxcVFubm6VjtecXn31VaVpmpo7d26Jc1999ZXSNE1Nnjy52u1MmzZN\naZqm3nvvvQpdv2PHjqJ7//Tp02rMmDGqUaNGysXFRd1+++3q+PHjSiml4uLi1NSpU1XTpk2Vvb29\n8vf3ly9lhLAwmUMiRD2mCkds2tnZVbqsvb09DzzwAMnJyfz8888lzhcUFPDNN9/g7OzM2LFji46/\n/PLLHDlyhJtuuolnnnmGyZMnk5GRwcyZM5k4cWKZ7S1atIjHH3+c9u3b88wzzzB06NBKx2xJZ86c\n4ezZs3To0IG2bduWOD98+HAAtm/fXnRsx44dAAwbNqzE9c7OzvTr14+MjAz2799fdPxy+TvuuKNE\nmcvDlvbt20dubm6xMpqmlVrmclyXY6mojRs3cs8999CyZUumT59Oy5Yt+eqrrxg9ejS7d+9m0KBB\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7c0ada0>"
"<matplotlib.figure.Figure at 0x7f22a23cf438>"
]
}
],
"prompt_number": 47
"prompt_number": 50
},
{
"cell_type": "markdown",
@@ -3154,11 +3153,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7b70940>"
"<matplotlib.figure.Figure at 0x7f22ae202a90>"
]
}
],
"prompt_number": 48
"prompt_number": 51
},
{
"cell_type": "markdown",
@@ -3183,11 +3182,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAGZCAYAAAB4wfWGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4FNX6wPHvbNqmBwihJ9QQqhBK0EDovUhTlI4FBASx\ngDSlKYoiPxFBBS8QlHapKkgTQicUKUkk1EBCDaT3tju/PwYWYhJIJcB9P8+TZzdTzjmTO3LnnVNe\nRVVVFSGEEEIIIYQoBrriboAQQgghhBDif5cEJEIIIYQQQohiIwGJEEIIIYQQothIQCKEEEIIIYQo\nNhKQCCGEEEIIIYqNBCRCCCGEEEKIYiMBiRAi13Q6XaYfMzMzSpQogbe3N99//z0ZGRnF3cRn0v79\n+xk0aBB169alVKlS6PV6qlSpQteuXdmyZUuO5yUnJzN9+nRq1qyJtbU1ZcqUoV+/fpw7d+4Jtr5w\nnT59mrfeeosaNWpgZ2eHvb09derUYezYsVy+fLm4m/dMMxgMzJ8/n/r162NjY0OpUqXo2rUrR44c\nyVM5hw4dYuLEiXh5eVGmTBmsrKxwc3Nj0KBBBAQEFFHrhRDPM0XykAghckun06EoCtOmTQMgIyOD\nq1evsnHjRpKSkujevTu//fZbMbfy2TNjxgyWLFlCs2bNqFixIra2toSGhvL777+TkJDAqFGj+P77\n7zOdk5qaSrt27Th06BBNmjShTZs2hIWFsW7dOiwtLdmzZw9NmzYtpivKn6lTpzJ79mzMzc1p27Yt\n9evXx2g0cuzYMQ4cOIC5uTnz589n5MiRxd3UZ46qqvTr14/169fj4eFB9+7diYyMZO3ataSkpLBh\nwwZ69OiRq7LKli1LREQEzZo1o3Hjxuj1ev7++292796Nubk569at4+WXXy7iKxJCPFdUIYTIJUVR\nVJ1Ol2X7hQsXVDs7O1VRFHXv3r3F0LJnW0pKSrbbb9y4oZYpU0ZVFEUNCQnJtG/27Nmqoijqq6++\nmmn7b7/9piqKotapU0c1Go1F1ubC9tlnn6mKoqhubm7qmTNnsuz38/NTS5YsqSqKoq5ataoYWvhs\nW7Vqlaooitq8eXM1NTXVtP348eOqlZWV6uLiosbHx+eqrDlz5qg3btzIsn3FihWqoihq6dKl1bS0\ntEJruxDi+ScBiRAi13IKSFRVVbt06aIqiqLOnTs3z+UmJyerTk5OaqlSpXJ8kPnwww9VRVFUX19f\n07ZNmzapAwYMUGvUqKHa2tqqtra2qqenp/rtt9+qBoMhSxlDhgwxBU0rVqxQGzdurNra2qoNGjTI\nc5uflJ49e6qKoqiHDh0ybTMajaqrq6uq0+nUq1evZjnHx8dHVRRF9fPzy1UdLVu2VBVFUa9cuaIu\nWLBArVWrlqrX69XKlSurX375pem4X3/9VW3UqJFqa2ururi4qGPGjMkxmMqLq1evqubm5qqlpaUa\nEBCQ43Fbt25VFUVRnZ2d1YSEhDzVcf36dVWn06n16tXL8Zg+ffqoiqKo+/btM21btmyZ2rt3b7VK\nlSqqtbW16uDgoHp7e6srVqzItoz7f8uQkBD122+/VevUqaPq9Xq1Z8+eeWpvYWvRokWOLwwGDx6s\nKoqiLlu2rMD11KhRQ9XpdOrJkydzdfy0adNURVHU5cuXqzt37lSbN2+u2tnZqaVLl1bffPNNNTY2\nVlVVVT169KjasWNH1dHRUbWzs1NffvllNTQ0tMDtFUI8HWQOiRCiUKj3Rn9aWVnl+Vy9Xs9rr71G\nVFRUtnMmDAYDK1euxM7Ojr59+5q2T5o0idOnT/Piiy8yduxYhgwZQmJiIu+//z6DBg3Ksb65c+cy\nYsQIqlevztixY2nbtm2e2/wk3Llzh6NHj1KqVCnq169v2n758mWuXbuGu7s7bm5uWc7r3LkzAHv2\n7MlTfR999BGzZs3ipZdeYvjw4aSmpjJp0iRmzpzJnDlzGDlyJHXq1GHEiBE4Ojry/fff8/777xfs\nIoGlS5diMBjo1asX9erVy/G4Ll260LhxYyIjI9mwYUOe6qhQoQIdOnQgKCiIU6dOZdkfFRXFH3/8\nQdWqVfHx8TFtHzVqFNeuXaNVq1a8//77vPbaa4SGhjJkyBCmTJmSY31jxoxhxowZeHp6Mm7cOJo0\naZKn9hamlJQUDh8+jK2tLS1atMiy//794ufnV+C6LCwsUFUVc3PzPJ33+++/06NHDypUqMA777xD\nhQoVWLp0Kb169WL//v20atUKKysrhg8fTsOGDfn999/p2rWr6d8dIcSzLW//YgghRDaCg4PZt28f\niqLQsmXLfJUxbNgwfvrpJ3x9fenVq1emfTt27CA8PJyhQ4diY2Nj2v7nn39SpUqVTMeqqsqwYcNY\nsWIFY8eOxcvLK0tde/fuxd/fP9ND/uNs3ryZ06dP5/r4h+fa5NaJEyfYsmULGRkZXL9+nT/++AMn\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e79657b8>"
"<matplotlib.figure.Figure at 0x7f22a2275438>"
]
}
],
"prompt_number": 49
"prompt_number": 52
},
{
"cell_type": "markdown",
@@ -3252,11 +3251,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxQAAAGxCAYAAAD7zfDlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmQZXV9///XWe6+dt/epmdhBhgQ/UYiDsbwK/mCoBER\nYoIilktJWUYJEiPmj1S+pMRgmSqNJmoUTawoapmgWFEjShIDEbcSR0NiBHHUGWbp6b3vvp7l90fP\njOBsPXdO97nL81FF0fTlnvNuDnNOv+77sxi+7/sCAAAAgC6YYRcAAAAAoH8RKAAAAAB0jUABAAAA\noGsECgAAAABdI1AAAAAA6BqBAgAAAEDXCBQAMOTuvPNOmaap/fv3h13KcUzT1M033xx2GQCAUyBQ\nAABO6L//+7/1rne9Sy94wQu0efNmxWIxTU9P64YbbtC3vvWtro75ve99T9dee61GR0eVTCZ18cUX\n64Mf/KA8zzvpewzD6PZHAABsADvsAgAAvenNb36zHnnkET3nOc/Ry1/+cuVyOT322GP68pe/rH/+\n53/Whz/8Yd16661rPt6Xv/xl3XDDDUomk3rVq16l0dFRfeUrX9Hb3/52fec739HnP//5dfxpAADr\nhUABADih17zmNfrMZz6jnTt3Pu37Dz30kH7nd35H73jHO/SKV7xCk5OTpz1WuVzWm970JkUiEf3n\nf/6nLrnkEknSX/zFX+iFL3yh7rvvPt1777161atetS4/CwBg/TDkCQBwQrfddttxYUKSrrzySl1x\nxRVqt9v6zne+s6Zj3XfffVpcXNRNN910LExIUiwW07vf/W5J0t133x1M4QCADUWgAACcsUgk8rS/\nn86DDz4oSXrJS15y3GuXX365EomEvve976nT6QRXJABgQxAoAABn5Mknn9R//Md/KJVK6fLLL1/T\ne5544glJ0gUXXHDca5ZlaceOHXIcR7/85S8DrRUAsP6YQwEAWLNGo6GbbrpJ7XZb73nPe5TL5db0\nvlKpJMMwTvrv53I5+b6vYrEYZLkAgA1AhwIAsCbtdls33nijvv/97+s1r3mNbr/99rBLAgD0AAIF\nAOC0Wq2WbrjhBt1///163etep09/+tNn9P6jHYhSqXTC149+P5/Pn3WtAICNRaAAAJxSvV7Xdddd\np/vvv19vfOMbdc8995zxZnMXXnihpF/NpXgqx3G0d+9eRSIRnXvuuYHUDADYOAQKAMBJVSoVXXPN\nNfrGN76hW2+9VX//93/f1XGuuuoqSdIDDzxw3GsPP/ywGo2GLrvssjWvGgUA6B0ECgDACRWLRb3o\nRS/St771Lb3jHe/Qhz/84a6P9YpXvEJjY2P6p3/6J/3whz889v1ms6k77rhDknTLLbecdc0AgI3H\nKk8AgBP6vd/7PT3yyCPasmWL0um07rzzzuP+nSuvvFL/9//+39MeK5PJ6BOf+IRuuOEGXXHFFbrp\npps0MjKir3zlK/rZz36mV77ylbrxxhvX4acAAKw3AgUA4IT27dsnwzB06NAhvetd7zrudcMwZJrm\nmgKFJF1//fX61re+pbvuuktf/OIX1Ww2tXPnTv31X/+1/uiP/ijo8gEAG4RAAQA4ob179wZ+zOc/\n//m6//77Az8uACA8zKEAAAAA0DUCBQAAAICuESgAAAAAdI1AAQBDzjCMM96oDgCAowzf9/2wiwAA\nAADQn+hQAAAAAOgagQIAAABA1wgUADDk7rzzTpmmqf3794ddynFM09TNN98cdhkAgFMgUAAATun+\n++/XlVdeqVwup0wmo+c///n69Kc/3dWxXNfVJz7xCV1++eUaGRlRMpnUeeedp5tuukl79uw54XuY\nMA4AvY2dsgEAJ/WRj3xEt912m8bGxvT6179e0WhUX/jCF/SGN7xBP/7xj/W+971vzceqVqv63d/9\nXT300EN6znOeo5tvvlnxeFwHDx7Ut7/9be3Zs0c7d+5cx58GALAeCBQAgBPat2+f3vGOd6hQKGj3\n7t3atm2bJOnP//zPdemll+r973+/brjhBj3/+c9f0/He/OY366GHHtLHP/5xvelNbzrudcdxAq0f\nALAxGPIEADihf/iHf1C73dZb3/rWY2FCkvL5vP7sz/5MkvSxj31sTcf60Y9+pH/8x3/UTTfddMIw\nIUm2zWdcANCPuHsDAE7owQcflCS95CUvOe61a665RpL00EMPrelYn/vc5yRJr371q1UsFvXVr35V\nBw4cUKFQ0FVXXaXzzjsvoKoBABuNQAEAOKEnnnhChmHoggsuOO61qakpJZNJHTx4UM1mU/F4/JTH\n+sEPfiBpdRjVG97wBq2srBx7zTAM3XLLLfrQhz4k06RxDgD9hjs3AOCESqWSJCmXy53w9aPfP/rv\nncr8/Lwk6fbbb9dVV12ln/70p6pWq/rGN76h8847Tx/96Ed11113BVQ5AGAjESgAAOvO8zxJ0kUX\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7745a58>"
"<matplotlib.figure.Figure at 0x7f22a241b8d0>"
]
}
],
"prompt_number": 50
"prompt_number": 53
},
{
"cell_type": "markdown",
@@ -3282,11 +3281,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxQAAAGxCAYAAAD7zfDlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmQXXWd///X3fett3R3OgkJBgZFGTFail8hgCJLZMQg\nxMGFkWKQQUaBsbTmRxWEYWZKKReMDJTiiKIOMKCARhlnEEgUBohTOi6MRCDppNP73fd7zzm/PzqJ\nxGy93M6999znoypF0rfvOe9wKuf0674/i8OyLEsAAAAAMA/OZhcAAAAAoH0RKAAAAADMG4ECAAAA\nwLwRKAAAAADMG4ECAAAAwLwRKAAAAADMG4ECANrAzTffLKfTqeHh4WaX0vbuueceOZ1Obdmypdml\nAIAtECgAoI396le/0saNG/WOd7xDS5culc/n0+DgoNavX6+tW7fO65jPPPOMLrjgAnV1dSkYDOqU\nU07R7bffLtM0F1xvvV7Xww8/rCuvvFKvf/3rFY/HFQwG9drXvlaf+tSnNDU1taDjl8tlnXzyyXI6\nnRoYGFhwvQCAo3M3uwAAwPxdddVVeu655/TGN75R733vexWLxfS73/1OjzzyiL7//e9r06ZNuuaa\na2Z9vEceeUTr169XMBjUpZdeqq6uLj366KO67rrr9POf/1wPPPDAgur9wx/+oPe9730KBoNau3at\nzj//fFWrVT3++OP6/Oc/r+985zvaunWrjj/++Hkd/zOf+cz+Lo7D4VhQrQCA2SFQAEAbu+yyy3Tv\nvfdq9erVB3z9iSee0Lvf/W7dcMMNuvjii7VkyZKjHiubzerKK6+Ux+PRk08+qVNPPVWSdMstt+is\ns87Sgw8+qPvvv1+XXnrpvOuNRqPatGmTLr/8coVCof1ftyxLV111le6++25df/31euSRR+Z87P/6\nr//Spk2bdNddd+mqq66ad40AgLlhyBMAtLFrr732oDAhSWeeeabWrl2rarWqn//857M61oMPPqip\nqSlt2LBhf5iQJJ/Pp1tvvVWSdOeddy6o3sHBQV1zzTUHhAlpppuwceNGSdKTTz455+OmUildfvnl\neve7360rr7xyQTUCAOaGQAEANuXxeA7479H89Kc/lSSde+65B712+umnKxAI6JlnnlGtVmtcka/i\ndrsP+O9cXH311SqVSvr617/e6LIAAEdBoAAAG9q5c6cef/xxhUIhnX766bN6z+9//3tJ0gknnHDQ\nay6XSytXrlS9XtfLL7/c0Fr32RcGDhVojuQ73/mOHnjgAX35y19mIjYANAFzKADAZkqlkjZs2KBq\ntap/+qd/UiwWm9X7MpmMHA7HYb8/FovJsiyl0+lGlitJ+u///m9t3LhRsVhM//iP/zjr9w0PD+ua\na67R+973Pl122WUNrwsAcHR0KADARqrVqi655BI9++yzuuyyy3T99dc3u6Sj+vWvf61169bJsix9\n97vf1XHHHTer91mWpcsvv1x+v1933XXX4hYJADgsOhQAYBOVSkUXX3yxNm/erA996EO655575vT+\nfR2ITCZzyNf3fT0ejy+01P1+9atf6Z3vfKcKhYIefPBBnXfeebN+71e+8hU9+eSTeuihh9TT09Ow\nmgAAc0OHAgBsoFgs6j3veY82b96sK664Qt/85jfnvA/DiSeeKOmPcylerV6v65VXXpHH49GqVasa\nUvPzzz+vM888U8ViUY888ojWrVs3p/f/4he/kCStX79eTqfzgF+SNDY2tv/P2Wy2ITUDAA5GhwIA\n2lwul9O6deu0detWXXPNNdq0adO8jnP22Wfru9/9rh577DFt2LDhgNe2bNmiUqmkM844Y9arRh3J\n1q1bdcEFF0iSNm/erLVr1875GGvXrpXX6z3ka3fffbcCgcD+eRWH+z4AwMIRKACgjaXTaZ177rl6\n7rnndMMNN+i222476nump6c1OTmpeDyu/v7+/V+/+OKL9elPf1r33Xefrr32Wr3pTW+SJJXLZd14\n442SZpZnXajHH39cF154obxerzZv3qzTTjvtqO956aWXVKvVtGLFCgUCAUnS5Zdfrssvv/yQ33/3\n3XcrFovpq1/96oLrBQAcGYECANrYRRddpOeee05DQ0MKh8O6+eabD/qeM888U2ecccb+P2/atEm3\n3HKLPvKRj+gb3/jG/q9HIhHdfffdWr9+vdauXasNGzYokUjo0Ucf1Ysvvqj3v//9uuSSSxZU7+9/\n/3utW7dOlUpFZ599tn7yk5/oJz/5yUHfd9111x2w2tTZZ5+t4eFhPfHEEwf8XQAAzUegAIA2tmPH\nDjkcDo2MjOzfafrVHA6HnE7nAT+EOxyO/b/+1IUXXqitW7fqH/7hH/TQQw+pXC5r9erV+uIXv6i/\n/du/XXC9o6OjqlQqcjgc+uEPf6gf/vCHh6z5ox/96AGB4kg1AwCai0ABAG3slVdemfN7brrpJt10\n002Hff2tb32rNm/evJCyDmvt2rUyTXPO75vr33M+5wAAzA+rPAEAAACYNwIFAAAAgHkjUAAAAACY\nNwIFALQBJiQ3Fv8vAaBxHJZlWc0uAgAAAEB7okMBAAAAYN4IFAAAAADmjUABAG3g5ptvltPp1PDw\ncLNLaXv33HOPnE6ntmzZ0uxSAMAWCBQA0MZ+9atfaePGjXrHO96hpUuXyufzaXBwUOvXr9fWrVsX\nfPx/+Id/kNPplNPp1H/8x380oOI/+sMf/qArr7xSK1euVCAQUG9vr972trfpC1/4wpyOYxiGbr/9\ndr3hDW9QMBhUd3e3LrjgAj3zzDMNrRcAcGgECgBoY1dddZU2btyoYrGo9773vbrhhhv0lre8RY88\n8ojOOOMM3XHHHfM+9vPPP69bbrlF4XC44atMfe9739PJJ5+sBx54QKeddppuuOEGbdiwQeFwWN//\n/vdnfRzLsvSBD3xA1113ner1uq699lpddNFF2rJli04//XQ9+uijDasZAHBo7mYXAACYv8suu0z3\n3nuvVq9efcDXn3jiCb373e/WDTfcoIsvvlhLliyZ03GLxaI++MEP6m1ve5tWrlype++9t2E1/+Y3\nv9Ff/uVf6uSTT9aPfvQj9fX1HfC6YRizPtZ9992nBx98UG9/+9v1+OOPy+v1SpI+9rGP6f/9v/+n\nK6+8UmeddZbC4XDD6gcAHIgOBQC0sWuvvfagMCFJZ555ptauXatqtaqf//zncz7u3/3d32l0dFT3\n3HNPw/ds+Pu//3vV63V95zvfOShMSJLL5Zr1se68805J0q233ro/TEjSmjVrdOmll2pyclIPPvjg\nwosGABwWgQIAbMrj8Rzw39n68Y9/rLvuukuf/exntWrVqobWlM1mtXnzZp1yyik68cQT9eyzz+oL\nX/iCbrvtNm3evFm1Wm3WxyqXy3r66acVCoX0jne846DXzzvvPEkz3RoAwOJhyBMA2NDOnTv1+OOP\nKxQK6fTTT5/1+6ampvTRj35U73znO3X11Vc3vK5f/OIXsixLy5cv18UXX6zvfe97B7y+fPlyPfjg\ng1qzZs1Rj/XSSy/JNE2tWrVKTufBn4+95jWvkSS9+OKLjSkeAHBIdCgAwGZKpZI2bNigarWqjRs3\nKhaLzfq9f/3Xf61yuax//dd/XZTaJiYmJEk//OEP9dRTT+nf/u3flEqltGPHDn3qU5/S8PCwzj//\nfE1PTx/1WJlMRpIO+/fb9/V0Ot2g6gEAh0KgAAAbqVaruuSSS/Tss8/qsssu0/XXXz/r937jG9/Q\nww8/rC996UsaGhpalPpM05Q0M/H6jjvu0KWXXqpYLKbly5frs5/9rN73vvdpampKX/va1xbl/ACA\nxiNQAIBNVCoVrV+/Xps3b9aHPvQhfetb35r1e0dGRvSJT3xCF154oT7ykY8c8nssy1pwjYlEQpLk\ndDr1F3/xFwe9ftFFF0maWbL2aPZ1IPZ1Kv7Uvq/H4/F51QoAmB0CBQDYQLFY1Hve8x5t3rxZV1xx\nhb75zW/OaXWm7du3K5/P69FHH92/kd2+X/uCyXnnnSen06nbb7993nWeeOKJkiS/3y+fz3fQ6/t+\n+C+VSkc91vHHHy+n06mXX375kEvNbt++XZJ0wgknzLteAMDRMSkbANpcLpfTunXrtHXrVl1zzTXa\ntGnTnI8xODioK6644pAh5KmnntL27dt17rnnamhoSK9//evnXevKlSu1atUqvfLKK3r55ZcPWkXq\nN7/5zf7vOxq/36+3v/3t2rp1q7Zu3aq1a9ce8PqPf/xjSdJZZ50173oBAEdHoACANpZOp3Xuuefq\nueee0w033KDbbrvtqO+Znp7W5OSk4vG4+vv7Jc18in+4eQuXX365tm/frk9+8pM655xzFlzzxz/+\ncV1//fX69Kc/rfvuu2//vhO7d+/WF7/4RTkcDm3YsOGA97z00kuq1WpasWKFAoHA/q9fffXV2rp1\nq2688UY9/vjj+7sezz//vO6//3719fVp/fr1C64ZAHB4BAoAaGMXXXSRnnvuOQ0NDSkcDuvmm28+\n6HvOPPNMnXHGGfv/vGnTJt1yyy36yEc+om984xvHsNoZ1157rR577DE99NBD+vM//3OdddZZyuVy\nevjhh5XJZHT99dcftK/E2WefreHhYT3xxBMH/F02bNig733ve3rwwQf1xje+UevWrdP09LTuv/9+\nWZalr33ta+ySDQCLrKGB4o477tBXv/pV7dixQ5L0ute9TjfeeKPOP//8Rp4GALDXjh075HA4NDIy\noo0bNx70usPhkNPpPOCHcIfDsf/XbMzle2fD5XLpBz/4gW6//XZ961vf0te+9jV5PB6dcsopuuaa\na3TppZcetoZD1XHfffdp06ZN+vrXv66vfOUrCgQCWrt2rW688Ua99a1vbVjdAIBDc1iNWLLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7a045f8>"
"<matplotlib.figure.Figure at 0x7f22a2450cc0>"
]
}
],
"prompt_number": 51
"prompt_number": 54
},
{
"cell_type": "markdown",
@@ -3354,11 +3353,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7bf60b8>"
"<matplotlib.figure.Figure at 0x7f22a219b780>"
]
}
],
"prompt_number": 52
"prompt_number": 55
},
{
"cell_type": "markdown",
@@ -3384,11 +3383,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7745a90>"
"<matplotlib.figure.Figure at 0x7f22a240c978>"
]
}
],
"prompt_number": 53
"prompt_number": 56
},
{
"cell_type": "markdown",
@@ -3417,11 +3416,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e79c9eb8>"
"<matplotlib.figure.Figure at 0x7f22a2390a20>"
]
}
],
"prompt_number": 54
"prompt_number": 57
},
{
"cell_type": "markdown",
@@ -3448,11 +3447,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAx0AAAGaCAYAAABqsy7aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8jXf/x/HXdXJO9t6yI0PEJkYJiShFjQ6jVTop2mp1\notqf0aHV6uCmu0qX0Spt0RolKK3aO0LECCIheyfn+v1x6SEDiYZwfJ6PRx4nOee6ru/3nLjvXu98\nx0dRVVVFCCGEEEIIIa4RXV13QAghhBBCCGHeJHQIIYQQQgghrikJHUIIIYQQQohrSkKHEEIIIYQQ\n4pqS0CGEEEIIIYS4piR0CCGEEEIIIa4pCR1CCCGEEEKIa0pChxBC3GJ0Ol25LwsLC1xdXenYsSOf\nfvopRqOx1tuMjY2t1O7FX8XFxVWet3//fgYMGICnpyc2NjZEREQwceJECgsLL9nW0qVL6dy5M05O\nTjg4ONCuXTvmzp1b6+9JCCFE9enrugNCCCGuP0VRmDBhAgClpaUcOnSIn376iT///JNVq1axYMGC\na9Lu6NGjcXZ2rvS8hYVFpec2b95MXFwcpaWl9OvXD39/f1avXs3kyZNZvXo1q1evxtLSstw5M2fO\nZNSoUbi7u/Pggw9iaWnJwoULefjhh9m9ezfvvPPONXlfQgghLk+RiuRCCHFr0el0KIpCWVlZuef3\n7NlD27ZtKSgoYN26dURHR9dam7Gxsaxbt47k5GQCAgKueHxZWRlNmjQhISGBJUuW0KtXLwBUVWXA\ngAH8+OOPTJkyhTFjxpjOSU5OJiIiAgcHB7Zu3WpqJzMzk9atW3P48GE2btxIu3btau19CSGEqB6Z\nXiWEEAKAxo0bExMTA2ijDLVNUZRqHxsfH8+BAwfo1KmTKXD8e42pU6cC8PHHH5c758svv6S4uJin\nnnqqXLBxdnbm5ZdfrvIcIYQQ14dMrxJCCGHy7+B3TQJCTa69dOlSsrOz0ev1REREEBcXh42NTaVj\n//jjDwC6d+9e6bXg4GDCwsI4dOgQSUlJ1K9f/4rn9OjRA4A1a9bU2vsRQghRfRI6hBBCALBr1y7W\nrl2Loii0bdvW9PzixYvZsWNHta9z8XqRi58DePLJJ8s97+rqyowZM7j//vvLPZ+QkABAeHh4lW2E\nhYWRmJhIYmKiKXQkJCSgKEqV53h7e2Nra8uJEycoLCzE2tq62u9HCCHEfyehQwghbkGqqjJp0iRU\nVaW0tJSkpCQWLVpEcXEx/fv3p3379qZjlyxZwpw5c6p97apCR9++fXnxxRdp0aIFbm5uJCcnM2fO\nHKZNm8bgwYNxdHTkzjvvNB2flZUFgJOTU5Vt/Pt8ZmZmjc4pKCggKytLQocQQlxnEjqEEOIWNWnS\nJEALCU5OTrRp04bBgwczbNiwcsfNnj2b2bNn/6e2Ro8eXe7n8PBw3njjDXx8fBg1ahTjx48vFzqE\nEEKYFwkdQghxC6pq96q6MHToUEaPHs3u3bvJzc3F3t4euDBa8e/oRUX/Pn/x9rtOTk6cO3eOrKws\nXFxcLnnOpUZChBBCXDsSOoQQQlxWbazpuBQrKyscHBzIysoiPz/fFDoiIiKAC2s7KkpMTKy0fqNB\ngwZs3LiRhISEStvinjp1ivz8fPz9/WVqlRBC1AEJHUIIIS6rNtZ0XEpCQgKZmZk4Ojri7u5uej4u\nLo433niD3377jbFjx5Y7JykpicTERIKCgggODjY936VLFzZu3Mhvv/1WKXQsX77cdF0hhBDXn9Tp\nEEIIcVmzZ8/GaDRW+6vitK3k5GTOnTtX6bppaWk88sgjANx3333odBf+kxQTE0PDhg1Zt24dv/zy\ni+l5o9FoKgg4YsSIctd75JFHsLKy4n//+x9Hjx41PZ+RkcGbb76JoiiVzhFCCHF9SEVyIYS4xVyq\nIvm18tVXXzFixAg6duxIcHAwrq6uHDt2jGXLlpGdnU3r1q1ZuXIljo6O5c7bvHkzcXFxlJSU0K9f\nP/z9/Vm9ejVbt24lOjqa1atXYzAYyp0zc+ZMRo0ahZubGwMHDsRgMPDDDz+QkpLCCy+8YCosKIQQ\n4vqS0CGEELeY6x069uzZw7Rp09iyZQunTp0iOzsbR0dHGjVqxIABAxg+fDh6fdWzfffv38/EiRNZ\ns2YN2dnZBAUFcf/99zN27FisrKyqPGfZsmVMnTqVbdu2oaoqkZGRPPXUUwwZMuRavk0hhBCXIaFD\nCCGEEEIIcU3Jmg4hhBBCCCHENSWhQwghhBBCCHFN3ZBb5l6qGJQQQgghhBDixlZVEVYZ6RBCCCGE\nEEJcUxI6hBBCCCGEENfUDTm96mJVDc9UJfXcCd74+inTz57OPrzy0Kxr1S1RA1u2bAEgKiqqjnsi\naoP8Ps2H/C7Ni/w+zYf8Ls3LrfL7vNLyCLMZ6TDoy+/XXlRaVEc9EUIIIYQQQlzMbEKHlaF86Cgu\nKayjngghhBBCCCEuZjahw9JgXe7nYhnpEEIIIYQQ4oZgNqFDb2FAQTH9XFZWSpmxrA57JIQQQggh\nhAAzCh2KomBZaYqVjHYIIYQQQghR18wmdABYVlhMXlwq6zqEEEIIIYSoa+YVOiqu65CRDiGEEEII\nIeqcmYUOmV4lhBBCCCHEjca8QodMrxJCCCGEELeK9HTYtauue1Et5hU6ZHqVEEIIIYS4Fagq9OgB\nLVrAtm113ZsrMrPQUXGkQ0KHEEIIIYQwQ2vWwJYtYDTCp5/WdW+uyLxCR8XpVVKVXAghhBBCmKNf\nfrnw/XffQW5u3fWlGswrdMj0KiGEEEIIcSt47z1Ytw6aNYPISDh5sq57dFn6uu5Abaq8kFxChxBC\nCCGEMEOKAh07woYNYG9f1725IjMb6SgfOopkepUQQgghhDBnN0HgALMLHeWnV5XISIcQQgghhBB1\nzrxCh77iSIeEDiGEEEIIIeqaeYWOCtOrSiR0CCGEEEIIc7F4MYwbBydO1HVPasy8QkfFkQ6pSC6E\nEEIIIcyBqsKbb8Jbb8GyZZVfP3MGnn0W7r//+vetGswrdMiWuUIIIYQQwhxt3Aj//ANubjBkSOXX\nDQb46COYNw+OHLn+/bsCswodVlKRXAghhBBCmKP339ceR4wAG5vKr7u4QL9+2vezZ1+/flWTWYUO\ng1QkF0IIIYQQ5ubIEfjpJ20048knL33c0KHa45dfQlnZ9elbNZlV6LCqOL1KRjqEEEIIIcTNbuVK\nMBrhvvugXr1LHxcTA6GhkJICv/9+/fpXDWYVOiruXiVrOoQQQgghxE3v8cdh/36YOPHyxykKPPaY\n9rhtW7Uuraqq6ftnn32W+fPnYTRmYzSewmjMveR5JaUlHErZy/K/5jH9h/FXbEdfrd7cJCruXiXT\nq4QQQgghhFmIiKjecY8/DoMGQUBAlS+XlZVhYWEBwJQpU1AUeOmlJ4A8/P1tWLt2EQMGhKFk52Lc\nlA6de4GVFWVlpRw7c4jE47tJPLGHpFP7KSktrnb3zSt0VJpeVf0PQgghhBBCiJueq6v2dV5hYSHW\n1to98uzZs/nrr0189NE7QB7h4Y7Mnj2PMWO6oSgwbFh3LCwsUPLyKev8OCnpZ0hsHkjiwDs4nHWU\nov/wB33zCh0y0iGEEEIIIW5hWVlZODk5AfDbb7/x/vvvsXz5AiCPZs1cmD59HTrdIQB69WrJnXe2\noLC4iJPpqaSkp5Jy5jQpm7Zw6v5wSiwbahdNT/jP/TKr0GHQW6KgoKLNTSstK8FoLEOns6jjngkh\nhBBCCFG7VFUlNTUVb29vAPbs2cM999zNgQObgTyiopzZs2cHkIhOp6NZMx+WrfyAXYcTSEk7rYWM\n9DOczcoof2Gn6kUEJ1sXwgKaEubX5IrHmlXoUBQFg8Gq3AhHcWkx1pZV7GUshBBCCCHEjWrrVpg5\nU6sy3kS7qVdVlaSkJEJCQgDIzMwkPDyctLRDGAxFREQolJUVkJ29E2dnB9zdDRw9+gvHz5xm095t\n7Dh0gPzCgqvukoONE2H+TQjza0LYyi14vPQuyqOu8GRfsq5wrlmFDtCmWJULHSWFEjqEEEIIIcTN\n5b334Lvv2KeqhH7yCZaWlhiNRtq2bcv27Wvx9XXEySmPNm0akpy8ngYNgtDp4NChxSiKQn5RIVuW\nLWdTwm5SbJSr6oIFBhqHtCLMXxvN8Hb1Q1HOX2vKHMjM1Pr5/vuQkXHZa5lf6DBYwUUBTmp1CCGE\nEMKsnToFeXkQEqJtlSpuanv37sVHVXFZsADVwoIhW/7hg79X0aFDIxQlj7vv7kRy8l/4+7cAYNWq\nWaZzVVUl6eRxNu7Zxo7E/ZSUlUI1AofRqJKZlotaqODt6kHzhg3oEt0Wb4926HQuVZ/03Xfw3HPw\nv//B999fsQ3zCx2ymFwIIYQQt4qsLGjaFNLTISwM+vTRvtq3B73Z3eaZpX379mFvb09AQACqqvLq\nq+O5uzifIaWl0P8O7mkWQnr6PnQ6LwA++6xyTYzcgnw279/Jpj3bSc04e9n2igtLSE/J5tzpHBys\n7IkMCSHmtlZ0jG6JnV352UFG4xU6HxUFX30F77xzxfdpdv8aK26bWyQFAoUQQghhrvR6ePpp+L//\ng8REmDZN+3J1hYQEcHev6x6KCg4cOEBpaSmNGzdGVVW++OJTnJyseeWV4UAed/VoTMnoaQAoz93H\n+HZVL9IuKi7mUMpRNu/fxa7DByi7TEJQjCrnDpwhI1NH8/AI+vftxW23NcVWp4De4r8HVA8PLQBf\nhhmGjvIjHSUyvUoIIYQQ5srODl59FcaNg02bYMkS7cvSUgLHDeLEiROkpaURFRWFqqqsXLmM7du3\n8Pnnb6Aoudx5Z0N27DiATncOgAdD/KC0DNo10b7OKygq4sip4ySeSOZQyjGOpZ4sV028KsLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e79f1358>"
"<matplotlib.figure.Figure at 0x7f22b40a6fd0>"
]
}
],
"prompt_number": 55
"prompt_number": 58
},
{
"cell_type": "markdown",
@@ -3518,21 +3517,21 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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\nLfHx8Xz11VfExcXx8ssve8rT0tI4fvy4V91q1arx+++/5+lcnTt3plOnTvTs2ZPQ0FBmzJhxccGL\nz6lnQkRERM7ujTewp6SQXqGCEonLUG69CLmV2e12gBy9B2+88UaO5KNr16788ccfLFy4ME8x3Hvv\nvbz77rvMmjWLAQMG5DV0KSTqmRAREZHcxcfDW28BcODhh4n0czhS+HLrhcitLCIightvvJFx48aR\nkZFBpUqVWLduHWvXrqVUqVJexzz33HN8+umndO/enRUrVnDdddeRkJDAsmXLeOWVV2jZsmWO9h96\n6CGSk5MZOHAgYWFhvPrqq769UMk3JRMiIiKSuzffhBMnONG4MSn/93/+jkYKmWEYOXohcivL9tFH\nHzFgwADeffddMjMzadWqFf/9739p166d1zEhISGsXbuW4cOHs2jRImbPnk3ZsmVp1aoVNWvW9DrX\n6QYMGEBSUhLDhg0jPDycF1980YdXK/llWIX8iIHTZ/NHRubvO46NGzcC0LBhQ5/EJJcW3d/iS/e2\neNP9LWYSEiAmBhIT+WvaNJKvuUb39h9paWk4nU5/hyHiM+f7nT7X53f1TIiIiEhO4eEwZQqsWUPy\nNdf4OxoRuURpAraIiIjkZLdD9+4wdaq/IxGRS5iSCRERERERyRclEyIiIiIiki9KJkREREREJF+U\nTIiIiIjbiRMwcSKcPOnvSESkiFAyISIiIm7vvANPPw09evg7EhEpIpRMiIiICCQlweuvu98/8YR/\nYxGRIkPJhIiIiMCkSXD8ODRrBm3b+jsaESkilEyIiIhc7pKTYfx49/vhw8Ew/BqOiBQdSiZEREQu\nd4sWwbFjcP310K6dv6MRkSIkwN8BiIiIiJ/dfz9ccQWEhqpXQkQuiJIJERGRy51haJ6EiOSLhjmJ\niIiICO+//z42mw2bzca6detyrVO9enVsNhutW7cu5OjkdOvXrycuLo7ExER/h6JkQkREREROCQ4O\n5qOPPspR/t1337Fjxw6cTieGhsP5lZIJEREREbkkdezYkU8++YSsrCyv8o8++ojatWtTrVo1P0Xm\nGykpKf4OwWcsy/J3CEomRERELkvvvQcvvghHjvg7ErnEdO/enePHj7N8+XJPmcvlYsGCBdx33305\n6luWxdtvv83VV19NcHAwZcuW5eGHH+bYsWNe9f79739z6623cuWVV+J0OomJieH5558nPTLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7ab1da0>"
"<matplotlib.figure.Figure at 0x7f22ac0a9e10>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nWq20atWKunXrMnr0aNzdbV85f/31V/bs2UNoaCjFihVj3759TJo0iXXr1rF9+3a8vb0BW89I48aN\n2bFjBz169KB27dqcOXOGRYsWsX//fooVK5bqmvHx8XTu3Jnff/+dX375hUceeSRLP7PcmpIOERER\nkWzmyt3LTdN0Wds3k5iYyOOPP87o0aMdyvv378+QIUMcytq3b88jjzzCggULePbZZwH44IMP2LZt\nG99++y2dOnWy133jjTfSvN7Vq1fp0KEDmzZtYunSpdSpU8fJn0gyS8OrRERERMTpnn/++VRl13oy\nAK5cucLZs2epUKEC+fPnZ9OmTfZj8+bNo3r16g4Jx81cunSJ1q1bs23bNpYvX66EI4dST4eIiIhI\nNsuO3ghXslgsBAUFpSo/f/48r732GvPmzeP8+fMOxy5evGh/vX//fjp27Jiuaw0ZMoTY2Fg2bdrE\n/fffn6m4xXXU0yEiIiIiTuXh4YHFkvpr5tNPP83MmTMZOHAgCxYsYOnSpSxdupSCBQtitVrt9e5k\nuNkTTzyBYRi89957Dm1IzqKeDhERERFxqrR6bs6fP89vv/1GZGQkb731lr08Li6Oc+fOOdQtV64c\nf/31V7qu1a5dO9q2bUtwcDC+vr5MnTo1c8GLS6inQ0REREQyLK1eibTK3NzcAFL1RowdOzZVktK5\nc2d27NjBvHnz0hXDM888w+TJk5k2bRqDBg1Kb+iShdTTISIiIiIZllavRlpl+fLlo0mTJowaNYqE\nhARKlSrF6tWrWbVqFQULFnQ455VXXmH+/Pl07dqVJUuWULNmTS5cuMDixYt5++23adSoUar2e/Xq\nxZUrVxg8eDB58+blvffec+4HlUxR0iEiIiIiGWIYRqpejbTKrpk9ezaDBg1i8uTJJCYm0rhxY5Yt\nW0aLFi0czvHx8WHVqlVERESwYMECpk+fTmBgII0bN6ZixYoO10pp0KBBXL58mbCwMPz8/Hjttdec\n+GklMwwzBy6XkHL1An9//wy1sWHDBgBq167tlJgkbbrPWUP32fV0j7OG7nPW0H12vdvd47i4OLy8\nvLIyJBGXut3P9O2+v2tOh4iIiIiIuJSSDhERERERcSklHSIiIiIi4lJKOkRERERExKWUdIiIiIiI\niEsp6RAREREREZdS0iEiIiIiIi6lpENERERERFxKSYeIiIiIiLiUU5OOESNGUKdOHfz9/QLine truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAxMAAAGaCAYAAAB0eh5pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcjeX/x/HXfWbMPoYwYzf2LKkskexbqCzlmywxJBFl\nqXwjjKHM2CtE2bNUSPq1kKVBshOSrzVbZIghxuzn/v1xOOaYwRgzc2bG+/l4nIdzruu67/tzd2uc\nz1ybYZqmiYiIiIiIyD2yODsAERERERHJnpRMiIiIiIhImiiZEBERERGRNFEyISIiIiIiaaJkQkRE\nRERE0kTJhIiIiIiIpImSCRERERERSRMlEyIiWYjFYnF4ubi4kDdvXp566immTJlCQkKCs0NM5ocf\nfqBhw4b4+fnh6+tLrVq1+Pzzz+/pHMePH09270lfHTp0yKDoRUTkfrg6OwAREXFkGAbBwcEAJCQk\ncPz4cZYtW8bmzZtZvXo13377rZMjvGnq1Km88cYb5M+fny5duuDm5saSJUsICgri999/Z9y4cfd0\nvsDAQIKCgpKVV65cOZ0iFhGR9GRoB2wRkazDYrFgGAaJiYkO5YcPH6Zq1apERUURHh5O/fr1nRTh\nTcePH+fhhx/G19eXnTt3Urx4cQAuXbpEjRo1OHr0KJs2baJWrVqpOlepUqVo0KABP//8c0aHLiIi\n6UTDnEREsoGyZctSr149AHbs2OHkaGxmz55NXFwcffv2tScSAHny5GHIkCEATJ8+PdPjWrduHRaL\nhW7dunH06FHatWtHvnz5yJ07N82bN2f//v0AnD17lu7du1OwYEE8PT154oknWL9+fabHKyKSnWmY\nk4hINnGjI9nd3d3Jkdjc6EFo3rx5sroWLVoAEB4efk/njIyMZNasWURERJAnTx5q1apF1apV0xTf\n8ePHqVWrFo8++iivvPIKf/zxBytWrKBBgwZs2LCBZs2aUahQITp16sTp06dZsmQJzZs359ChQxQr\nVixN1xQRedAomRARyQb+97//sX79egzDuKchTuvWrWPdunX3dK0BAwbg5+d313YHDx7EMAzKlSuX\nrK5gwYJ4eXnx119/ERMTg4eHR6quvWfPHl599VWHstq1a7NgwQICAwNTdY4b1q9fz4QJExgwYIC9\n7LXXXmPGjBnUqlWLbt26MWnSJHvdo48+ynvvvcekSZOYOHHiPV1LRORBpTkTIiJZiMViG30aHByM\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e78cf630>"
"<matplotlib.figure.Figure at 0x7f22ac0497f0>"
]
}
],
"prompt_number": 64
"prompt_number": 59
},
{
"cell_type": "markdown",
@@ -3603,11 +3602,11 @@
"output_type": "display_data",
"png": "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\n6qqrdI87+eSTZa/X2+fzU48FIYTkAYZhIEkSJElCJBLBunXrMHbsWPzqV7/CypUrc314fXI6nbjk\nkksAQNcYqVYX1CpEKnW/x+Pp12MyPcZUBoNB95rpbkskEof1OoSQ/PL4449j1qxZMBqNqK+vx7vv\nvpvT45H7mBSir9szvU86y5Ytw+7du7WqjTr0tLa2FoAy/XlJSQnC4bDucSNGjEBraysOHjzY6/PT\nUChCCMkzFosFU6dOxVtvvYUJEybgmmuuwfe//30UFxdn9PjB6LFIp7CwEADQ0dGh7Rs5ciRYlsXu\n3bshimK3XgW1TyK5hD9u3DgAwK5du9K+TrrHEEKOLjzP47777sPTTz+Nffv26W4zmUz49ttv4fF4\nsGHDBsyfPx+SJGm3J89Cl4927dqFW265BU6nE19++SVmz56NCy+88LDvk4nf//73mD59Om655RYA\ngN1ux+7du7vd76uvvoLX69X10KVDwYIQQvJUVVUVbr31VixcuBB33XUX/vSnP2X0uIHssejNhx9+\nCED5ZktlsVhQW1uLDz74AB988AHOOOMM3WPU2VqSF9X77ne/C4vFgo0bN6K9vR0Oh0O7TZIkrFmz\nBgzD4Mwzz+zX8RJChiae5zFjxgyYTCasWrUKDMNg3rx5mDZtGhYsWAC73a5VNCdPngxBEHJ8xIdn\n586deOWVV8AwDMLhMEaNGgWz2axblDST+/Tmsccew9dff414PI7nnntONxV4qk8++QTbt2/H0qVL\n007CoXNEA7QIIYRkTU8L5MmyLIfDYdnv98tGo1HetWvXIB9Zd1u3bk27//nnn5cZhpEtFou8d+9e\n3W1//vOfZYZh5NraWjkWi2n7t2zZIptMJrmoqKjbAnlXXXWVzDCMfPPNN+v2P/TQQzLDMPKMGTMy\nPma1xyKdadOmySzLdjtmWZbluXPn9jgOmhCSO7feeqt86qmnyoIgaPsefvhh+cQTTxzw154zZ448\nffr0jLZLL7007XPs2bOnx78toVBIDgaDun3//d//LU+YMOGw7pOpDRs2yB6PR16zZk3a20VRlKdO\nnSpfcMEFGT0fVSwIISSPORwO3Hbbbbjllltw5513YtWqVTk9np/85CcwGo046aSTUF5ers0KtXXr\nVhiNRjzxxBOorKzUPeaiiy7CK6+8gtWrV+M73/kOZs2ahebmZrz44ouQZRlPPvmkrioBKDM4rV+/\nHg8++CB27NiBk08+GZ9//jlef/11FBUV4dFHH83ae5JpETxChoxgMIjly5dj9erVuqGV8Xh8UPqh\nnn322QF9/nS9YDabDTt37kRbWxs8Hk9G98lUbW0tjjnmGFx88cWoq6uDzWbT3X7bbbdhzJgxGVfM\nM27efv/993HuueeivLwcLMum/Ye9++67UVZWBpvNhjPPPBM7d+7M9OkJIYT04Nprr0VpaSlWr16N\njz/+OOfHUlNTg02bNuGxxx7D008/jZaWFsybNw/btm3DnDlz0j5u1apVWLp0KQwGAx555BG89tpr\nOOOMM/D+++9j9uzZ3e7v9XqxefNm3HDDDfjqq6/w4IMPYuvWrbj88svxz3/+EzU1NRkfszr1bU+3\n9XR7b7cRQnLjgw8+gCiKOOuss3T7N27ciNNPPz1HR5Ud4XAYNTU1uOmmm3T7Q6EQGIaB0WjM6D49\n+fbbb1FWVoarrrpKt7+qqgotLS3dztuXLVsGp9OJJ598EgzDoK6uDjzP9/oeMq5YdHR04LjjjsPc\nuXMxZ86cbn9sf//73+PBBx/Es88+izFjxuCee+7BD37wA/znP//p9k0UIYSQLslNhelYLBbs379/\nkI6md7/+9a/x61//+rAfx7IsbrjhBtxwww0ZP8bj8WDp0qVYunTpYb9esj179vR4W2+rd69YsQIr\nVqzo12sTQrIrGo2isLBQ1xNQX1+Pd955B1u2bBnw1587dy6ampoyuq/f78dzzz2X8XOzLIt4PK6t\nH6HatWsXTj31VNjtdnR0dPR5n540NTWhoaEBLS0tuv2NjY0wGo2orq7W9r3wwgtgWRZ33nmntu/x\nxx/vs38v42AxY8YMzJgxAwBw2WWX6W6TZRnLli3Db37zG5x//vkAlFJRIBDACy+8gJ///OeZvgwh\nhBBCCCFpTZs2DdFoFC0tLfB6veB5HldccQWWLFmC8ePHD/jrZ2MolPplkiiKuv12ux2XXXaZbjKL\nLVu2YPfu3fjggw8yvg+gTIwxZ84c/PnPf9aqO8cddxzOPvts3HXXXdr99u7diw0bNuCmm27SZvZ7\n++238dBDD+HHP/4xlixZAkA519+xY4c2DXdPstJjsWfPHjQ2NuKHP/yhtk+dLnHTpk0ULAghhBBC\nSL8FAgGsWrUK8+fPx+jRo1FfX4/58+dj1qxZuvs1NDTgL3/5C7755hucdNJJ4Hkee/fuxaLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7cb3470>"
"<matplotlib.figure.Figure at 0x7f22a2390940>"
]
}
],
"prompt_number": 57
"prompt_number": 60
},
{
"cell_type": "markdown",
@@ -3620,7 +3619,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Keep looking at these plots until you grasp how to interpret the covariance matrix $\\mathbf{P}$. When you start dealing with a, say, $9{\\times}9$ matrix it may seem overwhelming - there are 81 numbers to interpret. Just break it down - the diagonal contains the variance for each state variable, and all off diagonal elements are the product of two variances and a scaling factor $p$. You will not be able to plot a $9{\\times}9$ matrix on the screen because it would require living in 10-D space, so you have to develop your intution and understanding in this simple, 2-D case. \n",
"Keep looking at these plots until you grasp how to interpret the covariance matrix $\\mathbf{P}$. When you start dealing with a, say, $9{\\times}9$ matrix it may seem overwhelming - there are 81 numbers to interpret. Just break it down - the diagonal contains the variance for each state variable, and all off diagonal elements are the product of two variances and a scaling factor $p$. You will not be able to plot a $9{\\times}9$ matrix on the screen because it would require living in 10-D space, so you have to develop your intuition and understanding in this simple, 2-D case. \n",
"\n",
"> **sidebar**: when plotting covariance ellipses, make sure to always use *plt.axis('equal')* in your code. If the axis use different scales the ellipses will be drawn distorted. For example, the ellipse may be drawn as being taller than it is wide, but it may actually be wider than tall."
]
@@ -3637,7 +3636,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"The Kalman filter is designed as a recursive algorithm - as new measurements come in we immediately create a new estimate. But it is very common to have a set of data that have been already collected which we want to filter. Kalman filters can always be run in a *batch* mode, where all of the measurements are filtered at once. We have implemented this in `KalmanFilter.batch_filter()`. Internally, all the function does is loop over the measurements and collect the resulting state and covariance estimates in arrays. It may seem a bit trivial, but you will almost always want to do this if you can for several reasons. First, it will execute a bit quicker than if you implement the loop yourself. Second, the logic in your code will be a bit cleaner, and you will have a reduced chance of bugs. Third, and most importantly, it you batch process your data you can then use an extremely powerful techique to generate far smoother results than you have seen so far. We will present that technique in the next section; here I will show you how to use `KalmanFilter.batch_filter()`.\n",
"The Kalman filter is designed as a recursive algorithm - as new measurements come in we immediately create a new estimate. But it is very common to have a set of data that have been already collected which we want to filter. Kalman filters can always be run in a *batch* mode, where all of the measurements are filtered at once. We have implemented this in `KalmanFilter.batch_filter()`. Internally, all the function does is loop over the measurements and collect the resulting state and covariance estimates in arrays. It may seem a bit trivial, but you will almost always want to do this if you can for several reasons. First, it will execute a bit quicker than if you implement the loop yourself. Second, the logic in your code will be a bit cleaner, and you will have a reduced chance of bugs. Third, and most importantly, it you batch process your data you can then use an extremely powerful technique to generate far smoother results than you have seen so far. We will present that technique in the next section; here I will show you how to use `KalmanFilter.batch_filter()`.\n",
"\n",
"All you have to do is collect your measurements into an array or list. Maybe it is in a CSV file, for example.\n",
"\n",
@@ -3653,7 +3652,7 @@
"\n",
" Xs, Ps, Xs_pred, Ps_pred = kfilter.batch_filter(zs)\n",
" \n",
"The funtion takes the list/array of measurements, filters it, and returns a list of state estimates (Xs), covariance matrices (Ps), and the predictions for the same (Xs_pred, Ps_pred).\n",
"The function takes the list/array of measurements, filters it, and returns a list of state estimates (Xs), covariance matrices (Ps), and the predictions for the same (Xs_pred, Ps_pred).\n",
"\n",
"Here is a complete example drawing from the code above"
]
@@ -3680,13 +3679,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e794bd68>"
"<matplotlib.figure.Figure at 0x7f22a2472ba8>"
]
}
],
"prompt_number": 58
"prompt_number": 61
},
{
"cell_type": "heading",
@@ -3738,11 +3737,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAGKCAYAAACLuTc4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8TecfwPHPvdlLECJGSCSIPWPvPYsatWdoVdHWKDqs\nlqrWT6tFUbvSUq1Nbar2qFkjEptIQkjIvuf3x2nClXszb3Ijvu/X675unPOc53xvnOr53vM8z1ej\nKIqCEEIIIYQQQpiQ1twBCCGEEEIIIXIfSTSEEEIIIYQQJieJhhBCCCGEEMLkJNEQQgghhBBCmJwk\nGkIIIYQQQgiTk0RDCCGEEEIIYXKSaAghhBBCCCFMLtVEY/LkyWi1Wr1XkSJFkrUpWrQo9vb2NGnS\nhIsXL2ZZwEIIIYQQQoiczzItjXx8fNi3b1/Sny0sLJJ+njlzJrNnz2b58uWULl2aqVOn0qJFCy5f\nvoyjo2NSu8ePH5suaiGEEEIIIUS2cXZ2TvcxaRo6ZWFhgaura9LLxcUFAEVRmDNnDhMmTKBz586U\nL1+e5cuXExERwerVq9MdjBBCCCGEECJ3SFOiERgYSNGiRSlZsiQ9e/YkKCgIgKCgIIKDg2nZsmVS\nW1tbWxo2bMihQ4eyJmIhhBBCCCFEjpfq0KnatWuzfPlyfHx8CA4O5vPPP6du3bpcuHCB+/fvA1Co\nUCG9Y1xdXbl7967RPjPy6EW8Hk6cOAFAjRo1zByJyM3kOhNZTa4xkR3kOssmOh14e8Pt23DsGFSp\nYu6I9ETFPOXq7XNcunmGyzf+IeTxvRTbK4pC6K1Irp0MIeRGhNF2Wq2WU6dOZSq2VBON1q1bJ/1c\noUIF6tSpg6enJ8uXL6dWrVpGj9NoNEb3Jf6HIYQxco2I7CDXmchqco2J7CDXWdZyOnmSMkFBxBQq\nxLmYGDDz71un6AiNuMPd8EDuhQcRGnEHBSXV4xLiddy9HM610yFEhEYbbWdnZ0fz5s1p06ZNpmNN\n02TwF9nb21O+fHkCAgLo1KkTAMHBwRQrViypTXBwMG5ubpkOTgghhBBCCHNy2bQJgLB27eCFBZGy\ni6IoREQ/Skos7j++TlxCTNqPj7Ug+FI0F48F8TQyymi7ggUL0q5dO5o0aYK9vb0pQk9/ohEdHc2/\n//5L06ZN8fT0xM3NjR07dlC9evWk/QcPHuTrr7822oc84hPGyGNgkR3kOhNZTa4xkR3kOssGT57A\n3r0AFJk4kSJeXtl26gRdAqeu/MWuE79zL+xmmo+z0FriWbgMeS2LcvLAv+zctovoaONPMKpUqYKf\nnx+tWrXC0lI/NcjsqrGpJhpjxozhjTfewN3dnQcPHjBt2jSioqLo378/AO+//z7Tp0/Hx8eHUqVK\n8fnnn+Pk5ESvXr0yFZgQQgghhBBmtWYNPHsGDRuClxf88Qfs3AmzZoGDQ5acMiEhnmOX9rHr+LpU\n51skKpS/GD7Fq1DGvTIP7zxjxfKV7N5tfAVYrVZLq1at8PPzo1q1aqYKPZlUE407d+7Qs2dPQkND\nKViwIHXq1OHIkSO4u7sDMG7cOKKiohg+fDiPHj2idu3a7NixA4cs+uULIYQQQohX1JMn0K8fjB0L\n9eqZO5rU+frCkCHQrJn65+nT1TkaHTtCq1YmPVVcfBxHL+5m14l1PIwISbGtg10efNwrU6Z4FcoU\nr4yjrTNbtmxhwtdTOX/+vPHjHBzo3r07AwcOTLqXz0qpJhr+/v6pdjJp0iQmTZpkkoCEEEIIIcQr\nQqeDVavg1i3914MHcPcuaF+qpBAfDxs2wL17cPSoeWJOj8qVYeHC539u1kxNNPbsMVmiERsfw+Hz\nO9l18g8eR4YZbKNN0OEd+JAy+b3x6TuSot5V0Gq0PHnyhNU/r2b58uVJq8EaUrhwYQYMGECPHj3I\nkyePSeJOi3TP0cgOOp2O2NhYc4chzKBEiRIAKY4lfJVYW1ujffkfWSGEECK30Gjg3Xfh6dPk+0JC\n4KUSCNjaqu/HjsG5c1CxYtbHaCKxcTFYNmmMduZM2L070/3FxEZx8Nyf7Dm1nohn4QbbaDUW1DwS\nRItdVykY9gx0f8P3G7n1228s+esv1qxZw7Nnz4yeo2LFivj5+dGmTRusrKwyHXN65bhEQ6fTERMT\ng62tbYpL5IrcyTbxH6BcQFEUoqOjsbGxkWRDCCFE7qTRwNtvq6sxFS8O7u7PXwUKJG9vbw/DhsH8\n+fDTTzBnTvbHnE4Rz8L5Zfc8zgUew8rCikJjGuN2PwK3AyspXKwMbvndccnjilabthWpomKe8deZ\nLew9vZGn0YbrWFhYWFKnXHOa13iT/G8pcPo0FC3KqWHDWPTgATuGDEGn0xk8VqPR0Lx5c/z8/PD1\n9TXr/XSOSzRiY2MlyRC5gkajwdbWNilxFkIIIXKlb75JX3s/PzXRWLkSZs4EG5usicsEAu5cYPm2\nb3j89CEAcQlx3C7mzO1iznB6HZxW21lZWFMofzHc8rvj5uJOYZfiyRKQZ9GR7PtnE/v/2UxUjIEn\nQP/1U7diS5pV70xeRxcA4u3j2aHTsXjSJE7fuWM0VltbW7p27cqgQYPw9PQ04W8h43JcogEpF/sT\n4lUi17IQQgjxkmrVoGpV9Vv6TZuga1dzR5SMLjSEXUH72Xp4NTrF8JODF8UlxHI7JJDbIYF62xMT\nEBfnQly6+Q8xsYbrWFhb2dKgUmuaVO1EHoe8AERGRrJ27VqWLFnC7du3jZ67YMGC9O/fn14lSpCv\nVi0oWDAdnzRr5chEQwghhBBC5EA7d8LgwdC9O6RQMy1VX3yhTiQ38cpNphB55zqrPu/NRZ/M37Ab\nS0AS2Vrb07ByOxpX7YCjnTpJ+969eyxbtgx/f38iIgwPrQLw8fHBz8+P9u3bY/PsGXh7Q0ICfPop\njBgB1taZjj+zJNEQQgghhBBpc+mSuqpUCjfAadKmjWniMbHAu/+y7LfJhBtIMlrU6ELDKu148OgO\n98JucT/sJvcf3uLew1s8jXqSrvPY2zjSqGoHGlVph72NIwAXLlxg0aJFbNmyhfj4eKPHNm7cGD8/\nP+rWrft85MSDB+pSvH/+CWPGwIIFaq2Pjh3VeTRmIomGEEIIIYRIm0uX1PcyZcwbh4npFB17T21g\n098r0aE/VMrB1om+rd6nnEd1AJwd8lOqmP5qWRHPwtWkI5UExMEuD02rdqR+pTbY2dij0+nYs2cP\nixcv5vDhw0bjs7a2pnPnzgwePJhSpUolb+DuDtu3w7Zt8OGH6t9T587wwQcwe3YGfyuZJ4mGEEII\nIYRIm8uX1XcfH/PGYUJPoyNYteNbLgSdSLbPs7APA9qMJp9TysOonOzz4mSf12ACci/sFiHhd3G0\ny4NPiarYWKkLxfj7+7NkyRICAgKM9ptfUeg7ahR9+valgKFVvF7Wpg00bw4//giTJ8Nbbxlud+AA\n5M0Lnp7g5JR6vxkka25mg2XLlqHVatFqtRw8eNBgG29vb7RaLU2aNMnm6MSLDh06xJQpU3j8+LG5\nQxFCCCFynlz2RCPo3mW+Wv2hwSSjWfVOjOzyecpJRlwcKIrR3U72eSntXpF6FVtR2bsOkU+e8u23\n31KvXj0mTpxoNMkomT8/X4SG8nf16rz/wQdpSzISWVnBe+/BzZtQq5bhNt27q8UI8+RRJ4/XrKkm\nJWGGCwZmlCQa2cjOzo7Vq1cn237kyBECAwNlWd8cQBINIYQQwoinT9Vq39bW4OFhun5DQ9XVp7KR\noijsPbWRb3+byKOIEL199lHxDCn7Fh3rD8DCIoXBP337Qr58EBSU6vmuXbvGxIkTqVevHnPmzCHM\nyA197dq1Wbx4MTsLFqRXZCS2HTqk63Ppsbc3vD0hAWrUgLJl1QKKoaFw/DisXQuOjhk/nwEydCob\ntWnThrVr1/Ldd99hafn8V7969Wp8fHywsEhboZec6unTpzg4OJg7DJNQUvh2QgghhHgtOTiok8Bv\n3lQL9JnCkydQogTExsKdO+Dqapp+U/AsOpKfd37HucBjyfaVcCvNwBYfkD+fW+odRUWpydfu3VCy\nZLLdiqJw9OhRFi9ezO4UKolbWFjQvn17Bg8eTMWKFdU+9+1TJ3FnxaR5CwvYvFn9WaeD4GA1Wbp7\n1+Q1TeSJRjbq2bMnDx8+5M8//0zalpCQwJo1a+jdu3ey9oqiMHfuXCpWrIidnR2FChXCz88vWRa8\nceNGOnTogLu7O7a2tnh4eDBu3DhiYmL02gUHB+Pn55fUzs3NjbZt23Lx4sWkNlqtlilTpiSLxcPD\ng4EDByb9OXE42N69exk5ciSFChXC6YUxfsePH6dt27bkzZsXe3t7GjRowL59+/T6nDx5MlqtlkuX\nLtGnTx/y5s1LwYIF+fjjjwG4desWHTt2xNnZGTc3N742sIxeTEwMU6ZMoVSpUtja2lKsWDE+/PBD\noqL016nWarUMGzaM9evXU6FCBWxtbalQoYLe38XkyZMZN24cAJ6enknD3Q4cOADAqVOnaNu2La6u\nrtjZ2eHh4UG/fv2Ijo5OFpcQQgiRKzk4qN+Em0qePNCsGcTHw4oVpuvXiBv3r/KV/4cGk4zGVd9g\nVNcvyJ+/cNpWamraVH3fs0dvc3x8PJs3b6ZTp0707NnTaJLh5OTEkCFDOHDgAHPmzFGTjMT+YmLU\nVaQKFUrX50s3rRYKF4a6dbOknok80chGxYoVo0GDBqxevZp27doBsGvXLh48eEDPnj3x9/fXaz9s\n2DCWLFnCgAEDGDlyJDdv3mTu3LkcO3aM48ePY/Nf1rls2TLs7OwYNWoUzs7OHD58mP/973/cunVL\nr8+uXbty/vx5RowYgaenJw8ePODAgQNcvXqVcuXKJbUzNHxLo9EY3D5ixAjy58/Pp59+mjLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e794bef0>"
"<matplotlib.figure.Figure at 0x7f22a2449198>"
]
}
],
"prompt_number": 59
"prompt_number": 62
},
{
"cell_type": "markdown",
@@ -3782,11 +3781,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e7749ac8>"
"<matplotlib.figure.Figure at 0x7f22a1fc97f0>"
]
}
],
"prompt_number": 60
"prompt_number": 63
},
{
"cell_type": "markdown",
@@ -3794,7 +3793,7 @@
"source": [
"The improvement in the velocity, which is an unobserved variable, is even more dramatic. \n",
"\n",
"Since we are plotting velocies let's look at what the the 'raw' velocity is, which we can compute by subtracting subsequent measurements. We see below that the noise swamps the signal, causing the computed values to be essentially worthless. I show this to reiterate the importance of using Kalman filters to compute velocities, accelerations, and even higher order values. I use a Kalman filter even when my measurements are so accurate that I am willing to use them unfiltered if I am also interested in the velocities and/or accelerations. Even a very small error in a measurement gets magnified when computing velocities. "
"Since we are plotting velocities let's look at what the the 'raw' velocity is, which we can compute by subtracting subsequent measurements. We see below that the noise swamps the signal, causing the computed values to be essentially worthless. I show this to reiterate the importance of using Kalman filters to compute velocities, accelerations, and even higher order values. I use a Kalman filter even when my measurements are so accurate that I am willing to use them unfiltered if I am also interested in the velocities and/or accelerations. Even a very small error in a measurement gets magnified when computing velocities. "
]
},
{
@@ -3816,11 +3815,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f85e794bf28>"
"<matplotlib.figure.Figure at 0x7f22a2517ac8>"
]
}
],
"prompt_number": 61
"prompt_number": 64
},
{
"cell_type": "heading",
@@ -3895,11 +3894,11 @@
" self.x = self.F.dot(self.x) + self.B.dot(self.u)\n",
" self.P = self.F.dot(self.P).dot(self.F.T) + self.Q\n",
"\n",
"I haven't discussed the use of numpy much until now, but this method illustrates the power of that package. We use numpy's `array` class to store our data and perform the linear algebra for our filters. `array` implements matrix multiplication using the `.dot()` method; if you use `*` you will get element-wise multiplication. As a heavy user of linear algebra this design is somewhat distressing as I use matrix multiplication far more often than element-wise multiplication. However, this design is due to historical developments in the library and we must live with it. The Python community has recognized this problem, and in Python 3.5 we will have the `@` operator to implement matrix multiplication. \n",
"I haven't discussed the use of NumPy much until now, but this method illustrates the power of that package. We use NumPy's `array` class to store our data and perform the linear algebra for our filters. `array` implements matrix multiplication using the `.dot()` method; if you use `*` you will get element-wise multiplication. As a heavy user of linear algebra this design is somewhat distressing as I use matrix multiplication far more often than element-wise multiplication. However, this design is due to historical developments in the library and we must live with it. The Python community has recognized this problem, and in Python 3.5 we will have the `@` operator to implement matrix multiplication. \n",
"\n",
"With that in mind, the Python code `self.F.dot(self.x)` implements the math expression $\\mathbf{F x}$.\n",
"\n",
"Numpy's `array` implements matrix transposition by using the `.T` property. Therefore, `F.T` is the python implementation of $\\mathbf{F}^\\mathsf{T}$.\n",
"NumPy's `array` implements matrix transposition by using the `.T` property. Therefore, `F.T` is the python implementation of $\\mathbf{F}^\\mathsf{T}$.\n",
"\n",
"The `update()` method implements the update equations of the Kalman filter, which are\n",
"\n",
@@ -4006,7 +4005,7 @@
"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.html\n",
"\n",
"- [2] https://en.wikipedia.org/wiki/Kalman_filter\n",
"\n",
+31 -32
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:ed0b405c8ffb065407f38ce863d85b30b6b2bc8baad8971131f305b6e547b206"
"signature": "sha256:85a87b3bc9daf34f345daefcbf63b738db291bad018d92551178c5b8f8bf909b"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -259,7 +259,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7f51f20896a0>"
"<IPython.core.display.HTML at 0x7fa0fc79f320>"
]
}
],
@@ -284,7 +284,7 @@
"level": 2,
"metadata": {},
"source": [
"Bayesian Probabilitity"
"Bayesian Probability"
]
},
{
@@ -293,14 +293,13 @@
"source": [
"The title of this book is *Kalman and Bayesian Filters in Python* but to date I have not touched on the Bayesian aspect much. There was enough going on in the earlier chapters that adding this form of reasoning about filters could be a distraction rather than a help. I now which to take some time to explain what Bayesian probability is and how a Kalman filter is in fact a Bayesian filter. This is not just a diversion. First of all, a lot of the Kalman filter literature uses this formulation when talking about filters, so you will need to understand what they are talking about. Second, this math plays a strong role in filtering design once we move past the Kalman filter. \n",
"\n",
"To do so we will go back to our first tracking problem - tracking a dog in a hallway. Recall the update step - we believed with some degree of precision that the dog was at position 7 (for example), and then receive a measurement that the dog is at position 7.5. We want to incorporate that measurement into our belief. In the *Discrete Bayes* chapter we used histograms to denote our estimates at each halway position, and in the \n",
"*One Dimensional Kalman Filters* we used Gaussians. Both are method of using *Bayesian* probability.\n",
"To do so we will go back to our first tracking problem - tracking a dog in a hallway. Recall the update step - we believed with some degree of precision that the dog was at position 7 (for example), and then receive a measurement that the dog is at position 7.5. We want to incorporate that measurement into our belief. In the *Discrete Bayes* chapter we used histograms to denote our estimates at each hallway position, and in the *One Dimensional Kalman Filters* we used Gaussians. Both are method of using *Bayesian* probability.\n",
"\n",
"Briefly, *Bayesian* probability is a branch of math that lets us evaluate a hypothesis or new data point given some uncertain information about the past. For example, suppose you are driving down your neighborhood street and see one of your neighbors at their door, using a key to let themselves in. Three doors down you see two people in masks breaking a window of another house. What might you conclude?\n",
"\n",
"It is likely that you would reason that in the first case your neighbors were getting home and unlocking their door to get inside. In the second case you at least strongly suspect a robbery is in progress. In the first case you would just proceed on, and in the second case you'd probably call the police.\n",
"\n",
"Of course, things are not always what they appear. Perhaps unbeknowst to you your neighbor sold their house that morning, and they were now breaking in to steal the new owner's belongings. In the second case, perhaps the owners of the house were at a costume event at the next house, they had a medical emergency with their child, realized they lost their keys, and were breaking into their own house to get the much needed medication. Those are both *unlikely* events, but possible. Adding a few additional pieces of information would allow you to determine the true state of affairs in all but the most complicated situations.\n",
"Of course, things are not always what they appear. Perhaps unbeknownst to you your neighbor sold their house that morning, and they were now breaking in to steal the new owner's belongings. In the second case, perhaps the owners of the house were at a costume event at the next house, they had a medical emergency with their child, realized they lost their keys, and were breaking into their own house to get the much needed medication. Those are both *unlikely* events, but possible. Adding a few additional pieces of information would allow you to determine the true state of affairs in all but the most complicated situations.\n",
"\n",
"These are instances of *Bayesian* reasoning. We take knowledge from the past and integrate in new information. You know that your neighbor owned their house yesterday, so it is still highly likely that they still own it today. You know that owners of houses normally have keys to the front door, and that the normal mode of entrance into your own house is not breaking windows, so the second case is *likely* to be a breaking and entering. The reasoning is not ironclad as shown by the alternative explanations, but it is likely."
]
@@ -322,9 +321,9 @@
"$$P(A|B) = \\frac{P(B | A)\\, P(A)}{P(B)}\\cdot$$\n",
"\n",
"\n",
"Before we do some computations, let's review what the terms mean. P(A) is called the *prior probability* of the event A, and is often just shortened to the *prior*. What is the prior? It is just the probabability of A being true *before* we incorporate new evidence. In our dog tracking problem above, the prior is the probability we assign to our belief that the dog is positioned at 7 before we make the measurement of 7.5. It is important to master this terminology if you expect to read a lot of the literature.\n",
"Before we do some computations, let's review what the terms mean. P(A) is called the *prior probability* of the event A, and is often just shortened to the *prior*. What is the prior? It is just the probability of A being true *before* we incorporate new evidence. In our dog tracking problem above, the prior is the probability we assign to our belief that the dog is positioned at 7 before we make the measurement of 7.5. It is important to master this terminology if you expect to read a lot of the literature.\n",
"\n",
"$P(A|B)$ is the *conditional probability* that A is true given that B is true. For example, if it is true that your neighbor still owns their house, then it will be very likely that they are not breaking into their house. In Bayesian probability this is called the *posterior*, and it denotes our new belief after incorporating the measurement/knowledge of B. For our dog tracking problem the posterier is the probability given to the estimated position after incorporating the measurement 7.5. For the neighbor problem the posterier would be the probability of a break in after you find out that your neighbor sold their home last week.\n",
"$P(A|B)$ is the *conditional probability* that A is true given that B is true. For example, if it is true that your neighbor still owns their house, then it will be very likely that they are not breaking into their house. In Bayesian probability this is called the *posterior*, and it denotes our new belief after incorporating the measurement/knowledge of B. For our dog tracking problem the posterior is the probability given to the estimated position after incorporating the measurement 7.5. For the neighbor problem the posterior would be the probability of a break in after you find out that your neighbor sold their home last week.\n",
"\n",
"What math did we use for the dog tracking problem? Recall that we used this equation to compute the new mean and probability distribution\n",
"\n",
@@ -336,7 +335,7 @@
"$$ \n",
"\n",
"\n",
"Here $N(\\mu_1, \\sigma_1^2)$ is the old estimated position, so $\\sigma_1$ is an indiation of our *prior* probability. $N(\\mu_2, \\sigma_2^2)$ is the mean and variance of our measurement, and so the result can be thought of as the new position and probability distribution after incorporating the new measurement. In other words, our *posterior distribution* is \n",
"Here $N(\\mu_1, \\sigma_1^2)$ is the old estimated position, so $\\sigma_1$ is an indication of our *prior* probability. $N(\\mu_2, \\sigma_2^2)$ is the mean and variance of our measurement, and so the result can be thought of as the new position and probability distribution after incorporating the new measurement. In other words, our *posterior distribution* is \n",
"\n",
"$$\\frac{1}{{\\sigma_{estimate}}^2} + \\frac{1}{{\\sigma_{measurement}}^2}$$"
]
@@ -375,7 +374,7 @@
"\n",
"$$P(A|B) = \\frac{P(B | A)\\, P(A)}{P(B)}\\cdot$$\n",
"\n",
"It's the same thing being calculated by the code. Multipy the prior ($P(A)$) by the probability of the measurement at each position ($P(B|A)$) and divide by the total probability for the event ($P(B)$).\n",
"It's the same thing being calculated by the code. Multiply the prior ($P(A)$) by the probability of the measurement at each position ($P(B|A)$) and divide by the total probability for the event ($P(B)$).\n",
"\n",
"In other words the first half of the Discrete Bayes chapter developed Bayes' equation from a thought experiment. I could have just presented Bayes' equation and then given you the Python routine above to implement it, but chances are you would not have understood *why* Bayes' equation works. Presenting the equation first is the normal approach of Kalman filtering texts, and I always found it extremely nonintuitive. \n"
]
@@ -414,7 +413,7 @@
"\\end{aligned}\n",
" $$\n",
" \n",
"A typical problem would have you compute the distance travelled given a constant velocity or acceleration. 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",
"A typical problem would have you compute the distance traveled given a constant velocity or acceleration. 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 all of those factors explicitly and exactly is impossible for anything but the most trivial problem. I could try to include equations for things like bumps in the road, the behavior of the car's suspension system, even the effects of hitting bugs with the windshield, but the job would never be done - there would always be more effects to add and limits to our knowledge (how many bugs do we hit in an hour, for example). 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, that the suspension for each wheel acts identically, and so on.\n",
"\n",
@@ -451,14 +450,14 @@
"level": 2,
"metadata": {},
"source": [
"Modelling Dynamic Systems"
"Modeling Dynamic Systems"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Modelling dynamic systems is properly the topic of at least one undergraduate course in mathmatics. To an extent there is no substitute for a few semesters of ordinary and partial differential equations. If you are a hobbiest, or trying to solve one very specific filtering problem at work you probably do not have the time and/or inclination to devote a year or more to that education.\n",
"Modeling dynamic systems is properly the topic of at least one undergraduate course in mathematics. To an extent there is no substitute for a few semesters of ordinary and partial differential equations. If you are a hobbyist, or trying to solve one very specific filtering problem at work you probably do not have the time and/or inclination to devote a year or more to that education.\n",
"\n",
"However, I can present enough of the theory to allow us to create the system equations for many different Kalman filters, and give you enough background to at least follow the mathematics in the literature. My goal is to get you to the stage where you can read a Kalman filtering book or paper and understand it well enough to implement the algorithms. The background math is deep, but we end up using a few simple techniques over and over again in practice. \n",
"\n",
@@ -488,10 +487,10 @@
"\n",
"$$ g(t) = \\dot{x}$$\n",
"\n",
"if the behaviour of the system depends on time. However, if the system is *time invariant* the equations are of the form\n",
"if the behavior of the system depends on time. However, if the system is *time invariant* the equations are of the form\n",
"$$ f(x) = \\dot{x}$$\n",
"\n",
"What does *time invariant* mean? Consider a home stereo. If you input a signal $x$ into it at time $t$, it will output some signal $f(x)$. If you instead make the input at a later time $t + \\Delta t$ the output signal will still be exactly the same, just shifted in time. This is different from, say, an aircraft. If you make a control input to the aircraft at a later time it's behavior will be different because it will have burned additonal fuel (and thus lost weight), drag may be different due to being at a different altitude, and so on.\n",
"What does *time invariant* mean? Consider a home stereo. If you input a signal $x$ into it at time $t$, it will output some signal $f(x)$. If you instead make the input at a later time $t + \\Delta t$ the output signal will still be exactly the same, just shifted in time. This is different from, say, an aircraft. If you make a control input to the aircraft at a later time it's behavior will be different because it will have burned additional fuel (and thus lost weight), drag may be different due to being at a different altitude, and so on.\n",
"\n",
"We can solve these equations by integrating each side. The time variant equation is very straightforward. We essentially solved this problem with the Newtonian equations above, but let's be explicit and write it out. Starting with $$\\dot{\\mathbf{x}}=\\mathbf{v}$$ we get the expected\n",
"\n",
@@ -546,21 +545,21 @@
"\n",
"$$x(t) = \\Phi(t-t_0)x(t_0)$$\n",
"\n",
"In other words, we just want to compute the value of $x$ at time $t$ by multipying its previous value by some matrix $\\Phi$. This is not trivial to do because the original equations do not include time \n",
"In other words, we just want to compute the value of $x$ at time $t$ by multiplying its previous value by some matrix $\\Phi$. This is not trivial to do because the original equations do not include time \n",
"\n",
"Broadly speaking there are three ways to find $\\Phi$. The technique most often used with Kalman filters is to use a Taylor-series expansion: \n",
"\n",
"$$ \\Phi(t) = e^{\\mathbf{F}t} = \\mathbf{I} + \\mathbf{F}t + \\frac{(\\mathbf{F}t)^2}{2!} + \\frac{(\\mathbf{F}t)^3}{3!} + ... $$\n",
"\n",
"This is much easy to compute, and thus is the typical approach used in Kalman filter design when the filter is reasonably small. If you are wondering where $e$ came from, I point you to the wikipedia article on the matrix exponential [1]. Here the important point is to recognize the very simple and regular form this equation takes. We will put this form into use in the next chapter, so I will not belabor its use here. \n",
"This is much easy to compute, and thus is the typical approach used in Kalman filter design when the filter is reasonably small. If you are wondering where $e$ came from, I point you to the Wikipedia article on the matrix exponential [1]. Here the important point is to recognize the very simple and regular form this equation takes. We will put this form into use in the next chapter, so I will not belabor its use here. \n",
"\n",
"*Linear Time Invarient Theory*, also known as LTI System Theory, gives us a way to find $\\Phi$ using the inverse Laplace transform. You are either nodding your head now, or completely lost. Don't worry, I will not be using the Lapace transform in this book except in this paragraph, as the computation is quite difficult to perform in practice. LTI system theory tells us that \n",
"*Linear Time Invariant Theory*, also known as LTI System Theory, gives us a way to find $\\Phi$ using the inverse Laplace transform. You are either nodding your head now, or completely lost. Don't worry, I will not be using the Laplace transform in this book except in this paragraph, as the computation is quite difficult to perform in practice. LTI system theory tells us that \n",
"\n",
"$$ \\Phi(t) = \\mathcal{L}^{-1}[(s\\mathbf{I} - \\mathbf{F})^{-1}]$$\n",
"\n",
"I have no intention of going into this other than to say that the inverse Lapace transform converts a signal into the frequency (time) domain, but finding a solution to the equation above is non-trivial. If you are interested, the Wikipedia article on LTI system theory provides an introduction [2].\n",
"I have no intention of going into this other than to say that the inverse Laplace transform converts a signal into the frequency (time) domain, but finding a solution to the equation above is non-trivial. If you are interested, the Wikipedia article on LTI system theory provides an introduction [2].\n",
"\n",
"Finally, there are numerical techniques to find $\\Phi$. As filters get larger finding analytical solutions becomes very tedious (though packages like Sympy make it easier). C. F. van Loan [3] has developed a technique that finds both $\\Phi$ and $Q$ numerically.\n",
"Finally, there are numerical techniques to find $\\Phi$. As filters get larger finding analytical solutions becomes very tedious (though packages like SymPy make it easier). C. F. van Loan [3] has developed a technique that finds both $\\Phi$ and $Q$ numerically.\n",
"\n",
"I have implemented van Loan's method in `FilterPy`. You may use it as follows:\n",
"\n",
@@ -737,7 +736,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f51f208c5f8>"
"<matplotlib.figure.Figure at 0x7fa0fc79fbe0>"
]
}
],
@@ -761,7 +760,7 @@
"\n",
"So let's work through this expression by expression. Start with $\\mathbf{HPH}^\\mathsf{T}$. The linear equation $\\mathbf{ABA}^T$ can be thought of as changing the basis of $\\mathbf{B}$ to $\\mathbf{A}$. So $\\mathbf{HPH}^\\mathsf{T}$ is taking the covariance $\\mathbf{P}$ and putting it in measurement ($\\mathbf{H}$) space. \n",
"\n",
"In English, consider the problem of reading a temperature with a thermometer that provices readings in volts. Our state is in terms of temperature, but we are now doing calculations in *measurement space* - volts. So we need to convert $\\mathbf{P}$ from applying to temperatures to volts. The linear algebra form $\\textbf{H}\\textbf{P}\\textbf{H}^\\mathsf{T}$ takes $\\mathbf{P}$ to the basis used by $\\mathbf{H}$, namely volts. \n",
"In English, consider the problem of reading a temperature with a thermometer that provides readings in volts. Our state is in terms of temperature, but we are now doing calculations in *measurement space* - volts. So we need to convert $\\mathbf{P}$ from applying to temperatures to volts. The linear algebra form $\\textbf{H}\\textbf{P}\\textbf{H}^\\mathsf{T}$ takes $\\mathbf{P}$ to the basis used by $\\mathbf{H}$, namely volts. \n",
"\n",
"Then, once in measurement space, we can add the measurement noise $\\mathbf{R}$ to it. Hence, the expression for the uncertainty once we include the measurement is:\n",
"\n",
@@ -778,7 +777,7 @@
"\n",
"$\\mathbf{K}$ is the *Kalman gain* - the ratio that chooses how far along the residual to select between the measurement and prediction in the graph above.\n",
"\n",
"We can think of the inverse of a matrix as linear algebra's way ofcomputing $\\frac{1}{x}$. So we can read the equation for $\\textbf{K}$ as\n",
"We can think of the inverse of a matrix as linear algebra's way of computing $\\frac{1}{x}$. So we can read the equation for $\\textbf{K}$ as\n",
"\n",
"$$ \\textbf{K} = \\frac{\\textbf{P}\\textbf{H}^\\mathsf{T}}{\\mathbf{S}} $$\n",
"\n",
@@ -842,10 +841,10 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"In general the design of the $\\mathbf{Q}$ matrix is among the most difficult aspects of Kalman filter design. This is due to several factors. First, the math itself is somewhat difficult and requires a good foundation in signal theory. Second, we are trying to model the noise in something for which we have little information. For example, consider trying to model the process noise for a baseball. We can model it as a sphere moving through the air, but that leave many unknown factors - the wind, ball rotation and spin decay, the coefficient of friction of a scuffed ball with stitches, the effects of wind and air density, and so on. I will develop the equations for an exact mathematical solution for a given process model, but since the process model is incomplete the result for $\\mathbf{Q}$ will also be incomplete. This has a lot of ramifications for the behavior of the Kalman filter. If $\\mathbf{Q}$ is too small than the filter will be overconfident in it's prediction model and will diverge from the actual solution. If $\\mathbf{Q}$ is too large than the filter will be unduly influenced by the noise in the measurements and perform suboptimally. In practice we spend a lot of time running simulations and evaluating collected data to try to select an appropriate value for $\\mathbf{Q}$. But let's start by looking at the math.\n",
"In general the design of the $\\mathbf{Q}$ matrix is among the most difficult aspects of Kalman filter design. This is due to several factors. First, the math itself is somewhat difficult and requires a good foundation in signal theory. Second, we are trying to model the noise in something for which we have little information. For example, consider trying to model the process noise for a baseball. We can model it as a sphere moving through the air, but that leave many unknown factors - the wind, ball rotation and spin decay, the coefficient of friction of a scuffed ball with stitches, the effects of wind and air density, and so on. I will develop the equations for an exact mathematical solution for a given process model, but since the process model is incomplete the result for $\\mathbf{Q}$ will also be incomplete. This has a lot of ramifications for the behavior of the Kalman filter. If $\\mathbf{Q}$ is too small than the filter will be overconfident in it's prediction model and will diverge from the actual solution. If $\\mathbf{Q}$ is too large than the filter will be unduly influenced by the noise in the measurements and perform sub-optimally. In practice we spend a lot of time running simulations and evaluating collected data to try to select an appropriate value for $\\mathbf{Q}$. But let's start by looking at the math.\n",
"\n",
"\n",
"Let's assume a kinematic system - some system that can be modelled using Newton's equations of motion. We can make a few different assumptions about this process. \n",
"Let's assume a kinematic system - some system that can be modeled using Newton's equations of motion. We can make a few different assumptions about this process. \n",
"\n",
"We have been using a process model of\n",
"\n",
@@ -862,10 +861,10 @@
"\n",
"We model kinematic systems using Newton's equations. So far in this book we have either used position and velocity, or position,velocity, and acceleration as the models for our systems. There is nothing stopping us from going further - we can model jerk, jounce, snap, and so on. We don't do that normally because adding terms beyond the dynamics of the real system actually degrades the solution. \n",
"\n",
"Let's say that we need to model the position, velocity, and acceleration. We can then assume that acceleration is constant. Of course, there is process noise in the system and so the acceleration is not actually constant. In this section we will assume that the acceleration changes by a continouus time zero-mean white noise $w(t)$. In other words, we are assuming that velocity is acceleration changing by small amounts that over time average to 0 (zero-mean). \n",
"Let's say that we need to model the position, velocity, and acceleration. We can then assume that acceleration is constant. Of course, there is process noise in the system and so the acceleration is not actually constant. In this section we will assume that the acceleration changes by a continuous time zero-mean white noise $w(t)$. In other words, we are assuming that velocity is acceleration changing by small amounts that over time average to 0 (zero-mean). \n",
"\n",
"\n",
"Since the noise is changing continuously we will need to integrate to get the discrete noise for the discretization interval that we have chosen. We will not prove it here, but the equation for discretizing the noise is\n",
"Since the noise is changing continuously we will need to integrate to get the discrete noise for the discretization interval that we have chosen. We will not prove it here, but the equation for the discretization of the noise is\n",
"\n",
"$$\\mathbf{Q} = \\int_0^{\\Delta t} \\Phi(t)\\mathbf{Q_c}\\Phi^\\mathsf{T}(t) dt$$\n",
"\n",
@@ -1035,7 +1034,7 @@
"\n",
"$$f(x)=Fx+\\Gamma w$$\n",
"\n",
"where $\\Gamma$ is the *noise gain* of the system, and $w$ is the constant piecewise accleration (or velocity, or jerk, etc). \n",
"where $\\Gamma$ is the *noise gain* of the system, and $w$ is the constant piecewise acceleration (or velocity, or jerk, etc). \n",
"\n",
"\n",
"Lets start with by looking a first order system. In this case we have the state transition function\n",
@@ -1104,7 +1103,7 @@
"\n",
"$$\\Gamma = \\begin{bmatrix}\\frac{1}{2}\\Delta t^2 \\\\ \\Delta t\\\\ 1\\end{bmatrix}$$\n",
"\n",
"There is no 'truth' to this model, it is just convienent and provides good results. For example, we could assume that the noise is applied to the jerk at the cost of a more complicated equation. \n",
"There is no 'truth' to this model, it is just convenient and provides good results. For example, we could assume that the noise is applied to the jerk at the cost of a more complicated equation. \n",
"\n",
"The covariance of the process noise is then\n",
"\n",
@@ -1323,9 +1322,9 @@
"\n",
"** author's note: the following aside probably belongs elsewhere in the book**\n",
"\n",
"> As an aside, most textbooks are more exact with the notation, in Gelb[1] for example, *Pk(+)* is used to denote the uncertainty covariance for the prediction step, and *Pk(-)* for the uncertainty covariance for the update step. Other texts use subscripts with 'k|k-1', superscipt $^-$, and many other variations. As a programmer I find all of that fairly unreadable; I am used to thinking about variables changing state as a program runs, and do not use a different variable name for each new computation. There is no agreed upon format, so each author makes different choices. I find it challenging to switch quickly between books an papers, and so have adopted this admittedly less precise notation. Mathematicians will write scathing emails to me, but I hope the programmers and students will rejoice.\n",
"> As an aside, most textbooks are more exact with the notation, in Gelb[1] for example, *Pk(+)* is used to denote the uncertainty covariance for the prediction step, and *Pk(-)* for the uncertainty covariance for the update step. Other texts use subscripts with 'k|k-1', superscript $^-$, and many other variations. As a programmer I find all of that fairly unreadable; I am used to thinking about variables changing state as a program runs, and do not use a different variable name for each new computation. There is no agreed upon format, so each author makes different choices. I find it challenging to switch quickly between books an papers, and so have adopted this admittedly less precise notation. Mathematicians will write scathing emails to me, but I hope the programmers and students will rejoice.\n",
"\n",
"> If you are a programmer trying to understand a paper's math equations, I strongly recommend just removing all of the superscripts, subscripts, and diacriticals, replacing them with a single letter. If you work with equations like this every day this is superflous advice, but when I read I am usually trying to understand the flow of computation. To me it is far more understandable to remember that $P$ in this step represents the updated value of $P$ computed in the last step, as opposed to trying to remember what $P_{k-1}(+)$ denotes, and what its relation to $P_k(-)$ is, if any.\n",
"> If you are a programmer trying to understand a paper's math equations, I strongly recommend just removing all of the superscripts, subscripts, and diacriticals, replacing them with a single letter. If you work with equations like this every day this is superfluous advice, but when I read I am usually trying to understand the flow of computation. To me it is far more understandable to remember that $P$ in this step represents the updated value of $P$ computed in the last step, as opposed to trying to remember what $P_{k-1}(+)$ denotes, and what its relation to $P_k(-)$ is, if any.\n",
"\n",
"> For example, for the equation of $\\mathbf{S}$ above, Wikipedia uses\n",
"\n",
@@ -1511,7 +1510,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f51ccf45ef0>"
"<matplotlib.figure.Figure at 0x7fa0d7227e80>"
]
},
{