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