{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": "IPython.notebook.set_autosave_interval(300000)"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Autosaving every 300 seconds\n"
     ]
    }
   ],
   "source": [
    "from IPython.display import display, Latex\n",
    "from IPython.core.display import HTML\n",
    "%reset -f\n",
    "%matplotlib inline\n",
    "%autosave 300\n",
    "from matplotlib.pylab import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# M25 - Cours 1\n",
    "## Introduction Jupyter Notebook\n",
    "Le document présenté ici est au format \".ipynb\" pour profiter d'un document qui contient aussi bien des écritures scientifiques que des codes python3 exécutables. Le but de ces documents est de les rendre lisibles et dynamiques. Les mathématiques seront rédigées dans des cellules \"Markdown\" et les codes python3 dans des cellules \"Code\". \n",
    "\n",
    "### Installation Jupyter\n",
    "Pour installer Jupyter, le plus simple est d'installer Anaconda (quel que soit le système) puis de lancer l'outil Jupyter Notebook à travers la suite de logiciels proposée.\n",
    "Le lien pour Anconda est le suivant\n",
    "https://www.anaconda.com/products/individual\n",
    "\n",
    "**En salle machine de l'université, il convient d'ouvrir une fenêtre terminal puis de lancer le logiciel en tapant \"jupyter notebook &\" suivi d'\"entrée\".**\n",
    "\n",
    "### Premiers pas\n",
    "L'exécution des cellules (\"Markdown\" et \"Code\") s'obtient en cliquant sur le bouton \"Exécuter\". Pour éditer le code source Markdown, s'il est déjà exécuté (le rendu est lisible par tous, y compris les formules mathématiques), il suffit de doubleclicker sur le texte scientifique (la cellule Markdown). Les formules mathématiques sont alors lisibles dans un language (Markdown) proche de celui de Latex. Une initiation plus pousée peut se trouver sur le web. Quelques points sont abordés ici. On remarque déjà l'utilisation de \\# pour structurer section sous-section...\n",
    "\n",
    "#### Faire un tableau\n",
    "| Titre 1       |     Titre 2     |        Titre 3 |\n",
    "| :------------ | :-------------: | -------------: |\n",
    "| Colonne       |     Colonne     |        Colonne |\n",
    "| Alignée à     |   Alignée au    |      Alignée à |\n",
    "| Gauche        |     Centre      |         Droite |\n",
    "\n",
    "#### Ecrire des Mathématiques\n",
    "Les formules mathématiques en ligne sont encadrées par des $\\$$, les formules centrées sont encadrées par des doubles $\\$$.\n",
    "Les exemples qui suivent permettent de comprendre la gestion des indices, exposants, fraction, intégrale, systèmes... Pensez à basculer du source à l'exécution de la cellule pour comprendre.\n",
    "\n",
    "Voici la fonction $x \\to \\sin x$ définie de $\\mathbb R$ dans $[-1,1]$.\n",
    "\n",
    "Voici une formule centrée avec des indices, des exposants et une fraction. Les acollades ouvrante et fermante servent à délimiter un bloc qui pourra être placé en indice, en exposant, au numérateur ou dénominateur d'une fraction... Si le bloc ne contient qu'un seul caractère, on peut omettre les acollades.\n",
    "$$\n",
    " x_{n+1} = -x_n+2 x_n^2+\\frac {12}{2+x_n }.\n",
    "$$\n",
    "Voici une intégrale,\n",
    "$$\n",
    "\\int_{0}^{\\pi}\\cos (x) \\, dx=[\\sin (x)]_0^{\\pi}=0.\n",
    "$$\n",
    "Voici comment présenter un système... une façon parmi d'autres:\n",
    "$$\n",
    "\\begin{cases}\n",
    "x_0 = 1\\\\\n",
    "    \\text{pour } n \\geq 0, \\quad x_{n+1} = -x_n+\\frac 3 {|x_n|+2},\\\\\n",
    "    \\text{on peut rajouter autant de ligne que l'on souhaite.}\n",
    "\\end{cases}\n",
    "$$\n",
    "### Cellules de code\n",
    "On remarque qu'en haut à droite, le language python 3 est selectionné, les cellules de code seront écrites en ce language. Les cellules de code peuvent être nombreuses dans un tel document et l'ordre d'exécution est choisie par la personne qui manipule de document. Les grandeurs calculées restent en mémoire vive. Les cellules peuvent donc s'enchainer les unes aux autres en s'appuyant sur les résultats antérieurs. Il est recommandé de respecter l'ordre chronologique d'exécution en suivant l'avancement du document. Ce document est donc dynamique et peut planter si le code exécuté est faux ou ne pas rendre la main dans une cellule si une boucle infinie est présente. Les autres cellules ne pourront plus s'exécuter, il faudra alors interompre le noyau avec le bouton carré au centre du bandeau (à droite \"d'Exécuter\"). Il faudra alors relancer les cellules car toute l'information en mémoire vive a été perdue. Plusieurs options sont possible sur les boutons \"Cellule\" et \"Noyau\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\n"
     ]
    }
   ],
   "source": [
    "#exemple de calcul \n",
    "L=[i**2 for i in range(10)]\n",
    "print(L)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On profite de cette cellule Markdown pour rappeler qu'on vient de faire une liste de compréhension dans la cellule de code précédente. La prochaine cellule de code va permettre de calculer la somme des carrés des 10 premiers entiers en se servant de la cellule précédente déjà exécutée. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "La somme des carrés des 10 premiers entiers  positifs est 285 .\n"
     ]
    }
   ],
   "source": [
    "print(\"La somme des carrés des 10 premiers entiers  positifs est\",sum(L),\".\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Rappel de la formule de Taylor\n",
    "On suppose une fonction $f$ de $\\mathbb R$ dans $\\mathbb R$ de classe $\\mathbf C^{k+1}$,\n",
    "Pour comparer cette fonction $f$ à un polynôme $p$ au voisinage de $x_0\\in \\mathbb R$, on dispose de la formule de Taylor, proposée ici avec reste de Lagrange. \n",
    "$$\n",
    "\\begin{cases}\n",
    "\\exists \\xi \\in [\\min(x,x_0),\\max(x,x_0)] \\text { tel que,}\\\\\n",
    "f(x)=p(x)+\\frac {f^{(k+1)}(\\xi)}{(k+1)!}(x-x_0)^{k+1}\\\\\n",
    "p(x)=f(x_0)+f'(x_0)(x-x_0)+\\frac {f''(x_0)}{2}(x-x_0)^2+\\cdots+\\frac {f^{(k)}(x_0)}{k!}(x-x_0)^k.\n",
    "\\end {cases}\n",
    "$$\n",
    "Si on applique cette formule pour la fonction $\\sin$ au voisinage de $0$ pour $k=4$, on a\n",
    "$$\n",
    "p(x)=x-\\frac {x^3}{6}.\n",
    "$$\n",
    "On va d'abord comparer le graphe des deux fonctions au voisinage de $0$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "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 p(x):\n",
    "    return x-x**3/6\n",
    "absc=linspace(-pi,pi,200)\n",
    "ord_f=sin(absc)\n",
    "ord_p=p(absc)\n",
    "plot(absc,ord_f,absc,ord_p);\n",
    "grid();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On constate que les deux graphes sont presque superposés. On va calculer l'erreur pour la norme du $\\sup$ entre $f$ et $p$ sur des voisinages $]-\\varepsilon, \\varepsilon[$ de plus en plus petit et observer l'erreur en $\\mathcal O(\\varepsilon^5)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0 0.008137651474563135\n",
      "0.5 0.0002588719375363202\n",
      "0.25 8.125921189594543e-06\n",
      "0.125 2.542185610215908e-07\n",
      "0.0625 7.946546864978643e-09\n",
      "0.03125 2.483469124792137e-10\n",
      "0.015625 7.760975889725685e-12\n",
      "0.0078125 2.425316891763174e-13\n",
      "0.00390625 7.57900686654267e-15\n",
      "0.001953125 2.3678975447083417e-16\n"
     ]
    }
   ],
   "source": [
    "def erreur(eps):\n",
    "    pts=linspace(-eps,eps,1000)\n",
    "    return max(abs(sin(pts)-p(pts)))\n",
    "\n",
    "epstab=[]\n",
    "erreurtab=[]\n",
    "eps=2\n",
    "for loop in range (10):\n",
    "    eps*=0.5\n",
    "    print(eps,erreur(eps))\n",
    "    epstab.append(eps)\n",
    "    erreurtab.append(erreur(eps))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Il est intéressant de regarder l'erreur en fonction de $\\varepsilon$ en échelle logarithmique car le log de l'erreur (erreur censée être en $O(\\varepsilon^5)$) doit s'écrire $C+5\\log (\\varepsilon)$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fc90977ba20>]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc90977b978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eps_arr=array(epstab)\n",
    "err_arr=array(erreurtab)\n",
    "plot(log(eps_arr),log(err_arr),log(eps_arr),log(eps_arr**5))\n",
    "plot(log(eps_arr),log(err_arr),'o')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Le parallélisme de ces deux droites de pente $5$ nous confirme le comportement de l'erreur au voisnage de $0$ entre la fonction $\\sin$ et son polynôme obtenu par le développement limité à l'ordre $4$.\n",
    "\n",
    "## Polynôme de Lagrange\n",
    "On s'intéresse à de nouvelles approximation de fonction à l'aide de polynôme, en s'appuyant sur plusieurs points du graphe de la fonction, mais cette fois sans tenir compte des dérivées.\n",
    "\n",
    "**Exemple:** On veut interpoler les points d'un graphe suivants: $(1,2)$, $(2,0)$, $(3,0)$, $(4,0)$. On cherche un degré minimal pour selectionner un polynôme candidat $p$.\n",
    "On remarque que ce polynôme $p$ est factorisable à l'aide des points d'annulation ($p(2)=p(3)=p(4)=0$). On a $p(x)=(x-2)(x-3)(x-4)q(x)$. On va choisir $q$ constant pour limiter le degré et assurer $p(1)=2$. On a $p(1)=-6 q(1)$. On trouve $q=\\frac {-1} 3$.\n",
    "\n",
    "Soit $n+1$ points de $\\mathbb R^2$ de coordonnées $(x_i,f_i=f(x_i))$, $i=0\\cdots n$, avec $x_i\\neq x_j$ si $i\\neq j$.\n",
    "On cherche à interpoler $f$ par un polynôme $p$:\n",
    "\n",
    "**Théorème :**\n",
    "Il existe un unique polynôme $p$ de degré au plus $n$ tel que \n",
    "$$ \\forall 0\\le i\\le n,\\quad p(x_i)=f_i.$$\n",
    "Le polynôme $p$ s'appelle le polynôme de Lagrange (associé aux points $(x_i,f_i=f(x_i))$, $i=0\\cdots n$). On dira que $p$ interpole $f$ en $x_i$, $i=0\\cdots n$.\n",
    "\n",
    "Preuve: on note $l_i$ le polynôme défini par \n",
    "$$\n",
    "l_i(x)=\\frac {\\displaystyle \\prod_{\\begin {array} c j=0\\cdots n\\\\j\\neq i\\end {array}}(x-x_j)}{\\displaystyle \\prod_{\\begin {array} c j=0\\cdots n\\\\j\\neq i\\end {array}}(x_i-x_j)}.\n",
    "$$\n",
    "On remarque que $l_i$ est de degré $n$ et que \n",
    "$$\n",
    "l_i(x_j)=\\delta_{ij}.\n",
    "$$\n",
    "On rappelle que l'espace vectoriel $\\mathbb P_n$ des polynômes de degré au plus $n$ est de dimension $n+1$. La famille $(l_i)_{i=0\\cdots n}$ est une famille libre de $P_n$: si,\n",
    "$$\n",
    "\\forall x\\in \\mathbb R,\\quad \\sum_{i=0}^n \\alpha_i l_i(x)=0,\n",
    "$$\n",
    "alors, en choisissant $x=x_j$ pour tout $j=0\\cdots n$, on a $\\alpha_i l_i(x_j)=\\alpha_i\\delta_{ij}$, donc $\\sum_{i=0}^n \\alpha_i l_i(x)=\\alpha_j=0$.\n",
    "\n",
    "La famille $(l_i)_{i=0\\cdots n}$ constituée de $n+1$ éléments est donc libre et constitue une base de $\\mathbb P_n$. Ainsi, pour tout $q\\in \\mathbb P_n$, $q$ se décompose de façon unique  sur la base $(l_i)_{i=0\\cdots n}$. Finalement, le poynôme $ p=\\sum_{i=0}^n f_i l_i$ est l'unique polynôme de $\\mathbb P_n$ tel que $p(x_i)=f_i$ pour $i=0\\cdots n$.\n",
    "\n",
    "### Estimation d'erreur d'interpolation\n",
    "Soit une fonction $f$ donnée, et soit $p$ le polynôme de Lagrange interpolant  $f$ en $x_i$, $i=0\\cdots n$, $x_0<x_1<\\cdots<x_n$. On cherche à quantifier l'écart entre $f$ et $p$ en fonction de $x$ afin de mesurer l'erreur d'interpolation.\n",
    "\n",
    "**Théorème:**\n",
    "On suppose que $x_i\\in [a,b]$ pour $i=0\\cdots n$.\n",
    "\n",
    "Si $f$ est $C^{n+1}([a,b])$, alors il existe $\\xi\\in [\\min(x,x_0),max(x,x_n)]$ tel que \n",
    "$$\n",
    "f(x)-p(x)= \\prod_{i=0}^n \\frac{(x-x_i)}{(n+1)!}f^{(n+1)}(\\xi).\n",
    "$$\n",
    "\n",
    "\n",
    "Remarque: si les points $x_i$ sont voisins,  le produit $\\prod_{i=0}^n (x-x_i)$ est petit pour $x\\in [\\min(x_i),\\max(x_i)]$. On pourrait alors être tenté d'augmenter le nombre de points d'interpolation pour réduire l'erreur, mais l'erreur croît avec l'étalement des points d'interpolation et le facteur $\\frac {f^{(n+1)}(\\xi)}{(n+1)!}$ peut croître (comme décroître) selon $f$.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# M25-Cours 2\n",
    "## Notion de Différences finies \n",
    "### Approximation de la dérivée\n",
    "On peut calculer, à partir de la définition du nombre dérivée $$f^\\prime(x_0)=\\lim_{h\\to 0} \\frac {f(x_0+h)-f(x_0)}{h},$$ une approximation de $f^\\prime(x_0)$ en évaluant le taux d'accroissement pour $h$ \"petit\". \n",
    "\n",
    "Exemple $h=10^{-3}$, $f'(x_0)\\sim \\frac {f(x_0+h)-f(x_0)}{h}$.\n",
    "A l'aide du développement limité de $f$ en $x_0$, on peut estimer l'erreur commise:\n",
    "$$\n",
    "f(x_0+h)   =  f(x_0) +  f'(x_0)h+\\frac {h^2} 2 f''(x_0)+O(h^3).\n",
    "$$\n",
    "On remarque que \n",
    "$$\n",
    "f(x_0+h)   -  f(x_0) =f'(x_0)h+ O(h^2),\n",
    "$$\n",
    "Soit, après division par $h$,\n",
    "$$\n",
    "f'(x_0)=\\frac {f(x_0+h)-f(x_0)}{h}+O(h).\n",
    "$$\n",
    "On peut chercher une formule plus précise, en se servant d'autres points pour écrire le développement en $x_0$:\n",
    "$$\n",
    "f(x_0-h)   =  f(x_0) -  f'(x_0)h+\\frac {h^2} 2 f''(x_0)+O(h^3).\n",
    "$$\n",
    "Par différence des développements en $x_0-h$ et $x_0+h$, on obtient:\n",
    "$$\n",
    "f(x_0+h) -f(x_0-h)   =  2  f'(x_0)h+0 f''(x_0)+O(h^3).\n",
    "$$\n",
    "On a ainsi trouvé une formule plus précise pour approcher la dérivée en un point à l'aide de l'évaluation de la fonction enseulement 2 points:\n",
    "$$\n",
    "f'(x_0)=\\frac {f(x_0+h)-f(x_0-h)}{2h}+O(h^2).\n",
    "$$\n",
    "### Approximation de la dérivée seconde\n",
    "De la même manière que ce qui a été fait pour approcher la dérivée, on peut établir que\n",
    "$$\n",
    "f^{\\prime \\prime}(x_0) =\\lim_{h\\to 0} \\frac {f(x_0+h)-2f(x_0)+f(x_0-h)}{h^2}\n",
    "$$\n",
    "et plus précisément:\n",
    "$$\n",
    "f^{\\prime \\prime}(x_0) = \\frac {f(x_0+h)-2f(x_0)+f(x_0-h)}{h^2}+O(h^2).\n",
    "$$\n",
    "(preuve en TP).\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "erreur pour h= 0.1 : 0.0009000536983791996\n",
      "erreur pour h= 0.01 : 9.004993400729688e-06\n",
      "erreur pour h= 0.001 : 9.00503946965614e-08\n",
      "erreur pour h= 0.0001 : 9.004295087322589e-10\n"
     ]
    }
   ],
   "source": [
    "#approximation de la dérivée de sin en 1 (exacte=cos(1))\n",
    "def fpri(x,h):\n",
    "    return 0.5*(sin(x+h)-sin(x-h))/h\n",
    "h=1.e-1\n",
    "print('erreur pour h=',h,':',abs(cos(1)-fpri(1,h)))\n",
    "h=1.e-2\n",
    "print('erreur pour h=',h,':',abs(cos(1)-fpri(1,h)))\n",
    "h=1.e-3\n",
    "print('erreur pour h=',h,':',abs(cos(1)-fpri(1,h)))\n",
    "h=1.e-4\n",
    "print('erreur pour h=',h,':',abs(cos(1)-fpri(1,h)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On constate bien que l'erreur est 100 fois plus petite quand $h$ est 10 fois plus petit d'où le comportement de l'erreur en $O(h^2)$.\n",
    "## Formule de quadrature\n",
    "On vient de voir que l'on sait approcher une dérivée, on va maintenant essayer d'approcher une intégrale.\n",
    "L'objectif ici est de proposer un calcul approché d'intégrale sans avoir à intégrer la fonction considérée, chose que l'on ne sait pas toujours faire. Exemple, savez-vous calculer l'intégrale suivante?\n",
    "$$\n",
    "\\int_{0}^{1} e^{-x^2}\\, dx \n",
    "$$\n",
    "En effet, on ne connaît pas la primitive de la fonction $e^{-x^2}$.  \n",
    "\n",
    "L'idée du calcul approché repose sur ce qu'on nome une **formule de quadrature** et qui prend la forme\n",
    "$$\n",
    "\\sum_{k=0}^n A_k f(x_k),\n",
    "$$\n",
    "où les points $(x_k)_{0\\le k \\le n}$ sont répartis sur l'intervalle d'intégration $[a,b]$ et les poids $(A_k)_{0\\le k \\le n}$ sont choisis de façon pertinente pour approcher (lorsque $n$ est grand) l'intégrale\n",
    "$$\n",
    "\\int_a^b f(x)\\, dx.\n",
    "$$\n",
    "Les coefficients $(A_k)_{0\\le k \\le n}$ et les points $(x_k)_{0\\le k \\le n}$ changent bien-sûr lorsque $n$ change.\n",
    "### Un premier exemple de formule de quadrature\n",
    "La première idée qui vient à l'esprit pour approcher l'intégrale est d'approcher $f$ par une fonction constante par morceau et de calculer la somme des surfaces des rectangles (batonnets) proposés sur le graphe suivant. La surface verte est proche de la surface sous la courbe rouge."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa7533238d0>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa7520d8ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "NB=11\n",
    "x = linspace(0,1,NB)\n",
    "pas=1/(NB-1)\n",
    "xfin = linspace(0,1,200)\n",
    "hei=sin(xfin) \n",
    "height = sin(x-pas/2)\n",
    "width= 1/(NB-1)\n",
    "plt.bar(x,height, width, color='g')\n",
    "plot(xfin,hei,'r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa75520d898>]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa755204a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "NB=41\n",
    "x = linspace(0,1,NB)\n",
    "pas=1/(NB-1)\n",
    "xfin = linspace(0,1,200)\n",
    "hei=sin(xfin) \n",
    "height = sin(x-pas/2)\n",
    "width= 1/(NB-1)\n",
    "plt.bar(x,height, width, color='g')\n",
    "plot(xfin,hei,'r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On peut choisir de prendre pour hauteur du batonnet l'évaluation de la fonction à droite du batonnet et non à gauche comme sur le précédent graphe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa755139240>]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa7551c7dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "height = sin(x+pas/2)\n",
    "width= 1/(NB-1)\n",
    "plt.bar(x,height, width, color='g')\n",
    "plot(xfin,hei,'r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Le résultat sera d'autant plus probant que la largeur des batonnets sera petite, c'est à dire pour $n$ grand. La surface du rectangle correspond à l'intégration de la fonction constante (hauteur du batonnet) sur l'intervalle qui correspond à la largeur du batonnet. Pour construire ces batonnets, on introduit une subdivision (ou discrétisation) du segment $[a,b]$ comme par exemple\n",
    "$$\n",
    "x_0=a,~x_1=a+h,\\cdots,x_i=a+ih,\\cdots, x_n=a+nh=b,\n",
    "$$\n",
    "avec $h=\\frac {b-a}{n}$ la largeur du batonnet. On obtient alors la formule de quadrature suivante (on choisit ici $f(x_k)$ comme hauteur du batonnet sur $[x_k,x_{k+1}]$)\n",
    "$$\n",
    "F=\\sum_{k=0}^{n-1} h f(x_k)\\sim \\int_a^b f(x)\\, dx.\n",
    "$$\n",
    "On appellera cette formule la formule des rectangles à gauche car la hauteur du rectangle est évaluée par $f$ à gauche de l'intervalle considéré. \n",
    "### Une construction plus élaborée\n",
    "Plutôt que d'approcher la fonction $f$ par une fonction constante par morceaux, nous allons approcher $f$ par des polynômes par morceaux car nous savons intégrer les polynômes:\n",
    "$$\n",
    "F=\\sum_{k=0}^{n-1} \\int_{x_k}^{x_{k+1}} p_{[x_k,x_{k+1}]}(x) \\,dx\\sim \\int_a^b f(x)\\, dx.\n",
    "$$\n",
    "On pourra choisir pour le polynôme $p_{[x_k,x_{k+1}]}$ un polynôme de Lagrange d'interpolation de $f$ sur $[x_k,x_{k+1}]$. Une interpolation à 1 point induit une méthode des rectangles (polynôme constant sur $[x_k,x_{k+1}]$).\n",
    "\n",
    "Une interpolation à 2 points, par exemple les points $x_k$ et $x_{k+1}$, permet d'avoir une interpolation affine et l'integration d'une telle fonction revient à calculer l'aire d'un trapèze."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "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": [
    "plot([0,0.5],[sin(0),sin(0.5)])\n",
    "plot([0.5,1],[sin(0.5),sin(1)])\n",
    "x=linspace(0,1,100)\n",
    "plot(x,sin(x))\n",
    "plot([1,1],[0,sin(1)],'-.')\n",
    "plot([0.5,0.5],[0,sin(0.5)],'-.')\n",
    "grid();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On observe que cette expression représente une formule de calcul d'aire d'un trapèze, de largeur $h$ et de hauteurs $f(x_k)$ et $f(x_{k+1})$. La hauteur moyenne est donc $\\frac {f(x_k)+f(x_{k+1})}2$. L'aire du trapèze qui approche l'aire sous la graphe est donc $h\\frac {f(x_k)+f(x_{k+1})}2$.\n",
    "\n",
    "Dans le cas d'une interpolation de Lagrange à plus de points, la construction est plus technique mais elle aboutit car on sait toujours intégrer un polynôme: \n",
    "$$\\int_{x_k}^{x_{k+1}} f(x) \\,dx\\sim \\int_{x_k}^{x_{k+1}} p_{[x_k,x_{k+1}]}(x) \\,dx.$$ \n",
    "Si on note $(y_m)_{0\\le m< M}$ les $M$ points de $[x_k,x_{k+1}]$ qui définissent l'interpolation de Lagrange, on a:\n",
    "$$\n",
    "p_{[x_k,x_{k+1}]}(x)=\\sum_{l=0}^{M-1}f(y_m)l_m(x),\n",
    "$$\n",
    "$$\\int_{x_k}^{x_{k+1}} f(x) \\,dx\\sim \\sum_{l=0}^{M-1}f(y_m)\\int_{x_k}^{x_{k+1}}l_m(x)\\,dx.\n",
    "$$\n",
    "Ensuite, il reste à produire la sommation de ces intégrales de polynôme. Ce procédé itératif se programme aisément."
   ]
  },
  {
   "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.8.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
