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

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.

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] x 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 : 

En conséquence, pour une intégration sur l'intervalle [a,b], en regroupant les points de la subdivision trois par trois en commençant à xo = a : (xo, x1, x2) , (x2, x3, x4) , (x4, x5, x6) , etc.

On remarque que le nombre n doit être pair et en utilisant la relation de Chasles pour les intégrales, on obtient, avec h = (b - a)/n, la formule d'approximation de Simpson :



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() , ...

  • pi et e sont compris par le programme

 fonctions mathématiques usuelles



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.

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.

Étude :   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

Application de la méthode à la fonction de répartition de la loi normale :               Autres méthodes : 


© Serge Mehl - www.chronomath.com