Vous êtes sur la page 1sur 15

{

"cells": [
{
"cell_type": "markdown",
"id": "d694a2b4",
"metadata": {},
"source": [
"# Méthodes de quadrature\n",
"\n",
"## Introduction\n",
"\n",
"$\\newcommand{\\R}{\\mathbb{R}}$\n",
"Résoudre numériquement une équation différentielle revient à trouver une
approximation de la solution du problème\n",
"\n",
"$$\n",
"\\frac{du}{dt}(t)=f(t,u(t)),~~u(t_0)=u_0,\n",
"\\label{chap4eq1} \\tag{1}\n",
"$$\n",
"\n",
"avec $f$ une fonction de $[t_1,t_2]\\times \\R^n$ dans $\\R^n,~t_0 \\in
[t_1,t_2]$ et $u_0 \\in \\R^n$ une donnée. \n",
"\n",
"Avant de résoudre ce problème (nous verrons cela dans le chapitre suivant),
considérons l'équation différentielle la plus simple :\n",
"\n",
"$$\n",
"\\frac{du}{dt}(t)=f(t),~~u(t_0)=u_0,\n",
"$$\n",
"\n",
"où $f$ est une fonction de $\\R$ dans $\\R$ intégrable. L'unique solution de
cette équation est donnée par\n",
"\n",
"$$\n",
"u(t)=u_0+\\int_{t_0}^x f(t)dt.\n",
"$$\n",
"\n",
"On a donc besoin de savoir approcher numériquement $\\int_{t_0}^x f(t)dt$ pour
pouvoir avoir une chance d'approcher numériquement la solution de $\\
eqref{chap4eq1}$.\n",
"\n",
"Soient $a,b$ deux réels et $f : \\R \\rightarrow \\R$ une fonction donnée. Le
but de ce chapitre sera donc de voir des méthodes numériques permettant
d'approcher\n",
"\n",
"$$I=\\int_a^b f(s)ds,$$\n",
"\n",
"qu'on ne peut généralement pas calculer explicitement, beaucoup de fonctions
n'admettant pas de primitive pouvant être exprimée par des fonctions élémentaires.\
n",
"\n",
"<div class=\"alert alert-block alert-info\">\n",
"<b>Définition. (Formule de quadrature)</b><br \\>\n",
"Une formule d'approximation de $I$ est appelée formule de quadrature (ou
encore formule d'intégration numérique).\n",
"</div>\n",
"\n",
"Dans ce cours, nous nous intéresserons plus particulièrement à une catégorie
remarquable de formules de quadrature : les formules de Newton-Cotes. Plus
précisément, nous présenterons les formules de quadrature du point milieu, des
trapèzes et de Simpson. Puis nous étudierons l'ordre de ces formules et nous
donnerons des estimations d'erreur pour chacune d'elles. \n",
"\n",
"Mais avant de rentrer dans le vif du sujet, nous allons voir deux exemples
simples de formules (les formules des rectangles à gauche et à droite) qui
permettront de clarifier le terme d'intégration numérique.\n",
"\n",
"<div class=\"alert alert-block alert-info\">\n",
"<b>Définition. (Subdivision d'un intervalle)</b><br />\n",
"\n",
"Soit $[a,b]$ un intervalle de $\\R$.\n",
"\n",
"1. On appelle subdivision de $[a,b]$ la donnée de $n+1$ points $x_0, \\cdots,
x_n$ tels que : $a=x_0 < x_1< \\cdots < x_n=b$. \n",
"2. Les points $(x_i)_i$ d'une subdivision sont appelés les noeuds de la
subdivision.\n",
"3. La subdivision est dite régulière si pour tout $i,~x_{i+1}-x_i=h$. On dira
que $h$ est le pas de la subdivision. Par exemple, $h=(b-a)/n$ et $x_i=a+ih$ est
une subdivision régulière de l'intervalle $[a,b]$.\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"id": "6d1b4615",
"metadata": {},
"source": [
"## Formule des rectangles\n",
"\n",
"Soit $f$ une fonction continue sur l'intervalle $[a,b]$ et $(x_i)_i$ une
subdivision à $n+1$ points de l'intervalle $[a,b]$.\n",
"Alors\n",
"\n",
"$$\n",
"I(f)=\\int_a^b f(x)dx=\\sum_{i=0}^{n-1} \\int_{x_i}^{x_{i+1}} f(x)dx.\n",
"$$\n",
"\n",
"Sur chacun des intervalles $[x_i,x_{i+1}]$, on remplace la fonction $f$ par la
fonction constante égale à la valeur de $f$ au point $x_i$. Dans ce cas, on obtient
alors\n",
"\n",
"$$\\int_{x_i}^{x_{i+1}} f(x)dx=f(x_i)(x_{i+1}-x_i),$$\n",
"\n",
"ce qui revient à remplacer $I(f)$ par\n",
"\n",
"$$I_n^g(f)=\\sum_{i=0}^{n-1} f(x_i)(x_{i+1}-x_i),$$\n",
"\n",
"qui est appelée la **formule des rectangles à gauche**. Notons\n",
"\n",
"$$\\delta=\\max_{0\\leq i\\leq n-1}(x_{i+1}-x_i).$$\n",
"\n",
"On peut montrer que lorsque $\\delta$ tend vers 0, alors la suite des nombres
$I_n^g(f)$ converge vers l'intégrale sur $[a,b]$ de $f$ i.e. vers $I(f).$\n",
"\n",
"\n",
"\n",
"De la même façon, on peut définir la **formule des rectangles à droite** par\
n",
"\n",
"$$I_n^d(f)=\\sum_{i=0}^{n-1} f(x_{i+1}) (x_{i+1}-x_i).$$\n",
"\n",
"De même que pour $I_n^g(f)$, la suite des nombres $I_n^d(f)$ converge vers
l'intégrale sur $[a,b]$ de $f$ lorsque $\\delta$ tend vers 0.\n"
]
},
{
"cell_type": "markdown",
"id": "c1a7e45a",
"metadata": {},
"source": [
"**1. Donner l'algorithme en pseudo-langage d'une fonction permettant le calcul
de l'intégrale d'une fonction $f$ sur un intervalle $[a,b]$ par la méthode des
rectangles à gauche. Par exemple, votre méthode prendra en arguments une fonction
et une subdivision, et retournera la valeur de $I_n^g(f)$. De même pour la méthode
des rectangles à droite.**\n"
]
},
{
"cell_type": "markdown",
"id": "77d5b156",
"metadata": {},
"source": [
"**2. Écrire les fonctions Python ` rectangles_gauche(f,X) ` et `
rectangles_droite(f,X) ` implémentant ces méthodes.**\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "66bf5d89",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b0cdd4ca",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "befa4ea6",
"metadata": {},
"source": [
"**3. Écrire des fonctions ` quad_rectangles_gauche(f,a,b,n) ` et `
quad_rectangles_droite(f,a,b,n) ` appliquant la méthode des rectangles à gauche
(respectivement, à droite) à la fonction $f$ et à la subdivision régulière à $n+1$
points de l'intervale $[a,b]$.\\\n",
"Vous pourrez simplement utiliser les fonctions écrites précédemment.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ae084e93",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "8e241e14",
"metadata": {},
"source": [
"**4. Testez vos fonctions. Vous pourrez par exemple utiliser une fonction $f$
dont vous connaissez une primitive, et vérifier que le résultat obtenu se rapproche
celui attendu théoriquement lorsque $n$ est grand. Vous pouvez vous contenter
d'afficher les résultats avec un ` print `, ou mieux, faire un graphique pour
différentes valeurs de $n$.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "255595cc",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "85c4b4b0",
"metadata": {},
"source": [
"Le package SciPy implémente déjà des méthodes de quadrature. Par exemple, vous
pouvez essayer le code suivant :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7bbe94bc",
"metadata": {},
"outputs": [],
"source": [
"import scipy.integrate as integrate\n",
"\n",
"a = 1\n",
"b = 4\n",
"f = lambda x: np.sqrt(1+np.log(x))\n",
"result = integrate.quad(f, a, b)\n",
"print(result)"
]
},
{
"cell_type": "markdown",
"id": "0b32ad3b",
"metadata": {},
"source": [
"**5. À votre avis, que représentent les deux valeurs renvoyées renvoyées par `
integrate.quad ` ? Validez vos fonctions de quadrature en les comparant aussi avec
celle de NumPy.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1dbeb055",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "46cc930e",
"metadata": {},
"source": [
"## Formules de Newton-\n",
"\n",
"Les formules de Newton-Cotes sont une catégorie de formules de quadrature
importante à connaître. Ce sont des formules obtenues pour des noeuds équidistants.
Il en existe deux types : les formules fermées et les formules ouvertes.\n",
"\n",
"Considérons un intervalle quelconque $[c,d]$.\n",
"\n",
"Les *formules de Newton-Cotes fermées à $(n+1)$ points* sur l'intervalle $
[c,d]$ sont obtenues en prenant pour noeuds les points\n",
"\n",
"$$\n",
"y_j=c+\\frac{j(d-c)}{n},~~0 \\leq j \\leq n.\n",
"$$\n",
"\n",
"Les *formules de Newton-Cotes ouvertes à $n$ points* sur l'intervalle $[c,d]$
sont obtenues en prenant pour noeuds les points\n",
"\n",
"$$\n",
"y_j=c+\\frac{j(d-c)}{n+1},~~1 \\leq j \\leq n.\n",
"$$\n",
"\n",
"Nous allons voir trois formules d'intégration numérique issues des formules de
Newton-Cotes : les formules du point milieux, des trapèzes et de Simpson.\n",
"\n",
"Dans toute la suite, on considèrera une fonction $f$ continue sur $[a,b]$ et
on se donnera une subdivision de $[a,b]$ formée des points $(x_i)_{0\\leq i\\leq n}
$. On rappelle qu'alors :\n",
"\n",
"$$I(f)=\\int_a^b f(x)dx=\\sum_{i=0}^{n-1} \\int_{x_i}^{x_{i+1}} f(x)dx.$$\n",
"\n",
"\n",
"<div class=\"alert alert-block alert-info\">\n",
"Les formules d'intégration numérique qu'on donnera sont dites composées (ou
composites) car formées à partir de la juxtaposition de formules sur les sous-
intervalles $[x_i,x_{i+1}]$. On appellera ces formules des formules composées de
Newton-Cotes.\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"id": "3044f2c9",
"metadata": {},
"source": [
"### Formule du point milieu\n",
"\n",
"La formule du point milieu est obtenue en prenant sur chaque sous-intervalle $
[x_i,x_{i+1}]$ une formule de Newton-Cotes ouverte à un point et pour $I_n(f)$ elle
s'écrit\n",
"\n",
"$$\n",
"I_n^m(f)=\\sum_{i=0}^{n-1} f\\Bigl(\\frac{x_i+x_{i+1}}{2}\\Bigr) (x_{i+1}-
x_i).\n",
"$$\n",
"\n",
"Il est facile de voir que cette formule consiste en fait à remplacer la
fonction $f$ par une fonction constante par morceaux qui vaut $f\\Bigl(\\
frac{x_i+x_{i+1}}{2}\\Bigr)$ sur chacun des intervalles $[x_i,x_{i+1}]$. Elle est
donc analogue dans sa construction aux formules des rectangles présentées dans la
partie précédente."
]
},
{
"cell_type": "markdown",
"id": "44b5c5c4",
"metadata": {},
"source": [
"**6. Sur papier, faites un dessin faisant apparaître le graphe d'une fonction
$f$ sur un intervalle $[a,b]$ et l'aire correspondant à $I_n^m(f)$ pour, par
exemple $n=5$.**"
]
},
{
"cell_type": "markdown",
"id": "44f66274",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-warning\">\n",
"<b>Remarque importante</b> :<br />\n",
"Remarquez que si $f$ est <b>constante</b> sur un intervalles $[x_i,x_{i+1}]$
(c'est-à-dire, si $f$ coïncide avec un polynôme de degré 0 sur cet intervalle),
alors $f((x_i+x_{i+1})/2)=\\int_{x_i}^{x_{i+1}} f(x)dx$ : autrement dit, la formule
du point milieu est <b>exacte</b> sur les fonctions qui sont des polynômes de degré
0 (par morceaux). De même pour les formules des rectangles à gauche/à droite.\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "9fac6436",
"metadata": {},
"source": [
"**7. Imaginons que $f$ coïncide avec un polynôme de degré 1 sur l'intervalle $
[x_i,x_{i+1}]$ ; autrement dit, $f(x)=\\left(1-\\frac{(x-x_i)}{x_{i+1}-x_i}\\right)
f(x_i)+\\frac{x-x_i}{x_{i+1}-x_i} f(x_{i+1})$. Comparez $f((x_i+x_{i+1})/2)$ et $\\
int_{x_i}^{x_{i+1}} f(x)dx$. Que remarquez-vous ?\\\n",
"Est-ce aussi le cas pour la formule des rectangles à gauche/à droite ?**"
]
},
{
"cell_type": "markdown",
"id": "8b5d639f",
"metadata": {},
"source": [
"**8. Écrire une fonction Python ` quad_point_milieu(f,a,b,n) ` implémentant la
formule du point milieu, et vérifier son bon fonctionnement comme pour la méthode
des rectangles.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ecc25517",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "e460a5fa",
"metadata": {},
"source": [
"### Formule des trapèzes\n",
"\n",
"La formule des trapèzes est obtenue en prenant sur chaque sous-intervalle $
[x_i,x_{i+1}]$ une formule de Newton-Cotes fermée à deux points et pour $I_n(f)$
elle s'écrit\n",
"\\begin{equation}\n",
"\\label{chap4eq8}\n",
"I_n^t(f)=\\sum_{i=0}^{n-1} \\frac{f(x_i)+f(x_{i+1})}{2} (x_{i+1}-x_i).\n",
"\\end{equation}\n",
"Cette fois, on a remplacé la fonction $f$ par une fonction affine par morceaux
qui prend les mêmes valeurs que $f$ en chacun des points $x_i,~0 \\leq i \\leq n$.
Notons que par rapport à la formule des rectangles (à gauche ou à droite), la
modification de la formule ne porte ici que sur le premier et le dernier terme de
la somme dans le cas d'une subdivision régulière. Nous verrons qu'elle est
cependant plus précise que les formules des rectangles."
]
},
{
"cell_type": "markdown",
"id": "a442bf58",
"metadata": {},
"source": [
"**9. Sur papier, faites un dessin faisant apparaître le graphe d'une fonction
$f$ sur un intervalle $[a,b]$ et l'aire correspondant à I_n^t(f) pour, par exemple
$n=5$.**"
]
},
{
"cell_type": "markdown",
"id": "c6291362",
"metadata": {},
"source": [
"**10. Supposons que sur $[x_i,x_{i+1}]$, $f$ est soit constante, soit un
polynôme de degré 1. Comparez dans les deux cas $\\int_{x_i}^{x_{i+1}} f(x)dx$ et
$(f(x_i)+f(x_{i+1}))/2$. Faites le lien avec la remarque précédente sur le point
milieu.**"
]
},
{
"cell_type": "markdown",
"id": "c4a97273",
"metadata": {},
"source": [
"**11. Écrire une fonction Python ` quad_trapezes(f,a,b,n) ` implémentant la
formule des trapèzes, et vérifier son bon fonctionnement comme pour la méthode du
point milieu.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ef6577d6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "d875c756",
"metadata": {},
"source": [
"### Formule de Simpson\n",
"\n",
"La formule de Simpson est obtenue en prenant sur chaque sous-intervalle $
[x_i,x_{i+1}]$ une formule de Newton-Cotes fermée à trois points et pour $I_n(f)$
elle s'écrit\n",
"\\begin{equation}\n",
"\\label{chap4eq9}\n",
"I_n^s(f)=\\sum_{i=0}^{n-1} \\frac{f(x_i)+4f((x_i+x_{i+1})/2)+f(x_{i+1})}{6}
(x_{i+1}-x_i).\n",
"\\end{equation}\n",
"Il est évident que cette formule est une combinaison linéaire des formules du
point milieux et des trapèzes que nous avons vues précédemment. Nous verrons plus
loin que cette formule de Simpson est plus précise que chacune d'elles.\n"
]
},
{
"cell_type": "markdown",
"id": "eca7a2bb",
"metadata": {},
"source": [
"**12. Écrire une fonction Python ` quad_simpson(f,a,b,n) ` implémentant la
formule de Simpson, et vérifier son bon fonctionnement.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3bb4204a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "76ba578c",
"metadata": {},
"source": [
"**13. Faisons le lien avec l'interpolation polynomiale. Considérons une
fonctions $g : [c,d] \\to \\R$, et les noeuds d'interpolation $x_0=c$,
$x_1=(c+d)/2$ et $x_2=d$. Déterminer par la méthode de votre choix le polynôme
d'interpolation de Lagrange $P_2(x)$ associé aux noeuds $x_i$ et aux $g(x_i)$.
Calculer ensuite $\\int_c^d P_2(x) dx$. Que remarquez vous ?**"
]
},
{
"cell_type": "markdown",
"id": "00fcde0f",
"metadata": {},
"source": [
"**14. Déduire de la question précédente que si $f$ est un polynôme de degré
inférieur ou égal à $2$ sur $[x_i,x_{i+1}]$, alors $$\\int_{x_i}^{x_{i+1}}
f(x)dx=\\frac{f(x_i)+4f((x_i+x_{i+1})/2)+f(x_{i+1})}{6}.$$**"
]
},
{
"cell_type": "markdown",
"id": "cdd87fea",
"metadata": {},
"source": [
"**15. Un peu de calcul à la main !\\\n",
"Soit\n",
"$$I=\\int_0^1 (10 x^3+2x)dx,$$\n",
"(a) Calculer une valeur approchée de $I$ par la méthode du point milieu, des
trapèzes et de Simpson. Pour cela on prendra une subdivision régulière de
l'intervalle $[0,1]$ à 11 points.\n",
"\\\n",
"(b) Pour chacune des trois méthodes, calculer l'erreur commise.**\n"
]
},
{
"cell_type": "markdown",
"id": "8e87a037",
"metadata": {},
"source": [
"**16. Pour une fonction $f$ et un intervalle $[a,b]$ que vous choisirez,
tracer sur un même graphique $I_n^g$, $I_n^m$, $I_n^t$ et $I_n^s$ en fonction de
$n$, ainsi que la droite horizontale indiquant la valeur donnée par la fonction de
quadrature de SciPy. Commentez.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3402bddc",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "62082d0e",
"metadata": {},
"source": [
"**17. Admettons que pour une fonction de quadrature, $I_n(f)$ et le pas de la
subdivision $h=(b-a)/n$ sont liés par une relation de la forme $|I_n(f)-I(f)| = C
h^\\alpha$ pour une constante $C$ (qui peut dépendre de $f$) et une constante $\\
alpha$ (qui ne dépend pas de $f$). Qu'indiquerait la constante $\\alpha$ ? Quel nom
lui donneriez-vous ? Avez-vous une idée pour déterminer/visualiser $\\alpha$ ?**"
]
},
{
"cell_type": "markdown",
"id": "d2c8846a",
"metadata": {},
"source": [
"**18. Prenons par exempke $n=25$. Pour chaque fonction de quadrature, calculez
$e_k = |I_{k}(f)-I(f)|$ pour tout $k=10,\\dotsc,n$ (où $I(f)$ est soit la valeur
que vous avez calculé théoriquement, soit la valeur donnée par la fonction de
quadrature de NumPy), puis tracez les points de coordonnées $(\\ln(h_k),\\ln(e_k))
$, où $h_k=(b-a)/k$. Déterminez par régression linéaire les pentes des droites.\\\
n",
"*Indication: vous pourrez utiliser la fonction ` polyfit ` de NumPy.***"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bd8320a3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "1c300714",
"metadata": {},
"source": [
"**19. Qu'en concluez-vous ?**"
]
},
{
"cell_type": "markdown",
"id": "58850da9",
"metadata": {},
"source": [
"## Ordre d'une formule de quadrature et estimations d'erreur\n",
"\n",
"### Ordre d'une formule de quadrature et estimations d'erreur\n",
"\n",
"Nous allons maintenant nous intéresser à ce que nous appelons l'ordre d'une
formule de quadrature. Nous donnerons les ordres de chacune des formules de
quadrature présentées précédemment. Puis nous nous intéresserons à des estimations
de l'erreur commise en remplaçant $I_n(f)$ par $I_n^m(f),~I_n^t(f)$ et $I_n^s(f).$\
n",
"\n",
"#### Ordre d'une formule de quadrature\n",
"\n",
"Commençons par nous intéresser aux classes de fonctions pour lesquelles les
formules des rectangles, du point milieu, des trapèzes et de Simpson sont en fait
exactes. Il est trivial que la formule des rectangles est exacte pour la classe des
fonctions constantes. On peut également voir très facilement sur un schéma que la
formule du point milieu est exacte pour la classe des fonctions constantes mais
également pour la classe des fonctions affines (en fait, on l'a vu à la question
7.). La formule des trapèzes est exacte pour la classe des fonctions affines. Enfin
par construction la formule de Simpson est exacte au moins pour la classe des
polynômes de degrés inférieur ou égal à deux.\n",
"\n",
"Donnons maintenant la définition générale de l'odre d'une formule de
quadrature.\n",
"\n",
"<div class=\"alert alert-block alert-info\">\n",
"<b>Définition. (Ordre d'une formule de quadrature)</b><br \\>\n",
"On dit qu'une formule de quadrature est d'ordre $m$ si $m$ est le plus grand
entier tel que la formule soit exacte sur l'ensemble des polynômes de degrés
inférieur ou égal à $m$.\n",
"</div>\n",
"\n",
"En utilisant cette définition, nous avons le résultat suivant :\n",
"\n",
"<div class=\"alert alert-block alert-danger\">\n",
"<b>Théorème.</b><br \\>\n",
"Au send de la définition précédente, la formule des rectangles est une formule
d'ordre 0, les formules du point milieu et des trapèzes sont des formules d'ordre 1
et la formule de Simpson une formule d'ordre <b>3<b/>.\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "7c834007",
"metadata": {},
"source": [
"**20 (À faire à la fin en bonus). De par sa construction, la formule de
Simpson est d'ordre au moins 2. Vérifier qu'elle est bien en fait d'ordre 3.**"
]
},
{
"cell_type": "markdown",
"id": "990a46be",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-warning\">\n",
"<b>Remarque :</b><br \\>\n",
"Pour tout choix de subdivision, il existe au moins une formule de quadrature
d'ordre $n$ au sens de la définition plus haut. En effet, si sur chaque sous-
intervalle de la subdivision on considère $(n+1)$ noeuds et qu'on remplace $f$ par
son polynôme d'interpolation de degré $n$ en ces points, on obtiendra bien une
formule exacte pour les polynômes de degré inférieur ou égal $n$. Par le chapitre
précédent, on sait qu'un tel polynôme existe, on peut donc construire des formules
de quadrature d'ordre aussi élevé que l'on veut !\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "4e2a00c0",
"metadata": {},
"source": [
"#### Estimations d'erreur\n",
"\n",
"Nous allons maintenant donner des estimations d'erreurs pour les formules du
point milieu, des trapèzes et de Simpson.\n",
"\n",
"Soit $f$ une fonction continue sur $[a,b]$. Pour simplifier la présentation,
nous allons considérer une subdivision régulière de l'intervalle $[a,b]$ i.e. les
noeuds $(x_i)_{0 \\leq i \\leq n}$ donnés par :\n",
"\n",
"$$x_i=a+\\frac{i(b-a)}{n}.$$\n",
"\n",
"Tous les intervalles $[x_i,x_{i+1}]$ sont de longueur $h=(b-a)/n.$\n",
"\n",
"Dans ce cas, la formule du point milieu se ré-écrit\n",
"\n",
"$$\n",
"I_n^m(f)=h\\sum_{i=0}^{n-1} f\\Bigl(\\frac{x_i+x_{i+1}}{2}\\Bigr),\n",
"$$\n",
"\n",
"celle des trapèzes\n",
"\n",
"$$\n",
"I_n^t(f)=h\\biggl(\\frac{f(a)+f(b)}{2}+\\sum_{i=1}^{n-1}f(x_i)\\biggr),\n",
"$$\n",
"\n",
"et enfin celle de Simpson\n",
"\n",
"$$\n",
"I_n^s(f)=\\frac{h}{6}\\biggl[ f(a)+f(b)+2\\sum_{i=1}^{n-1} f(x_i)+4\\
sum_{i=0}^{n-1}f\\Bigl(\\frac{x_i+x_{i+1}}{2}\\Bigr)\\biggr].\n",
"$$\n",
"\n",
"Les estimations d'erreur pour les formules du point milieu, des trapèzes et de
Simpson sont alors données par les théorèmes qui suivent.\n",
"\n",
"\n",
"<div class=\"alert alert-block alert-danger\">\n",
"<b>Théorème.</b><br \\>\n",
"Supposons que $f \\in \\mathcal{C}^2([a,b])$. Alors on a l'estimation d'erreur
suivante pour la formule du point milieu :\n",
" \n",
"$$\\biggl|\\int_a^b f(x)dx -I_n^m(f)\\biggr|\\leq (b-a)\\frac{h^2}{24}\\
sup_{a<\\xi<b}|f''(\\xi)|.$$\n",
" \n",
"On a donc une erreur d'ordre 2 pour la formule du point milieu.\n",
"</div>\n",
"\n",
"<div class=\"alert alert-block alert-warning\">\n",
"<b>Remarque :</b><br \\>\n",
"Pour la formule des rectangles, on aurait seulement une erreur d'ordre 1.\n",
"</div>\n",
"\n",
"<div class=\"alert alert-block alert-danger\">\n",
"<b>Théorème.</b><br \\>\n",
"Supposons que $f \\in \\mathcal{C}^2([a,b])$. Alors on a l'estimation d'erreur
suivante pour la formule des trapèzes :\n",
" \n",
"$$\\biggl|\\int_a^b f(x)dx -I_n^t(f)\\biggr|\\leq (b-a)\\frac{h^2}{12}\\
sup_{a<\\xi<b}|f''(\\xi)|.$$\n",
" \n",
"On a donc une erreur d'ordre 2 pour la formule des trapèzes.\n",
"</div>\n",
"\n",
"<div class=\"alert alert-block alert-danger\">\n",
"<b>Théorème.</b><br \\>Supposons que $f \\in \\mathcal{C}^4([a,b])$. Alors on
a l'estimation d'erreur suivante pour la formule de Simpson :\n",
"\n",
"$$\\biggl|\\int_a^b f(x)dx -I_n^s(f)\\biggr|\\leq (b-a)\\frac{h^4}{2880}\\
sup_{a<\\xi<b}|f^{(4)}(\\xi)|.$$\n",
"\n",
"On a donc une erreur d'ordre 4 pour la formule de Simpson.\n",
"</div>\n",
"\n",
"**Ces résultats correspondent bien à nos observations précédentes !**\n",
"\n",
"<div class=\"alert alert-block alert-warning\">\n",
"<b>Remarque :</b><br \\>\n",
"Au vu des théorèmes précédents, il n'y a pas d'intérêt à faire une intégration
numérique par une formule d'ordre élevé sur des fonctions peu régulières puisque la
précision des formules est limitée par la régularité de la fonction dont on cherche
une approximation de l'intégrale.\n",
"</div>\n",
"\n",
"<div class=\"alert alert-block alert-warning\">\n",
"<b>Théorème.</b><br \\>\n",
" Dans le cas d'une subdivision non régulière, on aurait les mêmes
estimations que dans les théorèmes précédents en prenant $h=\\max_i(x_{i+1}-x_i)$.\
n",
"</div>\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "751730ed",
"metadata": {},
"source": [
"Et pour terminer, quelques exercices.\n",
"\n",
"<div class=\"alert alert-block alert-success\">\n",
"<b>Exercice 1.</b><br />\n",
"Soit l'intégrale :\n",
"$$I=\\int_0^\\pi \\sin x dx.$$\n",
"On veut calculer numériquement $I$. Déterminer quelle valeur de $n$ (nombre de
points de la subdivision) il faut choisir pour avoir, avec les méthodes du point
milieu, des trapèzes et de Simpson, une erreur inférieure à $5 \\times 10^{-3}.$\
n",
"</div>\n",
"\n",
"<div class=\"alert alert-block alert-success\">\n",
"<b>Exercice 2.</b><br />\n",
"Soit l'intégrale :\n",
"$$I=\\int_{-1}^1 f(x)dx.$$\n",
"On veut construire des formules de quadrature à deux points de la forme :\n",
"$$I \\approx a_0f(x_0)+a_1f(x_1).$$\n",
"<ol>\n",
"<li>Quelle condition doivent vérifier les coefficients $a_0$ et $a_1$ pour que
la formule soit d'ordre au moins 0 ?</li>\n",
"<li>Les coefficients $a_0$ et $a_1$ étant donnés, différents de 0 et vérifiant
la condition de la question 1, quelles conditions doivent vérifier les abscisses
$x_0$ et $x_1$ pour que la formule soit d'ordre $n$ au moins ?</li>\n",
"<li>Écrire ces conditions et donner les formules obtenues dans chacun des cas
particuliers suivants :\n",
" <ol><li>$a_0=-2,~a_1=4$,</li>\n",
" <li>$a_0=2/3,~a_1=4/3$,</li>\n",
" <li>$a_0=a_1=1.$</li></ol>\n",
" </li>\n",
"</ol>\n",
"</div>\n",
"\n",
"\n",
"<div class=\"alert alert-block alert-success\">\n",
"<b>Exercice 3.</b><br />\n",
"Soit $0<\\alpha\\leq 1$ un réel donné, soit $g$ une fonction continue sur
l'intervalle $[-1,1]$ donnée, soit $t_0=-\\alpha,~t_1=0$ et $t_2=\\alpha$, et, soit
$w_0,~w_1,~w_2$ trois réels. On considère la formule de quadrature définie par :\
n",
"$$J(g)=\\sum_{j=0}^{2} w_j g(t_j)$$\n",
"comme approximation de :\n",
"$$I=\\int_{-1}^1 g(t)dt.$$\n",
"<ol>\n",
" <li>Trouver $w_0,~w_1$ et $w_2$ en fonction de $\\alpha$ tels que la
formule de quadrature $J(g)$ soit exacte pour tout polynôme de degré 2. Que pouvez-
vous dire de l'ordre de la formule ?</li>\n",
" <li>Calculer alors $J(t^3)-\\displaystyle{\\int_{-1}^1 t^3dt}$. Qu'en
déduisez-vous ?</li>\n",
" <li>Dans le cas $\\alpha=1$, quelle formule d'intégration numérique
usuelle reconnaissez-vous ?</li>\n",
" <li>Déterminer $\\alpha$ de sorte que $J(g)$ soit d'ordre au moins
4.</li>\n",
" <li>La valeur de $\\alpha$ étant ainsi fixée, cette formule est-elle
d'ordre au moins 5 ? au moins 6 ?</li>\n",
"</ol>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1d16b0a6",
"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.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

Vous aimerez peut-être aussi