![]() ![]() » méthode de Simpson dite des 3/8 , autres méthodes |
Le défaut évident du calcul approché d'une intégrale par la méthode des trapèzes (et a fortiori par celle, élémentaire, des rectangles) est de remplacer grossièrement un arc de courbe MiMi+1 par le segment [MiMi+1]. Ces méthodes fort simples à programmer restent cependant très imprécises. Simpson apporte une correction très efficace correspondant à la méthode de Newton-Cotes (interpolation de degré 2) :
Étude :
Soit f une fonction continue sur [a,b], il s'agit d'approcher l'intégrale :
La méthode de Simpson consiste à grouper trois points consécutifs de la courbe Mi, Mi+1 et Mi+2 et de remplacer l'arc de courbe passant par ces trois points par un arc de parabole. Notons que si les points Mi, Mi+1 et Mi+2 sont alignés, le calcul des paramètres de la parabole d'équation y = mx2 + px + q, passant par ces points conduira à m = 0. Par suite, quitte à parler de parabole dégénérée, ce cas n'est pas singulier.
L'arc de courbe (C) est remplacé par l'arc de parabole (P) passant par ces trois points. Si le nombre de points de la subdivision est grand, on conçoit que la mesure de l'aire coloriée en jaune est très faible : l'arc (C) coïncide "pratiquement" avec (P).
Notons Mi(xi,yi), i = 1,2 ou 3, trois points consécutifs de la courbe représentative de la fonction f. Les paramètres m, p et q de la parabole cherchée sont solutions du système :
h désignant le pas x3 - x2 = x2 - x1 = (b - a)/2 de la subdivision, l'intégrale de la fonction mx2 + px + q entre x1 et x3 peut s'écrire :
Compte tenu du système ci-dessus, que l'on ne résout surtout pas, on fait apparaître y1 + y3 dans le crochet et en remarquant que x1 = x2 - h et x3 = x2 + h, on obtient :
Ce qui peut s'écrire plus élégamment, x1 = a, x2 = (a + b)/2 et x3 =b :
|
➔ Pour une intégration sur un intervalle [a,b], on regroupe trois par trois les points d'une subdivision xo = a, x1, x2, ..., xn = b :
(xo, x1, x2) , (x2, x3, x4) , (x4, x5, x6) , ..., (xn-2, xn-1, xn)
et on remarque que le nombre n doit être pair.
En utilisant la relation de Chasles pour les intégrales, on obtient, avec h = (b - a)/n, la formule d'approximation de Simpson :
Calcul de l'erreur théorique maximale : |
est exacte pour les polynômes de d° ≤ 2. On vérifiera qu'elle est aussi exacte pour les polynômes de degré 3 en testant la formule J = (y1+ 4y2 + y3) × h/3 sur le monôme f(x) = x3. Pour cette raison, on appelle parfois la formule de Simpson : formule des trois niveaux.
On suppose ici que f est au moins de classe C4. Sur un intervalle [xi - h,xi + h], subdivision de 3 points xi - h, xi, xi + h, l'erreur commise par l'approximation de Simpson est :
Développons le second membre à l'ordre 3 par la formule de Taylor avec reste de Lagrange :
Le crochet multiplié par h/3 est donc égal à :
Développons maintenant f(x) à l'ordre 3 dans le voisinage [xi - h,xi + h] de xi, posons ensuite t = x - xi et intégrons entre les nouvelles bornes -h et h :
Finalement :
En notant M le maximum de |f (4)(x)| sur l'intervalle [a,b], l'erreur sur [xi - h, xi + h] ne peut donc excéder ei(h) = 4Mh5/90. Le nombre n de subdivisions est pair : si n = 2p, i varie de 0 à p - 1, p = n/2 et h = (b - a)/n.
Conclusion :
L'erreur globale ε ne peut donc pas dépasser p x 4Mh5/90, soit :
Ainsi, l'erreur théorique est en 1/n4 (par exemple, en doublant n, l'erreur théorique est divisé par 16) ce qui est fort précis en comparaison de la méthode des trapèzes (en 1/n2) ou celle des rectangles (en 1/n). Mais gare aux erreurs d'arrondi que pourrait engendrer l'ordinateur...
➔
Toujours s'assurer d'un
encadrement de la valeur exacte. La méthode des
trapèzes pour une fonction monotone permet cet encadrement (quitte à
découper l'intervalle d'intégration). La méthode de
Poncelet,
basée sur une utilisation de la méthode
des trapèzes par excès et par défaut, permet
de fournir une évaluation simple de l'erreur
commise.
Programmation de la méthode en JavaScript avec contrôle des bornes : |
<SCRIPT
LANGUAGE=JavaScript> var fonc; var pi=3.141592653589793, e=2.7182818284590452; function sim() { with (Math) { fonc="1/x";a=1 ; b="" ; n=100; fonc=prompt("Entrez votre fonction :",fonc);if (fonc==null) {return} a=eval(prompt("Entrez a :",a));if (a==null) {return} fa="";fa=f(a) if(isNaN(fa) || fa==Infinity) // f(a) non calculable ou infini { fa=eval(prompt("Il y a un souci en "+a+" !!! Entrez f(a) :",fa)) } if (fa==null) {return} b=eval(prompt("Entrez b :",b));if (b==null) {return} fb="";fb=f(b); if(isNaN(fb) || fb==Infinity) // f(a) non calculable ou infini { fb=eval(prompt("Il y a un souci en "+b+" !!! Entrez f(b) :",fb)) } if (fb==null) {return} n=prompt("Nombre de points n pair = ",n); if (n==null) {return} else {n =eval(n)}; h=(b-a)/n;j=fa for(i=1;i<=n-2;i=i+2) {x=a+i*h;j=j+4*f(x)+2*f(x+h)} j=j+4*f(b-h)+f(b); alert("Integrale = "+j*h/3) } } function f(x) { with(Math){y=eval(fonc) return y} } </SCRIPT> |
Pour tester ce programme vous devez entrer la fonction utilisée en utilisant une syntaxe comprise par le langage JavaScript. Cependant, l'instruction with (Math), placée en début de procédure, évite à l'utilisateur de préciser Math devant chaque fonction mathématique utilisée.
multiplication : * , division : /
racine carrée : sqrt(x)
puissance : pow(x,n). Pour x2 ou x3, utiliser plutôt x*x et x*x*x
fonctions usuelles : sin(), cos(), tan(), atan(), abs(); log népérien : log() , exponentielle de base e : exp() , ...
les appellations pi (pour π) et e sont comprises par le programme.
➔ Par défaut f(x) = 1/x. C'est dire que nous calculons des approximations du logarithme népérien de x en donnant à la borne inférieure a la valeur 1 et en donnant à b une valeur strictement positive de notre choix.
Le programme traite les intégrales généralisées convergentes. Par exemple l'intégrale de sin(x)/x sur [0,π] en prolongeant sin(x)/x par 1 en x = 0, de valeur approchée 1,8519.
Le programme est nettement plus performant que la méthode des trapèzes : avec seulement 20 points de subdivision, ln 2 est calculé avec 6 décimales.
» fonctions mathématiques usuelles
Application de la méthode à la fonction de répartition de la loi normale : » Autres méthodes : »