m2/Archis Applications/Exercices/TP1/Exercice 1.ipynb

360 lines
47 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# On importe les librairies\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1 - Créer une fonction J(theta qui implémente J(theta). Quelle est la valeur de de J(4) ?"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def J(theta_i):\n",
" return (theta_i + 1)**2\n",
"\n",
"J(4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# On génère les points dans theta\n",
"theta = np.arange(-10.00, 10.00, 0.01)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3\n",
"Plot theta vs J(theta). When do we reach the minimum?"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xd8lfX9///HKwlJCCMBEvYIG9lgGOKoiooba7WKC/dHq3V0OKq1Vm2tta1aN4qKVkXFWTcqiosRENmQAAECAUICScge798f59BfvngCIeSc65zkeb/dcuOc61wn1zPXOZznubY55xAREdlXlNcBREQkPKkgREQkIBWEiIgEpIIQEZGAVBAiIhKQCkJERAJSQYiISEAqCBERCUgFISIiAcV4HeBQJCcnu9TUVK9jiIhElEWLFu10zqUcaLyILojU1FTS09O9jiEiElHMbGN9xtMqJhERCUgFISIiAakgREQkIBWEiIgEpIIQEZGAVBAiIhJQ0ArCzJ4zsx1mtrzWsAfNbLWZLTWzt80sqdZjt5tZppmtMbNJwcolIiL1E8wliBeAk/cZNhsY6pwbDqwFbgcws8HA+cAQ/3OeMLPoIGYTEYlYD3+2lgUb8oM+naAVhHNuLpC/z7BPnXNV/rvzgO7+25OBmc65cufcBiATGBusbCIikWpd7h4e/iyD+evzgj4tL7dBXA585L/dDdhc67Fs/zAREanlxe+yiI2OYsq4nkGflicFYWZ3AFXAy3sHBRjN1fHcq80s3czSc3NzgxVRRCTsFJVVMmtRNqeP6EJy67igTy/kBWFmU4HTgQudc3tLIBvoUWu07sDWQM93zk1zzqU559JSUg54rikRkSZj1qJsiiuquXRCakimF9KCMLOTgVuBM51zJbUeeg8438zizKw30B9YEMpsIiLhrKbGMeO7LEb3TGJ496QDP6ERBO1srmb2KnAskGxm2cCf8O21FAfMNjOAec65a5xzK8zsdWAlvlVP1znnqoOVTUQk0nyVkUtWXgk3nzggZNMMWkE456YEGDx9P+P/BfhLsPKIiESyF77NomObOE4Z2iVk09SR1CIiYW597h6+WpvLheN6ERsTuo9tFYSISJh78fuNtIg2LgjBrq21qSBERMJYYVklb6Rv5ozhXUlpE/xdW2tTQYiIhLHXFmymuKKay4/qHfJpqyBERMJUVXUNL3yXxbje7RnaLTHk01dBiIiEqU9WbGfL7lKu8GDpAVQQIiJha/o36+nVIYGJh3XyZPoqCBGRMPTDpl0s3rSbyyakEh0V6HR1waeCEBEJQ9O/2UCb+BjOTetx4JGDRAUhIhJmtuwu5aPl25gytiet4oJ2wosDUkGIiISZF7/LAmBqiM7aWhcVhIhIGCkur+KVBZs4eWhnuiW19DSLCkJEJIzMWpRNUVmVZ7u21qaCEBEJEzU1jue/3cConkmM7tnO6zgqCBGRcPH56h1k5ZWExdIDqCBERMLG9G/W0y2pJScP6ex1FEAFISISFpZlFzBvfT5TJ/QiJjo8PprDI4WISDP39Nx1tImLYcrY0F7zYX9UECIiHtuUV8KHy3K4YHxP2sS38DrO/6ggREQ8Nv2b9URHGZcfGR4bp/dSQYiIeCi/uILX0jdz1shudGob73Wc/4cKQkTEQy99v5GyyhquPqaP11F+QgUhIuKR0opqZnyfxcRBHenfqY3XcX5CBSEi4pFZi7PJL67g/37W1+soAQWtIMzsOTPbYWbLaw1rb2azzSzD/287/3Azs3+bWaaZLTWz0cHKJSISDqprHM/MXc/IHkmMSfX+tBqBBHMJ4gXg5H2G3QZ87pzrD3zuvw9wCtDf/3M18GQQc4mIeO7j5dvYlF/CNT/rg5k3V4w7kKAVhHNuLpC/z+DJwAz/7RnAWbWGv+h85gFJZtYlWNlERLzknGPa3HX0Tm7FiYPD47QagYR6G0Qn51wOgP/fjv7h3YDNtcbL9g/7CTO72szSzSw9Nzc3qGFFRIJh3vp8fswu4Mqje3t2ven6CJeN1IHmkAs0onNumnMuzTmXlpKSEuRYIiKNb9rcdSS3juUXo7t7HWW/Ql0Q2/euOvL/u8M/PBuofWXu7sDWEGcTEQm61dsKmbMml6lHpBLfItrrOPsV6oJ4D5jqvz0VeLfW8Ev8ezONBwr2rooSEWlKnpizjlax0VxyRKrXUQ4oJli/2MxeBY4Fks0sG/gT8DfgdTO7AtgEnOsf/UPgVCATKAEuC1YuERGvZO0s5v2lW7nqmD4kJoTPSfnqErSCcM5NqeOhiQHGdcB1wcoiIhIOnvpqHS2io7jyqPA7rUYg4bKRWkSkScspKOXNxdmcN6YHKW3ivI5TLyoIEZEQmDZ3Pc4Rliflq4sKQkQkyPL2lPPqgk2cNaob3dsleB2n3lQQIiJB9vy3WZRX1XBNmJ6Ury4qCBGRICosq2TG91mcMrQz/Tq29jrOQVFBiIgE0Uvfb6SorIpfHdvP6ygHTQUhIhIkpRXVPPfNBo4dmMLQbolexzloKggRkSCZuXATecUVXHdc5C09gApCRCQoKqpqmDZ3PWNT2zMmtb3XcRpEBSEiEgRvLNpMTkEZ1x8fmUsPoIIQEWl0FVU1PDFnHaN6JnF0/2Sv4zSYCkJEpJHNWpTNlt2l3HTCgLC9nGh9qCBERBpRRVUNj8/JZGSPJI6J4KUHUEGIiDSqNxf7lh5uPKF/RC89gApCRKTR7F16GNEjiWMHRP4lkVUQIiKN5K3F2WTvKuWmiZG/9AAqCBGRRlFZXcNjczIZ0T2RYwdG/tIDqCBERBrF24u3kL2raWx72EsFISJyiCqra3h0TgbDuydy3MCOXsdpNCoIEZFD9PYPW9icX8qNTWTbw14qCBGRQ1BZXcNjX2QyrFsixw9qOksPoIIQETkkb6Rnsym/hJua0LaHvVQQIiINVFZZzaNfZDCqZ1KTW3oAjwrCzG42sxVmttzMXjWzeDPrbWbzzSzDzF4zs1gvsomI1NfL8zeRU1DG708a2OSWHsCDgjCzbsANQJpzbigQDZwPPAA85JzrD+wCrghWhl3FFTz91TpqalywJiEiTVxxeRVPfpnJhL4dmNAvss+5VBevVjHFAC3NLAZIAHKA44FZ/sdnAGcFa+JzM3K5/6PVvL8sJ1iTEJEm7oXvsti5p4LfTRrodZSgCXlBOOe2AP8ANuErhgJgEbDbOVflHy0b6BasDGcM78qgzm3416drqKyuCdZkRKSJKiit5Omv1jFxUEdG92zndZyg8WIVUztgMtAb6Aq0Ak4JMGrA9T9mdrWZpZtZem5uboMyREUZv580kKy8El5P39yg3yEizdezX6+nsKyK35w0wOsoQeXFKqYTgA3OuVznXCXwFjABSPKvcgLoDmwN9GTn3DTnXJpzLi0lpeHnOzl+UEcO79WOf3+eQVlldYN/j4g0L3l7ynnumw2cNqwLQ7omeh0nqLwoiE3AeDNLMN9m/4nASmAOcI5/nKnAu8EMYWbcMmkg2wvLmfFdVjAnJSJNyJNfrqO0spqbT2zaSw/gzTaI+fg2Ri8GlvkzTANuBX5jZplAB2B6sLOM69OBnw1I4cmv1lFYVhnsyYlIhNtWUMaL8zby81Hd6dextddxgs6TvZicc39yzg1yzg11zl3snCt3zq13zo11zvVzzp3rnCsPRZbfTxrI7pJKnpm7PhSTE5EI9ugXGTjnuOmE/l5HCYlmfyT10G6JnD68C9O/2UBuUUg6SUQi0PrcPcxcuJnzxvSgR/sEr+OERLMvCIDfnjSQcv+lAkVEAvnHp2uIi4nixolNf9vDXioIoHdyK36Z1p2X529kc36J13FEJMz8sGkXHy7bxlVH9yGlTZzXcUJGBeF3g/887g9/luF1FBEJI8457v9oNcmtY7nqmD5exwkpFYRfl8SWXDohlbd+yGZVTqHXcUQkTMxZs4MFG/K5YWJ/WsfFHPgJTYgKopZfHduXNnEx3P/Raq+jiEgYqK5xPPDRGlI7JDBlbE+v44ScCqKWpIRYbpjYn7lrc/k6o2Gn8RCRpuPNxdms2V7E7ycNokV08/u4bH5/8QFcfEQverRvyV8+WEW1Tgcu0myVVVbz0Oy1jOieyKnDOnsdxxMqiH3ExUTz+0mDWL2tiLcWZ3sdR0Q88sJ3WeQUlHHbKYc1yYsB1YcKIoAzhndhRPdE/vnpWkordCI/keZmd0kFT8zJ5LiBKRzRt4PXcTyjggjAzPjDqYexrbCM577d4HUcEQmxR7/IpKi8iltOHuR1FE+pIOowrk8HThzciSe/XMfOPToFh0hzsWFnMS9+n8UvD+/BYV3aeh3HUyqI/bjtlEGUVlbziA6eE2k2/vrhKmKjo/jtpOZzSo26qCD2o29Kay4Y25NXFmxiXe4er+OISJB9t24ns1du51fH9aNjm3iv43hOBXEAN57Qn5Ytorn/Qx08J9KUVdc47n1/Fd2SWnLFUb29jhMWVBAHkNw6jl8d15fPVm3nm4ydXscRkSCZtWgzq3IKufWUQcS3iPY6TlhQQdTD5Uf2pkf7ltzz/gqqqmu8jiMijWxPeRUPfrKW0T2TOGN4F6/jhA0VRD3Et4jmjlMHs3b7Hl5ZsMnrOCLSyJ78MpOde8r54+mDm+1BcYGoIOpp0pBOTOjbgX9+upZdxRVexxGRRpK9q4Rnvt7A5JFdGdWznddxwooKop7MjLvOGExRWSUPf7bW6zgi0kj+/vEaDJr9QXGBqCAOwqDObblwXC/+M38Ta7cXeR1HRA7Rwqx83vtxK1cf04duSS29jhN29lsQZhZvZueY2SNm9oaZvWhmt5jZkFAFDDc3nziAVrHR3Pv+SpzT2V5FIlV1jeOud1fQNTGea4/t63WcsFRnQZjZ3cC3wBHAfOBp4HWgCvibmc02s+GhCBlO2reK5eYTB/B1xk4+W7XD6zgi0kCvzN/IqpxC7jhtMAmxzetKcfW1v7my0Dl3dx2P/cvMOgLN7xJLwEXje/Hy/E3c98FKjhmQTFyM9pkWiST5xRX849O1TOjbodle66E+6lyCcM59AL7VTPs+ZmbJzrkdzrn0hkzUzJLMbJaZrTazVWZ2hJm19y+VZPj/DdvdCVpER3HX6YPZmFfCs1/rbK8ikebBT9awp7yKu88cot1a96M+G6kXmtn4vXfM7BfAd4c43UeAj51zg4ARwCrgNuBz51x/4HP//bB1zIAUThrcice+yGTL7lKv44hIPS3N3s3MhZu4dEIqAzq18TpOWKtPQVwAPGpmD5rZy8BVwPENnaCZtQWOAaYDOOcqnHO7gcnADP9oM4CzGjqNULnrjME4HPf8d4XXUUSkHmr8G6Y7tIrjxhP6ex0n7B2wIJxzy4C/ANcAxwHXO+cO5VqcfYBc4Hkz+8HMnjWzVkAn51yOf5o5QMdDmEZIdG+XwA0T+/PJiu3MWaMN1iLhbtbibJZs3s3tpwyibXwLr+OEvQMWhJlNB24ChgOXAf81s+sOYZoxwGjgSefcKKCYg1idZGZXm1m6maXn5uYeQozGceVRfeib0oq731tBWaUuTyoSrgpKK/n7x6sZ3TOJn4/q5nWciFCfVUzLgeOccxucc58A4/F9wDdUNpDtnJvvvz/L//u2m1kXAP+/Ab+SO+emOefSnHNpKSkphxCjccTGRHHv5KFszCvhqa/WeR1HROrw0Oy15BVXcM/koURFacN0fdRnFdNDrtYRYc65AufcFQ2doHNuG7DZzAb6B00EVgLvAVP9w6YC7zZ0GqE2oV8yZ4zoyhNfrmNjXrHXcURkH0uzdzPj+ywuHt+Lod0SvY4TMfZ3oNx/zewMM/vJijoz62Nm95jZ5Q2c7q+Bl81sKTAS+CvwN+BEM8sATvTfjxh3nnYYsdFR3P3eCh1hLRJGqqpr+MPby0hpHcfvJg088BPkf/Z3oNxVwG+Ah80sH9+G5ZZAKpAJPO6ce6chE3XOLQHSAjw0sSG/Lxx0ahvPTSf0574PVvHpyu1MGqKDb0TCwYvfb2T5lkIeu2CUNkwfpDoLwr8q6BbgFjNLBToDpcBa55x2/A/g0gmpzFqUzT3/XclR/ZJpFafD90W8lFNQyj8/XcPPBqRw2jBdCOhg7W8VU5GZFZpZIbAUmA18jW9jcq6ZzTOziP3GHwwx0VHcd9ZQtuwu5V+zdUpwEa/9+b2VVNU47p08VEdMN8D+TrXRxjnXttbP/+7jW5r4P3xHREstaantuXBcT57/dgM/bt7tdRyRZuvzVdv5eMU2bpjYn54dEryOE5EadD0I51y1c+5H4NFGztMk3HrKIFLaxHHbW8uo1DWsRUKupKKKu95dQf+Orbnq6D5ex4lYh3TBIOfc040VpClpG9+CP585lFU5hUz/RifzEwm1Rz7LYMvuUv569jBiY3RdtIbSnAuSk4d25qTBnXho9lodGyESQsu3FPDsNxs4L60HY1Lbex0noqkgguieyUNpER3FH95epmMjREKgsrqGW2YtpX2rWP5w6mFex4l4Kogg6pwYz60nD+TbzDzeWrzF6zgiTd60uetZmVPIvZOHkpigYx4OlQoiyC4c14vDe7Xjvg9Wkren3Os4Ik1W5o4iHvksg9OGdeHkoTpQtTGoIIIsKsr429nD2FNexZ/e03UjRIKhusZxy6ylJMRFc/eZQ7yO02SoIEKgf6c2/Pr4/ry/NIePl+d4HUekyZnxXRaLN+3mT2cMJqVNnNdxmgwVRIhce2xfhnZry53vLCe/uMLrOCJNxqa8Eh78ZA3HDUzhrJG6zkNjUkGESIvoKP5x7ggKSiu5693lXscRaRKcc9z+9lKio4y//HyYTqfRyFQQITSoc1tu8K9q+miZVjWJHKpXF2zm28w8bjtlEF2TWnodp8lRQYTYNbVWNWmvJpGG25RXwn0frOTIfh24YGxPr+M0SSqIENu7qqmwrJK7tFeTSINU1zh++8YSos148JwRuoRokKggPDCoc1tunNifD5bm8KFWNYkctOnfrGdh1i7uPnOIVi0FkQrCI9f8rC/DuiVyx9vL2FFY5nUckYixdnsR//hkLScN7sTZo7XXUjCpIDwSEx3FQ+eNoKSimt/PWqpzNYnUQ0VVDTe/toQ28TH89WzttRRsKggP9evYhjtOO4yv1uby0ryNXscRCXuPfZHBiq2F/OXnw0hurQPigk0F4bGLx/fiZwNS+MsHq8jcUeR1HJGwtWTzbh7/ch1nj+6mcy2FiArCY2bGg+cOp1VcDDfOXEJFla5AJ7KvPeVV3DTzBzq1ieNPZ+hcS6GigggDHdvEc//Zw1ixtZCHPlvrdRyRsPOnd1ewKb+Eh88fRWJLncY7VFQQYWLSkM6cP6YHT321jgUb8r2OIxI23l2yhTcXZ3P9cf0Y21tXiAslzwrCzKLN7Acze99/v7eZzTezDDN7zcxivcrmlT+ePphe7RO4+bUlFJRWeh1HxHOb80u48+3lHN6rHTdM7O91nGbHyyWIG4FVte4/ADzknOsP7AKu8CSVh1rFxfDw+aPYXljG7W9p11dp3qqqa7hh5g8APHzeSGKitcIj1DyZ42bWHTgNeNZ/34DjgVn+UWYAZ3mRzWsjeyRxy8kD+XDZNv4zf5PXcUQ888jnGfywaTd/OXsYPdoneB2nWfKqkh8GbgH27rLTAdjtnKvy388GAh4iaWZXm1m6maXn5uYGP6kHrjyqD8cOTOHe91eyYmuB13FEQm7e+jwem5PJOYd358wRXb2O02yFvCDM7HRgh3NuUe3BAUYNuH7FOTfNOZfmnEtLSUkJSkavRUUZ/zx3BO0SWvDrV35gT3nVgZ8k0kTs3FPOjTN/ILVDK/6sy4d6yosliCOBM80sC5iJb9XSw0CSmcX4x+kObPUgW9jo0DqOR84fRVZeMXe+vUzbI6RZqK5x3DRzCbtKKnnsglG0ios58JMkaEJeEM65251z3Z1zqcD5wBfOuQuBOcA5/tGmAu+GOlu4Gd+nAzedMIB3lmzljUXZXscRCbp/f57BN5k7uefMIQzpmuh1nGYvnHYLuBX4jZll4tsmMd3jPGHhuuP6MaFvB+56dzlrt+tUHNJ0fZ2Ry7+/yODs0d04b0wPr+MIHheEc+5L59zp/tvrnXNjnXP9nHPnOud0uTUgOsp4+LyRtI5rwTUvLaKwTMdHSNOzraCMm2YuoX/H1tx31lCdpTVMhNMShNShY9t4Hr9gFBvzS/jd6z9SU6PtEdJ0VFbXcP0riymtrOaJCw8nIVbbHcKFCiJCjOvTgT+cehifrtzOU3PXeR1HpNH8/ePVpG/cxf1nD6Nfx9Zex5FaVBAR5PIjUzl9eBf+8ckavsnY6XUckUP27pItPPP1Bi45oheTR+rqcOFGBRFBzIwHfjGcfh1b8+tXF7Nld6nXkUQabPmWAm59cyljU9tz52mDvY4jAaggIkyruBieuuhwqqod1/5nEWWV1V5HEjlo+cUV/N9Li2iXEMvjF44mNkYfReFIr0oE6pPSmn/+cgRLswv4gw6ikwhTVV3DdS8vJndPOU9ffDgpbXTp0HClgohQJw3pzM0nDOCtxVt4eu56r+OI1NtfP1zN9+vzuP/nwxjePcnrOLIf2p8sgt0wsR8ZO4p44OPV9EtpzQmDO3kdSWS/3lyUzXPfbuCyI1P5xeHdvY4jB6AliAhmZjx4zgiGdUvkxpk/sGabjrSW8LUwK5/b31rGEf5dtiX8qSAiXMvYaKZdnEaruBiumLGQvD06AF3Cz8a8Yq5+MZ1u7Vry5EWjaaGL/0QEvUpNQOfEeJ65JI3conKu/c9iKqpqDvwkkRApKKnkshcW4oDnLh1DUkKzu5pwxFJBNBEjeiTx4LkjWJCVz21v6nKlEh4qqmq45j+L2JxfwrSL0+id3MrrSHIQtJG6CTlzRFc27izmn7PX0jWpJb+bNNDrSNKMOee4851lfL8+j3/9cgRje7f3OpIcJBVEE3P98f3YWlDKY3My6ZrUkgvG9fQ6kjRTT3y5jtfTs7nh+H6cPVp7LEUiFUQTY2bcO3ko2wrKuPOdZXRqG8fEw7T7q4TW6+mbefCTNUwe2ZWbTxzgdRxpIG2DaIJioqN47ILRDOmayPWv/MCPm3d7HUmakc9Xbef2t5ZxdP9kHjxnhK7tEMFUEE1Uq7gYpl+aRofWsVz+wkKydhZ7HUmagUUbd3HdK4sZ3KUtT150uM6xFOH06jVhHdvEM+PysdQ4x4XPzienQGd/leDJ3FHEFTMW0rltPM9fNobWcVqDHelUEE1c35TWvHj5OApKK7no2fk6kE6CIqeglEumLyAmKooXLx9HcmudgK8pUEE0A8O6JzJ9ahrZu0qZ+vwCXddaGtWOojIufGY+hWVVvHDZGHp2SPA6kjQSFUQzMa5PB5666HBW5xRx5QvplFboOhJy6PKLK7j42QXkFJTx/GVjGNot0etI0ohUEM3IcYM68tB5I1m4MZ9rX15EeZVKQhquoLSSi6fPJyuvmOlT0xiTqgPhmhoVRDNzxoiu/PXnw/hyTS7XvbxYJSENsqe8ikufX8Da7UU8ffHhTOiX7HUkCQIVRDM0ZWxP7j1rKJ+t2qGSkINWUlHF5S8sZGl2AY9dMJpjB3b0OpIEScgLwsx6mNkcM1tlZivM7Eb/8PZmNtvMMvz/tgt1tubk4vG9VBJy0IrKKpn63ALSs/J56LyRTBrS2etIEkReLEFUAb91zh0GjAeuM7PBwG3A5865/sDn/vsSRBeP78V9KgmpJ982hwUs3rSbf08ZxZkjunodSYIs5AXhnMtxzi323y4CVgHdgMnADP9oM4CzQp2tObqoVklc+5/FlFWqJOSndhVXcOGz81ixtYAnLhzN6cNVDs2Bp9sgzCwVGAXMBzo553LAVyJAwBWbZna1maWbWXpubm6oojZpF43vxf1nD2POmh1MfW4BRTpOQmrZuaecKc/MY+32PUy7OE2rlZoRzwrCzFoDbwI3OecK6/s859w051yacy4tJSUleAGbmSlje/LI+aNYtHEXU56ZpyOuBYCtu0s57+nvycor5rmpYzhukDZINyeeFISZtcBXDi87597yD95uZl38j3cBdniRrTk7c0RXnrkkjYztezj36e/ZulvnbmrO1m4v4uwnvmNHYTkzLhvLUf21K2tz48VeTAZMB1Y55/5V66H3gKn+21OBd0OdTXwH0710xThyC8s558nvWJe7x+tI4oH0rHzOefI7apzj9WuOYFyfDl5HEg94sQRxJHAxcLyZLfH/nAr8DTjRzDKAE/33xQNje7fn1avHU15Vwy+e/I4FG/K9jiQh9NnK7Vz47HySW8fx5rUTOKxLW68jiUcski9un5aW5tLT072O0WRtzCvmsucXkr2rlAfPHc7kkd28jiRB9sr8Tfzx3eUM7dqW5y4dQwedlbVJMrNFzrm0A42nI6mlTr06tOKtX01gZI8kbpy5hMfnZBLJXyikbtU1jj//dwV/eNt3JbhXrhqvchAVhOxfUkIsL105lskju/LgJ2u4/a1lVFTVeB1LGlFRWSVXzljI899mcdmRqTx7SRqtdLEfAfQukAOKi4nm4fNG0qNdAo/NyWRd7h6euPBwUtroG2ak25xfwpUz0snM3cN9Zw3lovG9vI4kYURLEFIvZsbvJg3k31NGsWxLAWc8+g0/bt7tdSw5BN9l7uSsx78lp6CUGZeNVTnIT6gg5KCcOaIrb147gZho49ynv+eN9M1eR5KD5JzjyS/XcdH0+SQltODt647UMQ4SkApCDtqQrom8d/1RjEltx+9nLeXOd5bpHE4RorCskqtfWsQDH6/mlGFdePf6o+ib0trrWBKmtA1CGqR9q1hmXDaWBz9Zw9Nz17No424ev2AUffRhE7ZWbi3kVy8vIntXKX88fTCXH5mK77hVkcC0BCENFhMdxe2nHsZzl6axraCU0x/9hrcWZ3sdS/ZRU+N49uv1nPX4t5RUVPPq1eO54qjeKgc5IBWEHLLjB3XioxuPYVi3RH7z+o/89vUfdUbYMLGjsIypzy/gvg9WccyAFD6+6RhdO1rqTauYpFF0ToznlavG8+/PM3j0iwzmrc/j7+cM50hdq9gzs1du59Y3l1JSUcV9Zw3lwnE9tdQgB0W/OMxJAAAMqElEQVRLENJooqOMm08cwKxrJxDXIooLn53PH99ZTnF5ldfRmpX84gpumvkDV72YTqe28bz/66O4aHwvlYMcNC1BSKMb3bMdH95wNA9+sobnvt3AV2tz+dsvhjGhr5Ymgsk5x4fLtnHXu8spKK3kxon9ue64fsTG6HugNIzeORIU8S2i+ePpg5l51XgALnhmPje/toTcIl2IKBi27i7lmv8s4rpXFtM1qSX//fVR3HziAJWDHBKdzVWCrqyymsfnZPLUV+to2SKaW08ZxJQxPYmK0iqPQ1VeVc2zX2/gsS8yqXGOm08cwJVH9SYmWsUgdavv2VxVEBIymTv2cOc7y5i3Pp/h3RO549TDdCGaQzBn9Q7+/N8VZOWVcPKQztxx2mH0aJ/gdSyJACoICUvOOd5ZsoUHPlrDtsIyThrcidtOGaQD7A7C8i0FPPDxar7O2EmflFbcfcYQjhmg67NL/akgJKyVVlQz/Zv1PPnlOsqrapgytifXHdePzonxXkcLWxt2FvPPT9fw/tIckhJacP1x/bjkiFRtZ5CDpoKQiJBbVM7Dn61l5sLNREcZ54/pwbXH9qVLYkuvo4WNrJ3FPPXVOmYtyqZFdBRXHt2bq47pQ9v4Fl5HkwilgpCIsjm/hCe+zOSN9GyizDg3rTtXHd2H1ORWXkfzzMqthTzxZSYfLsshJjqKKWN6cN3x/ejYRktZcmhUEBKRsneV8OSX63g9fTNVNY6Jgzpy2ZG9mdC3Q7M40Ku6xjFn9Q5enLeRuWtzaR0Xw0Xje3H5UakqBmk0KgiJaDsKy/jPvI28PH8TecUVDOzUhgvG9eTMEV1p1yrW63iNbueecl5P38zL8zaxZXcpndrGcfH4Xlx8RCqJLbUqSRqXCkKahLLKat77cSszvstixdZCYqOjOGFwR849vAdH90+O6P39Syuqmb1qO+/8sIW5a3OpqnEc0acDlxzRixMGd6JFBP9tEt5UENLkrNxayKxF2byzZAv5xRW0S2jBCYd1YtKQzhzVP5n4FtFeRzygorJKvs7YyeyV2/l0xTaKK6rp3DaeyaO6cs7o7vTv1MbriNIMRGxBmNnJwCNANPCsc+5vdY2rgmieKqpq+HLNDj5evo3Zq7ZTVFZFq9hoJvRL5si+HTiyXzL9OrYOi20WNTWONduL+H5dHl+s3sH8DXlUVjsSW7bg5CGdOWtUN8b1bq+jyiWkIrIgzCwaWAucCGQDC4EpzrmVgcZXQUhFVQ3z1ufxyYptzM3IZXN+KQAd28Qxpnd7RnRPZFi3JIZ2a0ubEOwWmrennFU5RazYWsDCrHwWbMinsMx3Ntu+Ka044bBOHD+oI4f3ahfRq8ckstW3IMLtbK5jgUzn3HoAM5sJTAYCFoRIbEwUxwxI+d+RxJvzS/g2cyffrsvjh027+GBpDgBm0KNdAr2TW/3vp1tSS1LaxJHcJo7k1rHExex/FZVzjpKKanaVVLCruJItu0vZnF/CJv/P6m2FbC/8/09G2Ce5FacO68LY3u0Zk9pep8GQiBNuBdEN2FzrfjYwzqMsEoF6tE/g/LE9OX9sT8D3jX7ZlgKWZheQsWMPG3buIT0rn+KK6p88N75FFPEtoomPiaZlrK8sKqtrqKp2VFbXUFRWRUV1zU+e1yY+hp7tE5jQN5nBXdoyuGtbBndp2yT3tpLmJdwKItCK2P9nHZiZXQ1cDdCzZ89QZJII1qF1HMcO7MixAzv+b5hzjtyicnIKysgtKid3Tzm5ReXsKa+irLKa0opqyqp8RdAiyoiJNmKio2gTH0O7hFjaJbQgKSGWbkkt6dEugcQE7YYqTVO4FUQ20KPW/e7A1tojOOemAdPAtw0idNGkqTAzOraNp2NbHXgmsj/htpVsIdDfzHqbWSxwPvCex5lERJqlsFqCcM5Vmdn1wCf4dnN9zjm3wuNYIiLNUlgVBIBz7kPgQ69ziIg0d+G2iklERMKECkJERAJSQYiISEAqCBERCUgFISIiAYXVyfoOlpnlAhsb+PRkYGcjxmks4ZoLwjebch0c5To4TTFXL+dcyoFGiuiCOBRmll6fsxmGWrjmgvDNplwHR7kOTnPOpVVMIiISkApCREQCas4FMc3rAHUI11wQvtmU6+Ao18Fptrma7TYIERHZv+a8BCEiIvvRpAvCzM41sxVmVmNmafs8druZZZrZGjObVMfze5vZfDPLMLPX/Kcgb+yMr5nZEv9PlpktqWO8LDNb5h8vJBfiNrO7zWxLrXyn1jHeyf75mGlmt4Ug14NmttrMlprZ22aWVMd4QZ9nB/rbzSzO/xpn+t9LqcHIsc80e5jZHDNb5X//3xhgnGPNrKDWa3tXsHPVmvZ+Xxfz+bd/ni01s9EhyDSw1rxYYmaFZnbTPuOEZJ6Z2XNmtsPMltca1t7MZvs/i2abWbs6njvVP06GmU095DDOuSb7AxwGDAS+BNJqDR8M/AjEAb2BdUB0gOe/Dpzvv/0UcG2Q8/4TuKuOx7KA5BDPv7uB3x1gnGj//OsDxPrn6+Ag5zoJiPHffgB4wIt5Vp+/HfgV8JT/9vnAayF43boAo/232wBrA+Q6Fng/lO+n+r4uwKnAR/iuMDkemB/ifNHANnzHCoR8ngHHAKOB5bWG/R24zX/7tkDveaA9sN7/bzv/7XaHkqVJL0E451Y559YEeGgyMNM5V+6c2wBkAmNrj2BmBhwPzPIPmgGcFays/un9Eng1WNMIkrFApnNuvXOuApiJb/4GjXPuU+dclf/uPHxXHvRCff72yfjeO+B7L030v9ZB45zLcc4t9t8uAlbhu957pJgMvOh85gFJZtYlhNOfCKxzzjX0INxD4pybC+TvM7j2+6iuz6JJwGznXL5zbhcwGzj5ULI06YLYj27A5lr3s/npf6AOwO5aH0SBxmlMRwPbnXMZdTzugE/NbJH/utyhcr1/Mf+5OhZr6zMvg+lyfN82Awn2PKvP3/6/cfzvpQJ8762Q8K/SGgXMD/DwEWb2o5l9ZGZDQpWJA78uXr+nzqfuL2pezbNOzrkc8H0BADoGGKfR51vYXTDoYJnZZ0DnAA/d4Zx7t66nBRi27+5c9RmnXuqZcQr7X3o40jm31cw6ArPNbLX/m8Yh2V824EngXnx/9734VoFdvu+vCPDcQ941rj7zzMzuAKqAl+v4NUGZZ7VjBhgWtPfRwTKz1sCbwE3OucJ9Hl6MbxXKHv+2pXeA/qHIxYFfFy/nWSxwJnB7gIe9nGf10ejzLeILwjl3QgOelg30qHW/O7B1n3F24lu0jfF/8ws0TqNkNLMY4Gzg8P38jq3+f3eY2dv4Vm8c8oddfeefmT0DvB/gofrMy0bP5d8Adzow0flXwAb4HUGZZ7XU52/fO062/3VO5KerDxqdmbXAVw4vO+fe2vfx2oXhnPvQzJ4ws2TnXNDPOVSP1yUo76l6OgVY7Jzbvu8DXs4zYLuZdXHO5fhXt+0IME42vu0ke3XHt/21wZrrKqb3gPP9e5j0xvctYEHtEfwfOnOAc/yDpgJ1LZEcqhOA1c657EAPmlkrM2uz9za+jbTLA43bmPZZ7/vzOqa5EOhvvj2+YvEtnr8X5FwnA7cCZzrnSuoYJxTzrD5/+3v43jvgey99UVehNRb/No7pwCrn3L/qGKfz3m0hZjYW32dBXjBz+adVn9flPeAS/95M44GCvatXQqDOJXmv5plf7fdRXZ9FnwAnmVk7/+rgk/zDGi7YW+S9/MH3oZYNlAPbgU9qPXYHvj1Q1gCn1Br+IdDVf7sPvuLIBN4A4oKU8wXgmn2GdQU+rJXjR//PCnyrWUIx/14ClgFL/W/QLvtm898/Fd+eMutCkc3/emwGlvh/nto3V6jmWaC/HbgHX3kBxPvfO5n+91KfEMyfo/CtWlhaax6dClyz930GXO+fLz/i29A/IUTvqYCvyz7ZDHjcP0+XUWsPxCBnS8D3gZ9Ya1jI5xm+gsoBKv2fX1fg2271OZDh/7e9f9w04Nlaz73c/17LBC471Cw6klpERAJqrquYRETkAFQQIiISkApCREQCUkGIiEhAKggREQlIBSEiIgGpIEREJCAVhEgjMrMx/pMbxvuPGl5hZkO9ziXSEDpQTqSRmdl9+I6gbglkO+fu9ziSSIOoIEQamf+8TAuBMnynY6j2OJJIg2gVk0jjaw+0xnc1t3iPs4g0mJYgRBqZmb2H7+pyvfGd4PB6jyOJNEjEXw9CJJyY2SVAlXPuFTOLBr4zs+Odc194nU3kYGkJQkREAtI2CBERCUgFISIiAakgREQkIBWEiIgEpIIQEZGAVBAiIhKQCkJERAJSQYiISED/H54CR9E6V3rOAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plot de J(theta)\n",
"plt.plot(theta,J(theta), label='Fitted line - closed form')\n",
"plt.xlabel('x')\n",
"plt.ylabel('J(x)')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"J_theta = [J(x) for x in theta]\n",
"# Valeur de theta à laquelle on obtien le plus petit J(theta)\n",
"round(theta[J_theta.index(min(J_theta))], 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 4\n",
"Create a function dJ_dtheta(x_i) which is computing the gradient\n",
"?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# On calcule la fonction dérivée. D'après J(theta). Merci dcode.fr\n",
"def dJ_theta(x_i):\n",
" return 2 * (x_i + 1)\n",
"# Affichage de la valeur à 0\n",
"dJ_theta(-1)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fab8eb08438>]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(theta, dJ_theta(theta))\n",
"# dJ_t = [dJ_theta(x) for x in theta]\n",
"# plt.plot(theta, dJ_t)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 5\n",
"Create a function gradient_descent(theta_0, lr, nb_iters, df_dx, f) which returns the solution\n",
"of argmin f (θ). \n",
"x_0, lr, nb_iters, df_dx, f correspond respectively to the initial value of θ, the\n",
"θ\n",
"learning rate, the number of iterations allowed for solving the problem, the gradient of θ and the\n",
"function J(.).\n",
"\n",
"What is the solution θ̂ found by gradient descent to our problem? Note: assume that\n",
"x_0, lr, nb_iters = -7, 0.1, 100 while debugging"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def gradient_descent(theta_0, lr, nb_iters, dJ_t, J_theta):\n",
" # puis on reprend les étapes vues en cours\n",
" theta = theta_0\n",
" \n",
" for t in range(nb_iters): \n",
" # calcul de theta\n",
" theta = theta - lr * dJ_t(theta)\n",
"\n",
" return theta\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.0000000100978041"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# On appelle la fonction \n",
"gradient_descent(-7, 0.01, 1000, dJ_theta, J)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 6\n",
"Update your function gradient_descent for printing the optimization path (i.e. print the line between\n",
"θ t and θ t+1 and saving the figure at the end of the optimization process)."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"-1.0000000100978041"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def gradient_descent(theta_0, lr, nb_iters, dJ_t, J_theta):\n",
" # puis on reprend les étapes vues en cours\n",
" theta = theta_0\n",
" \n",
" # on initialise les séries pour le plot\n",
" x = [theta]\n",
" y = [J_theta(theta)]\n",
" \n",
" for t in range(nb_iters): \n",
" # calcul de theta\n",
" theta = theta - lr * dJ_t(theta)\n",
" # ajout de la valeur au plot\n",
" x.append(theta)\n",
" y.append(J_theta(theta))\n",
" \n",
" # affichage du plot\n",
" plt.plot(x,y)\n",
" \n",
" return theta\n",
"\n",
"# On appelle la fonction \n",
"gradient_descent(-7, 0.01, 1000, dJ_theta, J)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 7\n",
"Assuming that you are setting nb_iters equals to 100 what is the solution θ̂ when varying nb_iters in\n",
"[-8, -1, 7] and lr in [0.1, 0.01, 0.001, -0.01, 0.8, 1.01]. Does the estimated solution always\n",
"the same? What are pros and cons about these hyperparameters and GD in general?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 8\n",
"Now assume the function J(θ) = sin(2θ + 1), what is the solution θ̂ given by GD?"
]
},
{
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}