ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges
 

Méthode de Simpson             @ programme en ligne , majoration de l'erreur
    
»  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 :

J = [2m(x32 + x1x3 + x12)+ 3p(x1 + x3) + 6q] × h/3

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 :

J = (y1+ 4y2 + y3) × h/3       (j)

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 :

En cas de doute, pour s'assurer qu'il n'y a pas un défaut de convergence, on pourra dans le cas d'une intégrale sur un intervalle de monotonie, encadrer celle-ci par la méthode élémentaire des rectangles. Il est clair que la formule de Simpson :

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 :

ε ≤ M(b - a)5/45n4 , M = Max |f (4)(x)|

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.

   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 : » 


© Serge Mehl - www.chronomath.com