Got g-h chapter very close to it's final form.

This commit is contained in:
Roger Labbe committed 2014-07-07 20:03:51 -07:00
1 parent e0794b03ea
commit 6b8a9c9a07
3 files changed
+258 -164

No files matched your search

+27 -9
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:1271401e3e500309f48f2586d911eb77b92fa00c7c1e66dfa6cb66278cada519"
"signature": "sha256:7debfded1814383cde2b22e0ae56fb73c58b54d6a35757938b396184ae06e906"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -277,22 +277,23 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a book for programmers that have a need or interest in Kalman filtering. The motivation for this book came out of my desire for a gentle introduction to Kalman filtering. I'm a software engineer that spent almost two decades in the avionics field, and so I have always been 'bumping elbows' with the Kalman filter, but never had the need to implement one myself. As I moved into solving tracking problems with computer vision I needed to start implementing them. There are classic textbooks in the field, such as Grewal and Andrew's excellent *Kalman Filtering*. But sitting down and trying to read these books is a dismal and trying experience if you do not have the background. Typcially the first few chapters fly through several years of undergraduate math, blithely referring you to textbooks on, for example, It\u014d calculus, and presenting an entire semester's worth of statistics in a few brief paragraphs. These books are good textbooks for an upper undergraduate course, and an invaluable reference to researchers and professionals, but the going is truly difficult for the more casual reader. Symbology is introduced without explanation, different texts use different words and variables names for the same concept, and the books are almost devoid of examples or worked problems. I often found myself able to parse the words and comprehend the mathematics of a defition, but had no idea as to what real world phenomena these words and math were attempting to describe. \"But what does that *mean?*\" was my repeated thought.\n",
"This is a book for programmers that have a need or interest in Kalman filtering. The motivation for this book came out of my desire for a gentle introduction to Kalman filtering. I'm a software engineer that spent almost two decades in the avionics field, and so I have always been 'bumping elbows' with the Kalman filter, but never had the need to implement one myself. As I moved into solving tracking problems with computer vision I needed to start implementing them. There are classic textbooks in the field, such as Grewal and Andrew's excellent *Kalman Filtering*. But sitting down and trying to read these books is a dismal and trying experience if you do not have the background. Typcially the first few chapters fly through several years of undergraduate math, blithely referring you to textbooks on, for example, It\u014d calculus, and present an entire semester's worth of statistics in a few brief paragraphs. These books are good textbooks for an upper undergraduate course, and an invaluable reference to researchers and professionals, but the going is truly difficult for the more casual reader. Symbology is introduced without explanation, different texts use different words and variables names for the same concept, and the books are almost devoid of examples or worked problems. I often found myself able to parse the words and comprehend the mathematics of a definition, but had no idea as to what real world phenomena these words and math were attempting to describe. \"But what does that *mean?*\" was my repeated thought.\n",
"\n",
"However, as I began to finally understand the Kalman filter I realized the underlying concepts are quite straightforward. A few simple probability rules, some intuition about how we integrate disparate knowledge to explain events in our everyday life and the core concepts of the Kalman filter are accessible. Kalman filters have a reputation for difficulty, but shorn of much of the formal terminology the beauty of the subject and of their math became clear to me, and I fell in love with the topic. \n",
"\n",
"As I began to understand the math and theory more difficulties itself. A book or paper's author makes some statement of fact and presents a graph as proof. Unfortunately, why the statement is true is not clear to me, nor is the method by which you might make that plot obvious. Or maybe I wonder \"is this true if R=0?\" Or the author provide pseudocode - at such a high level that the implementation is not obvious. Some books offer Matlab code, but I do not have a license to that expensive package. Finally, many books end each chapter with many useful exercises. Exercises which you need to understand, but excercises with no answers. If you are using the book in a classroom, perhaps this is okay, but it is terrible for the independent reader. I loathe that an author witholds information from me, presumably to avoid 'cheating'. \n",
"None of this necessary, from my point of view. Certainly if you are designing a Kalman filter for a aircraft or missile you must be a thorough master of all of the mathematics and topics in a typical Kalman filter textbook. I just want to track an image on a screen, or write some code for my Arduino project. I want to know how the plots in the book are made, and chose different parameters than the author chose. I want to run simulations. I want to inject more noise in the signal and see how a filter performs. \n",
"As I began to understand the math and theory more difficulties presented themselves. For example, a author makes some statement of fact and presents a graph as proof. Unfortunately, why the statement is true is not clear to me, nor is the method by which you might make that plot obvious. Or maybe I wonder \"is this true if R=0?\" Or the author provides pseudocode written at such a high level that the implementation is not obvious. Some books offer Matlab code, but I do not have a license to that expensive package. Finally, many books end each chapter with many useful exercises. Exercises which you need to understand, but excercises with no answers. If you are using the book in a classroom, perhaps this is okay, but it is terrible for the independent reader. I loathe that an author witholds information from me, presumably to avoid 'cheating' by students.\n",
"\n",
"None of this necessary, from my point of view. Certainly if you are designing a Kalman filter for a aircraft or missile you must be a thorough master of all of the mathematics and topics in a typical Kalman filter textbook. In contrast, I just want to track an image on a screen, or perhaps write some code for my Arduino project to filter data from a weather station. I want to know how the plots in the book are made, and chose different parameters than the author chose. I want to run simulations. I want to inject more noise in the signal and see how a filter performs. \n",
"\n",
"I wrote this book to address all of those needs. This is not the book for you if you program avionics for Boeing or design radars for Ratheon. Go get a degree at Georgia Tech, UW, or the like, because you'll need it for that kind of work. This book is for the hobbiest, the curious, and the working engineer that needs to filter or smooth data. \n",
"\n",
"This book is interactive. While you can read it online as static content, I urge you to use it as intended. It is written using IPython Notebook, which allows you to combine text, python, and python output in one place. Every plot, every piece of data in this book is generated from Python that is available to you right inside the notebook. Want to double the value of a parameter. Click on the Python cell, change the parameter's value, and click 'Run'. A new plot or printed output will appear in the book. \n",
"This book is interactive. While you can read it online as static content, I urge you to use it as intended. It is written using IPython Notebook, which allows you to combine text, Python, and Python output in one place. Every plot, every piece of data in this book is generated from Python that is available to you right inside the notebook. Want to double the value of a parameter. Click on the Python cell, change the parameter's value, and click 'Run'. A new plot or printed output will appear in the book. \n",
"\n",
"This book has exercises, but it also has the answers. I trust you. If you just need an answer, go ahead and read the answer. If you want to internalize this knowledge, try to implement the exercise before you read the answer. \n",
"\n",
"This book has supporting libraries for computing statistics, plotting various things related to filters, and for the various filters that we cover. This does require a strong caveat; most code is written for didactic purposes. It is rare that I chose the most efficient solution (which often obscures the intent of the code), and I mostly did not concern myself with numerical stability. This is important to understand - Kalman filters in aircraft are carefully designed and implemented to be numerically stable; the naive implemention is not stable in many cases. If you are serious about Kalman filters this book will not be the last book you need. My intention is to introduce you to the concepts and mathematics, and to get you to the point where the textbooks are approachable.\n",
"This book has supporting libraries for computing statistics, plotting various things related to filters, and for the various filters that we cover. This does require a strong caveat; most of code in the book is written for didactic purposes. It is rare that I chose the most efficient solution (which often obscures the intent of the code), and I mostly did not concern myself with numerical stability. This is important to understand - Kalman filters in aircraft are carefully designed and implemented to be numerically stable; the naive implemention is not stable in many cases. If you are serious about Kalman filters this book will not be the last book you need. My intention is to introduce you to the concepts and mathematics, and to get you to the point where the textbooks are approachable.\n",
"\n",
"Finally, this book is free. The cost for the books required to learn Kalman filtering is somewhat prohibitive even for a Silicon Valley engineer like myself; I cannot believe the are within the reach of someone in a depressed economy, or a financially struggling student. I have gained so much from free software like Python, and free books like those from Allen B. Downey [here](http://www.greenteapress.com/). It's time to repay that. So, the book is free, it is hosted on free servers, and it uses free software for all of the code. "
"Finally, this book is free. The cost for the books required to learn Kalman filtering is somewhat prohibitive even for a Silicon Valley engineer like myself; I cannot believe the are within the reach of someone in a depressed economy, or a financially struggling student. I have gained so much from free software like Python, and free books like those from Allen B. Downey [here](http://www.greenteapress.com/)[1]. It's time to repay that. So, the book is free, it is hosted on free servers, and it uses free software for all of the code. "
]
},
{
@@ -314,7 +315,7 @@
"You may access this book via nbviewer at any by using this address:\n",
"http://nbviewer.ipython.org/github/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/blob/master/Introduction.ipynb\n",
"\n",
"Finally, you may generate output in a variety of formats. I will not cover how to do that, other than to point you to [IPython nbconvert](http://ipython.org/ipython-doc/rel-1.0.0/interactive/nbconvert.html). You can convert this book into static HTML pages, latex, or PDF. While I don't recommend it particularly, it is useful for those that don't want to program and/or are working offline."
"Finally, you may generate output in a variety of formats. I will not cover how to do that, other than to point you to [IPython nbconvert](http://ipython.org/ipython-doc/rel-1.0.0/interactive/nbconvert.html)[2]. You can convert this book into static HTML pages, latex, or PDF. While I don't recommend it particularly, it is useful for those that don't want to program and/or are working offline."
]
},
{
@@ -338,7 +339,7 @@
"You will need a recent version of NumPy, SciPy, and Matplotlib installed. I don't really know what the minimal might be. \n",
"I have numpy 1.71, SciPy 0.13.0, and Matplotlib 1.3.1 installed on my machines.\n",
"\n",
"Personally, I use the Anaconda Python distribution in all of my work, [available here](https://store.continuum.io/cshop/anaconda/). I am not selecting them out of favoritism, I am merely documenting my environment. Should you have trouble running any of the code, perhaps knowing this will help you."
"Personally, I use the Anaconda Python distribution in all of my work, [available here](https://store.continuum.io/cshop/anaconda/)[3]. I am not selecting them out of favoritism, I am merely documenting my environment. Should you have trouble running any of the code, perhaps knowing this will help you."
]
},
{
@@ -391,6 +392,23 @@
"source": [
"rlabbejr@gmail.com"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Resources"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[1] http://www.greenteapress.com/\n",
"[2] http://ipython.org/ipython-doc/rel-1.0.0/interactive/nbconvert.html\n",
"[3] https://store.continuum.io/cshop/anaconda/\n"
]
}
],
"metadata": {}
+223 -153
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:2a864f60529fef582f39940035399ce8c5b054c28d9216e0503b36798631d661"
"signature": "sha256:42e44e3dc2e264d736fbf0083bcc71c2e0763b6c55775704d7e2394881c8bcab"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -250,7 +250,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7ff7604afd90>"
"<IPython.core.display.HTML at 0x7f170541ce10>"
]
}
],
@@ -285,7 +285,7 @@
"source": [
"#### Try Another Scale\n",
"\n",
"Is there any way we can improve upon this result? The obvious, first thing to try is get a better sensor. Unfortunately, your co-worker informs you that she has built 10 scales, and they all operate with about the same accuracy. You have her bring out another scale, and you weigh yourself on one, and then on the other. The first scale (A) reads \"160lb\", and the second (B) reads \"170lbs\". What can we conclude about your weight?\n",
"Is there any way we can improve upon this result? The obvious, first thing to try is get a better sensor. Unfortunately, your co-worker informs you that she has built 10 scales, and they all operate with about the same accuracy. You have her bring out another scale, and you weigh yourself on one, and then on the other. The first scale (A) reads \"160 lbs\", and the second (B) reads \"170 lbs\". What can we conclude about your weight?\n",
"\n",
"Well, what are our choices?\n",
"\n",
@@ -297,13 +297,13 @@
"\n",
"The first two choices are plausible, but we have no reason to favor one scale over the other. Why would we choose to believe A more than B? We have no reason for such a belief. The third and fourth choices are irrational. The scales are admittedly not very accurate, but there is no reason at all to choose a number outside of the range of what they measure. The final choice is the only reasonable one. If both scales are inaccurate, and as likely to give a result above my actual weight as below it, more often than not probably the answer is somewhere between A and B. \n",
"\n",
"In mathematics this concept is formalized as *expected value*, and we will cover it in depth later. For now ask youself what would be the 'usual' thing to happen if we made one million separate readings. Some of the times both scales will read too low, sometimes that will both read too high, and the rest of the time they will straddle the actual weight. If they straddle the actual weight then certainly we should choose a number between A and B. If they don't straddle then we don't know if they are both too high or low, but by choosing a number between A and B we at least mitigate the effect of the worst measurement. For example, suppose our actual weight is 180lbs. 160lbs is a big error. But if we choose a weight between 160lbs and 170lbs our estimate will be better than 160lbs. The same argument holds if both scales returned a value greater than the actual weight.\n",
"In mathematics this concept is formalized as *expected value*, and we will cover it in depth later. For now ask youself what would be the 'usual' thing to happen if we made one million separate readings. Some of the times both scales will read too low, sometimes that will both read too high, and the rest of the time they will straddle the actual weight. If they straddle the actual weight then certainly we should choose a number between A and B. If they don't straddle then we don't know if they are both too high or low, but by choosing a number between A and B we at least mitigate the effect of the worst measurement. For example, suppose our actual weight is 180 lbs. 160 lbs is a big error. But if we choose a weight between 160 lbs and 170 lbs our estimate will be better than 160 lbs. The same argument holds if both scales returned a value greater than the actual weight.\n",
"\n",
"We will deal with this more formally later, but for now I hope it is clear that our best estimate is just the average of A and B. $\\frac{160+170}{2} = 165$.\n",
"\n",
"Let's play 'what if' some more. What if we are now told that A is three times more accurate than B? Consider the 5 options we listed above. It still makes no sense to choose a number outside the range of A and B, so we will not consider those. It perhaps seems more compelling to choose A as our estimate - after all, we know it is more accurate, why not just use it instead of B? Can B possibly improve our knowledge over A alone?\n",
"\n",
"The answer, perhaps counterintuitively, is yes, it can. Consider this case. We know scale A is accurate to 1 lb. In other words, if we weight 170 lbs, it could report 169,170, or 171 lbs. We know that scale B is accurate to 9 lbs. We do a reading, and A=160, and B=170. What should we estimate our weight to be?\n",
"The answer, perhaps counterintuitively, is yes, it can. Consider this case. We know scale A is accurate to 1 lb. In other words, if we weight 170 lbs, it could report 169, 170, or 171 lbs. We know that scale B is accurate to 9 lbs. We do a reading, and A=160, and B=170. What should we estimate our weight to be?\n",
"\n",
"Well, if we say 160 lbs we would be wrong, because B can only be 9 pounds off, and 170 lbs - 160 lbs is 10 lbs. 160 is not a possible measurement for B. In fact, the only number that satifies all of the constraints is 161 lbs. That is 1 lb within the reading of A, and 9 lbs within the reading of B. \n",
"\n",
@@ -313,13 +313,13 @@
"\n",
"However, we have strayed from our problem. No customer is going to want to buy multiple scales, and besides, we initially started with an assumption that all scales were equally (in)accurate. \n",
"\n",
"So, what if I have one scale, but I weigh myself many times? We concluded that if we had two scales of equal accuracy we should average the results of their measurements. What if I weigh myself 1,000,000 times with one scale? We have already stated that the scale is equally likely to return a number too large as it is to return one that is too small. I will not prove it, but it can be proved that the average of a large number of weighings will be extremely close to my actual weight. Consider a simple case - the scale is accurate to within 1 lb. If I weigh 170, it will return one of 169, 170, and 171. The average of a bunch of 170 is 170, so we can exclude those. What is left is measurements of 169 and 171. But we know there will be as many 169s as there are 171s. The average of those will also be 170, and so the average of all must be 170, my true weight. It's not that hard to extend this to any arbitrary accuracy.\n",
"So, what if I have one scale, but I weigh myself many times? We concluded that if we had two scales of equal accuracy we should average the results of their measurements. What if I weigh myself 1,000,000 times with one scale? We have already stated that the scale is equally likely to return a number too large as it is to return one that is too small. I will not prove it, but it can be proved that the average of a large number of weighings will be extremely close to my actual weight. Consider a simple case - the scale is accurate to within 1 lb. If I weigh 170, it will return one of either 169, 170, or 171. The average of a bunch of 170 is 170, so we can exclude those. What is left is measurements of 169 and 171. But we know there will be as many 169s as there are 171s. The average of those will also be 170, and so the average of all must be 170, my true weight. It's not that hard to extend this to any arbitrary accuracy.\n",
"\n",
"Okay, great! We have an answer, and phone the UB Thin chain to tell them the good news. As you might expect, their CEO does not share your enthusiam. First, no one has the patience to weigh themselves a million, or even a hundred times. Second, people are far less interested in what they weigh than whether they are actually losing weight or not. \n",
"Okay, great, we have an answer! But it is not a very good answer. No one has the patience to weigh themselves a million, or even a hundred times. \n",
"\n",
"So, let's play 'what if' again. What if you measured your weight once a day, and got the readings 170, 161, and then 169. Did you gain weight, lose weight, or is this all just noisy measurements? \n",
"\n",
"We really can't say. The first measurement was 170, and the last was 169, implying a 1 lb loss. But if the scale is only accurate to 10 lbs, that is explainable by noise - bad measurements. I could have actually gained weight; maybe my weight on day one was 165 lbs, and on day three it was 172. It is possible to get those weight readings with that weight gain. My scale tells me I am losing weight, and I am actually gaining weight! The CEO of UB Thin will not be interested in buying this.\n",
"We really can't say. The first measurement was 170, and the last was 169, implying a 1 lb loss. But if the scale is only accurate to 10 lbs, that is explainable by noise - bad measurements. I could have actually gained weight; maybe my weight on day one was 165 lbs, and on day three it was 172. It is possible to get those weight readings with that weight gain. My scale tells me I am losing weight, and I am actually gaining weight! \n",
"\n",
"Shall we give up? No, let's play 'what if'. Suppose I take a different scale, and I get the following measurements: 169, 170, 169, 171, 170, 171, 169, 170, 169, 170. What does your intuition tell you? It is possible, for example, that you gained 1 lb each day, and the noisy measurements just happens to look like you stayed the same weight. Equally, you could have lost 1 lb a day and gotten the same readings. But is that likely? How likely is it to flip a coin and get 10 heads in a row? Not very likely. We can't prove it, but it seems pretty likely that my weight held steady.\n",
"\n",
@@ -330,17 +330,11 @@
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"from __future__ import division, print_function\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.pylab as pylab\n",
"import numpy as np\n",
"\n",
"# make all plots a reasonable size\n",
"pylab.rcParams['figure.figsize'] = 12,6\n",
"\n",
"weights = [158.0, 164.2, 160.3, 159.9, 162.1, 164.6, 169.6, 167.4, 166.4, 171.0]\n",
"weights = [158.0, 164.2, 160.3, 159.9, 162.1, 164.6,\n",
" 169.6, 167.4, 166.4, 171.0, 171.2, 172.6]\n",
"plt.plot(weights)\n",
"plt.xlabel('day')\n",
"plt.ylabel('weight (lbs)')\n",
"plt.show()"
],
"language": "python",
@@ -349,21 +343,21 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3965e50>"
"<matplotlib.figure.Figure at 0x7f16faf62ad0>"
]
}
],
"prompt_number": 2
"prompt_number": 117
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Does it 'seem' likely that I lost weight and this is just really noisy data? Not really. Does it seem likely that I held the same weight? Again, no. This data trends upwards over time; not evenly, but definitely upwards. Lets look at that in a chart. We can't be sure, but that surely looks like a weight gain, and a signifant weight gain at that. Let's test this assumption with some more plots. It is easier to 'eyeball' data sometimes.\n",
"Does it 'seem' likely that I lost weight and this is just really noisy data? Not really. Does it seem likely that I held the same weight? Again, no. This data trends upwards over time; not evenly, but definitely upwards. Lets look at that in a chart. We can't be sure, but that surely looks like a weight gain, and a significant weight gain at that. Let's test this assumption with some more plots. It is often easier to 'eyeball' data in a chart versus a table.\n",
"\n",
"So let's look at two hypothesis. First, let's assume we held the same weight. To get that number, we agreed that we should just average all the measurements. Let's look at that."
"So let's look at two hypotheses. First, let's assume our weight did not change. To get that number we agreed that we should just average all the measurements. Let's look at that."
]
},
{
@@ -372,8 +366,10 @@
"input": [
"import numpy as np\n",
"ave = np.sum(weights) / len(weights)\n",
"plt.plot([0,9], [ave,ave], c='r')\n",
"plt.plot([0,12], [ave,ave], c='r')\n",
"plt.plot(weights, c='b')\n",
"plt.xlabel('day')\n",
"plt.ylabel('weight (lbs)')\n",
"plt.show()"
],
"language": "python",
@@ -382,13 +378,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3ae5390>"
"<matplotlib.figure.Figure at 0x7f16fb0bbdd0>"
]
}
],
"prompt_number": 3
"prompt_number": 119
},
{
"cell_type": "markdown",
@@ -396,7 +392,7 @@
"source": [
"That doesn't look very convincing. \n",
"\n",
"Now, let's assume we we gained weight. How much? I don't know, but numpy does! We just want to draw a line through the measurements that looks 'about' right. numpy has functions that will do this according to a rule called \"least squared fit\". Let's not worry about the details of that computation, and just plot the results."
"Now, let's assume we we gained weight. How much? I don't know, but numpy does! We just want to draw a line through the measurements that looks 'about' right. numpy has functions that will do this according to a rule called \"least squares fit\". Let's not worry about the details of that computation, or why we are writing our own filter if numpy provides one, and just plot the results."
]
},
{
@@ -406,8 +402,9 @@
"xs = range(len(weights))\n",
"line = np.poly1d(np.polyfit(xs, weights, 1))\n",
"plt.plot (xs, line(xs), c='r')\n",
"\n",
"plt.plot(weights, c='b')\n",
"plt.xlabel('day')\n",
"plt.ylabel('weight (lbs)')\n",
"plt.show()"
],
"language": "python",
@@ -416,13 +413,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAFyCAYAAAD/MLwxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VHXaxvHv9GTSLMBiWdfy2kFQLDQBKQpSLIAgJMgq\nioANEUFRRFApAjZU7EhCFRCll1ADWGEF7Oui2ECwMMlkMv39Y4ggUg7JJFNyf66LS84kM/PjdpI8\n+c1zngMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIklhLLAD2LL3+Cpg035/\nvMAFwElAAbAV+BhoWekrFRERERGJogZAPfYVwvurCXy19+81gNp7/34K8EPFL01EREREpGKdysEL\n4f7A44e4zy+AraIWJCIiIiJSXuZy3LcbMP0gt19FpD3CX47HFhERERGJuVP5+47w2cCnB/ncmns/\n97QKXpOIiIiISLlYy3i/g+0GpwBvAQOAbQe70/Tp08PVqlUr41OKiIiIiBize/fub7p27fp/h/uc\nshbCNwJt9zs2AW8AU4Glh7pTtWrVuOiii8r4lFXLvHnzaN++fayXEfeUk3HKyhjlZIxyMk5ZGaOc\njFNWxmzcuPGMI33OkXqEnwfWE2mF+B5oB1wGFAJf7/d5jYCOwG3sG61W8+iXLKW2b98e6yUkBOVk\nnLIyRjkZo5yMU1bGKCfjlFX0HGlHuN/ePweqd8BxAWCPyopERERERCpBeaZGSAVq2VLXJDFCORmn\nrIxRTsYoJ+OUlTHKyThlFT2mynyy5cuXh9UjLCIiIiIVbePGjbRs2fKwta52hONUQUFBrJeQEJST\nccrKGOVkjHIyTlkZo5yMU1bRo0JYRERERKoktUaIiIiISNJRa4SIiIiIyCGoEI5T6v8xRjkZp6yM\nUU7GKCfjlJUxysk4ZRU9KoRFREREpEpSj7CIiIiIJB31CIuIiIiIHIIK4Til/h9jlJNxysoY5WSM\ncjJOWRmjnIxTVtGjQlhEREREqiT1CIuIiIhI0lGPsIiIiIjIIagQjlPq/zFGORmnrIxRTsYoJ+OU\nlTHKyThlFT0qhEVERESkSlKPsIiIiIgkHfUIi4iIiIgcggrhOKX+H2OUk3HKyhjlZIxyMk5ZGaOc\njFNW0aNCWERERESSysKFNkOfpx5hEREREUkau3aZuPzyTKZOXakeYRERERGpGsJhGDDASdeuPkOf\nr0I4Tqn/xxjlZJyyMkY5GaOcjFNWxign45TVoc2aZefrry0MHuwx9PnWCl6PiIiIiEiF+/lnE0OG\npDJzZhEpKcbuox5hEREREUlo4TB07ZpO3boBHnigBNAcYRERERGpAqZMsbNjh4kBA0qO6n4qhOOU\n+n+MUU7GKStjlJMxysk4ZWWMcjJOWf3V99+befTRVF580Y3dfnT3VSEsIiIiIgkpFIK77nLSp4+X\n884LHfX91SMsIiIiIgnptdccTJtmZ/HiQqwHjIAw0iOsqREiIiIiknC2bTMzcmQKCxb8vQg2Sq0R\ncUr9P8YoJ+OUlTHKyRjlZJyyMkY5GaesIi0Rd9zh5J57Sjj77KNviSilQlhEREREEsrEiQ7CYejT\nx1uux1GPsIiIiIgkjK++MnP11RksW1bIaacdejdYc4RFREREJGkEAtC3bxqDB5cctgg2SoVwnFL/\njzHKyThlZYxyMkY5GaesjFFOxlXlrJ57LoX09DA331y+lohSmhohIiIiInHvs8/MvPCCgxUrCjFH\naStXPcIiIiIiEtf8fmjVKoObb/bSo4fP0H3UIywiIiIiCW/cuBRq1AiTk2OsCDZKhXCcqsr9P0dD\nORmnrIxRTsYoJ+OUlTHKybiqltUnn1h4/XUHTz/txhTlXoYjFcJjgR3Alr3HVwGb9vvjBS7Y+7Eb\ngK+AL4F20V2miIiIiFQ1Xi/06ZPGY495OPHEcNQf/0h1dQPAB0wCah/wsZrAGuAswA58AVwGpAAr\ngf878MHUIywiIiIiRj36aCr//a+ZyZOPfjfYSI/wkaZGbABOPcTHbgTe2vv3y4BPgV17j78H6gCf\nGFqpiIiIiMh+PvzQwrRpdtascUW9JaJUeXqEuwHT9/79H8DPQG+gM5F2ihPKt7Sqrar1/5SVcjJO\nWRmjnIxRTsYpK2OUk3FVIaviYujXL41Ro4qpUSP6LRGlyjpH+GzAyb7e4VIv7f3v9UDFrVpERERE\nktZjj6VSu3aQa6/1V+jzlLUQ3n83GCK7wfvvANfce9vf9O3bl1NOOQWArKwsateuTePGjYF9v+Ho\nuDGNGzeOq/XE83GpeFlPvB6X3hYv69FxYh+X3hYv64nnY30/1/dzff0d3fHEiZ8xc2Y9Pvig+Kju\nX/r37du3A9CrVy+OxEjHxanAPP56stxXQFvg673HB54stwI488AH0slyIiIiInIoRUXQpEkmjz/u\noU2b8u0GR+OCGs8D64m0QnxPZCzaZUAh+4pgiEyWGAysA/KBe8q4ZtnrwN+O5eCUk3HKyhjlZIxy\nMk5ZGaOcjEvmrIYNS6VBg0C5i2CjrEf4eL+9fw5U7yC3zdz7R0RERETkqKxcaWXJEjsFBa5Ke84K\nGkZxcGqNEBEREZEDuVzQqFEWTz/tpkWLQLkey/ztt9inTGF9mzblbo0QEREREalQDz7opGVLf9mL\n4JISbLNmkX7ttWS0aoWpqMjQ3VQIx6lk7v+JJuVknLIyRjkZo5yMU1bGKCfjki2rJUtsFBRYGT68\n+Kjva9m6ldRBg8iqVQvH1Kl4b7qJPVu34hk50tD9j9QjLCIiIiJSIX7/3cS99zp56SU3GRkG7+Ry\nYZ89G0duLuZdu/B260bhihWE9o7nPRrqERYREakgXi/Y7VTY5WFFEt1ttzk57rgwo0Z5Dv+J4TDW\nDRuw5+VhW7iQQLNmeLOzCVxxBVgsB72LkfFp2hEWERGpAD4fXHFFJjVrhnj+eTcnnKALrorsb948\nG5s2WVm9+tBTIkw7d2KfPh3HlClgNuPNycEzfDjhatWisgb1CMepZOv/qSjKyThlZYxyMkY5HdmE\nCSmcfHKImjX/xxVXZDJ/vi3WS4prek0ZlwxZ7dpl4v77nUyY4MbpPOCDgQC2JUtIy84ms359LP/9\nL+4JE3Bt2IC3X7+oFcGgHWEREZGo27bNzAsvOFixopDt27+iZ88TuP32NJYutfHEE8Wkp8d6hSKx\nEw7DgAFObrjBx2WXBf+83bxtG/YpU3BMm0bopJPwZmfjfvFFjDcPHz31CIuIiERROAydOqXTtKmf\nu+7y/nl7YSEMHuzk/fetvPSSm3r1god5FJHkNWuWjXHjUlm50kVK2IN9/nzseXlYPvsM3w034M3O\nJnTuueV+HvUIi4iIVLI5c2zs3GmiTx/vX27PyIDnny/mnXdsdOuWTq9eXvr3L8Gqn8RShfz8s4kH\nH3Ty1mObOHboROyzZxOsWxfvv/+Nv00bcDgqdT3qEY5TydD/UxmUk3HKyhjlZIxyOrg9e0w8/LCT\n8eOLse1tCT4wq2uu8bNihYt166y0b5/Bd9/pRzHoNXU0EjarP/YwoNOv9La8wuWPXUv4uOMoXLWK\notmz8V97baUXwaBCWEREJGqGD0+ldWs/l156+LaHk04KM2dOEW3b+mjZMoPp0+2ENVRCklE4jHXd\nOpx9+jDnvDH8/JOJ/k9Vw7VpEyWDBxP65z9jujz1CIuIiETBhx9auOmmdNavd3HMMcar2q1bLdx6\naxrnnhtk/Pjio7qvSLwy7dixb+yZ1co37fvS8LW+zH23mPPPr5z+eCM9wtoRFhERKSe/H+6918nw\n4UdfyNaqFWTFChc1aoS4/PJM1q5V07AkqEAA2+LFpHXvTmaDBlj+9z/cL7zAnnXrue3DPtze119p\nRbBRKoTjVML2/1Qy5WScsjJGORmjnP7qxRcdVK8epmNH/98+ZiSr1FQYNcrD+PFuevdOY9iwVHy+\nilhp/NJryrh4y8r8v/+RMmIEWRdcQMpTT+Fv3Zo9mzdT/OyzBC+5hDcmOSgsNHH33SWxXurfqBAW\nEREph++/N/PssymMHVtc7kspt2oVYM0aF19/bebKKzP48kv9mJY45fFgnzmT9PbtyWjdGpPXS+Gc\nORQuWYIvJ+fP2b/ffmvmiSdSef55d1xOSFGPsIiISBmFw9CtWxr16gW5777o7XaFw/Dmm3YeeyyV\nBx4o4eabveUuskWiwbJ5M/bcXOxz5hC88EK8OTmRsWd2+98+NxSCDh3SueoqP3fe6T3Io1UszREW\nERGpQPPn29i2zcKkSe6oPq7JBD17+mjUKEDv3mksW2bl2WeLqVFDJ9JJ5TPt2YN91izsubmYfvsN\nX/fuuFavJnzyyYe930svOQgGTfTtW/lFsFF6zyVOxVv/T7xSTsYpK2OUkzHKCVyuyJXixo8vPuz4\n0/JkdeaZIRYvLuT884M0bZrJkiW2Mj9WvNNryrhKySocxlpQgLN3bzLr1MG6bh2eoUMjY88GDTpi\nEfz112bGjUvh+efdWCwVv9yy0o6wiIhIGTzxRCpXXOGnYcNAhT6P3Q4PP1xCixYB+vRxsmyZleHD\nPTidFfq0UkWZfv4Zx/Tp2PPywOHAm5OD54knCB9/vOHHCAahX780Bg0q4fTTQxW42vJTj7CIiMhR\n2rTJQteukZnBxx9fee0Ke/aYGDgwlU8+sfLyy27q1ImvUVSSoPx+bMuWYc/Lw7phA/4OHfDm5BCs\nV4+yNKc/84yDFStsvP12EeYY9h6oR1hERCTKAoHIzOBhwzyVWgQDZGWFefnlYmbNstG5czr9+pVw\nxx3euH7rWeKX+ZtvcOTlYZ8+ndC//oU3Oxv3yy9DenqZH/Ozz8xMmJBCfn5hTItgoxJgiVLine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3a2a410>"
"<matplotlib.figure.Figure at 0x7f16fade6b90>"
]
}
],
"prompt_number": 4
"prompt_number": 120
},
{
"cell_type": "markdown",
@@ -432,7 +429,7 @@
"\n",
"\"But is it impossible?\" pipes up a coworker.\n",
"\n",
"Let's try something crazy. Let's assume that somehow I know I am gaining about one lb a day. It doesn't matter how I know that, right now, just assume I know it somehow. Maybe I am eating a 6000 calorie a day diet, which would result in such a weight gain. Maybe there is another way. Let's just see if we can make use of such information if it was available.\n",
"Let's try something crazy. Let's assume that somehow I know I am gaining about one lb a day. It doesn't matter how I know that right now, just assume I know it somehow. Maybe I am eating a 6000 calorie a day diet, which would result in such a weight gain. Or maybe there is another way to estimate the weight gain. Let's just see if we can make use of such information if it was available.\n",
"\n",
"The first measurement was 158. We have no way of knowing any different, so let's just accept that as our estimate. If our weight today is 158, what will it be tomorrow? Well, we think we are gaining weight at 1 lb/day, so our prediction is 159, like so:"
]
@@ -450,9 +447,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAuYAAAGECAYAAAB6TeWfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X10VfWd7/HPyeOBJEASAkiEKvIUMGgQylTCTdolSEAe\nEtuUMF2RYXHbAePVgqMXdJqyxiwEh8qsYZWqS2fUO5XRkUFTpSQOOpGhDkaoRBjQijY5PCZCIIB5\nICf3D0pKJA/nJGef397nvF9rdS32YWefXz7skq8/PtlxHTlypE0AAAAAjIowvQAAAAAADOYAAACA\nLTCYAwAAADbAYA4AAADYAIM5AAAAYAMM5gAAAIANRAXjTdavX68333xTSUlJKi0tlSSlpaVp3Lhx\nkqSpU6fqsccekyQ9/fTT2rVrl6Kjo7VixQrdddddXV731KlTeuihh9TQ0KCYmBg9/PDDuvPOO63/\nhAAAAIAAC8pgPmvWLM2dO1erV69uf83tdmv79u0dzquqqtJ//dd/6Y033tC5c+eUm5ur73znO4qL\ni+v0ulFRUfr5z3+ucePG6fjx41q0aJEqKios/VwAAAAAKwSlypKRkaFBgwb1eF5NTY3S0tIUERGh\nxMREDR06VFVVVV2en5yc3L7rPnz4cLW0tKilpSVg6wYAAACCxVjHvLm5WXl5eSooKFBlZaUkafTo\n0fr444/V2Nio48eP6/PPP9dXX33l0/Xef/99TZw4UdHR0VYuGwAAALBEUKosnamoqFBycrKqqqpU\nVFSk8vJyjR07Vnl5eVq0aJGGDh2qadOmKSYmpsdr1dbWasOGDfrlL38ZhJUDAAAAgWdsME9OTpYk\npaena8iQIfJ4PBo1apSWLFmiJUuWSJJ++MMfavjw4d1ep6mpSQ8++KAeffRRjRgxotNz9u/fr8GD\nBwd0/QAAAMA3NTQ0aMKECb36WCODeX19vdxut9xutzwej06dOtU+gJ89e1aJiYnau3evzp8/r4kT\nJ7Z/3MaNG+VyubRy5UpJUltbm1avXq177rlHmZmZXb7f4MGDNXnyZGs/KXSptLRU8+bNM72MsEX+\n5pC9WeRvFvmbQ/Zm7du3r9cfG5TBfO3atSovL1d9fb2ysrKUn5+v0tJSxcTEKDIyUiUlJXK73ZKk\nNWvWqLq6WtHR0dqwYUOH69TV1XU4/uijj1RWVqajR4/q1VdflSQ999xzSklJCcanBR9VV1ebXkJY\nI39zyN4s8jeL/M0he+cKymBeXFys4uLiDq/df//9nZ67ZcuWLq+zbt26DsdTpkzRJ5980vcFAgAA\nAIbxkz9hue5+SBSsR/7mkL1Z5G8W+ZtD9s7lOnLkSJvpRVitpqaGjjkAAAAst2/fvi4fSNITdsxh\nud27d5teQlgjf3PI3izyN4v8zSF752IwBwAAAGyAKgsAAAAQIFRZAAAAAIdjMIfl6LqZRf7mkL1Z\n5G8W+ZtD9s7FYA4AAADYAB1zAAAAIEDomAMAAAAOx2AOy9F1M4v8zSF7s8jfLPI3h+ydi8EcAAAA\nsAE65gAAAECA0DEHAAAAHI7BHJaj62YW+ZtD9maRv1nkbw7ZOxeDOQAAAGADdMwBAACAAKFjDgAA\nADgcgzksR9fNLPI3h+zNIn+zyN8csncuBnMAAADABuiYAwAAAAFCxxwAAABwOAZzWI6um1nkbw7Z\nm0X+ZpG/OWTvXAzmAAAAgA3QMQcAAAAChI45AAAA4HAM5rAcXTezyN8csjeL/M0if3PI3rkYzAEA\nAAAboGMOAAAABAgdcwAAAMDhGMxhObpuZpG/OWRvFvmbRf7mkL1zMZgDAAAANkDHHAAAAAgQOuYA\nAACAwzGYw3J03cwif3PI3izyN4v8zSF752IwBwAAAGyAjjkAAAAQIHTMAQAAAIdjMIfl6LqZRf7m\nkL1Z5G8W+ZtD9s4VlMF8/fr1mj59uubNm9f+WlpamhYuXKiFCxeqpKSk/fWnn35a8+bNU15ent55\n550er/3222/r7rvv1t133613333XkvUDAAAAVgtKx3z//v2Kjo7W6tWrVVpaKknKyMjQ/v37O5xX\nVVWltWvX6tVXX9W5c+eUm5urt956S3FxcZ1et7m5WTk5OXrttdfU1NSkwsJClZeXX3ceHXMAAAAE\ng+075hkZGRo0aFCP59XU1CgtLU0RERFKTEzU0KFDVVVV1eX5Bw4c0JgxY5SUlKQbbrhBw4YN0+HD\nhwO5dAAAAMdwVVcr4pNP5PrqK9NLQS8Y65g3NzcrLy9PBQUFqqyslCSNHj1aH3/8sRobG3X8+HF9\n/vnn+qqbG6uurk4pKSnaunWrduzYoZSUFJ0+fTpYnwJ8RNfNLPI3h+zNIn+zyD/4Ig8e1IC779bA\n//W/1O/BB+U6edL0kuCnKFNvXFFRoeTkZFVVVamoqEjl5eUaO3as8vLytGjRIg0dOlTTpk1TTExM\nj9datGiRJKm8vFwul8vqpQMAANhO9FtvKeLUKUlS7Ntvq/l//29dHjbM8KrgD2ODeXJysiQpPT1d\nQ4YMkcfj0ahRo7RkyRItWbJEkvTDH/5Qw4cP7/IaKSkpqq2tbT+ura1VSkpKp+euWLFCI0eOlCQN\nHDhQ6enpyszMlPTn/6rn2Jrjq6/ZZT3hdnz1NbusJ5yOMzMzbbWecDsmf/IPt+OvBw1SP13R5nKp\nvrVVv+fvf8uPr/66urpakrRs2TL1VtB+wJDH49Hy5ctVWlqq+vp6ud1uud1ueTweLV68WGVlZXK7\n3Tp79qwSExO1d+9eFRcXa8eOHe3X2Lhxo1wul1auXCnp+m/+vO+++1RWVnbde/PNnwAAINS5jh9X\n7HPPKfp3v1PjT36ilpwcye02vayw05dv/owK8Fo6tXbtWpWXl6u+vl5ZWVnKz89XaWmpYmJiFBkZ\nqZKSErn/dOOsWbNG1dXVio6O1oYNGzpcp66ursNxTEyMVq1apYKCgvaPhf1cu1uL4CN/c8jeLPI3\ni/wDI3bTJrl/9SupsVGS5Gpullpa1DZ4sM7t3i39qYEgSW3Dh6uxuFj7Pv5YE267zdSS0QdBGcyL\ni4tVXFzc4bX777+/03O3bNnS5XXWrVt33Wtz5szRnDlz+rZAAAAAu2luVr8nn7wyjH+D69Qpxf6/\n/6emBx+87vfONDQEY3WwQNCqLCZRZQEAAI7T2Kj4vDxFffCBvvloi7aICJ3/6CN5v/UtI0tD12z/\nHHMAAAD4qLFRsc8+q4GTJyu6k6Fcki6+8AJDeQhiMIflrv2uZQQf+ZtD9maRv1nk3wvXDOT9/+//\nVcQ1zyG/tt7QeP/9apk/v8vLkL1zMZgDAACY1M1A7h02TF//9Kftu+aXp0zR1z/7mZl1wnJ0zAEA\nAExobFTsSy/JvWlTh2FcujKQNz70kJoKCyW3W9Hbtiny00/VtHy52gYONLRg+ML2j0sEAADAn/gx\nkF/VkpenlmCvE0FHlQWWo+tmFvmbQ/Zmkb9Z5N+JHiorl558Uuf27VPTj3/cpx8MRPbOxY45AACA\nlXqxQ47wRMccAADACgzkYYmOOQAAgF0wkKOX6JjDcnTdzCJ/c8jeLPI3KyzzD1KHvCdhmX2IYMcc\nAACgL9ghR4DQMQcAAOgNBnJ0go45AABAsDCQwyJ0zGE5um5mkb85ZG8W+ZsVkvnbpEPek5DMPkyw\nYw4AANAddsgRJHTMAQAAOsNAjl6gYw4AABAoDOQwhI45LEfXzSzyN4fszSJ/sxyZv0M65D1xZPaQ\nxI45AAAId+yQwybomAMAgPDEQA4L0DEHAADwFQM5bIqOOSxH180s8jeH7M0if7NsmX+IdMh7Ysvs\n4RN2zAEAQGhjhxwOQcccAACEJgZyGEDHHAAA4CoGcjgUHXNYjq6bWeRvDtmbRf5mGck/TDrkPeHe\ndy52zAEAgLOxQ44QQcccAAA4EwM5bIiOOQAACB8M5AhRdMxhObpuZpG/OWRvFvmbZUn+dMh9wr3v\nXOyYAwAAe2OHHGGCjjkAALAnBnI4EB1zAAAQOhjIEabomMNydN3MIn9zyN4s8jerV/nTIQ8I7n3n\nYsccAACYxQ45IImOOQAAMIWBHCGIjjkAAHAOBnKgU3TMYTm6bmaRvzlkbxb5m9Vp/nTIg4J737mC\nsmO+fv16vfnmm0pKSlJpaakkKS0tTePGjZMkTZ06VY899pgkafPmzdqxY4ckKScnR0VFRd1e29/z\nAQBAkLFDDvgkKB3z/fv3Kzo6WqtXr24fzDMyMrR///4O59XU1Gjp0qXauXOnWltblZOToxdffFGp\nqamdXtfX8+mYAwBgAAM5wpDtO+YZGRnyeDw9nhcfH6+oqCg1NjbK6/UqOjpaCQkJATsfAAAEAQM5\n0CvGOubNzc3Ky8tTQUGBKisrJUmJiYkqLCxUdna2srOztXTpUg0YMKDLa/h7Psyg62YW+ZtD9maR\nvwF0yG2Be9+5jD2VpaKiQsnJyaqqqlJRUZHKy8t1+vRpbd26Vbt27VJLS4sKCgqUnZ2tlJSUTq/h\n8Xj8Oh8AAFiAHXIgIIwN5snJyZKk9PR0DRkyRDU1NTpy5IjS09MVHx8vSZowYYIOHTqkrKysTq9x\n4MABn89fsWKFRo4cKUkaOHCg0tPTlZmZKenP/2XJsTXHV1+zy3rC7fjqa3ZZTzgdZ2Zm2mo94XZM\n/tYf79m1SyPLyjTxzTc7HcgPzp+v6lmzdOf3vmeL9XLMsRXHV39dXV0tSVq2bJl6K2g/YMjj8Wj5\n8uUqLS1VfX293G633G63PB6PFi9erLKyMn322Wd6/PHH9dprr8nr9WrBggXasmWLRo0aJUnauHGj\nXC6XVq5cKUmqqqrq9vyr+OZPAAACiB1yoEu2/+bPtWvXqry8XPX19crKylJ+fr5KS0sVExLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3ce8d10>"
"<matplotlib.figure.Figure at 0x7f16fb15c190>"
]
}
],
@@ -462,7 +459,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Okay, but what good is this? Sure, we could just assume the 1 lb/day is accurate, and just predict our weight for 10 days, but then why use a scale at all if we don't incorporate its readings? So let's look at the next measurement."
"Okay, but what good is this? Sure, we could just assume the 1 lb/day is accurate, and just predict our weight for 10 days, but then why use a scale at all if we don't incorporate its readings? So let's look at the next measurement. We step on the scale again and it displays 164.2 lbs."
]
},
{
@@ -477,9 +474,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAFyCAYAAADoEiz4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VPW9//H3ZJnsZCOAQYIgCkiQTS5WQLQqZQt7EVCB\n9hcrcMFyy72oSBvjo9SilaIiatUWl1KgSpWgXgE3CN5qNYogV0TQG1KhEiAQsswkmfn9ETNMyDrJ\nTL6Zmdfz8fCRnDNnznznzSCffPM532M5ePCgUwAAAAAkSSGmBwAAAAC0JxTIAAAAgBsKZAAAAMAN\nBTIAAADghgIZAAAAcEOBDAAAALgJa+zBVatWaevWrUpKSlJOTo4kae/evVqxYoWqqqp0+eWXa82a\nNZKkvn37qnfv3pKkoUOH6t577/Xx0AEAAADva7RAHj16tMaPH6977rlHkuRwOLRs2TI98MADGjx4\nsE6dOuU6NjIyUq+88opvRwsAAAD4WKMtFoMGDVJCQoJre//+/UpKStLgwYMlSUlJSb4dHQAAANDG\nPOpBPnbsmOLi4pSZmakpU6Zow4YNrsfsdrumTp2qWbNm6aOPPvL6QAEAAIC20GiLxYVsNpvy8vK0\nbds2xcbGatq0aRo5cqS6deumXbt2KTk5Wfv27dOiRYu0Y8cOWa1WX40bAAAA8AmPCuSUlBT16tVL\nXbp0kSSlp6fryJEj6tatm5KTkyVJ/fv3V6dOnVRQUKCePXvWev4nn3yijh07emnoAAAAQP2Ki4t1\nxRVXtOi5HhXI6enp+vbbb3XmzBlFRUXpyy+/VFpams6cOaOIiAhFRkaqoKBA//rXv5Samlrn+R07\ndnT1L6Pt5eTkKCMjw/Qwghb5m0P2ZpG/WeRvDtmblZeX1+LnNlogZ2dna8eOHSoqKtKoUaOUlZWl\n5cuXa+7cuaqsrFRGRoZ69OihvLw8LV++XFarVaGhoVq5cqUiIyNbPCj4Rn5+vukhBDXyN4fszSJ/\ns8jfHLL3X40WyFlZWcrKyqqzf8yYMbW2Bw8erP/+7//27sgAAAAAA7iTXhC58cYbTQ8hqJG/OWRv\nFvmbRf7mkL3/shw8eNDZVi929OhRepABAADgc3l5eerWrVuLnssMchDJzc01PYSgRv7mkL1Z5G8W\n+ZtD9v6LAhkAAAAtUl4uDRjQQStXtnxxhttui9GkSbFeHFXr0WIBAAAQoPLzQ7Rhg1UTJlQoPb3K\n6+dfvTpSjz0Wob17z6hDh5ad4/PPQzVqVJyef75E48ZVeG1stFgAAACgjvz8ED30UKT27w/1+rnL\nyqTHHovQzJn2FhfHktSvX5WGD6/Ugw+2nyWCKZCDCL1QZpG/OWRvFvmbRf7mtKfsnT7oF3jpJavO\nnrXo5pvtrT7XjBl27dsXqo8/9n4h3xIUyAAAoEnJyQn6xS+ide21cerePUHr1kVo3boIde+eoGHD\nOujzz88XNhUV0po1Ebr66g5KTU1Q797xuvPOaJ06Zal1znPnpJUrI3XjjXHq1SteqakJuvrqDlq9\nOlKVlXXHcPKkRf/1X1EaMKD6vH36xGv69Fi9/37t2zrk5oYpOTlBf/mLtdb+DRusSk5OqHO8VN1H\nO3FirPLzQ3TbbTHq0SNeaWkJGjMmTqdPnx93c95bTVY///m1TWblSV417+vFF636zW8i1a9fvLp3\nT9DNN8fq2LHaxw4Y0EHJyQmu3t5Fi6KVnJzg+s8bXn3Vqo4dnRo4sPWtGzfeWOE6Z3vg0a2m4d9G\njBhheghBjfzNIXuzyN8sb+a/dWu47r67XBs3WnX//VFKT69SVlapfvvbKN1/f5Q2bTonp1OaOzdG\n27eH68c/tmv+/EodPx6iZ56JUF5eqN56q1gREdXn+/bbED35ZKQmTrRr9mybQkOlDz4I029+E6kj\nR0K0dm1prdf/6U9j9NFHYbrjjnJdeqlDhYUWvf9+uP7nf8J0zTV1K2qLpc6uBlksUmmpRRkZsRo4\nsEr33luu0lJp585wlZRIiYny6L1VZ1WljRurGsxK8uycNR57LFIXXeTQ0qVlOnw4VE8/HaF582L1\n5pvFrmMeeKBMpaXSwYOhWr06UvPm2fWDH3ivv7eqSvrwwzANH+6dc3bu7FS3bg7t2dM+StP2MQoA\nANDuTZhQocxMmxISHLrjjhjNn1+u6dMrtG9fmLZvD5ckvfxyuN58M1zZ2WVatMjmeu4NN1RozJg4\nbdxo1dy51b+Sv/hihz7/vKhW/+rcuXZZLNLmzVbdf3+ZkpKqewPOnq2eQf3Zz2z61a/KXcf//Oc2\nVXnh2jOnU/rkk1AtX16upUvPn//OO21yONSs97Zpk1Vz5tibnZWnedWIjHTqb3875/oBoKjIoo0b\nrTp+3KIuXarzqrnYLTfXqdWrpaFDKzV9uvcK5IKCEJWUSJdc4mjwmHPnpIULY/Tee+FasaJMt99u\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2aab9d0>"
"<matplotlib.figure.Figure at 0x7f170541c910>"
]
}
],
@@ -495,10 +492,9 @@
"\n",
"So what do we do? If we only take data from the measurement than the prediction will not affect the result. If we only take data from the prediction then the measurement will be ignored. If this is to work we need to take some kind of blend of the prediction and measurement. \n",
"\n",
"Blending two values - this sounds a lot like the two scale problem earlier. Using the same reasoning as before we can see that the only thing that makes sense is to choose a number between the prediction and the measurement. For example, an estimate of 165 makes no sense, nor does 157. Our estimates should like between 159 and 164.2. \n",
"Blending two values - this sounds a lot like the two scale problem earlier. Using the same reasoning as before we can see that the only thing that makes sense is to choose a number between the prediction and the measurement. For example, an estimate of 165 makes no sense, nor does 157. Our estimates should like between 159 (the prediction) and 164.2 (the measurement). \n",
"\n",
"Should it be half way? Maybe, but in general it seems like we might know that our prediction is very accurate or very inaccurate. Probably the accuracy of our prediction differs from the accuracy of the scale. Recall what we did when A was much more accurate than B - we scaled the answer to be closer to A than B. Let's look at that in a chart.\n",
"**ESTIMATE AND PREDICTION SHOULD NOT USE THE SAME SYMBOLOGY HAT**"
"Should it be half way? Maybe, but in general it seems like we might know that our prediction is more or less accurate compared to the measurements. Probably the accuracy of our prediction differs from the accuracy of the scale. Recall what we did when A was much more accurate than B - we scaled the answer to be closer to A than B. Let's look at that in a chart."
]
},
{
@@ -513,9 +509,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3a2add0>"
"<matplotlib.figure.Figure at 0x7f16fb2efd50>"
]
}
],
@@ -525,38 +521,55 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Now tet's try a randomly chosen number: $\\frac{6}{10}$. Our estimate will be six tenth the measurement and the rest will be from the prediction. Let's just code that up and see the result. We have to take into account one other factor. Weight gain has units of lbs/time, so to be general we will need to add a time step $t$, which we will set to 1 (day)."
"Now let's try a randomly chosen number: $\\frac{4}{10}$. Our estimate will be four tenths the measurement and the rest will be from the prediction. In other words, we are expressing a belief here, a belief that the prediction is somewhat more likely to be correct than the measurement. We compute that as\n",
"\n",
"$$ \\verb,new estimate, = \\verb,prediction, + \\frac{4}{10}(\\verb,measurement, - \\verb,prediction,)\n",
"$$\n",
"\n",
"The difference between the measurement and prediction is called the *residual*, which is depicted by the black vertical line in the plot above. This will become an important value to use later on, as it is an exact computation of the difference between measurements and the filter's output. Smaller residuals imply better performance.\n",
"\n",
"Let's just code that up and see the result when we test it against the series of weights from above.. We have to take into account one other factor. Weight gain has units of lbs/time, so to be general we will need to add a time step $t$, which we will set to 1 (day)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w = 160\n",
"gain_rate = 1\n",
"time_step = 1\n",
"scale_factor = 6/10\n",
"weights = [158.0, 164.2, 160.3, 159.9, 162.1, 164.6, \n",
" 169.6, 167.4, 166.4, 171.0, 171.2, 172.6]\n",
"\n",
"# store the filtered results\n",
"estimates = []\n",
"time_step = 1 # day\n",
"scale_factor = 4/10\n",
"\n",
"# most filter literature uses 'z' for measurements\n",
"for z in weights: \n",
" # predict new position\n",
" w = w + gain_rate * time_step\n",
" \n",
" # update filter \n",
" w = w * (1-scale_factor) + z * scale_factor\n",
" estimates.append(w)\n",
"def predict_using_gain_guess(weight, gain_rate): \n",
" # store the filtered results\n",
" estimates = []\n",
"\n",
" \n",
"plt.xlim([0,10])\n",
" # most filter literature uses 'z' for measurements\n",
" for z in weights: \n",
" # predict new position\n",
" prediction = weight + gain_rate * time_step\n",
"\n",
"p1, = plt.plot (estimates, 'b--')\n",
"p2, = plt.plot(weights, c='r')\n",
"p3, = plt.plot([0,9],[160,170],c='g')\n",
"plt.legend([p1,p2,p3], ['filter', 'measurements', 'actual'], 2)\n",
"plt.show()"
" # update filter \n",
" weight = prediction + scale_factor * (z - prediction)\n",
"\n",
" # save for plotting\n",
" estimates.append(weight)\n",
"\n",
"\n",
" # plot results\n",
" n = len(weights)\n",
" plt.xlim([1, n])\n",
"\n",
" p1, = plt.plot (range(1, n+1), estimates, 'b--')\n",
" p2, = plt.plot(range(1, n+1), weights, c='r')\n",
" p3, = plt.plot([1, n],[160, 160+n],c='g')\n",
" plt.legend([p1, p2, p3], ['filter', 'measurements', 'actual'], 2)\n",
" plt.xlabel('day')\n",
" plt.ylabel('weight (lbs)')\n",
" plt.show()\n",
"\n",
"predict_using_gain_guess (weight=160, gain_rate=1)"
],
"language": "python",
"metadata": {},
@@ -564,53 +577,106 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3b07050>"
"<matplotlib.figure.Figure at 0x7f16fb2715d0>"
]
}
],
"prompt_number": 8
"prompt_number": 116
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That is pretty good! The blue dots, showing our estimates, are not a straight line, but they are straighter than the measurements and somewhat close to the trend line we created. Also, it seems to get better over time. This may strike you as silly; of course the data will look good if we assume the conclusion, that our weight gain is around 1 lb.\n",
"That is pretty good! The blue dots, showing our estimates, are not a straight line, but they are straighter than the measurements and somewhat close to the trend line we created. Also, it seems to get better over time. \n",
"\n",
"But, what if? What if instead of just leaving the weight gain at 1 lb, we compute it from our estimate. In other words, our first estimate is 162.28. We started at 158; this implies a weight gain not of 1, but 4.28 lbs. Can we use this information somehow? It kind of seems plausible. After all, the weight measurement itself is based on a real world measurement of our weight, so there is useful information. Our estimate of our weight gain may not be perfect, but it is surely better than just guessing our gain is 1 lb. Data is better than a guess, even if it is noisy.\n",
"\n",
"So, should we just set the new gain/day to 4.28 lbs? Hmm, sounds like our same problem again. We have two numbers (the gain/day for yesterday and for today), and want to combine them somehow to get tomorrow's gain. Let's use our same tool, and the only tool we have so far - take a combination of the two. This time I will use another arbitrarily chosen number, $\\frac{2}{3}$."
"This may strike you as quite silly; of course the data will look good if we assume the conclusion, that our weight gain is around 1 lb/day! Let's see what the filter does if our initial guess is bad. Let's see what happens if I predict that there is no weight gain."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy.random as random\n",
"w = 160\n",
"gain_rate = 1\n",
"time_step = 1\n",
"weight_scale = 6/10\n",
"gain_scale = 2/3\n",
"predict_using_gain_guess (weight=160, gain_rate=0)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f16fadb2890>"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[159.2, 161.2, 160.84, 160.464, 161.1184, 162.51104, 165.346624, 166.1679744, 166.26078464, 168.156470784, 169.3738824704, 170.66432948224]\n"
]
}
],
"prompt_number": 113
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Clearly a filter that requires us to correctly guess a rate of change is not very useful. \n",
"Even if our initial guess was useful, the filter will fail as soon as that rate of change changes. If I stop overeating the filter will have extremely difficulty in adjusting to that change. \n",
"\n",
"But, 'what if'? What if instead of just leaving the weight gain at the initial guess of 1 lb (or whatever), we compute it from the existing measurements and estimates. On day one our estimate for the weight is:\n",
"\n",
"$$\n",
"(160 + 1) + \\frac{4}{10}(158-161) = 159.8\n",
"$$\n",
"\n",
"On the next day we measure 164.2, which implies a weight gain of 4.4 lbs (since 164.2 - 159.8 = 4.4), not 1. Can we use this information somehow? It seems plausible. After all, the weight measurement itself is based on a real world measurement of our weight, so there is useful information. Our estimate of our weight gain may not be perfect, but it is surely better than just guessing our gain is 1 lb. Data is better than a guess, even if it is noisy.\n",
"\n",
"So, should we just set the new gain/day to 4.4 lbs? Hmm, sounds like our same problem again. Yesterday we though the weight gain was 1 lb, today we think it is 4.4 lbs. We have two numbers, and want to combine them somehow. Let's use our same tool, and the only tool we have so far - pick a value part way between the two. This time I will use another arbitrarily chosen number, $\\frac{1}{3}$. The equation is identical as for the weight estimate except we have to incorporate time because this is a rate (gain/day):\n",
"\n",
"$$ \\verb,new gain, = \\verb,old gain, + \\frac{1}{3}\\frac{\\verb,measurement, - \\verb,predicted weight,}{\\verb,1 day,}\n",
"$$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"weight = 160 # initial guess\n",
"gain_rate = 1.0 # initial guess\n",
"\n",
"time_step = 1\n",
"weight_scale = 4/10\n",
"gain_scale = 1/3\n",
"estimates = []\n",
"\n",
"for z in weights:\n",
" # prediction step\n",
" w_prediction = w + gain_rate*time_step\n",
" weight = weight + gain_rate*time_step\n",
" gain_rate = gain_rate\n",
" \n",
" # update step\n",
" gain_rate = gain_rate * 1-gain_scale + ((z - w) * gain_scale/time_step)\n",
" w = w_prediction * (1-weight_scale) + (z * weight_scale)\n",
" # update step \n",
" residual = z - weight\n",
" \n",
" estimates.append(w)\n",
" gain_rate = gain_rate + gain_scale * (residual/time_step)\n",
" weight = weight + weight_scale * residual\n",
" \n",
" estimates.append(weight)\n",
"\n",
"p1, = plt.plot (estimates, 'b--')\n",
"p2, = plt.plot(weights, c='r')\n",
"p3, = plt.plot([0,9],[160,170],c='g')\n",
"plt.legend([p1,p2,p3], ['filter', 'measurements', 'actual'], 2)\n",
"# plot results\n",
"n = len(weights)\n",
"plt.xlim([1, n])\n",
" \n",
"p1, = plt.plot (range(1, n+1), estimates, 'b--')\n",
"p2, = plt.plot(range(1, n+1), weights, c='r')\n",
"p3, = plt.plot([1 ,n], [160,160+n], c='g')\n",
"plt.legend([p1, p2, p3], ['filter', 'measurements', 'actual'], 2)\n",
"plt.xlabel('day')\n",
"plt.ylabel('weight (lbs)')\n",
"plt.show()"
],
"language": "python",
@@ -619,25 +685,25 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAFyCAYAAAD/MLwxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcjXX/x/HXmX2fbhRFYyw1sqVVGCNCuW3dDe5UllJZ\nxi4iJdlKN24NFdWNFMpaBsmWbahfpZDRQoQRt+02+zln5pzfH4MsM+aamXPmnDPzfj4e86jrnHNd\n12feLnzn8vleXxARERERERERERERERERERERERERERERERERERERERERERERERERKRWmACeAvRe2\nHwZ+uOzLDNQHKgPbgZ+A74GWJV6piIiIiIgDNQLu4a+B8OUqAb9e+P+bgHoX/j8COOb80kRERERE\nnCuSvAfCQ4CJ+ezzX8DXWQWJiIiIiBSXVzH2fQL4JI/XHya3PcJajGOLiIiIiLhcJNfeEY4C9uXx\n2UoXPlvNyTWJiIiIiBSLTxH3y+tucACwBBgGHMprp08++cReoUKFIp5SRERERMSY06dPH3z88cdr\nXu8zRR0IdwXaXrZtAuYCC4F1+e1UoUIF7r777iKesmxJSEigffv2ri7D7Skn45SVMcrJGOVknLIy\nRjkZp6yM2bVrV42CPlNQj/DbwA5yWyGOAu2AhkAq8Ntln2sCxALP89ej1SoVvmS56MiRI64uwSMo\nJ+OUlTHKyRjlZJyyMkY5GaesHKegO8JxF76uds9V29sBP4dUJCIiIiJSAorz1AhxopYttSaJEcrJ\nOGVljHIyRjkZp6yMUU7GKSvHMZXkyTZs2GBXj7CIiIiIONuuXbto2bLldce6RZ0s53BpaWmcP38e\nk6lEx+Zu6/z584SHh7u6DKez2+2Eh4cTEhJSpP23b99OdHS0g6sqnZSVMcrJGOVknLIyRjkZp6wc\nxy0GwmfOnAHglltu0UD4gltuucXVJZQIu93O2bNnMZvNlC9f3tXliIiISBniFq0Rx48fLzMDP8mb\nrgERERFxJCOtEZosJyIiIiJlkgbC4tG2b9/u6hI8hrIyRjkZo5yMU1bGKCfjlJXjaCBs0AcffMBt\nt91GREQEW7duvfT6sGHDmDJlyhWfHTFiBBEREVSoUIEtW7aUdKkiIiIiYoB6hA2wWq1ERkayfv16\nateubXi/Bg0aEB8fT0xMzDXvtW/fni5dutCtWzdHluqx3P0aEBEREc+iHmEHOXnyJFlZWURFRTns\nmHo6hoiIiIhraSBcgEaNGtGoUSMAqlWrdqk1Yt26dURERFCxYkUmTpxo+HjTpk0jIiKCnTt38uKL\nLxIREcFDDz106f1z587Ru3dvatWqxV133cX8+fOv2D8uLo5Ro0bRvXt3IiIiuPPOO0lLS3PMN+uB\n1CdlnLIyRjkZo5yMU1bGKCfjlJXjuMVzhN3Zzp07OXr0KA0aNODw4cN4ef31s8ORI0eIi4sr1N3d\noUOHMnToUDp06ECXLl146qmnrni/T58+3HTTTezevZs///yTtm3bUr9+fRo0aHDpM4sXL+bdd9/l\nww8/ZN++ffj46JdRREREpLA0gjLAbrcX632j+504cYKNGzdy8OBB/P39iYyMpH379qxevfqKgXDT\npk1p3bo1AHXr1i3SuUsLraxjnLIyRjkZo5yMU1bGKCfjlJXjeExrxBtvBFCu3N+u+XrjjQDDn8/v\ns65y9Z3k5ORkIHeSXbVq1ahWrRoLFy7k1KlTV3yuRo0aJVajiIiISGnlMQPhkSOzOHv23DVfI0dm\nGf58fp8trvxaI/z8/MjJycnzvctbLC6qXLkyAQEB/P777xw6dIhDhw5x5MgRpk+fXuC+ZZX6pIxT\nVsYoJ2OUk3HKyhjlZJyychyNqBwgv9aImjVrsmPHjjzfu+mmm0hKSrritUqVKtG4cWPGjh1Leno6\nVquVb775hn379jm8ZhEREZGyTgNhg66+6/vYY48RERHB0qVLmTFjBhEREfTv3/+Kz4wePZqEhARu\nvfVWxowZc8V7cXFxbN68mTp16tCxY8dLr8+ePZvTp09z3333cfvttzN+/Phr7irr0Wt/UZ+UccrK\nGOVkjHIyTlkZo5yMU1aOowU1xC3oGhARERFH0oIaUuqpT8o4ZWWMcjJGORmnrIxRTsYpK8fRQFhE\nREREShXfNWsMfU6tEeIWdA2IiIiII5hOnSKsaVO+WrhQrREiIiIiUkbY7QQNG4bl8ccNfVwDYfFo\n6pMyTlkZo5yMUU7GKStjlJNxyipvW7b44PXJUrx/+43MkSMN7aMllkVERETEY/3+uxcvvxzI/5JO\n0jZ1NOnLFkOAsdWEdUdYPJqepWicsjJGORmjnIxTVsYoJ+OUVa60NJgwIYDWrUNpeL+Vr27rRfaz\nT5PToIHhY2ggLCIiIiIe5dgxEw88EM7Ro15s3ZrC8Apz8PnvCbKGDSvUcTQQFo+mPinjlJUxyskY\n5WScsjJGORmnrKByZTsLF6Yxe3YGVXKOEPjaa6S/+y74+RXqOBoIi0OUL1+ew4cPu7oMERERKQNM\nJqhfPwdsNoIGDsTcty+22rULfRwNhKXY7Hb7Ff8tSeqTMk5ZGaOcjFFOxikrY5STcWUpq5wc2LvX\nO9/3/efOxZSaStbAgUU6vgbCBVi4cCEtWrSgTp06PPPMM3Tt2pU77riDpKQkbDYbkydPpkGDBtSq\nVYuRI0eSnZ0NwB9//EHHjh2pXr06VatW5emnnyYlJeXScb/88kvuv/9+IiIiuO+++9i0adOl9+68\n8062bNlyafvqu61xcXGMGjWK7t27ExERwZ133klaWhoACQkJNG7cmOrVq/PPf/6TkydPXtqnffv2\n3H777YwZM4aGDRvSokULMjMzATh37hy9e/emVq1a3HXXXcyfP/+K8w0YMIC///3vREREMGDAgEvv\nde7cmapVqwIQExNDREQEo0ePNvR9ioiIiORn504fmjcPZeLEAPK61+Z16BABr79O+ttvg0/RHoSm\ngbAB/v7+7Ny5k7Vr19KrVy+eeuopVqxYwcyZM/nyyy9Zu3Yt3333Hb/88guzZ88GwGKx0KNHD376\n6Sd++uknzp07x+TJky8dc/Dgwbz00kscOXKE5cuXc/PNN196z2QyYTJdf9G/xYsX89RTT/HHH3+w\nYMECfHx8+P777xk0aBBvv/02Bw4coH79+gwZMuTSPg0bNmTWrFm8//77rFu3joCAAP7v//4PgD59\n+uDn58fu3btZsWIFkydP5scff7y07+bNm3n//ffZsWMHn3/+Obt27QJgyZIlHDlyBIBt27Zx5MgR\nJk6caOj7dAT1SRmnrIxRTsYoJ+OUlTHKybjSntXx4yaefz6I558PZvDgLBYtSueaYZHNRlD//mQN\nHowtKqrI59JA2IBq1aoRFhZGuXLlqFmzJhEREZw6dYoFCxYwfPhwKlWqREhICL169WLVqlUA3Hbb\nbTz22GMEBQURGhpKhw4d2Ldv36Vjenl5cejQIVJSUrj11lu54447ClVT06ZNad26NSaTibp16xIQ\nEMDHH39M165dueuuu/Dy8iIuLo5169ZhsVgufR+RkZFUqFCB8PBwIiIiOH36NCdOnGDjxo1MmDAB\nf39/IiMjad++PatXr750vjZt2lC5cmWqVKlC7dq1OXjwoKE6i/t9ioiISNmxYoUvMTFhVK1q4+uv\nz/PYY9ZrB8GA/6xZYLdj7tu3WOfzmAU1/launEOOc+7s2ULvc/HurI+PD97e3vj4+JCdnU1ycjJ9\n+vTByyv35wmbzUalSpUAOHXqFCNHjuTrr78mIyMDq9VKg8ueazd37lymT59OfHw8t912G2+99Vah\nBok1atS45rXk5GR27NjBwoULL73m7+9/qT3iYu3e3t6Xtq1WK8ePHwe4or6cnBwee+yxS9vh4eGX\n/t/Pzw+z2WyozuJ+nwUpS31SxaWsjFFOxign45SVMcrJuNKc1Z135rB+fSrVqtny/YzXr78SMG0a\nqevXg3f+/cNGeMxAuCgDWGey2+1UrlyZt99+m3vvvfea98eNG4e3tzfffPMNISEhzJ49m88///zS\n+/fffz8LFy7EYrEwZMgQJk2axEcffQTkDl4v9hpf3ld8uYuD78tVqVKFF154gcGDBxfqe6lcuTIB\nAQH8/vvvBbZk5Ce//a73fYqIiIhcrnr1/AfAAGRnE9yvH1kjR2KrVq3Y51NrRBFcfDrCk08+yaRJ\nkzhx4gR2u50DBw7w1VdfAZCenk5ISAhBQUH88ccfzJs374r9Fy9eTFpa2qUBZFhY2KX3a9Sowfff\nfw/AypUrDdfVtWtX5s6dy549e7Db7Zw6dYoVK1ZcU/fVKlasSOPGjRk7dizp6elYrVa++eabK1o5\n8svg8mMkJSVd85nrfZ+OUNr7pBxJWRmjnIxRTsYpK2OUk3GlIau0NDh9uvA33wJmzMAeEoL5mWcc\nUocGwgW4euLaxW2TyURcXByNGjXi73//O5GRkfTo0YMzZ84AMGLECH788UciIyPp1asXbdq0uXQc\nu93OkiVLqFevHrfddhsnT5684kkLw4cPZ/HixbRs2ZKTJ0/mebc1r9fuu+8+JkyYQP/+/YmMjOSh\nhx5iz549edZ+tdmzZ3P69Gnuu+8+br/9dsaPH09OTk6+57t6++WXX2bEiBHUqVOHCRMmXHr9et+n\niIiIlC12OyxZ4kfDhuGsXOlbqH29kpLwf+cdMmbMgDz+Zbwoivbv4EW0YcMG+913333N68ePH+eW\nW24pyVLEzegaEBERKd327PHmxReDMJvhjTcyuP/+nIJ3ushqJbRVK8zPPIOle3dDu+zatYuWLVte\nd6zrMT3CIiIiIuJ57HYYNSqQzz7zY/ToTJ580lLoG7oBU6div+kmLN26ObQ2tUaIRysNfVLine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3b05b10>"
"<matplotlib.figure.Figure at 0x7f16fb0f9990>"
]
}
],
"prompt_number": 9
"prompt_number": 115
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I think this is starting to look really good. We used no methodology for choosing our scaling factors of $\\frac{6}{10}$ and $\\frac{2}{3}$ (actually, they are not particularly good choices for this problem), and we 'luckily' choose 1 lb/day as our initial guess for the weight gain, but otherwise all of the reasoning followed from very reasonable assumptions.\n",
"I think this is starting to look really good. We used no methodology for choosing our scaling factors of $\\frac{4}{10}$ and $\\frac{1}{3}$ (actually, they are poor choices for this problem), and we 'luckily' choose 1 lb/day as our initial guess for the weight gain, but otherwise all of the reasoning followed from very reasonable assumptions.\n",
"\n",
"One final point before we go on. In the prediction step I wrote the line\n",
"\n",
" gain_rate = gain_rate\n",
" \n",
"This obviously has no effect, and can be removed. I wrote this to emphasize that in the prediction step you need to predict next value for **all** state variables, both *weight* and *gain_rate*. In this case we are assuming that the the gain does not vary, but when we generalize this algorithm we will remove that assumption. "
"This obviously has no effect, and can be removed. I wrote this to emphasize that in the prediction step you need to predict next value for **all** variables, both *weight* and *gain_rate*. In this case we are assuming that the the gain does not vary, but when we generalize this algorithm we will remove that assumption. "
]
},
{
@@ -686,7 +752,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAq0AAAH8CAYAAAD7ZpZkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VGW+P/DPmclMGkkgBQIpBIKQQIJIL9JLKEsVuYgV\njahXivoTr7roApZFsbuXveKuoiAL67qEovQSelEJvSehJSG9Z2aSmef3BzfnMswkpMzkTPm8X695\nyTznzDnfGeGZ7zznOd9HEkIIEBERERE5MJXSARARERER3QuTViIiIiJyeExaiYiIiMjhKZq0rlix\nAiqVCsnJyTY97lNPPQWVqvFvbc2aNVCpVPKjXbt2NoiOiIiIiOqr1sxuz549Zknb3Q9bkCQJkiTV\nuk9SUhIWLVpk02PWRf/+/bFq1SqsXLkSMTExNjkmEREREdWfVFv1gOzsbOzYsQMAsHHjRqxduxZ/\n/OMfERsbCwCYMWNGo05uMplQVVUFjUZTa0L41FNP4fvvv4fJZKrTcY1GI4xGI7RabaPiu9OQIUNw\n7do1pKam2uyYRERERFQ3HrVtbNmypZyYXrt2DWvXrsXIkSMxaNAgm5xcpVLVObGszyinWq2GWq1u\naFhERERE5GBsco2/em7q5s2bMXv2bISEhCAoKAgzZsxAcXGxxf7BwcFm0wyszWm9c2rC999/DyGE\n2Wtmzpxptv/p06frPH1hzZo1GD9+PCIjI+Hl5YXQ0FA8+uijHEUlIiIiclC1jrTW1yuvvILOnTvj\n3XffxZEjR7BixQoAwOrVq832++qrr6DX67F3714sX77c6ihq586dsWrVKnn/ffv2yc8BIDo62mz/\nyMhIs/33799fY5xffPEFPDw88OKLL6JVq1ZIT0/HX//6V+zYsQNnz55FUFBQg94/EREREdmHTZPW\n++67Dz/99BMA4LnnnkNaWhqSkpJgMpnMRj4feughAIDBYMDy5cutHuvOqQnbtm3Dvn37ap1D6+/v\nb7F/TX788UeEhYWZtQ0ZMgTDhg3D999/j5dffrkO75aIiIiImopNS15Nnz7d7HnPnj2h0+mQnZ1t\ny9M0WnXCKoRAUVERcnNzcd999wEALl++rGRoRERERGSFTZPW1q1bmz339fUFcHtE1ZEcP34cY8eO\nhZ+fH1q0aIGWLVsiIiICAKDT6RSOjoiIiIjuZtPpAc5wx/61a9cwaNAgBAQE4E9/+hNiY2Ph4+OD\nqqoqjB49GrVUACMiIiIihdg0abUXWy0WAADr1q1DWVkZNmzYgKFDh8rt95oWoNVqUVVVZZMYiIiI\niKh+FF3Gta78/PwghEBWVladX1NTkls9Gnz3qPCnn35a6/EiIyORlZWFoqKiOsdARERERLZR60hr\ndnY2tm3bBgBISUkBcPvO/GvXrgEAHnvssXqf8NChQ7hy5Yr857uPOWDAALRr187sNQMHDsRf/vIX\nJCYm4umnn4aPjw/Cw8MRFxcn75OUlITS0lIAQGpqKoQQ+OGHH+TL/VOmTIGPjw/Gjh2L119/HU8+\n+SRmz54NT09PbNmyBVevXq21tuuMGTPwzTffYNq0aZg+fTo0Gg2GDh1qUYWAiIiIiOxA1GL37t1C\nkiT5oVKpzP5c7dtvvxUqlUokJyebvX7hwoVCpVKJq1evym1PPfVUrcf87rvvrMby1ltviYiICKFW\nq4UkSWLmzJlm26OiosyOc/dx74xh79694sEHHxR+fn4iKChIPProoyIzM1N4eHhYHPdOX331lejQ\noYN8/PXr19f28RERERGRjUhC8M4jIiIiInJsTjGnlYiIiIjcG5NWIiIiInJ4TFqJiIiIyOExaSUi\nIiIih8eklYiIiIgcHpNWIiIiInJ4TFqJiIiIyOExaSUiIiIih+fUSeuKFSugUqmwd+9eq9vT09Oh\nUqmwaNEim57XXsd1BDqdDlFRUViwYIHdzzV58mQMGzbM7uchIiIi51evpPXq1atITExEREQEvLy8\nEBkZiUceeQRnz561V3w2IUlSrdvT09OxcOFCnDhxwqbHdUaffPIJioqKMH/+fLufa9GiRUhOTsb6\n9evtfi4iIiJybh513TElJQXDhg2DEALPP/88OnXqhJs3b2LNmjXYsWMHOnfubM84GyQqKgo6nQ5q\ntbrW/dLT07F48WK0b98e999/v82O62wqKiqwdOlSPPnkkwgICLD7+bp27YrBgwdj0aJFmDhxot3P\nR0RERM6rTkmr0WjEjBkzUFlZiaNHjyI2Nlbe9uabb+LmzZt2C7CxtFptnfcVQtjluM5i9erVKCoq\nwuOPP95k53z88cfxzDPP4OjRo+jdu3eTnZeIiIicS52mB2zduhXnz5/H008/bZawArcvkYeHh8vP\ni4qKMHfuXERERMDT0xNRUVF49dVXUV5ebva6PXv2QKVS4ZtvvsHbb7+NsLAwBAQEYNy4ccjIyLCI\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3d16550>"
"<matplotlib.figure.Figure at 0x7f16fb151290>"
]
}
],
@@ -797,33 +863,14 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsUAAAFyCAYAAAAd7KdIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4k1Xax/FvuqRNV1TGBVE2BxGKLC7sqKCAIK6sAq0b\nOuIo4oDjsAkyjIAgLogwjkBSoWBlVwQFBKlUYQQcWuAVhBFxUBSR7k2TPO8fLYoQpKVJnjT9fa6r\nl32ynOdGb+Ld0/ucAyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIicgZTge+A\nnWXXXYHtJ30VA1cDlwIZQBbwOXBzwCMVEREREfGTNsA1/FoUn+xi4Muy7y8EmpZ9fzlwyP+hiYiI\niIgETl28F8XDgIlneM8RINJfAYmIiIiI+FJYJd57L7DQy+NdKW2hKKnE2CIiIiIiQaUup88UXwlk\ne3ntxWWvrefnmEREREREfCbiHN/nbZY4GkgH/gIc8PamhQsXGjVr1jzHW4qIiIiIlM+PP/74Vb9+\n/a4o7+vPtSjuD/Q46doCzAUWAB+c6U01a9akZcuW53hLCVUrV66kZ8+eZochQUZ5Id4oL8Qb5YV4\ns23btgYVef3ZeopfAzZT2i7xDXAb0ArIBfae9Lp2wD3Aw/y6XdvFFQlEqq+DBw+aHYIEIeWFeKO8\nEG+UF+ILZ5spfqzs61TXnHKdAVh9EpGIiIiISIBVZvcJEZ+4+Wad9SKnU16IN8oL8UZ5Ib6golhM\nd+WVV5odggQh5YV4o7wQb5QX4gsqisV0GRkZZocgQUh5Id4oL8Qb5YX4gopiEREREan2LIG82dq1\naw1tySYiIiIi/rZt2zZuvvnmcte6mikWERERkWpPRbGYTr1g4o3yQrxRXog3ygvxBRXFIiIiIlLt\nqadYREREREKOeopFRERERCpIRbGYTr1g4o3yQrxRXog3ygvxBRXFIiIiIlLtqadYREREREKOeopF\nRERERCpIRbGYTr1g4o3yQrxRXog3ygvxBRXFIiIiIlLtqadYREREREKOeopFRERERCpIRbGYTr1g\n4o3yQrxRXog3ygvxBRXFIiIiIiEgYt06IpctMzuMKktFsZiuffv2ZocgQUh5Id4oL8Qb5QVQUEDM\n8OEYCQlmR1JlqSgWERERqeKip0/H3aIFrk6dzA6lylJRLKZTL5h4o7wQb5QX4k11z4uwffuImjuX\ngr//3exQqjQVxSIiIiJVlWEQM2IERcOGYdSqZXY0VZqKYjGdesHEG+WFeKO8EG+qc15ELluG5Ycf\nKH74YbNDqfIizA5ARERERM5BTg4xo0eT9+abEBlpdjRVnmaKxXTVvRdMvFNeiDfKC/GmuuaFbfJk\nSm66CXfr1maHEhI0UywiIiJSxYRnZWFNTydn82azQwkZ5T4P2hfWrl1rtGzZMpC3FBEREQktHg/x\n3btT3K8fzvvuMzuaoLVt2zZuvvnmcte6ap8QERERqUKsaWngcuEcNMjsUEKKimIxXXXtBZPfp7wQ\nb5QX4k11ygvLTz9he+45CqZOhfBws8MJKSqKRURERKoI24QJOO+8E3fz5maHEnK00E5MV533l5Qz\nU16IN8oL8aa65EX41q1ErllDTmam2aGEJM0Ui4iIiAQ7l4uYESMoHD8eIzHR7GhCkopiMV116gWT\n8lNeiDfKC/GmOuRF1Jw5GAkJOHv1MjuUkKX2CREREZEgZvn+e6JfeIHclSvBEtDddKsV7VMsIiIi\nEsRiHnkEo1YtCp991uxQqpSK7lOsmWIRERGRIBWxaRMRmZlaXBcA6ikW01WHXjCpOOWFeKO8EG9C\nNi+cTmKGD6fw+echNtbsaELe2YriqcB3wM6y667A9pO+ioGry57rA3wJ/B9wm88jFREREalGombO\nxF2vHiXdu5sdSrVwtj6LNoATmAc0PeW5i4GPgYaAFdgDtAKigY+AK04dTD3FIiIiImcX9s03xN90\nE7lr1+KpW9fscKqkivYUn22mOBM4eobn+gPpZd+3ArKBH4Bvyr6alTcIEREREfmVbeRIih95RAVx\nAFWmp/heYGHZ9xcBh4FHgN6UtlxcUrnQpLoI2V4wqRTlhXijvBBvQi0vItesIXzPHooef9zsUKqV\nc9194koghl97jU+YXfbPuwHjXIMSERERqZYKCrA98wwF06ZBdHS533Yo9xDzd82ndnxtBjQe4McA\nQ9e5FsUnzxJD6SzxyTPDF5c9dpohQ4Zw+eWXA5CYmEjTpk1/ObP8xE96uta1rnV94rFgiUfXutZ1\n8F6feCxY4qnMdfT06Xx32WVss1o58ac70+tbt23Nh//9kOkfT2dP/h76Nu7L7VfcHlR/nkBen/j+\n4MGDADz00ENURHmaj+sCK/ntQrsvgR7A3rLrUxfarQf+eOpAWmgnIiIi4l3Yvn3Ed+tGzscfY9Sq\ndcbXHcw5SGp2Kgt2LeCyhMtIbpLMHX+8g9hIbdt2Ml8vtHsN2Expu8Q3lG611grI5deCGEp3qHgG\n+ARYBzxZgZilmjv5JzyRE5QX4o3yQrwJibwwDGJGjKBo2DCvBXGJu4SV+1bSa1kvOi3sRK4zl/Q7\n01ndezX3Nr5XBbEPRJzl+cfKvk51jZfH3i77EhEREZEKiFy2DMsPP1D88MO/efzAzwdIzU4lbXca\nDWo0IDkpmdTbUrFF2EyKNHSVe0rZF9Q+ISIiInKKnBwS27Qh7803cbduTbGrmFX7V+HIdpD9YzZ9\nG/VlUJNBNDy/odmRVikVbZ8420yxiIiIiPiRbfJkSm66if+7siaOjLEs3L2Qxhc0JjkpmR71exAV\nEWV2iNVCZfYpFvGJkOgFE59TXog3ygvxpirnhWvH5xhpb3HPtfu4bfFthFvCWd17NcvuXsbdDe9W\nQRxAmikWERGpIgwDLAFtfBR/2X10N6k77dw3bA6f3F6f3u2H8Ga9bljDrWaHVm2pKBbTnbzPpMgJ\nygs5jWHQ/rrrzI7CFC4XzJsXxbvvRrJ0ad5vCmOXC0aPtvHgg8X88Y8e84I0UVX5vCgoKWD5vuU4\nshx8nfM1L33bjKQajWg47SMIDzc7vGpP7RMiIlIlRL3yCoktWxK+davZoQTU+vURdOiQwMqVkfz9\n74WnzRS73XDJJR66d4/nySdj+N//NJUcbLJ/zObpDU/TdG5Tlu1dxuMtH2fnHRvoPX8b7umvqCAO\nEiqKxXRVuRdM/Ed5ISezHDlC9Kuvkt2zJ3EDBmCdM6e0lyCE7d0bRr9+sTz9dAxjxhSybFkeSUnu\n014XFQVDhxazdWsO551n0KFDAuPG2Th2rPoUx8H4eZHnzCM1O5VbFt1C3xV9OT/6fDb238ii2xfR\nvUF34ic+j/POO3E3b252qFJG7RMiIhL0bJMm4ezbl//eeiuXDx5MXHIyEZ9/TsHUqWALzf1ad+0K\np0MHFw5HPtZytJnWqGHw7LOFDB5cxAsv2Ni4MYI77yzxf6DyG18c+QJ7lp1le5fRplYbhl8/nM51\nOhMR9mvJFb51K5Fr1pCTmWlipHIq7VMsIiJBLWz3buLvuIOczz7DOO+80gfz84kdOpSwffvIt9vx\n1KljbpBSreUU57DkyyU4sh0cLTzKoCaDuLfxvdSK83JUs9tNfOfOFA8ZgrNPn8AHW41on2IREQkp\nMWPHUvTUU78WxACxseS/8QZRs2YR36UL+TNn4urc2bwgK8njgbAANDSWlJS2rwbiXqHOMAy2fb8N\nR7aDFftW0KF2B0a1GcWNl91IeNiZe4Sj5szBiI/H2bt3AKOV8tBfCzFdMPaCifmUFwIQsX49YQcO\nUPzAA8ApeWGxUPzoo+TPmUPs448TPW1aaXVZhezZE0avXnHY7YHZhmvRIiudO8ezfn1ESLVkB/Lz\n4njxcf71xb+4Ie0GBq8eTL3Eenw68FMcPRx0rtP5dwtiy/ffEz1lCgUvvKC99YKQZopFRCQ4ud3E\njBlD4bhx/F5TratdO3LWriXuvvsI376d/JkzISEhcHGeg6NHLUyeHM3SpVaeeqqIAQOcAbnvgAFO\n4uMNnnkmhksu8TB2bCHXXHP64j35LcMw2PLdFhxZDt776j061enEhA4T6FC7A2GW8s8v2saOxTlw\nIJ5GjfwYrZwr9RSLiEhQstrtWNPTyVu5snyzak4ntlGjiNywgTy7HU/jxv4PsoLcbnjjjShefDGa\nu+5y8te/FnH++YGfsnW5YP58K1Om2LjmGhezZuUTExPwMILesaJjLNqzCHuWHZfHRXJSMv0b9adm\nTM0KjxWxaRMxjz1WurguNtYP0cqp1FMsIiJVX24utsmTyZs/v/y/ZrZaKXzhBdwLFxJ/xx0UTJ5M\nyd13+zfOCgoLgx9+sLBiRS6NGpnX6hERASkpTvr0cfLuu9ZQ3cDjnBiGQeb/MrFn2VlzYA1d6nVh\n6o1TaXtpWyzn2vLgdBIzfDiFzz+vgjiIqadYTKfeUfFGeVG9Rb/yCiUdO+Ju0eI3j5cnL5z9+pG3\neDG2CROwjRpVurosSFgsMGZMkakF8clsNujd21nl21t98XlxtPAoM7bNoPVbrXlq/VM0v7A521K2\n8c+u/6Rd7XbnXhADUTNn4qlbl5Lu3Ssdp/iPZopFRCSoWA4dImrOHHI2bjznMdxXX03u+vXEDh5M\n3N13k//mmxgXXujDKM+upAQiIwN6S5/KyIigRQtXSE9segwPGYcysGfZWff1OrrX787LnV+m1SWt\nKlUEnyzsm2+InjGD3LVrtbguyGmmWExXVc6sl8BSXlRftokTKX7gAYzatU97riJ5YZx3HnmLFuFq\n3ZqETp0Cdjy00wkzZkRx7bUJ5OUF5JZ+kZZm5brrEpkzxxpMk+1eVfTz4kjBEV7+98tc57Line truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3b05810>"
"<matplotlib.figure.Figure at 0x7f16fb12d450>"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that I rewrote the equations somewhat:\n",
"\n",
"$$\\begin{aligned}\n",
"\\hat{x}_t &= gz + \\hat{x}_{t-1} (1-g) \\\\\n",
"&= gz + \\hat{x}_{t-1} - g\\hat{x}_{t-1} \\\\\n",
"&= \\hat{x}_{t-1} + g*(z-\\hat{x}_{t-1}) \\\\\n",
"&= \\hat{x}_{t-1} + g*residual\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"I'll let you decide which form of the equation is more expressive. One form explicitly uses $g$ and $(1-g)$ to compute the point between the two values, the other finds the difference between the points, and adds a fraction of that to the first value. Both are computing the same thing. You'll see both forms in the literature, so I have used both to expose you to them.\n",
"\n",
"**author's note: I think residual form is clearer. recast development to use this form**"
]
},
{
"cell_type": "heading",
"level": 2,
@@ -836,9 +883,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"The g-h filter is not one filter - it is a classification for a family of filters. Eli Brookner in *Tracking and Kalman Filtering Made Easy* lists 11, and I am sure there are more. Not only that, but each type of filter has numerous subtypes. Each filter is differentiated by how g and h are chosen. So there is no 'one fits all' advice that I can give here. Some filters set g and h as constants, others vary them dynamically. The Kalman filter varies them dynamically at each step $k$ and bases it on the number of state variables there are in $\\mathbf{x}$. Some filters allow g and h to take any value within a range, others constrain one to be dependent on the other by some function $f(\\dot{}), \\mbox{where }g = f(h)$.\n",
"The g-h filter is not one filter - it is a classification for a family of filters. Eli Brookner in *Tracking and Kalman Filtering Made Easy* lists 11, and I am sure there are more. Not only that, but each type of filter has numerous subtypes. Each filter is differentiated by how g and h are chosen. So there is no 'one fits all' advice that I can give here. Some filters set g and h as constants, others vary them dynamically. The Kalman filter varies them dynamically at each step $k$. Some filters allow g and h to take any value within a range, others constrain one to be dependent on the other by some function $f(\\dot{}), \\mbox{where }g = f(h)$.\n",
"\n",
"The topic of this book is not the entire family of g-h filters; more importantly, we are interested in the *Bayesian* aspect of these filters, which I have not addressed yet. Therefore I will not cover selection of g and h in depth. Eli Brookner's book mentioned in the previous paragraph is an excellent resource for that topic, if it interests you. If this strikes you as an odd position for me to take, recognize that the typical formulation of the Kalman filter does not use g and h at all; the Kalman filter is a g-h filter because it mathematically reduces to this algorithm. When we design the Kalman filter we will be making a number of carefully considered choices to optimize it's performance, and those choices indirectly affect g and h. Don't worry if this is not too clear right now, it will be much clearer later after we develop the Kalman filter theory.\n",
"The topic of this book is not the entire family of g-h filters; more importantly, we are interested in the *Bayesian* aspect of these filters, which I have not addressed yet. Therefore I will not cover selection of g and h in depth. Eli Brookner's book *Tracking and Kalman Filtering Made Easy* is an excellent resource for that topic, if it interests you. If this strikes you as an odd position for me to take, recognize that the typical formulation of the Kalman filter does not use g and h at all; the Kalman filter is a g-h filter because it mathematically reduces to this algorithm. When we design the Kalman filter we will be making a number of carefully considered choices to optimize it's performance, and those choices indirectly affect g and h. Don't worry if this is not too clear right now, it will be much clearer later after we develop the Kalman filter theory.\n",
"\n",
"However, it is worth seeing how varying g and h affects the results, so we will work through some examples. This will give us strong insight into the fundamental strengths and limitations of this type of filter, and help us understand the behavior of the rather more sophisticated Kalman filter."
]
@@ -855,7 +902,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's write a function that generates noisy data for us. Recall from chapter 0 that we model a noisy signal as the signal plus white noise generated by *numpy.random.randn()*. We want a function that we call with the starting value, the amount of change per step, the number of steps, and the amount of noise we want to add. It should return a list of the data. Test it by creating 30 points, filtering it with *g_h_filter()*, and plot the results with *plot_g_h_results()*"
"Now let's write a function that generates noisy data for us. Recall from chapter 0 that we model a noisy signal as the signal plus white noise generated by `numpy.random.randn()`. We want a function that we call with the starting value, the amount of change per step, the number of steps, and the amount of noise we want to add. It should return a list of the data. Test it by creating 30 points, filtering it with `g_h_filter()`, and plot the results with `plot_g_h_results()`."
]
},
{
@@ -894,9 +941,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcjXX/x/HX2c+ZldtaljZUCiUVoVXlrqh0U/ddlNIm\nbbSQu11ua7oVqdRIq7TYQhlKDVosoQ31q4abZIlZz379/pghzMEs58w515z38/GYx8x15jrX+Uzv\nOfr4+pzvARERERERERERERERERERERERERERERERERERERERERERERERERGRhFIH+Br4BlgN9Cq9\nvRewHlgHXBaf0kREREREos8OpJR+XQf4A3AA/wfUA5oAP8WnNBERERGRirMe5vtBoKj061qADzgT\n+A7YBmws/WgTqwJFRERERKLJXo5z0oBlwHHAtUBDYAtwK7AT+B04gpIRCRERERGRhHa4FWCAAqAV\n0BYYDbhLb38BmF76tRH90kREREREoq88K8B7/Aj8VvpxxD6371kR3s/bb79t1K1bt2rViYiIiIgc\nxvbt23++5pprmpX3/MM1wEdSMve7g5JG93hKdn44iZIXwbmBxsCaA+9Yt25d2rZtW946JMHMnj2b\nbt26xbsMqQRlZ27Kz7yUnbkpP3NbuXLlcRU5/3ANcFPgxdKvLcAgSnaCGAwsKb39noo8oJhDbm5u\nvEuQSlJ25qb8zEvZmZvySy6Ha4C/AFpHuP2d0g8REREREVMpz4vgJAl16dIl3iVIJSk7c1N+5qXs\nzE35JRc1wBLR8ccfH+8SpJKUnbkpP/NSduam/GLL/tlneO6/P95l7KUGWCLKycmJdwlSScrO3JSf\neSk7c1N+sWP96SdSb76ZQPfu8S5lLzXAIiIiIhITll27SPvXvyh+6CGCnTvHu5y9LLG6cHZ2tqFt\n0ERERESSVCBAWq9ehFq2pPipp2L6UCtXrqRLly7l7mu1AiwiIiIiUed56CFwOil+4ol4l1KGGmCJ\nSLNQ5qXszE35mZeyMzflF12ul17CkZNDwUsvgc0W73LKqMhbIYuIiIiIHJJ90SLcTz9N/vz5kJER\n73Ii0gywiIiIiESFdd060rt1o2DqVELt21fb42oGWERERESqnWXnzpIdHx57bG/z6/fD1KlO1q9P\nrJYzsaqRhKFZKPNSduam/MxL2Zmb8qsiv5/U668n0K0b/n/9C78fXn3VyemnZzBjhpNQKN4F7k8z\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAFyCAYAAAD8h7IZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XvcjHX+x/HXnOee+1TEllq7aSWnyqYIZdtCbBTVOhUl\nHZwiKkmSiqLDKkmKSDlLQuJGSTe1nSiHtLUd/KQc45577rnneP3+uGPT7XAfZu6Z65738/HwaK+Z\na6752Lfh4+sz38vy1VdfGYiIiIiIpABrogsQEREREakoan5FREREJGWo+RURERGRlKHmV0RERERS\nhppfEREREUkZan5FREREJGUct/n95ZdfuPbaa7n66qvp0KEDy5YtA2DZsmW0adOGNm3a8O6771ZI\noSIiIiIi5WU53j6/4XCYUChEWloav/zyC+3atWPt2rVceeWVzJ8/n0AgQI8ePVi5cmVF1iwiIiIi\nUibHXfm12+2kpaUB4PV6cTqdfP7559SuXZsqVapw2mmnceqpp7Jt27YKKVZEREREpDzsJzrB5/PR\npUsXtm/fzpNPPsnevXupVq0ac+bMITs7m2rVqrF7927OOeeciqhXRERERKTMTviFt/T0dJYsWcLC\nhQsZN24cgUAAgC5dutC2bVsALBZLfKsUEREREYmBE678HnLWWWdRo0YNTj/9dN5+++3Dj+/Zs4dq\n1aoVO3/Dhg2ccsopsalSREREROQovF4v9erVK/H5x21+d+3ahdPp5OSTT2bPnj189913nHnmmXz9\n9dfs37+fQCDArl27jjrycMopp/DXv/619D8DSbglS5bQvn37RJchZaT8zE35mZeyMzflZ16fffZZ\nqc4/bvP7008/MWLEiMPH9913H1WrVmXIkCF07doVgPvvv78MZUoy2759e6JLkHJQfuam/MxL2Zmb\n8ksdx21+zz//fJYsWVLs8Xbt2tGuXbu4FSUiIiIiEg+6w5sUc8UVVyS6BCkH5Wduys+8lJ25Kb/U\noeZXiqlTp06iS5ByUH7mpvzMS9mZm/JLHWp+pZjc3NxElyDloPzMTfmZl7IzN+UXX/v2WTCOeU/h\niqXmV0RERETiYssWGwMGeGjcOItvvkmOttPy1VdfxaUP/7//+z9tdSYiIiKSopYscXDffR569QrQ\ns2eAU06Jz9LvZ599xh//+McSn1/im1yIiIiIiJRU69Yh2rQ5iNOZ6EqOlBzrz5JUNPdkbsrP3JSf\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3a2aad0>"
"<matplotlib.figure.Figure at 0x7f16fb2d9cd0>"
]
}
],
@@ -914,7 +961,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Now write code that uses *gen_data* and *g_h_filter* to filter 100 data points that starts at 5, has a derivative of 2, a noise scaling factor of 10, and uses g=0.2 and h=0.02. Set you initial guess for x to be 100."
"Now write code that uses `gen_data` and `g_h_filter` to filter 100 data points that starts at 5, has a derivative of 2, a noise scaling factor of 10, and uses g=0.2 and h=0.02. Set you initial guess for x to be 100."
]
},
{
@@ -950,9 +997,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2ac3090>"
"<matplotlib.figure.Figure at 0x7f16fb2c1590>"
]
}
],
@@ -1013,9 +1060,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3a2a290>"
"<matplotlib.figure.Figure at 0x7f16fb0f6710>"
]
}
],
@@ -1027,7 +1074,7 @@
"source": [
"This doesn't look so wonderful to me. We can see that perhaps the filtered signal varies less than the noisey signal, but it is far from the straight line. If we were to plot just the filtered result no one would guess that the signal with no noise starts at 5 and increments by 2 at each time step. And while in locations the filter does seem to reduce the noise, in other places it seems to overshoot and undershoot.\n",
"\n",
"At this point we don't know enough to really judge this. We added **a lot** of noise; maybe this is as good as filtering can get. However, the existance of the multitude of chapters beyond this one should suggest that we can do much better than this."
"At this point we don't know enough to really judge this. We added **a lot** of noise; maybe this is as good as filtering can get. However, the existance of the multitude of chapters beyond this one should suggest that we can do much better than this suggests."
]
},
{
@@ -1087,9 +1134,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3afe0d0>"
"<matplotlib.figure.Figure at 0x7f16fb293790>"
]
}
],
@@ -1119,7 +1166,7 @@
"source": [
"Now let's look at the effect of varying g. Before you perform this exercise, recall that g is the scale factor for choosing between the measurement and prediction. What do you think of a large value of g will be? A small value? \n",
"\n",
"Now, let the $noise\\_factor=50$ and $dx=5$. Plot the results of $g = 0.1\\mbox{, } 0.5,\\mbox{ and } 0.9$."
"Now, let the `noise_factor=50` and `dx=5`. Plot the results of $g = 0.1\\mbox{, } 0.5,\\mbox{ and } 0.9$."
]
},
{
@@ -1162,25 +1209,25 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAF9CAYAAAAUWu5qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlgVOW5P/DvWWayJ5CFBJKwJ0T2BEHcUFRkK4rVVqgV\nqhe9txRFi/Yqyq+tS627ttWqtb22WKvSCsrqCkJYhbAJIRuBEIIkyJJ9Zs7y+2OSYZKcmcxMZjKT\n5Pv5p50zZ3lDn2aevPO8zysUFBToICIiIiIit8RgD4CIiIiIqCtg4kxERERE5AEmzkREREREHmDi\nTERERETkASbOREREREQeYOJMREREROQBJs5ERERERB5g4kxE1A2VlpZi3rx5GDNmDK655hr85S9/\n8foeX3zxBRYsWIDLLrsMWVlZ2LVrVwBGSkTUdTBxJiLqZqxWK+655x6Eh4djxYoVWLJkCV599VWs\nXLnSq/vU1tZi7NixeOihhwAAgiAEYrhERF0GE2ciIj+xWq1YtmwZcnJycPXVV2PlypXIysryOmHt\nqM2bN6O8vBxPPfUUMjMzcdNNN+Gmm27C8uXLvbrP7NmzsWjRIlx++eUBGikRUdciB3sARETdxRtv\nvIEvvvgCr776Kvr06YOnnnoKgOcztRUVFZg5c6bL999++22MGzeu3fscPHgQ/fv3R58+fRzHJkyY\ngI8//hiKokCW+aufiMgX/O1JROQn//rXv3DXXXfh6quvBgAsWbIEc+bM8fj65ORkfPLJJy7fd06E\n3Tl79ix69+6NxsZGzJgxA9OnT8dll10GVVVx/vx5JCYmejwmIiK6iIkzEZEfVFdX49y5cxg2bJjj\nWEZGhlf3kCQJ6enpfhuTKIro168fEhMToeu63+5LRNRTMXEmIgoR/irViI+Px9mzZ2E2m/Huu+8C\nAFatWgVJktCrVy+/jZeIqKdh4kxE5AexsbGIj49Hfn4+rrnmGgBAYWGhV/fwV6nG6NGj8eabb+L0\n6dNITk4GAOzcuRNZWVlt6ptrampw4cIF9OnTB2az2avxEhH1NEyciYj8ZO7cufj73/+O4cOHIzk5\nGa+88opX1/urVGPSpElIT0/HsmXL8NBDD+HIkSNYvXq1Y7Gis3feeQevvfYali9fjvHjx7d478KF\nC6ioqEBlZSUA4NixY4iOjka/fv0QFxfX4XESEXU1TJyJiPzkv//7v1FZWYnFixcjJiYGS5Yswc6d\nOzt9JtdkMuGtt97Cr3/9a9x2223o1asXFi9ejNmzZ7c5VxAEl10/vvzySyxdutRx3rJlyyAIAp55\n5hnDexERdXdCQUGBTytG9u/fj8cffxyqqmLYsGF4+eWXsW7dOrz66qsAgEceeQSTJ08GAJfHiYi6\nsxMnTmDKlCn48MMPMXr06GAPh4iIOsinxFnTNEyfPh3PPPMMcnJycO7cOURFRWH69OlYsWIFLBYL\n5s2bh88//xxWq9XwOBFRd1NaWopt27Zh4sSJ0DQNL730Ek6cOIFPPvkEosj9poiIujqfSjW+/fZb\nxMfHIycnBwDQu3dv7N69GxkZGYiPjwcApKSk4MiRI6itrTU8npWV5acfgYgoNIiiiJUrV+KFF16A\n2WxGdnY2/vznPzNpJiLqJnxKnE+dOoWYmBgsWLAA33//PX70ox8hPj4eSUlJeP/99xEXF4ekpCRU\nVlaivr7e8DgTZyLqbgYMGIB///vfwR4GEREFiE+Js8ViQV5eHtasWYPo6GjceuutuO222wDAsUtW\n63IM5+Oebj9LRERERBQqfEqck5KSMHToUKSkpAAARo4cCavViqqqKsc5VVVV6NOnD+rq6tocT0pK\nanPPvXv3chtYIiIiIgq4mpoaDB8+3OvrfEqcR44ciYqKCly4cAEREREoLCzEvffei48++ghnz56F\nxWLB6dOnkZWVBavViqKiojbHW0tMTHTUTBM1W716NWbNmhXsYVCIYVyQEcYFGWFckJG8vDyfrvMp\ncY6JicHSpUsxf/58KIqCWbNmYdiwYViyZAnmzp0LAI7en2az2fA4kSfKysqCPQQKQYwLMsK4ICOM\nC/InnzdAmTZtGqZNm9bi2IwZMzBjxow257o6TkRERETUVbBHEoW0G264IdhDoBDEuCAjjAsywrgg\nf2LiTCFt2LBhwR4ChSDGBRlhXJARxgX5ExNnCmm5ubnBHgKFIMYFGWFckBHGBfkTE2ciIiIiIg8I\nBQUFerAHAQAnTpxgOzoiIiIiCri8vDykp6d7fR1nnImIiIiIPMDEmUIaa9PICOOCjDAuyAjjgvyJ\niTMRERERkQdY40xEREREPQprnImIiIiIAoiJM4U01qaREcYFGWFckBHGBfkTE2ciIiIiIg+wxpmI\niIiIehTWOBMRERERBRATZwpprE0jI4wLMsK4ICOMC/InJs5ERERERB5gjTMRERER9SiscSYiIiIi\nCiAmzhTSWJtGRhgXZIRxQUYYF6FDPHYMpv/8J9jD6BAmzkREREQUcPKmTQh/5ZVgD6NDmDhTSLvq\nqquCPQQKQYwLMsK4ICOMi9AhnjwJ6cgRoL4+2EPxGRNnIiIiIgo4saICgqpCOnAg2EPxGRNnCmms\nTSMjjAsywrggI4yL0CGWl0MdMgTy3r3BHorPmDgTERERUcCJJ0/COmsWJCbORIHB2jQywrggI4wL\nMsK4CBG6DrGiAraZMznjTERERETkivD999AjI6GOHQvx9GkIFy4Ee0g+YeJMIY21aWSEcUFGGBdk\nhHERGsTycmipqYAkQRk1qsuWazBxJiIiIqKAEk+etCfOANTs7C5brsHEmUIaa9PICOOCjDAuyAjj\nIjQ4J85KdjZnnImIiIiIjIjl5dDS0gAAak4O5Ly8II/IN0ycKaSxNo2MMC7ICOOCjDAuQoPzjLM2\ncCDQ0ADh9OngDsoHTJyJiIiIKKDEkyehNyXOEASoY8d2yTpnJs4U0libRkYYF2SEcUFGGBehwXnG\nGQCUnBxIXbBcg4kzEREREQWOokCorITWt6/jUFftrMHEmUIaa9PICOOCjDAuyAjjIviE776DnpgI\nmEyOY47OGroexJF5j4kzERERUTcnb9sGWCxBebZ48iS0fv1aHNP79gXCwiCWlQVlTL5i4kwhjbVp\nZIRxQUYYFz2TdOgQpG++cfk+48Iu8uc/h7xlS1Ce3bq+uZmSnd3l6pyZOBMREVGXFfb66wj/85+D\nPYzQ1tAAsbwc0uHDQXm8cw9nZ12xzpmJM4U01qaREcYFGWFc9EC6DtOmTZAOHHB5CuMCkI4ehaDr\nkA4dCsrzxYoK1zPOPSVxvuSSSzB79mzMnj0bTz/9NABg3bp1mDp1KqZOnYqNGzc6znV1nIiIiMhX\nYkEBIIoQT58GqquDPZyQJRYXQ01LC96Ms4tSDTU7G/L+/YCqBmFUvpF9vTA8PByrVq1yvLZarXjx\nxRexYsUKWCwWzJs3D5MnT3Z5nMgTrE0jI4wLMsK46HlMX38N2+TJkAoKIB84AMUgBhgXgFRcDNuM\nGQj7xz8AqxUwmz26TiwogFhVZfjv6g1XibPeuze0pCSIRUXQsrI69IzO4rdSjQMHDiAjIwPx8fHo\n27cvUlJScOTIEZfHiYiIiDpC3rQJtmuvhTJ2LKT9+4M9nJAlFhdDHTECWno6xOJij68L+9e/EPbG\nGx1/vosaZ6Dr1Tn7nDhbrVb88Ic/xNy5c7F7926cOXMGSUlJeP/997F+/XokJSWhsrLS5XEiT7A2\njYwwLsgI46KHsdlg2rYNyqRJUEePdlnnzLgApKIiqBkZUEeMgOxFnbO0dy+koqKOPbyxEUJNDfSk\nJMO3u1qds8+J8+bNm/HRRx9h6dKlWLJkCSxNvQHnzJmD6dOntznf+bggCL4+loiIiAjy7t1QBw2C\nnpgIdcwYyPv2BXtIoUnXIZaUQBs6FOqIEZ4vENQ0yPv2QTx+3F7e4SOxogJaSgogGqecak4O5C7U\nks7nGueEhAQAwKhRo9CnTx+kpqZi/fr1jverqqrQp08f1NXVoaqqqsXxJBd/dSxcuBD9+/cHAMTF\nxWHUqFGO2qTmvxj5mq/5mq+bj4XKePiar/m681/fsHkzlGuvRW5uLgRFwczycqC2FrlNCTR/X9hf\n71q7FpNVFXpCAtQRI1D34ovY5cG/x6TkZGi9e6PBZsO+//wHY+fO9en5h9avx7DoaMdMbev3t9TV\n4cZDhxy114H692j+72VNG64sWLAAvhAKCgq83uvwwoULCAsLQ3h4OMrLy3HHHXdg7dq1uPnmmx2L\nAOfPn4/PPvsMVqsV06dPb3O8tRMnTiAnJ8enH4KIiIh6lpgbb0TD0qVQrr3W/vqGG1D/1FNQJ04M\n7sBCjLx9OyL+3/9DzeefQywrQ8z06bjgwayz+cMPYVq/HrBYYJ07F7ZZs3x6vvlf/4L89deod1Mr\nHXvllah77TWoY8f69Axf5OXlIT093evrZF8edvToUTz66KMwm82QJAlPPfUUoqOjsWTJEsxt+otk\n6dKlAACz2Wx4nMgTzrMERM0YF2SEcdGDVFdDOnIEilOSrI4eDXn//jaJc0+PC7GpvhkAtPR0CLW1\nEM6ehR4f7/Y6KS8PSnY2xLNnIRUWwubr81101HDWXOfcmYmzr3xKnLOzs7Fhw4Y2x2fMmIEZM2Z4\nfJyIiIjIW6YtW6BceikQHu44powZA3nXriCOKjRJTfXNAABBgDp8OKTDh9ttMSfv24eGmTOhl5V1\naKtu8eRJKKNGuT1Hyc5B3ca9qP/h3YiL87oQolNx50AKaT15loBcY1yQEcZFz9Hchs6ZOmaMYUu6\nnh4XYnEx1ObEGYDiyQJBRYF06BCUMWOgZmZCKiz0/fnl5dDbmXH+uGICzmzYj8sui8Xy5WLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3ce8350>"
"<matplotlib.figure.Figure at 0x7f16fb0b4dd0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3fd2210>"
"<matplotlib.figure.Figure at 0x7f16fb2d9b10>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4038050>"
"<matplotlib.figure.Figure at 0x7f16faffe490>"
]
}
],
@@ -1217,25 +1264,25 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3acf990>"
"<matplotlib.figure.Figure at 0x7f16fb2aca50>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAF9CAYAAAAOZg7kAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8lOW99/HvZCaTEAJhU9kcWRQCsoRYRKzaPppTt4P2\n6BmrR6u1eqqF9mg363bUHpeqj9p6Tn2U2r7cqm2dWh9RT6tPXGhTqFtICNBjlS0oAiGsmUCWyTx/\n3EmAzIQkk5nM/Ob+vF+veYV7cs89F3wh/HLld1+XBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAADojymS3pTUKGmTpBsSuMbbktq6PO5J0vgAAACApPNLWivpVUkzJF0qqUnSFX28zluS\n7pd05EGPwckbJgAAALKFX9LPJe2R9KmcwrNNfS9A++v89vcdc9Bzv5T0fh+v85ak25M1KAAAAGSv\nH0naJulMSTN1oLXg8l6+PiCpQdLebh6f7+V17pL0UZfnLpfUIsnXy2tITiH8maTtklZKukNSXh9e\nDwBZpS9fQAHAbb4p6SFJr7Uf3yhpWR9e/6mkWYf5/OZeXudIOcXrIElrJD0vp6j1ShopaWsvr/Mr\nSevkFPcnymmTmCDpa718PQBkFQphAIhvmKRRcmZOO6zq4zUicgrPZIlIqpVT+HoSeP0vD/r1ajkz\nyk9L+q6kHf0eHQAYk5PuAQBAFktWa8Q2SUdIapb0BTmz1EfIKYzr+zG+yvaPE/txDQAwixlhAIhv\nl6Q6SSWS/rv9uZl9vEayWiPelXSzpLEHveaLkqoktXY5t0jScDm9wE09XHd6+8f1vRwHAAAAXOIO\nObOxZ8kpgt9Q326WS5ZcSR8rdvm0eOO4Q84YT+vy/GRJd8rpDZ4g6cuSNkp6KhUDBgAAgG0dy6ft\nlfSJpMvkFJlfScNYOjbU2Nc+lu421LhdTstE10J4vKQKOb3A++WsQnGnpPxUDBYAssEDkrZIqjno\nuXlybh5ZI+m36RgUAKTJRDmF8InpHggAIPXmSzpBBwrhHEkfSjq5/XhkOgYFAANkiqRFkqZJOl7S\nS3JWjuBGYwBwiQk6UAjPlfOjNQBwg2Pl3Ki2V87qDEvECgsAkDX6umpEQNJuSX+QdJSkxyU9muxB\nAUCG+Fi0QQBA1uprIZwvZ93LGXIK4vcl/VEsvQMAAABj+loIb5Fzk9wn7ccfSCpWl0L4N7/5TXTU\nqFH9Hx0AAABwGNu3b1978cUXH5vIa/taCL8vpz1iuKSwnHU113Y9adSoUSotLU1kPMgAL7/8shYs\nWJDuYSBB5GcX2dlGfnaRnW2VlZWTE31tT3c+PyJpmaSpkjbJWZfyejlrWVZKek7S3xN9c2Sm2tra\ndA8B/UB+dpGdbeRnF9m5V08zwovaH139LgVjAQAAAAYMa2EiRllZWbqHgH4gP7vIzjbys4vs3ItC\nGDGmTp2a7iGgH8jPLrKzjfzsIjv3ohBGjIoK9kyxjPzsIjvbyM8usnMvCmEAAAC4kicVFy0vL4+y\nfBoAAABSrbKyUmVlZQnVtMwIAwAAwJUohBGDXinbyM8usrON/OwiO/eiEAYAAIAr0SMMAAAAs+gR\nBgAAAPqIQhgx6JWyjfzsIjvbyM8usnMvCmEAAAC4Ej3CAAAAMIseYQAAAKCPKIQRg14p28jPLrKz\njfzsIjv3ohAGAACAK9EjDAAAALPoEQYAAAD6iEIYMeiVso387CI728jPLrJzLwphAAAAuBI9wgAA\nADCLHmEAAACgjyiEEYNeKdvIzy6ys4387CI796IQBgAAgCvRIwwAAACz+tMj7Ev2YNCz1lZp2zaP\n9u/3aNKktpjP19V59OyzfuXkSB6P5PdLhYVRjR7dpjPOaE3DiAEAALIPrREDoLVV+utfvXrwwXxd\ncEGhJk0aprKyobr11kFxz29rk3bvzlF9fY62bcvRunU5WrbMp7ffzo17/qpVXk2bVqSTTx6qc88t\n1OWXD9Z3vlOgn/88L6Hx0itlG/nZRXa2kZ9dZOdezAgPgKYm6dZbC3TSSa36139t0i9/Gdbw4dFu\nzz/qqKhuv31fr69fXBzRG2/s0a5dHu3YkaP6eo927PAoPz/++e+849VXvlKoI46IatSoqI44ok0j\nR0Y1e3arvva15r7+9gAAAEyiR9iFolFp926Ptm3zqL4+R3V1HtXXezRkSFT//M8tMee//bZP3/jG\nYI0c6RTNo0ZFNWpUm0pLI7r4YgpnAACQPvQIZ4jduz3atClHM2ZE0j2Uw/J4pGHDoho2LCoptke5\nq1NPbVVFxR5t3+7R9u0dhXOOcnPjz2r/4Q+5uu66Ao0c6RTMI0Y4M88nndSqYDC2cI5GnTEBAAAM\nJArhJHnhhVzdckuBrryyKeML4Z5UVFTolFNO6Tz2eqUjj4zqyCN7Vzj/wz+0dBbO9fU5nR8LCuIX\nzr/7nV/f+16BRoxwWjRGjIhq5Mg2feELrbrkktjCef9+52N3rR9u1zU/2EF2tpGfXWTnXhTCSfDG\nGz7demuBfvvbBs2ebbsITgafr2+F8z//c7POOqtZO3Y4RfOOHU7hPGZM/Ne+9JJf//ZvBcrNlUaM\ncGachw+PasGCZn3967GFc329R7t2eTR8eFRFRVF5vf39HQIAgGxAj3A/rV2bo3POGaInnwxr/nyW\nNhso0ajU0CDt3OncHLhzp0ejRkU1a1bsNyIvvJCrH/94kHbu9GjPHo8KC51Z5yuuaNK//VtTzPkf\nfZSjtWu9GjasrbOFZPjwqPISW4QDAACkED3CadLWJn3ta4N10037KIIHmMcjDRkiDRnSpkDg8Ode\neGGLLrzQuQkwEpH27HEK5/z8+K0aH3/s1dNP+7VjR4527fJo925nRnnRov3693/fH3P+n//s07Jl\nvs6iuagoqmHD2nTMMW0aM6b71UEAAEB6UQj3Q06O9NRT4bibYliWzb1SXq80fHj0sMvXnX12i84+\n+9DVM6JRp4iOJzc3qkjE+emAUzQ7BfRFFzXrqqtiZ5x/9Su/XnzRr6Ki6CGPU09t0ec+F/smra3O\nuHt7Q2E255ftyM428rOL7NyLQrifsq0IRnwej9P7HM9JJ0V00km97w0/7bRWjR7dpj17nFaN3bud\nx5498Svd++7L18MP52vo0Gjno6goqiuvbNKXvxy73N3GjUPU1OTT0KFRDRkS7fxYWMjqHAAAHIwe\nYcCA5mZp794DBfPu3R4FAm2aODH2G7Fnn/XrhRf82rPHo717nceePR7dfPM+LVwYO0P9/PN+LVvm\n05Ah0UMe8+a16rjjYq/PcncAgExCjzCQ5fx+aeTIqEaO7Lnn+NJLm3XppfHXa45n8uSIGhvVWThv\n3JijvXs9GjOmLW4hfMMNg/Sb3+SpsLBjptl5LFrUpDPPjJ2hfu89rz75JKfz/MGDpcLCqI48sk2D\nB/f8ewcAIFUohPto7docTZrUltUzYvRK2dZdft39nT3hhIhOOKH3rR333bdPt922Tw0NTuHc0OA8\nJk2Kf43/+R+v3ngjt/O8cFhqaPDollv2xd3J8KGH8rV0qU+DBztF8+DBTqF94YXNmjMn9j02bMhR\nY6M6zy0oiGrQIJuz1vzbs4387CI796IQ7oO9e6WysiFavnyPRo9mNQC4U05Ox4od0V6tivHVrzbr\nq1/t/VbcX/5ys044oVWNjYcWzn5//PN//Wu/XnnFr3BYamz0KBz2qKlJevTRxrg7Gf7853mqrPSq\noOBA4Tx4cFRnntmiqVNjZ8C3bPGopcWjggLn3Px8m0U2ACAWPcJ98OSTfr3xRq6eeSac7qEAOIxI\nxGkFiXeD43vvebV2rVeNjVI47Oksni+4oFklJbEzzjffPEhLlvi1b59TaLe0SAUF0v/5P2H94z/G\nzmgvXpynlSu97YWzNGiQU0Cfc06Ljj02ttDetClHTU0d5zkf8/IotgGgt+gRHiBPP52nm2/el+5h\nAOjB4XYPnDs3orlze98Kcs89+3TPPQf+3be2Svv2qdsZ6tmzW1VYGFVjo0f79jnFdn19jvbvj/81\n+rHH8vTaa7nat8+jxkZp/36PmpudpRnjFdr335+vqiqv8vOdonnQIGeW+l/+pUnTp8cW2lVVXu3e\n7aybPWiQOj8ecUQb25QDcD0K4V6qqvKqvt6j//W/sn/jDHqlbCO/1PL5nNaQ7vR1Ob27796nu+92\nCu2O7Lpbs1qSzjyzRTNmRLRvn7Rvn0f793sOW5i/9lquli3ztZ+r9vM9+slPwiori/16dt11BVq+\n3Kf8fGdmumOG+sYb98XtJf+//zdXn3ySo/x8p8jueN2JJ7bqqKNiW2d27fIoGpXy8pzzsmnLc/7t\n2UV27kUh3EtPPZWnyy9vzqov2gAy0+G+zsyeHdHs2b0vtH/4w9jdEA/n5pv3afdup8DuKJybmqTx\n4+Ovmd7Y6NFnnzntHc65zuvGjWvTUUfFjvOGGwapvDy38zyfT8rLk556qiHuRMNdd+WrpsbXWTh3\nfLz66v2aNi12TG++6dP27Tny+53zOj7OmBHRsGGxhfm+fU7fu99POwrgRvQI99Jzz/l1+ukt3CQH\nAEkSjTprZDc1Sfn58We1q6q82ro1R/v3S01NTlHe3OzRl77UoqOPji2Ef/Yzp0e7qcnTfm3nNT/6\n0b64OzdeeulglZfnqqXFI78/Kr/fKbafeCKsU06JLcx/9KNBWrPGq7y8qHJz1fnxm9/cr+Li2PH8\n93/nautW52ZPv9/ZidLvd2bMR42K/f9kyxaPWlsVc77PR6EOdIce4QHwL//S+7veAQA983jUPsvb\n/TnODYy9nwH/1rdiN405nGefdW5+bmtzivKO4nno0PiTHued16yTTsrpPLe52Sm0hwyJf/Line truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3a25590>"
"<matplotlib.figure.Figure at 0x7f16fb0f9590>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x40110d0>"
"<matplotlib.figure.Figure at 0x7f16fb01fa50>"
]
}
],
@@ -1268,17 +1315,17 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAF9CAYAAAAN0QDMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X18zfX/x/HnOTtn1xvmIomFhK9MKF25TF9qmItUFFHo\n67L4qq9CGl2QSr8SRaSWXES5aGmKdLUuRFRK5BtiruViZ9fbOef3h6+V9jE7Z+dq2+N+u+2Wzzmf\n89lr8+x47b3XeR/Tzp07nQIAAAAqALO/CwAAAAB8heYXAAAAFQbNLwAAACoMml8AAABUGDS/AAAA\nqDBofgEAAFBh0PwCQBlz9913a9asWf4uAwDKJJpfAGXenj17NGDAAF155ZVq37695s2b5/I1hg8f\nro4dO6pZs2Zq3769Jk+erPT09HPO+eGHH9S7d281a9ZMnTp10sqVK8+5f/ny5erTp49atWqla665\nRgMHDtTWrVtL9bUFugt9T0ri2LFjGjlypFq0aKHrr79e06dPl8PhKLx/48aNaty48Tkf//jHP5SX\nl2d4vccee0yNGzd2qxYA5Z/F3wUAQGnk5eXpvvvuU/369bV8+XLt2LFDEyZMULVq1dSrV68SX+fq\nq6/W8OHDVb16dR08eFCTJ0/W+PHjNXv2bEnSiRMnNGTIEP3zn//UM888oy+++EITJkxQrVq1dO21\n10qSNm/erF69eqlFixayWCx6+eWXNWjQIK1atUqXXnqpV75+fyrJ96QkRo8erby8PC1atEjHjh3T\nQw89pIiICI0aNeqc87766is5nX++L1NwcHCRa61fv1579+6VJJlMJve+MADlGiu/ANySl5enSZMm\nqWXLlmrbtq1Wrlzpl9W2zz//XGlpaXryySfVsGFDde/eXd27d9fChQtdus7gwYPVrFkzXXzxxbrq\nqqt0++2365tvvim8Pzk5WQ6HQ48//rguu+wy3XPPPbrmmmu0aNGiwnOmT5+uvn37qlGjRrrsssuU\nmJio7OxsffHFFx77es/KysrSQw89pBYtWuimm27S+vXrPf45LqQk35ML2bFjh7Zs2aJHH31UTZo0\nUfv27XXPPfdo8eLFRc6NiYlR1apVCz/+7siRI5o6daqmTp1aqq8LQPlG8wvALXPmzNH69ev14osv\nav78+VqxYoWkkq+2HTx4UC1atDjvx3fffVei62zbtk2xsbGqUaNG4W3XXHONdu7cqYKCAte/MEmH\nDh1SSkqKrr766nM+T7NmzWS1Wgtva9WqlX788cfzXuf06dOSpOjoaLfqKM7y5cvVtm1brV69Wlde\neaUmTpyo3NzcEj128+bNxX7vDx8+XKLruPM9MbqGxWJR8+bNC2+75pprdOLECe3fv/+cczt16qS2\nbdtqyJAh2rZt2zn3OZ1OPfzwwxo6dKhq165d4s8PoOJh7AGAW5YsWaJ7771Xbdu2lSQ9+OCD6tu3\nb4kff9FFF+m999477/1/bWaLc+LECVWpUkU5OTnq0qWL4uPjde2118put+vUqVOqVq1aiWuaPXu2\n5s2bp5ycHLVp00YvvPBCkc9z+PBh9ezZU/fff79iYmL0xx9/nPd6zz77rOrWratbbrmlxDWUVJs2\nbdSjRw9JZ1atP/jgA+3bt0+XX375BR8bFxdX7Pe+evXqJarBne/J3/3xxx+qXLmyJKl3796KjY0t\nHHc4ceKE6tSpoxo1auipp57SFVdcoczMTL355pvq16+fVq1apfr160uS5s2bp6CgIPXp06fEnxtA\nxUTzC8Bl6enpOnnypBo1alR4W0marr8KCgpSnTp1PFaT2WxWrVq1VK1atXPmQl3Rv39/de3aVbt3\n79Zzzz2np556Sk8++aSkP1e0rVarLrnkElWuXLlwZdfIzJkztWnTJi1atMhwNrW06tatW/jnSpUq\nSVKx9fxVSEiIR773rn5Pzufs31etWrV00UUXFbm/Xr16qlevXuFxixYt1KVLFy1atEiTJk3S9u3b\n9frrrxeO3Jy9nrs5AFC+0fwC8IuDBw+qa9eu571//vz5uuqqqy54nZiYGJ04cULBwcF66623JEmr\nVq1SUFBQ4YpiSVWqVEmVKlVS3bp1FR0drf79+2vo0KGqU6eOYmJidOzYMVWtWlXvvvuuJGnWrFmG\nK8uvvvqqFi1apKSkpMKVSU8LCgoqcltJm73NmzfrvvvuO+/9KSkpqlmz5gWv48r35HyqVq1a2DC/\n9NJLkqRNmzYVXt+I2WxWo0aNdODAAUnSt99+q9OnT6tz587nnDdp0iS99957ev3110tcD4Dyj+YX\ngMuio6MVExOjX375Re3bt5ck/frrry5dw1NjD82aNdPcuXN15MiRwlXDs1tjWSznPsXZbDadPn1a\nNWrUuOBq7NlVzbPbacXFxemFF15QXl5e4WO//fZbxcXFnfO4efPm6fXXX1dSUpIaN25coq/B1zw1\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4035a50>"
"<matplotlib.figure.Figure at 0x7f16fb2c1a10>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAF9CAYAAAAN0QDMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4k2XWx/Ff0r1NWMpWtgoVhEHKpuKGgDogBQoisiiI\nI+CwqIOCooDYQRREARU7IygyIKAsylaxvOKgo7ggiAKCIApYyiJradK9Sd4/OnSsfVrakiZp+/1c\nkwvuPPeTnJQzj6d3Tu6YDhw44BIAAABQBZi9HQAAAADgKRS/AAAAqDIofgEAAFBlUPwCAACgyqD4\nBQAAQJVB8QsAAIAqg+IXACqg++67T/Hx8d4OAwAqHIpfAJXC4cOHNWzYMLVt21ZdunTRm2++WerH\nuO+++9SyZcsCt7lz5xrO/fXXX9W+fXvddttthY59/vnnGjBggNq2bavrr79eTzzxRKljqUh27dql\n/v37q02bNurWrZvWrl1bqvNTU1M1bdo0de/eXW3bttWtt96qZ599VqmpqQXmffrpp+rVq5eio6PV\nu3dvffbZZwWOP/XUU4X+/SZMmHDZrw9A5eLv7QAA4HJlZ2frwQcfVFRUlFavXq39+/dr8uTJql27\ntvr161eqxxo+fLhGjBiRPw4JCSk0JycnR48//rhat26t48ePFzi2fft2jRkzRiNGjNCMGTMUEBCg\nX375pWwvrAI4d+6cRo4cqT//+c968cUX9fnnn2vy5Mlq0KCBrr/++hI9xpkzZ3T27FlNnjxZV155\npZKTkzV58mT9+uuveuuttyRJP//8sx5++GGNGDFCffv21fvvv6+HHnpIGzZsUNOmTSVJJpNJPXv2\n1JQpU/IfOygoyP0vGkCFxsovgDLLzs7W1KlT1aFDB91yyy1au3atWrZsWeqVv8v12WefKTk5Wc89\n95yuuuoq9enTR3369NHSpUtL/VihoaGqVatW/i00NLTQnHnz5qlNmza6/vrr5XIV/JLM+Ph4de/e\nXY899piaN2+uJk2a6Pbbby/zaytOenq6Hn/8cbVv31633367Pv7443J5nuIkJCTI6XTq2Wef1ZVX\nXqm//OUv6tixo5YvX17ix4iKitK8efPUtWtXNW7cWDfeeKPuv/9+ffnll7Lb7ZKkVatWqVGjRnrs\nsccUFRWlJ554QhEREVq1alX+47hcLgUFBRX497NYLG5/zQAqNopfAGU2f/58ffzxx3r11Ve1cOFC\nrVmzRlLeClxJHD9+XO3bty/y9u2335bocfbs2aPIyEjVrVs3/76OHTvqwIEDys3NLdVrWrFiha6/\n/nrFxsbqtddeU3Z2doHjX3/9tT766CM98cQThQrfnJwc7dy5Uy1bttTw4cN10003afDgwfrqq69K\nFUNJrV69WrfccovWr1+vtm3basqUKcrKyirRuTt27Cj2Z3/y5MkSPc6ePXvUpk0bBQQE5N933XXX\naffu3WV6TRelpqYqODhYgYGB+c9z7bXXFpjzx+cxmUz65JNPdOONNyomJkbPPfdcfvEMABfR9gCg\nzN5991098MADuuWWWyRJEyZM0ODBg0t8fr169bRhw4Yij/++mC3OuXPnVLNmTWVmZqpnz56KiYnR\n9ddfL4fDoZSUFNWuXbtEj9OnTx81btxYtWrV0u7du/XSSy/p2LFjeuGFFyRJKSkpmjRpkmbPnq3g\n4OBC558/f145OTl666239Le//U0TJ07U2rVr9de//lUffvihGjduXKI4SqpTp07q27evJGnEiBH6\n8MMPlZSUpObNm1/y3Ojo6GJ/9nXq1ClRDBd/9idPntSdd96pRx55ROHh4Tp79mzJXoSBEydOaNmy\nZXrggQfyi99z587p2muv1e7duzV8+HDNmjVLNWvW1M6dO/PP69y5s2JiYlS/fn39/PPPmj17tn76\n6Se9/fbbZY4FQOVD8QugTFJTU3X+/Hm1aNEi/76SFF2/5+fn59aC0Gw2q0GDBqpdu3ahVdmSGDBg\nQP7fmzdvLn9/fz355JN66qmnVKNGDT3zzDPq3r27rrnmGsPzLz7nTTfdpCFDhkjK+xDWhx9+qI0b\nN2r06NFleFVFa9KkSf7fq1evLkm6cOFCic4NCgpyy8/+4ip/QECAGjZsqBo1apQ4BiOpqakaPXq0\nrr32Wj3yyCOFjoeGhqpRo0aqVq1aoWMxMTH5f2/evLnq1KmjoUOH6ocfflDr1q3LHBOAyoXiF4DX\nHD9+XL169Sry+MKFC4ssNH8vPDxc586dU2BgoJYtWyZJWrdunfz8/FSjRo0yx3f11VdLkpKTk1Wj\nRg199dVXyszM1LvvvitJcjgccjgcatOmjRYuXKi2bdvKZDIVKEpNJpMaNmyoU6dOlTmOovj5+RW6\nr6RF/44dO/Tggw8WeTwxMVERERGXfJzw8HCdPn1atWrV0vvvvy8pr++5pKvtv2ez2TR8+HDVq1dP\nr776aoH2mVq1auncuXNq1qyZ1q1bJ0las2ZNsc9z8d/v2LFjFL8A8lH8AiiTatWqKTw8XD/++KO6\ndOkiSfrpp59K9Rjuanto06aNFixYoN9++0316tWTJG3btk0tW7aUv3/By5zNZtOFCxdUt27d/LfU\ni/Lzzz9Lkho1aiRJev/99+VwOPKPL1u2TJs3b9aSJUtUv359BQUF6corr9TRo0fz57hcLp04ccJw\nSzRvclfbQ3R0tF555RVlZ2fn/zy/+eYbRUdHF5p7/vx5paWlqX79+oUKd7vdrhEjRqhWrVqKj48v\n0EN88Xk+/fTTAvdt375d3bp1KzK2P/77AYBE8QvgMtxzzz1asmSJWrVqpXr16umVV14p1fnuanvo\n3LmzGjdurKlTp+rxxx/X/v37lZCQoOeee67Q3MWLF+sf//iHli5dquuuuy7//qSkJK1Zs0a33Xab\nwsPDtX//fs2aNUt9+/bNXz2OjIws8Fg1atSQv79//lZbkjRo0CC9+OKL6tSpk9q3b69169YpJSWl\nwFvyF10siLds2XLZP4PSclfbQ2xsrOLj4xUXF6cRI0Zo69at2r59u5YsWVJo7qxZs7Ru3Tpt2bJF\nDRo0yL/fbrdr+PDh8vf319///nelpKTkH6tVq5bMZrMGDhyo5cuXa+7cuerbt6/WrFmjU6dOadCg\nQZLydr54+eWX1aNHD9WrV09JSUmaOXOmrrvuuvwVYACQKH4BXIZRo0bp1KlTGjdunKxWqyZMmKBt\n27ZdckXV3QICAvTGG28oLi5Od999t2rUqKFx48bpzjvvLDTXZDIZ7kYRGBiobdu26Z133lFGRobq\n16+vvn37asyYMUU+r9Fj3XfffUpNTdXLL7+sCxcuqFmzZpo/f75hoZmenl6gReJylXSXDXeqWbOm\n3nzzTU2fPl39+vVTRESEZs6cqY4dOxrGZxTj3r17tXv3bplMJt16660F5v/73/9WgwYNdOWVVyo+\nPl4vvfSSFi1apCZNmig+Pj7/5+fn56eDBw9qw4YNSktLU926ddW1a1c9+uij5fbaAVRMpgMHDhTZ\nIDZr1ixt2LBB4eHhSkhIkJTXy5WYmCgp78MFDz/8sGciBeDzjh49qm7dumnVqlVq06aNt8PxaQcP\nHlRsbKzmz5+vrl27ejscAKgyit3nt3v37lqwYEH++OjRo1q/fr0SEhK0bt06rVu3TseOHSv3IAH4\npsOHD2v58uX65ZdfdPDgQc2YMUPNmjXjw0Ul8PXXX6t9+/YUvgDgYcUWv+3bty/wSWmLxSJ/f39l\nZmYqKytLAQEBslqt5R4kAN9kNpu1du1a3X333Ro6dKhcLpdef/11mc18f86l3Hffffm7RgAAPKdU\nPb81a9bUsGHD1LVrVzmdTj355JOGey0CqBquuOIKvffee94OAwCAEitV8ZucnKwVK1Zoy5YtysnJ\n0T333KOuXbuWeEscAAAAwJtKVfzu3r1b0dHRslgskqRWrVpp3759+Xt8XvTdd9+VaYNzAAAAoDRs\nNptatWpV4vmlKn4bNWqkPXv2KDs7W06nU3v37jXc7aF27drq0KFDaR4aVUBCQoJiY2O9HQZ8DHkB\nI+QFjJAXMLJz585SzS+2+J02bZo2b96slJQUdenSRXFxcerWrZv69esnSRo4cKCioqLKHi2qlKSk\nJG+HAB9EXsAIeQEj5AXcodjiNy4uTnFxcQXuu+2229jbFwAAABUS+xHBY/785z97OwT4IPICRsgL\nGCEv4A4Uv/CYFi1aeDsE+CDyAkbICxghL+AOFL/wmK1bt3o7BPgg8gJGyAsYIS/gDhS/AAAAqDJM\nBw4ccLn7QY8ePcpWZwAAACh3O3fuVOPGjUs8n5VfAAAAVBkUv/AYerVghLyAEfICRsgLuAPFLwAA\nAKoMen4BAABQYdHzCwAAABSB4hceQ68WjJAXMEJewAh5AXeg+AUAAECVQc8vAAAAKix6fgEAAIAi\nUPzCY+jVghHyAkbICxghL+AOFL8AAACoMuj5BQAAQIVFzy8AAABQBIpfeAy9WjBCXsAIeQEj5AXc\ngeIXAAAAVQY9vwAAAKiw6PkFAAAAikDxC4+hVwtGyAsYIS9ghLyAO1D8AgAAoMqg5xcAAAAVFj2/\nAAAAQBEofuEx9GrBCHkBI+QFjJAXcAeKXwAAAFQZ9PwCAACgwiptz69/OcYCAECV5nRKJ0+alJRk\n1rFjeW+2duzoUOPGzkJzXS7JZPJ0hEDVQ/ELj9m6das6derk7TDgY8gLGKkoeeFwSDk5UnBw4WNx\ncSF6440g1azpUuPGTjVqlFfw1quXZVj8jh4dqo0bAxUW5pLF4sr/88knM9WlS26h+Z984q/jx80F\n5losUmSkQ9Wquf2l+oSKkhfwbRS/AACUwI4dfvrkkwAlJZl19Gje7dgxs6ZPz9CDD2YVmvLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3adb290>"
"<matplotlib.figure.Figure at 0x7f16fb2e40d0>"
]
}
],
@@ -1324,30 +1371,54 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3b0b190>"
"<matplotlib.figure.Figure at 0x7f16fb113c90>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4lNXd//HPZCYbSQhkYZUYlB2RVago2mrUWou22nFf\n2mqriNbtJ8Vq1cetYtValVqrz0Nd0NapxbUq4B63FiKCWnchCoJJWLInM5n798dkQiY5CVnu2d+v\n68oF98zknjPh6/jNmc99jgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeWM9gAAoI/8kr6U\n9F60B9IHGyXtUHyOHQDiXkq0BwAAMeQKSe9Kqpb0raQnJU0Mw/NYrV+x4BhJH0hqlPS+pO/34Rzj\nJL0kqV7SV5IWdbj/pwr8wtL+a0vfhgsA/UcDDAC7HSTpdkmzJR0hKUvSi5IGR3NQYTRJ0gpJT0ia\nKunZ1r+P68U50iQ9J6lBgZ/bYknXSzqrw+O+ljSs3deU/gwcAAAg0WVIul+Bmdktks5WYBbxzNb7\n5ygw+zi33fec1Pr4Mf143mmtz/PDfpzD5EsFZkn/JalOgRnYA21+jp74g6SPOtz2maRbe3GO4xT4\nGQ1vd9v/SlrT7vinCrxmAAAA9NCNkr6R9D0FZirfUGgDLEmXK9Bk5UoqkrRd0mmt9xVJqpVU08XX\nQV087/dan6er+/tqowIzoj+UNF7SK5I+7MX3n6auX0tNL85TKum+Drf9r6TXenGOGyR92uG2MyV5\nJblaj3+qwAxxuaRNkv4haWwvngMAACDpVCo0VzpXnRtgKfBR/GOSXpW0rN3tTkn7dPOVYXjOVElv\nKtCc2u1LSTe3Oz5egdeT1cPvz1b3r6enPpb0OwWiCzslHStpiTrPCnfnL5LekpSpwOtaokCO2C9p\naOtj5kg6WdJ+kg5TIC/8raSCXjwPANjGteeHAEBUDZaUJ2lDu9vWd/HYMxVo3nZKOrrd7S2SvujF\nczoUaOwKZf/sb9An7f6+vfXPPAUiEXtS2/pll1oFmted/ThHiwIzvNsU+Pm1907rV9C/Wx97lqTb\n+vGcANAnXAQHINb1ZrWEKQrMRA5RaPa3NxEIh6R7JB2iwGzlt30d+B74DLd1bBy70l0EoroXY/hW\ngSb/Q0nTFYg+FCrQxPb2HM2SDlXgIsJCBRriqi6+p1aB2ERxL54HAGzDDDCAWLdTgQjE/gpEHNT6\n946GSFou6TeSRkj6u6RZCsyobu7ie4LaL8l1t6QSSd9VYEmvWPSkArGD/vqPAsugtXeopH8aHjtM\ngajIxg63/1u7f+bBn+N3Ja2TuclX63n2VeDfCAAAAAbXKXAR3GEKXARXqtAMsEPSC9rdIKcqsArB\nA718nj8p0MTNUuiSXaaMsF/Sy708f9CXCs0vf7f1fEV9PF9fTZTUJOmm1r8vUeBiNdMFaq8oMMaO\nUhVYOeJZBTK+p7Wes/3ru07SDxRoemdKely7Z44BAABgkKbAagXtl0Fr0e4m6wpJWxWYBQ4ap0Ak\noON6tN3xt56346YNHS+2y269/ZHevIh2TA1wiyLfAEu7N8JoUvcbYbyswBhNghthNCiwukXHjTDu\naL29UYF4xROSJvRr1AAQRS0K7Jr0rgJvcACQDI5R4P1vv2gPBAAQeb1ZbxIAEsVtCuSNAQBJiAYY\nAAAAScUraa0CF6TMi/JYAAAAgLALXnAyS4HlgtKjOBYAAABgj/q7DnBwgfg1ClyZXazA1pr629/+\nZhUUsMslAAAAwquysvLzk08+ecyeHxnQnwZ4sAJL2jQo0PiOVGBrS0lSQUGBZsyY0Y/TIxE9/fTT\nmj9/frSHgRhDXcCEuoAJdQGTsrKyfXvz+P40wBMkLVNg7cgWBdblbOjH+ZAEysvL9/wgJB3qAibU\nBUyoC9ihPw3wW2IhcwAAAMSZlGgPAMmlpKQk2kNADKIuYEJdwIS6gB1ogBFR48ePj/YQEIOoC5hQ\nFzChLmAHGmBEVGlpabSHgBhEXcCEuoAJdQE70AADAAAgqTjCdeLVq1dbLIMGAACAcCsrK1NJSUmP\n+1pmgAEAAJBUaIARUWS3YEJdwIS6gAl1ATvQAAMAACCpkAEGAABAXCMDDAAAAHSDBhgRRXYLJtQF\nTKgLmFAXsAMNMAAAAJIKGWAAAADENTLAAAAAQDdogBFRZLdgQl3AhLqACXUBO9AAAwAAIKmQAQYA\nAEBcIwMMAAAAdIMGGBFFdgsm1AVMqAuYUBewAw0wAAAAkgoZYAAAAMQ1MsAAAABAN2iAEVFkt2BC\nXcCEuoAJdQE70AADAAAgqZABBgAAQFwjAwwAAAB0gwYYEUV2CybUBUyoC5hQF7ADDTAAAACSChlg\nAAAAxDUywAAAAEA3aIARUWS3YEJdwIS6gAl1ATvQAAMAACCpkAEGAABAXCMDDAAAAHSDBrgfmpok\ny4r2KOIL2S2YUBcwoS5gQl3ADjTAe2BZ0iOPpKm+vvN9S5dmaMKEXJ1xRpbuvDNd77zjVFNT5McI\nAACAniMD3I36eumii7L06acpevTRWg0f3nm69+uvHXrnHZf+8x+X3nnHpU8/dWrp0jodd5w3CiMG\nAABIPr3NALvCOZh4tnFjis44I0tTprTouedqlJlpftxee1naay+vTjgh0PDW1hKLAAAAiGVEIAxe\nesmlo47K0RlnNGvp0voum1+T7GwpJ6fz7Y2NUkuLfWOMV2S3YEJdwIS6gAl1ATswA2zw0kupWras\nTnPn+mw75623Zuibb1J01131SuHXDgAAgKghAxwhdXXSiSdma/x4v267rV6OsP3kAQAAkgvrAMeo\nrCzpb3+r1fvvO3XFFZnkhAEAAKIk6RvgxsbIPVdOjuTx1Oqdd1y69trkbILJbsGEuoAJdQET6gJ2\nSNoG2O+XbrklQ6edlh3R583NtfT447Xy+SSffRFjAAAA9FBSZoDr6qRzz81SVVWKli2r1bBhSTgV\nCwAAkCBYB7gH7rknQ5YlPflkjdLSoj0aAAAARFLSRSBqaqR7703Xtdc20PxGAdktmFAXMKEuYEJd\nwA79bYBzJG2RdJkNY4mIdetcOuYYr8aO9Ud7KCHq6qTnn0+N9jAAAAASXn8jEFdKWiMpbkK08+b5\nNG9e7F19VlmZossuG6AdOxp0yinN0R5O2Bx88MHRHgJiEHUBE+oCJtQF7NCfBni8pEJJaxXGi+mS\nxd57+7ViRY1+9KMcpaVZOuEEb7SHBAAAkJD6E4H4naRrbRoHJI0b59c//lGjK68coKefTsw4BNkt\nmFAXMKEuYEJdwA59bYDnS/pE0ldi9tdWkyb59dhjtbrkkgH64ouku0YRAAAg7PoagZgt6QRJx0kq\nkORX4GK4R9s/6Pzzz1dRUZEkKTc3V1OmTGnL7gR/g4vEsd8vvfFGqRyOyDxff4/3379Fixe/qU2b\ndmmffeZGfTwccxzu4+BtsTIejjnmOHaPg7fFyng4js5x8O/l5eWSpHPOOUe9Ycfs7TWSaiTd3v7G\nWNoI4y9/Sde2bQ799rcR3PcYAAAAEdHbjTAS/jP2xkbpj3/M0Pz5XFQWC9r/5gYEURcwoS5gQl3A\nDi4bzvE/NpwjbJYvT9eUKT5Nm9YS7aEAAAAgBoTtArZYiEA0NUmzZuVq2bJazZpFAwwAAJCIiEC0\n8+ijaRo/viXum9/Nmx067bQs+XzRHgkAAED8S+gGOC1NWry4IdrD6LcRIyzV1Tl0//3p0R5Kv5Hd\nggl1ARPqAibUBexgRwY4Zp16amJsKexwSL//fb2OPjpHxx7brBEj4mbnaQAAgJiT0BngRPO732Xo\no4+ceuCBumgPBQAAIGaQAU5gl1zSqA8+cGrlyoSeuAcAAAgrGuA4kpEh3XlnvbKyoj2SviO7BRPq\nAibUBUyoC9gh4aYSv/7aoeHDLTmd0R5JeMydy1IQAAAA/ZFQM8AtLdIJJ+TorbcSrq9PGO33cgeC\nqAuYUBcwoS5gh4RqgJ98MlW5uZYOOohZUgAAAJglTAPs90u33pqpRYsa5Ajb2hboL7JbMKEuYEJd\nwIS6gB0SpgF+5plUDRhg6fDDk2v2d8mSDFVV0fEDAAD0VEI0wH6/9PvfZ+jyyxuTbva3utqha67J\njPYweozsFkyoC5hQFzChLmCHhGiALUv69a8bdeSR3mgPJeIWL27QK6+k6s03ufAPAACgJxKiAXY6\npR/+0Jt0s7+SlJMj/e539br00gFqjoOdn8luwYS6gAl1ARPqAnZIiAY42f3wh14VF7do6dKMaA8F\nAAAg5tEAJwCHQ7rllgZt2pQiy4r2aLpHdgsm1AVMqAuYUBewA8HRBFFU5Ncdd9RHexgAAAAxL65n\ngL/5xqEdO5Iw+BvHyG7BhLqACXUBE+oCdojrBvi22zL00ENp0R4GAAAA4kjcNsCWJa1alaojjki+\npc/iGdktmFAXMKEuYEJdwA5x2wB//HFg6BMm+KM8kthUUUE0BAAAwCRuG+Dg7G8yrv27J42N0rx5\nA/XFF7H3z0t2CybUBUyoC5hQF7BD7HVIPbR6daqOOMIX7WHEpIwM6Wc/a9Jtt7EuMAAAQEdx2QBb\nljR2bIsOPpj8b1fOO69JL7yQGnOzwGS3YEJdwIS6gAl1ATvEVnfUQw6HdOutDcrKivZIYldurqVf\n/IJZYAAAgI7isgFGz8TiLDDZLZhQFzChLmBCXcAOsdMZwXa5uZbuuadO2dkxvj8yAABABIVtDYXV\nq1dbM2bMCNfpAQAAAElSWVmZSkpKetzXMgMMAACApBJ3DfCVV2Zq82YW/41XZLdgQl3AhLqACXUB\nO8RVA1xV5dDDD6eroIBMKwAAAPomrhrgl15K1bx5XqWnR3sk8WnNGqfKy6P7T876jTChLmLine truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4lGX69vFzSmZSSUihSgzVAEaKYEGQVZRdUMDFdRV7\nwVVE17ayWMG6Ylu7or66CqiLawGsoC4qKq6KCOoPVFRCUUwjvcxknvePkJBJnmAymT7fz3FwwDMz\nmbmCl+HKnXPu27J582ZDAAAAQIywhroAAAAAIJgYgAEAABBTGIABAAAQUxiAAQAAEFMYgAEAABBT\nGIABAAAQUxiAAUSk3NxcvfLKK6EuwydHH320Xn755VCXAQAxiwEYAPZYuHChTjjhBI0cOVKHH364\nZs2apS1btgTktSwWS0Cet6NWr16t4447Tnl5eTr++OP1/vvvd/g5fvzxR5155pkaNmyYxo8fr8cf\nf9zr/pdeekm5ublev8aOHeuvTwEAOswe6gIAIFysW7dOZ599tvLy8uRyuXT77bfrrLPO0muvvabU\n1NRQl+d333//vS6++GKdd955mjZtml588UXNnj1by5cvV9++fdv1HHV1dTr//PPVr18/vfDCC9q0\naZOuueYaZWZm6o9//GPT43r06KEXX3yx6dpqZf0FQOjwFQhA2KutrdW1116rkSNHauzYsXrhhRe8\n7v/yyy81bNgwrVu3rum2119/XSNHjtTWrVvb/TqNK8D9+/dXbm6u/v73v6uwsNDref2loKBA559/\nvoYPH67jjjtOX3zxhd9f47csXbpU++23ny6//HL169dPV111lXr06KGlS5e2+znef/99bd++Xbfc\ncosGDRqkqVOnaurUqVq0aJHX46xWqzIyMpp+de3a1d+fDgC0GyvAAMLeww8/rPfee08PP/yw0tLS\nNH/+fK/7hw0bpksuuUR/+9vftGzZMpWXl2v+/PmaP3++9t9/f+3cuVPHHXdcm8//xBNP6OCDD251\ne2lpqSSpS5cufv18JGnRokW68cYbdfXVV2vevHm69tpr9frrr7frY5cvX6558+a1eX97h+mNGzdq\n1KhRXreNHj1aGzZsaNfHNz5Hdna2unXr1nTbIYccomXLlsntdstub/hnprCwUL/73e9ksViUl5en\nK664Qjk5Oe1+HQDwJwZgAGHv+eef18yZM3XYYYdJkubMmaNTTz3V6zEzZ87U2rVrdd1116moqEgT\nJkzQ1KlTJUndu3fX8uXL23z+5sNbI5fLpXvvvVejR482HY47a+rUqTrqqKMkSWeccYb++te/qqqq\nSomJib/5sRMmTNCIESM6XUNxcbFGjRqlDRs26Nxzz9WCBQvUtWvXDq14FxcXq2vXrqqpqdHkyZM1\nadIkHXrooaqvr9fu3buVmZmp/v376x//+IcGDhyooqIiPfLII5oxY4Zee+01paend/rzAICOYgAG\nENZKS0tVWlqqQYMGNd12wAEHmD72jjvu0KRJk5SSkuL1RiybzaY+ffq0+zUNw9ANN9yg4uJiPffc\nc74Xvw/NVz8b88WlpaXtGoCTkpKUlJTkt1oSExO13377dWql22q1qlevXsrMzJRhGF73DRs2TMOG\nDWu6Puigg3TUUUfplVde0bnnnuvzawKArxiAAYS1juyWsHnzZtXU1Kiurk5bt25Vbm6uJHUoAmEY\nhubNm6dPP/1UixYtUkZGRuc+gTY0RgOaazk4tmVfEQiLxdLuFdyMjAwVFxdrwIABTVvKvfTSS8rM\nzGzXx0tSenq6iouL5XA4tHjxYknSK6+8IpvNprS0NNOPSUpK0v77768dO3a0+3UAwJ8YgAGEtS5d\nuqhr167avHmzxo8fL6lh0G2pqKhIV111lS6//HL9+uuvuvzyy/Xiiy8qMTGxQxGIm266SR9//LEW\nLVqknj17+v8T8gN/RSDy8vK0evVqr9s+/fRTHXvssa0eW1BQoNraWu23335etx900EFauHChdu3a\npe7du0uSPvnkE+Xm5poO+VLDmxrz8/M1efLkTn8OAOALBmAAYe+UU07RM888o7y8PHXt2lV33nmn\n1/2GYWjOnDnKzc3V2WefLZfLpbVr1+rGG2/UggUL2h2BmD9/vt5++2098sgjstvtKigokNQwhDud\nTq/H5ubmavTo0a12OwgGf0Ug/vznP2vJkiW65557NG3aNL300kv69ddfdfLJJ7d67BVXXKFPP/1U\nmzZt8rr9yCOPVJ8+fXT99dfrb3/7mzZt2qQVK1bolltuaXrMfffdp+HDh6tv374qKyvTwoULZbVa\nNW3atE5/DgDgCwZgAGFv1qxZKigo0OzZs5WYmKhLL71U69evb7r/scce06ZNm5pWeePi4nT33Xdr\n+vTpOuyww7z2o92X559/XhaLRSeddJLX7bfffrtOOOGEpuvKykpJ5m+e81UoDsbo37+/HnzwQd15\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3ce12d0>"
"<matplotlib.figure.Figure at 0x7f16fb05a310>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4lNXd//HPTCZ7IJBMwiYRZAfZVNaqqCAWLeLyjIr6\nq23lUYRqtVbFrXVvbdUuViva1koVrVNrFfVRFDdQwQVBRHABIQoCSQgJCdlm5v79MUnIchKy3LNl\n3q/rykXuWe45CV/CN2c+9zkSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIRVQqQHAAA2CUj6\nWtL6SA+kA7ZJKlZsjh0AYo4z0gMAgCh2vaSPJZVK2iPpOUkjQvA6Vu1HNDhN0kZJlZI+lfT9Dpwj\nYPiYadcAAaCzaIABoGXfk3SfpImSTpaULmmFpJ6RHFQIjZT0rKT/Shor6cXaz4d24FxnSerd4OMN\nm8YIAAAQl1Ik/VXBmdmdki5WcJbxh7X3T5J0QNLUBs85t/bxgzvxuuNqX+cHnTiHydeSrpX0kqRy\nBWdgp9j8Gm3xe0mbm9z2laR72nmegKRptowIAAAAkqQ7JX0n6UQFZyrfUeMGWJKuUbCxzJSUJ2mv\npAtq78uTVCZpfwsf32vhdU+sfZ2W7u+obZK+VbCxHibpTUmfteP5F6jlr2V/O86zStIjTW77m6S3\n23EOKfg92i6pQNJqSee38/kAAABoolDBGdM6U9W8AZak/5P0tKS3JD3a4PYESUe08pFieM1ESe8q\n2Jza7WtJv2lwfJaCX096G5+foda/nrb6XNKvFYx87JN0uqS71XxW+FAWKTgLP07SryT5JP2onecA\ngJBxRXoAANBOPSVlSdrQ4LZPWnjsDxVs3vZJmtXgdr+kre14TYekhyXlyP7Z3zpfNPh8b+2fWQpG\nIg6lrPbDLmUKNuX7Ovj8hs38Okn9JV0t6R+dGxYA2IOL4ADEmvasljBaUqqkXDXO/rYnAuGQ9BdJ\nx0s6ScHVIELBZ7jN0cbnthaBKG3HGPYo2OR/Jmm8gtGHHEm723EOk7WSBnbyHABgG2aAAcSafQpG\nIMYoGHFQ7edN5Up6QtINkvpK+pekYxScUd3RwnPq7Gzw+Z8lzZB0gqRvOjHuUHpO0ns2nOcDBZdB\na2iapP8YHttbwajItjacd6TaN+MOAACAJm5T8CK4kxS8CG6VGmeAHZJe0cEGOVHSh5Iea+frPKhg\nM3yMGi/pZcoIB9Txpb6+VuP88gm158vr4Pk6aoSkKkl31X5+t6QKSUMMj31TwTE2NUfSAgV/wRgs\n6acKrin8Y/uHCwAAED+SFFytoOEyaH4dbCKvl7RLwVngOkMVjARc1I7XCdSet+mmDk0vtsuovX1p\ne76IBkwNsF/hb4ClgxthVKn1jTDeUHCMTZ2iYD57v4Ixk7Vq/v0CgJjmV3CXpI8l/SHCYwGASDlN\nwZ+HR0Z6IACA0GvP+pIA0FXdq2DeGAAQB2iAAQAAEFdqJH2k4AUox0V4LAAAAEDI1V1gcoyCywMl\nR3AsAAAAwCF1dh3gugXhP1TwSuwBCm6lqaeeespyu92dPD0AAADQusLCwi3nnXfe4EM/MqgzDXBP\nBdd2rFCw8e0nKb/uTrfbraOOOqoTp0dXtGzZMs2ePTvSw0CUoS5gQl3AhLqAydq1awe15/GdaYCH\nS3pUwbUi/Qquw1nRifMhDuTn5x/6QYg71AVMqAuYUBewQ2ca4PcUbIIBAACAmOGM9AAQX2bMmBHp\nISAKURcwoS5gQl3ADjTACKthw4ZFegiIQtQFTKgLmFAXsAMNMMJq1apVkR4CohB1ARPqAibUBexA\nAwwAAIC44gjViV977TWLZdAAAAAQamvXrtWMGTPa3NcyAwwAAIC4QgOMsCK7BRPqAibUBUyoC9iB\nBhgAAABxhQwwAAAAYhoZYAAAAKAVNMAIK7JbMKEuYEJdwIS6gB1ogAEAABBXyAADAAAgppEBBgAA\nAFpBA4ywIrsFE+oCJtQFTKgL2IEGGAAAAHGFDDAAAABiGhlgAAAAoBU0wAgrslswoS5gQl3AhLqA\nHWiAAQAAEFfIAAMAACCmkQEGAAAAWkEDjLAiuwUT6gIm1AVMqAvYgQYYAAAAcYUMMAAAAGIaGWAA\nAACgFTTACCuyWzChLmBCXcCEuoAdaIABAAAQV8gAAwAAIKaRAQYAAABaQQOMsCK7BRPqAibUBUyo\nC9iBBhgAAABxhQwwAAAAYhoZYAAAAKAVNMAIK7JbMKEuYEJdwIS6gB1ogAEAABBXyAADAAAgppEB\nBgAAAFpBA4ywIrsFE+oCJtQFTKgL2IEGGAAAAHGFDDAAAABiGhlgAAAAoBU0wAgrslswoS5gQl3A\nhLqAHWiAAQAAEFfIAAMAACCmkQEGAAAAWkEDjLAiuwUT6gIm1AVMqAvYobMNcDdJOyVdbcNYAAAA\ngJDrbAN8o6QPJVk2jAVx4Nhjj430EBCFqAuYUBcwoS5gh840wMMk5Uj6SCG8mA4AAACwU2ca4F9L\nusWmcSBOkN2CCXUBE+oCJtQF7NDRBni2pC8kfSNmfwEAABBDXB183kRJZ0uaI8ktKaDgxXBPNnzQ\nggULlJeXJ0nKzMzU6NGj67M7db/BccwxxxzX3RYt4+GYY46j97jutmgZD8eROa77PD8/X5I0b948\ntYcds7e/krRf0n0Nb2QjDAAAAIQDG2EgqjX8zQ2oQ13AhLqACXUBO7hsOMetNpwDAAAACIuQXcBG\nBAIAAADhQAQCAAAAaAUNMMKK7BZMqAuYUBcwoS5gBxpgAAAAxBUywAAAAIhpZIABAACAVtAAI6zI\nbsGEuoAJdQET6gJ2oAEGAABAXCEDDAAAgJhGBhgAAABoBQ0wworsFkyoC5hQFzChLmAHGmAAAADE\nFTLAAAAAiGlkgAEAAIBW0AAjrMhuwYS6gAl1ARPqAnagAQYAAEBcIQMMAACAmEYGGAAAAGgFDTDC\niuwWTKgLmFAXMKEuYAcaYAAAAMQVMsAAAACIaWSAAQAAgFbQACOsyG7BhLqACXUBE+oCdqABBgAA\nQFwhAwwAAICYRgYYAAAAaAUNMMKK7BZMqAuYUBcwoS5gBxpgAAAAxBUywAAAAIhpZIABAACAVtAA\nI6zIbsGEuoAJdQET6gJ2oAEGAABAXCEDDAAAgJhGBhgAAABoBQ0wworsFkyoC5hQFzChLmAHGmAA\nAADEFTLAAAAAiGlkgAEAAIBW0AAjrMhuwYS6gAl1ARPqAnagAQYAAEBcIQMMAACAmEYGGAAAAGgF\nDTDCiuwWTKgLmFAXMKEuYAcaYAAAAMQVMsAAAACIaWSAAQAAgFbQACOsyG7BhLqACXUBE+oCduho\nA5wt6QNJ6yStl3SObSMCAAAAQqijGWCXpCRJBxRshjdJ6i0pUPcAMsAAAAAIh/ZmgF0dfB1f7Yck\n9ZRU1cHzAAAAAGHVmQxwhqQNkj6RdLkazP4CLSG7BRPqAibUBUyoC9ihMw1wmaTRko6SdI+kdFtG\nBAAAAIRQRyMQDW2WtF3SCEkfNrxjwYIFysvLkyRlZmZq9OjROvbYYyUd/A2OY4455rjutmgZD8cc\ncxy9x3W3Rct4OI7Mcd3n+fn5kqR58+apPTp6EVxfBXO/RQpe/PahpLG1x5K4CA4AAADhEa6NMPIk\nvaFg/vdVSVerQfMLtKThb25AHeoCJtQFTKgL2MHVweetljTGzoEAAAAA4dDRCMQhEYEAAABAOIQr\nAgEAAADEJBpghBXZLZhQFzChLmBCXcAONMAAAACIK2SAAQAAENPIAAMAAACtoAFGWJHdggl1ARPq\nAibUBexAAwwAAIC4QgYYAAAAMY0MMAAAANAKGmCEFdktmFAXMKEuYEJdwA40wAAAAIgrZIABAAAQ\n08gAAwAAAK2gAUZYkd2CCXUBE+oCJtQF7EADDAAAgLhCBhgAAAAxjQwwAAAA0AoaYIQV2S2YUBcw\noS5gQl3ADjTAAAAAiCtkgAEAABDTyAADAAAAraABRliR3YIJdQET6gIm1AXsQAMMAACAuEIGGAAA\nADGNDDAAAADQChpghBXZLZhQFzChLmBCXcAONMAAAACIK2SAAQAAENPIAAMAAACtoAFGWJHdggl1\nARPqAibUBexAAwwAAIC4QgYYAAAAMY0MMAAAANAKGmCEFdktmFAXMKEuYEJdwA40wAAAAIgrZIAB\nAAAQ08gAAwAAAK2gAUZYkd2CCXUBE+oCJtQF7EADDAAAgLhCBhgAAAAxjQwwAAAA0AoaYIQV2S2Y\nUBcwoS5gQl3ADjTAAAAAiCtkgAEAABDTyAADAAAArYiaBri0VNq2LWqGgxAhuwUT6gIm1AVMqAvY\noTMdZz9JqyR9KukjSTM6M5CHH07Rb3+b0plTAAAAAIfUmQxwrqRekjZIypP0rqTD6u5sTwa4tFQ6\n5phMvfTSfg0eHOjEkAAAABBv2psBdnXitfbUfkhSvqQkSYmSatp7or/+NUUnnlhD8wsAAICQsyt0\ne4qCMYh2N7/790sPPZSsq6+utGkoiGZkt2BCXcCEuoAJdQE7dGYGuE5vSfdIOr3pHQsWLFBeXp4k\nKTMzU6NHj9axxx4r6WABf/jhdE2b5tOePW9rzx41u5/jrnVcJ1rGw3F0HG/YsCGqxsNxdBzXiZbx\ncBwdx/y84LjOqlWrlJ+fL0maN2+e2qOz6wCnSHpV0u2Slje8o60Z4Px8pxwOqX//g/GHuXPTdfPN\nFRo5kkgEAAAAWhfOdYAdkh6VtFRNmt/2yMsLNGp+JWnkSL+eeiq5E0MDAAAAzDrTAH9P0tmSLpH0\nce1HbzsGdd551fJ6k+Tz2XE2RJOmb20CEnUBM+oCJtQF7ODqxHNXKbjyg+2GDAnOCr/+ukLine truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VGXe//HPTCaTCoFkEnqkV+lSRBQVREEBxZ8F1xUL\nqxRxLauiWLA+i66uri4ruo+uqMgDa0FWVlEUBRUsCCIIKgihk0Z6mcmc3x8hISEnIeVkSub9uq5c\ncqacuRO+hu/c8zn3bduxY4chAAAAIETY/T0AAAAAwJdogAEAABBSaIABAAAQUmiAAQAAEFJogAEA\nABBSaIABAAAQUmiAATQJPXv21LvvvuvvYdTLueeeq3feecffwwCAkEEDDADVWLhwoS6++GINGjRI\np59+umbMmKGdO3c2ymvZbLZGOW9drVmzRhdeeKH69u2riy66SJ9//nmdz9GzZ88qX+vWrWuE0QJA\n/dAAA0A1Nm7cqGuvvVbLli3TK6+8ooKCAk2dOlVZWVn+Hlqj+PXXX3XzzTdrzJgxWr58uUaNGqVZ\ns2bpt99+q/O5nn/+eX3xxRflX8OGDWuEEQNA/dAAAwg6RUVFmjt3rgYNGqSRI0dq2bJlle7fvHmz\n+vfvr40bN5bftnLlSg0aNEh79uyp9euUzQB36dJFPXv21N133620tLRK57VKamqq/vCHP2jAgAG6\n8MIL9f3331v+GiezdOlStW/fXrfddps6d+6sO++8U61bt9bSpUvrfK7mzZsrISGh/Cs8PLwRRgwA\n9ePw9wAAoK4WLFigzz77TAsWLFCLFi00b968Svf3799fs2fP1p/+9CctX75cOTk5mjdvnubNm6dT\nTjlFBw4c0IUXXljt+f/5z39q8ODBVW4vm/lt3ry5pd+PJL322mt66KGHdM899+jBBx/U3LlztXLl\nylo997333tODDz5Y7f21baa3bNmi0047rdJtQ4YM0Q8//FCr51d09913q6CgQMnJyfr973+vCRMm\n1PkcANBYaIABBJ0lS5Zo2rRpGj58uCTprrvu0lVXXVXpMdOmTdP69et13333KT09XaNHj9bEiRMl\nSa1atdJ7771X7fmTkpKq3OZ2u/XMM89oyJAhps1xQ02cOFHnnHOOJOn3v/+9brnlFuXn5ys6Ovqk\nzx09erQGDhzY4DFkZGTotNNO0w8//KDrr79e8+fPV8uWLes843377bdr2LBhcjqdWr16te6++265\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3fd0190>"
"<matplotlib.figure.Figure at 0x7f16fb088e90>"
]
}
],
"prompt_number": 24
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Final Thoughts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Near the beginning of the chapter I used `numpy.polyfit()` to fit a straight line to the weight measurements. It fits a n-th degree polynomial to the data using a 'least squared fit'. How does this differ from the g-h filter?\n",
"\n",
"Well, it depends. We will eventually learn that the Kalman filter is optimal from a least squared fit perspective. However, `polyfit()` fits a polynomial to the data, not an arbitrary curve, by minimizing the value of this formula:\n",
"$$E = \\sum_{j=0}^k |p(x_j) - y_j|^2$$\n",
"\n",
"I assumed that my weight gain was constant at 1 lb/day, and so when I tried to fit a polynomial of $n=1$, which is a line, the result very closely matched the actual weight gain. But, of course, no one consistantly only gains or loses weight. We flucuate. Using 'polyfit()' for a longer series of data would yield poor results. In contrast, the g-h filter reacts to changes in the rate - the $h$ term controls how quickly the filter reacts to these changes. If we gain weight, hold steady for awhile, then lose weight, the filter will track that change automatically. 'polyfit()' would not be able to do that unless the gain and loss could be well represented by a polynomial.\n",
"\n",
"Another advantage of this form of filter, even if the data fits a *n*-degree polynomial, is that it is *recursive*. That is, we can compute the estimate for this time period knowing nothing more than the estimate and rate from the last time period. In contrast, if you dig into the implementation for `polyfit()` you will see that it needs all of the data before it can produce an answer. Therefore algorithms like `polyfit()` are not well suited for real-time data filtering. In the 60's when the Kalman filter was developed computers were very slow and had extremely limited memory. They were utterly unable to store, for example, thousands of readings from an aircraft's inertial navigation system, nor could they process all of that data in the short period of time needed to provide accurate and up-to-date navigation information. The Kalman filter only needs to store the last estimate and a few related parameters, and requires only a relatively small number of computations to generate the next estimate. Today we have so much memory and processing power that this advantage is somewhat less important, but at the time the Kalman filter was a major breakthrough not just because of the mathematical properties, but because it could (barely) run on the hardware of the day. \n",
"\n",
"This subject is much deeper than this short discussion suggests. We will consider these topics many more times throughout the book."
]
},
{
"cell_type": "heading",
"level": 2,
@@ -1362,7 +1433,7 @@
"source": [
"I encourage you to experiment with this filter to develop your understanding of how it reacts. It shouldn't take too many attempts to come to the realization that ad-hoc choices for $g$ and $h$ do not perform very well. A particular choice might perform well in one situation, but very poorly in another. Even when you understand the effect of $g$ and $h$ it can be difficult to choose proper values. In fact, it is extremely unlikely that you will choose values for $g$ and $h$ that is optimal for any given problem. Filters are *designed*, not selected *ad hoc*. \n",
"\n",
"In some ways I do not want to end the chapter here, as there is a significant amount that we can say about selecting $g$ and $h$. But the g-h filter in this form is not the purpose of this book. Designing the Kalman filter requires you to specify a number of parameters - indirectly they do relate to choosing $g$ and $h$, but you will never refer to them direcly when designing Kalman filters. Furthermore, due to your choices $g$ and $h$ will vary at every time step in a very non-obvious manner. "
"In some ways I do not want to end the chapter here, as there is a significant amount that we can say about selecting $g$ and $h$. But the g-h filter in this form is not the purpose of this book. Designing the Kalman filter requires you to specify a number of parameters - indirectly they do relate to choosing $g$ and $h$, but you will never refer to them direcly when designing Kalman filters. Furthermore, $g$ and $h$ will vary at every time step in a very non-obvious manner. "
]
},
{
@@ -1377,8 +1448,7 @@
"metadata": {},
"source": [
"missing: properties - recursive - markov - random variable\n",
"should we fit bayes into here, or just leave to the next chapter\n",
"chart showing recursive loop\n"
"should we fit bayes into here, or just leave to the next chapter"
]
}
],
+8 -2
View File
@@ -77,6 +77,8 @@ def plot_estimate_chart_1():
arrowprops=dict(arrowstyle='->', ec='r',shrinkA=6, lw=3,shrinkB=5))
plt.scatter ([0], [158], c='b')
plt.scatter ([1], [159], c='r')
plt.xlabel('day')
plt.ylabel('weight (lbs)')
plt.show()
@@ -88,9 +90,11 @@ def plot_estimate_chart_2():
plt.scatter ([0], [158.0], c='k',s=128)
plt.scatter ([1], [164.2], c='b',s=128)
plt.scatter ([1], [159], c='r', s=128)
plt.text (1.0, 158.8, "prediction ($\hat{x}_{t})$", ha='center',va='top',fontsize=18,color='red')
plt.text (1.0, 158.8, "prediction ($x_t)$", ha='center',va='top',fontsize=18,color='red')
plt.text (1.0, 164.4, "measurement ($z$)",ha='center',va='bottom',fontsize=18,color='blue')
plt.text (0, 157.8, "estimate ($\hat{x}_{t-1}$)", ha='center', va='top',fontsize=18)
plt.xlabel('day')
plt.ylabel('weight (lbs)')
plt.show()
def plot_estimate_chart_3():
@@ -107,10 +111,12 @@ def plot_estimate_chart_3():
plt.scatter ([0,1], [158.0,est_y], c='k',s=128)
plt.scatter ([1], [164.2], c='b',s=128)
plt.scatter ([1], [159], c='r', s=128)
plt.text (1.0, 158.8, "prediction ($\hat{x}_{t})$", ha='center',va='top',fontsize=18,color='red')
plt.text (1.0, 158.8, "prediction ($x_t)$", ha='center',va='top',fontsize=18,color='red')
plt.text (1.0, 164.4, "measurement ($z$)",ha='center',va='bottom',fontsize=18,color='blue')
plt.text (0, 157.8, "estimate ($\hat{x}_{t-1}$)", ha='center', va='top',fontsize=18)
plt.text (0.95, est_y, "new estimate ($\hat{x}_{t}$)", ha='right', va='center',fontsize=18)
plt.xlabel('day')
plt.ylabel('weight (lbs)')
plt.show()