Last active
February 6, 2023 12:53
-
-
Save mchelem/907cbdb00718181ffc5e to your computer and use it in GitHub Desktop.
Complexity of Algorithms: Empiric Analysis
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "metadata": { | |
| "name": "", | |
| "signature": "sha256:5854640610fc9beab645b531e61d124d2f12a811a5454eccc1658d2430512398" | |
| }, | |
| "nbformat": 3, | |
| "nbformat_minor": 0, | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "# Sorting\n", | |
| "def min_index(l):\n", | |
| " min_index = 0\n", | |
| " for i in range(1, len(l)):\n", | |
| " if l[i] < l[min_index]:\n", | |
| " min_index = i\n", | |
| " return min_index\n", | |
| "\n", | |
| "\n", | |
| "def selection(l):\n", | |
| " for i in range(1, len(l)):\n", | |
| " m = min_index(l[i:]) + i\n", | |
| " if l[i - 1] > l[m]:\n", | |
| " l[i - 1], l[m] = l[m], l[i - 1]\n", | |
| " return l" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 42 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "# Generating data\n", | |
| "import numpy\n", | |
| "from timeit import timeit\n", | |
| "times = []\n", | |
| "input_sizes = [2 ** i for i in range(1, 15)]\n", | |
| "arrays = [numpy.random.randint(100, size=i) for i in input_sizes]\n", | |
| "for array in arrays:\n", | |
| " times.append(timeit('selection(array)', 'from __main__ import selection, array', number=1))" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 44 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%matplotlib inline\n", | |
| "# Plotting\n", | |
| "from matplotlib import pyplot\n", | |
| "pyplot.scatter(input_sizes, times)\n", | |
| "pyplot.show()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\nRU5ErkJggg==\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x7fc3e5073510>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 37 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "# Fitting\n", | |
| "import scipy.optimize\n", | |
| "\n", | |
| "# Our guess function\n", | |
| "def time_comsumption(x, a, b):\n", | |
| " return a * numpy.array(x) ** b\n", | |
| "\n", | |
| "params, params_cov = scipy.optimize.curve_fit(time_comsumption, input_sizes, times)\n", | |
| "pyplot.scatter(input_sizes, times, color='blue')\n", | |
| "pyplot.plot(input_sizes, time_comsumption(input_sizes, *params), color='red')\n", | |
| "print(params)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "[ 1.03763053e-07 2.03091021e+00]\n" | |
| ] | |
| }, | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD9CAYAAABQvqc9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVXW+//HXTs3JNJWSjUodTEUFEUjTMrWthre8YJaX\nKWVSuzjVGcdOpZ0sqmNi6ZyfWjOpmaFTlqOJ1CRl2jYvCV7wZDapY5hEG0pBE9G4rd8fK1HSEmFv\n1r68n48HD7d7b1iftVz7w9fP92YzDMNAREQCwmVWByAiIrVHSV9EJIAo6YuIBBAlfRGRAKKkLyIS\nQJT0RUQCSJWTfllZGbGxsQwZMgSA/Px84uLiCA8Pp1+/fhw7dsxjQYqIiHtUOenPnTuXiIgIbDYb\nAElJScTFxbF//3769u1LUlKSx4IUERH3qFLS//bbb/nggw+YOHEiZ+ZypaamkpCQAEBCQgIpKSme\ni1JERNyiSkn/z3/+My+99BKXXXb27Xl5edjtdgDsdjt5eXmeiVBERNym7sXe8P777xMcHExsbCxO\np/OC77HZbBVlnwu9JiIil84Tq+RctKW/detWUlNTadWqFWPGjGHDhg2MHTsWu91Obm4uAC6Xi+Dg\n4F/9GYZh6MsweOaZZyyPwVu+dC10LXQtfvvLUy6a9F944QWys7PJysri7bffpk+fPixbtoyhQ4eS\nnJwMQHJyMvHx8R4LUkRE3OOSx+mfKddMnTqVdevWER4ezoYNG5g6darbgxMREfe6aE3/XLfeeiu3\n3norAEFBQXz88cceCcpfORwOq0PwGroWZ+lanKVr4Xk2w5PFI8z/GXj4ECIifsdTuVPLMIiIBBAl\nfRGRAKKkLyJ+5fBhSE+H48etjsQ7KemLiN945hlo1w7694frroMtW6yOyPuoI1dE/EJ6OvTpA0VF\n8DtOcZorCAqCI0fAFxcGUEeuiMhv2LcPLrsMBvFPNnIrYPDjj3DypNWReZdLGqcvIuKtOnSA60q/\n5nXGM4JVgI0mTeDKK62OzLso6YuIX7ix4ynWNx3BSz88yZ4GPWhsg/fe883Sjieppi8ivs8wYPx4\nOH2a72a/RW6ejbZtoVEjqwOrPk/lTrX0RcT3LVoEGRmQnk6LhjZatLQ6IO+llr6I+Lbt22HQINi8\n2Ryv6Sc0ekdE5JeOHIG77oIFC/wq4XuSWvoi4pvKymDgQIiJgRdftDoat1NLX0TkXImJUFICL7xg\ndSQ+RR25IuJ73nsP3ngDduyAukpjl6JKLf3Tp0/TrVs3YmJiiIiIYNq0aQAkJiYSGhpKbGwssbGx\npKWleTRYEREOHoQJE+Cdd8Butzoan1Plmn5RURENGjSgtLSUHj16MHv2bNavX0+jRo2YMmXKrx9A\nNX0RcZeiIujeHSZOhIcftjoaj7K8pt+gQQMAiouLKSsro2nTpgBK6CJSOwwDJk2CyEh46CGro/FZ\nVS6GlZeXc8MNN3Dw4EEmTZpEZGQkK1euZP78+SxdupQuXbowZ84cmjRpct73JiYmVjx2OBzaB1NE\nLt2CBbBrF2zb5pdrKzidTpxOp8ePc8lDNo8fP07//v1JSkoiIiKCZs2aATB9+nRcLheLFy+ufACV\nd0SkptLTYcgQc4H8tm2tjqZWWF7eOaNx48bcfvvt7Nixg+DgYGw2GzabjYkTJ5KRkeH2AEUkwP3w\ngzkBa+HCgEn4nlSlpH/kyBGOHTsGwKlTp1i3bh2xsbHk5uZWvGf16tVERUV5JkoRCUxlZTBmDNx9\nN8THWx2NX6hSTd/lcpGQkEB5eTnl5eWMHTuWvn37Mm7cOHbv3o3NZqNVq1YsWLDA0/GKSCCZPt3s\nwH3+easj8RtahkFEvNOaNfDII+YErOBgq6OpdZ7KnUr6IuJ9DhyAW24xZ95262Z1NJbwmo5cERGP\nOnkSRoww19YJ0ITvSWrpi4j3MAwYN84ch5+c7Jfj8atKO2eJiP/761/h88/hs88COuF7klr6IuId\nPvsMhg2DrVuhTRuro7Gcavoi4r++/x5GjoTFi5XwPUwtfRGxVmkp9OsHN98MM2ZYHY3XUEtfRPzT\nU09BnTrw3HNWRxIQ1JErItZZvRqWL4edO83ELx6n8o6IWGP/fujRA95/H7p2tToar6Pyjoj4j5Mn\n4Y47zDV1lPBrlVr6IlK7DMNcNbN+fXj9dY3H/xWanCUi/uHll+Ff/zLH4yvh1zq19EWk9mzZAsOH\nm1seXn+91dF4NdX0RcS35ebCqFGwZIkSvoWU9EXE80pLYfRoGD8ebr/d6mgCWpWS/unTp+nWrRsx\nMTFEREQwbdo0APLz84mLiyM8PJx+/fpVbKkoIlLJtGnwu9/BM89YHUnAq3JNv6ioiAYNGlBaWkqP\nHj2YPXs2qampXHPNNTz++OPMmjWLgoICkpKSKh9ANX2RwLZqFfzXf5k7YF19tdXR+AzLa/oNGjQA\noLi4mLKyMpo2bUpqaioJCQkAJCQkkJKS4vYARcSHffUVPPgg/OMfSvheospDNsvLy7nhhhs4ePAg\nkyZNIjIykry8POx2OwB2u528vLwLfm9iYmLFY4fDgcPhqFHQIuIDCgvNCVgzZ0KXLlZH4/WcTidO\np9Pjx7nkIZvHjx+nf//+zJw5kzvuuIOCgoKK14KCgsjPz698AJV3RAKPYZgdtw0bmsslyyXzmslZ\njRs35vbbb2fnzp3Y7XZyc3MJCQnB5XIRHIA71ovIBcydC//+N2zebHUk8gtVqukfOXKkYmTOqVOn\nWLduHbGxsQwdOpTk5GQAkpOTiY+P91ykIuIbNm0ySzorV8IVV1gdjfxClco7e/bsISEhgfLycsrL\nyxk7diyPPfYY+fn5jBw5ksOHDxMWFsaKFSto0qRJ5QOovCMSOFwus37/2mswcKDV0fg0T+VOLcMg\nIu5RUgJ9+5pfGo9fY0r6IuLdpkwxh2i+/z5cpsn+NeU1HbkiIudZsQJSUswJWEr4Xk0tfRGpmX/9\nC3r1gg8/hBtusDoav2H5jFwRkfOcOGFOwJo1SwnfR6ilLyLVYxgwciQ0bQoLF1odjd9RTV9EvMtf\n/gJZWbBsmdWRyCVQS19ELt2nn5qt/PR0+I//sDoav6Savoh4h+++M9fVWbpUCd8HKemLSNWVlJgt\n/EmToF8/q6ORalB5R0SqbvJkcyG11FSNx/cwdeSKiLWWL4f33tMELB+nlr6IXNzeveBwwLp1EBNj\ndTQBQR25ImKNH380J2DNnq2E7wfU0heRX2cYcOed0KwZvPqq1dEEFNX0RaT2zZ4N2dnw1ltWRyJu\noqQvIhf2yScwZw5kZED9+lZHI25SpZp+dnY2vXv3JjIyko4dOzJv3jwAEhMTCQ0NJTY2ltjYWNLS\n0jwarIjUkpwcuPtu+Pvf4brrrI5G3KhKNf3c3Fxyc3OJiYmhsLCQzp07k5KSwooVK2jUqBFTpkz5\n9QOopi/iW4qLzZE6gwfDk09aHU3AsrSmHxISQkhICAANGzakQ4cO5OTkACihi/ibRx+Fa66BqVOt\njkQ84JJr+ocOHSIzM5ObbrqJLVu2MH/+fJYuXUqXLl2YM2fOeRujg1kGOsPhcOBwOGoSs4h4yptv\nwtq1moBlAafTidPp9PhxLmnIZmFhIQ6Hg6eeeor4+Hi+//57mjVrBsD06dNxuVwsXry48gFU3hHx\nDXv2QJ8+sH49dOpkdTQBz/LJWSUlJYwYMYJ77rmH+Ph4AIKDg7HZbNhsNiZOnEhGRobbAxSRWnD8\nOIwYAf/7v0r4fq5KSd8wDCZMmEBERASTJ0+ueN7lclU8Xr16NVFRUe6PUEQ8q7wcEhIgLg7uucfq\naMTDqlTe2bx5M7169aJTp07YbDYAXnjhBZYvX87u3bux2Wy0atWKBQsWYLfbKx9A5R0R75aUBCkp\nsHGjxuN7EU/lTi3DIBLI1q83W/fbt0NoqNXRyDksr+mLiJ/JzjYT/ptvKuEHECV9kUD0009w113m\npih9+lgdjdQilXdEAtFDD5l73b77LvzcTyfeRatsioh7LFtmboayfbsSfgBSS18kkHz+OfTtCxs2\ngIZYezV15IpIzRw7Zu6ANXeuEn4AU0tfJBCUl0N8PISFwc9Lo4t3U01fRKovKQmOHIGVK62ORCym\npC/i79atg5dfNjtuL7/c6mjEYkr6Iv7s8GEYOxbefhtatrQ6GvEC6sgV8Vc//QR33mluiqI9LORn\n6sgV8VcPPgg//GDW8TUe3+eoI1dEqu6NN8DphIwMJXypRC19EX+ze7e5Nr7TCZGRVkcj1aTJWSJy\ncQUF5g5Y8+cr4csFVSnpZ2dn07t3byIjI+nYsSPzfp7ckZ+fT1xcHOHh4fTr149jx455NFgR+Q3l\n5eZInSFDYPRoq6MRL1Wl8k5ubi65ubnExMRQWFhI586dSUlJYcmSJVxzzTU8/vjjzJo1i4KCApKS\nkiofQOUdkdrx/PPw4YfwySdQr57V0UgNWVreCQkJISYmBoCGDRvSoUMHcnJySE1NJSEhAYCEhARS\nUlLcHqCIVMGHH8Krr8I//qGEL7/pkjtyDx06xK233soXX3zBddddR0FBAWBunh4UFFTx94oDqKUv\n4lmHDkG3bmbC79XL6mjETbxiyGZhYSEjRoxg7ty5NGrUqNJrNputYtP0X0pMTKx47HA4cGiiiIh7\nnD5tTsB64gklfB/ndDpxOp0eP06VW/olJSUMHjyYgQMHMnnyZADat2+P0+kkJCQEl8tF7969+eqr\nryofQC19Ec+5/35zxM6KFRqP72csrekbhsGECROIiIioSPgAQ4cOJTk5GYDk5GTi4+PdHqCI/IrX\nX4dNm8w/lfCliqrU0t+8eTO9evWiU6dOFSWcmTNn0rVrV0aOHMnhw4cJCwtjxYoVNGnSpPIB1NIX\ncb9du6B/f/j0U+jQwepoxAM8lTs1I1fE1+TnQ+fO8OKLcNddVkcjHqKkLyLmBKzBg83W/Zw5Vkcj\nHqRlGETEnIBVWGjuhCVSDVplU8RXrF0LixbBjh2agCXVpqQv4guysuAPf4BVqyAkxOpoxIepvCPi\n7U6dMlfOnDYNevSwOhrxcerIFfF2EybAyZOwfLnG4wcQr1iGQURq2WuvwbZtkJ6uhC9uoZa+iLfa\nsQMGDjRn3bZvb3U0Uss0ZFMkkBw5Yi6k9uqrSvjiVmrpi3ibsjIYNAg6dYKXXrI6GrGIWvoigeLZ\nZ6G4GGbOtDoS8UPqyBXxJu+/D0uWmPX8uvp4ivvprhLxFl9/DePHQ0oK2O1WRyN+SuUdEW9QVAR3\n3AHTp0P37lZHI35MHbkiVjMMuPdes47/5psajy+AJmeJ+K+FC2HnTnMSlhK+eFiVyjvjx4/HbrcT\nFRVV8VxiYiKhoaHExsYSGxtLWlqax4IU8VsZGWZJZ9UquPJKq6ORAFClpH/vvfeel9RtNhtTpkwh\nMzOTzMxMBgwY4JEARfzWkSPmzlcLFkB4uNXRSICoUtLv2bMnTZs2Pe951epFqqmsDMaMMb+GD7c6\nGgkgNRq9M3/+fKKjo5kwYQLHjh1zV0wi/u/pp83E/z//Y3UkEmCq3ZE7adIknn76aQCmT5/Oo48+\nyuLFiy/43sTExIrHDocDh8NR3cOK+L7UVFi2TBOwpBKn04nT6fT4cao8ZPPQoUMMGTKEPXv2XNJr\nGrIpco5//9sch5+aCjfdZHU04sW8bu0dl8tV8Xj16tWVRvaIyAUUFZk7YCUmKuGLZarU0h8zZgwb\nN27kyJEj2O12nn32WZxOJ7t378Zms9GqVSsWLFiA/QJTx9XSF8GcgDVunPl46VKNx5eL8lTu1Ixc\nkdrw17+aa+Nv2wYNGlgdjfgAJX0RX7VtGwwdClu3Qps2VkcjPsLravoiUgXffw8jR5p73SrhixdQ\nS1/EU0pLoX9/s9N2xgyroxEfo5a+iK+ZPh0uuwyee87qSEQqaGaIiCekpMBbb5kTsOrUsToakQoq\n74i424EDcMst5taHXbtaHY34KJV3RHzByZPmDljPPaeEL15JLX0RdzEMuOceqFfP3NxcE7CkBrRz\nloi3e+UV2LvXHI+vhC9eSi19EXfYutVcF3/rVmjd2upoxA+opi/irfLyYNQoWLxYCV+8npK+SE2U\nlsLo0fCHP8DgwVZHI3JRKu+I1MTjj8P//R988IHG44tbqSNXxNu8+y6sWAE7dyrhi89QS1+kOvbt\ng549zRZ+ly5WRyN+SB25It6isNCcgDVjhhK++JwqJf3x48djt9srbYmYn59PXFwc4eHh9OvXj2PH\njnksSBGvYRgwcSJ062b+KeJjqpT07733XtLS0io9l5SURFxcHPv376dv374kJSV5JEARrzJvHuzf\nb07E0gQs8UFVrukfOnSIIUOGsGfPHgDat2/Pxo0bsdvt5Obm4nA4+Oqrr84/gGr64i+2bDHLOtu2\nQatWVkcjfs7rRu/k5eVVbIRut9vJy8v71fcmJiZWPHY4HDgcjuoeVsQaubnmBKw33lDCF49wOp04\nnU6PH6faLf2mTZtSUFBQ8XpQUBD5+fnnH0AtffFRp0/DN9+APaiEJnfeBr17wzkNGBFP8rrRO2fK\nOgAul4vg4GC3BSVite3boUULc3DOkubTOHykATz9tNVhidRYtZP+0KFDSU5OBiA5OZn4+Hi3BSVi\npfJyGDQICgpgQOE/iC9bRfesN9n7L41wFt9Xpbt4zJgxdO/enX379nHttdeyZMkSpk6dyrp16wgP\nD2fDhg1MnTrV07GK1IqCAvjp+Gme5yn+yh+5k5WcqBfEF19YHZlIzWlGrsgvlK1bT1b/B9ltRPOf\nzMNFCxo0gI0bNRdLao/X1fRF/M6RI5CQQJ2J4zn+9F/4w5UrKWrcgiuugD/9SQlf/IMWXBMxDFi6\n1Fwx8+67Ye9eOjdsyL8fNDfCatkS2re3OkgR91B5RwLb/v3w4INw/DgsXAidO1sdkQig8o6IexUX\nw/PPQ/fuMGQIpKcr4UtAUHlHAs/mzXD//ebWhrt2wXXXWR2RSK1R0pfAUVAATzxhroE/d665jo4W\nTZMAo/KO+D/DgOXLITIS6tUze2dHjFDCl4Cklr74t6wsmDQJvvsOVq2Cm2+2OiIRS6mlL/6ppARe\nfBFuvNFcKG3nTiV8EdTSF3+Unm521IaEQEYGXH+91RGJeA0lffEfP/4ITz5plnHmzIExY1S3F/kF\nlXfE9xkGvPsuRESYi+Dv3Qu//70SvsgFqKUvvi07Gx5+2JxZ+9Zb0KuX1RGJeDW19MU3lZWZY+1j\nY82ZtLt3K+GLVIFa+uJ7MjPhvvugUSNzs/J27ayOSMRnqKUvvqOwEB59FAYMgIcegg0blPBFLlGN\nW/phYWFcddVV1KlTh3r16pGRkeGOuEQq++c/zUTfqxd88QU0a2Z1RCI+qcZJ32az4XQ6CQoKckc8\nIpW5XOYOJrt2wWuvwW23WR2RiE9zS3lH6+WL25WXw9/+Bp06Qdu2sGePEr6IG7ilpX/bbbdRp04d\nHnjgAe67777z3pOYmFjx2OFw4HA4anpY8WdffGHOqLXZ4JNPoGNHqyMS8Tin04nT6fT4cWq8c5bL\n5aJ58+b88MMPxMXFMX/+fHr27Hn2ANo5S6rq1ClzY5NFi8w/778fLtNYAwlMXrtzVvPmzQFo1qwZ\nw4cPV0euVM/HH0NUFBw8CJ9/bm5hqIQv4nY1+lQVFRVx4sQJAE6ePMlHH31EVFSUWwKTAPH99zB2\nLEycCPPmwTvvwM8NCRFxvxrV9PPy8hg+fDgApaWl3H333fTr188tgYmfMwxYsgSmTTOT/t69cOWV\nVkcl4vdqXNO/6AFU05df2rcPHngATp6EhQvNpRREpBKvremLVNlPP8Gzz8Itt8Dw4bBtmxK+SC3T\n2jtSOz791Gzdh4eba+dce63VEYkEJCV98az8fHj8cfjwQ7Oj9uc+IBGxhso74hmGAW++CZGRcMUV\nZketEr6I5dTSlxorLYU6dc7ZqOrgQfjjHyE3F1JSoFs3S+MTkbPU0pdqO3oUevaE+vWhQQNY+EoJ\nJCWZSf6222DHDiV8ES+jlr5U2+9/D+np5tpoMac/o/sj95N/YyhB27dDq1ZWhyciF6CkL9W2Y9Mp\n+pd8zEhW0Jf1PMpfiBw8iqdaaUNyEW+lpC+X5ocf4P33ITWVrNMb2EUsaxjGfzKP4iua0ifE6gBF\n5LdoRq5c3P79sGYNpKaai6HFxcGwYWy8chCDxl4NmGujtWtnbllbv77F8Yr4AU/lTiV9OV9ZmVms\nT001k/3x4zB0qPnVpw/87ncVbz1wADZuhCZNzJcvv9zCuEX8iJK+eNapU+byxmvWwHvvQXCwmcWH\nDYMuXbTMsUgtU9IX9/v+e3PD8TVrYMMG6Nz5bIu+dWuroxMJaEr6UiXp6ZCQYM6LuvlmWLYMrrnm\nnDfs23e2bLNnT0V9nkGD4OqrLYtbRCpT0peLysmB9u2hsND8e7160DmmjM/+X7qZ5NesgR9/PFu2\n6d27Un1eRLyHllb2Y8XF5lI158rONkvpdetCSAisX3/xn7NpE1xGOaFkM5Q1/K1kAinbW1B23wPm\nb4Bly+Dbb+HVV2HgQCV8kQBU45Z+WloakydPpqysjIkTJ/LEE09UPoBa+vTuDeduch8UBFddBT16\nmKNftm83c/Ls2fDww+YvgIgI87WyMvN7rrwSvvgCwsJ+/iHHj5ulmv37zT/37ePHHfupk3WA4zRm\nL5H8k9v5oM5Q9p66nnr1avmkRaRGvLK8U1ZWRrt27fj4449p2bIlN954I8uXL6dDhw5nDxDgSX/A\nAHNV4Qs5s0DZmcvToIHZrxodDS2DS2hUms81HKE1B+lUfx/33rKf1iVmgqeoyFybPjzcHCAfHk5J\n63b0e6gt6V9exalT5s978kn47/+unXMVEffxVO6s0YzcjIwM2rRpQ9jPzc/Ro0ezZs2aSkk/0J1J\n+HF8xC1s4TLKqUspl1PMFcYprsD8akoBVxcdpfUd+TQpO8rx0iIKaMpRruZrrufr8naURHWGYb83\nE32LFucsa2mqB6RtMbeePXzY/J/EoEG1f84i4r1qlPRzcnK49pwdkEJDQ0lPTz/vfYmJiRWPHQ4H\nDoejJof1WQY2irmcIhpQSl2KaMCZtH+MJpysfzUP/dfVjPrj1SxcdhWPT72MsjKz9NOzJzz0Fy7a\nC1O/Pjz4YK2cjoi4kdPpxHluHdhDalTeWbVqFWlpaSxatAiAv//976SnpzN//vyzB1B551fLO/Xr\nmzX7+vXNRnuHDmZn7JllDLZuhYwMCA019x+pU6f24hYRa3lleadly5ZkZ2dX/D07O5vQ0NAaB+VP\n0tIqd+TabGZ1pn17s/TSp4+Z6Js0gcGDqdTh2r27+SUi4i41aumXlpbSrl071q9fT4sWLejatas6\nckVE3MArW/p169bl5Zdfpn///pSVlTFhwgR14oqIeDHNyBUR8UKakSsiIjWmpC8iEkCU9EVEAoiS\nvohIAFHSFxEJIEr6IiIBRElfRCSAKOmLiAQQJX0RkQCipC8iEkCU9EVEAoiSvohIAFHSFxEJIEr6\nIiIBRElfRCSAVDvpJyYmEhoaSmxsLLGxsaSlpbkzLr9UG5se+wpdi7N0Lc7StfC8aid9m83GlClT\nyMzMJDMzkwEDBrgzLr+kG/osXYuzdC3O0rXwvBqVd7QjloiIb6lR0p8/fz7R0dFMmDCBY8eOuSsm\nERHxkN/cIzcuLo7c3Nzznp8xYwY33XQTzZo1A2D69Om4XC4WL158/gFsNjeGKyISODxRTXHLxuiH\nDh1iyJAh7Nmzxx0xiYiIh1S7vONyuSoer169mqioKLcEJCIinlPtlv64cePYvXs3NpuNVq1asWDB\nAux2u7vjExERN6p2S3/p0qXccccdHD16lG+++YYBAwawdu3aitdnzpxJ27Ztad++PR999FHF8zt3\n7iQqKoq2bdvypz/9qeL5n376iVGjRtG2bVtuuukmvvnmm+qG5nXS0tJo3749bdu2ZdasWVaH4zFh\nYWF06tSJ2NhYunbtCkB+fj5xcXGEh4fTr1+/Sh3+l3qPeLPx48djt9sr/Y/XnefuS5+PC12LX87r\nCZRckZ2dTe/evYmMjKRjx47MmzcPsPjeMGogMTHRmDNnznnP792714iOjjaKi4uNrKwso3Xr1kZ5\neblhGIZx4403Gunp6YZhGMbAgQONtWvXGoZhGK+88ooxadIkwzAM4+233zZGjRpVk9C8RmlpqdG6\ndWsjKyvLKC4uNqKjo40vv/zS6rA8IiwszDh69Gil5x577DFj1qxZhmEYRlJSkvHEE08YhlG9e8Sb\nffrpp8auXbuMjh07VjznznP3pc/Hha5FoOYKl8tlZGZmGoZhGCdOnDDCw8ONL7/80tJ7o8bLMBgX\nqA6tWbOGMWPGUK9ePcLCwmjTpg3p6em4XC5OnDhR0QocN24cKSkpAKSmppKQkADAiBEjWL9+fU1D\n8woZGRm0adOGsLAw6tWrx+jRo1mzZo3VYXnML++Hc/9dExISKv69q3OPeLOePXvStGnTSs+589x9\n6fNxoWsBgZkrQkJCiImJAaBhw4Z06NCBnJwcS++NGif9C43V/+677wgNDa14T2hoKDk5Oec937Jl\nS3JycgDIycnh2muvBaBu3bo0btyY/Pz8moZnuXPPC85eC39ks9m47bbb6NKlC4sWLQIgLy+voq/H\nbreTl5cHVO8e8TXuPHd/+HwEeq44dOgQmZmZdOvWzdJ746JJPy4ujqioqPO+UlNTmTRpEllZWeze\nvZvmzZvz6KOPVuNS+LdAmqewZcsWMjMzWbt2La+88gqbNm2q9LrNZguo63GuQD53IOBzRWFhISNG\njGDu3Lk0atSo0mu1fW/Uvdgb1q1bV6UfNHHiRIYMGQKYv4Wys7MrXvv2228JDQ2lZcuWfPvtt+c9\nf+Z7Dh8+TIsWLSgtLeX48eMEBQVd0sl4o19ei+zs7Eq/sf1J8+bNAWjWrBnDhw8nIyMDu91Obm4u\nISEhuFwugoODgUu7R1q2bFm7J+Im7jh3f/l8nDl3CLxcUVJSwogRIxg7dizx8fGAtfdGjco7vzZW\nf+jQoby/WQhFAAABkUlEQVT99tsUFxeTlZXFgQMH6Nq1KyEhIVx11VWkp6djGAbLli1j2LBhFd+T\nnJwMwMqVK+nbt29NQvMaXbp04cCBAxw6dIji4mLeeecdhg4danVYbldUVMSJEycAOHnyJB999BFR\nUVGV/l2Tk5MrbvpLuUfOfI+vcce5+8vnI1BzhWEYTJgwgYiICCZPnlzxvKX3Rk16pseOHWtERUUZ\nnTp1MoYNG2bk5uZWvDZjxgyjdevWRrt27Yy0tLSK53fs2GF07NjRaN26tfHII49UPH/69Gnjrrvu\nMtq0aWN069bNyMrKqkloXuWDDz4wwsPDjdatWxsvvPCC1eF4xNdff21ER0cb0dHRRmRkZMV5Hj16\n1Ojbt6/Rtm1bIy4uzigoKKj4nku9R7zZ6NGjjebNmxv16tUzQkNDjddff92t5+5Ln49fXovFixcH\nbK7YtGmTYbPZjOjoaCMmJsaIiYkx1q5da+m94ZZlGERExDdo5ywRkQCipC8iEkCU9EVEAoiSvohI\nAFHSFxEJIEr6IiIB5P8DcEIaNtGeCosAAAAASUVORK5CYII=\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x7fc3e4ece690>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 48 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment