![]() |
Cette méthode, très élémentaire, basée sur les sommes de Cauchy-Riemann (approchant l'aire sous une courbe) et appliquée à une fonction f continue, permet le calcul approché d'intégrales en choisissant une subdivision régulière de pas xi+1 - xi = (b - a)/n, donc indépendant de i avec une valeur de n "suffisamment grande".
On obtient une succession de rectangles en rose ci-contre, d'où le nom de cette méthode, approchant l'aire sous la courbe, où ci est choisi ici au "milieu" de [xi ; xi+1]. On calcule :
Sn = h × Σf(ci) , i variant de 0 à n - 1
avec : h = (b - a)/n , xi = a + i.h , ci = (xi+1 + xi)/2 = a + ih + h/2. Le passage à la limite fournit l'intégrale cherchée.
➔ Le coloriage en bleu (resp. en vert) indique des portions d'aires de rectangles en excès (resp. en manque).
Évaluation de l'erreur commise : |
On montre facilement, que l'erreur est en
1/n, plus précisément inférieure à :
Le lecteur intéressé par le calcul de cette majoration pourra se reporter au calcul similaire de l'évaluation de l'erreur commise par la méthode des trapèzes. Cette dernière, en 1/n2, est plus efficace : à précision égale, 100 points de subdivision équivalent, grosso modo à 10 000 points par la méthode des rectangles.
Mais cela est très théorique. Tout dépend de la fonction et de l'amplitude de l'intervalle d'intégration. Sans oublier les erreurs d'arrondis.
Programmation de la méthode en JavaScript : |
➔ 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, a = 1, b = 2. Le programme calcule des approximations du logarithme népérien de x. On pourra comparer cette valeur aux résultats obtenus en faisant varier n. Rappel ln2 ≃ 0,693147180559945.
<SCRIPT LANGUAGE=JavaScript> var x,fonc var pi=3.141592653589793; var e=2.7182818284590452; function rect() { with (Math) { fonc="1/x" a=1 ; b=2 ; n="100"; fonc=prompt("Entrez votre fonction :",fonc) a=eval(prompt("Entrez a :",a)) b=eval(prompt("Entrez b :",b)) n=prompt("Nombre de points n= ",n) if (n==null) {return} else {n =eval(n)}; //-------------- Σ des rectangles h=(b-a)/n ; s=0 for(i=0;i<=n-1;i++) {s=s+f(a+i*h+h/2)} // ------------- alert("Integrale = "+s*h) } } function f(x) |
Autres méthodes : »