Skip to content

Instantly share code, notes, and snippets.

@heetbeet
Created March 13, 2019 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save heetbeet/ed483c0de194bb7cc28b04d2b4cc9cb1 to your computer and use it in GitHub Desktop.
Save heetbeet/ed483c0de194bb7cc28b04d2b4cc9cb1 to your computer and use it in GitHub Desktop.
Wrapping scipy optimize fmin for a bit more flexability
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class dotdict(dict): \n",
" \"\"\"A dot-able dictionary for easy access to items. Note stay clear from\n",
" keys that clashes with dict internals like: copy, fromkeys,\n",
" get, items, keys, pop, popitem, setdefault, update, and values.\n",
" ...\n",
" \n",
" Examples\n",
" --------\n",
" >>> a = dotdict(val1=1)\n",
" >>> a.val2 = 2\n",
" >>> a\n",
" {'val1': 1, 'val2': 2}\n",
" >>> a['val1']\n",
" 1\n",
" >>> a.val1\n",
" 1\n",
" \"\"\"\n",
" def __init__(self, **kwds):\n",
" self.update(kwds)\n",
" self.__dict__ = self \n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'x': array([2.00006104]), 'y': array([3.7252903e-09])}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy import optimize\n",
"\n",
"def minimize_x_min_2_sq(keeps, start=5):\n",
"\n",
" def f(x):\n",
" keeps.x = x #nou kan jy enige iets langs die pad capture\n",
" keeps.y = (x-2)**2\n",
" \n",
" return np.abs(keeps.y) #onthou net om 'n cost funksie te return\n",
"\n",
" optimize.fmin(f, start, disp=False)\n",
" \n",
" return keeps #return 'n dict van goetjies wat jy wil hê\n",
"\n",
"\n",
"keeps = dotdict()\n",
"minimize_x_min_2_sq(keeps)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimated 2nd degree coefs: [-0.39006781 11.62055263 -1.86031423]\n",
"Estimated 3rd degree coefs: [ 0.20543324 -0.27914917 0.1030236 -0.18166797]\n",
"Estimated 4th degree coefs: [-0.001786 0.21266205 -0.14996328 -0.43864873 0.0475309 ]\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f0868f66e10>]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f08690b5828>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0869074dd8>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD8CAYAAACcjGjIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X90XPV55/H3o5HkYDkxRHYSMEiyUyenELpsUNmkadpkpQbCEohJsoesWXxwWIEmnHXIllNYnW3c9Pg0LUmI0lRjpsTEIbOlbBs3TmLqYG3atGwoiNRgO4RijGWEXXBEbGKbYmn87B/3yh7NzB39GM0vzefFmaOZ7/3OzOOrYR7d709zd0RERDI1VDoAERGpPkoOIiKSQ8lBRERyKDmIiEgOJQcREcmh5CAiIjmUHEREJIeSg4iI5FByEBGRHI1z8SJmtgm4CnjZ3d8Vlq0H/htwOKz2P919W3jsTuBTQBr47+6+far3WLJkiXd0dMxFuCIideGJJ574ubsvnc1z5yQ5AN8AvgZ8M6v8bnf/YmaBmV0IXAdcBJwH7DCzd7h7utAbdHR0MDQ0NEfhiojMf2Y2PNvnzkmzkrv/CHhlmtWvAR5w99fd/XlgL3DZXMQhIiJzo9R9Drea2VNmtsnMzgnLlgEvZNQZCctERKRKlDI5JIC3A5cAh4AvheWWp27epWHNrMfMhsxs6PDhw/mqiIhICZQsObj7S+6edvdTwJ9zpuloBLggo+r5wMGI10i6e6e7dy5dOqs+FRERmYWSJQczOzfj4Spgd3h/K3CdmS0ws+XASuCxUsUhIiIzNyfJwcz+Avgx8E4zGzGzTwF/Yma7zOwp4IPAbQDuvgd4EPgp8LfAp6caqSQiUm9Su1J0fKWDhj9ooOMrHaR2pcr6/lYrO8F1dna6hrKKSD1I7UqxdstaTvrJ02XN1symVZtYffHqab+OmT3h7p2ziUEzpEVEqsy6resmJQaAk36SdVvXlS0GJQcRkSoST8QZHRvNeyyqvBSUHEREqkQ8ESfxYiL/gH+Ao+WLRclBRKRKJPcloSni4Elo3dlatliUHEREqkS6JWLgpkPT9ib6b+ovWyxKDiIiVSCeiMOpiINH4b7b7mP16umPVCqWkoOISIWd7muI5Tk4Br3v6C1rYgAlBxGRiovsa0hD77JeBnoHyh6TkoOISIWkUik6Ojqi+xoaqEhigLnb7EdERGYglUpx4903MrZqLLJO7Hi+dqbyUHIQEamAdfeuY+zyMWiOqDAGPSt6yhpTJjUriYhUwOglo/kTg0PsWKxifQ0TdOUgIlJm8UQcFkcfH79rvHzBRFByEBEpo+4vdzP46mDkEhmtTeWbBV2ImpVERMoktStVMDE0WzP9V5dvFnQhSg4iImWybuu66EX1nBnv11BKSg4iImVSaMnt2PFY1SQGUHIQESmfqCW3vbLDVvOZqz2kN5nZy2a2O6PszWb2sJk9G/48Jyw3M/uqme01s6fM7N1zEYOISLVr3dkKJ7MKHZqfaq7osNV85urK4RvAFVlldwCD7r4SGAwfA3wYWBneeoDEHMUgIlLV+m/qp2l7ExwBHDgCTd9rYtPHNlU6tBxzkhzc/UfAK1nF1wCbw/ubgY9mlH/TA48CZ5vZuXMRh4hINYkn4jTe3oitNxpvb+SRVx/hvtvuo31LO/Z5o31Le9mX4p6uUs5zeKu7HwJw90Nm9pawfBnwQka9kbDsUPYLmFkPwdUFbW1tJQxVRGRunV6Ge1HwOL0oHTwG9u/fX7nApqkSHdL5BnJ5vorunnT3TnfvXLp0aYnDEhGZG/FEnMShRO4y3E3h8tw1oJTJ4aWJ5qLw58th+QhwQUa984GDJYxDRKRsCm7cQ4GtQKtMKZPDVmBNeH8N8J2M8hvCUUvvAY5OND+JiNS6yI17QpVchnsm5qTPwcz+AvgAsMTMRoDPAV8AHjSzTwEHgE+E1bcBVwJ7gRPAjXMRg4hINSh4ZVDhZbhnYk6Sg7t/MuJQV566Dnx6Lt5XRKTaxI7HSC/KkyAquOXnbGiGtIjIHOpZ0QPZm7uNQe+5tZMYQMlBRGRODfQO0Lusl9ixWNVs3DMb2s9BRGSW4ok4G4c34m8IR+O/Br0dQSIYoLaSQTZdOYiIzEI8ESdxMIGf5cHsLQMWQuJgItjprcYpOYiIzEJyXzJ/20tj7Ux0K0TJQURkBlKpFB0dHQWHrNbKRLdC1OcgIjJNqVSKG+++kbFV2cORJquViW6FKDmIiEzTunvXMXb5GDQXqDReOxPdClGzkojINI1eMpo/MXh4OwG959XesNV8dOUgIjJdi6MP+fq8i0vXLF05iIhMU2tT64zKa5mSg4hIlokRSQ0NDXR0dJBKpQDov7qfZpvcrtRszfRf3V+JMEtKzUoiIhlSqRRrvriG9Ko0LIbho8Os+WKw+8DEdp59g30cOHqAtsVtbOjawOqLq2+bz2JZsEhq9evs7PShoaFKhyEi89yi9y7iePfxyX86j0PLjhaO/fhYxeKaDTN7wt07Z/NcNSuJiGQ4/v7juW0qjWF5HVFyEBHJtHCG5fOUkoOIiOQoeXIws/1mtsvMdprZUFj2ZjN72MyeDX+eU+o4REQyRY1IamloyVs/qny+KtdopQ+6+88zHt8BDLr7F8zsjvDx75UpFhGpc5PWSApHJN14d7Cd/T2r7mHNt9eQ5szieTFi3LPqnkqFWxGVala6Btgc3t8MfLRCcYhIHTq9RtLZBPswnA1jl4+x7t51rL54NZuv3Uz74nYMo31xO5uv3Twvh6sWUvKhrGb2PPALgpVH7nH3pJkdcfezM+r8wt0LNi1pKKuIFCuVStHX18fwquEgMWQ7An53bQzvn45ihrKWo1npfe5+0MzeAjxsZj+b7hPNrAfoAWhraytVfCJSB7KbkvIqsHZSvSl5s5K7Hwx/vgxsAS4DXjKzcwHCny9HPDfp7p3u3rl06dJShyoi81Q8Eef6J69n7KqMpqQ85uMaSbNV0uRgZi1m9saJ+8CHgN3AVmBNWG0N8J1SxiEi9SueiJN4MQEtRCYFmL9rJM1WqZuV3gpsMbOJ9/rf7v63ZvY48KCZfQo4AHyixHGISJ1K7kvCogIVHNrPbp+3ayTNVkmTg7vvA/5dnvJRoKuU7y0iAlPv59za1Mr+z+wvTzA1RDOkRWReK7Sfs5qSoik5iMi81rOiB8ayCh0WNSxi06pNakqKoOQgIvPaQO8Avct6iR2LgUPsWIzet/byy//1SyWGApQcRKQmRK2FNB0DvQOM3zWOr3fG7xpnoHeghJHOD9oJTkSqXiqVoqenhxMnTgAwPDxMT08PcGZ3Nplb2glORKpeR0cHw28aDsY4LgaOAoPQ/mo7+/fvr2xwVUw7wYnIvDb8pmH4CJMWyuMjYbmUhJKDiFSd7P6Fht9pgOasSs0Quzx6mKoUR30OIlJV8u21wBvz100vKjzBTWZPyUFEqsrpvRYmrhTOJljwP4/2xe3lCqvuqFlJRKrK6CWjuU1IRk6CWNi0kA1dG8oVVt1RchCRkpvoQzAzGhsbMbPouQoF9lTI3J0t+ZGkJrGVkJqVRGROnd5tbXgYM8Pd4WJgFbAY0qfS0DB53+bMuQqtTa2Mjo/mvK4WyCsvXTmIyJyZmKw2PDwMF4P/rsPngGs5Mww1Rs6+zZn6r+6n2Sa3K2mBvPJTchCRGSnURNTX18eJt5+A2wkSwsQGO1Gb7DSHfQwZVl+8mk2rNk1qQtICeeWnGdIikmPii/7AgQO0tbWxYcMGVq9ePXkZi4uZNGO56R+aGDs5FkxWy+5QLsTB19fG91CtKWaGtPocROpUd3c3g4ODpx93dXWxY8cO4vE4GzduZOIPx8x1jE5fGVwBLOTMFUHYRMQYM0sMaN/maqVmJZFZKGaF0HLFUehYdmIAGBwc5KKLLiLxj4kzfQWfA26HE28/EXQyTyxjkW8/5maChDED6kuoXhVrVjKzK4B+gu6pe939C4Xqq1lJKiW7ieXKK69k8+bNp1cIBTAzbrnlFgYGBiY9Z3h4mFgsRjqdprU1+Av5lVdeOf0627Ztm9R088gjj5BMJkmn08RiMXp6ek6/ZrZ4PE7iHxM5TTv33XYfQDDL+P1jOcdWr16NmcH1wNszXvA54EngGnLbFMaB7wTLVRSclexE9y9MnCsMx2lfrH2bS62YZqWKJAcziwH/AvwOMAI8DnzS3X8a9RwlBykkqo08SjwRJ7kvSbolTex4jJ4VPafX+E/tStE32Bcs23CK4MvuFMF1drgaKHCmaQXgBLAbGn61gVNvPBX9JTlRfhR4Bngnp7+87YeGn+fQGb7XKWAIejt6cxJEKpXi+tT1cFnW+5yE1v8XJKHR38iaTBYe+/kPf479VwsSQ+ZznYLNQrFjUyQGoMVa8EbnxNiJnGOtZ7XS/+F+JYMyqsXk8F5gvbtfHj6+E8Dd/yjqOUoOEiV7rX+AhQsXkkwmufWxWzlyzpH8T8z8YhyD3mW9vO8338faLWs56Sej33CcM0MyM03jr+aC9dMESSH7C/tx8O9P/v90yQeXMPrbo/nfb+Kfe3b+Y363Y+utcPKK0L64PUiaeTRbM5tWbQKgb7CPA0cP0La4TVcHFVSLHdLLgBcyHo8A/6FCsUgNSaVS3Py1mzn+geOwIOPAbcBJgr/kj8KJwRNc/4PrYTnT+8JuguS+JA++8mDhxADR/9fMJDHkq59vgVEDLs0tHr0kIjFAwRnGBY9NYaIZqOe7PTlXBtlXBUoGta9SySHqb5bJlcx6gB6Atra2UsckVS6VSnH99uvhcnI/QU3hDU6v9U9TnnoFpFvSjI4V+NKtlHzDRgp8yU+M/omaZQxE/xsNGmlknPFJxU0NTZOuAHRlMP9VarTSCHBBxuPzgYPZldw96e6d7t65dOnSsgUnlZXalaLjKx00/EEDHV/pILUrGGWz9q/Xwgqm9+U9w+GUALHjsaAvoMpYnn9w5PBPD2YYTzXLuGt5V96ndy3v4hvXfoPWs868futZrdz30fsmXRXs/8x+Tn3uFPs/s1+JYZ6q1JXD48BKM1sOvAhcB/yXCsUiVSS1KzWpzX/46DBrt6wF4OS7Tpbur/ox6FnRw4MPPpjbkZulkUZOhf9NUmSfQwMNnPJTOX0Ot/z6LTlP7b+6P2/fSO+v9076so76C3/HDTvo/mY3g89nzHNY3sWOG3YAahaSyg5lvRL4CkFL6yZ3L7j2rjqk68OSDUvyN4c0ts64ycfShjd49HPCj37maKXTG81MDAGdGKXkwc+JdneAdQ+tY/S1INbWs1q5pPES/u7Q35FuSRcerRS+zpUrr2Tbs9smfXk/cuARkk8kSXuamMXoubSHgf+UfyjrxKgqNe9IlJobrTQbSg71oeAomvCLdToWNi0k+ZEkt96bNVpp4kv7FNhPjPs/eX/OkNeZDosVqVZKDlK1ur/czeDRwdObtXQt7mLHZ3dE1rfbLHIIZtcFXQy+Opg71BNgHFqaWzjhJyL/itaXvtQbJQepOvHvx0kMJXKbVxy63hSdIJZ8cEnByVszTTYi9awW5znIPBb/fpzE44n8SzUbwZd7hP6b+vMu+9B/WzDKRolApDyUHKQop9cQunD4zLIPULjjuMCxiWYeNf+IVJaalWTWTo/s+dBY0Aw03ZFEafDP18bnTqSWqVlJKmLdveuCNfxnuLFL8+5ZzFATkbLSfg4ya6OXFJ4sNsnEUNQh2PSxTSWMSkTmgpKDTEveJS2mWsRtIiGkgcdg0ZcW8a1Pfkv9ByI1QM1KMqXUrtSklTiHjw7T890eFsUWcezUsfxPcuAx4CHObFqzLf9MXxGpPkoOMqW+wb6cJZpPjJ2g9axWTv7bycnr+4RXCxf+24Xs2banvIGKyJxRs5LkiCfiNN7eiK03Gm9vZPhI/s1dRl8bZdOqTbQvbscw2he3862PfQv/A2fPHysxiNQyXTnIJPFEnMSLCVgUPE4vSufZaSMQOxZj9cWrtdibyDykKweZJLkveWbTnAnhUhWTnIT09sL7CYtI7VJykEnSLQW+8I8QJIkjwHeh/dX2MkUlIuWmZqU6Fk/ESe5Lkm5Jn97TIHY8FjQlZTtKsPtGaOHChWxIFtyCQ0RqmK4c6tRE30J6URos6FtIvJjgnQ3vhLGsymPQZV20t7djZrS3t5NMJjVfQWQe05VDnUruS57udD6tCZ55/Rl6l/XmXFEM9A7AlysSqohUgJJDnYrqW0i3pBnoHWAATVgTqWcla1Yys/Vm9qKZ7QxvV2Ycu9PM9prZM2Z2ealikGix47EZlYtIfSn1lcPd7v7FzAIzuxC4DrgIOA/YYWbvcHeNiyyRfB3PPSt6gvkMmcNWx6BnRU/F4hSR6lGJDulrgAfc/XV3fx7YC1xWgTjqQlTHM0Dvsl5ix2LgwYS23mW9Qd+CiNS9Ul853GpmNwBDwP9w918Ay4BHM+qMhGU5zKwH6AFoa2srcajzS+bVQs6ktqagQ3r8rnH1LYhIXkVdOZjZDjPbned2DZAA3g5cAhwCvjTxtDwvlXeBBndPununu3cuXbq0mFDrSvbVQj4FJ7uJSN0r6srB3bunU8/M/hz4XvhwBLgg4/D5wMFi4pDJ8g5TzaKOZxEppJSjlc7NeLgK2B3e3wpcZ2YLzGw5sJJg5X8p0sRqqlNeFajjWUSmUMo+hz8xs0sImoz2AzcDuPseM3sQ+CkwDnxaI5WKl72aal7O5EltIiIRzD1iPeYq09nZ6UNDQ5UOo2o13t6Yf02kCWNoNJJInTGzJ9y9czbP1dpK80RkU5KGqYrILGj5jBqW2pWib7CPA0cPBI13eUYmxY7HGL9rvOyxiUhtU3KoUaldKdZuWXtm/+YGchOEOp5FZJbUrFSj1m1ddyYxTDDgFGpKEpGi6cqhRo2Ojeaf4Gbg62tjkIGIVC9dOdSqozMsFxGZASWHGtW6sxWyWpU4GZaLiBRJyaFG9d/UT9P2JjhC0BF9BJq2N9F/U3+lQxOReUB9DjVqYv/mvr4+Dhw4QFtbGxs2bNC+ziIyJzRDWkRkntIM6XloYhE9W2803t5IPBGvdEgiUkeUHKpQ95e7SbyUu3ubEoSIlIuSQ5WJfz/O4KuDuXMYwt3bRETKQcmhiqR2pUgMJbR7m4hUnJJDFekb7Ct4XLu3iUi5KDlUgVQqRUdHB8NHhqMruRbRE5Hy0TyHCkulUtx4942MrRqLruTQ/FQzA9/WInoiUh5FXTmY2SfMbI+ZnTKzzqxjd5rZXjN7xswuzyi/Iizba2Z3FPP+88HNW29m7KoxOJv8fQ0OPAabPrapzJGJSD0r9sphN3AtcE9moZldCFwHXAScB+wws3eEh/8M+B1gBHjczLa6+0+LjKMmpXalOP6rx6OTwlFgENgFq7dp5rOIlE9RycHdnwYwy/l2uwZ4wN1fB543s73AZeGxve6+L3zeA2HdukwOfYN9kSOTAPhK8KO9vb0s8YiITChVh/Qy4IWMxyNhWVR5XRo+WqADOlx6e+HChWzYsKE8AYmIhKZMDma2w8x257ldU+hpecoidjkmcnEnM+sxsyEzGzp8+PBUodac2LGIoakODAZXDMlkUovpiUjZTdms5O7ds3jdEeCCjMfnAwfD+1Hl+d47CSQhWHhvFnFUtfT2NHwEaM4oDDug/al5988VkRpSqmalrcB1ZrbAzJYDK4HHgMeBlWa23MyaCTqtt5YohqrX/mo7fJdJezLwbWj/qfoYRKSyiuqQNrNVwJ8CS4Hvm9lOd7/c3feY2YMEHc3jwKfdPR0+51ZgOxADNrn7nqL+BTUknoiT3Jck3ZImdjzGB679AIfvOcyJXSdO11m4cCEbkupjEJHK0n4OZRJPxEkcTExOx+PQdbyLvd/eqw17RGTOFbOfg2ZIl0FqV4rEvyZyz3Yj/HDBD0nv14J6IlJdtLZSiaV2pVi7ZW3kmT614FR5AxIRmQYlhxJbt3UdJ/1kpcMQEZkRJYcSGx0bLVzhROHDIiKVoORQakcLHBuH1sdbyxaKiMh0KTmUWOvOVshuVXLgODQ91ET/Tf2VCEtEpCAlhxLrv6mfpu1NORPdWje1ct9t92nYqohUJQ1lLbGJL/++vj7NZRCRmqHkMMeyZ0H3rOhhoHdAyUBEaoqalebQxCzo9KI0GKQXpUkcTBBPxCsdmojIjCg5zKGNBzbmnQW98cDGisQjIjJbSg5zyBfkX6cqqlxEpFopOYiISA4lh7kUNdtZs6BFpMZotFKRuj/bzaAPwuKwIE2wU8UEzYIWkRqk5FCE7s92M9gyeOYsthAkh+PAQuAoNP1DE/23aRa0iNQWNSsVYXDBYG56Da8a7PNG+5Z2zYIWkZqkK4dZSu1KwYKIgwvh1Cnt0yAitauoKwcz+4SZ7TGzU2bWmVHeYWavmdnO8LYx49ilZrbLzPaa2VfNzIqJoRLiiTjX/9X1UHORi4hMT7HNSruBa4Ef5Tn2nLtfEt5uyShPAD3AyvB2RZExlNXpvaALnLk3+BvKF5CISAkUlRzc/Wl3f2a69c3sXOBN7v5jd3fgm8BHi4mh3BIv5NkLOpPDvR+/t2zxiIiUQik7pJeb2T+b2d+b2fvDsmXASEadkbCsJsQTcWguUMGh5ekWVl+sDmgRqW1Tdkib2Q7gbXkO9bn7dyKedghoc/dRM7sU+Bszu4j8rfSRa0uYWQ9BExRtbW1ThVpyyX1JWBRx0KHpe03cc9s9ZY1JRKQUpkwO7t490xd199eB18P7T5jZc8A7CK4Uzs+oej5wsMDrJIEkQGdnZ8UXKEq3pKMPnkDDVkVk3ihJs5KZLTWzWHh/BUHH8z53PwT80szeE45SugGIuvqoOrHjsfwHHHqX9yoxiMi8UexQ1lVmNgK8F/i+mW0PD/0W8JSZPQn8FXCLu78SHusF7gX2As8BDxUTQzn1rOiBsaxChwtfu5CB3oGKxCQiUgoWDBqqfp2dnT40NFTpMCJ3ehMRqTZm9oS7d05dM89zlRxEROanYpKD1lYSEZEcSg4iIpJDyUFERHIoOYiISA4lBxERyaHkICIiOZQcREQkh5KDiIjkUHIQEZEcSg4iIpJDyUFERHIoOYiISA4lBxERyaHkQLAMd+Ptjdh6o/H2xmCvaBGROlb3ySGeiJN4MUF6URoM0ovSJF5MKEGISF2r++SQ3JeEpqzCprBcRKRO1X1ySLekZ1QuIlIPit1D+i4z+5mZPWVmW8zs7Ixjd5rZXjN7xswuzyi/Iizba2Z3FPP+cyF2PDajchGRelDslcPDwLvc/deAfwHuBDCzC4HrgIuAK4ABM4uZWQz4M+DDwIXAJ8O6FdOzogfGsgrHwnIRkTpVVHJw9x+4+3j48FHg/PD+NcAD7v66uz8P7AUuC2973X2fu58EHgjrVsxA7wC9y3qJHYuBQ+xYjN5lvQz0DlQyLBGRiprLPoe1wEPh/WXACxnHRsKyqPK8zKzHzIbMbOjw4cNzFmgqlaKjo4OGhgY6Ojp435vex/hd4/h6Z/yucSUGEal7jVNVMLMdwNvyHOpz9++EdfqAcSA18bQ89Z38ycij3tvdk0ASoLOzM7LeTKRSKdZ8cQ3pVWlYDMNHh1nzxTUArF69ei7eQkSk5k2ZHNy9u9BxM1sDXAV0ufvEF/gIcEFGtfOBg+H9qPKyuPlrN5O+Kn3mX342pK9Kc/PXblZyEBEJFTta6Qrg94Cr3f1ExqGtwHVmtsDMlgMrgceAx4GVZrbczJoJOq23FhPDTB1///HclNgYlouICDCNK4cpfA1YADxsZgCPuvst7r7HzB4EfkrQ3PRpd08DmNmtwHYgBmxy9z1FxjAzC2dYLiJSh4pKDu7+KwWObQA25CnfBmwr5n1nS0tiiIhMT93MkI4n4iQOJvJ3lQMtDS3lDUhEpIrVTXJI7E9EXifFiHHPqnvKG5CISBWrm+TAWRHlDpuv3czqizVSSURkQl0kh6n6GpQYREQmq4vkkNyXjOxrsH+LOCAiUsfqIjlELr/tcEv7LeUNRkSkBtRFcohcfvs1tI6SiEgedZEcopbl7u3orUg8IiLVrtgZ0lWt+7PdDPogLAZOEiSIs4IriZ4VPbpqEBGJMG+TQ/dnuxlsGTzzL2wBxqHr1S52fHlHJUMTEal687ZZabBxMO8Ce4ONgxWJR0Sklszb5KAF9kREZm/+JgcREZm1eZscFviCGZWLiMgZ8zY5fP3jX8dOTZ79bKeMr3/86xWKSESkdszb5LD64tXc//H7aV/cjmG0L27n/o/fr3WURESmwc5s+1zdOjs7fWhoqNJhiIjUDDN7wt07Z/PcYveQvsvMfmZmT5nZFjM7OyzvMLPXzGxneNuY8ZxLzWyXme01s69auL+oiIhUj2KblR4G3uXuvwb8C3BnxrHn3P2S8Ja5ul0C6AFWhrcrioxBRETmWFHJwd1/4O7j4cNHgfML1Tezc4E3ufuPPWjP+ibw0WJiEBGRuTeXHdJrgYcyHi83s382s783s/eHZcuAkYw6I2GZiIhUkSnXVjKzHcDb8hzqc/fvhHX6gHEgFR47BLS5+6iZXQr8jZldRP4tdyJ7xM2sh6AJira2tqlCFRGROTJlcnD37kLHzWwNcBXQFTYV4e6vA6+H958ws+eAdxBcKWQ2PZ0PHCzw3kkgGb7PYTMbnirePJYAP5/F88pF8c1eNccGiq8Y1Rwb1E587bN9gaJWZTWzK4DfA37b3U9klC8FXnH3tJmtIOh43ufur5jZL83sPcA/ATcAfzqd93L3pbOMcWi2Q7nKQfHNXjXHBoqvGNUcG9RHfMUu2f01YAHwcDgi9dFwZNJvAZ83s3EgDdzi7q+Ez+kFvgGcRdBH8VD2i4qISGUVlRzc/Vciyv8a+OuIY0PAu4p5XxERKa15u3xGhmSlA5iC4pu9ao4NFF8xqjk2qIP4amb5DBERKZ96uHIQEZEZmhfJwcw+YWZ7zOyUmXVmHbszXMfpGTO7POL5y83sn8zsWTP7SzNrLmGsf5mx5tR+M9sZUW9/uAbVTjMr24qDZrbezF7MiPHKiHpXhOd0r5ndUabY8q7lladeWc/dVOfCzBaEv/e94eeso9Qxhe97gZn90MyeDv+qsMjLAAAE/klEQVT/WJenzgfM7GjG7/v3yxFbxvsX/F1Z4KvhuXvKzN5dxtjemXFedprZq2b2maw6ZT1/ZrbJzF42s90ZZW82s4fD76+HzeyciOeuCes8G05BKMzda/4G/CrwTuDvgM6M8guBJwlGVC0HngNieZ7/IHBdeH8j0FumuL8E/H7Esf3Akgqcy/XA705RJxaeyxVAc3iOLyxDbB8CGsP7fwz8caXP3XTOBRAHNob3rwP+skyxnQu8O7z/RoL1z7Jj+wDwvXJ/zqb7uwKuJBjRaMB7gH+qUJwx4F+B9kqeP4KRoO8GdmeU/QlwR3j/jnz/XwBvBvaFP88J759T6L3mxZWDuz/t7s/kOXQN8IC7v+7uzwN7gcsyK1gwBvc/An8VFm2mDOs9he/7n4G/KPV7lcBlwF533+fuJ4EHCM51SfkM1/Iqk+mci2sIPlcQfM66wt9/Sbn7IXf/SXj/l8DT1N5yNdcA3/TAo8DZFqzRVm5dBIuJzmYi7pxx9x8Br2QVZ36+or6/LgcedvdX3P0XBIumFlz0dF4khwKWAS9kPM63llMrcCTjS6dc6z29H3jJ3Z+NOO7AD8zsiXAZkXK6NbyE3xRxiTqd81pq2Wt5ZSrnuZvOuThdJ/ycHSX43JVN2JT17wkmn2Z7r5k9aWYPWbDMTTlN9buqhs8aBFd8UX/IVfL8AbzV3Q9B8AcB8JY8dWZ8HoudBFc2No01nvI9LU9Z9vCsGa33NB3TjPWTFL5qeJ+7HzSztxBMMvxZ+FdD0QrFR7Ck+h8SnIM/JGj6Wpv9EnmeOyfD3qZz7ix3La9sJTt3eVTkMzYTZraIYN7RZ9z91azDPyFoKjkW9i/9DcGKBuUy1e+qoucOIOyDvJrJWxJMqPT5m64Zn8eaSQ4+xRpPEUaACzIe51vL6ecEl6qN4V91Bdd7mo6pYjWzRuBa4NICr3Ew/PmymW0haL6Yky+46Z5LM/tz4Ht5Dk3nvM7KNM5dzlpeeV6jZOcuj+mci4k6I+HvfjG5TQMlYWZNBIkh5e7fzj6emSzcfZuZDZjZEncvy7pB0/hdleyzNgMfBn7i7i9lH6j0+Qu9ZGbnuvuhsMnt5Tx1Rgj6RyacT9BHG2m+NyttBa4LR4ssJ8joj2VWCL9gfgh8PCxaA0RdicyVbuBn7j6S76CZtZjZGyfuE3TE7s5Xd65lteeuinjfx4GVFozyaia45N5ahtgm1vK62jPW8sqqU+5zN51zsZXgcwXB5+z/RiW2uRT2a3wdeNrdvxxR520T/R9mdhnBd8JoqWML3286v6utwA3hqKX3AEcnmlDKKPIqv5LnL0Pm5yvq+2s78CEzOydsKv5QWBatXL3spbwRfImNEKwE+xKwPeNYH8FokmeAD2eUbwPOC++vIEgae4H/AywocbzfIFhvKrPsPGBbRjxPhrc9BE0q5TqX9wO7gKfCD9252fGFj68kGP3yXLniC38/LwA7w9vG7Ngqce7ynQvg8wRJDOAN4edqb/g5W1Gm8/WbBE0HT2WcsyuBWyY+f8Ct4Xl6kqCT/zfK+FnL+7vKis+APwvP7S4yRiOWKcaFBF/2izPKKnb+CJLUIWAs/M77FEH/1SDwbPjzzWHdTuDejOeuDT+De4Ebp3ovzZAWEZEc871ZSUREZkHJQUREcig5iIhIDiUHERHJoeQgIiI5lBxERCSHkoOIiORQchARkRz/H5pDTsf2eEn3AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0868fdf518>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD8CAYAAACcjGjIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X90XPV55/H3o5HlVCYteOwkgNHI6ZKckpxuGlSSNGk3XdPEyfbUTbbpgYpgbIpACqm63T0bwOf0ZNvjbptu0qNALCMaO7CahbDJUrwtgeBs04RtIIhCCIQQDEhGsRdsOU2xjH9o5tk/7h17NHPv6Mf8nvm8zpkzM997Z+bx1fg+c78/zd0RERHJ11HvAEREpPEoOYiISBElBxERKaLkICIiRZQcRESkiJKDiIgUUXIQEZEiSg4iIlJEyUFERIp0VuJNzGwX8JvAK+7+9rDs08A1wKFwt5vc/b5w243A1UAG+AN3f2Chz1izZo339vZWIlwRkbbw2GOPHXb3tct5bUWSA/Al4BbgjoLyv3L3/5ZfYGYXAZcBbwPOA/aa2VvcPVPqA3p7e5mYmKhQuCIirc/Mppb72opUK7n7t4Aji9x9E3CXu59w9xeBfcAllYhDREQqo9ptDteb2ZNmtsvMzgnLzgdeyttnOiwrYmYDZjZhZhOHDh2K2kVERKqgmslhFPh54B3AQeCzYblF7Bs5Nay7j7l7n7v3rV27rGozERFZhqolB3d/2d0z7p4FbuNM1dE0cEHeruuAA9WKQ0RElq5qycHMzs17+hHgqfDxHuAyM1tpZuuBC4HvVisOERFZuookBzO7E/gO8FYzmzazq4HPmNn3zexJ4NeB/wDg7k8DdwM/AO4HPrFQTyURkXaTTkNvL3R0BPfpdG0/35plJbi+vj5XV1YRaQfpNGzdOsfJk2dGG3R1zbFrVyf9/Yt/HzN7zN37lhODRkiLiDSY4eGj8xIDwMmTnQwPH61ZDEoOIiINZGjoIWZmVkVum5nprlkcSg4iIg1iaOghRkd/iege/wD7axaLkoOISIMYG+sFoq8aYJZk8nM1i0XJQUSkAaTTkMlEThYBOCtWXM/IyLtqFo+Sg4hIneV6J5WqTtq9+1L6l9JVqUxKDiIidRbVO+mMWQYHX6ppYgAlBxGRukmn0/T29pboheQMDj7Ojh3vq2lcULn1HEREZAnS6TRbtuzl1KlvEl+dNFWXxAC6chARqYvh4Uc4deoWoJfo5FDb3kmFlBxEROpgZuaPiO626sBkzXsnFVJyEBGpsXQ6DfTEbHVSqffXvHdSIbU5iIjUUDAK+oPEtTMkk8eYnJysaUxRlBxERGoknYbR0V8GVkZu7+qaY2TkrNoGFUPVSiIiNRLMqhqdGGDpU3JXk5KDiEiNlJ5VtaNhEgMoOYiI1FD8rKrJ5LEaxrGwSi0TusvMXjGzp/LKVpvZg2b2XHh/TlhuZvZ5M9tnZk+a2TsrEYOISKMLxi0cj9hyomHaGnIqdeXwJWBjQdkNwDfc/ULgG+FzgA8BF4a3AWC0QjGIiDS0kZF3sWLFIHCIYDyDA4cZHHy0oaqUoELJwd2/BRwpKN4E3B4+vh347bzyOzzwMHC2mZ1biThERBpJOg29vdDREdxDP7t3X0oq9cuYJUil1jM+/kDdpsgopZpdWd/o7gcB3P2gmb0hLD8feClvv+mw7GDhG5jZAMHVBT09cQNGREQaT24a7txsq1NTwfNdu/qZnGywy4QI9WiQjhr54VE7uvuYu/e5e9/atWurHJaISGUMDT3EFVfMFU3DffJkZ9idtfFVMzm8nKsuCu9fCcungQvy9lsHHKhiHCIiNXNmHejoipnS3VkbRzWTwx5gc/h4M3BvXvmVYa+ldwM/zVU/iYg0u9LrQEOp7qyNpFJdWe8EvgO81cymzexq4M+B3zCz54DfCJ8D3Ae8AOwDbgOGKhGDiEgjyGTOK7G1vtNwL0VFGqTd/fKYTRsi9nXgE5X4XBGRRpNIHCCTWRexZS6chvvSmse0HBohLSJSQQMDk8BsQeksq1YN1X0a7qVQchARWaZ0GtasAbPgtmYNvPe972Nw8HESiWkgSyIxzeDg4xw9OtY0iQE0ZbeIyLKk03DVVRnm5hKny2ZmYPPmDLff/j527MiVrgtvzUVXDiIiyzA8fHReYsjJZBJNM5ahFCUHEZFlKDVeoVnGMpSi5CAisgRDQw/R2TlN3DKfgeYYy1CKkoOIyCLlRj8HXVXjksPxphnLUIqSg4jIIsWPfs5Nv32Ijo5rGBl5V03jqgYlBxGRRYof/exAB8nkL3DHHRubqstqHHVlFRFZpLjRz4nEAebmIieXblq6chARWaS40c9BeWtRchARKZDrkWSWpbNzmqGhhwDYsSN69HMjruRWLgvmwWt8fX19PjExUe8wRKTFBT2SfhlYmVd6gsHBR5suCZjZY+7et5zX6spBRCTPzp2/wPzEALAyLG8fSg4iInncVy+pvFUpOYiISBElBxGReY4ssbw1VT05mNmkmX3fzJ4ws4mwbLWZPWhmz4X351Q7DhGRfHE9kgYHnwGOF+x9PCxvH7UaBPfr7n447/kNwDfc/c/N7Ibw+adqFIuItLncHEm5qTAymXWMjp4DPBT2SHqIsbFeMpnzSCQOMDAw2XQ9lcpV9a6sZjYJ9OUnBzN7Fni/ux80s3OBb7r7W0u9j7qyikildHZOx4x0nmZurvkW5onT6F1ZHfi6mT1mZgNh2Rvd/SBAeP+GGsQhIm0uV5WUyZwfuT1+7qT2U4tqpfe6+wEzewPwoJn9cLEvDJPJAEBPT0+14hORFpdOp7n22n9gdvaviJ5VNZBIHKAZl/SshqpfObj7gfD+FeAe4BLg5bA6ifD+lZjXjrl7n7v3rV27ttqhikgLSqfTbNmyl9nZHZRKDK06R9JyVTU5mNkqM3t97jHwAeApYA+wOdxtM3BvNeMQkfY1PPwIp07dQnxFibf0HEnLVe1qpTcC95hZ7rP+h7vfb2aPAneb2dUE6+l9rMpxiEibmpn5I0pXJf04bIRWdVK+qiYHd38B+NcR5TPAhmp+tohIoFR7Za4qSYmhkEZIi0hLSyaPxWyZU1VSCUoOItLSRkbOoqtrbl5ZV9cc4+OdSgwlKDmISEvr74dduzpJpcAMUqngeQss81xVSg4i0hTS6TS9vb10dHTQ29tLOp1e9Gv7+2FyErLZ4F6JYWG1mltJRGTZcmMVTp36JtDD1NR+tmz5LwD060xfFbpyEJGGd2asQi/BaauXU6duYXj4kfoG1sKUHESk4UWPVVgVlks1KDmISMMpXGsBUjF7as61alGbg4g0lKi1FiALWNG+wRiGs2oZXtvQlYOINJSxsV6Kq5A6CBLEGV1dc4yMKDFUi5KDiDSUUmsqaKxC7Sg5iEhVpNNp1qxZg5lhZiQSCcx+D7OponWb8wVrKhRLJA5orEINKTmISEXlksIVV/wdMzPPEFQHZclmTwFpgsbljnDd5l8qShDBRHizBe+qtRZqTclBRJYlasRybrBakBTSwFqChmQjON0UNiqvCtsYztix430MDj5OIjENZLXWQp2Yu9c7hkXp6+vziYmJeoch0vbS6TTDw8PMzMzMK+/u7sasf8GlOItlcdfv1Gows8fcvW85r9VfRKRNDQ0N0dnZiZnR2dnJ0NAQUNxWsGbNmtPzGJ25MpgAMsCp8P5Fjh3bxOzsTSwtMcS3MUh9aZyDSBsaGhpidHT09PNMJsPo6Cg/+tGP+OY3zyOTeQZYA8DMzGGuvDIYiXxmGotcAsj9vuwFbgN+ZomRaLGdRlW3Kwcz22hmz5rZPjO7oV5xiCzHYmcIzd9vzZo1rFmz5vRrhoaGit4j7tf8cuIotW3nzp3A/eQai4Pb/XzjG28gk7mN+W0Fa8lmb2N4+JEFltxcReFYhHhOR8cRtSU0Mnev+Q1IAM8Dbwa6gO8BF5V6zcUXX+wiccbHxz2VSrmZeSqV8vHx8aJ9BgfdEwl3cIeMm73qkPFE4iUfHPx23nu5p1LukHU4lXcf7Lthwxd9xYqrHF4Jt2UdXvHzzrvHE4mXHDLhLRtxmwu3vehwc3gfPDe7IizL/8ybfXBwMPLfvGHDF4tiWLHiKh8fH/fx8fEwxjPvn9vm7g73h6/xvFvWYbagLP+We6+47cF7dHWdinhf946O4HkqFRxjqT5gwpd7nl7uC8u5Ae8BHsh7fiNwY6nXKDlIofkn8UPhiXL+ifC8854uODnHndSO+uDgt3183CNOboW34w4nIk+MpV+30P4nY07YtxT92wcHvx3GUfier3ky+UlPJj/pcLTo35hMftLdS8Va6t+Q8WTy1ZL/ptyJP5VyN1MiqLdykkNdeiuZ2e8AG93998PnHwfe5e7Xx71GvZUEYGgIdu7M4p7rElk8305gFngBeHuJfeZLJKY5++yzmZlptCkZ5nCf3zzY2TkdzjkUZTK8743c5t6LmRN9XOLKIZk8ysjIWWzdOsfJk8XNld3dMDamwWmNpBl7K8V9K+fvZDZgZhNmNnHo0KEahCWNIJ2G3l7o6Ajuc1XlQ0MwOuoE3R5z9eFxVrGUxADBtA0zM93LDbuKEkUlpaaYCGYqjZutdOFZTDs7M8URJDKMjJw1b8nNoDy4T6WUGFpNvZLDNHBB3vN1QFF/Nncfc/c+d+9bu3ZtzYKT+kmnYWAApqaCioqpqeB5Og233ho9M2elBF0q91ft/ZfLrLiRt1T3z2TyWDhbafQ2gA0bjOLfY86GDcaXvpQgmcx/Ddx+e+L0iT+35KY7zM0F95rOovXUKzk8ClxoZuvNrAu4DNhTp1ikgWzbBscKzmvHjgXl2Wz1EkOuS2Uy+TmKp24odAKYiyhfahXt/P07OrIR7+Fcd13xlUPQ/fNEUbnZKUZGzmJk5Cy6uubHmD+L6d69uQRxxoYNxt69wUn+8OEzLQmHD+vE35aW21hR7g34MPAjgl5L2xbaXw3S7aF0Q+lCDcVnbkGj8pMxDby5XkM/9cLeSsW9fIp7K+Uarleteu30+3V0zPhFF/39InsrZT2VCnpPFTbc5veoSiSC53EGB7/tHR0zp9971arX5jX+qmFYaLbeSsu5KTk0lzM9ic7cFjrZuXt4ci0+2QflNy+QPGYdMqdPhOPj4w4PFJyc73eCn+fe1dUV2eV1Md1iRZqBkoM0lKA7aNQJPLiVShDwe5FdMOH3PJlMhgliLuLX+M2eSCSKTuT5J/pkMunJZFInfWkb5SQHTbwnFTE0FPRWyRR3dCmSSAQNmVF6e3uZmvoV4M8IetbsB24ilfpHtm/fzpYtWzh16lTR61atWsWtt95KvyrHRU5rxq6s0iLSaXj962F0dHGJASCTif9Bsn37drq77wXWE3ThXE93971s376d/v5+du/eTSqVwsxIpVKMj4/j7hw9elSJQaSCdOUgy5brdlrYu2hhxYO65r9vmm3btrF//356enpOJwYRWZpyrhyUHGTZenuDcQhL48AXKDEYXkQqRNVKUnVRo5anppbyw8IJ5v3/AvDJaoQoIhWk9RxkQYXVR7lRyx0dPyGbXR3zKgdeBc4i16gMdwKQzB9+KyINSclBFhQ3ajm4Ephl/vz+TjCn/yhRVwgrVqxgZGSkSpGKSKWoWkmKFFYhxbcrJIFrCGYBzYb3/QS/OYoTQyqVYvfu3WpcFmkCunKQeaKqkMyCoWiFksljvPbavRw7dmfRtq6uLnbt2qVEINKkdOUg80RVIQWJoXBm0Fl+93efYGxsjFQ4f3MinL85lUopMYg0OXVllXk6OqKvEoLksJ/CUcuTk5M1jE5ElkJdWWVZorqnrl59NGbv/eSPWoY72b+/8dY+EJHKUHJoU3GL6hw//lWK1zOYJeiKOl9Pz8KriolIc1JyaFNx3VNnZ/8NxT2QriE3RiGnu7ub7du31yBSEakHJYc2FT+6uYcgEcyvQkomk/MmvBsbG1ODs0gLU3JoA1FtC4nEjyP37ej4Md3d3fPKuru7GRkZYXJykmw2y+TkpBKDSItTcmhxcW0Lmcy9RLUtZLM3nO6eqqsEkfZVta6sZvZpgsrqQ2HRTe5+X7jtRuBqgvkX/sDdH1jo/dSVdXniRjgnEtNkMv+ZqEV11D1VpDU0clfWv3L3d4S3XGK4CLgMeBuwEdhhZokqx9F2clVJcVNfZDLnxy6qIyJSj2qlTcBd7n7C3V8E9gGX1CGOlpVflRQnmZxV9ZGIxKr23ErXm9mVwATwH939J8D5wMN5+0yHZUXMbAAYAPWpX4qobqrzBeMW+vs/r2QgIpHKunIws71m9lTEbRPBnM0/D7wDOAh8NveyiLeKbPhw9zF373P3vrVr15YTals4U5UU147k5MYtHDlyS83iEpHmU9aVg7tfupj9zOw24G/Dp9PABXmb1wEHyolDCmdTjcq/AFMEbQzQ05OqUWQi0oyq1uZgZufmPf0I8FT4eA9wmZmtNLP1wIXAd6sVR7tYbFUSaHSziCysmm0OnzGzd3CmLuNaAHd/2szuBn4AzAGfcPdMFeNoC0FVUlyN3RS5ZTpTqRTbt29XW4OIlFS15ODuHy+xbTugn65lSqeDK4ZgctQM0X/OoCqpu7ubsbFxJQURWRSNkG5ShSOfg8RQ2BAdVCWpm6qILJWWCW1S0W0MRlBT14FGPItIOZQcmlT8OjsdBCOecw3PY7UKSURaiKqVmlTcim0dHT/WiGcRKZuuHJrWTcB/BVbllc1yzjl/yeHD2TrFJCKtQlcOTSoY4Vy8YptGPotIJejKoUn19PQwNXUnhct3auSziFSCrhya1Pbt2yNXbNPIZxGpBCWHBhW1tGe+/v5+TbktIlVTtZXgKq2dVoIbGoKdO3OD2wLd3TA2Bjr3i8hiNfJKcLJEQ0MwOjo/MUAw4G3btvrEJCLtR8mhgaTTwRVDnPh1GkREKkvJoYFs21Z8xZAvkfhx7YIRkbam5NBA4qfEAMiSyXyqVqGISJtTcmgAuZ5J8VcNDuwglfq/tQtKRNqaBsHVWdAAHbdQDwSjn3cAn2T79vHaBSYibU1XDnWUTpdKDLkF9K4APkkymdQYBhGpmbKSg5l9zMyeNrOsmfUVbLvRzPaZ2bNm9sG88o1h2T4zu6Gcz292QdfUuCsGB9aTmx5jZGSkNkGJiFD+lcNTwEeBb+UXmtlFwGXA24CNwA4zS5hZAvgC8CHgIuDycN+2VLoB+sxGXTWISK2V1ebg7s8AmBX9+t0E3OXuJ4AXzWwfcEm4bZ+7vxC+7q5w3x+UE0ezWr36KDMzZ0VsyRJMyR3Ml6SrBhGptWq1OZwPvJT3fDosiytvUzcRrPOcL9cAfafmSxKRulnwysHM9gJviti0zd3vjXtZRJkTnYxiO3Ca2QAwAMEU1a0mWHvhMPBnQA+5dZ/hTpplzisRaU0LJgd3v3QZ7zsNXJD3fB1wIHwcVx712WPAGAQT7y0jjoaSTgeN0Pv3Q08PrF59PTMzN1O4JkMqpTUZRKS+qlWttAe4zMxWmtl64ELgu8CjwIVmtt7MuggarfdUKYaGkk7DVVdlmJoKBrtNTcFPfvJZVqy4at5+WpNBRBpBuV1ZP2Jm08B7gL8zswcA3P1p4G6Chub7gU+4e8bd54DrgQeAZ4C7w31b3nXXHWduLjGvLJtdQSJxs9ZkEJGGo/UcaiCdhiuuiB/s5h431kFEZPm0nkMDS6dh69Y54ge7iYg0HiWHKhsePsrJk6Xa/Q/XLBYRkcVScqiymZnuEluPA8O1CkVEZNGUHKoubo6MOWArqdQ/1jIYEZFFUXKosmTycxSPgp4FrqS7+151WxWRhqTkUGUjI+9ixYrrCabfzob315BMfl3dVkWkYSk5VFhuVbeOjuAe+tm9+1JSqfdj1kkq9X7Gx/8dhw8fVmIQkYalleAqKJ2GzZszZDLBYLepqeD57bf3MzmpRCAizUNXDhV07bXHTyeGnEwmwbXXHq9TRCIiy6PkUEGzsyuXVC4i0qiUHEREpIiSQ0XFjXbWKGgRaS5KDhU1DJwoKDuBRkGLSLNRcihTftfVROIzwG3MH9OwRaOgRaTpqCtrGdJp+PjHT+G+AoBMZh3w+8BWcqu7BYv3jNUtRhGR5dCVQxk2b37tdGI443XA57V4j4g0NV05LFM6DZnM62K2JslmszWNR0SkkspdJvRjZva0mWXNrC+vvNfMXjOzJ8LbzrxtF5vZ981sn5l93syabhWcdDrNlVe+hBbwEZFWVW610lPAR4FvRWx73t3fEd6uyysfBQaAC8PbxjJjqKkgMRwlm11XYi91XRWR5lZWcnD3Z9z92cXub2bnAj/r7t/xYPHqO4DfLieGWrv22jmy2QHirxqcDRv+dy1DEhGpuGo2SK83s8fN7B/M7FfDsvOB6bx9psOypjE7ewXxiSFLIjHG3r1baxmSiEjFLdggbWZ7gTdFbNrm7vfGvOwg0OPuM2Z2MfA3ZvY2os+qXuKzBwiqoOjp6Vko1KobGnoIeG/MVmfFiqvZvfvSWoYkIlIVCyYHd1/y2c7dTxAOFXb3x8zseeAtBFcK+ZX164ADJd5nDBgD6Ovri00itTI21kv8VUOG3bsvVbdVEWkJValWMrO1ZpYIH7+ZoOH5BXc/CLxqZu8OeyldCcRdfTScTOa8mC3OqlVpJQYRaRnldmX9iJlNA+8B/s7MHgg3/RrwpJl9D/gKcJ27Hwm3DQJ/DewDnge+Vk4MtZRIxF3kvMqtt2rIiIi0jrLOaO5+D3BPRPlXga/GvGYCeHs5n1svAwOTjI6eA6zKK51lw4av0N+vRmgRaR2aPmMJdux4H4ODj5NITBP0TJpmcPBx9U4SkZZjwXCDxtfX1+cTExP1DkNEpGmY2WPu3rfwnsV05SAiIkWUHEREpIiSg4iIFFFyEBGRIkoOIiJSRMlBRESKKDmIiEgRJQcRESmi5CAiIkWUHEREpIiSg4iIFFFyEBGRIkoOQDqdpre3l46ODnp7e0mn0/UOSUSkrtp+hZp0Os3AwADHjh0DYGpqioGBAQCt7CYibavtrxy2bdvGsWObgBeBDPAix45tYtu2bXWOTESkfspdJvQvzeyHZvakmd1jZmfnbbvRzPaZ2bNm9sG88o1h2T4zu6Gcz6+Eqan3ArcBvQSHoxe4LSwXEWlP5V45PAi83d1/EfgRcCOAmV0EXAa8DdgI7DCzhJklgC8AHwIuAi4P962bROIvmL/sJ8CqsFxEpD2VlRzc/evuPhc+fRhYFz7eBNzl7ifc/UVgH3BJeNvn7i+4+0ngrnDfuslkzl9SuYhIO6hkm8NW4Gvh4/OBl/K2TYdlceV1k0rZkspFRNrBgsnBzPaa2VMRt015+2wD5oBcH9CoM6uXKI/77AEzmzCziUOHDi0U6qLld109evQP6Oqam7e9uxu2b6/Yx4mINJ0Fu7K6+6WltpvZZuA3gQ3unjvRTwMX5O22DjgQPo4rj/rsMWAMoK+vLzaJLEU6nWbr1q2cPHkSgJmZm0kk/plkcgdHjpxFT0+QGNSLVUTaWbm9lTYCnwJ+y92P5W3aA1xmZivNbD1wIfBd4FHgQjNbb2ZdBI3We8qJYamGh4c5efLfk991NZOZA3rJZmFyUolBRKTcQXC3ACuBB80M4GF3v87dnzazu4EfEFQ3fcLdMwBmdj3wAJAAdrn702XGsCQzMx8g6Lqa66HUC9zGzMw1tQxDRKShlZUc3P1fldi2HSiquXf3+4D7yvnc5QqmxfgzorquBuUiIgJtNH1GOp1my5YtwPGYPVK1DEdEpKG1zfQZw8PDnDp1CshGbu/oqEh7t4hIS2ib5DAzMwNcTtDUUSybbZtDISKyoLY4IwZtDZcDu4geagEp1SqJiJzWFm0OwQyrjwKvi9yuQW8iIvO1xZXD/v37gTUxW52xMY1tEBHJ1xbJYfXq60tsNSUGEZECbZEcgjEM0W0NyWRtIxERaQZtkRyOHDkrdtvISA0DERFpEi2dHIaGhujs7MR9MnJ7Mqm2BhGRKC2bHIaGhhgdHSWTyQA3AbPztnd366pBRCROyyaHsbGxvGd3AtcAk0CWVAr1UBIRKaFlxzkEVwyXEzRG9wD7Ca4g7mRyUlNliIiU0rLJwawf9y8SzCgOwdTcuzFr2YslEZGKadkz5cqVOzmTGE6XhuUiIlJKyyaH48eju6/GlYuIyBktmxxERGT5WjY5xI181ohoEZGFlZUczOwvzeyHZvakmd1jZmeH5b1m9pqZPRHedua95mIz+76Z7TOzz1u4+HSljYzAihXzy1as0NgGEZHFKPfK4UHg7e7+i8CPgBvztj3v7u8Ib9fllY8CA8CF4W1jmTFE6u+H3buDdRrMgvvduzW2QURkMcrqyuruX897+jDwO6X2N7NzgZ919++Ez+8Afhv4WjlxxOnvVzIQEVmOSrY5bGX+SX69mT1uZv9gZr8alp0PTOftMx2WRTKzATObMLOJQ4cOVTBUEREpZcErBzPbC7wpYtM2d7833GcbMAekw20HgR53nzGzi4G/MbO3ET1vduxwZXcfA8YA+vr6NKxZRKRGFkwO7n5pqe1mthn4TWCDu3v4mhPAifDxY2b2PPAWgiuFdXkvXwccWF7oIiJSLeX2VtoIfAr4LXc/lle+1swS4eM3EzQ8v+DuB4FXzezdYS+lK4F7y4lBREQqr9y5lW4hmKPiwbBH6sNhz6RfA/7EzOaADHCdux8JXzMIfAn4GYI2iqo0RouIyPJZWBPU8MzsEDC1jJeuAQ5XOJxKUnzL18ixgeIrRyPHBs0TX8rd1y7nDZomOSyXmU24e1+944ij+JavkWMDxVeORo4N2iO+lp0+Q0RElk/JQUREirRDchhbeJe6UnzL18ixgeIrRyPHBm0QX8u3OYiIyNK1w5WDiIgsUUskBzP7mJk9bWZZM+sr2HZjOD34s2b2wZjXrzezR8zsOTP7spl1VTHWL+dNZT5pZk/E7DcZTm3+hJlNVCueiM/9tJn9OC/GD8fstzE8pvvM7IYaxRY5RXzEfjU9dgsdCzNbGf7d94Xfs95qxxR+7gVm9vdm9kz4/2M4Yp/3m9lP8/7ef1yL2PI+v+TfygKfD4/dk2b2zhrG9tZtse1AAAAE4klEQVS84/KEmf2Lmf1hwT41PX5mtsvMXjGzp/LKVpvZg+H560EzOyfmtZvDfZ4LZ7Yozd2b/gb8AvBW4JtAX175RcD3CAbqrQeeBxIRr78buCx8vBMYrFHcnwX+OGbbJLCmDsfy08B/WmCfRHgs3wx0hcf4ohrE9gGgM3z8F8Bf1PvYLeZYAEPAzvDxZcCXaxTbucA7w8evJ5hWvzC29wN/W+vv2WL/VsCHCQbKGvBu4JE6xZkA/h/BuIG6HT+CAcbvBJ7KK/sMcEP4+Iao/xfAauCF8P6c8PE5pT6rJa4c3P0Zd382YtMm4C53P+HuLwL7gEvydwin8fi3wFfCotsJphGvqvBzfxe4s9qfVQWXAPvc/QV3PwncRXCsq8rdv+7uc+HTh5k/T1e9LOZYbCL4XkHwPdsQ/v2ryt0Puvs/hY9fBZ6hxCzIDWoTcIcHHgbOtmDq/1rbQLBGzXIG4laMu38LOFJQnP/9ijt/fRB40N2PuPtPCNbiKbmWTkskhxLOB17Kex41RXgS+Oe8k07JacQr6FeBl939uZjtDnzdzB4zs4EaxJPv+vASflfMJepijmu1FU4Rn6+Wx24xx+L0PuH37KcE37uaCauyfgl4JGLze8zse2b2NQtmT66lhf5WjfBdg+CKL+6HXD2PH8AbPZi3jvD+DRH7LPk4lju3Us3YIqYOj3pZRFlh96wlTSO+GIuM9XJKXzW8190PmNkbCOau+mH4q6FspeIjWKnvTwmOwZ8SVH1tLXyLiNdWpNvbYo6dFU8RX6hqxy5CXb5jS2FmZwFfBf7Q3f+lYPM/EVSVHA3bl/6GYKLMWlnob1XXYwcQtkH+FvNXusyp9/FbrCUfx6ZJDr7A1OExpoEL8p5HTRF+mOBStTP8VVf2NOILxWpmncBHgYtLvMeB8P4VM7uHoPqiIie4xR5LM7sN+NuITYs5rsuyiGNXNEV8xHtU7dhFWMyxyO0zHf7tf47iqoGqMLMVBIkh7e7/q3B7frJw9/vMbIeZrXH3mswbtIi/VdW+a0vwIeCf3P3lwg31Pn6hl83sXHc/GFa5vRKxzzRB+0jOOoI22litXq20B7gs7C2yniCjfzd/h/AE8/ecWeJ0M9WfRvxS4IfuPh210cxWmdnrc48JGmKfitq30grqcz8S87mPAhda0Muri+CSe08NYoucIr5gn1ofu8Uciz0E3ysIvmf/Jy6xVVLYrvFF4Bl3/1zMPm/KtX+Y2SUE54SZascWft5i/lZ7gCvDXkvvBn6aq0Kpodir/Hoevzz536+489cDwAfM7JywqvgDYVm8WrWyV/NGcBKbJlhg6GXggbxt2wh6kzwLfCiv/D7gvPDxmwmSxj7gfwIrqxzvlwimMc8vOw+4Ly+e74W3pwmqVGp1LP878H3gyfBLd25hfOHzDxP0fnm+VvGFf5+XgCfC287C2Opx7KKOBfAnBEkM4HXh92pf+D17c42O1/sIqg6ezDtmHwauy33/gOvD4/Q9gkb+X6nhdy3yb1UQnwFfCI/t98nrjVijGLsJTvY/l1dWt+NHkKQOAqfCc97VBO1X3wCeC+9Xh/v2AX+d99qt4XdwH7Bloc/SCGkRESnS6tVKIiKyDEoOIiJSRMlBRESKKDmIiEgRJQcRESmi5CAiIkWUHEREpIiSg4iIFPn/umV/LAeym8cAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0868f5f208>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import pylab as plt\n",
"\n",
"#***************************************\n",
"# Generate some date\n",
"def f(x):\n",
" return \n",
"\n",
"xx = np.random.rand(100)*20-10\n",
"yy = (0.2*(xx**3) - 0.3*(xx**2) + 0.5*(xx) +1 #poly\n",
" + np.random.normal(0,1,len(xx))) #add zero mean noise\n",
"\n",
"plt.figure()\n",
"plt.plot(xx,yy, 'ko')\n",
"\n",
"\n",
"#***************************************\n",
"# Find the parameters from which the data is generated\n",
"def find_coefs(keeps, xx, yy, deg=3, start=None):\n",
" if start is None:\n",
" start = np.zeros(deg+1)\n",
" np.testing.assert_equal(deg+1, len(start))\n",
" \n",
" pows = np.arange(len(start))[::-1] #3, 2, 1, 0\n",
" \n",
" def f(c):\n",
" keeps.coefs = c\n",
" \n",
" #This line can be more efficient:\n",
" keeps.yy = np.array([np.sum(c*(x**pows)) for x in xx])\n",
" \n",
" return np.sum(np.abs(keeps.yy-yy))\n",
"\n",
" optimize.fmin(f, start, disp=False)\n",
" \n",
" return keeps\n",
"\n",
"\n",
"\n",
"#***************************************\n",
"# Plot for different inputs\n",
"keeps = dotdict()\n",
"find_coefs(keeps, xx, yy, deg=2)\n",
"\n",
"plt.figure()\n",
"print(\"Estimated 2nd degree coefs: \", keeps.coefs)\n",
"plt.plot(xx,yy, 'ko')\n",
"plt.plot(xx, keeps.yy, 'ro')\n",
"\n",
"keeps = dotdict()\n",
"find_coefs(keeps, xx, yy, deg=3)\n",
"\n",
"plt.figure()\n",
"print(\"Estimated 3rd degree coefs: \", keeps.coefs)\n",
"plt.plot(xx,yy, 'ko')\n",
"plt.plot(xx, keeps.yy, 'go')\n",
"\n",
"keeps = dotdict()\n",
"find_coefs(keeps, xx, yy, deg=4)\n",
"\n",
"plt.figure()\n",
"print(\"Estimated 4th degree coefs: \", keeps.coefs)\n",
"plt.plot(xx,yy, 'ko')\n",
"plt.plot(xx, keeps.yy, 'bo')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class dotdict(dict): \n",
" \"\"\"A dot-able dictionary for easy access to items. Note stay clear from\n",
" keys that clashes with dict internals like: copy, fromkeys,\n",
" get, items, keys, pop, popitem, setdefault, update, and values.\n",
" ...\n",
" \n",
" Examples\n",
" --------\n",
" >>> a = dotdict(val1=1)\n",
" >>> a.val2 = 2\n",
" >>> a\n",
" {'val1': 1, 'val2': 2}\n",
" >>> a['val1']\n",
" 1\n",
" >>> a.val1\n",
" 1\n",
" \"\"\"\n",
" def __init__(self, **kwds):\n",
" self.update(kwds)\n",
" self.__dict__ = self \n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'x': array([2.00006104]), 'y': array([3.7252903e-09])}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy import optimize\n",
"\n",
"def minimize_x_min_2_sq(keeps, start=5):\n",
"\n",
" def f(x):\n",
" keeps.x = x #nou kan jy enige iets langs die pad capture\n",
" keeps.y = (x-2)**2\n",
" \n",
" return np.abs(keeps.y) #onthou net om 'n cost funksie te return\n",
"\n",
" optimize.fmin(f, start, disp=False)\n",
" \n",
" return keeps #return 'n dict van goetjies wat jy wil hê\n",
"\n",
"\n",
"keeps = dotdict()\n",
"minimize_x_min_2_sq(keeps)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimated 2nd degree coefs: [-0.39006781 11.62055263 -1.86031423]\n",
"Estimated 3rd degree coefs: [ 0.20543324 -0.27914917 0.1030236 -0.18166797]\n",
"Estimated 4th degree coefs: [-0.001786 0.21266205 -0.14996328 -0.43864873 0.0475309 ]\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f0868f66e10>]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f08690b5828>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0869074dd8>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0868fdf518>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0868f5f208>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import pylab as plt\n",
"\n",
"#***************************************\n",
"# Generate some date\n",
"def f(x):\n",
" return \n",
"\n",
"xx = np.random.rand(100)*20-10\n",
"yy = (0.2*(xx**3) - 0.3*(xx**2) + 0.5*(xx) +1 #poly\n",
" + np.random.normal(0,1,len(xx))) #add zero mean noise\n",
"\n",
"plt.figure()\n",
"plt.plot(xx,yy, 'ko')\n",
"\n",
"\n",
"#***************************************\n",
"# Find the parameters from which the data is generated\n",
"def find_coefs(keeps, xx, yy, deg=3, start=None):\n",
" if start is None:\n",
" start = np.zeros(deg+1)\n",
" np.testing.assert_equal(deg+1, len(start))\n",
" \n",
" pows = np.arange(len(start))[::-1] #3, 2, 1, 0\n",
" \n",
" def f(c):\n",
" keeps.coefs = c\n",
" \n",
" #This line can be more efficient:\n",
" keeps.yy = np.array([np.sum(c*(x**pows)) for x in xx])\n",
" \n",
" return np.sum(np.abs(keeps.yy-yy))\n",
"\n",
" optimize.fmin(f, start, disp=False)\n",
" \n",
" return keeps\n",
"\n",
"\n",
"\n",
"#***************************************\n",
"# Plot for different inputs\n",
"keeps = dotdict()\n",
"find_coefs(keeps, xx, yy, deg=2)\n",
"\n",
"plt.figure()\n",
"print(\"Estimated 2nd degree coefs: \", keeps.coefs)\n",
"plt.plot(xx,yy, 'ko')\n",
"plt.plot(xx, keeps.yy, 'ro')\n",
"\n",
"keeps = dotdict()\n",
"find_coefs(keeps, xx, yy, deg=3)\n",
"\n",
"plt.figure()\n",
"print(\"Estimated 3rd degree coefs: \", keeps.coefs)\n",
"plt.plot(xx,yy, 'ko')\n",
"plt.plot(xx, keeps.yy, 'go')\n",
"\n",
"keeps = dotdict()\n",
"find_coefs(keeps, xx, yy, deg=4)\n",
"\n",
"plt.figure()\n",
"print(\"Estimated 4th degree coefs: \", keeps.coefs)\n",
"plt.plot(xx,yy, 'ko')\n",
"plt.plot(xx, keeps.yy, 'bo')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment