{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TP2 – Équations non-linéaires – Éléments de correction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Programmons la méthode de Newton pour une fonction F, de différentielle dF supposée calculable explicitement."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def newton(f,df,x0,eps,Nmax):\n",
    "    tol = 1\n",
    "    nbiter = 0\n",
    "    xt, x = x0, x0\n",
    "    listx = [x]\n",
    "    while (tol>eps) and (nbiter<Nmax):\n",
    "        nbiter += 1\n",
    "        x = x - f(x)/df(x)\n",
    "        listx.append(x)\n",
    "        tol = abs(x-xt)\n",
    "        xt = x\n",
    "    return x, nbiter, listx"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> **Remarques.** La programmation précédente se limite au cas monodimensionnel (formule d'itération avec `/` et utilisation de la valeur absolue pour l'incrément `tol`). Les itérés sont stockés successivement avec la commande `append` dans une liste `listx`."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Testons la méthode sur l’exemple monodimensionnel $F_1(x) = e^x - e$, et illustrons graphiquement la vitesse de convergence."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10, 9.000123409804086, 8.000458831035166, 7.001370294696947, 6.003845652578774, 5.010557737534697, 4.028681021916206, 3.077060429355986, 2.202358423033882, 1.5028431285659987, 1.1076517927211909, 1.0055920040385937, 1.0000156061511463, 1.0000000001217753, 0.9999999999999999, 0.9999999999999999]\n"
     ]
    }
   ],
   "source": [
    "def f(x):\n",
    "    return np.exp(x)-np.exp(1.)\n",
    "\n",
    "def df(x):\n",
    "    return np.exp(x)\n",
    "\n",
    "x, nbiter, listx = newton(f,df,10,1e-16,15)\n",
    "print(listx)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ordre effectif de convergence (avant la saturation):  1.9886053412547247\n"
     ]
    }
   ],
   "source": [
    "xsol = 1.\n",
    "Erreur = np.array([abs(x - xsol) for x in listx])\n",
    "\n",
    "plt.loglog(Erreur[:-1],Erreur[1:],'X-',label = 'méthode de Newton - $F_1$')\n",
    "plt.loglog(Erreur[:-1],Erreur[:-1]**2,'r',label = 'droite de pente 2')\n",
    "plt.legend()\n",
    "plt.title(\"Courbes de convergence\")\n",
    "plt.show()\n",
    "\n",
    "fit = np.polyfit(np.log(Erreur[10:12]), np.log(Erreur[11:13]), 1)\n",
    "print('Ordre effectif de convergence (avant la saturation): ', fit[0])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> **Remarques.** La représentation en échelle log-log de $e_{n+1}$ en fonction de $e_n$ se prête bien à la comparaison avec la droite de pente 2 qui témoigne de la convergence à l'ordre 2. Il y a une saturation sur l'erreur machine (qui peut apparaître ou ne pas apparaître selon les cas – tout dépend des propriétés des points fixes de l'itération en arithmétique approchée qui ne sont pas nécessairement ceux d'un théorème mathématique)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10, 9.500061704902043, 9.000163432809245, 8.500331136712637, 8.000607587339601, 7.501063251382551, 7.0018141721369, 6.503051301821964, 6.0050884620573735, 5.508440336204689, 5.013948149934721, 4.522979121443937, 4.037734814481659, 3.56170649808558, 3.100292964359917, 2.661503243429142]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ordre effectif de convergence:  1.1358682068657693\n"
     ]
    }
   ],
   "source": [
    "def f2(x):\n",
    "    return (np.exp(x)-np.exp(1))**2\n",
    "\n",
    "def df2(x):\n",
    "    return 2*np.exp(x)*(np.exp(x)-np.exp(1))\n",
    "\n",
    "x, nbiter, listx = newton(f2,df2,10,1e-16,15)\n",
    "print(listx)\n",
    "\n",
    "xsol = 1.\n",
    "Erreur = np.array([abs(x - xsol) for x in listx])\n",
    "\n",
    "plt.loglog(Erreur[:-1],Erreur[1:],'X-',label = 'méthode de Newton - $F_2$')\n",
    "plt.loglog(Erreur[:-1],Erreur[:-1]**2,'r',label = 'droite de pente 2')\n",
    "plt.legend()\n",
    "plt.title(\"Courbes de convergence\")\n",
    "plt.show()\n",
    "\n",
    "fit = np.polyfit(np.log(Erreur[10:12]), np.log(Erreur[11:13]), 1)\n",
    "print('Ordre effectif de convergence: ', fit[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10, 9.600049363921634, 9.200123002603918, 8.800232850519496, 8.40039670635273, 8.000641110481277, 7.601005629495609, 7.201549229775193, 6.802359745381633, 6.403567912945528, 6.005368110901081, 5.608048860445591, 5.212037362305403, 4.817963822984778, 4.426752821091107, 4.039749732249343]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAELCAYAAADN4q16AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAx6ElEQVR4nO3deVzVVf748debRVBRyC0VSNHcARHR0tQsSyvTskUzy9SyZWq+00w10ywtvxlrmsnJ9hrH0MpKW8yyrGkxm9LKMHetXEJBLVcQFATuPb8/zuV6RVCU5XOX9/Px4BH3frZzP9ibw/ucz/uIMQallFLBI8zpBiillKpdGtiVUirIaGBXSqkgo4FdKaWCjAZ2pZQKMhrYlVIqyGhgV/VCRGaJyJR6vmZ7ETEiElGf11XKaRrYQ5iIXCsiWSJSKCI7ReQDERngdLuUUjWjgT1EicjvgMeBh4HTgTOAZ4HL6uBa4bV9zlCn91Qdjwb2ECQiscBfgduNMfOMMQeNMaXGmAXGmHs8+0SJyOMissPz9biIRHm2TRCRLyuc04jImZ7vZ4nIcyKyUEQOAud5dmshIh+LSIGIfC4i7XyO7+rZtk9EfhCR0T7bLhGR9Z7jtovI3VV8rnARmSoie0RkCzC84ucWkRc8f51sF5EpVQVIz7n+JCKbPdddLiKJnm39ReRbEcn3/Le/z3GLReRvIrLEc9xHItLCs+0DEbmjwnVWicgV1bgHx9xTEUkXkRWe67whInN9010icqmIrBSRPBFZKiKpPtuyReRuEVnt+RxzRSTaZ/tlnmMPeO7BRSd7D5WDjDH6FWJfwEVAGRBxnH3+CnwNtAJaAkuBv3m2TQC+rLC/Ac70fD8LyAfOwXYeoj3vFQCDgCjgifJzAI2BHGAiEAH0AvYA3T3bdwIDPd+fBqRX0eZbge+BRKAZ8JmnXRGe7W8D//ZcrxWwDLilinPdA6wBugAC9ASae867H7je09axntfNPcctBjYDnYGGntePeLaNB5b4XKM7kOe5Hye6BxXvaVNgK/AbIBK4AigBpnj27wXsAs4CwoEbgGwgyrM92/P523o+0wbgVs+2vp5rXei5VjzQ9WTvoX45+P+40w3QLwd+6DAO+PkE+2wGLvF5PQzI9nw/gRMH9pcqbJ8FzPF5HQO4PEF4DPBFhf3/DTzg+X4bcAvQ9ARtXlQenDyvh3raFYFNNx0GGvpsHwt8VsW5fgAuq+T964FlFd77Cpjg+X4x8Befbb8CPvR83wQ4CLTzvH4IyPR8f6J7cNQ9xf6C3A6Iz3tf+gT25/D8Iq7wmc71fJ8NXOez7Z/A8z7XnVbJZz+pe6hfzn1pKiY07cWmRY43W6QttkdYbqvnverKOd57xphCYJ/nnO2AszwpgzwRycP+8mnt2f1K4BJgqyeF0+84bfa9rm/722F7tjt9rvFvbK+zMonYX26VXWNrhfe2Ynu15X72+f4Q9pcYxpgC4H3gGs+2scArPu073j2gwmdrC2w3nuhayfZ2wF0VzpfI0T/DSttJ1Z/9ZO+hcohOAwtNX2F7XpcDb1axzw7s/8jrPK/P8LwHttfZqHxHEWnNsSorG5roc0wMNgWwAxuQPjfGXFhZQ4wx3wKXiUgkcAfwuu+5fOys8P4ZPt/nYD9zC2NMWWXXqSAH6AisrfB++X3xdQbwYTXOCfAa8ICI/A+bovrM53pV3gMP33u6E4gXEfEJ7r4BOQd4yBjzUDXb5av8s1f2/sncQ+UQ7bGHIGNMPnA/8IyIXC4ijUQkUkQuFpF/enZ7DfiLiLT0DP7dD8z2bFsF9BCRNM+A24PVvPQlIjJARBoAfwO+NsbkAO8BnUXkek87IkWkj4h0E5EGIjJORGKNMaXAAcBdxflfB/5PRBJE5DTgXp/PvBP4CPiXiDQVkTAR6Sgi51ZxrhnA30Skk1ipItIcWOhp67UiEiEiY7C58veqeQ8WYn8x/BWYa4wp/yxV3oMqzvMVNpV1h6cdl2Fz4+X+A9wqImd52t9YRIaLSJNqtPEFYKKIDPHcp3gR6XoK91A5RAN7iDLG/Av4HfAXYDe2N3YHMN+zyxQgC1iNHUT8zvMexpgfsYHpE2AjNrdbHa8CD2BTML2B6zznK8Dmw6/B9oh/Bv6BHVQEm9fOFpED2AHScVWc/z/Af7G/eL4D5lXYPh5oAKzHDni+CbSp4lyPYX9RfIT9ZfICNre8F7gUuAub0vo9cKkxZk91boAx5rCnXRdg70f5+ye6BxXPU4IdML0ROwB7HfaXw2HP9ixgMvC057Nuwo6NVKeNy7CDuNOwg6ifc+SvlJO5h8ohcnSKTikVqETkG+wA6Eyn26KcpT12pQKUiJwrIq09qZgbgFSqn+tXQUwHT5UKXF2w6aLGwBbgKk8eXIU4TcUopVSQ0VSMUkoFGQ3sSikVZPwix96iRQvTvn17p5uhlFIBZfny5XuMMS0rvu8Xgb19+/ZkZWU53QyllAooIlKxvAWgqRillAo6GtiVUirIOBrYRWSEiEzPz893shlKKRVUHM2xG2MWAAsyMjImV9xWWlpKbm4uxcXFDrRMharo6GgSEhKIjIx0uilKnTK/GDytTG5uLk2aNKF9+/aIiNPNUSHAGMPevXvJzc0lKSnJ6eYodcr8NsdeXFxM8+bNNaireiMiNG/eXP9KVAHPbwM7oEFd1Tv9N6eCgV8HdqWUCkr798Mzz8CgQVBQUOun18CulFL1weWCjz+GsWOhTRu44w44cAByKlseuGYcHTwVkRHAiDPPPNPJZtSaJUuW4HK5GDRokNNNUUr5iy1bYNYs+5WTA6edBpMnw6RJ0KtXnVzS0R67MWaBMebm2NhYJ5tRK1asWMHMmTPp168fAHl5eTz77LPe7dnZ2SQnJ9foGg8++CBTp06tt2NFhLvuusv7eurUqTz44IOndP1yFe9LXfr3v/9NmzZtSEtLIy0tjeuuu65erqsUhw7B7Nlw/vnQsSNMmQLdu8PcubBjBzz1VJ0FddBUTK3p1asXM2bM8M5/rs8AVleioqKYN28ee/ZUaznPaqnP+7JmzRqmTJnCypUrWblyJbNnzz7xQUqdKmPgm2/glltsquX662HrVvjb3+x/P/wQRo+G6Og6b0rQBPalm/cwdNrn7CooPur7msjOzqZr165MmDCBzp07M27cOD755BPOOeccOnXqxLJlywCYPXs2ffv2JS0tjVtuuQWXy8W9997L5s2bSUtL45577gHA5XIxefJkevTowdChQykqKvJe67HHHiM5OZnk5GQef/xx7/sPPfQQnTt3ZsCAAfzwww/e9yu7ZkVVHVvd4yMiIrj55puZNm1apfensnM8+uijPPnkkwD89re/5fzzzwdg0aJFjBs3rtL7Utlnz87Oplu3blXer+pYvXo1aWlpJ3WMUidt1y74178gORnOPhtefhkuvxwWL4aNG+Evf4HExPptkzHG8a/evXubitavX3/Me1VZsmm36fqXD0yHP75vrpn+lff7P7+9ptrnqMxPP/1kwsPDzerVq43L5TLp6elm4sSJxu12m/nz55vLLrvMrF+/3lx66aWmpKTEGGPMbbfdZl588UXz008/mR49ehxzrhUrVhhjjLn66qvNyy+/bIwxJisryyQnJ5vCwkJTUFBgunfvbr777jvv+wcPHjT5+fmmY8eO5tFHH63ymr6qOtYYU63jjTGmcePGJj8/37Rr187k5eWZRx991DzwwAPHPcdXX31lrrrqKmOMMQMGDDB9+vQxJSUl5sEHHzTPP//8Mfelqs9+vPtVXc2aNTMpKSmmZ8+eZsiQIdU+7mT+7akQVVJizDvvGHPZZcZERBgDxpx9tjHTpxuTn19vzQCyTCUx1W+fPPX1/xasY/2OA1VuX52bR1GpG4BvtuzF7Vntb86ybWz8pfKpRN3bNuWBET1OeO2kpCRSUlIA6NGjB0OGDEFESElJITs7m08//ZTly5fTp08fAIqKimjVqlWlA6hJSUneHmTv3r3Jzs4G4Msvv2TUqFE0btwYgCuuuIIvvvgCt9vNqFGjaNSoEQAjR44EqPKavr744otKj63u8eWaNm3K+PHjefLJJ2nYsOEJzzF27FiWL1/OgQMHiIqKIj09naysLL744gtvT95XVZ995MiRVd6v6sjJyaF169asXr36qPc3bNjAE088wZ49exgyZAi33XZbtc+pFBs2wMyZ8NJL8MsvcPrp8NvfwoQJNofuJwIisJ9I19ZN2by7kMLDZd6gHibQvkXjGp87KirK+31YWJj3dVhYGGVlZRhjuOGGG/j73/9+1HGVBSHfc4WHh590aqFcVdesq+PvvPNO0tPTmThxYrXOkZSUxKxZs+jfvz+pqal89tlnbNq0iW7durF1a6Xloyt1ovv1zDPP8J///AeAhQsX0rZtW++2NWvW0KPHsb+4u3XrxvPPP4/b7Wb8+PEa2NWJHTgAr78OmZnw1VcQHg6XXmpntVx8MfhhXaGAyLE/MKIHc2/pV+XXPRd1odRlvEEdIDxMODupWZXHVKe3Xh1DhgzhzTffZNeuXQDs27ePrVu30qRJEwqq+eDBwIEDmT9/PocOHeLgwYO8/fbbDBw4kEGDBjF//nyKioooKChgwYIFx72mr6qOre7xvpo1a8bo0aN54YUXqnWOgQMHMnXqVAYNGsTAgQN5/vnn6dWrFyJyzH2p6rNXx+233+4dGPUN6mDz65UFdoB3332X4cOHc8kll1TrOioEGQOffw433GAHQidPhrw8mDoVtm+H+fNh5Ei/DOoQJGV7H3x3HSUum4qJjgwjMlwodRkWrv25Npp5XN27d2fKlCkMHTqU1NRULrzwQnbu3Enz5s0555xzSE5O9g4SViU9PZ0JEybQt29fzjrrLG666SZ69epFeno6Y8aMoWfPnlx88cXetEdV16x4zsqOre7xFd11111HzY453jkGDhzIzp076devH6effjrR0dHeYF3xvlT12WtqzZo1dK/iT+ORI0fywQcf8Morr9T4OirI5ObCQw9Bp04weDC8/TZcdx18/TWsWwd33WXTL35ObP7dWRkZGabi0ngbNmygW7du1Tp+V0ExT366iYVrdjLl8mSWbtrDwrU/8/S1vejfsUVdNFkFqMWLFzNv3jwOHz5Mamoqt99++zH7nMy/PRUEDh+Gd96xqZaPPrK99fPOs6mWK64AzziVPxKR5caYjGPeD4bArlRt0n97IWLlShvMX3kF9u2zUxInTLBfHTo43LjqqSqwB8XgqVJKVcvevfDqqzagr1wJUVEwahRMnAhDhtiB0SCggV0pFdxcLvjkExvM58+HkhJIT4enn7YFuZo1c7qFtU4Du1IqOG3ebOecv/iiHRRt3hxuu832znv2dLp1dUoDu1IqeBw8CG+9ZXvnn38OYWEwbBhMmwYjRtjUSwjQwK6UCmzG2OmIM2fCnDl24YqOHe20xfHjISHB6RbWOw3sSqnA9PPPtuBWZiZ8/72dljh6tJ2mOGAAhPAyh7rQhlIqcJSWwvvv2975++/bgdH+/WHGDBvUmzRxuoV+QRfaqKZTWajipptuYv369QA8/PDDNbr+4sWLufTSS2t0jppce+nSpSd1zMcff0zv3r1JSUmhd+/eLFq0qI5ap0LCunVw9902rTJqFCxbZl9v2ABLlsCNN2pQ96GpmBoqKysjIqLy2zhjxgzv9w8//DB/+tOf6qtZtWrx4sXExMTQv3//ah/TokULFixYQNu2bVm7di3Dhg1j+/btddhKFXTy823OfOZMu4BFRIQdAJ00CS66yL5WlQqIImBOqWqhisGDB3PnnXeSkZHBE088waeffkqvXr1ISUlh0qRJHD582LtfVlYW9957L0VFRaSlpTFu3DigegtdfPjhh3Tt2pX09HTmzZvnff/gwYNMmjSJvn370qtXL955551jjl28eDGDBg1i+PDhdOnShVtvvRW329bT+eijj+jXrx/p6elcffXVFBYWAtC+fXseeOAB0tPTSUlJ4fvvvyc7O5vnn3+eadOmkZaWxhdffMHu3bu58sor6dOnD3369GHJkiXHXL9Xr17ewlw9evSgqKjIe1+UqpLbDYsW2dWH2rSBW2+FwkJ47DFbfGvePFtZUYP6cQXG3bnzTvuUWG1KSwOflYoqWr58OXPmzGHlypWUlZWRnp5O7969vdtLSkrIysqiuLiYTp068emnn9K5c2fGjx/Pc889x5133und95FHHuHpp59mpeczbNiwgblz57JkyRIiIyP51a9+xSuvvML48eO9xxQXFzN58mQWLVrEmWeeyZgxY7zbHnroIc4//3wyMzPJy8ujb9++XHDBBd6a5uWWLVvG+vXradeuHRdddBHz5s1j8ODBTJkyhU8++YTGjRvzj3/8g8cee4z7778fsD3t7777jmeffZapU6cyY8YMbr31VmJiYrj77rsBuPbaa/ntb3/LgAED2LZtG8OGDWPDhg1V3su33nqL9PT0o8rwKnWUbdvsYs8zZ0J2NsTG2sqKkyZBRkZID4SeisAI7A443kIVgDfQ/vDDDyQlJdG5c2cAbrjhBp555pmjAntF1Vno4vvvvycpKYlOnToBcN111zF9+nTA9rjfffddb86/uLiYbdu2HVPfpG/fvnTw1LwYO3YsX375JdHR0axfv55zzjkHsL+gyhfgBrvQBdiFLXz/SvD1ySefeMcOAA4cOEBhYSExMTHH7Ltu3Tr+8Ic/8NFHH1V5P1SIKi62T4JmZtonQ42xj/U/9JDNo/ss7KJOTmAE9uP0rJ1SsXd8MmpjoYy33nqLLl26HHc/qdDLERGMMVx44YW89tprlR5T3qsODw+nrKys0n3cbjdff/010SdYlDc3N5dRo0bx0ksv0bFjx+Puq0KEMfDddzaYv/qqrXHerh3cf78tvtW+vcMNDA6aY6/C8Raq8NWlSxeys7PZtGkTAC+//DLnnnvuMftFRkZSWloKVG+hi65du5Kdnc3mzZsBjgrEw4YN46mnnqK8MueKFSsqbduyZcv46aefcLvdzJ07lwEDBnD22WezZMkSb3sPHjzIjz/+eNx7UXFxjKFDh/LUU095X6+sJE2Wl5fH8OHDeeSRR7x/HagQtmcPPPGETYFmZMALL8All9ie+pYt8OCDGtRrkQb2KhxvoQpf0dHRzJw5k6uvvpqUlBTCwsK49dZbj9nv5ptvJjU1lXHjxlVroYvo6GimT5/O8OHDSU9PPypVc99991FaWkpqaio9evTgvvvuq7Rtffr04Y477qBbt24kJSUxatQoWrZsyaxZsxg7diypqan069eP77///rj3YsSIEbz99tvewdMnn3ySrKwsUlNT6d69O88///wxxzz99NNs2rSJv/71r6SlpZGWlub9RaZCRFkZLFwIV10FbdvasbKoKHj2Wdi505bLHTLEPvavapXWYw9SixcvZurUqbz33ntONyXg6L+9Gtq48UjxrR07oEULO8tl4kTwLAyvaofWY1dK1Z3CQnjjDZs7//JL2wu/+GJ46ik7PbFBA6dbGFK0pECQGjx4MIMHD3a6GSqYGQNLl9pgPneurazYuTM88ojtoVdYYFzVH0cDuzFmAbAgIyNjspPtUEqdhB074KWXbLrlxx8hJgbGjLFzzvv31znnfsCvUzHGmGOm7ClVl/xhzMkvlZTAe+/Z3vkHH9gnRAcOhD/+0Q6OVvIMg3KO3wb26Oho9u7dS/PmzTW4q3phjGHv3r0nnJ8fUtassT3zl1+2UxbbtoV777Vzzj0Pzyn/47eBPSEhgdzcXHbv3u10U1QIiY6OJiEEF2Y4Sl4evPaa7Z1nZUFkJFx2mU21DB0aNAs+BzO/DeyRkZEkJSU53QylQoPbDZ99ZoP5vHn2cf/UVPtQ0bXX2imLKmD4bWBXStWD7GxbfGvWLNi6FeLibG3zSZOgVy8dCA1QGtiVCjVFRfD227Z3/umnNnhfeCH84x825aJjDAFPA7tSocAYmy+fOdMW38rPh6Qk+OtfbXncM85wuoWqFmlgVyqY7d4Ns2fb3vnatbYU7lVX2cf7zz1X67QEKQ3sSgWbsjL48EMbzBcssK/POgv+/W/7IFEArDGsakYDu1LB4ocfjhTf+vlnaNXKVlScOBG6d3e6daoeaWBXKpAVFMDrr9ve+dKldo758OF2Vssll9g56CrkaGBXKtAYYysoZmbaoH7oEHTtCv/8py2+1bq10y1UDtPqjkoFitzcI8W3Nm2CJk1g3Dibajn7bJ1zrrz8dqENpRRw+DC8+64N5v/9r31C9NxzbarlyiuhBmvvqsCnC20oFUhWrbKpltmzYd8+SEiwlRQnTAD9C1edgAZ2pfzFvn324aGZM+G77+yqQ5dfbnvnF1ygxbdUtWlgV8pJLpd9rD8z0z7mX1Jia7Q89RSMHQvNmzvdQhWANLAr5YQtW47MOc/JgdNOg1tusQOhvXo53ToV4DSwK1VfDh2Ct96yvfPFi+0slmHDYOpUGDlSi2+pWqOBXam6ZAx8840N5nPm2AeKOnSAKVNg/HhITHS6hSoIaWBXqi788otdTi4zEzZsgEaN4Oqrbapl4EAtvqXqlAZ2pWpLaSksXGiD+fvv24HRfv3gP/+B0aOhaVOnW6hChAZ2pWpq/Xo7EPrSS7BrF5x+Ovzud7Z33q2b061TIUgDu1Kn4sABmDvX9s6//hoiIuDSS+2c84su0uJbylEa2JWqLrcb/vc/G8zffNMuMde9u53Vct11tqeulB/QwK7UieTk2PnmM2fa+edNm9oZLZMmQZ8+WnxL+R0N7EpVprgY3nnHBvOPPrLTFs8/364ROmqUneWilJ/SwK6UrxUrbKrllVdg/367yPN999niW0lJTrdOqWrRwK7U3r22+FZmJqxcCVFRcMUVNtVy/vk651wFHF1oQ4Umlws+/tgG83fescW3eveGZ56xxbdOO83pFip1ynShDRVaNm2CWbPsYGhurq2eeP31ds55aqrTrVPqpOhCGyp0HTxopydmZtrpimFhdq75tGm2+FaDBk63UKlapYFdBSdj4Kuv7KyWOXOgsBA6dYK//9320OPjnW6hUnVGA7sKLjt3Him+9cMPdk3Q0aPtQOg55+iccxUSNLCrwFdaaotuZWbaIlwuFwwYAH/4g62oGBPjdAuVqlca2FXgWrfOBvOXX4bdu6FNG7jnHjsQ2rmz061TyjEa2FVgyc+3OfPMTFi2zBbbGjHCplqGDbPFuJQKcfp/gfJ/brddSi4z0y4tV1wMycl2Vsu4cdCypdMtVMqvaGBX/mvr1iPFt7KzITbWplkmTbIPE+lAqFKV0sCu/EtREcyfb3vnn35qpy1ecAE8/DBcfjk0bOh0C5XyexrYlfOMge++s8H81VchLw/atYP777fFt9q3d7iBSgUWDezKObt32yqKmZmwZg1ER8OVV9p0y3nnafEtpU6RBnZVv8rKbH3zzEx49107B71PH3juObjmGoiLc7qFSgU8Deyqfvz4ox0EffFF+3Roy5bw61/b3nlystOtUyqoaGBXdaewEN54w/bOv/wSwsPh4ovtrJbhw7X4llJ1RAO7ql3GwJIlNpi//rqtrNilC/zjH7b4Vps2TrdQqaCngV3Vjh074KWXbEDfuNHWZxk71qZa+vXTOedK1SMN7OrUlZTAggU2mH/4oX1CdNAg+POf4aqrbGVFpVS908CuTt6aNTaYz54Ne/bY2uZ//KOdc67LHCrlOA3sqnr274fXXrMzW7Ky7MDnZZfZgdALL7QDo0opv6CBXVXN7YZFi2zvfN48OHwYevaEJ56wxbeaN3e6hUqpSmhgV8f66Se74POsWbBtG5x2GkyebHvnvXo53Tql1AloYFfWoUPw9tu2d75okZ3FMnQoPPqoXfA5OtrpFiqlqsnRwC4iI4ARZ+qAmzOMgW+/tcH8tdfgwAHo0AH+9je44QZITHS6hUqpU+BoYDfGLAAWZGRkTHayHSFn1y47oyUz0y4v17ChXRt00iQYOFCLbykV4DQVEyrKyuCDD2wwf+89+/rss2H6dBgzBpo2dbqFSqlaooE92H3/vZ2i+NJL8PPP0KoV3HmnfSK0e3enW6eUqgMa2IPRgQO2TktmJnz1lZ1jfumlNtVy8cV2AWilVNDSwB4sjIEvvrDB/I037CyXbt3srJbrroPWrZ1uoVKqnmhgD3S5uUcWfN68GZo0sYF80iTo21eLbykVgjSwB6LDh+3qQ5mZdjUitxsGD4YHHrBLyzVq5HQLlVIO0sAeSFautMH8lVdg3z47z/zPf7Zzzjt2dLp1Sik/oYHd3+3bB6++agP6ihW2+NaoUTbVMmSIFt9SSh1DA7s/crngk09sMJ8/39Y9T0+Hp5+2i1c0a+Z0C5VSfkwDuz/ZvPlI8a3cXBvAb73VzjlPS3O4cUqpQKGB3WkHD8Jbb9ne+eef28f5hw2DadNgxAiIinK6hUqpAKOB3QnGwDff2GA+Zw4UFNjBz4cegvHjISHB6RYqpQKYBvb69Msv8PLLNqBv2GCnJY4ebQdCBwzQOedKqVqhgb2ulZbCwoU2mL//vh0YPeccmDHDBvUmTZxuoVIqyGhgryvr1x8pvrVrl32k/+677UBoly5Ot04pFcQ0sNem/HyYO9f2zr/5BiIi7OpDEyfCRRfZ10opVcc00tSU2w3/+58N5m++CUVF0KMHPPaYXfC5VSunW6iUCjEa2E/Vtm1Him/99BPExtpH+ydNgowMHQhVSjlGA/vJKC6Gd96xvfOPP7bTFocMgSlT7GP+DRs63UKllNLAfkLG2BotmZm2Zsv+/dCuHdx/P0yYAO3bO91CpZQ6igb2quzda6soZmbCqlX2CdArr7SplvPO0wWflVJ+SwO7L5fL1jfPzLT1zktKoE8fePZZuOYaOO00p1uolFInpIEdYNMmOwj64ouwfTu0aAG3326nKaakON06pZQ6KaEb2AsL7fTEzEy7VmhYmF3o+ckn7cLPDRo43UKllDoloRXYjYGlS23vfO5cG9w7d4a//90W32rb1ukWKqVUjYVGYN+50z7an5kJP/4IjRvDmDF2ILR/f51zrpQKKsEb2EtK4L33bO/8gw/swOjAgXDvvXD11RAT43QLlVKqTgRfYF+71vbMX34Z9uyx6ZXf/97OOe/c2enWKaVUnQuOwJ6XB6+9Znvn334LkZG2+NakSTB0qBbfUkqFlMCOeJ99Zuuaz5tnH/dPSYHHH7fFt1q0cLp1SinliMAO7NOm2amKkybZr/R0HQhVSoW8wA7szz4LzZtr8S2llPIR2IFdF31WSqljaCUrpZQKMhrYlVIqyGhgV0qpIFPrgV1EOojICyLyZm2fWyml1IlVK7CLSKaI7BKRtRXev0hEfhCRTSJyL4AxZosx5sa6aKxSSqkTq26PfRZwke8bIhIOPANcDHQHxopI91ptnVJKqZNWrcBujPkfsK/C232BTZ4eegkwB7isltunlFLqJNUkxx4P5Pi8zgXiRaS5iDwP9BKRP1Z1sIjcLCJZIpK1e/fuGjRDKaWUr1p/QMkYsxe4tRr7TQemA2RkZJjabodSSoWqmvTYtwOJPq8TPO8ppZRyUE0C+7dAJxFJEpEGwDXAu7XTLKWUUqequtMdXwO+ArqISK6I3GiMKQPuAP4LbABeN8asq7umKqWUqo5q5diNMWOreH8hsLBWW6SUUqpGHC0pICIjRGR6fn6+k81QSql6tXTzHoZO+5xdBcVHfV9bxBjnJ6RkZGSYrKwsp5uhlFJ1bunmPdw4K4sSl5u+Sc1YuS2PEpebsX3PYMrlySd1LhFZbozJqPi+FgFTSql6dN/8tRwuc+FyG77ZspeiUvv9wjU7a+0agb3QhlJKOWjp5j08+O46Zt90Fpt2FXq/b9UkGoBdB4pZsz2fNdvzWev57y8HDnuPd3sSJtGRYSfdWz8eDexKKXUKfFMqv5mzkhVb91PicnPTrCxaNY06KoiLQMeWMfTv2IKYqAjmZuVQUub2nsvlNizdtIdLUtrUSts0sCul1EnaVVDMPW+sorjMhTHw1ea93m2rt+fTsaQx/To0JyUhjpT4WLq3bUpMlA23Q6d9jsvTVY+ODMPlNpS6DAvX/syUUSm10j4N7EqpkHaidMrugsPeNMrqXJtS+fnAkRksApRPQWkQHsYjV6ZwRXrV6zHPvuksnvx0EwvX7GTK5cks3bSHhWt/5ulre9XaZ3J0VoyIjABGnHnmmZM3btzoWDuUUqGp4gyV8nRKSnwsrZpGs3Z7PjvzbRAXgaQWjUmNjyU5PhYRePS/P1BceiSlEhkujMlIrLWe94lUNStGpzsqpULS3sLDjHx6CTvyi6gsDHZo2ZiU+FjvV4/4WG86BWxKZfPug7jc5qiUSrPGDfjuvgvr5TNUFdg1FaOUCmgnSqUA7DtY4p2Zsjo3j7XbD7A9r8i7vWI65e9XJHNl70SOpz5SKqdKe+xKqYBV6cM+ZW4Gd2lJervTPIE8/6ggntTiSE9cBKZ+5Gw6pSY0FaOUCjoX/GsxW/YcxG0gTI7MCy/XvnkjkuNjSU2wefHk+FiaRkd6t/tDOqUmNBWjlPJL1UmlAOQXlbKufHbK9nzW5Oazbd8h7/byoB4RJtx+XkcmDehAbMNIjsef0yk1oT12pZRjqqqbclV6PJf3SrCplO35rMnNI3vvkSCecFpDUhNiaRIdydsrth/1sE8gpVJqSlMxSim/45sKiQgTyirmUoD4uIYkxzcl1fOwT3J8LM0aNzjm+EBMpdSUX6ZifOaxO9kMpVQ9OVRSxvodB7wP+pSUub1PYZYH9TCB4SltuKJ3AinxsbSIiaryfMGaSqkp7bErpU7JiXLjxaUu1u88wJrcI09sbtxV4M2Ft2wSReJpDVmdm39UTz2UUik15Zc9dqVUYDqmANa2/ZSWubnjlRW0b9GINdsP8OMvBd7eePPGDUhNiGVYcmtSPLNUTm8azdBpn3vnj9dV3ZRQpIFdKXVSSsrc/PGtNRwuc+E28PXmvd7gvCx7Hxt3FZCSEMeQrq28Uw3bxEYjIsecS1MpdUNTMUqpKpW53GzcVWjTKdvzWJObz4adBZS43MfsGxku3Hdpd64/u12lQVzVPk3FKKWAqnPjzRtHsWV3IatzyysZ5rF+5wHvU5lNoiJIjo9l4jntaRARxvT/beFw2dEB/sefCzSo+wHtsSsVQnxz46nxsazdkU+Zy9AyJorCkjIOlbgAaNQgnOS2saQk2FRKSnws7Zs3JizMBu1Qn2boL7THrlSIMsaQs6+I1dvzuG/+WopKbfBekZPn3WffoRKuO7udd2CzQ8sYwsOq7nlrbty/aY9dqSBijGFnfjGrc/N8Uir55BeVAhAZJkRFhlFUemT+eHREGI+NSau1ZdlU/dEeu1IB6njzxXcdKGZ17pHH7tdsz2dPYQlga6Z0ad2ES1JakxIfR2pCLPsOlnDLy8u9QR3AZWp3vU3lPF1BSSk/5psTTz8jjlU5+ZS63bSNbUiZ2+1dLDlMoFOrJkflxLu1aUp0ZPhR59PceHDRWjFKBZD8olLWbs/nN3NWsLewhIr/l4YJjOzZltQE2xPv3rYpjRqc+A/wXQXFVebG+3dsUTcfRtUZDexK+amDh8uOWix5dYVKhlERYZS63N5H8aMiwpimOXGF5tiVqhcnUz9lVa594GfT7kLvmpttY6NJSYjl6oxEUuJjOVzq4v/mrDxqAQm35sTVCWhgV6qWVFU/5devriCpRWNW5+bz4y8F3oJXLWIakJoQx/DUNt4VfiouLjF02ufepzy1loqqLg3sStUCl9vwp3k+9VO27PX2wr/5aR8//FJASnwst3TtQEp8HD0TY2ndtPL6Kb50vrg6FZpjV+okud2GrfsOeeeKl696X/7gj6/IcOG+4d25vp/WT1G1T3PsSp0CYww78otZnZPHak/9lNW5+RQUlwF2ILNH26aM6ZNIwwbhZH7507H1U37R+imqfmlgVyGpqkFOQY7qiVd84KdrmyaM6NmWngmxpMTH0fn0GCLCwwCbDy/Pn2s+XDlJUzEq5HgHOcvcdGkdw4+/FOJyGxo2CPcWwfJ94KdnQiwpCXF0bd3kmAd+fOkccVXfdB67CmmHSspYu/0Aq3PzeOLTjd5Uiq8G4WH8/qIupCbE0aNtUxpH6R+0yr/5ZY5dF7NWdeFwmYvvdxawOjePVZ6UyqZdhd654Kc3iSIyPIwDRaVHpU4eG60P/ajg4GhgN8YsABZkZGRMdrIdKnC53IaNuwpYnWNX+Fmdm8+GnQcodR291ubFyXaueGpCHBt3FXDjrKyjFlB2ufWhHxU89G9N5XeqGthsGRPF1r2HWFXFNMMmURGkJMQyaUASPT01VOLjGh4zI2XcjK/1oR8V1DTHrvyK79ObaYmxrMk9QKnLzelNozhU4uJAhWmGqQn2YZ/UhDiSfFb4OR4d5FTBQgdPlV/bf7CEVbl53PX6KvYdPLaaYXiYMDojkZ6edEqn02OI9EwzVCpU+eXgqQpN5dUMV3sKYa3KzSNnX5F3e3RkGKVlBpfRFX6UOhUa2FWdOtEMlfi4hvRMjGXcWe1ITYilqMTFHa+uwGWOPL2pK/wodXI0sKtqO1FJWpfbsHl3IatyjgxubthZ4B2o9J2hUp4XbxETddQ1tJqhUjWnOXZVLb6Dmn2TmrFy235Kygz9z2xG19ZNWZWbz7rt+Rz0PLkZExVBcnxTeibGHXeGSkU6sKlU9engqaqRIf9azE97DuI29nF734UfGkSE0b1NU+/AZs/EWDq0iKnWDBWl1KnTwVNVbQXFpd5l2srTKtvzjgxulgf1iDDh7qFdmDQgiQYROkNFKX+hgT3ElQ9ursrNY1WOnaWy2WeptjOaNaLXGXGc16Ulry/PpcSnJK0I5O4/pEFdKT+jgT2EuMsHN7098aMHN1vENKBnQhwje7b1Pn7frHEDwA5qurQkrVIBQYuABbDjzVIpXyBiVU6epzduH78vPGyf3IyJiiAlPpaJA9qTlhBHamIcbWOrXqpNl2hTKnDo4GmAqjhLZcW2/ZSUuUluG0vLJlGsys3zLhDRIDyMbm2PDG6m6eCmUkFBB0+DSFGJiz+8uZriMhfGwNeb93ofwV+9PZ9OrWIY3KUVPRNi6ZkYR5fWTYiKqHqBCKVUcNHA7ufKXG5+/KXQm05ZlZvPj78UePPdAt6g3iA8jEeuTOGK9ATH2quUcp4Gdj9ijCFnXxErPUG8fM3N4lI7uBnXKJKeCXFc2K0VURFhPLVoE8U+s1QMhu+27tfArlSI08DuoD2Fh1mdm8fKHPv4/aqcPPYfKgVsWdrk+Fiu7duOnomxpCXGcUazRt7BzaHTPqdUZ6kopSqhgb2elFc0XOUphrUqJ4/c/fahnzCBzqc3YWj31vYR/MRYOp/e5LhlaXWWilKqKjorpoYqm3I4a2Jf9nnqi6/2PPTz4y8F3ic2E05rSM/EONIS4uiZqAsnK6VOjdaKqQN2yuG3lJS56dAyhi17DuJym6NqqZzWKJKeiXHeaYaVVTRUSqlTodMda8newsOs8uTFZ3yxhSLPwObGXYXefRqEh/HPq3uSlhBHYrMTVzRUSqnapIH9OIpKXKzdYfPhK3OOXuknTKBDi8YcKC5j/6ESSl1HBjIfG62r/SilnKOB3cPlNmzcVeAJ4jaY/+AzX7x8pZ/rz25Hz4Q4kuNjWZWbx42zsrxBvfw8utqPUspJIRnYjTHszC+2vXBPb3zN9nwOeRaJaBIdQVpiHLd17UhaYhypibHeVYJ8PfjuOl3tRynld0IisOcXlXrnia/0zFLZXXAYOFJH5ereCaSdYVf7ad+8cbXqqOiUQ6WUPwrYWTFVVTaMbRjJhp02pbIqJ4+VuXls2X3Qe1yHlo1JS4jzBvGubbSOilIqMAXVdEffyoYp8bGs25FPmcvQrHEDCorLfOqLR5GWGEcvTxBPSYgltmFkXX0MpZSqV0E13bE8t+1yG1bm5Hnfzy8q5caBSd4Hf9ocp764UkoFq4AM7LNvPIvfzF1JVva+I9MMI8J4bIxOM1RKKUcXqxSRESIyPT8//6SO27S7kJXb8o6eZmjsNEOllAp1jgZ2Y8wCY8zNsbGxJ3VcxWmGkeHinWaolFKhLiCXl59901mM7XsGzRo34LHRaYzJSKRZ4wY6zVAppQjQWTFKKaWqnhUTkD12pZRSVdPArpRSQUYDu1JKBRkN7EopFWQ0sCulVJDxi1kxIrIb2Op0OxwUC5zcU1qhIVTuS6B/zkBpvz+2s6ZtameMaVnxTb8I7KFORKYbY252uh3+JlTuS6B/zkBpvz+2s67apKkY/7DA6Qb4qVC5L4H+OQOl/f7Yzjppk/bYlVIqyGiPXSmlgowGdqWUCjIa2JVSKsgE5EIbCkSkMfAsUAIsNsa84nCTVD3Sn786Hu2x1wIRCReRFSLyXg3OkSkiu0RkbSXbLhKRH0Rkk4jc63n7CuBNY8xkYOSpXlfVjIjEicibIvK9iGwQkX6neB79+atao4G9dvwG2FDZBhFpJSJNKrx3ZiW7zgIuquT4cOAZ4GKgOzBWRLoDCUCOZzfXKbdc1dQTwIfGmK5ATyr8O9Cfv3KCBvYaEpEEYDgwo4pdzgXmi0iUZ//JwFMVdzLG/A/YV8nxfYFNxpgtxpgSYA5wGZCL/Z8b9OfoCBGJBQYBLwAYY0qMMXkVdtOfv6p3+g+i5h4Hfg+4K9tojHkD+C8wV0TGAZOAq0/i/PEc6ZmB/R86HpgHXCkiz+GfD16EgiRgNzDTk4qb4cl9e+nPXzlBB09rQEQuBXYZY5aLyOCq9jPG/FNE5gDPAR2NMYU1vbYx5iAwsabnUTUSAaQDvzbGfCMiTwD3Avf57qQ/f1XftMdeM+cAI0UkG/sn8vkiMrviTiIyEEgG3gYeOMlrbAcSfV4neN5TzssFco0x33hev4kN9EfRn7+qbxrYa8AY80djTIIxpj1wDbDIGHOd7z4i0guYjs2LTgSai8iUk7jMt0AnEUkSkQae67xbKx9A1Ygx5mcgR0S6eN4aAqz33Ud//soJGtjrXiNgtDFmszHGDYynkhLFIvIa8BXQRURyReRGAGNMGXAHNk+7AXjdGLOu3lqvTuTXwCsishpIAx6usF1//qreaREwpZQKMtpjV0qpIKOBXSmlgowGdqWUCjIa2JVSKshoYFdKqSCjgV0ppYKMBnallAoyGtiVUirIaGBXSqkg8/8BuKVCJJwmm8IAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ordre effectif de convergence:  1.0864700595381995\n"
     ]
    }
   ],
   "source": [
    "def f3(x):\n",
    "    return (np.exp(x)-np.exp(1))**(5/2)\n",
    "\n",
    "def df3(x):\n",
    "    return 5/2*np.exp(x)*(np.exp(x)-np.exp(1))**(3/2)\n",
    "\n",
    "x, nbiter, listx = newton(f3,df3,10,1e-16,15)\n",
    "print(listx)\n",
    "\n",
    "xsol = 1.\n",
    "Erreur = np.array([abs(x - xsol) for x in listx])\n",
    "\n",
    "plt.loglog(Erreur[:-1],Erreur[1:],'X-',label = 'méthode de Newton - $F_3$')\n",
    "plt.loglog(Erreur[:-1],Erreur[:-1]**2,'r',label = 'droite de pente 2')\n",
    "plt.legend()\n",
    "plt.title(\"Courbes de convergence\")\n",
    "plt.show()\n",
    "\n",
    "fit = np.polyfit(np.log(Erreur[10:12]), np.log(Erreur[11:13]), 1)\n",
    "print('Ordre effectif de convergence: ', fit[0])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Application à la résolution d'un problème\n",
    "Détermination approchée du paramètre $\\lambda\\in[0,10]$ tel que $\\int_0^1 \\sin(\\lambda e^{x^2})dx = 1/2$."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Il s'agit de résoudre $F(\\lambda)=1/2$ avec $F(\\lambda)=\\int_0^1 \\sin(\\lambda e^{x^2})dx*$.  \n",
    "On a en particulier $F\\in\\mathcal{C}^1([0,10])$ avec $F'(\\lambda)=\\int_0^1 e^{x^2}\\cos(\\lambda e^{x^2})dx$.  \n",
    "La méthode de Newton appliquée à ce problème prend la forme :\n",
    "$$ \\lambda_{n+1} = \\lambda_n - F(\\lambda_n)/F'(\\lambda_n).$$\n",
    "Dans cette itération, nous pouvons calculer les intégrales qui interviennent de façon approchée par une quadrature maison ou par la fonction `scipy.integrate.quad`.\n",
    "\n",
    "Une alternative est de considérer la méthode de Newton, appliquée à une approximation de $F$:\n",
    "$$ \\lambda_{n+1} = \\lambda_n - F_N(\\lambda_n)/F'_N(\\lambda_n), $$\n",
    "avec par exemple $F_N(\\lambda_n)$ l'approximation obtenue par la méthode des rectangles à gauche."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def f(x):\n",
    "    return np.sin(lam*np.exp(x**2))\n",
    "\n",
    "def df(x):\n",
    "    return np.exp(x**2)*np.cos(lam*np.exp(x**2))\n",
    "\n",
    "N = 500\n",
    "X = np.linspace(0,1,N)\n",
    "Lam = np.linspace(0,10,100)\n",
    "Integral = []\n",
    "for lam in Lam:\n",
    "    I=(X[1]-X[0])*np.sum(f(X))\n",
    "    Integral.append(I)\n",
    "\n",
    "plt.plot(Lam,Integral,Lam,0.5*np.ones_like(Lam));\n",
    "plt.title('Approximation de $F(\\lambda)$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-----------------\n",
      "quadrature N= 100\n",
      "solution1= 1.6952363645841573\n",
      "solution2= 0.35954377806477567\n",
      "-----------------\n",
      "quadrature N= 500\n",
      "solution1= 1.6952564969396222\n",
      "solution2= 0.3635314371366633\n",
      "-----------------\n",
      "quadrature N= 1000\n",
      "solution1= 1.695258138658196\n",
      "solution2= 0.3640305940763186\n",
      "-----------------\n",
      "quadrature N= 5000\n",
      "solution1= 1.6952593147966903\n",
      "solution2= 0.3644300320538716\n",
      "-----------------\n",
      "quadrature N= 10000\n",
      "solution1= 1.695259453266675\n",
      "solution2= 0.3644799688338149\n"
     ]
    }
   ],
   "source": [
    "for N in [100,500,1000,5000,10000] :\n",
    "\n",
    "    print('-----------------')\n",
    "    print('quadrature N=',N)\n",
    "\n",
    "    lam = 2\n",
    "    for p in range(15): # nombre fixé d'itérations de Newton\n",
    "        X = np.linspace(0,1,N)\n",
    "        Y = f(X)\n",
    "        DY = df(X)\n",
    "        F = (X[1]-X[0])*np.sum(Y)-0.5\n",
    "        DF = (X[1]-X[0])*np.sum(DY)\n",
    "        lam = lam - F/DF\n",
    "    print('solution1=',lam)\n",
    "\n",
    "    lam = 0.5\n",
    "    for p in range(15): # nombre fixé d'itérations de Newton\n",
    "        X = np.linspace(0,1,N)\n",
    "        Y = f(X)\n",
    "        DY = df(X)\n",
    "        F = (X[1]-X[0])*np.sum(Y)-0.5\n",
    "        DF = (X[1]-X[0])*np.sum(DY)\n",
    "        lam = lam - F/DF\n",
    "    print('solution2=',lam)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "------------------\n",
      "quadrature de scipy\n",
      "solution1= 1.6952595898406824\n",
      "solution2= 0.3645299071773117\n"
     ]
    }
   ],
   "source": [
    "from scipy.integrate import quad\n",
    "\n",
    "print('------------------')\n",
    "print('quadrature de scipy')\n",
    "\n",
    "lam = 2\n",
    "for p in range(15): # nombre fixé d'itérations de Newton\n",
    "    F = quad(lambda x: f(x)-0.5,0,1)[0]\n",
    "    DF = quad(lambda x: df(x),0,1)[0]\n",
    "    lam = lam - F/DF\n",
    "print('solution1=',lam)\n",
    "\n",
    "lam = 0.5\n",
    "for p in range(15): # nombre fixé d'itérations de Newton\n",
    "    F = quad(lambda x: f(x)-0.5,0,1)[0]\n",
    "    DF = quad(lambda x: df(x),0,1)[0]\n",
    "    lam = lam - F/DF\n",
    "print('solution2=',lam)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "### Variante de la méthode du programme pour le cas de systèmes d'équations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def newton_system(f,df,x0,eps,Nmax):\n",
    "    tol = 1\n",
    "    nbiter = 0\n",
    "    listx = []\n",
    "    xt, x = x0, x0\n",
    "    listx.append(x)\n",
    "    while (tol>eps) and (nbiter<Nmax):\n",
    "        nbiter += 1\n",
    "        x = x - np.linalg.solve(df(x),f(x))\n",
    "        listx.append(x)\n",
    "        tol = np.linalg.norm(x-xt)\n",
    "        xt = x\n",
    "    return x, nbiter, listx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.22474487 0.70710678]\n"
     ]
    }
   ],
   "source": [
    "def f(x):\n",
    "    return np.array([x[0]**2 + x[1]**2 - 2, x[0]**2 - x[1]**2 - 1])\n",
    "\n",
    "def df(x):\n",
    "    return np.array([ [2*x[0], 2*x[1]],\n",
    "                      [2*x[0], -2*x[1]]  ])\n",
    "\n",
    "x0 = np.array([2,4])\n",
    "x, nbiter, listx = newton_system(f,df,x0,1e-16,12)\n",
    "print(x)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Représentation graphique des solutions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.22474487 0.70710678]\n",
      "[ 1.22474487 -0.70710678]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t1 = np.linspace(0,2*np.pi,100)\n",
    "t2 = np.linspace(-1.5,1.5,100)\n",
    "plt.plot(np.sqrt(2)*np.cos(t1),np.sqrt(2)*np.sin(t1),'b')\n",
    "plt.plot(np.cosh(t2),np.sinh(t2),'r',-np.cosh(t2),np.sinh(t2),'r')\n",
    "\n",
    "x0 = np.array([2,4])\n",
    "x, nbiter, listx = newton_system(f,df,x0,1e-16,12)\n",
    "print(x)\n",
    "plt.plot([listx[i][0] for i in range(len(listx))],[listx[i][1] for i in range(len(listx))],'gx-')\n",
    "\n",
    "x0 = np.array([3,-1])\n",
    "x, nbiter, listx = newton_system(f,df,x0,1e-16,12)\n",
    "print(x)\n",
    "plt.plot([listx[i][0] for i in range(len(listx))],[listx[i][1] for i in range(len(listx))],'yo-')\n",
    "\n",
    "plt.legend(['equation1','equation2'])\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Problème aux limites non-linéaire"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.008071603285269 \t 1.0040276904859895\n",
      "0.001703998767481174 \t 0.041279520084716026\n",
      "6.0442681970585e-09 \t 7.755452008328945e-05\n",
      "9.103695575163329e-11 \t 2.7976732042134245e-10\n",
      "1.0860956578540026e-10 \t 1.3722356584366935e-13\n",
      "1.0181455678548446e-10 \t 8.126832540256146e-14\n",
      "1.2233503099423615e-10 \t 2.1360690993788012e-13\n",
      "8.18984879913387e-11 \t 6.683542608243442e-14\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "N = 199\n",
    "X = np.linspace(0,1,N+2)\n",
    "\n",
    "def v(x):\n",
    "    return 1+np.cos(np.pi*x)**2\n",
    "V = v(X)\n",
    "\n",
    "V_int = V[1:-1]\n",
    "MAT_Laplacien = (-2*np.diag(V_int[:],0)+np.diag(V_int[1:],1)+np.diag(V_int[:-1],-1))*(N+1)**2\n",
    "\n",
    "UG = 1\n",
    "UD = 2\n",
    "\n",
    "def F(U):\n",
    "    FU = MAT_Laplacien @ U - np.array([u**2 for u in U])\n",
    "    FU[0] += (N+1)**2*UG*V[0]\n",
    "    FU[-1] += (N+1)**2*UD*V[-1]\n",
    "    return FU\n",
    "\n",
    "def DF(U):\n",
    "    return MAT_Laplacien - 2*np.diag(U)\n",
    "\n",
    "# Initialisation (choix de la fonction affine entre les conditions aux limites)\n",
    "U = 1 + X\n",
    "plt.plot(X,U)\n",
    "Uint = U[1:-1]\n",
    "\n",
    "for p in range(8): # nombre fixé d'itérations de Newton\n",
    "    Uint = U[1:-1]\n",
    "    Unew = Uint - np.linalg.solve(DF(Uint),F(Uint))\n",
    "    print(np.linalg.norm(F(Unew),np.inf),'\\t',np.linalg.norm(Uint-Unew,np.inf))\n",
    "    U = np.concatenate(([UG],Unew,[UD]),axis=0)\n",
    "    plt.plot(X,U)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "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.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}