143 lines
26 KiB
Plaintext
143 lines
26 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"\n",
|
|
"# Finding the minimum of a smooth function\n",
|
|
"\n",
|
|
"Demos various methods to find the minimum of a function.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": false,
|
|
"jupyter": {
|
|
"outputs_hidden": false
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x10f014710>]"
|
|
]
|
|
},
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAGdCAYAAADT1TPdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAARDlJREFUeJzt3Xd00/XiPvDnkzRNOlPa0kVbKHuUtkDZW6WCiAxFEVRw3OsAr8h1XPSq6FdF3F4QHFdFRZSrMhURFCh7t0CBAgU66J7pTtrk8/sjpT8qq4Wm70+S53VOjocklIcebJ++pyTLsgwiIiIihVKJDkBERER0NSwrREREpGgsK0RERKRoLCtERESkaCwrREREpGgsK0RERKRoLCtERESkaCwrREREpGguogPcKIvFgqysLHh5eUGSJNFxiIiIqBFkWUZZWRlCQkKgUl197MTuy0pWVhbCwsJExyAiIqLrkJGRgdDQ0Ku+x+7LipeXFwDrX9bb21twGiIiImqM0tJShIWF1X8fvxq7LysXpn68vb1ZVoiIiOxMY5ZwcIEtERERKRrLChERESkaywoREREpGssKERERKRrLChERESkaywoREREpGssKERERKRrLChERESkaywoREREpGssKERERKRrLChERESkaywoREREpGsvKFRRVmPDw0v04kFokOgoREZFTY1m5gv/8eRp/Judh1vIEFJYbRcchIiJyWiwrV/DMrV3QobUHckqrMXtFIswWWXQkIiIip8SycgWeWhcsua8P3DRqbD9dgIWbT4uORERE5JRYVq6ic6AX3pgYCQD46M/T2HYqX3AiIiIi58Oycg2Teofi3n7hkGVg9opEZBuqREciIiJyKiwrjfDKuO7oEeKNogoTZn53CDVmi+hIREREToNlpRF0GjWWTOsDL50LDqWXYOHmFNGRiIiInAbLSiOF+7lj/qSeAICPt6QgMaNEbCAiIiInwbLSBLdHhWB8TAjMFhlPr0hEpalWdCQiIiKHx7LSRK/dEYkgbx3OFVRg/vpk0XGIiIgcHstKE+ndNXh3cjQA4Ns9aYjndmYiIiKbYlm5DkM6+WPGoHYAgGd/PIziCpPYQERERA6MZeU6PT+6K9q39kBemREvrz0mOg4REZHDYlm5Tm6uanxwdwxUErDucBa2JOeJjkREROSQWFZuQHSYDx4eEgEA+PfqJFQYuTuIiIioubGs3KCnR3VGGx83ZJZU4YNNp0THISIicjgsKzfI3dUFr9dddvjlznM4et4gOBEREZFjYVlpBiO7BGBcdAgsMvCvlUdQy7uDiIiImg3LSjN5+fbu8Na54FhWKZbuShUdh4iIyGGwrDST1l5avDi2GwDgvY2nkFFUKTgRERGRY2BZaUZ3x4ahX4QvqmrMeHP9CdFxiIiIHALLSjOSJAmv3tEDKgn4LSkHu84UiI5ERERk91hWmlm3YG9M698WAPDauuNcbEtERHSDWFZsYM6oztC7aZCcU4bv96WLjkNERGTXWFZsoJWHK/4Z1xkA8N6mUyip5EWHRERE14tlxUam9gtHl0AvlFTW8GRbIiKiG8CyYiMuahVeGdcdALBsbzpO5pQJTkRERGSfWFZsaFBHf4zuEQSzRcZrvxyDLMuiIxEREdkdlhUbe3FsN7iqVdiZUohtp7mVmYiIqKlYVmwszNcdDwy0bmV+67dkWCwcXSEiImoKlpUWMHNkR3hpXXAiuxTrjmSJjkNERGRXWFZaQCsPVzw2ogMA4J3fT8JYaxaciIiIyH6wrLSQBwe3Q4CXFueLq7B8Lw+KIyIiaiyblpUlS5YgKioK3t7e8Pb2xsCBA/Hbb7/Vvy7LMubNm4eQkBC4ublhxIgROHbsmC0jCePu6oLZt1gPilu4OQVl1TWCExEREdkHm5aV0NBQvPXWWzhw4AAOHDiAm266CePHj68vJG+//Tbef/99LFq0CPv370dQUBBGjRqFsjLHPJPk7thQtPf3QFGFCZ9vPyc6DhERkV2Q5BY+/MPX1xfvvPMOHnroIYSEhGD27Nl4/vnnAQBGoxGBgYFYsGABHn300UZ9vNLSUuj1ehgMBnh7e9syerP47Wg2Hv/uENxd1dj67AgEeOlERyIiImpxTfn+3WJrVsxmM3744QdUVFRg4MCBOHfuHHJychAXF1f/Hq1Wi+HDh2PXrl1X/DhGoxGlpaUNHvZkdGQQosN8UGkyY/GWM6LjEBERKZ7Ny8rRo0fh6ekJrVaLxx57DKtWrUL37t2Rk5MDAAgMDGzw/sDAwPrXLmf+/PnQ6/X1j7CwMJvmb26SJOHZuC4AgOX70pFbWi04ERERkbLZvKx06dIFiYmJ2LNnDx5//HFMnz4dx48fr39dkqQG75dl+ZLnLjZ37lwYDIb6R0ZGhs2y28rgjn6IbdsKploLlmzl6AoREdHV2LysuLq6omPHjoiNjcX8+fMRHR2Njz76CEFBQQBwyShKXl7eJaMtF9NqtfW7iy487I0kSXh6lHVn0PJ96cgxcHSFiIjoSlr8nBVZlmE0GhEREYGgoCBs2rSp/jWTyYT4+HgMGjSopWO1uEEd/NC3nXV05ZN4jq4QERFdiU3LygsvvIDt27cjNTUVR48exYsvvoitW7di2rRpkCQJs2fPxptvvolVq1YhKSkJM2bMgLu7O6ZOnWrLWIogSRKevoWjK0RERNfiYssPnpubi/vvvx/Z2dnQ6/WIiorChg0bMGrUKADAc889h6qqKjzxxBMoLi5G//79sXHjRnh5edkylmIM7OCHfu18sS+1CEu2puDV8ZGiIxERESlOi5+z0tzs7ZyVv9p1pgBTP98LV7UK254biSA9z10hIiLHp8hzVujyBrb3Q78IX5jMFizemiI6DhERkeKwrAh28dqVH/Zl8NwVIiKiv2BZUYCBF3YGmS34cgfvDCIiIroYy4pCPD6iAwBg2Z40GCp5IzMREdEFLCsKMbJLALoGeaHCZMa3e1JFxyEiIlIMlhWFkCSpfnTly52pqDKZBSciIiJSBpYVBRnbMxhhvm4oqjBhxf500XGIiIgUgWVFQVzUKvx9mHV05fPt51BjtghOREREJB7LisJM7hMKf08tMkuqsDYxS3QcIiIi4VhWFEanUeOhIe0AAJ/En4HFYtcHDBMREd0wlhUFum9AW3hpXXA6rxx/nMgVHYeIiEgolhUF8tZpcN/AtgCAz7efFZyGiIhILJYVhZoxqB00agn7U4uRmFEiOg4REZEwLCsKFeitw7joEADAFzyCn4iInBjLioI9PCQCALD+aDYyS6oEpyEiIhKDZUXBeoToMaiDH8wWGd/sShUdh4iISAiWFYV7ZKh1dGX5vnSUG2sFpyEiImp5LCsKN6JzANq39kBZdS1+PJAhOg4REVGLY1lROJVKwkODraMrX+48BzMPiSMiIifDsmIH7uwdCh93DTKKqrDpeI7oOERERC2KZcUOuLmqcV9/6yFx/93ObcxERORcWFbsxAMD20KjlnAgrRiHeUgcERE5EZYVOxHgrcPtUdZD4r7ZnSY4DRERUcthWbEjD9TdF7TuSBYKy42C0xAREbUMlhU7EhPmg6hQPUy1Fvywn9uYiYjIObCs2BFJkjB9YDsAwHd70lBrtogNRERE1AJYVuzM2Khg+Hq4IstQjT9O5ImOQ0REZHMsK3ZGp1FjSt8wAMDXvC+IiIicAMuKHZo2oC1UErD7bCFO5ZaJjkNERGRTLCt2qI2PG+K6BwEAvtmdKjYMERGRjbGs2KkHBlm3Ma88lInS6hrBaYiIiGyHZcVODWzvh04Bnqg0mfHTgfOi4xAREdkMy4qdkiQJDwxqBwBYtjcNsszbmImIyDGxrNixib3awMNVjbP5Fdhztkh0HCIiIptgWbFjnloXjO/VBgCwfF+64DRERES2wbJi56b2CwcAbEjKRgHvCyIiIgfEsmLnItvoER3mgxqzjJ8OcqEtERE5HpYVBzCtv3V0ZfnedFgsXGhLRESOhWXFAYyLCoGXzgXpRZXYkVIgOg4REVGzYllxAG6uatzZOxSAdXSFiIjIkbCsOIipdVNBm07kIre0WnAaIiKi5sOy4iA6B3qhb7tWMFtk/G9/hug4REREzYZlxYFM62+9L+j7fekwc6EtERE5CJYVBzI6Mgit3DXIMlQj/lSe6DhERETNgmXFgeg0akyqW2i7glNBRETkIFhWHMw9fcMAAH+eyEN+GU+0JSIi+8ey4mA6B3qhV7gPai0yVh7iibZERGT/WFYc0JS60ZUV+zMgy1xoS0RE9o1lxQGNjQqBu6saZwsqsD+1WHQcIiKiG8Ky4oA8tS4YFxUCgAttiYjI/rGsOKh7+lmngn49moXS6hrBaYiIiK4fy4qD6hXmg04BnqiusWBtYpboOERERNeNZcVBSZJUv435fwc4FURERPaLZcWBTeodCo1awpHzBhzLMoiOQ0REdF1YVhyYr4cr4roHAQAvNyQiIrvFsuLgLkwFrU7MQnWNWXAaIiKipmNZcXCDO/ojWK+DoaoGf57g5YZERGR/WFYcnFolYVLvNgCAHw9yKoiIiOwPy4oTuKuPdSpo26l85JZWC05DRETUNCwrTiDC3wOxbVvBIgMrD2WKjkNERNQkLCtOYnJsKADgp4O83JCIiOwLy4qTuK1nMHQaFc7kVyAho0R0HCIiokZjWXESXjoNbosMBgD8dPC84DRERESNx7LiRO7qY50KWneYZ64QEZH9YFlxIgPa+6GNjxvKqmvx+7Ec0XGIiIgahWXFiahUEu7sc2GhLaeCiIjIPrCsOJm7elvLyo6UAmSVVAlOQ0REdG0sK04m3M8d/SN8IcvAqgSeuUJERMpn07Iyf/589O3bF15eXggICMCECRNw8uTJBu+RZRnz5s1DSEgI3NzcMGLECBw7dsyWsZzehamglYfO88wVIiJSPJuWlfj4eMycORN79uzBpk2bUFtbi7i4OFRUVNS/5+2338b777+PRYsWYf/+/QgKCsKoUaNQVlZmy2hObUxkUP2ZK0fOG0THISIiuipJbsEfrfPz8xEQEID4+HgMGzYMsiwjJCQEs2fPxvPPPw8AMBqNCAwMxIIFC/Doo49e82OWlpZCr9fDYDDA29vb1n8Fh/HUDwlYk5iF6QPb4tXxkaLjEBGRk2nK9+8WXbNiMFh/ivf19QUAnDt3Djk5OYiLi6t/j1arxfDhw7Fr167Lfgyj0YjS0tIGD2q6SXULbdcezoKp1iI4DRER0ZW1WFmRZRlz5szBkCFDEBlp/Uk+J8d61kdgYGCD9wYGBta/9lfz58+HXq+vf4SFhdk2uIMa3MEPAV5aFFfWYOvJPNFxiIiIrqjFysqsWbNw5MgRfP/995e8JklSg1/LsnzJcxfMnTsXBoOh/pGRkWGTvI7ORa3ChF5tAAA/H+KZK0REpFwtUlaefPJJrF27Flu2bEFoaGj980FBQQBwyShKXl7eJaMtF2i1Wnh7ezd40PWZ1NtaVjYn56G4wiQ4DRER0eXZtKzIsoxZs2Zh5cqV2Lx5MyIiIhq8HhERgaCgIGzatKn+OZPJhPj4eAwaNMiW0QhA1yBv9AjxRo1Zxi9HskTHISIiuiyblpWZM2di2bJlWL58Oby8vJCTk4OcnBxUVVlPTpUkCbNnz8abb76JVatWISkpCTNmzIC7uzumTp1qy2hU58JC258P8YA4IiJSJpuWlSVLlsBgMGDEiBEIDg6uf6xYsaL+Pc899xxmz56NJ554ArGxscjMzMTGjRvh5eVly2hU547oEKhVEhIzSnAmv1x0HCIioku06DkrtsBzVm7cQ0v3Y3NyHmaN7Ihnbu0iOg4RETkBxZ6zQsp0YaHtqoRMWCx23V2JiMgBsawQbukWCC+tCzJLqnAgrVh0HCIiogZYVgg6jRpjelq3kfMmZiIiUhqWFQKA+gPifj2SBWOtWXAaIiKi/49lhQAAAyL8EKzXobS6FluSefw+EREpB8sKAQBUKgl3xIQA4FQQEREpC8sK1ZtYNxW0JTkfJZU8fp+IiJSBZYXqdQ3yRtcgL5jMFqw/evlbr4mIiFoaywo1cGF0ZTWngoiISCFYVqiBO2JCIEnAvtQiZBRVio5DRETEskINBevdMLC9HwBg7WHexExEROKxrNAlLpy5svLQedj51VFEROQAWFboEqMjg6B1UeFMfgWOZZWKjkNERE6OZYUu4a3T4JbugQB45goREYnHskKXNSHGOhW07nAWzLyJmYiIBGJZocsa3rk19G4a5JUZsedsoeg4RETkxFhW6LJcXVS4rWcwAJ65QkREYrGs0BVNqLsraENSDqpreBMzERGJwbJCV9S3nS9C9DqUGXkTMxERicOyQldkvYm57vj9RE4FERGRGCwrdFXj66aCtiTnw1BZIzgNERE5I5YVuqpuwd7oEmi9ifm3pGzRcYiIyAmxrNA1je9lHV1Zk8i7goiIqOWxrNA13RFtLSt7zhUix1AtOA0RETkblhW6ptBW7ujbrhVkGVh7mAttiYioZbGsUKOMv7ArKIFTQURE1LJYVqhRxvYMhotKwvHsUpzOLRMdh4iInAjLCjVKKw9XDO/cGgCw9jBHV4iIqOWwrFCj3VF35sraw1mQZd7ETERELYNlhRptVPdAuGnUSCusxOHzBtFxiIjISbCsUKO5u7ogrkcgAGANj98nIqIWwrJCTXLhzJV1h7NhtnAqiIiIbI9lhZpkaKfW8HHXoKDciN1nCkXHISIiJ8CyQk3i6qLCbT2DAXAqiIiIWgbLCjXZ+LqpoA1JOaiuMQtOQ0REjo5lhZqsbztfBOt1KDPWYuvJfNFxiIjIwbGsUJOpVFL9QlveFURERLbGskLX5cIBcX+cyENZdY3gNEREZAtFFSbM/+0ECsuNQnOwrNB16R7sjY4BnjDVWrAhKUd0HCIisoFP4s/g0/izePy7Q0JzsKzQdZGki6eCeFcQEZGjyS2txte7UgEAj4/oIDQLywpdtwtlZdeZQuSXiR0iJCKi5rVw82kYay2IbdsKI+oushWFZYWuWzt/D0SH+cBskbH+aLboOERE1EzSCyvxw74MAMAzt3aBJElC87Cs0A3hVBARkeP58M9TqLXIGNrJHwPa+4mOw7JCN2ZcVDAkCTiYVoyMokrRcYiI6Aal5JVhdYL1WIpn4roITmPFskI3JMBbh4F1rZujK0RE9u/9TadgkYG47oGIDvMRHQcAywo1g/ExF25iZlkhIrJnSZkGrD+aA0kC/qmQURUAcBEdgOzf6B7B+PfqJCTnlOFkThm6BHmJjkREV1FaXYOUvHKk5JbjdF4ZiitrUF1jRnWNBcZaM2rMFvi4ucLfyxX+nlr4eWoR7uuOnm308PVwFR2fbOjdjScBWO+AU9LXcpYVumF6dw1GdAnApuO5WHs4E88GdRUdiYguYqiswdZTedicnIe9Z4uQU1p93R8rtJUbokL16NnGB0M7+aNHiLfwnSLUPLafzsfWk/lQqyTMvqWz6DgNsKxQsxgfE1JXVrLwTJz4bW5Ezq6k0oSfD2Vi47EcHEgrhtkiN3g9yFuHToGe6BjgiQAvHXQaFXQaNXQaFVSShJLKGhSWG5FfbkJBuRFn8stxNr8C54urcL64CuuP5mDBBiBEr8Mt3QMxqnsg+kf4wdWFqwvsUY3ZglfXHQcAPDCwLdr5ewhO1BDLCjWLm7sGwsNVjYyiKiRklKB3eCvRkYicUkpeGb7amYqVhzJRVWOuf75zoCdu6hqIEV1ao3uIN7x1miZ/7NLqGiRlGnD0vAEH0oqx43QBsgzV+GZ3Gr7ZnQa9mwZ39g7F1P7h6Bjg2Zx/LbKxb3anISWvHL4eroobVQFYVqiZuLmqEdcjCKsSMrE2MYtlhaiF7T1biI+3nsG2U/n1z3UL9sbdsaG4pVsgwnzdb/jP8NZpMKiDPwZ18MejAKprzNiZUoBNx3Pxx4k8FJQb8eXOc/hy5zn0j/DF1P7hGBMZzNEWhSsoN+LDP04BAJ69tQv0bk0vsrYmybIsX/ttylVaWgq9Xg+DwQBvb2/RcZzaluQ8PLh0P/w9XbFn7s1wUfMLFJGtpRdW4s31J7DhmPVCUUkCRnULxIODIzCgvW+LTcmaLTK2ncrHd3vTsTk5FxdmnYL1Ojw6rD2m9AuHTqNukSzUNP/6+Qh+2J+BHiHeWDtrCNSqlvk305Tv3xxZoWYzpJM/WrlrUFBuwu6zhRjaSexdEkSOrNxYi4+3pOCL7edgMlugkoAp/cLx2LAOCPe78VGUplKrJIzsGoCRXQOQVVKFFfsz8P2+dGQbqjFv3XEs2nIGfx8WgWn928JDy289SnH0vAErDliP1X/1jh4tVlSaij/6UrPRqFUYGxUMAFiTyDNXiGxlc3IuRr67FUu2noHJbMHgjn5Y/9RQvDmxp5Ci8lchPm54elRnbHtuJF6fEIk2Pm4oKDfizfXJGLJgM77aeQ6mWovomE5PlmXMW3cMsmzdJBHbzld0pCtiWaFmNT6mDQBgQ1IOqi9a3EdEN666xoyX1yThoaUHkF9mRDs/d3z+QCyWPdwfXYOUNw2u06hx34C22PrsCLxzVxQi/D1QXFmDV9cdR9wH8diQlA07X4lg11YnZuJgWjHcXdWYO6ab6DhXxbJCzapPeCuE6HUoN9ZiS3Ke6DhEDuN4VinGLdyBb3anAQAeHhKBDbOHYVT3QMUfFaBRqzA5Ngybnh6GNyf2hL+nFqmFlXhs2SFM/mQ3DmeUiI7odPLLjHitbqvyzJEdEaTXCU50dSwr1KxUKgnjYngTM1FzkWUZS3eew4SPd+J0Xjlae2nx9UP98NLt3e1uwaqLWoWp/cOx9dkR+MdNHaHTqHAgrRgTFu/Ei6uOwlBZIzqiU5BlGS+tTkJxZQ26BXvjb0Pbi450TSwr1OzGR1ungv5MzkNpNb/4EF2vGrMFL6xKwrx1x2EyW3BLt0BseGoohne278XrnloXzInrgq3PjMTEXm0gy8B3e9Nx03tb8dPB85wasrFfj2Zjw7EcuKgkvDs5yi62lis/IdmdbsFe6BTgCVOtBb8n5YiOQ2SXDFU1ePCr/fh+XzokCXjxtm74/IE+8PPUio7WbIL0OnxwTwx++PsAdArwRGGFCc/8eBj3fLoHKXllouM5pIJyI15ecwyAdfqnR4hecKLGYVmhZidJEu6I5lQQ0fVKK6zApMU7sSOlAO6uanx2fyz+Nqy94temXK8B7a27meaO6Qo3jRr7Uotw20c7sGjzadSYuWuoOb28JglFFSZ0DfLCzJEdRcdpNJYVsok76tat7EwpQF7Z9V+aRuRsEjNKMHHxLpzJr0CQtw4/PjYQo7oHio5lcxq1Co8O74A//zkcN3UNgMlswbsbT2Hcwh04et4gOp5D+PVINtYfzYFaJeHdydF2Mf1zgf0kJbvS1s8DMWE+sMjA+iPZouMQ2YWDaUW47797UVRhQs82eqyZNdhuhumbS4iPG76YHouPpsSglbsGyTllGP/xDsz/7QSPQ7gBeaXVeGlNEgBg5ogOiGxjX/+uWFbIZsbXja6s4VQQ0TXtO1eEB77Yh3JjLfpH+OKHvw9AoLeyt5PaiiRJGB/TBn/MGY47okNgkYFP48/i9oU7uM35OtSYLZi1PKF++mfWTZ1ER2oylhWymbFRwVBJQEJ6CdILK0XHIVKsXWcKMP3LfagwmTG4ox+WPtiPR9ID8PPU4j/39sLnD8SitZcWKXnlmLh4J97ekAxjLUdZGuud309iX2oRPLUuWDytt11N/1xgf4nJbgR46TCogz8AYE1ipuA0RMq043QBHlq6H1U1Zgzr3BpfTO8LN1f7Oj/F1kZ1D8TG2cMwPsY6yrJ46xncsXAnkjK5luVaNiRl47NtZwEA706OQvvWnoITXR+WFbKpOy6aCuLZCUQNHUwrwsNf70d1jQU3dQ3AZ/f3sbuD3lpKKw9XfDSlFz65rzf8PFxxMrcMEz7eiQ//OMUdQ1dwrqACz/54BADwyJAIjI4MFpzo+rGskE2NjgyCq4sKKXnlOJ5dKjoOkWKczi3DQ0sPwFhrwYgurbHkvt4sKo0wOjIYG58ehtt6BqHWIuPDP05j4uKdOJXLc1kuVmUy4/FlB1FmrEXfdq3w/JiuoiPdEJYVsilvnQY3dw0AAKzlTcxEAICskio88OU+GKpq0CvcB4un9YbWhUWlsfw8tfh4am98NCUGejcNkjJLcft/duCT+DMwWziCa7HIeO7nI0jOKYO/pysWTe0Njdq+v93bNP22bdswbtw4hISEQJIkrF69usHrsixj3rx5CAkJgZubG0aMGIFjx47ZMhIJcOEm5rWHs2DhFxJyciWVJkz/ch+yDdXo0NoDX07vC3dXLqZtqgs7hjY9Paz+XJa3fkvGnUt2ISWvXHQ8YWRZxmu/HMe6w1lwUUn4z729HGJXmU3LSkVFBaKjo7Fo0aLLvv7222/j/fffx6JFi7B//34EBQVh1KhRKCvjcJ4jGdGlNbx0Lsg2VGNfapHoOETCVNeY8cjXB3A6rxyB3lp883B/tPJwFR3LrgV46/DF9Fi8fVcUvLQuSMwowW3/2Y5PnXSU5eMtKVi6KxUA8N7d0fWbHOydTcvKmDFj8Prrr2PSpEmXvCbLMj788EO8+OKLmDRpEiIjI/H111+jsrISy5cvt2UsamE6jRq31S3s4q4gclayLOOf/zuMA2nF8NK54OuH+qGNj5voWA5BkiTcHRuG358ehmGdW8NUa8H835Jx1yfONcqyfG863t14CgDwyrju9aPajkDYJNa5c+eQk5ODuLi4+ue0Wi2GDx+OXbt2XfH3GY1GlJaWNniQ8l04IG790Ryej0BO6eMtKfj1aDY0agmfPxCLrkHeoiM5nBAfN3z9YF8suLMnPLUuSEgvwW0fbcfCP0/DVOvYO4Y2JGXj36uPAgBmjeyIBwdHCE7UvISVlZwc6228gYEN77wIDAysf+1y5s+fD71eX/8ICwuzaU5qHv3b+yHQWwtDVQ3iT+aLjkPUojYdz63/ife18ZEY0N5PcCLHJUkS7ukbjt+fHoYRXVrDZLbgvU3WO4YS0otFx7OJDUk5+Mf3ibDIwL39wvHPuM6iIzU74cuD/3qLqCzLV71ZdO7cuTAYDPWPjIwMW0ekZqBWSRgXxeP3yfmcyi3D7B8SAAD3D2iLe/uFC07kHNr4uOGrGX3x0ZQY+NadyzJpyS7MW3sMpdU1ouM1m293p+Lx7w7CZLZgbM9gvD4h0iFv5xZWVoKCggDgklGUvLy8S0ZbLqbVauHt7d3gQfZhQi/r/Okfx3NR5kBfLIiupKTShL99cwAVJjMGtPfFy+O6i47kVC6+Y2hSrzaQZWDprlTc9G48Vh46b9cHVcqyjHd+T8ZLa45BloGp/cPx0ZQYqFWOV1QAgWUlIiICQUFB2LRpU/1zJpMJ8fHxGDRokKhYZEM9QrzRobUHjLUW/H4sV3QcIpsyW2Q8+X0C0gor0cbHDYun9bH7sy7sla+HK96/JwbfPNQP7f09UFBuxJz/HcbkT3bjWJb9HdlfY7bg2Z+O4OMtZwAAc0Z1xhsTIuHiwP++bPo3Ky8vR2JiIhITEwFYF9UmJiYiPT0dkiRh9uzZePPNN7Fq1SokJSVhxowZcHd3x9SpU20ZiwS58FMOwF1B5Pj+8+dpbD9dADeNGp8/EAtfblEWbljn1vht9lA8N7oL3DRqHEgrxriFOzB35VHkllaLjtcoWSVVuP+Lvfjp4HmoVRLemtQT/7i5k0NO/VxMkm04DrZ161aMHDnykuenT5+OpUuXQpZlvPrqq/j0009RXFyM/v374+OPP0ZkZGSj/4zS0lLo9XoYDAZOCdmBtMIKDH9nK1QSsOeFmxHgZf+HFRH91a6UAkz7Yi9kGfjwnpj6KVBSjqySKryx/gR+PZINANBpVHhwcAQeG94BejeN4HSXt/ZwFv696ihKq2vhplFj0dReuLnblZdNKF1Tvn/btKy0BJYV+zNx8U4kpJfg5du746EhjrW9jiivrBq3fbQDBeVG3BMbhgV3RYmORFex71wRFmxIxsE0604hvZsGjw3vgPsHtoWnVhknCxuqavDKmiSsrruyJDrMBx/cHW23Nyhf0JTv3447wUWKNbHup8zVnAoiB2O2yHh6RSIKyo3oEuiFeXf0EB2JrqFfhC9+emwgPn8gFp0DPWGoqsGCDckYOP9PvPVbstDpIbNFxuqETIz5cBtWJ2ZBJQH/uLkTfnpsoN0XlabiyAq1uMJyI/q/+SdqLTL+mDMcHQOc6386clwf/XEaH/xxCm4aNdY9ORgdA7xER6ImMFtkrErIxOKtKTibXwEA0Kita+0eGNgWPdvoW2RtiMUi4/djOXh/0ymcrjuBt62fOz64Jwa9w1vZ/M9vKZwGIsV7eOl+/Jmchydv6oh/xnURHYfohu0+U4hp/90Diwy8Nzkad/YJFR2JrpPFIuPP5Dx8vu1sg/vMOrT2wMRebTA+pg3CfN2b/c+tMpnxx4lcfBJ/BseyrKez6900+Puw9nhwcDuHu/CSZYUUb93hLDz5fQJCW7lh+3MjHX4lOzk2Q2UNRn+0DdmGakzuE4p3JkeLjkTNJCG9GF/uTMXGYzkwXnRkf5+2rTC0kz8GtPdDTJgPdBr1dX386hoztp7Mx69Hs/HniVxUmqzXkXhqXfDwkAg8PDQC3jplLvi9UU35/u1YNY3sxi3dAuHhqsb54iocTCtGbDtf0ZGIrtvLa5OQbahGhL8HXh3PdSqOpFd4KywMb4XS6hpsSMrB6oRM7D5biINpxXWLck/D1UWFXmE+iGyjRxsfN7Rp5YY2Pm4I0usgy9bppRqzBbUWGdmGKpzKKcPJ3HKcyi3DiezS+oICAKGt3DCxVxs8NDiCN3JfhGWFhHBzVWN0ZDB+PnQeqxIyWVbIbq09nIU1iVlQqyS8f3e0ww3Vk5W3ToO7Y8Nwd2wYsg1V+PNEHvaeK8Kes4XILzNi77ki7D1XdO0PdBkheh3GRgXj9qgQRIW2zLoYe8P/q0iYib3a4OdD5/HLkWy8Mq4HXF24OY3sS46hGv9eZb3pdubIjujlQIsf6cqC9W64b0Bb3DegLWRZxrmCCuw9V4Sz+eXILKlCZnEVMkuqUFBuAgC4qCS4qCVoVCq08nBFlyAvdAn0Que6/3YK8ITKQY/Jby4sKyTMwA5+CPDSIq/MiK0n8xDXI0h0JKJGs1hkPPvTYZRW1yIqVI8nb+ooOhIJIEkS2rf2vOxWYrNFhkq69MJeajr+KEvCqFUSxsdYb2LmmStkb77dk4btpwug06jwwT0xvPeHLqFWSSwqzYT/d5FQ9Tcxn8iDoYo3MZN9OJtfjjfXnwAAzB3TDR2c7IAuopbGskJCdQ/2RudAT5hqLdiQlC06DtE1WSwynv/5CIy1Fgzt5I/7B7QVHYnI4bGskFCSJNWPrqw8xKkgUr5v96Rhf2oxPFzVmD+pJxdGErUAlhUSbkJMG0gSsPdcEc4XV4qOQ3RFGUWVWLAhGQDwrzFdEdqq+U8xJaJLsayQcCE+bhjY3g8AsDqBoyukTLIsY+7Ko6g0mdEvwhfT+nP6h6ilsKyQIkzqbb1HZeWhTNj5DRDkoP53IAM7UgqgdVFhwZ1RnP4hakEsK6QIoyOD4KZR42xBBRIzSkTHIWogx1CN13+x7v75Z1xnRPh7CE5E5FxYVkgRPLUuGB1pPRSOC21JSWRZxr9XJ6HMWIvoMB88PKS96EhETodlhRRjUm/rrqB1R7JgrDVf491ELeP3Y7n440QuXFQS3r4zCmpO/xC1OJYVUoxBHfwR6K1FSWUNtiTni45DhHJjLeatPQYAeHR4e3QJ8hKciMg5sayQYqhVEibEWEdXViWcF5yGCHhv40nklFYj3NcdT97USXQcIqfFskKKcmFX0ObkPBRXmASnIWeWlGnA17tSAQD/NyESOo1abCAiJ8ayQorSJcgLPUK8UWOW8cuRLNFxyEmZLdYzVSwyMC46BMM7txYdicipsayQ4lwYXfmZu4JIkG92p+JopgFeOhe8dHs30XGInB7LCinOHdEhUKskJGaU4Ex+ueg45GRyDNV4b+MpANYj9QO8dIITERHLCilOay9t/bD7zwe50JZa1uu/Hke5sRa9wn1wb99w0XGICCwrpFB39fn/x++bLTx+n1rGrpQC/HIkGyoJeH1CJI/UJ1IIlhVSpJu7BcDHXYOc0mrsSCkQHYecgKnWgpfrzlS5f0Bb9AjRC05ERBewrJAiaV3UGB8dAgD48UCG4DTkDJbuOoeUvHL4ebhiTlwX0XGI6CIsK6RYk2PDAAAbj+fCUFkjOA05shxDNT784zQA66JavZtGcCIiuhjLCilWjxBvdA3ygqnWgrU8c4Vs6I31J1BpMqN3uA/urNs6T0TKwbJCiiVJUv1C2584FUQ2sutMAdYdzoJKAl4bz0W1RErEskKKNqFXG7ioJBw+b8Cp3DLRccjB1JgteGWNdVHtfQPaIrINF9USKRHLCimav6cWI7sGAAB+4pkr1MyW7UnD6bxy+Hq44p+juKiWSKlYVkjxJl905kqN2SI4DTmKwnIjPthkPan2mbgu0LtzUS2RUrGskOKN7BoAPw9XFJQbse1Uvug45CDe23QKpdW16BHijXv6homOQ0RXwbJCiqdRqzChVxsAwI8HOBVEN+5YlgHf70sHALwyrgfUXFRLpGgsK2QXJsdap4L+TM5FQblRcBqyZ7Is49W1xyHLwLjoEPSL8BUdiYiugWWF7ELXIG9Eh/mgxixj5SGOrtD1++VINvalFkGnUWHumK6i4xBRI7CskN2YUreu4If9GZBlXm5ITVdlMmP++hMAgCdGdESIj5vgRETUGCwrZDfGRYfA3VWNs/kVOJBWLDoO2aFP4s8gy1CN0FZu+Puw9qLjEFEjsayQ3fDUuuD2qGAAwA/7eKItNU1WSRU+3XYGADB3TDfoNGrBiYiosVhWyK5M6RcOAPj1aBYMVbzckBpvwYZkVNdY0K+dL27rGSQ6DhE1AcsK2ZVeYT7oHOiJ6hoL1h7m5YbUOAfTirEmMQuSBLw8rjskiVuViewJywrZFUmScE9f6+jKiv3pgtOQPbBYZLz2y3EA1tOQef8Pkf1hWSG7M7FXG7iqVUjKLEVSpkF0HFK4NYczcTijBB6uajxzK+//IbJHLCtkd3w9XBHXIxAAsGI/F9rSlVWaarHgt5MAgJk3dUSAl05wIiK6HiwrZJfurVtouzoxE1Ums+A0pFSfxJ9FTql1q/JDgyNExyGi68SyQnZpYHs/hPm6oay6Fr8ezRYdhxQoq6QKn9VtVX7hNm5VJrJnLCtkl1QqCVPqFtou35smOA0p0dsXbVUeE8mtykT2jGWF7Nbk2FC4qCQcSi/B8axS0XFIQRIzSrC6bqvyS7dzqzKRvWNZIbsV4KXDrXU/MX/H0RWqI8sy/q9uq/KkXqHoGcqtykT2jmWF7Np9/dsCAFYnZKLcWCs4DSnBr0ezcTCtGG4aNZ7lVmUih8CyQnZtQHtfdGjtgQqTGasSMkXHIcGqa8x467dkAMCjw9sjSM+tykSOgGWF7JokSZhWN7ry3Z40yLIsOBGJ9OXOczhfXIUgbx1vVSZyICwrZPfu7B0KnUaF5JwyHEovFh2HBMkvM2LxFutW5edGd4G7q4vgRETUXFhWyO7p3TUYFxUCAPhuD+8LclbvbzqJcmMtokL1mBDTRnQcImpGLCvkEKYNsE4F/XI0G8UVJsFpqKWdyC6tv3rhpdu7Q6XiVmUiR8KyQg4hOlSPyDbeMNVa8NPB86LjUAuSZRmv/3ocFhkY2zMYfdv5io5ERM2MZYUcQoOFtnvTYLFwoa2z+PNEHnamFMJVrcK/xnQVHYeIbIBlhRzG+JgQeOlckFpYifjT+aLjUAsw1Vrw5voTAICHhkQgzNddcCIisgWWFXIY7q4uuDs2DACwdGeq2DDUIpbtScPZggr4e7pi5sgOouMQkY2wrJBDmT6wHSQJiD+Vj5S8ctFxyIZKKk346M/TAIA5o7rAS6cRnIiIbIVlhRxKuJ87bu4aCAD4Zneq2DBkUx/+cRqGqhp0DfLCPX3DRMchIhtiWSGH8+DgdgCAnw6eR2l1jdgwZBMpeeVYtsd6eeW/x3aHmluViRwaywo5nEEd/NApwBOVJjN+PMBtzI7ozfUnUGuRcXPXAAzp5C86DhHZGMsKORxJkjCjbnTl612pMHMbs0OJP5WPzcl5cFFJeHFsN9FxiKgFsKyQQ5rYqw30bhqkF1ViS3Ke6DjUTGrNFvzfL8cBANMHtUP71p6CExFRS2BZIYfk7uqCKXWLLpfuShUbhprN8n3pSMkrRyt3Df5xUyfRcYiohSiirCxevBgRERHQ6XTo06cPtm/fLjoSOYD7BrSFSgJ2pBTgdG6Z6Dh0g0oqTXh/0ykAwJy4LtC7c6sykbMQXlZWrFiB2bNn48UXX0RCQgKGDh2KMWPGID2dt+fSjQnzdceo7tZtzF/uPCc4Dd2oj/48jZLKGnQO9MS93KpM5FSEl5X3338fDz/8MB555BF069YNH374IcLCwrBkyRLR0cgBPDykPQDg50OZyC8zCk5D1yslrxzf7rZuVX7p9u5wUQv/0kVELUjo//EmkwkHDx5EXFxcg+fj4uKwa9euy/4eo9GI0tLSBg+iK+nbrhViwnxgqrXga65dsVuv/3octRYZt3QLwNBOrUXHIaIWJrSsFBQUwGw2IzAwsMHzgYGByMnJuezvmT9/PvR6ff0jLIzDwXRlkiTh0WHW0ZVv96ShwlgrOBE11ebkXGw9mQ+NWsILt3GrMpEzUsRYqiQ1PH1SluVLnrtg7ty5MBgM9Y+MjIyWiEh2LK5HENr5ucNQVYP/HeC/F3tirDXjtXXWrcoPDY7gVmUiJyW0rPj7+0OtVl8yipKXl3fJaMsFWq0W3t7eDR5EV6NWSXhkqHV05b/bz6HWbBGciBrrq52pSC2sRGsvLWbd1FF0HCISRGhZcXV1RZ8+fbBp06YGz2/atAmDBg0SlIoc0V19QuHn4YrMkir8ejRbdBxqhLzSaiysu1X5+dFdeasykRMTPg00Z84c/Pe//8WXX36JEydO4Omnn0Z6ejoee+wx0dHIgeg0ajwwsB0A4LNtZyHLPIJf6d7akIwKkxkxYT6Y1KuN6DhEJJCL6AD33HMPCgsL8dprryE7OxuRkZFYv3492rZtKzoaOZj7B7bFkvgUHMsqxa4zhRjckRfgKdWh9GKsPJQJAJh3Rw+oeKsykVMTPrICAE888QRSU1NhNBpx8OBBDBs2THQkckC+Hq64O9a6e+zTbWcFp6ErsVhkvLr2GADr9F1MmI/YQEQknCLKClFLeWRIe6gkYNupfCRlGkTHocv48WAGDp83wFPrgudGdxEdh4gUgGWFnEq4nzvGRYcAABZuPi04Df1VSaUJb/2WDACYfUsnBHjpBCciIiVgWSGnM2tkR0gS8PuxXJzI5gnISvLO7ydRXFmDLoFemD6oneg4RKQQLCvkdDoFeuG2nsEAgEWbUwSnoQuOnC/B8n3WC0xfG98DGt7/Q0R1+NWAnNKTdQeMrU/KxuncMsFpyGKR8dLqJMgyMLFXG/Rv7yc6EhEpCMsKOaWuQd4Y3SMIsgws2sLRFdFWHLAuqvXSumDubV1FxyEihWFZIaf15M3W0ZV1h7NwJr9ccBrnVVxhwoINdYtqR3XmoloiugTLCjmtHiF63NItEBYZ+JijK8K8/XsySipr0DXIC9MH8jBIIroUywo5tX/Uja6sScxCakGF4DTOZ39qEb7fZ70J+7XxkXDholoiugx+ZSCnFhXqg5FdWsNskbGQO4NalKnWghdWHgUA3BMbhn4RvoITEZFSsayQ05t9S2cAwKqE8zjFnUEt5rNtZ3A6rxx+Hq5cVEtEV8WyQk4vOswHYyKDYJGBtzecFB3HKZwrqMB/6kayXrq9O3zcXQUnIiIlY1khAvDMrV2gVkn440QuDqQWiY7j0GRZxr9XH4Wp1oKhnfwxPiZEdCQiUjiWFSIAHVp74u7YUADAgg3JkGVZcCLHtSohEztTCqF1UeH1CZGQJEl0JCJSOJYVojpP3dwZWhcV9qcWY3Nynug4Dqm4woTXfz0BAPjHzZ3Q1s9DcCIisgcsK0R1gvQ6PDg4AoB17YrZwtGV5jZv3TEUVZjQJdALfx/WXnQcIrITLCtEF3l8eAd461xwMrcMqxMyRcdxKBuP5WBNYhZUEvD2XVG8qJCIGo1fLYguonfX4PER1oPi3t90CtU1ZsGJHENJpQkvrk4CAPx9WAdEh/mIDUREdoVlhegvHhzcDkHeOmSWVOGLHedEx3EIr607jvwyIzq09sDsWzqJjkNEdoZlhegvdBo1nh/TBQCwaHMKsg1VghPZtz+O52JlQiZUEvDO5GjoNGrRkYjIzrCsEF3GhJg2iG3bClU1Zry5Pll0HLtlqKzBC6usR+r/bWh79A5vJTgREdkjlhWiy5AkCfPu6AFJAtYdzsKes4WiI9mlV385hrwyI9q39sDTozqLjkNEdoplhegKItvoMbVfOABg3tpjqDVbBCeyL78cycLKQ5mQJOCdu6I4/UNE141lhegqnonrAh93DZJzyvDd3nTRcexGVklV/Y3KM0d0RJ+2vFGZiK4fywrRVbTycMU/46yLbd/beBKF5UbBiZTPbJHx9IpElFbXIjpUj6e4+4eIbhDLCtE1TO0Xju7B3iitrsWCDVxsey2fbTuLveeK4O6qxkdTevHwNyK6YfwqQnQNapWE18b3AAD878B57DhdIDiRch09b8B7G08CAObd0QPt/Hn3DxHdOJYVokaIbeeL6QPbAgCe//kIyo21ghMpT6WpFk/9kIBai4zbegZhcp9Q0ZGIyEGwrBA10nOjuyLM1w2ZJVV467cTouMoiizLeHFVEs4WVCDIW4c3J/aEJEmiYxGRg2BZIWokD60LFtwZBQBYticdu1I4HXTBsr3pWJWQCbVKwkdTYuDj7io6EhE5EJYVoiYY1MEf9w2wnr3y3M9HUMHpICSkF+O1dccAAP8a3RX92/sJTkREjoZlhaiJ/jWmG9r4uOF8cRXedvLdQYXlRjzx3SHUmGWMiQzCI0MjREciIgfEskLURJ4XTQd9vTsN20/nC04khtki46kfEpFtqEb71h54+64orlMhIptgWSG6DkM6+WNaf+t00OwfEpFbWi04Uct7f9NJ7EgpgJtGjU/u6wMvnUZ0JCJyUCwrRNfppdu7o1uwNworTHhyeYJT3R20KuE8Pt5yBgCw4K4odA70EpyIiBwZywrRddJp1Fg8rTc8tS7Yl1qE9zadEh2pRew+U4jnfjoCAHh0eHvcER0iOBEROTqWFaIbEOHvUb9+ZcnWM9icnCs4kW2l5JXh0W8PoMYsY2xUMJ6/tavoSETkBFhWiG7Q2KhgzBjUDgDw9IrDOF9cKTaQjeSXGTHjq/0ora5Fn7at8N7kaKhUXFBLRLbHskLUDObe1hXRoXoYqmrw+LJDDnf+SpXJjEe+OYDzxVVo6+eOzx+IhU6jFh2LiJwEywpRM9C6qLFoam+0ctfgaKYBM5cfQo2DLLitrjHj0WUHcTijBD7uGnw1oy98PXhCLRG1HJYVomYS5uuOL2b0hU6jwtaT+Zi78ihkWRYd64ZU15jx6LcHse1UPtw0anz+QCzat/YUHYuInAzLClEz6h3eCovu7Q2VBPx08Dzet+MdQsZaMx5fdhDxp/Kh06jw5Yy+6NvOV3QsInJCLCtEzeyW7oF4Y2JPAMDCzSlYtidNcKKmsxaVQ9hy8v8XlYEdeOcPEYnBskJkA/f2C8dTN3cCALy8JgmrEs4LTtR4VSYznlh2CJuT86B1UeHL6X0xqIO/6FhE5MRYVohsZPYtnXBvv3BYZOuW5i92nBMd6ZrySqsx5bPd+LOuqHwxvS8GdWRRISKxXEQHIHJUkiThjQmR0GlU+GpnKv7vl+MoqjDimbguirzw70R2KR5euh9Zhmq0ctfg0/tj0S+Ca1SISDyOrBDZkEol4eXbu+PZW7sAAD7ecgYvrDoKs0VZu4Q2J+firiW7kGWoRnt/D6x6YjCLChEpBkdWiGxMkiTMHNkRrdxd8e/VR/H9vgzklxnx7uRo+LiLPa+k1mzBp9vO4r2NJ2GRgUEd/LBkWh/o3XmDMhEpB0dWiFrI1P7h+Hhqb7iqVfjjRB5Gf7gdu1IKhOU5k1+Ouz7ZjXd+txaVe2LD8PVD/VhUiEhxWFaIWtCYnsH4+fFBaO/vgZzSakz7Yi/mrz8BU23LnXZrscj4csc53PbRdiRmlMBL64J37orCW3f2hEbNLwlEpDySbOdHbJaWlkKv18NgMMDb21t0HKJGqTTV4v9+OYHv96UDALoHe+P1iZHoHd7Kpn/uwbRiLPgtGftSiwAAQzv5Y8GdUQjxcbPpn0tE9FdN+f7NskIk0MZjOXj+5yMorqwBAAzv3Bqzb+mEXs1cWg6mFeHDP05j+2nrtJO7qxovju2Gqf3CFbkziYgcH8sKkR3JK63GO7+fxMqEzPpdQiO6tMbjwzsgtp0v1KrrKxPVNWbsOF2Ar3en1pcUF5WEO3uHYtZNHRHm695sfwcioqZiWSGyQ2mFFVi0OaVBafH1cMWIzq0xsmsAhnVuDb3blRe/yrKMgnITtp7Mw6bjudh+ugBVNWYA1pJyV59QzBzJkkJEysCyQmTH0gorsHjLGaxPykZZdW398yoJaO2lhZ+HFv5eWvh7usJFJSHbUI2skipkG6pRaTI3+Fgheh3iegTh4SERLClEpCgsK0QOoMZswcG0YmxJzsPm5Dyczitv1O/rFuyNuO6BGNU9ED1CvLkmhYgUiWWFyAHllVUj12BEQfmFhwm1ZguC9DqE+LghWK9DsN4Nbq5q0VGJiK6pKd+/eYItkZ0I8NIhwEsnOgYRUYvjCVBERESkaCwrREREpGgsK0RERKRoLCtERESkaCwrREREpGgsK0RERKRoLCtERESkaCwrREREpGgsK0RERKRoLCtERESkaDYtK2+88QYGDRoEd3d3+Pj4XPY96enpGDduHDw8PODv749//OMfMJlMtoxFREREdsSmdwOZTCZMnjwZAwcOxBdffHHJ62azGWPHjkXr1q2xY8cOFBYWYvr06ZBlGQsXLrRlNCIiIrITNi0rr776KgBg6dKll31948aNOH78ODIyMhASEgIAeO+99zBjxgy88cYbvEWZiIiIxN66vHv3bkRGRtYXFQC49dZbYTQacfDgQYwcOfKS32M0GmE0Gut/bTAYAFivmiYiIiL7cOH7tizL13yv0LKSk5ODwMDABs+1atUKrq6uyMnJuezvmT9/fv2IzcXCwsJskpGIiIhsp6ysDHq9/qrvaXJZmTdv3mXLwsX279+P2NjYRn08SZIueU6W5cs+DwBz587FnDlz6n9tsVhQVFQEPz+/K/4eZ1JaWoqwsDBkZGRwGs3G+LluOfxctxx+rluWM3++ZVlGWVlZg9mVK2lyWZk1axamTJly1fe0a9euUR8rKCgIe/fubfBccXExampqLhlxuUCr1UKr1TZ47ko7jZyZt7e30/3DF4Wf65bDz3XL4ee6ZTnr5/taIyoXNLms+Pv7w9/fv8mBLmfgwIF44403kJ2djeDgYADWRbdarRZ9+vRplj+DiIiI7JtN16ykp6ejqKgI6enpMJvNSExMBAB07NgRnp6eiIuLQ/fu3XH//ffjnXfeQVFREZ555hn87W9/c8qGSURERJeyaVl5+eWX8fXXX9f/ulevXgCALVu2YMSIEVCr1fj111/xxBNPYPDgwXBzc8PUqVPx7rvv2jKWQ9NqtXjllVcumSqj5sfPdcvh57rl8HPdsvj5bhxJbsyeISIiIiJBeDcQERERKRrLChERESkaywoREREpGssKERERKRrLihMwGo2IiYmBJEn128epeaWmpuLhhx9GREQE3Nzc0KFDB7zyyiswmUyiozmExYsXIyIiAjqdDn369MH27dtFR3I48+fPR9++feHl5YWAgABMmDABJ0+eFB3LKcyfPx+SJGH27NmioygWy4oTeO655xp1nDFdv+TkZFgsFnz66ac4duwYPvjgA3zyySd44YUXREezeytWrMDs2bPx4osvIiEhAUOHDsWYMWOQnp4uOppDiY+Px8yZM7Fnzx5s2rQJtbW1iIuLQ0VFhehoDm3//v347LPPEBUVJTqKonHrsoP77bffMGfOHPz888/o0aMHEhISEBMTIzqWU3jnnXewZMkSnD17VnQUu9a/f3/07t0bS5YsqX+uW7dumDBhAubPny8wmWPLz89HQEAA4uPjMWzYMNFxHFJ5eTl69+6NxYsX4/XXX0dMTAw+/PBD0bEUiSMrDiw3Nxd/+9vf8O2338Ld3V10HKdjMBjg6+srOoZdM5lMOHjwIOLi4ho8HxcXh127dglK5RwMBgMA8N+wDc2cORNjx47FLbfcIjqK4tn0BFsSR5ZlzJgxA4899hhiY2ORmpoqOpJTOXPmDBYuXIj33ntPdBS7VlBQALPZfMnFpoGBgcjJyRGUyvHJsow5c+ZgyJAhiIyMFB3HIf3www84dOgQ9u/fLzqKXeDIip2ZN28eJEm66uPAgQNYuHAhSktLMXfuXNGR7VpjP98Xy8rKwujRozF58mQ88sgjgpI7FkmSGvxaluVLnqPmM2vWLBw5cgTff/+96CgOKSMjA0899RSWLVsGnU4nOo5d4JoVO1NQUICCgoKrvqddu3aYMmUK1q1b1+ALutlshlqtxrRp0xrc2URX1tjP94UvOFlZWRg5ciT69++PpUuXQqXizwM3wmQywd3dHT/++CMmTpxY//xTTz2FxMRExMfHC0znmJ588kmsXr0a27ZtQ0REhOg4Dmn16tWYOHEi1Gp1/XNmsxmSJEGlUsFoNDZ4jVhWHFZ6ejpKS0vrf52VlYVbb70VP/30E/r374/Q0FCB6RxTZmYmRo4ciT59+mDZsmX8YtNM+vfvjz59+mDx4sX1z3Xv3h3jx4/nAttmJMsynnzySaxatQpbt25Fp06dREdyWGVlZUhLS2vw3IMPPoiuXbvi+eef59TbZXDNioMKDw9v8GtPT08AQIcOHVhUbCArKwsjRoxAeHg43n33XeTn59e/FhQUJDCZ/ZszZw7uv/9+xMbGYuDAgfjss8+Qnp6Oxx57THQ0hzJz5kwsX74ca9asgZeXV/2aIL1eDzc3N8HpHIuXl9clhcTDwwN+fn4sKlfAskLUDDZu3IiUlBSkpKRcUgY5eHlj7rnnHhQWFuK1115DdnY2IiMjsX79erRt21Z0NIdyYWv4iBEjGjz/1VdfYcaMGS0fiOginAYiIiIiRePqPyIiIlI0lhUiIiJSNJYVIiIiUjSWFSIiIlI0lhUiIiJSNJYVIiIiUjSWFSIiIlI0lhUiIiJSNJYVIiIiUjSWFSIiIlI0lhUiIiJSNJYVIiIiUrT/B2bCEPZcgdssAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"\n",
|
|
"def f(x):\n",
|
|
" return x**2 + 10 * np.sin(x)\n",
|
|
"\n",
|
|
"\n",
|
|
"x = np.arange(-5, 5, 0.1)\n",
|
|
"plt.plot(x, f(x))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now find the minimum with a few methods\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"collapsed": false,
|
|
"jupyter": {
|
|
"outputs_hidden": false
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" message: Optimization terminated successfully.\n",
|
|
" success: True\n",
|
|
" status: 0\n",
|
|
" fun: -7.945823375615215\n",
|
|
" x: [-1.306e+00]\n",
|
|
" nit: 5\n",
|
|
" jac: [-1.192e-06]\n",
|
|
" hess_inv: [[ 8.589e-02]]\n",
|
|
" nfev: 12\n",
|
|
" njev: 6\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import scipy as sp\n",
|
|
"\n",
|
|
"# The default (Nelder Mead)\n",
|
|
"print(sp.optimize.minimize(f, x0=0))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"collapsed": false,
|
|
"jupyter": {
|
|
"outputs_hidden": false
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.12.11"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|