Started altering to use filterpy project.

Not fully tested, but the multidimensional chapter is working.
This commit is contained in:
Roger Labbe committed 2014-07-14 21:46:59 -07:00
1 parent 212a1e1a85
commit 79301c9224
11 files changed
+289 -721

No files matched your search

+25 -52
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:c1819e9ca7da173dd60891f9141240e1487e969120eed3fa9b30207968d8eb4d"
"signature": "sha256:6e6749d931110e1edad026d2237ed80b25dbe6f60372d36194549b6f735220f0"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -41,7 +41,7 @@
" margin-right: auto;\n",
" }\n",
" div.text_cell code {\n",
" background: #FFFFFF;\n",
" background: transparent;\n",
" color: #000000;\n",
" font-weight: 600;\n",
" font-size: 13pt;\n",
@@ -248,13 +248,13 @@
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 1,
"prompt_number": 4,
"text": [
"<IPython.core.display.HTML at 0x2d74c90>"
"<IPython.core.display.HTML at 0x14a4490>"
]
}
],
"prompt_number": 1
"prompt_number": 4
},
{
"cell_type": "heading",
@@ -393,13 +393,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x44c8550>"
"<matplotlib.figure.Figure at 0x2793590>"
]
}
],
"prompt_number": 113
"prompt_number": 5
},
{
"cell_type": "markdown",
@@ -505,24 +505,24 @@
"cell_type": "code",
"collapsed": false,
"input": [
"from math import sin, cos, atan2\n",
"\n",
"def H_of (pos, pos_A, pos_B):\n",
" \"\"\" Given the position of our object at 'pos' in 2D, and two transmitters\n",
" A and B at positions 'pos_A' and 'pos_B', return the partial derivative\n",
" of H\n",
" \"\"\"\n",
" \n",
" from math import sin, cos, atan2\n",
"\n",
" theta_a = atan2(pos_a[1]-pos[1], pos_a[0] - pos[0])\n",
" theta_b = atan2(pos_b[1]-pos[1], pos_b[0] - pos[0])\n",
"\n",
" return np.mat([[-cos(theta_a), 0, -sin(theta_a), 0],\n",
" [-cos(theta_b), 0, -sin(theta_b), 0]])"
" return np.mat([[0, -cos(theta_a), 0, -sin(theta_a)],\n",
" [0, -cos(theta_b), 0, -sin(theta_b)]])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 114
"prompt_number": 6
},
{
"cell_type": "markdown",
@@ -535,6 +535,8 @@
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy.random import randn\n",
"\n",
"class DMESensor(object):\n",
" def __init__(self, pos_a, pos_b, noise_factor=1.0):\n",
" self.A = pos_a\n",
@@ -549,43 +551,13 @@
" ra = math.sqrt((self.A[0] - pos[0])**2 + (self.A[1] - pos[1])**2)\n",
" rb = math.sqrt((self.B[0] - pos[0])**2 + (self.B[1] - pos[1])**2)\n",
" \n",
" return (ra + random.randn()*self.noise_factor, \n",
" rb + random.randn()*self.noise_factor)"
" return (ra + randn()*self.noise_factor, \n",
" rb + randn()*self.noise_factor)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 115
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's write the code to compute $\\frac{\\partial\\mathbf{h}}{\\partial\\mathbf{x}}$."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def dist(a,b):\n",
" return math.sqrt ((a[0]-b[0])**2 + (a[1]-b[1])**2)\n",
"\n",
"def H_of (pos, pos_A, pos_B):\n",
" dist_a = dist(pos, pos_A)\n",
" dist_b = dist(pos, pos_B)\n",
" \n",
" return np.mat([[0, (pos[0]-pos_A[0])/dist_a, 0, (pos[1]-pos_A[1])/dist_a],\n",
" [0, (pos[0]-pos_B[0])/dist_b, 0, (pos[1]-pos_B[1])/dist_b]])\n",
" '''\n",
" return np.mat([[(pos[0]-pos_A[0])/dist_a, 0, (pos[1]-pos_A[1])/dist_a,0],\n",
" [(pos[0]-pos_B[0])/dist_b, 0, (pos[1]-pos_B[1])/dist_b,0]])\n",
" '''"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 116
"prompt_number": 10
},
{
"cell_type": "markdown",
@@ -600,6 +572,8 @@
"collapsed": false,
"input": [
"import math\n",
"from KalmanFilter import KalmanFilter\n",
"import numpy as np\n",
"\n",
"pos_a = (100,-20)\n",
"pos_b = (-100, -20)\n",
@@ -638,7 +612,7 @@
" # compute the difference in range between the nominal track and measured \n",
" # ranges\n",
" ra,rb = d.range_of(pos)\n",
" rx,ry = d.range_of((i+f1.x[0,0], i+f1.x[2,0]))\n",
" rx,ry = d.range_of((pos[0]+f1.x[0,0], pos[1]+f1.x[2,0]))\n",
" z = np.mat([[ra-rx],[rb-ry]])\n",
"\n",
" # compute linearized H for this time step\n",
@@ -658,8 +632,7 @@
"p1, = plt.plot (xs, ys, 'r--')\n",
"p2, = plt.plot (pxs, pys)\n",
"plt.legend([p1,p2], ['filter', 'ideal'], 2)\n",
"plt.show()\n",
"\n"
"plt.show()"
],
"language": "python",
"metadata": {},
@@ -667,13 +640,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAFyCAYAAAD8h7IZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOXB/vF7JjOTDUgkJAKBFBd2w6IsCioiLWERUAQL\nVFELWtlEjUsFfdUqbbVq3bUK7lgWi1YqIkFBBPSnAgoVwQ0MEUzCmo1kJsn8/lBSwmTPTGaeOd/P\ndb3X9Z7MOZMHbk598uSe59h27tzpFQAAAGAB9mAPAAAAAGgqTH4BAABgGUx+AQAAYBlMfgEAAGAZ\nTH4BAABgGUx+AQAAYBk1Tn4PHTqkSy+9VGPGjNHo0aO1YsUKSdKKFSuUlpamtLQ0rVmzpkkGCgAA\nADSWraZ9fktLS+XxeBQdHa1Dhw5pxIgRWrdunYYNG6alS5eqpKREkydPVkZGRlOOGQAAAGiQGld+\nHQ6HoqOjJUn5+flyuVz64osv1LFjR7Vs2VJt2rRR69attWPHjiYZLAAAANAYjtpOKCws1IQJE5SZ\nmakHH3xQ+/fvV2JiohYtWqS4uDglJiYqJydHXbp0aYrxAgAAAA1W6wfeYmNjtXz5ci1btkwPPPCA\nSkpKJEkTJkzQ8OHDJUk2my2wowQAAAD8oNaV32NOO+00tW3bVsnJyXrnnXcqvp6bm6vExESf87ds\n2aJWrVr5Z5QAAABAFfLz89WtW7c6n1/j5Dc7O1sul0snnXSScnNztWvXLp1yyin65ptvdPDgQZWU\nlCg7O7vKykOrVq105pln1v9PgKBbvny5Ro0aFexhoIHIz2zkZy6yMxv5mWvz5s31Or/Gye++fft0\n5513Vhz/8Y9/VEJCgtLT0zVx4kRJ0pw5cxowTISyzMzMYA8BjUB+ZiM/c5Gd2cjPOmqc/Pbq1UvL\nly/3+fqIESM0YsSIgA0KAAAACASe8AYfv/71r4M9BDQC+ZmN/MxFdmYjP+tg8gsfnTt3DvYQ0Ajk\nZzbyMxfZmY38rKPOuz34i9frVU5OjsrKypr6W4eliIgIJSUl+XW7ufXr1+vcc8/12/uhaZGf2cjP\nXGRnNvKzjiaf/Obk5Kh58+aKiYlp6m8dloqKipSTk6OTTz452EMBAAAIebadO3d6A/HGe/bsqXKr\ns71796pt27aB+JaWxd8pAACwqs2bN6t9+/Z1Pp/OLwAAACyDyS98rF+/PthDQCOQn9nIz1xkZzby\nC6ycAre+yikM9jAkMfn1MX/+fHXs2FEpKSlat25dxdfT09P14IMPVjr31ltvVUpKilq1aqUPPvig\nqYcKAAAQ0nIK3Hp8wx5Ne2NHyEx+6fwex+PxqEOHDsrIyKjXM6J79eqlxx57TOeff77Pa6NGjdJl\nl12mK664wp9DrSSU/04BAID15BS4tfiLbK39/pCGd07QuNQkxUc7A/K96tv5bfLdHkJZdna2iouL\n/brXnz+3IAMAAAhlJ056F4zrWnnSW14u2/798iYlBW2M1B5+cc455+icc86RJJ1yyikVtYdVq1Yp\nJSVFJ598subNm1fn93v44YeVkpKijz76SLfddptSUlI0ZMiQitcPHTqkP/zhD+rSpYt69+6tl19+\nudL1M2bM0O23367JkycrJSVFPXv2VEFBgX/+sLWg92Q28jMb+ZmL7MxGfo1zfL0h2mnXgnFdNbVv\nW5284B+KvuUWNRs/Xi3691d8u3ZqccEFUhCf98DK7y8++ugj7dmzR7169dLu3btlt//v54LMzEzN\nmDGjXqu4N910k2666SaNHj1al112mS6//PJKr1933XVKSkrSF198oX379mnkyJHq0aOHevXqVXHO\nkiVL9PTTT+ull17Sl19+KYeDuAAAQJAdPSp7ZqbsmZk68MNevZYfq9UJHTW8SyuflV7b4cMq79hR\npb/+tcpSUlSekiLFxgZx8Ex+K/F6a64/1/Z6Xa/76aef9N577+m7775TZGSkOnTooFGjRuntt9+u\nNPk977zzNHToUEnSGWec0aDv3RA84cZs5Gc28jMX2ZmN/I5zbFU2IsLnpeZDhihi+3bt65yql84b\nr9XJqRoZmaMFw1IUn3SSz/nFd9wR6NHWW8hNfqP++ldFP/CAz9eP3nqriv/4xzqdX925wXLiivGP\nP/4oSZUmumVlZRo7dmyl80477bTADw4AAFiWIyNDjm3bZP/hh59Xc3/4Qfa9e5W/erXKqlh4+/7F\n17TohxKt3XVYwzsnaH4AP8gWKCE3+S3+4x/rNXGt7/mNUV3tweVyqaya7srx9YljkpOTFRUVpe+/\n/77GKkVV1zYFnm9uNvIzG/mZi+zMZtX8HFu3ypafr9JevVQ+erTKf/UrlbdvL0VGVjqv1g+yGSTk\nJr+hrLraw+mnn66NGzdq8ODBPq8lJSVp+/btlb7WunVrDRgwQHfffbduvfVWuVwubd68Wc2aNVP3\n7t0DMnYAAGBhhYVVdm2L09NrvCycJr3HsNvDCU5ciR07dqxSUlL0+uuv6/HHH1dKSopmzpxZ6Zy5\nc+dq+fLlat++vf7v//6v0mszZszQ2rVr1b17d40ZM6bi6//4xz+0f/9+9e3bV506ddK9997rs3oc\nrG3SrPiTbzghP7ORn7nIzmzhmp/9m28Ue9VVanbllfW6rsrdG/olGz/xlXjIRVjg7xQAABzPtnev\noh94QM6331bxzJkqueYaKSam1uua8uEU/lLfh1yw8gsf7HVoNvIzG/mZi+zMFk75RT75pFqcd568\n8fHK++QTlcyeXevEN5xXek9E5xcAACCMlJ51lvLWrZM3ObnWc8Ox01sbag9hgL9TAABQHybWG6pT\n39oDK78AAACm8XrlfOcdeYYM8dmWrCZWXOk9EZ1f+Ain3pMVkZ/ZyM9cZGc2k/JzrFun5r/5jaLu\nv1/2n36q0zVW6vTWhpVfAAAAA0Rs3aroe+6RfdcuHZ07V55LLpFqeSAWK72+6PyGAf5OAQAIbxGf\nf65mkyapOD1dJVdcIblcNZ4fTp3e2tD5BQAACDNlPXvqyGef1WnLMlZ6a0bntwoDBgzQxo0bq319\n1KhReuWVVxr1Pfbt26eUlBS1bdtWI0aMaNR7+ZtJvSf4Ij+zkZ+5yM5sIZNfcbGUn+/7dZutxokv\nnd66Y/JbhY0bN2rAgAHVvm6z2Rr96OE2bdooMzNTDz30UKPeBwAAGK60VI7331fMjBmK69ZNrv/8\np86XMumtP2oPQeb1BqRy3Sjh+nxzqyA/s5GfucjObMHIz757tyKffFKut95Sefv2co8dq6Nz58pb\nh8/xUG9oOFZ+j3P33XcrJSVFrVq10gcffFDx9UOHDmnixIn61a9+pcmTJ8vtdleatC5fvlwDBgzQ\nqaeeqt/+9rfKzs6ueG3KlCnq0qWL2rdvr7S0NG3fvr1J/0wAACBEud3ytm6t/JUrlb96tUqmT691\n4stKb+Mx+T3O3XffrczMTLVr165SreHee+9VdHS0vv32W1122WX69NNPK17ftGmTZs+erSeffFLf\nfvutevTooRtvvLHi2p49e2rDhg3KzMzUgAEDNH369Cb/c9VXyPSe0CDkZzbyMxfZmS2Q+dl3767y\n6+WdOqk4PV3lp5xS63sw6fUfag91kJGRoWeffVZOp1MXXXSROnToUPHaq6++qokTJ6p3796SpBkz\nZuj000+Xx+OR0+nU9ddfX3HuhAkT9MQTTzT18AEAQBOzZWXJtWyZXMuWyZ6drbwPP5S3Vat6vw/1\nBv8Lucnv0Plb/PI+q6b29sv7SNKBAwfU6rh/sImJiRX//48//qiNGzfqtddeq/haZGSksrOz1aZN\nG82bN0///ve/dfDgQZWXl8vr9crr9Tb6A3OBRG/NbORnNvIzF9mZzV/5Od94Q1HPPiv7N9/Ic9FF\nOvqnP6l04EApIqJe78OkN3BCbvLrz0mrv7Rq1Uq5ubnq2LGjJCk3N7fitXbt2unmm2/WDTfc4HPd\n4sWL9fbbb+utt95ScnKyvvzyS51//vmVJr8ul0tlZWVN8wcBAACB5XKp+IYb5Bk8uNYHUVSFSW/g\n0fmtxvEfaEtLS9Nzzz0nt9ut5cuXa/dx3Z2JEyfqhRde0NatW+X1epWbm6s33nhDklRYWKjo6GjF\nxcUpPz9fDz/8sM/3Of300/X111/rwIEDAf8z1RW9NbORn9nIz1xkZ7Z65VdUJPtXX1X5kmfkSHnS\n0uo98aXT23SY/P6irKxM7du3V0pKin788UdNmjRJKSkpWrhwoe644w6VlJSoY8eOev3119WvX7+K\n6/r27av77rtPM2fOVIcOHTRkyBBt3bpVkvTb3/5W7dq1U7du3XTBBReob9++PnWHXr16acKECTrr\nrLOUkpKiw4cPN+mfGwAA1IHbLee77yrmD39QXLduivrHP/zytkx6m55t586dAdlods+ePTrzzDN9\nvr537161rcP+dag7/k4BAAgQj0cxt9wi53/+o/KOHeW+9FK5R4+WNympUW97Yr1hXGoSE94G2rx5\ns9q3b1/n80Ou8wsAABAynE6VnnXWz1uS1WOCVR06vcFH7QE+6K2ZjfzMRn7mIjuzfbFwoWxZWVW+\n5r7iikZPfKk3hA5WfgEAgCXZsrIUuWSJXP/6l/rn5qrs8cfladfOr9+Dld7Qw+QXPtir0mzkZzby\nMxfZmSdmzhw5331XhU89Jc8ll0h2//1CnElv6GLyCwAALKnwuecU9cgjP29L5qeJL5Pe0Nfknd9j\nTziDfwTi75PemtnIz2zkZy6yM1BkpIpvu02eUaManR+dXnM0+cpvXFycDh48qISEhKb+1mHp4MGD\niouLC/YwAACwJFZ6zdPk+/xK0oEDB1RSUhKIb2s5kZGR/CABAICfuRYtUlnXrirr2bPK19Line truncated
"text": [
"<matplotlib.figure.Figure at 0x4a48d50>"
"<matplotlib.figure.Figure at 0x2a57d10>"
]
}
],
"prompt_number": 117
"prompt_number": 14
},
{
"cell_type": "heading",
-131
View File
@@ -1,131 +0,0 @@
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 18 18:02:07 2013
@author: rlabbe
"""
import numpy as np
import scipy.linalg as linalg
import matplotlib.pyplot as plt
import numpy.random as random
class KalmanFilter:
def __init__(self, dim_x, dim_z, use_short_form=False):
""" Create a Kalman filter of dimension 'dim', where dimension is the
number of state variables.
use_short_form will force the filter to use the short form equation
for computing covariance: (I-KH)P. This is the equation that results
from deriving the Kalman filter equations. It is efficient to compute
but not numerically stable for very long runs. The long form,
implemented in update(), is very slightly suboptimal, and takes longer
to compute, but is stable. I have chosen to make the long form the
default behavior. If you really want the short form, either call
update_short_form() directly, or set 'use_short_form' to true. This
causes update() to use the short form. So, if you do it this way
you will never be able to use the long form again with this object.
"""
self.x = 0 # state
self.P = np.matrix(np.eye(dim_x)) # uncertainty covariance
self.Q = np.matrix(np.eye(dim_x)) # process uncertainty
self.u = np.matrix(np.zeros((dim_x,1))) # motion vector
self.B = 0
self.F = 0 # state transition matrix
self.H = 0 # Measurement function (maps state to measurements)
self.R = np.matrix(np.eye(dim_z)) # state uncertainty
self.I = np.matrix(np.eye(dim_x))
if use_short_form:
self.update = self.update_short_form
def update(self, Z):
"""
Add a new measurement to the kalman filter.
"""
# measurement update
y = Z - (self.H * self.x) # error (residual) between measurement and prediction
S = (self.H * self.P * self.H.T) + self.R # project system uncertainty into measurment space + measurement noise(R)
K = self.P * self.H.T * linalg.inv(S) # map system uncertainty into kalman gain
self.x = self.x + (K*y) # predict new x with residual scaled by the kalman gain
KH = K*self.H
I_KH = self.I - KH
self.P = I_KH*self.P * I_KH.T + K*self.R*K.T
def update_short_form(self, Z):
"""
Add a new measurement to the kalman filter.
Uses the 'short form' computation for P, which is mathematically
correct, but perhaps not that stable when dealing with large data
sets. But, it is fast to compute. Advice varies; some say to never
use this. My opinion - if the longer form in update() executes too
slowly to run in real time, what choice do you have. But that should
be a rare case, so the long form is the default use
"""
# measurement update
y = Z - (self.H * self.x) # error (residual) between measurement and prediction
S = (self.H * self.P * self.H.T) + self.R # project system uncertainty into measurment space + measurement noise(R)
K = self.P * self.H.T * linalg.inv(S) # map system uncertainty into kalman gain
self.x = self.x + (K*y) # predict new x with residual scaled by the kalman gain
# and compute the new covariance
self.P = (self.I - (K*self.H))*self.P # and compute the new covariance
def predict(self):
# prediction
self.x = (self.F*self.x) + self.B * self.u
self.P = self.F * self.P * self.F.T + self.Q
if __name__ == "__main__":
f = KalmanFilter (dim_x=2, dim_z=2)
f.x = np.matrix([[2.],
[0.]]) # initial state (location and velocity)
f.F = np.matrix([[1.,1.],
[0.,1.]]) # state transition matrix
f.H = np.matrix([[1.,0.]]) # Measurement function
f.P *= 1000. # covariance matrix
f.R = 5 # state uncertainty
f.Q *= 0.0001 # process uncertainty
measurements = []
results = []
for t in range (100):
# create measurement = t plus white noise
z = t + random.randn()*20
# perform kalman filtering
f.measure (z)
f.predict()
# save data
results.append (f.x[0,0])
measurements.append(z)
# plot data
p1, = plt.plot(measurements,'r')
p2, = plt.plot (results,'b')
p3, = plt.plot ([0,100],[0,100], 'g') # perfect result
plt.legend([p1,p2, p3], ["noisy measurement", "KF output", "ideal"], 4)
plt.show()
-136
View File
@@ -1,136 +0,0 @@
# -*- coding: utf-8 -*-
"""
Created on Thu May 1 19:48:54 2014
@author: rlabbe
"""
import math
import matplotlib.pyplot as plt
import noise
import numba
import numpy.random as random
class KalmanFilter1D(object):
def __init__ (self, x0, var):
self.mean = x0
self.variance = var
def estimate(self, z, z_variance):
self.mean = (self.variance*z + z_variance*self.mean) / (self.variance + z_variance)
self.variance = 1. / (1./self.variance + 1./z_variance)
def project(self, u, u_variance):
self.mean += u
self.variance += u_variance
def _fixed_error_kf(measurement_error, motion_error, noise_factor = 1.0):
mean = 0
sig = 1000
measurements = [x for x in range(100)]
f = KalmanFilter1D (mean,sig)
ys = []
errs = []
xs = []
for i in range(len(measurements)):
r = noise.white_noise (noise_factor)
z = measurements[i] + r
f.estimate (z, measurement_error)
xs.append(z)
ys.append(f.mean)
errs.append (f.variance)
f.project (1, motion_error)
plt.clf()
p1, = plt.plot (measurements, 'r')
p2, = plt.plot (xs,'g')
p3, = plt.plot (ys, 'b')
plt.legend ([p1,p2,p3],['actual', 'measurement', 'filter'], 2)
#plt.errorbar (x=range(len(ys)), color='b', y=ys, yerr=errs)
plt.show()
def _varying_error_kf(noise_factor=1.0):
motion_sig = 2.
mean = 0
sig = 1000
measurements = [x for x in range(100)]
f = KalmanFilter1D (mean,sig)
ys = []
errs = []
xs = []
for i in range(len(measurements)):
r = random.randn() * noise_factor
m = measurements[i] + r
f.estimate (m, abs(r*10))
xs.append(m)
ys.append(f.mean)
errs.append (f.variance)
f.project (1.0, motion_sig)
plt.clf()
plt.plot (measurements, 'r')
plt.plot (xs,'g')
plt.errorbar (x=range(len(ys)), color='b', y=ys, yerr=errs)
plt.show()
def _test_sin ():
sensor_error = 1
movement = .1
movement_error = .1
pos = (1,500)
zs = []
ps = []
filter_ = KalmanFilter1D(pos[0],pos[1])
m_1 = filter_.mean
for i in range(300):
filter_.project(movement, movement_error)
Z = math.sin(i/12.) + math.sqrt(abs(noise.white_noise(.02)))
movement = filter_.mean - m_1
m_1 = filter_.mean
zs.append(Z)
filter_.estimate (Z, sensor_error)
ps.append(filter_.mean)
p1, = plt.plot(zs,c='r', linestyle='dashed')
p2, = plt.plot(ps, c='b')
plt.legend([p1,p2], ['measurement', 'filter'], 2)
plt.show()
if __name__ == "__main__":
if 0:
# use same seed to get repeatable results
random.seed(10)
if 1:
plt.figure()
_varying_error_kf ()
if 1:
plt.figure()
_fixed_error_kf(measurement_error=1.,
motion_error=.1,
noise_factor=50)
if 1:
plt.figure()
_test_sin()
+105 -142
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:cacd3ef5d9830b08d539ac3933475779ace5170a2903b1fce9e7afb6e87e4362"
"signature": "sha256:8308d6b4e959bab21d85e3e32855ed8611242c5db237c72712607673761dd677"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -248,13 +248,13 @@
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x20207d0>"
"<IPython.core.display.HTML at 0x2dddcd0>"
]
}
],
"prompt_number": 5
"prompt_number": 1
},
{
"cell_type": "heading",
@@ -528,7 +528,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x28053d0>"
"<matplotlib.figure.Figure at 0x4450250>"
]
}
],
@@ -572,7 +572,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x27f34d0>"
"<matplotlib.figure.Figure at 0x4661350>"
]
}
],
@@ -660,7 +660,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF/CAYAAABKRQ+VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHBpJREFUeJzt3XuMnXWBPvDnzLTTewstWCi2Fkq3sGX4lYpEERdYSUVi\nGy6imLo1alekird4zUaMlz+8IMSYuGtXg6iwSJRgu1kJIhdFDcZWoGhb5Latl7ZTp6U3WqYz8/vD\nZbTS6Tsgc873hc8nIeGdczrnS/N0+nDmOWca69ev7w8AALzAtbX6AAAAUALFGAAAohgDAEASxRgA\nAJIoxgAAkEQxBgCAJMmIVh/gKd3d3dm9e3erjwEAwPNYR0dHpk6detDbiinGu3fvzvz581t9DHia\nlStXZuHCha0+BhyUfFIq2aRUq1evHvQ2UwqosGHDhlYfAQYln5RKNqkjxRgAAKIYQ6Vzzjmn1UeA\nQcknpZJN6kgxhgpz5sxp9RFgUPJJqWSTOlKMocLdd9/d6iPAoOSTUskmdaQYAwBAFGOodMYZZ7T6\nCDAo+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy\n+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRU\nskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkd\nKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYA\nABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDF\nGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZ\nyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy\n+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRU\nskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkd\n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\nve992blzZzo6OvLBD34wp59++rM7McAL1K9+1Z6LLx6f7u6/fB3u7m7ks58dk6uvHp3rrtuVs8/e\n79ljgGdpSBvjz372s3nf+96X0aNHP6sH+dOf/pStW7dmzpw5+cMf/pBLLrkkP/7xjw+4j40xwOAe\ne6wtCxZMyNatg3+jb9So/tx66450dnrHIIDB/N0b45e+9KW59tprM2XKlDT+6qmIRqORCy+8sPLX\nT5kyJVOmTEmSTJs2LT09Penp6cnIkSOH8vAAL3j33tt+yFKcJPv2NXLrrR3p7PRTSQGejSFtjFet\nWpVjjz02M2fOzLHHHjvwz8yZM5/xA/7kJz/J3LlzlWJqw06OVtu/P7nmmo4h3fdrXxuVzZttKWg9\nXzupoyE9Yzxt2rQcd9xxmTx58tOeMX4murq68vnPfz5f+cpXDnr7smXLMmPGjCTJpEmT0tnZOfAj\nJZ/6A+batWvXL7TrNWvWZ/v2UzMUjz/eyIYNf8xvf/tQMed3/cK8fkop53H9wr1es2ZNHn/88STJ\nhg0bsnTp0gxmSBvjK6+8ctDbhvLiuyTZt29f3vrWt2bZsmUDh/1rNsYAB9fXl7ztbeOyYkX1s8bH\nHdebW2/dkcmTm3AwgBr6uzfGQy2/g+nv78/HPvaxvO51rztoKQZgcG1tyZIl+4ZUjN/73r1KMcCz\nNOT3MT6Ym266aUj3W7VqVW699dbceOONOf/883P++eenq6vr73loaJq//bYgtMI//mNvTjll/yHv\nM3VqX17xikPfB5rF107qaEjPGA/mgQceGNK7Upx66ql54IEH/p6HAnhBO+qo/ixfvjuXXjo2q1c/\n/cXLxxzTm+uv35Xjj/dWbQDP1qDF+I477sjZZ5+dJLntttsOep/e3t7hORUUxPyHUsya1Zfrrtud\ntWvbc/31HXn00fYceWRf/uVf9uWkk3ozfboffUc5fO2kjgYtxjt37hz495/85Cc5+eSTm3IgAAY3\ndWp/pk7dn7PO2p+9e5NRo+In3QE8RwYtxosWLRr49/b29lx00UVPu8+vf/3r4TkVFOTuu+/2zAdF\nGj1aPimXbFJHQ3rx3Rve8IaDfnywt7oAAIC6OeT7GH/5y1/O5Zdf3pSDeB9jAACG26Hex/iQzxhv\n27ZtWA4EAAClqZxSdHd3H/IfeL7zXpyUTD4plWxSR4d8H+Oenp5cffXVh/wEn/70p5/TAwLine truncated
"text": [
"<matplotlib.figure.Figure at 0x2a5c7d0>"
"<matplotlib.figure.Figure at 0x4450110>"
]
}
],
@@ -687,7 +687,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x29831d0>"
"<matplotlib.figure.Figure at 0x46d4b90>"
]
}
],
@@ -714,7 +714,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2924e10>"
"<matplotlib.figure.Figure at 0x4688310>"
]
}
],
@@ -745,7 +745,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2b7e110>"
"<matplotlib.figure.Figure at 0x4653b50>"
]
}
],
@@ -798,7 +798,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtYlGXi//HPAMIIggfETFE3y6RfKaLiCfGEeSrN7ayl\nq6bf0rU0rdS01E1X2ZXvt5ObZruVe5VmZW1WstmWKZalZaWlZicOmoiZioKcf38gs44wOMgNzDPz\nfl1XV87MM8/c8+GBubn5zDO2/fv3lwgAAADwEX51PQAAAACgNjEBBgAAgE9hAgwAAACfwgQYAAAA\nPoUJMAAAAHwKE2AAAAD4FCbAgAdYvHixoqKiFBUVpTFjxtT1cIz59NNPFRUVpUOHDjldv3fvXsfz\nreh2lFq/fr2ioqIqvC0qKkpvvvlmjT5+RkaGoqKitGPHjhp9nNrmrc8LgPuYAAPVdP5EpKCgQFOn\nTtXgwYOVmZnp1j6mT5+ulJQUjR8/XjabraaGasy5k9ey/6666qpyz7dz587atm2bmjdv7nT9lVde\nqW3btunVV1+94GMNGDBATz/9tNHxV9WAAQMczzMmJkY33HCDXnvttTod07Zt2zR06NCLvv/s2bMv\n+MtWixYttG3bNnXq1OmiH6c6KvoFoK4nrzX9i0deXp7+7//+T9dee606duyovn376v7779eJEyec\ntnvqqac0YMCAGhsH4O0C6noAgDcpLCzUjBkzdODAAa1evVqXXHKJW/cLCQlRSEiIgoODVVJijc+m\nmTt3roYNG+Z0XZMmTZwu16tXT+Hh4eXu6+/vr/DwcOXm5tboGE2aMGGC7rrrLp06dUqvv/665s2b\np9DQUA0ePLhOxlNRrqb5+fnVyuNYRdn3Zk1+jy5evFjbtm3TggULdPnll+vgwYPauHGjcnNz1bBh\nwxp7XMDXsAIMGFI2+f3uu+/KTX6XLl2qoUOHKjo6Wj179tTcuXOVnZ3t9r7Xr1+vG264QaNGjVLP\nnj316quvKiEhQf3799d3330nScrPz9ecOXM0cOBAdejQQX369FFiYqLy8/Md+3nqqac0ZswYrVix\nQr169VLPnj31xBNPXNTzDQ0NVXh4uNN/ZavXX375ZbUrDmWrrocOHdLTTz/t2Nf5q8HPPvusEhIS\nFB0drZEjR+qDDz4ot6+oqCitWbNG8+bNU9euXdWlSxctX768SuMJDg5WeHi42rRpoxkzZqhNmzZ6\n7733HLeXrUy+9957mjp1qmJiYtS9e3enleLXX39dQ4cOVceOHTVs2LByK+Dffvutbr75ZnXo0EG3\n3nqrUlNTy42jQ4cOjizeeOONCsf63Xff6e6771bXrl3VtWtXTZw4UWlpaZJKV37LVjF37Njh2NfY\nsWMd98/KynL6+n322WflHiM7O1uzZ89W9+7dFR0drQkTJujHH3903F5Wf9m8ebMGDx6szp076777\n7lNOTo6bibunbJX4tddeU+/evdWlSxc98sgjTsf98ePHde+996pTp05KSEjQ5s2bnfbhzvdO2V85\nJGnOnDmObM5dDc7Pz9df/vIX9enTRzExMbr99tu1a9euKj2ff//73xo3bpzi4+PVokULxcbG6tFH\nH3X8FeWpp55SVFSUli9frkOHDjnGkZCQ4LSfL774QnfccYeio6PVv3//cs9nzJgxmj59uu6//35F\nR0crISFB7777bpXGClgZE2DAgMLCQj3wwAPav39/hSu/Z86c0bx58/TOO+9o+fLl2rVrlxYsWFCl\nxzh48KDmz5+vHj16KDExUcuXL1fnzp21Zs0aSaXVi8DAQC1ZskT//ve/tXTpUm3YsKHchHHPnj06\nefKk1q5dq4kTJ+qZZ57R119/XeXnXNkq2DXXXKNt27bpqaeeqvJ+y7z++utKSUlR8+bNNWHCBG3b\ntk3btm3ThAkTHNv87//+r15++WU9+uijeuedd3THHXfovvvu0zfffFNuf6tWrVLz5s21bt06Pf/8\n87rssssuemySFBgYqMLCwnLXJyUlqXv37nrzzTf19NNPKyIiQpL0yiuvaOnSpbr33nu1ceNGTZs2\nTX/+85/1/vvvS/pvdaZFixb617/+pXHjxmn16tXlKjEfffSRUlJSJKnCuswvv/yiO+64Q/7+/nrh\nhRf0yiuvqH///jp8+LAkad68eUpJSdHQoUMVExPjyPXc46Rp06ZOFZWKHmfRokX6/PPPtXz5cr36\n6quy2WyaPHmyioqKnLZbt26dli9frieffFJbtmzRSy+95HbGVfHGG2/o73//u55++ml9+OGHeuaZ\nZxy3PfbYY/rhhx+0evVqLVu2TP/85z+d7uvO9862bdscuc+dO9eR27k1lDlz5iglJUVJSUl66623\n1KdPH02YMMHtKpRU+ovlJ5984vKvI3fddZe2bdum8ePHq3nz5o5xnPuL1r59+zR+/HjFxcVpw4YN\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x29aba10>"
"<matplotlib.figure.Figure at 0x4682310>"
]
}
],
@@ -1101,7 +1101,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"As promised, the Kalman filter equations are already programmed for you. In many circumstances you will never have to write your own Kalman filter equations. We will look at the code later, but for now we will just import the code and use it. I have placed it in `KalmanFilter.py`, so let's start by importing it and creating a filter."
"As promised, the Kalman filter equations are already programmed for you. In many circumstances you will never have to write your own Kalman filter equations. We will look at the code later, but for now we will just import the code and use it. It lives in `filterpy.kalman` so let's start by importing it and creating a filter."
]
},
{
@@ -1109,13 +1109,13 @@
"collapsed": false,
"input": [
"import numpy as np\n",
"from KalmanFilter import KalmanFilter\n",
"dog_filter = KalmanFilter (dim_x=2, dim_z=2)"
"import filterpy.kalman as kf\n",
"dog_filter = kf.KalmanFilter (dim_x=2, dim_z=2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
"prompt_number": 15
},
{
"cell_type": "markdown",
@@ -1130,12 +1130,12 @@
"cell_type": "code",
"collapsed": false,
"input": [
"dog_filter.x = np.matrix([[0], [0]]) # initial state (location and velocity)\n",
"dog_filter.F = np.matrix([[1,1], [0,1]]) # state transition matrix\n",
"dog_filter.H = np.matrix([[1,0]]) # Measurement function\n",
"dog_filter.R = 5 # measurement noise\n",
"dog_filter.Q = 0 # process noise\n",
"dog_filter.P *= 500. # covariance matrix \n"
"dog_filter.x = np.array([[0], [0]]) # initial state (location and velocity)\n",
"dog_filter.F = np.array([[1,1], [0,1]]) # state transition matrix\n",
"dog_filter.H = np.array([[1,0]]) # Measurement function\n",
"dog_filter.R *= 5 # measurement noise\n",
"dog_filter.Q *= 0 # process noise\n",
"dog_filter.P *= 500. # covariance matrix "
],
"language": "python",
"metadata": {},
@@ -1181,19 +1181,20 @@
"collapsed": false,
"input": [
"from DogSensor import DogSensor\n",
"import filterpy.kalman as kf\n",
"\n",
"def dog_tracking_filter(R,Q=0,cov=1.):\n",
" dog_filter = KalmanFilter (dim_x=2, dim_z=2)\n",
" dog_filter.x = np.matrix([[0], \n",
" [0]]) # initial state (location and velocity)\n",
" dog_filter.F = np.matrix([[1,1],\n",
" [0,1]]) # state transition matrix\n",
" dog_filter.H = np.matrix([[1,0]]) # Measurement function\n",
" dog_filter.R = R # measurement uncertainty\n",
" dog_filter = kf.KalmanFilter (dim_x=2, dim_z=1)\n",
" dog_filter.x = np.array([[0], \n",
" [0]]) # initial state (location and velocity)\n",
" dog_filter.F = np.array([[1,1],\n",
" [0,1]]) # state transition matrix\n",
" dog_filter.H = np.array([[1,0]]) # Measurement function\n",
" dog_filter.R *= R # measurement uncertainty\n",
" dog_filter.P *= cov # covariance matrix \n",
" if np.isscalar(Q):\n",
" dog_filter.Q = np.matrix([[0,0],\n",
" [0,Q]])\n",
" dog_filter.Q = np.array([[0,0],\n",
" [0,Q]])\n",
" else:\n",
" dog_filter.Q = Q\n",
" return dog_filter\n",
@@ -1232,7 +1233,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
"prompt_number": 22
},
{
"cell_type": "markdown",
@@ -1300,7 +1301,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
"prompt_number": 23
},
{
"cell_type": "markdown",
@@ -1321,9 +1322,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2976710>"
"<matplotlib.figure.Figure at 0x4a10610>"
]
},
{
@@ -1331,11 +1332,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2989550>"
"<matplotlib.figure.Figure at 0x4534b50>"
]
}
],
"prompt_number": 20
"prompt_number": 24
},
{
"cell_type": "markdown",
@@ -1362,52 +1363,90 @@
"cell_type": "code",
"collapsed": false,
"input": [
"# -*- coding: utf-8 -*-\n",
"\"\"\"\n",
"Created on Fri Oct 18 18:02:07 2013\n",
"\n",
"@author: rlabbe\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"import scipy.linalg as linalg\n",
"import matplotlib.pyplot as plt\n",
"import numpy.random as random\n",
"\n",
"class KalmanFilter:\n",
"\n",
" def __init__(self, dim_x, dim_z):\n",
" \"\"\" Create a Kalman filter of dimension 'dim'\"\"\"\n",
" \n",
" def __init__(self, dim_x, dim_z, use_short_form=False):\n",
" \"\"\" Create a Kalman filter with 'dim_x' state variables, and\n",
" 'dim_z' measurements. You are responsible for setting the various\n",
" state variables to reasonable values; the defaults below will\n",
" not give you a functional filter.\n",
" \"\"\"\n",
"\n",
" self.x = 0 # state\n",
" self.P = np.matrix(np.eye(dim_x)) # uncertainty covariance\n",
" self.Q = np.matrix(np.eye(dim_x)) # process uncertainty\n",
" self.u = np.matrix(np.zeros((dim_x,1))) # motion vector\n",
" self.P = np.eye(dim_x) # uncertainty covariance\n",
" self.Q = np.eye(dim_x) # process uncertainty\n",
" self.u = np.zeros((dim_x,1)) # motion vector\n",
" self.B = 0\n",
" self.F = 0 # state transition matrix\n",
" self.H = 0 # Measurement function (maps state to measurements)\n",
" self.R = np.matrix(np.eye(dim_z)) # state uncertainty\n",
" self.I = np.matrix(np.eye(dim_x))\n",
" self.R = np.eye(dim_z) # state uncertainty\n",
" \n",
" # identity matrix. Do not alter this. \n",
" self._I = np.eye(dim_x)\n",
" \n",
" if use_short_form:\n",
" self.update = self.update_short_form\n",
"\n",
"\n",
" def update(self, Z):\n",
" def update(self, Z, R=None):\n",
" \"\"\"\n",
" Add a new measurement to the kalman filter.\n",
" Add a new measurement (Z) to the kalman filter. \n",
" \n",
" Optionally provide R to override the measurement noise for this \n",
" one call, otherwise self.R will be used.\n",
" \n",
" self.residual, self.S, and self.K are stored in case you want to\n",
" inspect these variables. Strictly speaking they are not part of the\n",
" output of the Kalman filter, however, it is often useful to know\n",
" what these values are in various scenarios.\n",
" \"\"\"\n",
" \n",
" if R is None:\n",
" R = self.R\n",
" elif np.isscalar(R):\n",
" R = np.eye(self.dim_z) * R\n",
"\n",
" # measurement update\n",
" y = Z - (self.H * self.x) # error (residual) between measurement \n",
" # and prediction\n",
" S = (self.H * self.P * self.H.T) + self.R # project system uncertainty into \n",
" # measurment space + measurement noise(R)\n",
" # error (residual) between measurement and prediction\n",
" self.residual = Z - self.H.dot(self.x)\n",
" \n",
" # project system uncertainty into measurement space \n",
" self.S = self.H.dot(self.P).dot(self.H.T) + R \n",
"\n",
" # map system uncertainty into kalman gain\n",
" self.K = self.P.dot(self.H.T).dot(linalg.inv(self.S)) \n",
"\n",
" K = self.P * self.H.T * linalg.inv(S) # map system uncertainty into kalman gain\n",
" # predict new x with residual scaled by the kalman gain\n",
" self.x = self.x + self.K.dot(self.residual) \n",
"\n",
" KH = self.K.dot(self.H)\n",
" I_KH = self._I - KH\n",
" self.P = (I_KH.dot(self.P.dot(I_KH.T)) + \n",
" self.K.dot(self.R.dot(self.K.T)))\n",
"\n",
" self.x = self.x + (K*y) # predict new x with residual scaled \n",
" #by the kalman gain\n",
" self.P = (self.I - (K*self.H))*self.P # and compute the new covariance\n",
"\n",
" def predict(self):\n",
" # prediction\n",
" self.x = (self.F*self.x) + self.u\n",
" self.P = self.F * self.P * self.F.T + self.Q"
" \"\"\" predict next position \"\"\"\n",
" \n",
" self.x = self.F.dot(self.x)\n",
" if self.B != 0:\n",
" self.x += self.B.dot(self.u)\n",
" self.P = self.F.dot(self.P).dot(self.F.T) + self.Q"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 21
"outputs": []
},
{
"cell_type": "heading",
@@ -1440,25 +1479,7 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2e8ae90>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF9CAYAAAAHja6eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VNXWwOHftPQChF5CAgnSO3JBlCIQCCKXIoIgWFBQ\nqoBIuRQVUBD8UEBBkKYUAUGq9CJdmoAiKCgQeifJJJl6vj8CkUhCZiYzmUxmvc+Tx8ycc/ZZk0Xi\nys6avVWnT59WEEIIIYQQwsup3R2AEEIIIYQQuYEUxkIIIYQQQiCFsRBCCCGEEIAUxkIIIYQQQgBS\nGAshhBBCCAFIYSyEEEIIIQQghbEQQgghhBCAFMZCCA9Svnz5tI8nn3ySTp06sXnzZrfH8uBj9+7d\nTr/P8ePHefHFF6latSoNGjRg0qRJWK1Wp98nK2azmY8++oh69epRo0YN+vTpw61bt+weZ/ny5TRt\n2pSqVavywgsvcPz48bRjFouFCRMm0KpVK6pXr06DBg149913uXr1qjNfihBCZEoKYyGERxkxYgR7\n9uxh0aJFlCtXjv79+6crrnLStGnT2LNnT9pH3bp1nTr+7du3ee211yhatCgrVqxg5MiRLFy4kGnT\npjn1PraYOnUqK1euZMKECXz77bdcvnyZAQMG2DXG3r17GTlyJN26dWPlypWUKVOGN954g3v37gFg\nMBg4ffo0/fr1Y9WqVUybNo0///yTHj16YLFYXPGyhBAiHSmMhRAeJTg4mLCwMKKiohgyZAhWq5Uj\nR464JZaQkBDCwsLSPnQ6nVPHX716NSkpKYwbN46oqChiYmLo3LkzixYtcup9smK1WlmyZAk9evTg\nmWeeoVKlSgwfPpyDBw/yxx9/2DzOwoULqV+/Pt26daNs2bJ88MEHGI1G1qxZA0BAQABz5swhJiaG\n0qVLU716dfr06cOZM2c4e/asq16eEEKk0bo7ACGEsIeipO5ibzKZ+P7771Gr1VSvXt2may9fvkyr\nVq0yPT579mxq1aplcyzvvfceycnJhIeH8/LLL9O6dWubr7XFiRMniIyMJCgoKO25ypUrM2fOHOLi\n4ihVqlSWY/To0YPDhw9neKxNmzaMGTMmyzHi4uK4d+9euq9NjRo10Gq1nDhxgnLlymX9YoBff/2V\nTp06pT329fWlatWqj53xfzCbHBISYtM9hBAiO6QwFkJ4lNGjR/PBBx9gMBiIjIxkwYIFNhfGRYoU\nYfXq1ZkeL1y4sM1xDBw4kLp16+Lj48PWrVt57733MJlMtGvXzuYxsnL79m1CQ0PTPZcvX760Y7YU\nxuPHj8dgMGR4LDAw0KY4HvQS58uXjwkTJrB582bWrl1LaGioXX3Gt27dIn/+/GzZsoXhw4czZ84c\n8ufPn+kYiYmJzJgxgzZt2lC0aFGb7yOEEI6SwlgI4VH69+9Ps2bNOHXqFMOGDePkyZPUrl3bpms1\nGo1NxaQt3nzzzbTPK1SowJUrV5g7d65TC+PHUalUNp1nT7FviwIFClC8eHE0Go3DYwQGBlK8eHH8\n/f2BjF+L0Wikf//+5M+fn/fff9/hewkhhD2kMBZCeJSwsDDCw8MJDw/n6tWrfPbZZzz//PNpM6mP\n4+xWiodVrFiR9evXO3RtZgoUKMDp06fTPXf37t20Y7ZwRitFWFhY2r3feOMN3njjDSwWC/fu3Us7\nZouwsDDu3LlDp06d+OGHH4DUme9ixYqlO89oNNKvXz/u3r3LvHnz8PPzs/keQgiRHVIYCyE8VqdO\nnfjyyy9ZsGAB/fr1y/J8Z7ZS/NvZs2cpWbKkw9dnpEqVKmzcuJHExMS0PuMTJ05QsGBBm+81btw4\njEZjhsdsbaUoVaoUoaGhHDp0KO0XhyNHjmA2m6latWq6cy0WC1euXCEwMJD8+fM/8noOHTqU9jgl\nJYXjx48TExOT9pzJZGLAgAHcvHmTefPmERwcbFOMQgjhDJq+ffuOcXcQQghhi2nTptG0aVPKly8P\npLZGJCQksHjxYrp27ZrlqhBqtZrQ0NBMP7Ra2+YKtmzZwr59+/Dx8UGv17N27Vq++uorBgwYQMWK\nFdOdu2LFCtq2bUuJEiWoUKGCXa83PDycJUuW8McffxAdHc3BgweZMmUKr7zyCnXq1LFpjKCgoExf\n74NWhqyoVCr0ej0LFizgiSeeICEhgQ8++IAyZcrQo0ePdOdevnyZpk2bcvv2bZo2bZruWL58+Zg+\nfTohISEEBgYyefJkLl26xIcffoifnx9ms5l+/fpx7tw5pkyZgkajISkpiaSkJHx8fLLVviGEELaQ\nGWMhhEfr0qULX3/9NcuWLaNbt245ck9fX1+WLFnCpEmTAIiIiODDDz/kv//97yPnJiUlAVCoUCG7\n71OgQAG+/vprxo0bR9u2bTGZTLRu3ZqePXtm7wU4oG/fvqSkpDBkyBAMBgMNGjSwu/e3fv36jB07\nli+//JJPPvmE8uXLM2vWrLQ3GF69epXt27ejUqmIjY1Nu06lUrFgwQKbfxkQQghHqU6fPq04enFi\nYiItWrTgtdde47XXXmP9+vV89tlnAAwdOpTGjRs7LVAhhPBE/fr14/LlyyxfvjzbY02dOpVvvvmG\nmTNnUqNGDSdEJ4QQ4mHZmjGeMWMGlStXRqVSYTQamTx5MsuWLcNgMNCtWzcpjIUQXk1RFH7++Wcm\nT57slPH69u1Lvnz5ZE1fIYRwEYcL47/++ovbt29TuXJlFEXh+PHjREdHp71TumjRopw6dSqtF1AI\nIbyNSqVi//79Th3z5Zdfdup4Qggh/uHwltCffvopffv2TXt88+ZNChUqxJIlS/jxxx8pVKgQ169f\nd0qQQgghhBBCuJpDM8bbtm0jIiKCYsWKpW3P+sCD7T43b95s8wL0QgghhBBCuJtDhfHx48fZtGkT\nW7du5c6dO6jVal566SVu3LiRds6NGzcyfBf20aNHKViwoOMRCyGEEEIIYYOEhIRHltF8HIcK4wED\nBjBgwAAgdV3RwMBAunbtSosWLbh9+zYGg4Fr165l2F9csGBBatas6chtRS6wZs0aWrdu7e4whAMk\nd55N8ue5JHeeTfLn2Y4cOWLX+U5bx1in0zFo0CA6d+4MwPDhw501tMhFLly44O4QhIMkd55N8ue5\nJHeeTfLnXbJdGPfp0yft89jY2HSLsgshhBBCCOEpHF6VQninf2/xKjyH5M6zSf48l+TOs0n+vIsU\nxsIuTzzxhLtDEA6S3Hk2yZ/nktx5Nsmfd3Faj3F2KYrC9evXsVgs7g5FPMa9e/cIDQ21+zqNRkPh\nwoVlCT832r17Nw0aNHB3GMJBkj/PJbnzbJI/75JrCuPr168THBxMQECAu0MRj1G8eHGHrktKSuL6\n9esUKVLEyREJIYQQQjhHrmmlsFgsUhTnYQEBAfLXADeTGQ/PJvnzXJI7zyb58y65pjAWQgghhBDC\nnaQwFsJL7N69290hiGyQ/HkuyZ1nk/x5FymMPczTTz9NqVKlCAsLw2q1ujscIYQQQog8QwpjFwsL\nC+PcuXNOG2/Xrl3s3bvXaeMJ7yF9cp5N8ue5JHeeTfLnXaQwdiFFUdL919njCiGEEEII55HC2Aaf\nf/45NWvWpGTJktSuXZsffvgh7diePXto2rQpERER1K1bN20294UXXqB06dIAPPPMM4SHhzNixAgg\ndd/1h1shdu/eTeXKlW26nxCOkj45zyb581ySO88m+fMuuWYd49wsX758LFu2jLJly7Jp0ya6d+/O\nM888Q0JCAi+99BJfffUVzZs35+zZs9y6dQuAZcuWAamtFLt27SIiIiLb9ytQoIArXp4QQgghhEAK\nY5t069Yt7fPmzZsTGhrK6dOn2bdvH02aNCEmJgaAqKgooqKiXHK/P/74g//85z/ZHlt4L+mT82yS\nP88lufNskj/v4jGFcYHPnTNbervfbbuv+e6775g+fTqXLl3CarWSkJCAyWTi8uXLlCpVyilx2XI/\nIYQQQgjhOh5TGDtS0DpDXFwcAwYMYPXq1dSpUweAsmXLoigKJUqU4NixY4+9XqVSPfKcr68vAGaz\nGR8fHxISEmy63wM6nQ5I3S1QrZY2cWGb3bt3y8yHB5P8eS7JnWeT/HkXqaqyoNfrUalUFCxYELPZ\nzNSpU7l37x4qlYr27duzbds2NmzYgMVi4a+//uLAgQPpri9SpAgnT55M91zBggUJCQnh8OHDAKxe\nvTrL+z2scOHChISEsGfPHhe9aiGEEEII7yOFcRbKly9P7969adq0KRUrVkSv16e1T4SHh7Nw4UIm\nTZpEmTJl6Ny58yObbvzvf/9jyJAhVKpUibFjxwKg0Wj44IMPePPNN2nVqhUFCxZMm1l+3P0e0Gg0\nfPLJJ/Tq1Yvw8HB+/PHHHPhKCE8nMx6eTfLnuSR3nk3yB+q4OIiPJ7hpU8jjm4upTp8+naOL4sbF\nxVGzZs1Hnr98+TLFixfPyVBEDpMcCyGEEJ4nqG1bDK++SsCwYSRs2IDVBe+vcpUjR47Y9X4wmTEW\nwkvIWpyeTfLnuSR3ns3b86e6exft4cOYnn0WS1QU6j//dHdILiWFsRBCCCGEyJBu0yZMTz8NgYFY\no6LQnDnj7pBcSgpjIbyE9Ml5Nsmf55LceTZvz59u3TpMrVoBpM4YS2EshBBCCCG8TnIyuh07MN3f\nyMwSHY1GWimEEHmBt/fJeTrJn+eS3Hk2b86f6s4dUnr1QgkLA8Bcvz76GTPcHJVrecwGH0IIIYQQ\nIucoxYuTMmzYP08EBKAEBLgvoBwgM8ZCeAlv75PzdJI/zyW582ySP+8ihbEQQgghhBBIYSyE1/Dm\nPrm8QPLnuSR3nk3y512kMBZOERYWxrlz59wdhhBCCCFcTcnRTZNzlBTGItuU+98gSh7+RsLine truncated
"text": [
"<matplotlib.figure.Figure at 0x2805190>"
]
}
],
"prompt_number": 22
"outputs": []
},
{
"cell_type": "markdown",
@@ -1563,17 +1584,7 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x28f9950>"
]
}
],
"prompt_number": 23
"outputs": []
},
{
"cell_type": "markdown",
@@ -1632,17 +1643,7 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGNCAYAAAActsnoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VPXd9/HPLJnJHhapECCtO0ujgggEEUWjQu5CLdga\nERQFHxG0oHJ7U8Uiaqu43BXFBbUuFRQX1IIE64ZWy6bCo1CWKlLCoggImSQkk9meP/JAax0gmczk\nnN/J+3VdXBcnJMNXP8w53/zyPb/j2rhxY0wAAACAg7mtLgAAAABINZpeAAAAOB5NLwAAAByPphcA\nAACOR9MLAAAAx6PpBQAAgOPR9AJAkqxYsUJdunSxugxJ0qhRozRr1iyrywAA26DpBYAUCwQCmj59\nus4//3ydcsopGjhwoG6//XYFAoFGvU44HNZdd92loqIi9ejRQ9dee6327NmToqoBwFloegEgxXbv\n3q09e/bo5ptv1htvvKHf//73WrJkia6//vpGvc5DDz2k1157TTNmzNCcOXO0Y8cOTZo0KUVVA4Cz\neK0uAACc7thjj9WDDz548Lhz5866/PLLNWPGDFVVVSk7O/uIrxGNRjVv3jyNHTtWAwYMkCTdfPPN\nGjlypP7xj3/oxBNPTFn9AOAErPQCgAUCgYDS09Pl8/ka9Plbt25VRUWFTjvttIMf69Gjh7xer9as\nWZOqMgHAMWh6AaCZff3115ozZ46uuOKKBje9B2Z3W7VqpRkzZqi4uFihUEh5eXnM9QJAA9D0AkAz\nCgQCGjdunHr16qXrrrsuoddo06aN8vPz5fF4klwdADgXTS8ANJPKykpdeeWVOvroozVz5ky5XK4G\nf23btm0lSfv27dNVV12lP/3pT3K73aqoqDj4ZwCAQ6PpBYBmUFVVpTFjxqht27Z6+OGHlZaW1qiv\n79y5s/Ly8vTJJ58c/NiqVasUDod18sknJ7tcAHAcdm8AgBSrqqrSlVdeKa/Xq9tuu0379u07+Gdt\n27aV233k9Qe3261LLrlEf/zjH9W1a1e1adNGv//979W7d2+dcMIJqSwfAByBphcAUuzvf/+7Pv/8\nc7lcLg0cOPDgx10ul959913l5+c36HWuu+461dbW6qabblIwGFT//v01ffr0VJUNAI5C0wsAKdan\nTx9t2LChya/j8Xg0ZcoUTZkyJQlVAUDLwkwvAAAAHI+mFwCSqDE7MgAAmo9r48aNMauLAAAAAFKJ\nlV4AAAA4Hk0vACTJihUr1KVLF6vLkCSNGjVKs2bNsroMALANml4AaAa7du3ShAkT1KNHDxUVFWnG\njBmKRqONfp0FCxZoyJAhOvnkk3XGGWfovvvuS0G1AOA8bFkGAM1g4sSJqqur09y5c7Vr1y5NnjxZ\nWVlZuvbaaxv8GgsWLNAtt9yiG264QWeffbYikYi+/vrrFFYNAM5B0wsAKbZhwwatWrVK8+bNU7du\n3SRJo0eP1ty5cxvV9D744IMaPXq0rrjiioMfO/7445NeLwA4EeMNAJBia9askdfr1amnnnrwY717\n99Z3332nrVu3Nug1duzYoW3btqlDhw4qLS1V//79dcUVV2j9+vWpKhsAHIWmFwBSbM+ePWrVqpUk\nafjw4br++uvVpk0bSdJ3333XoNfYuXOnJGn27Nm69NJLNXv2bLVp00ZXXHGFKisrU1M4ADgITS8A\nNINYrH5L9Pz8fB199NGN/voDN70NGTJEQ4YMUffu3XX77berqqpK77//fjJLBQBHYqYXAFKsbdu2\nqqiokCQ99NBDkqSPP/5Ykg6u+B5J69atJUk/+clPDn4sKytLrVq10rfffpvEagHAmVjpBYAUKyws\nVDgc1urVqw9+bMWKFWrTpo06d+7coNcoKChQdnb292aAa2pqtG/fPrVv3z7pNQOA09D0AkCKdenS\nRT179tSdd96pv//97/rggw/07LPPasSIEQ1+Da/Xq4suukjz5s3Te++9p82bN+t3v/udcnNzddZZ\nZ6WwegBwBsYbAKAZzJw5U7fddptGjhwpv9+viy66SBMmTGjUa9xwww0Kh8OaOnWqamtr1b17dz35\n5JPKzs5OUdUA4BwJNb179+7V2LFjFQ6HFYvFNG7cOJWUlCS7NgBwjHbt2unhhx9u0mv4fD5NnTpV\nU6dOTVJVANByJNT05uTkaM6cOcrIyNDevXtVUlKiQYMGye1mWgIAAAD2k1DT6/V65fXWf2kgEJDP\n50tqUQBgKpfLZXUJAIA4XBs3bowl8oXV1dUqLS1VeXm57r//fhUXFye7NgAAACApEm56D9i0aZPG\njRunP//5z8rMzExWXQAAAEDSNHn3huOOO075+fnatGmTCgsLD3589erVOuqoo5r68gAAAMBhVVZW\nqlu3bof9nISa3p07d8rn86l169batWuXNm/erE6dOn3vc4466ij17NkzkZeHDSxcuFBDhgyxugwk\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x29773d0>"
]
}
],
"prompt_number": 24
"outputs": []
},
{
"cell_type": "markdown",
@@ -1660,17 +1661,7 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGNCAYAAAActsnoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOXZx/HfTGayL0DABQhVEMGFLWJRCAg1BaSKiFoR\nFxQRkIraalncEDfE1lq3iiCKFC1acSkW2RQFRFEJle0lUOCFsBq27MskM+8fvKDoAMkwk3OeM9/P\ndXHJCZPJDT9PcufJPc/jys3NDQgAAABwMLfVBQAAAACRRtMLAAAAx6PpBQAAgOPR9AIAAMDxaHoB\nAADgeDS9AAAAcDyaXgBRafny5WrdurXVZRhnzJgxGjt2rNVlAECt0fQCwI8UFhZq/Pjx6tmzp9q1\na6cePXro0UcfVWFhYa2ep6qqShMmTNDFF1+sDh066M4779S+ffvCWmt1dbUmTpyo3/zmN2rfvr2y\nsrL0xz/+Ubt37w75OSdPnqzWrVvrxRdfDPrnLpcr5OcGACvR9ALAj+zdu1f79u3T/fffr48++khP\nPvmkFi1apN///ve1ep4XXnhB77//viZOnKgZM2Zo586duueee8Jaa0VFhXJzc3XXXXfpww8/1Isv\nvqiNGzdqyJAhqq6urvXzrVq1SrNnz1bDhg3DWicA2AFNLwD8SPPmzfX888+re/fuysjI0MUXX6xB\ngwZp2bJlKi4urtFz+P1+zZw5U0OGDFG3bt103nnn6f7779c333yjDRs2hK3WxMREvfbaa+rVq5d+\n8YtfqH379rrzzjv13//+V5s2barVc5WUlGjMmDF64oknFBsbG7YaAcAuaHoB4AQKCwsVHx9f42Yw\nLy9PBQUFuuCCC468rUOHDvJ4PFq9enWkypQkFRQUSJJSU1Nr9X6PP/64srOz1bZt20iUBQCWo+kF\ngOPYtWuXZsyYoVtvvbXGTe/h2d169epp4sSJys7Ols/nU1paWtjnen+suLhYkyZN0pVXXqnTTjut\nxu83Z84crVmzRiNHjoxYbQBgNY/VBQCAXRUWFmr48OHq2LFjyA1hgwYN1LhxY8XExIS5uqNVVlbq\n7rvvVv369TV+/Pgav9/u3bv16KOPaurUqfJ6vRGsEACsRdMLAEEUFRVp8ODBOvXUU/Xcc8/VateC\n9PR0SdLBgwd1++236/bbb1d1dbUKCgqO/Fk4VVZW6q677tLBgwc1bdo0xcfH1/h916xZo4KCAl1/\n/fVHPd/LL7+s2bNna968eWGvFwCsQNMLAD9RXFys2267Tenp6XrxxRePuQJaWlqq/fv3q0GDBkpM\nTDzy9oyMDKWlpenbb789Mtebk5OjqqqqsM/M+nw+3XPPPdq7d6+mTZumlJSUoI+rrKzU999/r7S0\ntKMe07lzZ82ZM+fIdSAQ0C233KKePXtq0KBBYa0VAKzETC8A/EhxcbEGDx4sj8ejRx55RAcPHlR+\nfr7y8/Pl9/uPeuzcuXOVnZ39s9VQt9ut66+/XlOnTtXixYu1Zs0aPfnkk/rlL3+pli1bhq3W6upq\n3XXXXdqyZYuefvpplZeXH6nV5/Md9diVK1cqOztbb7zxxlFvT0xM1JlnnnnkV/PmzeXxeFSvXj1l\nZGSErVYAsBorvQDwI2vXrtWqVavkcrnUo0ePI293uVz65JNP1Lhx46PedvjXT40cOVLl5eUaNWqU\nKioqlJWVVatZ25rYtWuXFi1aJJfLpT59+hxV1/Tp03XhhRce9XgOlgAQzVy5ubkBq4sAgLq2fPly\nDRo0SOvXr7e6FKMcPoJ4woQJFlcCALXDeAMAoMYCAdZJAJiJphdA1OLH/bXHvxkAUzHeAAAAAMdj\npRcAAACOR9MLICotX75crVu3troM44wZM+bIi9kAwCQ0vQDwI4WFhRo/frx69uypdu3aqUePHnr0\n0UdVWFgY8nM+/PDDat26td5///0wVvqDadOmqVevXmrTpo26d++u6dOn1/o5XnnlFXXt2lXt2rXT\noEGDtHXr1qCPY6YXgKnYpxcAfmTv3r3at2+f7r//frVo0ULbt2/X/fffr61bt2rq1Km1fr6FCxfq\nf//3fyVFpmF8+eWXNXXqVI0ZM0adOnVSSUlJrRv0f/7zn3rxxRc1YcIEtWzZUk8//bSGDh2qf//7\n3/J4+DIBwBn4bAYAP9K8eXM9//zzR64zMjI0aNAgTZw4UcXFxUpOTq7xc+3Zs0dPPvmkpk+fruzs\n7LDXWlZWpsmTJ2v06NG65pprQn6eN998U1dddZUuv/xySdLjjz+uHj16aMmSJUcd0AEAJmO8AQBO\noLCwUPHx8YqNja3x+wQCAY0ePVrDhg1T06ZNI1LXmjVrVFZWpoSEBF155ZXq2rWrRowYoby8vBo/\nR2VlpTZs2KCOHTseedvpp5+upk2bavXq1ZEoGwAsQdMLAMexa9cuzZgxQ7feemutmt4pU6YoJiZG\n1113XcRq27NnjyRp0qRJuueee/TSSy+ppKREQ4cOVXV1dY2e48CBA/L7/apfv76mT5+uzp07a/fu\n3WrQoIH27dsXsdoBoK7R9ALAMRQWFmr48OHq2LGjRo4cWeP3W7dunV5//XU98cQTkn44xSzcp5n5\n/X5J0s0336wePXqobdu2evjhh7VlyxatWrWq1s9Xr149NWnSRLGxsZy8BsBxmOkFgCCKioo0ePBg\nnXrqqXruuedq9SK0r7/+WgUFBerZs+dRb3/ooYf0r3/9S6+//npYaqxfv74k6YwzzjjytoyMDEk/\nrALX5DncbrcOHDigvn37qm/fvpKk/fv3Kz09PSx1AoAd0PQCwE8UFxfrtttuU3p6ul588UV5vd6g\njystLdX+/fvVoEEDJSYmHnl7//79dckllxy5DgQC6tOnj+66664jTWU4nHPOOXK5XNq+ffuRt+3c\nuVOSdNpppx312MrKSn3//fdKS0tTSkrKkbfHxsaqVatW+vbbb4/UtnPnTu3YsUNt27YNW60AYDXG\nGwDgR4qLizV48GB5PB498sgjOnjwoPLz85Wfn39knOCwuXPnKjs7W/PmzTvq7ampqTrzzDOP/Gre\nvLkk6ZRTTvlZM3oyGjZsqOzsbL388sv6+uuv9d///ldPPfWUWrRooTZt2hz12JUrVyo7O1tvvPHG\nz55n4MCBev/99/XRRx8pNzdXDz30kM444wx17do1bLUCgNVY6QWAH1m7dq1WrVoll8t11HZdLpdL\nn3zyiRo3bnzU2w7/ssqTTz6pxx9/XL/73e/kcrmUmZmpSZMmKSYm5mePPVad1157rQ4cOKCJEyeq\noKBAmZmZmjx5ctDnAABTuXJzc2v9aoUDBw5oyJAhqqqqUiAQ0PDhw9WnT59I1AcAEbF8+XINGjRI\n69evt7oUoxw+gnjChAkWVwIAtRPSSm9KSopmzJihhIQEHThwQH369FHv3r3ldjMtAQBOFggEOIoY\ngJFCano9Hs+RoykLCwtrtXclANgFzVvt8W8GwFQhjTdIUklJiQYMGKBt27bpmWeeicgRmwAAAEA4\nhNz0HrZp0yYNHz5cH3744VFb9gAAAAB2cdK7N7Ro0UKNGzfWpk2bjtoiZ+XKlWrYsOHJPj0AAABw\nXEVFRTr33HOP+5iQmt49e/YoNjZW9evXV35+vrZs2aKmTZse9ZiGDRsqMzMzlKeHDcyePVtXXHGF\n1WUgBGRnNvIzF9mZjfzMlpOTc8LHhNT07tq1Sw899NCR6zFjxhw5DhPOsG3bNqtLQIjIzmzkZy6y\nMxv5OV9ITW/79u01e/bscNcCAAAARAQb6yIoduMwF9mZjfzMRXZmIz/no+lFUK1atbK6BISI7MxG\nfuYiO7ORn/PR9CKopUuXWl0CQkR2ZiM/c5Gd2cjP+Wh6AQAA4HgnfTjFseTl5bFlGQAAACIuJydH\nGRkZx30MK70AAABwPJpeBMVsk7nIzmzkZy6yMxv5OR9NLwAAAByPmV4AAAAYjZleAAAAQDS9OAZm\nm8xFdmYjP3ORndnIz/loegEAAOB4zPQCAADAaMz0AgAAAKLpxTEw22QusjMb+ZmL7MxGfs5H0wsA\nAADHY6YXAAAARmOmFwAAABBNL46B2SZzkZ3ZyM9cZGc28nM+ml4AAAA4HjO9AAAAMBozvQAAAIBo\nenEMzDaZi+zMRn7mIjuzkZ/z0fQCAADA8ZjpBQAAgNGY6QUAAAAkeawuAPa0dOlSZWVlWV0GQkB2\nZjM9v/37XVq61KOdO93at8+lffvc2rvXpf37XSorc+nMM/1q1ar6yK/mzf3yeq2uOjxMzy7akZ/z\n0fQCAELm90srV8bok0+8WrjQq9zcGF18sU9nnOFXenpA559fpfT0gNLTA4qLC2jz5hjl5rr1zjux\nys2N0c6dbvXu7dPgwRXq3LlKLpfVfyMATsVMLwCg1r76KkbTpsXpk0+8atQooEsv9Sk726eLLqpS\nXFzNn6egwKW3347V1KlxSkwM6MEHy/SrX9H8Aqidmsz0stILAKgRv1+aO9er55+P1/ffuzRsWIUe\nfLBMTZuGvnaSlhbQ0KEVGjKkQv/6l1f335+opk39mjKlRA0aRGRNBkCU4oVsCIr9Cs1FdmazY37l\n5dL06bG6+OJU/eUv8Ro+vFzffFOoYcMqTqrh/TG3W+rXz6cvvijU+edXq1evFG3ebNaXKDtmh5oj\nP+djpRcAEFRlpTR5cpxeeilebdtW65lnStWlS2RHDzweafz4Mp1xRrX69EnRG28Uq1On6sh9QABR\ng5leAMDPLFvm0b33Jiojw69HHinVuef667yGBQs8GjEiSX/6U6n69fPV+ccHYA5megEAtbJ3r0vj\nxiXo88+9evLJUl1xhc+yF5X9+tdVmjWrWNdck6wzzihW+/as+AIInVkDU6gzzDaZi+zMZlLine truncated
"text": [
"<matplotlib.figure.Figure at 0x29ab8d0>"
]
}
],
"prompt_number": 25
"outputs": []
},
{
"cell_type": "markdown",
@@ -1751,25 +1742,7 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2e93f50>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAF9CAYAAADr+MuIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VGXax/HvmZZJBwKBEBJDCS0QiiDqUkQpEgQClhcQ\nQRcWC1Z0AUXFAq6g7loW+9rbggUJKoIKAtKJJBEkgCBpkAQI6clkyvvHbEKGKQma5GSG+3NdXsuc\nOXPmyS+zyc3DfZ5HSU9PtyGEEEIIIYSP0ag9ACGEEEIIIRqDFLpCCCGEEMInSaErhBBCCCF8khS6\nQgghhBDCJ0mhK4QQQgghfJIUukIIIYQQwidJoSuEEEIIIXySTu0BCCFEc9W9e/eaP4eEhNCpUydm\nzpzJyJEjm3wsR48eZdGiRaSkpNCiRQumTZvG3/72t/O6xk033cSuXbscjs2ePZu5c+c25FCFEKLZ\nkEJXCCE8WLhwIQkJCRQUFPDee+9xzz338MknnxAfH99kYzCZTPztb3+jU6dOrFy5kgMHDvDQQw/R\nunVrJk6ceF7X+utf/8rMmTNrHvv7+zf0cIUQotmQ1gUhhPAgODiYsLAwunTpwrx587BarSQnJzfp\nGDZt2kRWVhaLFy+ma9eujB8/nvHjx/P++++f97UCAgIICwur+S8gIKARRiyEEM2DzOgKIYQHNpt9\nl/Sqqio+++wzNBoNffv2rddrc3JyGDt2rNvn33zzTS6++OI6r5OWlkZ0dDTh4eE1xy655BK+/PJL\nzGYzOl39f5R/8sknvP/++4SHhzNq1ChuvfVWDAZDvV8vhBDeRApdIYTwYNGiRTzxxBNUVlbSsWNH\n3nvvvXoXum3btmX16tVun69duHpy+vRpWrZsSUVFBQkJCYwZM4ZBgwZhsVg4c+YMrVu3rtd1xo8f\nT1RUFGFhYaSmpvLMM8+QnZ3N008/Xa/XCyGEt5FCVwghPLjnnnsYOXIkBw4c4MEHH2T//v0MGDCg\nXq/VarVERUU12Fg0Gg3t27endevWNTPN5+P666+v+XNsbCw6nY758+ezYMECWrRo0WDjFEKI5kIK\nXSGE8CAsLIzo6Giio6M5ceIEL7zwAuPHj69XYdhQrQutWrXi9OnTGAwGPvjgAwBWrVqFVqv9UwVq\nXFwcAFlZWVLoCiF8khS6QghRT5MnT+aVV17hvffe4+67767z/IZqXYiPj+e1114jNzeXtm3bArBj\nxw66d+/u1J9bXFxMYWEh4eHhdfbeHj58GIAOHTrUaxxCCOFtZNUFIYSoJ4PBwA033MCHH35IeXl5\nnedXty64+8/Pz69e7zt06FCioqJ45JFHOHjwIKtXryYpKYmbbrrJ6dx33nmHESNGkJKS4nA8IyOD\n559/ntTUVLKysvjuu+9YunQpEyZMkNlcIYTPkkJXCCHOw4033khpaSkrV65ssvfU6/W8/vrrVFRU\ncN111/Hss89yzz33kJiY6HSuoigoiuJ03GAwsGPHDmbNmsWYMWNYtmwZEyZM4IknnmiKL0EIIVSh\npKenu72joaCggFmzZmE2m7HZbNx2220kJCTw9ddf88ILLwCwYMEChg8f3mQDFkIIIYQQoj48Frpm\ns5mqqir8/f0pKCggISGBTZs2cfXVV7Ny5UoqKyuZPn0669evb8oxCyGEEEIIUSePrQs6na5me8ji\n4mIMBgMpKSnExsbSqlUrIiIiaNeuHQcOHGiSwQohhBBCCFFfda66UFpayuTJk8nIyODZZ5/l5MmT\ntGnThk8++YTQ0FDatGlDXl4e3bt3b4rxCiGEEEIIUS913owWGBhIUlISn3/+OcuWLaOyshKwL7Mz\nZswYAJc3PgghhBBCCKGmeq+j27lzZ9q3b09kZCTffPNNzfH8/HzatGnjdP6+ffsICQlpmFEKIYQQ\nQgjhRmVlJV26dHE67rHQzc3NxWAw0LJlS/Lz8zl69CgdO3bk0KFDnD59msrKSnJzc122LYSEhNC/\nf/+G+wqaWFJSEuPGjVN7GBckyV5dkr+6JH/1SPbqkvzV5e35JycnuzzusdA9fvw4jzzySM3jBQsW\nEBYWxv3338+UKVMAeOihhxpwmM1HRkaG2kO4YEn26pL81SX5q0eyV5fkry5fzd9jodu3b1+SkpKc\njickJJCQkNBogxJCCCGEEOLP0t51112PNcaFi4qKiIiIaIxLN4nQ0FBat26t9jAuSJK9uiR/dUn+\n6pHs1SX5q8vb8z9+/DihoaFOxz1uGPFnZGZmenWPrhBCCCGE8A7JyclERUU5Ha/3qgsNxWazkZeX\nh8Viaeq3Pi+FhYUu/2YgPNNqtYSHh/+pJee2bNnC4MGDG3BU4nxI/uqS/NUj2atL8leXr+bf5IVu\nXl4ewcHBBAQENPVbn5f27durPQSvVFZWRl5eHm3btlV7KEIIIYS4wDV560JOTo4UkT5OvsdCCCGE\naEruWhfq3BlNCCGEEEIIbySFrmh2tmzZovYQLmiSv7okf/VI9uqS/NXlq/lLodtMDRkyhKioKMLC\nwrBarWoPRwghhBDC60iPbgMJCwtjz549xMTENNg1MzMz6du3L/n5+Wg03vN3El/9HgshhBCieZIe\n3UZks9kc/rehryuEEEIIIc6fFLq1vPjii/Tv358OHTowYMAAVq1aVfPcTz/9xIgRI4iJiWHQoEFs\n3boVgOuvv56LLroIgKFDhxIdHc3ChQsB+77RtVsPtmzZQq9ever1fhcyX+0T8haSv7okf/VI9uqS\n/NXlq/k3+Tq6zVmLFi1YuXIlnTt3Zt26dcyYMYOhQ4dSXFzM1KlTef311xk1ahS//fYbp06dAmDl\nypWAvXVh8+bN59W64O79WrVq1RhfnhBCCCHEBUUK3VqmT59e8+dRo0YRGhpKeno627Zt48orr2T0\n6NEAdOnShS5dujTK+x08eJBLL730T1/bm/nizizeRPJXl+SvHsleXZK/unw1/2ZX6LZ6sWFmM0/f\nffq8X/Pf//6X5cuXk52djdVqpbi4mKqqKnJyclw2OP9Z7t5PCCGEEEL8ec2u0P0jBWpDyMzM5N57\n72X16tUMHDgQgM6dO2Oz2YiMjCQlJcXj6xVFcTrm5+cHgNlsxmAwUFxcXK/3q6bX6wGwWCxeterC\nn+Wr+217C8lfXZK/eiR7dUn+6vLV/C+c6qkOpaWlKIpC69atMZvNvPTSSxQWFqIoCtdeey0//PAD\na9euxWKxcOTIEXbs2OHw+rZt27J//36HY61btyYkJIQ9e/YAsHr16jrfr7bw8HBCQkL46aefGumr\nFkIIIYTwXVLo/k/37t2ZM2cOI0aMoGfPnpSWlta0K0RHR/Phhx/y7LPP0qlTJ6ZMmeK0icPDDz/M\nvHnziIuLY/HixQBotVqeeOIJZs+ezdixY2ndunXNzK+n96um1Wp55plnuO2224iOjuabb75pgiTU\n54t/o/Qmkr+6JH/1SPbqkvzV5av5y4YRosHJ91gIIYQQTUk2jBBew1fX8vMWkr+6JH/1SPbqkvzV\n5av5S6ErhBBCCCF8krQuiAYn32MhhBBCNCVpXRBCCCGEEBcUKXRFs+OrfULeQvJXl+SvHsleXZK/\nunw1fyl0hRBCCCGET5IeXdHg5HsshBBCiKYkPbpCCCGEEOKCIoWuaHZ8tU/IW0j+6pL81SPZq0vy\nV5ev5i+FrjgvYWFh/P7772oPQwghhBCiTlLoinqz2WwO/9tYfHW/bW8h+atL8lePZK8uyV9dvpq/\nFLr/89FHH3HllVcSFxfHX//6V6ZMmUKPHj3Yv38/VquVpUuX0rdvX7p3786CBQswm80AHDt2jAkT\nJtCpUycuuugibrnlFoqKimqu++2333LJJZcQHR3NwIED+eGHH2qe69OnDz/++GPN43NnS+fMmcOD\nDz7I9OnTiY6Opk+fPpSUlACQlJTE5ZdfTqdOnfi///s/cnNza14zbtw4unbtyqOPPsqgQYO48sor\nKS8vB6CgoIBbb72V7t27069fP9577z2H97vrrrtISEggOjqau+66q+a566+/nosuugiAoUOHEh0d\nzcKFCxsqfiGEEEKIBieFbi1+fn5s27aNtWvXMnPmTKZNm8YXX3zBv//9b7799lvWrl3L7t27SU9P\n57XXXgPAZDIxY8YMfvnlF3755RcKCgpYunRpzTXvvfdeHnroITIyMvj888+JiIioeU5RFBRF8Tim\nFStWMG3aNI4dO8aHH36ITqdjz5493HPPPSxfvpzDhw8THx/PfffdV/OaQYMG8eqrr/LGG2+wbt06\njEYjO3fuBOC2227DYDCQkpLCF198wdKlS9m7d2/Nazdu3Mgbb7zB1q1b+fLLL0lOTgZg5cqVZGRk\nALB582YyMjJYsmTJn0zcNV/tE/IWkr+6JH/1SPbqkvzV5av5S6FbS8eOHQkJCaFVq1Z06dKF6Oho\n8vPz+fDDD/n73/9Ou3btCAoKYubMmaxZswaA2NhYJk2aREBAAMHBwYwfP559+/bVXFOj0XD06FGK\nioqIioqiR48e5zWmIUOGMGrUKBRFoVevXhiNRj744AOmTJlCv3790Gg0zJkzh3Xr1mEymWq+jpiY\nGFq3bk1oaCjR0dGcPHmSEydO8P3337N48WL8/PyIiYlh3LhxfPXVVzXvN2bMGCIjI+nQoQM9e/bk\nt99+a4BkhRBCCCGank7tAZzL+PTT+C9b5nS8fN48KhYsqNf57s6tS/Xsqk6nQ6vVotPpMJvNZGdn\nc9ttt6HR2P9eYLVaadeuHQD5+fksWLCA7du3U1ZWRlVVFX379q255ttvv83zzz/Piy++SGxsLC+8\n8MJ5FbudO3d2Opadnc3WrVv56KOPao75+fnVtC9Uj12r1dY8rqqqIicnB8BhfBaLhUmTJtLine truncated
"text": [
"<matplotlib.figure.Figure at 0x2ee3bd0>"
]
}
],
"prompt_number": 26
"outputs": []
},
{
"cell_type": "markdown",
@@ -1826,17 +1799,7 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2e86150>"
]
}
],
"prompt_number": 27
"outputs": []
},
{
"cell_type": "markdown",
-99
View File
@@ -1,99 +0,0 @@
# -*- coding: utf-8 -*-
"""
Created on Wed May 28 17:40:19 2014
@author: rlabbe
"""
from numpy import matrix, zeros, asmatrix, size
from numpy.linalg import cholesky
def sigma_points (mean, covariance, kappa):
""" Computes the sigma points and weights for an unscented Kalman filter.
xm are the means, and P is the covariance. kappa is an arbitrary constant
constant. Returns tuple of the sigma points and weights.
This is the original algorithm as published by Julier and Uhlmann.
Later algorithms introduce more parameters - alpha, beta,
Works with both scalar and array inputs:
sigma_points (5, 9, 2) # mean 5, covariance 9
sigma_points ([5, 2], 9*eye(2), 2) # means 5 and 2, covariance 9I
"""
mean = asmatrix(mean)
covariance = asmatrix(covariance)
n = size(mu)
# initialize to zero
Xi = asmatrix (zeros((n,2*n+1)))
W = asmatrix (zeros(2*n+1))
# all weights are 1/ 2(n+kappa)) except the first one.
W[0,1:] = 1. / (2*(n+kappa))
W[0,0] = float(kappa) / (n + kappa)
# use cholesky to find matrix square root of (n+kappa)*cov
# U'*U = (n+kappa)*P
U = asmatrix (cholesky((n+kappa)*covariance))
# mean is in location 0.
Xi[:,0] = mean
for col in range (n):
Xi[:, col+1] = mean + U[:, col]
for k in range (n):
Xi[:, n+col+1] = mean - U[:, col]
return (Xi, W)
def unscented_transform (Xi, W, NoiseCov=None):
""" computes the unscented transform of a set of sigma points 'X'
and weights 'W'.
W should be in the form:
[w0, w1, w2,...wn].T
where w0 is the mean,
Xi should be in the form:
[X_00,
returns the mean and covariance in a tuple '(mean, cov)'
"""
W = asmatrix(W)
Xi = asmatrix(Xi)
n, kmax = Xi.shape
# initialize results to 0
mean = matrix (zeros((n,1)))
cov = matrix (zeros((n,n)))
for k in range (kmax):
mean += W[0,k] * Xi[:,k]
for k in range (kmax):
cov += W[0,k]*(Xi[:,k]-mu) * (Xi[:,k]-mu).T
return (mean, cov)
if __name__ == "__main__":
xi = matrix ([[1,2,3,4,5,6,7],[1,2,3,4,5,6,7],[1,2,3,4,5,6,7]])
mu = matrix ([1,2,3,4,5,6,7])
m,c = unscented_transform(xi, mu)
print m
print c
View File
Whitespace-only changes.
+27 -27
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:a7f391a6729b3d01b0ccfdf3825a3ab878f59e1d4937e5135a8b6c0f64c253a2"
"signature": "sha256:4596c3be2efa3686f3281d6c9e9e897bfa114ca6945b5da108745cb466846335"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -41,7 +41,7 @@
" margin-right: auto;\n",
" }\n",
" div.text_cell code {\n",
" background: #FFFFFF;\n",
" background: transparent;\n",
" color: #000000;\n",
" font-weight: 600;\n",
" font-size: 13pt;\n",
@@ -250,7 +250,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x25adb90>"
"<IPython.core.display.HTML at 0x2919d50>"
]
}
],
@@ -344,9 +344,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAFyCAYAAAAQ8tcPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF6pJREFUeJzt3Xts3XX9+PHXWbtulHYbxQPtmi1AqExYISxEY1YDM7hC\nuSTDS9oYR4z+ocFF0vkDbGLAf2BiajBBlGkIxCiNiwsGM3RV5qXxD6KNFFhaavDSjX3bc9LBbuy0\n2/r7A9ZwWU/HONvpeD8ef/X0vM85r76z9Dz36eeckxkaGpoKAABI0LxyDwAAAOUihgEASJYYBgAg\nWWIYAIBkiWEAAJIlhgEASNasMfy9730vVq9eHbfccsusd7Zt27ZobW2N1tbW2LFjR0kGBACA02XW\nGF67dm08+uijs97RxMREdHd3x5NPPhmPP/543H///SUZEAAATpdZY/jqq6+OJUuWzHpHAwMD0dTU\nFHV1ddHQ0BD19fUxODhYkiEBAOB0qCzVHeXz+chms9HT0xOLFy+ObDYbY2NjsWLFilI9BAAAlFTJ\nYvi49vb2iIjo7e2NTCZT6rsHAICSKVkMZ7PZyOVy05dzuVxks9n3rPvPf/4TFRUVpXpYAAA4of37\n98fll19edM0px3B3d3dkMpno7OyMiIjm5uYYHh6O8fHxKBQKMTo6esJTJCoqKmLVqlWn+rDv29NP\nP31S74SRKvszM3szM3szM3tTnP2Zmb2Zmb2Zmb0prr+/f9Y1s8bwd7/73ejt7Y3XXnstrr322rjv\nvvtizZo1kc/n37GuqqoqNm7cGB0dHRER0dXVdYpjAwDAmTFrDN97771x7733vuf7DzzwwHu+19bW\nFm1tbaWZDAAATrMP/SfQffSjHy33CHOa/ZmZvZmZvZmZvSnO/szM3szM3szM3nxwmaGhoakz+YAj\nIyNn9JxhAADS1N/fH8uWLSu65kN/ZBgAAGYihgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAg\nWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEA\nSJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEA\nAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIY\nAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYY\nBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkzRrD27Zti9bW1mhtbY0dO3YUXfvwww/HTTfd\nFDfddFM8/PDDJRsSAABOh8piV05MTER3d3ds2bIlCoVCrF+/PtasWXPCtSMjI/Gb3/wmfv/738fR\no0fjxhtvjHXr1kVjY+NpGRwAAD6ookeGBwYGoqmpKerq6qKhoSHq6+tjcHDwhGtramqisrIyDh8+\nHIVCIebPnx+1tbWnZWgAACiFokeG8/l8ZLPZ6OnpicWLF0c2m42xsbFYsWLFe9aed955sX79+rju\nuuvi2LFjcffdd8eiRYtO2+AAAPBBFY3h49rb2yMiore3NzKZzAnX7Nq1K3p6euLZZ5+NycnJ6Ojo\niOuuuy6y2WzppgUAgBIqGsPZbDZyudz05VwuN2PcDgwMRHNzc9TU1ERExOWXXx47d+6Ma6+99j1r\nN23aNP11S0tLtLS0nNLwAABwXF9fX/T19U1fXrt27ay3KRrDzc3NMTw8HOPj41EoFGJ0dHT6FInu\n7u7IZDLR2dkZERHLli2LF154ISYmJuLYsWPx0ksvxTe+8Y0T3u8999xz0j8UAACcjHcfZO3v75/1\nNkVjuKqqKjZu3BgdHR0REdHV1TV9XT6ff8fa5ubm+MxnPhPr1q2LiIgvfOELcckll5z89AAAcIZl\nhoaGps7kA46MjMSqVavO5EMCAJCg/v7+WLZsWdE1PoEOAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBk\niWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAg\nWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEA\nSJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEA\nAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIY\nAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJI1awxv27Yt\nWltbo7W1NXbs2FF07fPPPx+33HJLtLW1xZ133lmyIQEA4HSoLHblxMREdHd3x5YtW6JQKMT69etj\nzZo1J1x77NixuOuuu+KBBx6IVatWxd69e0/LwAAAUCpFjwwPDAxEU1NT1NXVRUNDQ9TX18fg4OAJ\n17744otRV1cXq1atioiI8847r/TTAgBACRWN4Xw+H9lsNnp6euKZZ56JbDYbY2NjJ1y7Z8+eqK2t\nja9+9auxbt26+OUvf3laBgYAgFIpeprEce3t7RER0dvbG5lM5oRrCoVC9Pf3x29/+9uoqamJz372\ns/GpT30qli1bVrppAQCghIrGcDabjVwuN305l8tFNpudce2ll14a9fX1ERGxcuXKeOWVV04Yw5s2\nbZr+uqWlJVpaWk5peAAAOK6vry/6+vqmL69du3bW2xSN4ebm5hgeHo7x8fEoFAoxOjoaK1asiIiI\n7u7uyGQy0dnZGRFvxu+rr74ar7/+epxzzjnx8ssvx/Lly094v/fcc89J/1AAAHAy3n2Qtb+/f9bb\nFI3hqqqq2LhxY3R0dERERFdX1/R1+Xz+HWtra2ujq6srbr/99jhy5EjccsstcfHFF7+vHwAAAM6k\nzNDQ0NSZfMCRkZHpd5wAAIDTpb+/f9bXr/kEOgAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBI\nlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAA\nkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgA\ngGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgG\nACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWG\nAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBIlhgGACBZYhgAgGSJYQAAkiWGAQBI1qwxvG3btmhtbY3W\n1tbYsWPHrHd44MCBaGlpiccee6wkAwIAwOlSWezKiYmJ6O7uji1btkShUIj169fHmjVrit7hT37y\nk1i5cmVkMpmSDgoAAKVW9MjwwMBANDU1RV1dXTQ0NER9fX0MDg7OuP6VV16J8fHxWLlyZUxNTZV8\nWAAAKKWiMZzP5yObzUZPT08888wzkc1mY2xsbMb1P/jBD2LDhg0lHxIAAE6HoqdJHNfe3h4REb29\nvTOe/vDss8/GRRddFA0NDY4KAwBwVigaw9lsNnK53PTlXC4X2Wz2hGsHBgZi+/bt8cc//jH27t0b\n8+bNiwsuuCBuvvnm96zdtGnT9NctLS3R0tJyqvMDAEBERPT19UVfX9/05bVr1856m8zQ0NCMh3En\nJibixhtvnH4B3e233x7bt2+PiIju7u7IZDLR2dn5nts9/PDDce6558aXv/zl91w3MjISq1atOqkf\nCAAATlV/f38sW7as6JqiR4arqqpi48aN0dHRERERXV1d09fl8/kSjAgAAOVT9Mjw6eDIMAAAZ8LJ\nHBn2CXQAACRLDAMAkCwxDABAssQwAADJEsMAACRLDAMAkCwxDABAssQwAADJEsMAACRLDAMAkCwx\nDABAssQwAADJEsMAACRLDAMAkCwxDABAssQwAADJEsMAACRLDAMAkKzKcjzo86/uL8fDnjEX1FRF\nw6IF7/t2e/YVYuzAxGmYaO441b0BgLOB5/KzT1li+P9t+1c5HvaM+X7bpaf0j2TswIS9AYCzmOfy\ns4/TJAAASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIY\nAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYY\nBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWWIYAIBkiWEAAJIl\nhgEASJYYBgAgWWIYAIBkiWEAAJIlhgEASJYYBgAgWbPG8LZt26K1tTVaW1tjx44dM64bHR2Njo6O\nuPnmm+O2226Lv/3tbyUdFAAASq2y2JUTExPR3d0dW7ZsiUKhEOvXr481a9ac+I4qK+O+++6Lyy67\nLF599dVob2+Pv/zlL6dlaAAAKIWiR4YHBgaiqakp6urqoqGhIerr62NwcPCEa88///y47LLLIiJi\n6dKlMTk5GZOTk6WfGAAASqTokeF8Ph/ZbDZ6enpi8eLFkc1mY2xsLFasWFH0Tv/617/GFVdcEfPn\nzy/psAAAUEpFY/i49vb2iIjo7e2NTCZTdG0ul4sHH3wwHnnkkQ8+HQAAnEZFYzibzUYul5Line truncated
"text": [
"<matplotlib.figure.Figure at 0x364c910>"
"<matplotlib.figure.Figure at 0x2919890>"
]
}
],
@@ -705,9 +705,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x374c650>"
"<matplotlib.figure.Figure at 0x3933e90>"
]
}
],
@@ -743,9 +743,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF9NJREFUeJzt3W2MFOTd7/Hf4rJVFFAE3bGsTzQLdSsoaNPCpndgU1JP\n8YWJVaupNakNGoltjacutSbVpHSTU1raxAdME5Pa2BQjTZWcplXSF11qxloqsTZSsCoBdld8RKvb\nAZzzwuNyewNLgYVRrs/n1c7Mxcx/L4H9ejEPTfV6vR4AACjEqEYPAAAAR5IABgCgKAIYAICiCGAA\nAIoigAEAKIoABgCgKPsN4Jtvvjmtra0599xz93tnK1asSHt7e6ZOnZpVq1aNyIAAADCSmvb3PsCP\nP/54Wlpacs011+Tpp5/e57parZZp06alWq1mcHAwc+fOzcaNG0d8YAAAOBT7PQH+7Gc/m5NPPnm/\nd1StVtPR0ZFJkyalra0tbW1tWbdu3YgMCQAAI6V5pO5oYGAglUoly5cvz4QJE9La2pq+vr7MmDFj\npB4CAAAO2YgF8PsWLlyYJFm5cmWamppG+u4BAOCQjFgAVyqV9PX1DV3u7+9PpVLZY93vf//7HHPM\nMSP1sAAAsE9dXV17XHfQAbx48eI0NTVlyZIlSZILL7wwzzzzTLZt25bBwcFs3rw506dP3+PXHXPM\nMZk5c+bBPuwBeeSRR3LxxRcfkcf6sLMXu9mL3ezFbvZiN3uxm73YzV68xz7s9lHYi7Vr1+71+v2+\nCO6GG27I7Nmzs379+rS1tQ29vVl/f3/6+/uH1rW0tKSnpydz5sxJV1dXli1bNkKjAwDAyNnvCfCd\nd96ZO++8c4/r77vvvj2uu+yyy3LZZZeNzGQAAHAYHNWfBNfe3t7oET407MVu9mI3e7GbvdjNXuxm\nL3azF++xD7t9lPdivx+EMdJWr159xJ4DDABAudauXbvXF8Ed1SfAAADwPwlgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCj7DeAVK1akvb09\nU6dOzapVq4Zde/vtt6ejoyMdHR254447RmxIAAAYKc3D3Vir1dLd3Z1qtZrBwcHMnTs3CxYs2Ova\n559/Pvfff3/+8Y9/ZNeuXZk2bVq++tWv5owzzjgsgwMAwMEY9gS4Wq2mo6MjkyZNSltbW9ra2rJu\n3bq9rh03blxGjx6dd955J++8805aWloyfvz4wzI0AAAcrGFPgAcGBlKpVLJ8+fJMmDAhra2t6evr\ny4wZM/ZYe/LJJ+cb3/hG2tra8u6772bp0qU58cQTD9vgAABwMIYN4PctXLgwSbJy5co0NTXtdc0L\nL7yQe+65Jy+++GJqtVrmzJmTL37xi2ltbR25aQEA4BANG8CVSiV9fX1Dl/v7+1OpVPa6tlqt5sIL\nL8zYsWOTJOeff37++te/5qKLLtpjbU9Pz9DXnZ2d6ezsPKjhAQDgfb29vent7R26PH/+/L2ua6rX\n6/V93UmtVsu0adOGXgQ3b968bNiwIUmyePHiNDU1ZcmSJUmSJ598Mtdee22eeOKJ7Nq1K+edd14e\nfvjhTJ069QP3uXr16sycOfOQv0EAABjO2rVr09XVtcf1w54At7S0pKenJ3PmzEmSLFu2bOi2/v7+\nDzwd4oILLsgll1yS888/P0ny9a9/fY/4BQCARhv2BPhwcAIMAMCRsK8TYJ8EBwBAUQQwAABFEcAA\nABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQw\nAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQB\nDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF5dJREFUeJzt3W1s3XX9//HXYV03xq6oHmi3jABZZcIGYSEaQw3O6AoD\nTIYX2WIYMXpDo0Sy+UecMeAdQUyNJog6DdEYtXGRaDBDV2VeLN4g0khR0jmCFwOW9TSdbGNw2m39\n3+C3Vl3Xua3bET6Px62ecz47530+kPbZb7/nnMqOHTtGAwAAhTin0QMAAMDZJIABACiKAAYAoCgC\nGACAoghgAACKIoABACjKCQP4i1/8Yq699trcfPPNJ7yzLVu2pLOzM52dndm2bduUDAgAAFPphAG8\ncuXKfPOb3zzhHQ0PD6erqys//OEP853vfCdf+MIXpmRAAACYSicM4Kuvvjrz588/4R319fWlvb09\nLS0taWtrS2tra/r7+6dkSAAAmCpNU3VHg4ODqVar6e7uzrx581KtVjMwMJAlS5ZM1UMAAMBpm7IA\nPmrNmjVJkp6enlQqlam+ewAAOC1TFsDVajW1Wm3scq1WS7VaPWbd3/72t0ybNm2qHhYAACZUr9ez\nePHiY64/5QDu6upKpVLJ+vXrkyTLli3Lzp07MzQ0lHq9nj179kx4+sO0adOyfPnyU33Yk/LII4/8\nV+9eUQJ7Mc5ejLMX4+zFOHsxzl6Msxevsg/jXgt70dvbO+H1Jwzgz3/+8+np6ck///nPXHfddbnn\nnnuyYsWKDA4O/tu65ubmbNiwIWvXrk2SbNy4cQrGBgCAqXXCAL777rtz9913H3P9vffee8x1q1at\nyqpVq6ZmMgAAOANe158E96Y3vanRI/zPsBfj7MU4ezHOXoyzF+PsxTh78Sr7MO61vBeVHTt2jJ7N\nB9y1a9dZOwcYAIBy9fb2ZtGiRcdc/7o+AgwAAP9JAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQB\nDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFOWEAb9myJZ2dnens7My2bdsmXfvAAw/k\nxhtvzI033pgHHnhgyoYEAICp0jTZjcPDw+nq6srmzZtTr9ezbt26rFixYsK1u3btyk9/+tP84he/\nyOHDh3PDDTdk9erVWbhw4RkZHAAATsWkR4D7+vrS3t6elpaWtLW1pbW1Nf39/ROunT17dpqamvLK\nK6+kXq9n+vTpmTNnzhkZGgAATtWkR4AHBwdTrVbT3d2defPmpVqtZmBgIEuWLDlm7fnnn59169bl\nHe94R44cOZJPf/rTmTt37hkbHAAATsWkAXzUmjVrkiQ9PT2pVCoTrnnuuefS3d2dxx57LCMjI1m7\ndm3e8Y53pFqtTt20AABwmiYN4Gq1mlqtNna5VqsdN2j7+vqybNmyzJ49O0ly+eWX5+mnn8511113\nzNr77rtv7OuOjo50dHSc0vAAAHDU9u3bs3379rHLK1eunHDdpAG8bNmy7Ny5M0NDQ6nX69mzZ8/Y\n6Q9dXV2pVCpZv359kmTRokV56qmnMjw8nCNHjuTPf/5zPvGJT0x4v3fdddcpPSkAADie/zyw2tvb\nO+G6SQO4ubk5GzZsyNq1a5MkGzduHLttcHDw39YuW7Ys7373u7N69eokyQc+8IFceumlpzY9AACc\nIZUdO3aMns0H3LVrV5YvX342HxIAgAL19vZm0aJFx1zvk+AAACiKAAYAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgnDOAt\nW7aks7MznZ2d2bZt26Rrn3zyydx8881ZtWpV7rjjjikbEgAApkrTZDcODw+nq6srmzdvTr1ez7p1\n67JixYoJ1x45ciR33nln7r333ixfvjx79+49IwMDAMDpmPQIcF9fX9rb29PS0pK2tra0tramv79/\nwrV/+tOf0tLSkuXLlydJzj///KmfFgAATtOkATw4OJhqtZru7u48+uijqVarGRgYmHDt7t27M2fO\nnHzkIx/J6tWr84Mf/OCMDAwAAKdj0lMgjlqzZk2SpKenJ5VKZcI19Xo9vb29+dnPfpbZs2fnve99\nb97+9rdn0aJFUzctAACcpkkDuFqtplarjV2u1WqpVqvHXbt48eK0trYmSZYuXZpnn312wgC+7777\nxr7u6OhIR0fHKQ0PAABHbd++Pdu3bx+7vHLlygnXTRrAy5Yty86dOzM0NJR6vZ49e/ZkyZIlSZKu\nrq5UKpWsX78+yavB+8ILL+TFF1/Mueeem7/85S+56KKLJrzfu+6665SeFAAAHM9/Hljt7e2dcN2k\nAdzc3JwNGzZk7dq1SZKNGzeO3TY4OPhva+fMmZONGzfmtttuy6FDh3LzzTfnkksuOeUnAAAAZ0Jl\nx44do2fzAXft2jX2ThEAAHCm9Pb2Tng6rk+CAwCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICi\nCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCg\nKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEA\nKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAA\nAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIY\nAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICinDCAt2zZks7OznR2\ndmbbtm0nvMMDBw6ko6MjDz300JQMCAAAU6lpshuHh4fT1dWVzZs3p16vZ926dVmxYsWkd/iNb3wj\nS5cuTaVSmdJBAQBgKkx6BLivry/t7e1paWlJW1tbWltb09/ff9z1zz77bIaGhrJ06dKMjo5O+bAA\nAHC6Jg3gwcHBVKvVdHd359FHH021Ws3AwMBx13/5y1/O7bffPuVDAgDAVJn0FIij1qxZkyTp6ek5\n7qkNjz32WC6++OK0tbU5+gsAwP+sSQO4Wq2mVquNXa7VaqlWqxOu7evry9atW/OrX/0qe/fuzTnn\nnJMLLrggN9100zFr77vvvrGvOzo60tHRcarzAwBAkmT79u3Zvn372OWVK1dOuK6yY8eO4x6uHR4e\nzg033DD2IrjbbrstW7duTZJ0dXWlUqlk/fr1x/y7Bx54IOedd14+9KEPHXPbrl27snz58pN+QgAA\ncDJ6e3uzaNGiY66f9Ahwc3NzNmzYkLVr1yZJNm7cOHbb4ODgFI8IAABn3qRHgM8ER4ABADgbjncE\n2CfBAQBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAA\nAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEM\nAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUA\nAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEUR\nwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBR\nBDAAAEURwAAAFEUAAwBQFAEMAEBRThjAW7ZsSWdnZzo7O7Nt27bjrtuzZ0/Wrl2bm266Kbfcckt+\n//vfT+mgAAAwFZomu3F4eDhdXV3ZvHlz6vV61q1blxUrVkx8R01Nueeee3LZZZflhRdeyJo1a/Lb\n3/72jAwNAACnatIjwH19fWlvb09LS0va2trS2tqa/v7+Cde+4Q1vyGWXXZYkWbBgQUZGRjIyMjL1\nEwMAwGmY9Ajw4OBgqtVquru7M2/evFSr1QwMDGTJkiWT3unvfve7XHHFFZk+ffqUDgsAAKdr0gA+\nas2aNUmSnp6eVCqVSdfWarXcf//9efDBB09/OgAAmGKTBnC1Wk2tVhu7XKvVUq1Wj7u+Xq/nk5/8\nZD796U9n0aJFx1133333jX3d0dGRjo6Ok5kZAACOsX379mzfvn3s8sqVKydcN2kAL1u2LDLine truncated
"text": [
"<matplotlib.figure.Figure at 0x36598d0>"
"<matplotlib.figure.Figure at 0x3918690>"
]
}
],
@@ -782,9 +782,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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\nMAAARRHAAAAUZb8BvHz58rS3t2fKlClZtWrVsGur1WqmTZuWc889N1dcccWIDQkAACOlebgba7Va\nuru7U61WMzg4mDlz5mT+/Pl7Xfvuu+/mmmuuyf33359Zs2bllVdeOSwDAwDAoRh2B7haraajoyOT\nJk1KW1tb2trasm7dur2u/ctf/pJJkyZl1qxZSZKTTz555KcFAIBDNGwADwwMpFKpZNmyZXnooYfS\n2tqavr6+va596aWXMn78+Fx88cWZMWNG7rnnnsMyMAAAHIphT4F434IFC5IkK1asSFNT017XDA4O\nZs2aNfnb3/6W8ePH58ILL8wXvvCFnH322SM3LQAAHKJhA7hSqXxgx7e/vz+VSmWva1tbW3Puuefm\n9NNPT5LMnDkzzz777F4DuKenZ+jjzs7OdHZ2HtTwAADwvt7e3vT29g5dnjdv3l7XDRvAF110UZ55\n5pls3bo1g4OD2bRpU6ZNm5YkWbRoUZqamrJ48eIkyYUXXpiXXnopr732Wo4//vg8/fTTmTx58l7v\nt7u7+6A+KQAA2Jf/3Fhdu3btXtcNG8AtLS3p6enJ7NmzkyRLly4duq2/v/8Dp0OMHz8+S5cuzdy5\nc7Njx45cffXVaW9vP6RPAgAARlpTvV6vH8kHXL16dWbMmHEkHxIAgAKtXbs2XV1de1zvneAAACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCj7DeDly5envb09U6ZMyapVq/Z7h2+++WZOO+20LFmyZEQGBACAkdQ83I21\nWi3d3d2pVqsZHBzMnDlzMn/+/GHv8Pvf/34uvPDCNDU1jeigAAAwEobdAa5Wq+no6MikSZPS1taW\ntra2rFu3bp/r169fn61bt2bmzJmp1+sjPiwAAByqYQN4YGAglUoly5Yty0MPPZTW1tb09fXtc/2i\nRYvyve99b6RnBACAETPsKRDvW7BgQZJkxYoV+zy1YeXKlWlvb09bW5vdXwAAPrSGDeBKpfKBHd/+\n/v5UKpW9rn3iiSfy8MMP5ze/+U22bduWUaNG5bTTTsuXv/zlPdb29PQMfdzZ2ZnOzs6DnR8AAJIk\nvb296e3tHbo8b968va5rqg+zXVur1TJ16tShJ8HNnTs3GzZsSPLe6Q5NTU1ZvHjxHv/ujjvuyNix\nY3PzzTfvcdvq1aszY8aMA/6EAADgQKxduzZdXV17XD/sDnBLS0t6enoye/bsJMnSpUuHbuvv7/dK\nDwAAfOQMuwN8ONgBBgDgSNjXDrB3ggMAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAouw3gJcvX5729vZMmTIlq1at\n2ue6zZs3p7OzM5/61Kcyc+bMPPbYYyM6KAAAjITm4W6s1Wrp7u5OtVrN4OBg5syZk/nz5+917ejR\no3PPPffkvPPOy0svvZRZs2Zl06ZNh2VoAAA4WMPuAFer1XR0dGTSpElpa2tLW1tb1q1bt9e1p5xy\nSs4777wkyRlnnJFarZYdO3aM/MQAAHAIht0BHhgYSKVSybJlyzJhwoS0tramr68v06dPH/ZOf/e7\n32XmzJkZPXr0iA4LAACHatgAft+CBQuSJCtWrEhTU9Owa/v7+3PLLbfkkUceOfTpAABghA0bwJVK\nJX19fUOX+/v7U6lU9rl+cHAwX/rSl7JkyZKcffbZ+1zX09Mz9HFnZ2c6OzsPZGYAANhDb2Line truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF6ZJREFUeJzt3W1s1Xf9//HXGaUg42qdZ7YQlm2hDh1sGTEas5oNM+nG\nLhLmRSBGjNEbGiUu4G9OjFHv6JypmcmcE83yM0ZtJJKZGaZUhxfEG4s2rrqlyDIvYCP0NGUDxnZa\noP8b+1H+SikChbPt83jc6jnnwznvfoGeJx++55zKjh07RgMAAIW4oNEDAADA+SSAAQAoigAGAKAo\nAhgAgKIIYAAAiiKAAQAoyikD+Gtf+1quu+663Hbbbae8sy1btqSzszOdnZ3Ztm3bpAwIAACT6ZQB\nvHz58nznO9855R0NDw+nq6srP/7xj/O///u/+cpXvjIpAwIAwGQ6ZQBfe+21mTt37invqK+vL+3t\n7WlpaUlbW1taW1vT398/KUMCAMBkaZqsOxocHEy1Wk13d3fmzJmTarWagYGBLFq0aLIeAgAAztqk\nBfAxq1atSpL09PSkUqlM9t0DAMBZmbQArlarqdVqY5drtVqq1eoJ6/7xj39kypQpk/WwAAAwrnq9\nnoULF55w/RkHcFdXVyqVStatW5ckWbJkSXbu3JmhoaHU6/Xs3bt33NMfpkyZkqVLl57pw56WRx55\n5L9694oSOBbHORbHORbHORbHORbHORbHORavcByOey0ci97e3nGvP2UAf/nLX05PT0+ef/75XH/9\n9fnSl76UZcuWZXBw8N/WNTc3Z/369Vm9enWSZMOGDZMwNgAATK5TBvAXv/jFfPGLXzzh+q9+9asn\nXLdixYqsWLFiciYDAIBz4HX9SXBvfvObGz3Cq4ZjcZxjcZxjcZxjcZxjcZxjcZxj8QrH4bjX8rGo\n7NixY/R8PuCuXbvO2znAAACUq7e3NwsWLDjh+tf1DjAAAPwnAQwAQFEEMAAARRHAAAAURQADAFAU\nAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU\nRQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwA\nQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQAD\nAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU5ZQBvGXLlnR2dqazszPbtm2b\ncO3999+fW265Jbfcckvuv//+SRsSAAAmS9NENw4PD6erqyubNm1KvV7PmjVrsmzZsnHX7tq1Kz/7\n2c/yy1/+MkeOHMnNN9+clStXZv78+edkcAAAOBMT7gD39fWlvb09LS0taWtrS2tra/r7+8ddO3Pm\nzDQ1NeXll19OvV7P1KlTM2vWrHMyNAAAnKkJd4AHBwdTrVbT3d2dOXPmpFqtZmBgIIsWLTph7UUX\nXZQ1a9bkhhtuyNGjR/PZz342s2fPPmeDAwDAmZgwgI9ZtWpVkqSnpyeVSmXcNbt37053d3cee+yx\njIyMZPXq1bnhhhtSrVYnb1oAADhLEwZwtVpNrVYbu1yr1U4atH19fVmyZElmzpyZJHnrW9+ap556\nKtdff/0Ja++5556xrzs6OtLR0XFGwwMAwDHbt2/P9u3bxy4vX7583HUTBvCSJUuyc+fODA0NpV6v\nZ+/evWOnP3R1daVSqWTdunVJkgULFuQvf/lLhoeHc/To0Tz55JP51Kc+Ne793n333Wf0TQEAwMn8\n58Zqb2/vuOsmDODm5uasX78+q1evTpJs2LBh7LbBwcF/W7tkyZK85z3vycqVK5MkH/jAB3LFFVec\n2fQAAHCOVHbs2DF6Ph9w165dWbp06fl8SAAACtTb25sFCxaccL1PggMAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\nopwygLds2ZLOzs50dnZm27ZtE6594oknctttt2XFihW58847J21IAACYLE0T3Tg8PJyurq5s2rQp\n9Xo9a9asybJly8Zde/To0dx111356le/mqVLl2bfvn3nZGAAADgbE+4A9/X1pb29PS0tLWlra0tr\na2v6+/vHXfvXv/41LS0tWbp0aZLkoosumvxpAQDgLE0YwIODg6lWq+nu7s6jjz6aarWagYGBcdfu\n2bMns2bNysc+9rGsXLkyP/rRj87JwAAAcDYmPAXimFWrViVJenp6UqlUxl1Tr9fT29ubn//855k5\nc2be+9735l3velcWLFgwedMCAMBZmjCAq9VqarXa2OVarZZqtXrStQsXLkxra2uSZPHixXnmmWfG\nDeB77rln7OuOjo50dHSc0fAAAHDM9u3bs3379rHLy5cvH3fdhAG8ZMmS7Ny5M0NDQ6nX69m7d28W\nLVqUJOnq6kqlUsm6deuSvBK8zz33XF544YW84Q1vyN/+9rdceuml497v3XfffUbfFAAAnMx/bqz2\n9vaOu27CAG5ubs769euzevXqJMmGDRvGbhscHPy3tbNmzcqGDRvy4Q9/OIcPH85tt92Wyy+//Iy/\nAQAAOBcqO3bsGD2fD7hr166xd4oAAIBzpbe3d9zTcX0SHAAARRHAAAAURQADAFAUAQwAQFEEMAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwA\nQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQAD\nAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHA\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU5ZQBvGXL\nlnR2dqazszPbtm075R0ePHgwHR0deeihhyZlQAAAmExNE904PDycrq6ubNq0KfV6PWvWrMmyZcsm\nvMMHH3wwixcvTqVSmdRBAQBgMky4A9zX15f29va0tLSkra0tra2t6e/vP+n6Z555JkNDQ1m8eHFG\nR0cnfVgAADhbEwbw4OBgqtVquru78+ijj6ZarWZgYOCk67/xjW9k7dq1kz4kAABMlglPgThm1apV\nSZKenp6Tntrw2GOP5bLLLktbW5vdXwAAXrUmDOBqtZparTZ2uVarpVqtjru2r68vW7duza9//evs\n27cvF1xwQS655JLceuutJ6y95557xr7u6OhIR0fHmc4PAABJku3bt2f79u1jl5cvXz7uusqOHTtO\nul07PDycm2++eexFcB/+8IezdevWJElXV1cqlUrWrVt3wq+7//77c+GFF+YjH/nICbft2rUrS5cu\nPe1vCAAATkdvb28WLFhwwvUT7gA3Nzdn/fr1Wb16dZJkw4YNY7cNDg5O8ogAAHDuTbgDfC7YAQYA\n4Hw42Q6wT4IDAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgA\ngKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAG\nAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKA\nAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKII\nYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAo\nAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKKcMoC3bNmSzs7OdHZ2Ztu2bSddt3fv3qxevTq33npr\n7rjjjvzhD3+Y1EEBAGAyNE104/DwcLq6urJp06bU6/WsWbMmy5YtG/+OmprypS99KVdeeWWee+65\nrFq1Kr/73e/OydAAAHCmJtwB7uvrS3t7e1paWtLW1pbW1tb09/ePu/biiy/OlVdemSSZN29eRkZG\nMjIyMvkTAwDAWZhwB3hwcDDVajXd3d2ZM2dOqtVqBgYGsmjRognv9Pe//32uuuqqTJ06dVKHBQCA\nszVhAB+zatWqJElPT08qlcqEa2u1Wu6999488MADZz8dAABMsgkDuFqtplarjV2u1WqpVqsnXV+v\n1/PpT386n/3sZ7NgwYKTrrvnnnvGvu7o6EhHR8fpzAwAACfYvn17tm/fPnZ5+fLl466bMILine truncated
"text": [
"<matplotlib.figure.Figure at 0x3731e10>"
"<matplotlib.figure.Figure at 0x392f690>"
]
}
],
@@ -838,9 +838,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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\nQFEEMAAARRHAAAAU5ZABvGrVqnR2dmbGjBlZs2bNqGvr9XpmzZqViy66KFddddWYDQkAAGOldbQH\nG41Gent7U6/XMzw8nAULFmTx4sUHXPvaa6/l2muvzT333JN58+blH//4xzEZGAAAjsaoO8D1ej1d\nXV2ZNm1aOjo60tHRkY0bNx5w7R//+MdMmzYt8+bNS5KcddZZYz8tAAAcpVEDeGhoKLVaLStXrsx9\n992X9vb2DAwMHHDtM888k8mTJ+fyyy/PnDlzctdddx2TgQEA4GiMegrE65YsWZIkWb16dVpaWg64\nZnh4OOvWrcuf//znTJ48OZdeemk+/OEP54ILLhi7aQEA4CiNGsC1Wu0NO76Dg4Op1WoHXNve3p6L\nLroo5557bpJk7ty5eeKJJw4YwH19fSNfd3d3p7u7+4iGBwCA1/X396e/v3/k9qJFiw64btQAvuyy\ny/L4449n586dGR4eztatWzNr1qwkydKlS9PS0pJly5YlSS699NI888wzef755/PWt741jz32WKZP\nn37A5+3t7T2ibwoAAA7m/2+sbtiw4YDrRg3gtra29PX1Zf78+UmSFStWjDw2ODj4htMhJk+enBUr\nVmThwoXZvXt3rrnmmnR2dh7VNwEAAGOtpdlsNo/nC65duzZz5sw5ni8JAECBNmzYkJ6env3u90lw\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAU\nAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU\nRQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwA\nQFEEMAAARRHAAAAURQADAFCUQwbwqlWr0tnZmRkzZmTNmjWHfMKXXnop55xzTpYvXz4mAwIAwFhq\nHe3BRqOR3t7e1Ov1DA8PZ8GCBVm8ePGoT/jNb34zl156aVpaWsZ0UAAAGAuj7gDX6/V0dXVl2rRp\n6ejoSEdHRzZu3HjQ9Zs2bcrOnTszd+7cNJvNMR8WAACO1qgBPDQ0lFqtlpUrV+a+++5Le3t7BgYG\nDrp+6dKl+cY3vjHWMwIAwJgZ9RSI1y1ZsiRJsnr16oOe2vDggw+ms7MzHR0ddn8BADhhjRrAtVrt\nDTu+g4ODqdVqB1z7yCOP5P77788vfvGLPPvssxk3blzOOeecfPKTn9xvbV9f38jX3d3d6e7uPtL5\nAQAgSdLf35/+/v6R24sWLTrgupbmKNu1jUYjM2fOHLkIbuHChdm8eXOSf5/u0NLSkmXLlu335267\n7bZMnDgxX/rSl/Z7bO3atZkzZ85hf0MAAHA4NmzYkJ6env3uH3UHuK2tLX19fZk/f36SZMWKFSOP\nDQ4OeqcHAADedEbdAT4W7AADAHA8HGwH2CfBAQBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBR\nBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQ\nFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAA\nFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAA\nAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEM\nAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRDhnAq1atSmdnZ2bM\nmJE1a9YcdN22bdvS3d2dd7/73Zk7d24efvjhMR0UAADGQutoDzYajfT29qZer2d4eDgLFizI4sWL\nD7h2/Pjxueuuu3LxxRfnmWeeybx587J169ZjMjQAABypUXeA6/V6urq6Mm3atHR0dKSjoyMbN248\n4Nqzzz47F198cZLkvPPOS6PRyO7du8d+YgAAOAqj7gAPDQ2lVqtl5cqVmTJlStrb2zMwMJDZs2eP\n+qS/+tWvMnfu3IwfP35MhwUAgKM1agC/bsmSJUmS1atXp6WlZdS1g4OD+fKXv5wHHnjg6KcDAIAx\nNmoA12q1DAwMjNweHBxMrVY76Prh4eF8/OMfz/Lly3PBBRccdF1fX9/I193d3enu7j6cmQLine truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF9hJREFUeJzt3W1s3XX9//HXYV03xq4oHmi3jABZZcKGYSEaQw3O4AoD\nTIYX2WKYMXpDo0Sz+UOcMeAdRU0NJogwDfkZozYuLhrM0FWZF4s3iDRSkXSO4MWAZT1NJ9sYnHZb\nfzf4r/vrus5t3Q7s83jc6jnns3Pe55Olffbb7zmnsn379tEAAEAhzmv0AAAAcDYJYAAAiiKAAQAo\nigAGAKAoAhgAgKIIYAAAinLCAP7qV7+a66+/PrfddtsJ72zz5s3p7OxMZ2dntm7dOikDAgDAZDph\nAC9fvjwPP/zwCe9oeHg4XV1d+dGPfpT//d//zZe//OVJGRAAACbTCQP42muvzdy5c094R319fWlv\nb09LS0va2trS2tqa/v7+SRkSAAAmS9Nk3dHg4GCq1Wq6u7szZ86cVKvVDAwMZNGiRZP1EAAAcNom\nLYCPWLVqVZKkp6cnlUplsu8eAABOy6QFcLVaTa1WG7tcq9VSrVaPWff3v/89U6ZMmayHBQCAcdXr\n9SxcuPCY6085gLu6ulKpVLJ27dokyZIlS7Jjx44MDQ2lXq9n9+7d457+MGXKlCxduvRUH/akPPro\no//Vu1eUwF4cZS+OshdH2Yuj7MVR9uIoe/Ea+3DUG2Event7x73+hAH8pS99KT09PfnXv/6VG264\nIffee2+WLVuWwcHBf1vX3NycdevWZfXq1UmS9evXT8LYAAAwuU4YwPfcc0/uueeeY67/yle+csx1\nK1asyIoVKyZnMgAAOAPO6U+Ce/Ob39zoEV437MVR9uIoe3GUvTjKXhxlL46yF6+xD0e9kfeisn37\n9tGz+YA7d+48a+cAAwBQrt7e3ixYsOCY68/pI8AAAPCfBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAA\nAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEM\nAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUA\nAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEUR\nwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBR\nBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQlBMG8ObNm9PZ2ZnOzs5s3bp1wrUP\nPPBAbrnlltxyyy154IEHJm1IAACYLE0T3Tg8PJyurq5s3Lgx9Xo9a9asybJly8Zdu3PnzvzsZz/L\nL3/5yxw6dCg333xzVq5cmfnz55+RwQEA4FRMeAS4r68v7e3taWlpSVtbW1pbW9Pf3z/u2pkzZ6ap\nqSmvvvpq6vV6pk6dmlmzZp2RoQEA4FRNeAR4cHAw1Wo13d3dmTNnTqrVagYGBrJo0aJj1l544YVZ\ns2ZN3vWud+Xw4cP53Oc+l9mzZ5+xwQEA4FRMGMBHrFq1KknS09OTSqUy7prnn38+3d3defzxxzMy\nMpLVq1fnXe96V6rV6uRNCwAAp2nCAK5Wq6nVamOXa7XacYO2r68vS5YsycyZM5MkV111VZ555pnc\ncMMNx6y97777xr7u6OhIR0fHKQ0PAABHbNu2Ldu2bRu7vHz58nHXTRjAS5YsyY4dOzI0NJR6vZ7d\nu3ePnf7Q1dWVSqWStWvXJkkWLFiQP//5zxkeHs7hw4fzl7/8JZ/61KfGvd+77777lJ4UAAAcz38e\nWO3t7R133YQB3NzcnHXr1mX16tVJkvXr14/dNjg4+G9rlyxZkve85z1ZuXJlkuSDH/xgrrjiilOb\nHgAAzpDK9u3bR8/mA+7cuTNLly49mw8JAECBent7s2DBgmOu90lwAAAURQADAFAUAQwAQFEEMAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwA\nQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQAD\nAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHA\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFCU\nEwbw5s2b09nZmc7OzmzdunXCtU899VRuu+22rFixIp/5zGcmbUgAAJgsTRPdODw8nK6urmzcuDH1\nej1r1qzJsmXLxl17+PDh3HXXXfnKV76SpUuXZs+ePWdkYAAAOB0THgHu6+tLe3t7Wlpa0tbWltbW\n1vT394+79umnn05LS0uWLl2aJLnwwgsnf1oAADhNEwbw4OBgqtVquru789hjj6VarWZgYGDctbt2\n7cqsWbPysY99LCtXrswPf/jDMzIwAACcjglPgThi1apVSZKenp5UKpVx19Tr9fT29ubnP/95Zs6c\nmfe973155zvfmQULFkzetAAAcJomDOBqtZparTZ2uVarpVqtHnftwoUL09ramiRZvHhxnnvuuXED\n+L777hv7uqOjIx0dHac0PAAAHLFt27Zs27Zt7PLy5cvHXTdhAC9ZsiQ7duzI0NBQ6vV6du/enUWL\nFiVJurq6UqlUsnbt2iSvBe+LL76Yl156Keeff37++te/5tJLLx33fu++++5TelIAAHA8/3lgtbe3\nd9x1EwZwc3Nz1q1bl9WrVydJ1q9fP3bb4ODgv62dNWtW1q9fnw9/+MM5ePBgbrvttlx++eWn/AQA\nAOBMqGzfvn30bD7gzp07x94pAgAAzpTe3t5xT8f1SXAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\nABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUJQTBvDmzZvT\n2dmZzs7ObN269YR3uH///nR0dOSRRx6ZlAEBAGAyNU104/DwcLq6urJx48bU6/WsWbMmy5Ytm/AO\nH3rooSxevDiVSmVSBwUAgMkw4RHgvr6+tLe3p6WlJW1tbWltbU1/f/9x1z/33HMZGhrK4sWLMzo6\nOunDAgDA6ZowgAcHB1OtVtPd3Z3HHnss1Wo1AwMDx13/jW98I3feeeekDwkAAJNlwlMgjli1alWS\npKen57inNjz++OO57LLL0tbW5ugvAACvWxMGcLVaTa1WG7tcq9VSrVbHXdvX15ctW7bk17/+dfbs\n2ZPzzjsvF198cW699dZj1t53331jX3d0dKSjo+NU5wcAgCTJtm3bsm3btrHLy5cvH3ddZfv27cc9\nXDs8PJybb7557EVwH/7wh7Nly5YkSVdXVyqVStauXXvMv3vggQdywQUX5CMf+cgxt+3cuTNLly49\n6ScEAAAno7e3NwsWLDjm+gmPADc3N2fdunVZvXp1kmT9+vVjtw0ODk7yiAAAcOZNeAT4THAEGACA\ns+F4R4B9EhwAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAA\nFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAA\nAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEM\nAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUA\nAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEUR\nwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFOWEAbx58+Z0dnams7MzW7duPe663bt3Z/Xq1bn11ltz\n++235w9/+MOkDgoAAJOhaaIbh4eH09XVlY0bN6Zer2fNmjVZtmzZ+HfU1JR77703V155ZV588cWs\nWrUqv/vd787I0AAAcKomPALc19eX9vb2tLS0pK2tLa2trenv7x937UUXXZQrr7wySTJv3ryMjIxk\nZGRk8icGAIDTMOER4MHBwVSr1XR3d2fOnDmpVqsZGBjIokWLJrzT3//+97n66qszderUSR0WAABO\n14QBfMSqVauSJD09PalUKhOurdVq+drXvpYHH3zw9KcDAIBJNmEAV6vV1Gq1scu1Wi3VavW46+v1\nej796U/nc5/7XBYsWHDcdffdd9/Y1x0dHeno6DiZmQEA4Bjbtm3Ltm3bxi4vX7583HUTBvLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3749050>"
"<matplotlib.figure.Figure at 0x3928e90>"
]
}
],
@@ -875,9 +875,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGD9JREFUeJzt3X2s1nX9x/HXwcPxFlAEO5d5vIF2IE9CgrSCszVksSz8\nw83QbJktGzqd3czq0M1WbdHZiqLfloZrc8tmCyctZbUy1h8dcpcZxcwmgXkz4JwD5g2aHi/A6/dH\n8zADDgkHvsjn8fjrXNf18bre5zvgPP2c73V9W5rNZjMAAFCIMVUPAAAAR5MABgCgKAIYAICiCGAA\nAIoigAEAKIoABgCgKAcN4FtvvTXt7e256KKLDvpkq1atSmdnZ6ZNm5Y1a9aMyoAAADCaWg72OcAP\nPvhg2tract111+WRRx454LpGo5Hp06enXq9naGgo8+fPz+bNm0d9YAAAOBwH3QF+3/velzPPPPOg\nT1Sv19PV1ZXJkyeno6MjHR0d2bBhw6gMCQAAo6V1tJ5ocHAwtVotK1euzMSJE9Pe3p7+/v7MnDlz\ntF4CAAAO26gF8OuWLFmSJFm9enVaWlpG++kBAOCwjFoA12q19Pf3D98eGBhIrVbbZ91vf/vbnHDC\nCaP1sgAAcEALFizY575DDuClS5empaUly5YtS5LMmTMnjz76aHbs2JGhoaFs2bIlM2bM2Oe/O+GE\nEzJr1qxDfdk35f7778/ll19+VF7rWOdY7OVY7OVY7OVY7OVY7OVY7OVY/IfjsNdb4VisX79+v/cf\n9E1wN910U+bOnZuNGzemo6Nj+OPNBgYGMjAwMLyura0tvb29mTdvXhYsWJAVK1aM0ugAADB6DroD\n/MMf/jA//OEP97n/zjvv3Oe+xYsXZ/HixaMzGQAAHAHH9ZXgOjs7qx7hmOFY7OVY7OVY7OVY7OVY\n7OVY7OVY/IfjsNdb+Vgc9EIYo23t2rVH7RxgAADKtX79+v2+Ce643gEGAID/JoABACiKAAYAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAohw0gFetWpXO\nzs5MmzYta9asGXHtN77xjXR1daWrqyvf/OY3R21IAAAYLa0jPdhoNNLT05N6vZ6hoaHMnz8/ixYt\n2u/aJ554InfddVf+8Y9/ZM+ePZk+fXo+8YlP5LzzzjsigwMAwKEYcQe4Xq+nq6srkydPTkdHRzo6\nOrJhw4b9rh0/fnzGjh2bV155Ja+88kra2toyYcKEIzI0AAAcqhF3gAcHB1Or1bJy5cpMnDgx7e3t\n6e/vz8yZM/dZe+aZZ+Yzn/lMOjo68tprr2X58uU5/fTTj9jgAABwKEYM4NctWbIkSbJ69eq0tLTs\nd82TTz6ZH/3oR3nqqafSaDQyb968fPjDH057e/voTQsAAIdpxACu1Wrp7+8fvj0wMJBarbbftfV6\nPXPmzMm4ceOSJBdffHH+8pe/5LLLLttnbW9v7/DX3d3d6e7uPqThAQDgdX19fenr6xu+vXDhwv2u\na2k2m80DPUmj0cj06dOH3wR36aWXZtOmTUmSpUuXpqWlJcuWLUuSPPzww7n++uvz0EMPZc+ePXn3\nu9+d++67L9OmTXvDc65duzazZs067G8QAABGsn79+ixYsGCf+0fcAW5ra0tvb2/mzZuXJFmxYsXw\nYwMDA284HeKSSy7JFVdckYsvvjhJ8ulPf3qf+AUAgKqNuAN8JNgBBgDgaDjQDrArwQEAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\nABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQw\nAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQB\nDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQ4awKtWrUpnZ2emTZuWNWvWjLi2Xq9nxowZufDCC3PVVVeN2pAAADBaWkd6sNFo\npKenJ/V6PUNDQ5k/f34WLVq037WvvfZarr322tx5552ZO3du/vWvfx2RgQEA4HCMuANcr9fT1dWV\nyZMnp6OjIx0dHdmwYcN+1/75z3/O5MmTM3fu3CTJmWeeOfrTAgDAYRoxgAcHB1Or1bJy5crcc889\naW9vT39//37XPv3005kwYUIuu+yyzJo1K7fffvsRGRgAAA7HiKdAvG7JkiVJktWrV6elpWW/a4aG\nhrJu3br87W9/y4QJE3LJJZfkgx/8YC644ILRmxYAAA7TiAFcq9XesOM7MDCQWq2237Xt7e258MIL\nc8455yRJZs+enccee2y/Adzb2zv8dXd3d7q7uw9peAAAeF1fX1/6+vqGby9cuHC/60YM4Dlz5uTR\nRx/Njh07MjQ0lC1btmTGjBlJkqVLl6alpSXLli1LklxyySV5+umn89xzz+XUU0/NI488kqlTp+73\neXt6eg7pmwIAgAP5743V9evX73fdiAHc1taW3t7ezJs3L0myYsWK4ccGBgbecDrEhAkTsmLFilx6\n6aXZtWtXPvaxj6Wzs/OwvgkAABhtLc1ms3k0X3Dt2rWZNWvW0XxJAAAKtH79+ixYsGCf+10JDgCA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKctAAXrVqVTo7OzNt2rSsWbPmoE/44osv5uyzz87y5ctHZUAAABhNrSM9\n2Gg00tPTk3q9nqGhocyfPz+LFi0a8Qm/9a1v5ZJLLklLS8uoDgoAAKNhxB3ger2erq6uTJ48OR0d\nHeno6MiGDRsOuH7jxo3ZsWNHZs+enWazOerDAgDA4RoxgAcHB1Or1bJy5crcc889aW9vT39//wHX\nL126NF//+tdHe0YAABg1I54C8bolS5YkSVavXn3AUxvuv//+dHZ2pqOjw+4vAADHrBEDuFarvWHH\nd2BgILVabb9rH3roodx777355S9/mWeeeSZjxozJ2WefnY9+9KP7rO3t7R3+uru7O93d3Yc6PwAA\nJEn6+vrS19c3fHvhwoX7XdfSHGG7ttFoZPr06cNvgrv00kuzadOmJP853aGlpSXLli3b57/7xje+\nkXHjxuXzn//8Po+tXbs2s2bNetPfEAAAvBnr16/PggUL9rl/xB3gtra29Pb2Zt68eUmSFStWDD82\nMDDgkx4AAHjLGXEH+EiwAwwAwNFwoB1gV4IDAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKII\nYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAo\nAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAorVUPULL+na9m+0uNqscY\ndWed1pba+BOrHgMAYL8EcIW2v9TIF361ueoxRt13PvQOAQwAHLOcAgEAQFEEMAAARRHAAAAURQAD\nAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHA\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU5aABvGrVqnR2dmbatGlZs2bNAddt3bo13d3d\nede73pXZs2fnd7/73agOCgAAo6F1pAcbjUZ6enpSr9czNDSU+fPnZ9GiRftdO3bs2Nx+++256KKL\n8vTTT2fu3LnZsmXLERkaAAAO1Yg7wPV6PV1dXZk8eXI6OjrS0dGRDRs27HftWWedlYsuuihJcu65\n56bRaGTXrl2jPzEAAByGEXeABwcHU6vVsnLlykycODHt7e3p7+/PzJkzR3zS3/zmN5k9e3bGjh07\nqsMCAMDhGjGAX7dkyZIkyerVq9PS0jLi2oGBgdx666257777Dn86AAAYZSMGcK1WS39///Line truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF/pJREFUeJzt3W1s3XX9//HXYV03x64oHmi3jIBZZcKmYSEaQw3O6Arl\nIhleZIthxOgNjRLNpogzBr0jCKnRBFGGIRqjNi4SDWboqsyLxRtEGilIOkfwYsCynqaTbQxOu62/\nG/zp/riuk63bgX0ej1s953w4591vSPvcp99zvpXt27ePBQAACnFWowcAAIDTSQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFCU4wbwN77xjVxxxRW57rrrjvtkmzdvTmdnZzo7O7N169YpGRAAAKbScQN4\n5cqVuffee4/7RCMjI+nu7s5Pf/rT/OAHP8jXv/71KRkQAACm0nED+LLLLsv8+fOP+0T9/f1pb29P\nS0tL2tra0tramoGBgSkZEgAApkrTVD3R0NBQqtVqenp6Mm/evFSr1QwODmbJkiVT9RIAAHDSpiyA\nX7F69eokSW9vbyqVylQ/PQAAnJQpC+BqtZparTZ+u1arpVqtHrXun//8Z6ZNmzZVLwsAABOq1+tZ\nvHjxUfefcAB3d3enUqlk3bp1SZJly5Zlx44dGR4eTr1ez+7duyc8/WHatGlZvnz5ib7sa/Lggw/+\nT59eUQLH4gjH4gjH4gjH4gjH4gjH4gjH4mWOwxFvhGPR19c34f3HDeCvfe1r6e3tzX/+859ceeWV\n+epXv5oVK1ZkaGjoVeuam5uzfv36rFmzJkmyYcOGKRgbAACm1nED+Lbbbsttt9121P233377Ufd1\ndXWlq6traiYDAIBT4Iy+Etxb3/rWRo/wuuFYHOFYHOFYHOFYHOFYHOFYHOFYvMxxOOKNfCwq27dv\nHzudL7hz587Tdg4wAADl6uvry6JFi466/4zeAQYAgP8mgAEAKIoABgCgKAIYAICiCGAAAIoigAEA\nKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAA\nAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIY\nAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoA\nBgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoi\ngAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiHDeAN2/enM7OznR2dmbr1q2Trr37\n7rtzzTXX5Jprrsndd989ZUMCAMBUaZrswZGRkXR3d2fTpk2p1+tZu3ZtVqxYMeHanTt35pe//GV+\n85vf5NChQ7n66quzatWqLFy48JQMDgAAJ2LSHeD+/v60t7enpaUlbW1taW1tzcDAwIRrZ8+enaam\nprz00kup1+uZPn165syZc0qGBgCAEzXpDvDQ0FCq1Wp6enoyb968VKvVDA4OZsmSJUetPeecc7J2\n7dq8973vzeHDh/PFL34xc+fOPWWDAwDAiZg0gF+xevXqJElvb28qlcqEa5555pn09PTk4Ycfzujo\naNasWZP3vve9qVarUzctAACcpEkDuFqtplarjd+u1WrHDNr+/v4sW7Yss2fPTpJccsklefLJJ3Pl\nlVcetfaOO+4Y/7qjoyMdHR0nNDwAALxi27Zt2bZt2/jtlStXTrhu0gBetmxZduzYkeHh4dTr9eze\nvXv89Ifu7u5UKpWsW7cuSbJo0aI8/vjjGRkZyeHDh/O3v/0tn/nMZyZ83ltvvfWEvikAADiW/95Y\n7evrm3DdpAHc3Nyc9evXZ82aNUmSDRs2jD82NDT0qrXLli3LBz7wgaxatSpJ8pGPfCRvectbTmx6\nAAA4RSrbt28fO50vuHPnzixfvvx0viQAAAXq6+vLokWLjrrfleAAACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\nACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghg\nAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCjH\nDeDNmzens7MznZ2d2bp166RrH3vssVx33XXp6urK5z73uSkbEgAApkrTZA+OjIyku7s7mzZtSr1e\nz9q1a7NixYoJ1x4+fDi33HJLbr/99ixfvjx79uw5JQMDAMDJmHQHuL+/P+3t7WlpaUlbW1taW1sz\nMDAw4donnngiLS0tWb58eZLknHPOmfppAQDgJE0awENDQ6lWq+np6clDDz2UarWawcHBCdfu2rUr\nc+bMySc+8YmsWrUqP/nJT07JwAAAcDImPQXiFatXr06S9Pb2plKpTLimXq+nr68vv/rVrzJ79ux8\n8IMfzHve854sWrRo6qYFAICTNGkAV6vV1Gq18du1Wi3VavWYaxcvXpzW1tYkydKlS/P0009PGMB3\n3HHH+NcdHR3p6Og4oeEBAOAV27Zty7Zt28Zvr1y5csJ1kwbwsmXLsmPHjgwPD6der2f37t1ZsmRJ\nkqS7uzuVSiXr1q1L8nLwPvfcc3n++efzpje9KX//+99zwQUXTPi8t9566wl9UwAAcCz/vbHa19c3\n4bpJA7i5uTnr16/PmjVrkiQbNmwYf2xoaOhVa+fMmZMNGzbkpptuysGDB3PdddfloosuOuFvAAAA\nToXK9u3bx07nC+7cuXP8kyIAAOBU6evrm/B0XFeCAwCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIY\nAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoA\nBgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoi\ngAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICi\nCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCg\nKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiHDeAN2/enM7O\nznR2dmbr1q3HfcL9+/eno6Mj999//5QMCAAAU6lpsgdHRkbS3d2dTZs2pV6vZ+3atVmxYsWkT/i9\n730vS5cuTaVSmdJBAQBgKky6A9zf35/29va0tLSkra0tra2tGRgYOOb6p59+OsPDw1m6dGnGxsam\nfFgAADhZkwbw0NBQqtVqenp68tBDD6VarWZwcPCY67/5zW/m5ptvnvIhAQBgqkx6CsQrVq9enSTp\n7e095qkNDz/8cC688MK0tbXZ/QUA4HVr0gCuVqup1Wrjt2u1WqrV6oRr+/v7s2XLlvzud7/Lnj17\nctZZZ+W8887Ltddee9TaO+64Y/zrjo6OdHR0nOj8AACQJNm2bVu2bds2fnvlypUTrqts3779mNu1\nIyMjufrqq8ffBHfTTTdly5YtSZLu7u5UKpWsW7fuqP/u7rvvztlnn52PfexjRz22c+fOLF++/DV/\nQwAA8Fr09fVl0aJFR90/6Q5wc3Nz1q9fnzVr1iRJNmzYMP7Y0NDQFI8IAACn3qQ7wKeCHWAAAE6H\nY+0AuxIcAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFaWr0ACXbtbeewf0jjR5jyp03uzltc2c0egwAgAkJ4AYa3D+S\nL2x+qtFjTLm7uhYLYADgdcspEAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAA\nAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEM\nAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUA\nAwBQFAEMAEBRjhvAmzdvTmdnZzo7O7N169Zjrtu9e3fWrFmTa6+9NjfccEP+/Oc/T+mgAAAwFZom\ne3BkZCTd3d3ZtGlT6vV61q5dmxUrVkz8RE1N+epXv5qLL744zz33XFavXp0//vGPp2RoAAA4UZPu\nAPf396e9vT0tLS1pa2tLa2trBgYGJlx77rnn5uKLL06SLFiwIKOjoxkdHZ36iQEA4CRMugM8NDSU\narWanp6ezJs3L9VqNYODg1myZMmkT/qnP/0pl156aaZPnz6lwwIAwMmaNIBfsXr16iRJb29vKpXK\npGtrtVruvPPO3HPPPSc/HQAATLFJA7haraZWq43frtVqqVarx1xfr9fz2c9+Nl/84hezaNLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3748bd0>"
"<matplotlib.figure.Figure at 0x394e710>"
]
}
],
@@ -904,9 +904,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGABJREFUeJzt3W1s3XX9//HXYV03x66oHmy3jABZZcKmYSEaQw3M4AoF\nTIYX2WKcMXpDo0SzKeKMAe8IQmowQYRhiMaojYtEgxm6KvNi8YaRRiqSzhG8GLCsp+lkG4PTbuvv\nBn+6v67r3NbtwD6Px62ecz6c8+43rH3us+/3nMr27dvHAgAAhTin0QMAAMCZJIABACiKAAYAoCgC\nGACAoghgAACKIoABACjKcQP461//eq688srceOONx32yzZs3p7OzM52dndm6deuUDAgAAFPpuAG8\ncuXKPPDAA8d9opGRkXR3d+dHP/pRvvvd7+ZrX/valAwIAABT6bgBfPnll2f+/PnHfaL+/v60t7en\npaUlbW1taW1tzcDAwJQMCQAAU6Vpqp5oaGgo1Wo1PT09mTdvXqrVagYHB7NkyZKpegkAADhlUxbA\nr1q9enWSpLe3N5VKZaqfHgAATsmUBXC1Wk2tVhu/XavVUq1Wj1r3j3/8I9OmTZuqlwUAgAnV6/Us\nXrz4qPtPOoC7u7tTqVSybt26JMmyZcuyY8eODA8Pp16vZ/fu3ROe/jBt2rQsX778ZF/2hDzyyCP/\n07tXlMCxOMKxOMKxOMKxOMKxOMKxOMKxeIXjcMTr4Vj09fVNeP9xA/irX/1qent78+9//ztXXXVV\nbr/99qxYsSJDQ0P/sa65uTnr16/PmjVrkiQbNmyYgrEBAGBqHTeAb7vtttx2221H3X/HHXccdV9X\nV1e6urqmZjIAADgNzupPgnvLW97S6BFeMxyLIxyLIxyLIxyLIxyLIxyLIxyLVzgOR7yej0Vl+/bt\nY2fyBXfu3HnGzgEGAKBcfX19WbRo0VH3n9U7wAAA8N8EMAAARRHAAAAURQADAFAUAQwAQFEEMAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwA\nQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQAD\nAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHA\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFCU4wbw5s2b09nZmc7OzmzdunXStffe\ne2+uv/76XH/99bn33nunbEgAAJgqTZM9ODIyku7u7mzatCn1ej1r167NihUrJly7c+fO/OxnP8sv\nf/nLHDp0KNddd11WrVqVhQsXnpbBAQDgZEy6A9zf35/29va0tLSkra0tra2tGRgYmHDt7Nmz09TU\nlJdffjn1ej3Tp0/PnDlzTsvQAABwsibdAR4aGkq1Wk1PT0/mzZuXarWawcHBLFmy5Ki15513Xtau\nXZurr746hw8fzhe/+MXMnTv3tA0OAAAnY9IAftXq1auTJL29valUKhOuefbZZ9PT05PHHnsso6Oj\nWbNmTa6++upUq9WpmxYAAE7RpAFcrVZTq9XGb9dqtWMGbX9/f5YtW5bZs2cnSS699NI89dRTueqq\nq45ae+edd45/3dHRkY6OjpMaHgAAXrVt27Zs27Zt/PbKlSsnXDdpAC9btiw7duzI8PBw6vV6du/e\nPX76Q3d3dyqVStatW5ckWbRoUf7yl79kZGQkhw8fzl//+td85jOfmfB5b7311pP6pgAA4Fj+e2O1\nr69vwnWTBnBzc3PWr1+fNWvWJEk2bNgw/tjQ0NB/rF22bFne+973ZtWqVUmSD33oQ7n44otPbnoA\nADhNKtu3bx87ky+4c+fOLF++/Ey+JAAABerr68uiRYuOut8nwQEAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\nABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUY4b\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x374fa90>"
"<matplotlib.figure.Figure at 0x3b56d50>"
]
}
],
@@ -933,9 +933,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGFtJREFUeJzt3X+slnX9x/HXwcPxJ6AIem7zaIo7kCdBQVrB2RqyWBb+\n4VZUusyWDZ3Oylkd+rFVW3S2oui7peHa3LLVwklLWa2S9UeH3G1GMrNJYP4YcM4Bf6Ll6Qa8v380\nDzPgEHDkAj6Px1/nvu8P9/0+14DzPNd9XffV0mw2mwEAgEKMqXoAAAA4kgQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFOWAA33777Wlvb88ll1xywCdbuXJlOjs7M3Xq1KxevXpUBgQAgNHUcqDPAX7o\noYfS1taW66+/Po899th+1zUajUybNi31ej1DQ0OZN29eNm3aNOoDAwDA4TjgHuD3vOc9OfPMMw/4\nRPV6PV1dXZk8eXI6OjrS0dGR9evXj8qQAAAwWlpH64kGBwdTq9WyYsWKTJw4Me3t7env78+MGTNG\n6yUAAOCwjVoAv2Hx4sVJklWrVqWlpWW0nx4AAA7LqAVwrVZLf3//8O2BgYHUarW91v32t7/NCSec\nMFovCwAA+zV//vy97jvkAF6yZElaWlqydOnSJMns2bPz+OOPZ/v27RkaGsrmzZszffr0vf7cCSec\nkJkzZx7qyx6UBx54IFddddURea2jnW2xh22xh22xh22xh22xh22xh23xH7bDHsfCtli3bt0+7z/g\nSXA333xz5syZkw0bNqSjo2P4480GBgYyMDAwvK6trS29vb2ZO3du5s+fn+XLl4/S6AAAMHoOuAf4\nBz/4QX7wgx/sdf/dd9+9132LFi3KokWLRmcyAAB4CxzXV4Lr7OyseoSjhm2xh22xh22xh22xh22x\nh22xh23xH7bDHsfytjjghTBG25o1a47YMcAAAJRr3bp1+zwJ7rjeAwwAAP9NAAMAUBQBDABAUQQw\nAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQB\nDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFOWAAr1y5Mp2d\nnZk6dWpWr1494tqvf/3r6erqSldXV77xjW+M2pAAADBaWkd6sNFopKenJ/V6PUNDQ5k3b14WLly4\nz7VPPfVU7rnnnvz973/P7t27M23atHziE5/I+eef/5YMDgAAh2LEPcD1ej1dXV2ZPHlyOjo60tHR\nkfXr1+9z7fjx4zN27Ni89tpree2119LW1pYJEya8JUMDAMChGnEP8ODgYGq1WlasWJGJEyemvb09\n/f39mTFjxl5rzzzzzHzmM59JR0dHXn/99Sxbtiynn376WzY4AAAcihED+A2LFy9OkqxatSotLS37\nXPP000/nhz/8YZ555pk0Go3MnTs3H/zgB9Pe3j560wIAwGEaMYBrtVr6+/uHbw8MDKRWq+1zbb1e\nz+zZszNu3LgkyWWXXZa//OUvufLKK/da29vbO/x1d3d3uru7D2l4AAB4Q19fX/r6+oZvL1iwYJ/r\nWprNZnN/T9JoNDJt2rThk+CuuOKKbNy4MUmyZMmStLS0ZOnSpUmSRx55JDfccEMefvjh7N69O5de\nemnuv//+TJ069U3PuWbNmsycOfOwv0EAABjJunXrMn/+/L3uH3EPcFtbW3p7ezN37twkyfLly4cf\nGxgYeNPhEJdffnmuvvrqXHbZZUmST3/603vFLwAAVG3EPcBvBXuAAQA4Eva3B9iV4AAAKIoABgCg\nKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEA\nKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAA\nAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIY\nAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoA\nBgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoi\ngAEAKIoABgCgKAcM4JUrV6azszNTp07N6tWrR1xbr9czffr0XHzxxfnIRz4yakMCAMBoaR3pwUaj\nkZ6entTr9QwNDWXevHlZuHDhPte+/vrrue6663L33Xdnzpw5ef7559+SgQEA4HCMuAe4Xq+nq6sr\nkydPTkdHRzo6OrJ+/fp9rv3zn/+cyZMnZ86cOUmSM888c/SnBQCAwzRiAA8ODqZWq2XFihW59957\n097env7+/n2uffbZZzNhwoRceeWVmTlzZu688863ZGAAADgcIx4C8YbFixcnSVatWpWWlpZ9rhka\nGsratWvz17/+NRMmTMjll1+e97///bngggtGb1oAADhMIwZwrVZ70x7fgYGB1Gq1fa5tb2/PxRdf\nnHPPPTdJMmvWrDzxxBP7DODe3t7hr7u7u9Pd3X1IwwMAwBv6+vrS19c3fHvBggX7XDdiAM+ePTuP\nP/54tm/fnqGhoWzevDnTp09PkixZsiQtLS1ZunRpkuTyyy/Ps88+mxdffDGnnnpqHnvssUyZMmWf\nz9vT03NI3xQAAOzPf+9YXbdu3T7XjRjAbW1t6e3tzdy5c5Mky5cvH35sYGDgTYdDTJgwIcuXL88V\nV1yRnTt35tprr01nZ+dhfRMAADDaWprNZvNIvuCaNWsyc+bMI/mSAAAUaN26dZk/f/5e97sSHAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwA\nQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQAD\nAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHA\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAU\nAQwAQFEEMAAARRHAAAAU5YABvHLlynR2dmbq1KlZvXr1AZ/wlVdeyTnnnJNly5aNyoAAADCaWkd6\nsNFopKenJ/V6PUNDQ5k3b14WLlw44hN+85vfzOWXX56WlpZRHRQAAEbDiHuA6/V6urq6Mnny5HR0\ndKSjoyPr16/f7/oNGzZk+/btmTVrVprN5qgPCwAAh2vEAB4cHEytVsuKFSty7733pr29Pf39/ftd\nv2TJknzta18b7RkBAGDUjHgIxBsWL16cJFm1atV+D2144IEH0tnZmY6ODnt/AQA4ao0YwLVa7U17\nfAcGBlKr1fa59uGHH859992XX/7yl3nuuecyZsyYnHPOOfnYxz6219re3t7hr7u7u9Pd3X2o8wMA\nQJKkr68vfX19w7cXLFiwz3UtzRF21zYajUybNm34JLgrrrgiGzduTPKfwx1aWlqydOnSvf7c17/+\n9YwbNy633XbbXo+tWbMmM2fOPOhvCAAADsa6desyf/78ve4fcQ9wW1tbent7M3fu3CTJ8uXLhx8b\nGBjwSQ8AABxzRtwD/FawBxgAgCNhf3uAXQkOAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoi\ngAEAKIoABgCgKAIYAICijHgpZODI69/x72x7tVH1GKPqrNPaUht/YtVjAEASAQxHnW2vNvL5X22q\neoxR9e0PXCSAAThqOAQCAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIY\nAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoA\nBgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoi\ngAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICi\nCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKMoBA3jlypXp7OzM1KlTs3r16v2u27JlS7q7\nu/POd74zs2bNyoMPPjiqgwIAwGhoHenBRqORnp6e1Ov1DA0NZd68eVm4cOE+144dOzZ33nlnLrnk\nkjz77LOZM2dONm/e/JYMDQAAh2rEPcD1ej1dXV2ZPHlyOjo60tHRkfXr1+9z7VlnnZVLLrkkSXLe\neeel0Whk586doz8xAAAchhH3AA8ODqZWq2XFihWZOHFi2tvb09/fnxkzZoz4pL/5zW8ya9asjB07\ndlSHBQCAwzViAL9h8eLFSZJVq1alpaVlxLUDAwO5/fbbc//99x/+dAAAMMpGDOBarZb+/vLine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3760290>"
"<matplotlib.figure.Figure at 0x3916690>"
]
}
],
@@ -985,9 +985,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF9NJREFUeJzt3W9snXX9//HXYV03xv5RPdhuGQGyyoRNw0I0hhqcwRXK\nn2T4J1sMI0ZvaJBINr+oM0a9I6ip0QQRpyFfY9TGRYLBDF2V+WfxBpFGCpLOEfwzYFlP08E2Bqfd\n1u8NfnQ/XNfB1u3APo/HrZ1zPpzz7hVynWevXudcle3bt48FAAAKcVajBwAAgNNJAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUJTjBvA3vvGNXHHFFbn++uuP+2SbN29OZ2dnOjs7s3Xr1ikZEAAAptJx\nA3jlypX5wQ9+cNwnGhkZSXd3d37+85/nf//3f/P1r399SgYEAICpdNwAvuyyyzJ//vzjPlF/f3/a\n29vT0tKStra2tLa2ZmBgYEqGBACAqdI0VU80NDSUarWanp6ezJs3L9VqNYODg1myZMlUvQQAAJy0\nKQvgV6xevTpJ0tvbm0qlMtVPDwAAJ2XKArharaZWq43frtVqqVarR63717/+lWnTpk3VywIAwITq\n9XoWL1581P0nHMDd3d2pVCpZt25dkmTZsmXZsWNHhoeHU6/Xs3v37glPf5g2bVqWL19+oi/7ujzw\nwAOv6dsrSmBbHGFbHGFbHGFbHGFbHGFbHGFbvMx2OOLNsC36+vomvP+4Afy1r30tvb29ee6553Ll\nlVfmq1/9alasWJGhoaFXrWtubs769euzZs2aJMmGDRumYGwAAJhaxw3gr3zlK/nKV75y1P133HHH\nUfd1dXWlq6traiYDAIBT4Iy+Etzb3/72Ro/whmFbHGFbHGFbHGFbHGFbHGFbHGFbvMx2OOLNvC0q\n27dvHzudL7hz587Tdg4wAADl6uvry6JFi466/4w+AgwAAP9NAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\nABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFOW4Ab968OZ2dnens7MzWrVsn\nXXvXXXfl2muvzbXXXpu77rpryoYEAICp0jTZgyMjI+nu7s6mTZtSr9ezdu3arFixYsK1O3fuzK9+\n9av89re/zaFDh3LNNddk1apVWbhw4SkZHAAATsSkR4D7+/vT3t6elpaWtLW1pbW1NQMDAxOunT17\ndpqamvLSSy+lXq9n+vTpmTNnzikZGgAATtSkR4CHhoZSrVbT09OTefPmpVqtZnBwMEuWLDlq7bnn\nnpu1a9fm/e9/fw4fPpzPf/7zmTt37ikbHAAATsSkAfyK1atXJ0l6e3tTqVQmXPP000+np6cnDz30\nUEZHR7NmzZq8//3vT7VanbppAQDgJE0awNVqNbVabfx2rVY7ZtD29/dn2bJlmT17dpLkkksuyRNP\nPJErr7zyqLV33nnn+L87OjrS0dFxQsMDAMArtm3blm3bto3fXrly5YTrJg3gZcuWZceOHRkeHk69\nXs/u3bvHT3/o7u5OpVLJunXrkiSLFi3KY489lpGRkRw+fDh///vf85nPfGbC5/3CF75wQj8UAAAc\ny38fWO3r65tw3aQB3NzcnPXr12fNmjVJkg0bNow/NjQ09Kq1y5Ytywc/+MGsWrUqSfLRj340F110\n0YlNDwAAp0hl+/btY6fzBXfu3Jnly5efzpcEAKBAfX19WbRo0VH3uxIcAABFEcAAABRFAAMAUBQB\nDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\nABTluAG8efPmdHZ2prOzM1u3bp107aOPPprrr78+XV1due2226ZsSAAAmCpNkz04MjKS7u7ubNq0\nKfV6PWvXrs2KFSsmXHv48OHcfvvtueOOO7J8+fLs2bPnlAwMAAAnY9IjwP39/Wlvb09LS0va2trS\n2tqagYGBCdc+/vjjaWlpyfLly5Mk55577tRPCwAAJ2nSAB4aGkq1Wk1PT08efPDBVKvVDA4OTrh2\n165dmTNnTj75yU9m1apV+dnPfnZKBgYAgJMx6SkQr1i9enWSpLe3N5VKZcI19Xo9fX19+fWvf53Z\ns2fnQx/6UN73vvdl0aJFUzctAACcpEkDuFqtplarjd+u1WqpVqvHXLt48eK0trYmSZYuXZqnnnpq\nwgC+8847x//d0dGRjo6OExoeAABesW3btmzbtm389sqVKydcN2kAL1u2LDt27Mjw8HDq9Xp2796d\nJUuWJEm6u7tTqVSybt26JC8H77PPPpvnn38+Z599dv7xj3/k/PPPn/B5v/CFL5zQDwUAAMfy3wdW\n+/r6Jlw3aQA3Nzdn/fr1WbNmTZJkw4YN448NDQ29au2cOXOyYcOG3HzzzTl48GCuv/76XHjhhSf8\nAwAAwKlQ2b59+9jpfMGdO3eOf1MEAACcKn19fROejutKcAAAFEUAAwBQFAEMAEBRBDAAAEURwAAA\nFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAA\nAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEM\nAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUA\nAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEUR\nwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQlOMG8ObN\nm9PZ2ZnOzs5s3br1uE+4f//+dHR05N57752SAQEAYCo1TfbgyMhIuru7s2nTptTr9axduzYrVqyY\n9AnvueeeLF26NJVKZUoHBQCAqTDpEeD+/v60t7enpaUlbW1taW1tzcDAwDHXP/XUUxkeHs7SpUsz\nNjY25cMCAMDJmjSAh4aGUq1W09PTkwcffDDVajWDg4PHXP/tb387t95665QPCQAAU2XSUyBesXr1\n6iRJb2/vMU9teOihh3LBBRekra3N0V8AAN6wJg3garWaWq02frtWq6VarU64tr+/P1u2bMnvf//7\n7NmzJ2eddVbOO++8XHfddUetvfPOO8f/3dHRkY6OjhOdHwAAkiTbtm3Ltm3bxm+vXLlywnWV7du3\nH/Nw7cjISK655prxD8HdfPPN2bJlS5Kku7s7lUol69atO+q/u+uuu3LOOefk4x//+FGP7dy5M8uX\nL3/dPxAAALwefX19WbRo0VH3T3oEuLm5OevXr8+aNWuSJBs2bBh/bGhoaIpHBACAU2/SI8CngiPA\nAACcDsc6AuxKcAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUA\nAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEUR\nwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBR\nBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQ\nFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAAFEUAAwBQFAEMAEBRBDAAAEURwAAA\nFEUAAwBQFAEMAEBRmhrxoo8+u68RL3tKnTe7OW1zZzR6DOAMtWtvPYP7Rxo9xpSy3wQapSEB/D+b\nn2zEy55S3+pabEcOnDKD+0fOuH2n/SbQKE6BAACgKMcN4M2bN6ezszOdnZ3ZunXrMdft3r07a9as\nyXXXXZcbb7wxf/nLX6Z0UAAAmAqTngIxMjKS7u7ubNq0KfV6PWvXrs2KFSsmfqKmpnz1q1/NxRdf\nnGeffTarV6/On/70p1MyNAAAnKhJjwD39/envb09LS0taWtrS2trawYGBiZc+5a3vCUXX3xxkmTB\nggUZHR3N6Ojo1E8MAAAnYdIjwENDQ6lWq+np6cm8efNSrVYzODiYJUuWTPqkf/7zn3PppZdm+vTp\nUzosAACcrNf0LRCrV69OkvT29qZSqUy6tlar5Zvf/Gbuvvvuk58OAACm2KQBXK1WU6vVxmLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3746fd0>"
"<matplotlib.figure.Figure at 0x391fa50>"
]
},
{
@@ -1022,9 +1022,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGCFJREFUeJzt3X+s1nXdx/HXwcMJfwCKoOcyj6a0A3kSErQVnNXgLJZ3\n9Edbqdkyt2zodPZj3nnox5Zu0dnuKGpLw7W5VbOFk5ayu1Wy/uiQu4ooVjYJzB8DzjngTzQ9XYDX\n/YfzMG/gEHDgS3wej7+4ruvjdb3Pd/Dl6YfvdV0tzWazGQAAKMS4qgcAAIDjSQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFCUQwbwbbfdlvb29lx66aWHfLJVq1als7MzM2bMyJo1a8ZkQAAAGEsth/oc\n4EceeSRtbW25/vrr85e//OWg6xqNRmbOnJl6vZ7h4eEsWLAgW7ZsGfOBAQDgaBxyB/i9731vzj77\n7EM+Ub1eT1dXV6ZNm5aOjo50dHRk48aNYzIkAACMldaxeqKhoaHUarWsXLkyU6ZMSXt7ewYGBjJ7\n9uyxegkAADhqYxbAb1iyZEmSZPXq1WlpaRnrpwcAgKMyZgFcq9UyMDAwcntwcDC1Wm2/db/61a9y\nyimnjNXLAgDAQfX09Ox33xEH8NKlS9PS0pJly5YlSa644oo8+uij2blzZ4aHh7N169bMmjVrv//u\nlFNOyZw5c470ZQ/LQw89lA9/+MPH5bVOdI7FPo7FPo7FPo7FPo7FPo7FPo7F6xyHff4TjsWGDRsO\neP8h3wR38803Z968edm0aVM6OjpGPt5scHAwg4ODI+va2trS19eX+fPnp6enJytWrBij0QEAYOwc\ncgf4e9/7Xr73ve/td/+99967331XXXVVrrrqqrGZDAAAjoGT+pvgOjs7qx7hhOFY7ONY7ONY7ONY\n7ONY7ONY7ONYvM5x2Oc/+Vgc8oswxtratWuP2zXAAACUa8OGDQd8E9xJvQMMAAD/nwAGAKAoAhgA\ngKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAG\nAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKA\nAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKII\nYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAo\nAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAiiKAAQAoigAGAKAoAhgAgKIIYAAAinLIAF61\nalU6OzszY8aMrFmzZtS1d9xxR7q6utLV1ZU777xzzIYEAICx0jrag41GI729vanX6xkeHs6CBQuy\nePHiA6594okn8qMf/Sh///vfs3fv3sycOTOf+tSncuGFFx6TwQEA4EiMugNcr9fT1dWVadOmpaOj\nIx0dHdm4ceMB106aNCnjx4/Pq6++mldffTVtbW2ZPHnyMRkaAACO1Kg7wENDQ6nValm5cmWmTJmS\n9vb2DAwMZPbs2futPfvss/PZz342HR0dee2117J8+fKceeaZx2xwAAA4EqMG8BuWLFmSJFm9enVa\nWloOuObJJ5/M97///Tz11FNpNBqZP39+PvShD6W9vX3spgUAgKM0agDXarUMDAyM3B4cHEytVjvg\n2nq9niuuuCITJ05Mklx22WX505/+lCuvvHK/tX19fSO/7u7uTnd39xENDwAAb+jv709/f//I7UWL\nFh1wXUuz2Wwe7EkajUZmzpw58ia4hQsXZvPmzUmSpUuXpqWlJcuWLUuSrF+/PjfccEN+//vfZ+/e\nvXnXu96VBx98MDNmzHjTc65duzZz5sw56h8QAABGs2HDhvT09Ox3/6g7wG1tbenr68v8+fOTJCtW\nrBh5bHBw8E2XQ1x++eX5yEc+kssuuyxJ8pnPfGa/+AUAgKqNugN8LNgBBgDgeDjYDrBvggMAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\n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 truncated
"png": "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\n6OjopA8LAACnasIAHhwcTLVaTXd3d5544olUq9UMDAwcc/03vvGN3H777ZM+JAAATJYJT4E4bNWq\nVUmSnp6eY57a8OSTT+aiiy5KW1ubo78AALxhTRjA1Wo1tVpt7HatVku1Wh13bV9fXzZv3pxf/epX\n2b17d84555ycf/75ufHGG49ae++994793NHRkY6OjpOdHwAAkiRbt27N1q1bx24vX7583HWVbdu2\nHfNw7fDwcK6//vqxD8Hdeuut2bx5c5Kkq6srlUola9euPeq/e+CBB3Luuefm4x//+FGP7dixI0uX\nLj3hNwQAACeit7c3CxYsOOr+CY8ANzc3Z926dVm9enWSZP369WOPDQ4OTvKIAABw+k14BPh0cAQY\nAIAz4VhHgH0THAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHA\nAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEE\nMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAU\nAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU\nRQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAURQADAFAUAQwAQFEEMAAA\nRRHAAAAURQADAFAUAQwAQFEEMAAARRHAAAAU5bgBvGnTpnR2dqazszNbtmw55rpdu3Zl9erVufHG\nG3PLLbfk97///aQOCgAAk6FpogeHh4fT1dWVjRs3pl6vZ82aNVm2bNn4T9TUlHvuuSeXXnppXnrp\npaxatSq//e1vT8vQAABwsiY8AtzX15f29va0tLSkra0tra2t6e/vH3ftW9/61lx66aVJknnz5mVk\nZCQjIyOTPzEAAJyCCY8ADw4Oplqtpru7O3PmzEm1Ws3AwEAWLVo04ZP+7ne/y2WXXZapU6dO6rAA\nAHCqJgzgw1atWpUk6enpSaVSmXBtrVbLfffdlwcffPDUpwMAgEk2YQBXq9XUarWx27VaLdVq9Zjr\n6/V6PvvZz+bzn/98FixYcMx1995779jPHR0d6ejoOJGZAQDgKFu3bs3WrVvHbi9fvnzcdRLine truncated
"text": [
"<matplotlib.figure.Figure at 0x373a910>"
"<matplotlib.figure.Figure at 0x3b58150>"
]
}
],
@@ -1054,9 +1054,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGBVJREFUeJzt3W2MlGe9x/Hf0mWlDzyUQrtTu9iCWbBroeXBKGxiKJHY\nI74wqag11ho12LSp2vTYxdpETcRNjiia2IoxaaJGI40YhRyjlfjCRTOKKNGaItRqA+wu9IHS2q4D\ndM6Lpkt6gEVg6Y1cn88rZubqzH/vwPDtxT33tDSbzWYAAKAQY6oeAAAAXk0CGACAoghgAACKIoAB\nACiKAAYAoCgCGACAopwwgO+66660t7fnmmuuOeGTrVu3Lp2dnZk5c2Y2btw4KgMCAMBoajnRdYB/\n85vfpK2tLbfcckv+9Kc/HXddo9HIrFmzUq/XMzQ0lMWLF2fnzp2jPjAAAJyOE+4Av+Utb8kll1xy\nwieq1+vp6urK1KlT09HRkY6Ojmzbtm1UhgQAgNHSOlpPNDg4mFqtlrVr12by5Mlpb29Pf39/5syZ\nM1ovAQAAp23UAvhlK1asSJKsX78+LS0to/30AABwWkYtgGu1Wvr7+4dvDwwMpFarHbXu5z//ec47\n77zRelkAADiuJUuWHHXfKQfwypUr09LSklWrViVJFixYkIcffjj79u3L0NBQdu3aldmzZx/13513\n3nmZO3fuqb7sSdmwYUPe+c53viqvdbZzLI5wLI5wLI5wLI5wLI5wLI5wLF7iOBzxn3Astm7desz7\nT/ghuNtuuy0LFy7M9u3b09HRMXx5s4GBgQwMDAyva2trS29vbxYtWpQlS5ZkzZo1ozQ6AACMnhPu\nAH/961/P17/+9aPuf+CBB466b/ny5Vm+fPnoTAYAAGfAOf1NcJ2dnVWPcNZwLI5wLI5wLI5wLI5w\nLI5wLI5wLF7iOBzxn3wsTvhFGKNt06ZNr9o5wAAAlGvr1q3H/BDcOb0DDAAA/58ABgCgKAIYAICi\nCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCg\nKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEA\nKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAA\nAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIY\nAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIoigAEAKIoABgCgKAIYAICiCGAAAIpywgBet25d\nOjs7M3PmzGzcuHHEtZ/73OfS1dWVrq6ufP7znx+1IQEAYLS0jvRgo9FIT09P6vV6hoaGsnjx4ixb\ntuyYax977LF85zvfyV//+tccPnw4s2bNygc/+MG87nWvOyODAwDAqRhxB7her6erqytTp05NR0dH\nOjo6sm3btmOunTBhQsaOHZsXXnghL7zwQtra2jJx4sQzMjQAAJyqEXeABwcHU6vVsnbt2kyePDnt\n7e3p7+/PnDlzjlp7ySWX5OMf/3g6Ojry4osvZvXq1Zk0adIZGxwAAE7FiAH8shUrViRJ1q9fn5aW\nlmOu+fvf/55vfOMb+cc//pFGo5FFixblHe94R9rb20dvWgAAOE0jBnCtVkt/f//w7YGBgdRqtWOu\nrdfrWbBgQcaPH58kue666/KHP/whN9xww1Fre3t7h3/d3d2d7u7uUxoeAABe1tfXl76+vuHbS5cu\nPea6lmaz2TzekzQajcyaNWv4Q3DXX399duzYkSRZuXJlWlpasmrVqiTJli1b8pGPfCS//e1vc/jw\n4Vx77bX5yU9+kpkzZ77iOTdt2pS5c+ee9g8IAAAj2bp1a5YsWXLU/SPuALe1taW3tzeLFi1KkqxZ\ns2b4sYGBgVecDjF//vy8613vynXXXZck+ehHP3pU/AIAQNVG3AE+E+wAAwDwajjeDrBvggMAoCgC\nGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiK\nAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACK\nIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACA\noghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYA\noCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoABACiKAAYAoCgCGACAoghgAACKIoAB\n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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x390ff50>"
"<matplotlib.figure.Figure at 0x3b59c10>"
]
}
],
@@ -1108,9 +1108,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAFyCAYAAAD7xWwMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF9NJREFUeJzt3W9snXX9//HXYV03xv5RPdhuGQGyyoRNw0I0hhqcwRXK\nn2T4J1sMI0ZvaJBINr+oM0a9I6ip0QQRpyFfY9TGRYLBDF2V+WfxBpFGCpLOEfwzYFlP08E2Bqfd\n1u8NfnQ/XNfB1u3APo/HrZ1zPpzz7hVynWevXudcle3bt48FAAAKcVajBwAAgNNJAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUJTjBvA3vvGNXHHFFbn++uuP+2SbN29OZ2dnOjs7s3Xr1ikZEAAAptJx\nA3jlypX5wQ9+cNwnGhkZSXd3d37+85/nf//3f/P1r399SgYEAICpdNwAvuyyyzJ//vzjPlF/f3/a\n29vT0tKStra2tLa2ZmBgYEqGBACAqdI0VU80NDSUarWanp6ezJs3L9VqNYODg1myZMlUvQQAAJy0\nKQvgV6xevTpJ0tvbm0qlMtVPDwAAJ2XKArharaZWq43frtVqqVarR63717/+lWnTpk3VywIAwITq\n9XoWL1581P0nHMDd3d2pVCpZt25dkmTZsmXZsWNHhoeHU6/Xs3v37glPf5g2bVqWL19+oi/7ujzw\nwAOv6dsrSmBbHGFbHGFbHGFbHGFbHGFbHGFbvMx2OOLNsC36+vomvP+4Afy1r30tvb29ee6553Ll\nlVfmq1/9alasWJGhoaFXrWtubs769euzZs2aJMmGDRumYGwAAJhaxw3gr3zlK/nKV75y1P133HHH\nUfd1dXWlq6traiYDAIBT4Iy+Etzb3/72Ro/whmFbHGFbHGFbHGFbHGFbHGFbHGFbvMx2OOLNvC0q\n27dvHzudL7hz587Tdg4wAADl6uvry6JFi466/4w+AgwAAP9NAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\nABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFOW4Ab968OZ2dnens7MzWrVsn\nXXvXXXfl2muvzbXXXpu77rpryoYEAICp0jTZgyMjI+nu7s6mTZtSr9ezdu3arFixYsK1O3fuzK9+\n9av89re/zaFDh3LNNddk1apVWbhw4SkZHAAATsSkR4D7+/vT3t6elpaWtLW1pbW1NQMDAxOunT17\ndpqamvLSSy+lXq9n+vTpmTNnzikZGgAATtSkR4CHhoZSrVbT09OTefPmpVqtZnBwMEuWLDlq7bnn\nnpu1a9fm/e9/fw4fPpzPf/7zmTt37ikbHAAATsSkAfyK1atXJ0l6e3tTqVQmXPP000+np6cnDz30\nUEZHR7NmzZq8//3vT7VanbppAQDgJE0awNVqNbVabfx2rVY7ZtD29/dn2bJlmT17dpLkkksuyRNP\nPJErr7zyqLV33nnn+L87OjrS0dFxQsMDAMArtm3blm3bto3fXrly5YTrJg3gZcuWZceOHRkeHk69\nXs/u3bvHT3/o7u5OpVLJunXrkiSLFi3KY489lpGRkRw+fDh///vf85nPfGbC5/3CF75wQj8UAAAc\ny38fWO3r65tw3aQB3NzcnPXr12fNmjVJkg0bNow/NjQ09Kq1y5Ytywc/+MGsWrUqSfLRj340F110\n0YlNDwAAp0hl+/btY6fzBXfu3Jnly5efzpcEAKBAfX19WbRo0VH3uxIcAABFEcAAABRFAAMAUBQB\nDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRF\nAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABF\nEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABA\nUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMA\nUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAAABRFAAMAUBQBDABAUQQwAABFEcAA\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x37655d0>"
"<matplotlib.figure.Figure at 0x3b56110>"
]
}
],
-131
View File
@@ -1,131 +0,0 @@
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 18 18:02:07 2013
@author: rlabbe
"""
import numpy as np
import scipy.linalg as linalg
import matplotlib.pyplot as plt
import numpy.random as random
class KalmanFilter:
def __init__(self, dim_x, dim_z, use_short_form=False):
""" Create a Kalman filter of dimension 'dim', where dimension is the
number of state variables.
use_short_form will force the filter to use the short form equation
for computing covariance: (I-KH)P. This is the equation that results
from deriving the Kalman filter equations. It is efficient to compute
but not numerically stable for very long runs. The long form,
implemented in update(), is very slightly suboptimal, and takes longer
to compute, but is stable. I have chosen to make the long form the
default behavior. If you really want the short form, either call
update_short_form() directly, or set 'use_short_form' to true. This
causes update() to use the short form. So, if you do it this way
you will never be able to use the long form again with this object.
"""
self.x = 0 # state
self.P = np.matrix(np.eye(dim_x)) # uncertainty covariance
self.Q = np.matrix(np.eye(dim_x)) # process uncertainty
self.u = np.matrix(np.zeros((dim_x,1))) # motion vector
self.B = 0
self.F = 0 # state transition matrix
self.H = 0 # Measurement function (maps state to measurements)
self.R = np.matrix(np.eye(dim_z)) # state uncertainty
self.I = np.matrix(np.eye(dim_x))
if use_short_form:
self.update = self.update_short_form
def update(self, Z):
"""
Add a new measurement to the kalman filter.
"""
# measurement update
y = Z - (self.H * self.x) # error (residual) between measurement and prediction
S = (self.H * self.P * self.H.T) + self.R # project system uncertainty into measurment space + measurement noise(R)
K = self.P * self.H.T * linalg.inv(S) # map system uncertainty into kalman gain
self.x = self.x + (K*y) # predict new x with residual scaled by the kalman gain
KH = K*self.H
I_KH = self.I - KH
self.P = I_KH*self.P * I_KH.T + K*self.R*K.T
def update_short_form(self, Z):
"""
Add a new measurement to the kalman filter.
Uses the 'short form' computation for P, which is mathematically
correct, but perhaps not that stable when dealing with large data
sets. But, it is fast to compute. Advice varies; some say to never
use this. My opinion - if the longer form in update() executes too
slowly to run in real time, what choice do you have. But that should
be a rare case, so the long form is the default use
"""
# measurement update
y = Z - (self.H * self.x) # error (residual) between measurement and prediction
S = (self.H * self.P * self.H.T) + self.R # project system uncertainty into measurment space + measurement noise(R)
K = self.P * self.H.T * linalg.inv(S) # map system uncertainty into kalman gain
self.x = self.x + (K*y) # predict new x with residual scaled by the kalman gain
# and compute the new covariance
self.P = (self.I - (K*self.H))*self.P # and compute the new covariance
def predict(self):
# prediction
self.x = (self.F*self.x) + self.B * self.u
self.P = self.F * self.P * self.F.T + self.Q
if __name__ == "__main__":
f = KalmanFilter (dim_x=2, dim_z=2)
f.x = np.matrix([[2.],
[0.]]) # initial state (location and velocity)
f.F = np.matrix([[1.,1.],
[0.,1.]]) # state transition matrix
f.H = np.matrix([[1.,0.]]) # Measurement function
f.P *= 1000. # covariance matrix
f.R = 5 # state uncertainty
f.Q *= 0.0001 # process uncertainty
measurements = []
results = []
for t in range (100):
# create measurement = t plus white noise
z = t + random.randn()*20
# perform kalman filtering
f.measure (z)
f.predict()
# save data
results.append (f.x[0,0])
measurements.append(z)
# plot data
p1, = plt.plot(measurements,'r')
p2, = plt.plot (results,'b')
p3, = plt.plot ([0,100],[0,100], 'g') # perfect result
plt.legend([p1,p2, p3], ["noisy measurement", "KF output", "ideal"], 4)
plt.show()
+108
View File
@@ -0,0 +1,108 @@
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
from KalmanFilter import *
from math import cos, sin, sqrt, atan2
def H_of (pos, pos_A, pos_B):
""" Given the position of our object at 'pos' in 2D, and two transmitters
A and B at positions 'pos_A' and 'pos_B', return the partial derivative
of H
"""
theta_a = atan2(pos_a[1]-pos[1], pos_a[0] - pos[0])
theta_b = atan2(pos_b[1]-pos[1], pos_b[0] - pos[0])
if False:
return np.mat([[0, -cos(theta_a), 0, -sin(theta_a)],
[0, -cos(theta_b), 0, -sin(theta_b)]])
else:
return np.mat([[-cos(theta_a), 0, -sin(theta_a), 0],
[-cos(theta_b), 0, -sin(theta_b), 0]])
class DMESensor(object):
def __init__(self, pos_a, pos_b, noise_factor=1.0):
self.A = pos_a
self.B = pos_b
self.noise_factor = noise_factor
def range_of (self, pos):
""" returns tuple containing noisy range data to A and B
given a position 'pos'
"""
ra = sqrt((self.A[0] - pos[0])**2 + (self.A[1] - pos[1])**2)
rb = sqrt((self.B[0] - pos[0])**2 + (self.B[1] - pos[1])**2)
return (ra + random.randn()*self.noise_factor,
rb + random.randn()*self.noise_factor)
pos_a = (100,-20)
pos_b = (-100, -20)
f1 = KalmanFilter(dim_x=4, dim_z=2)
f1.F = np.mat ([[0, 1, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]])
f1.B = 0.
f1.R *= 1.
f1.Q *= .1
f1.x = np.mat([1,0,1,0]).T
f1.P = np.eye(4) * 5.
# initialize storage and other variables for the run
count = 30
xs, ys = [],[]
pxs, pys = [],[]
# create the simulated sensor
d = DMESensor (pos_a, pos_b, noise_factor=1.)
# pos will contain our nominal position since the filter does not
# maintain position.
pos = [0,0]
for i in range(count):
# move (1,1) each step, so just use i
pos = [i,i]
# compute the difference in range between the nominal track and measured
# ranges
ra,rb = d.range_of(pos)
rx,ry = d.range_of((i+f1.x[0,0], i+f1.x[2,0]))
print ra, rb
print rx,ry
z = np.mat([[ra-rx],[rb-ry]])
print z.T
# compute linearized H for this time step
f1.H = H_of (pos, pos_a, pos_b)
# store stuff so we can plot it later
xs.append (f1.x[0,0]+i)
ys.append (f1.x[2,0]+i)
pxs.append (pos[0])
pys.append(pos[1])
# perform the Kalman filter steps
f1.predict ()
f1.update(z)
p1, = plt.plot (xs, ys, 'r--')
p2, = plt.plot (pxs, pys)
plt.legend([p1,p2], ['filter', 'ideal'], 2)
plt.show()
+9
View File
@@ -0,0 +1,9 @@
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import KalmanFilter
+15 -3
View File
@@ -1414,7 +1414,12 @@
"\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",
"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. \n",
"\n",
"\n",
"Up until the mid 20th century various forms of Least Squares Estimation was used for this type of filtering. For example, for NASA's Apollo program had a ground network for tracking the Command and Service Model (CSM) and the Lunar Module (LM). They took measurements over many minutes, batched the data together, and slowly computed an answer. In 1960 Stanley Schmidt at NASA Ames recognized the utility of Rudolf Kalman's seminal paper and invited him to Ames. Schmidt applied Kalman's work to the onboard navigation sytems on the CSM and LM, and called it the \"Kalman filter\".[1] Soon after, the world moved to this faster, recursive filter.\n",
"\n",
"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."
]
@@ -1443,12 +1448,19 @@
"There is another feature of these filters we have barely touched upon - Bayesian statistics. You will note that the term 'Bayesian' is in the title of this book; this is not a coincidence! For the time being we will leave $g$ and $h$ behind, largely unexplored, and develop a very powerful form of probabilistic reasoning about filtering. Yet suddenly this same g-h filter algorithm will appear, this time with a formal mathematical edifice that allows us to create filters from multiple sensors, to accurately estimate the amount of error in our solution, and to control robots."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"References"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"missing: properties - recursive - markov - random variable\n",
"should we fit bayes into here, or just leave to the next chapter"
"[1] http://nescacademy.nasa.gov/review/downloadfile.php?file=FundamentalsofKalmanFiltering_Presentation.pdf&amp;id=199&amp;distr=Public"
]
}
],