Calcul intégral - Méthode des rectangles - Méthode d'Euler
Calcul d'intégrales par la méthode des rectangles
[Principe]
On veut calculer $\displaystyle\int_a^b f(t)\ dt$.
Pour cela, on divise le segment [a,b] en n parties égales définissant ainsi une suite $x_0=a < x_1 < \dots <x_n=b$.
Alors $\displaystyle p=\frac{b-a}{n}\ ;\ \int_a^b f(t)\ dt\simeq p\sum_{k=0}^{n-1} f(a+kp)$.
[Python]
Écrire le programme qui prend en paramètres f,a,b et n
L'algorithme revient à calculer une somme avec l'indice k variant de 0 à n-1
[Amélioration]
Il existe d'autres méthodes : méthode des trapèzes, méthode de Simpson donnant de bien meilleurs résultats et se basant également sur des sommes coefficientées des $f(a+kp)$.
Voir les formules sur le net
Méthode d'Euler
[Principe]
La méthode d'Euler permet d'obtenir une valeur approchée de l'image d'une fonction en un point (valeur de $F(b)$) lorsque la fonction elle-même n'est pas connue explicitement, mais en connaissant sa valeur en un autre point ($F(a)$) et sa dérivée ($F'(a)$ ou une équation différentielle d'ordre 1 permettant de calculer cette dérivée $F'(a)$ connaissant $a$ et $F(a)$). C'est une méthode numérique élémentaire de résolution d'équations différentielles du premier ordre, de la forme
$ \forall x\in I$, intervalle de $R$, $ F'(x)=u(x,F(x))$, $u$ une fonction réelle à deux variables.
Concrètement la méthode d'Euler repose sur trois idées idées :
- si on connaît $a$ et $F(a)$, on peut calculer $F'(a)=u(a,F(a))$.
- En confondant la courbe avec sa tangente, on peut obtenir une valeur approchée $F(\beta)\simeq F(\alpha) + (\beta-\alpha)F '(\alpha)$ (approximation affine de la fonction).
- La réitération du procédé précédent : $F(b)$ s'obtient en $n$ pas :$(x_0=a,y_0=F(a)) \to (x_1,y_1)\to (x_2,y_2)\to\dots (x_n=b,y_n=F(b)$, chaque $y_i$ étant calculé en utilisant la formule précédente.
Au final, on obtient deux suites $i\in[0,n]$ : $pas=\dfrac {b-a}{n}$
- $\displaystyle x_i = a + i.pas\qquad ; \qquad y_0=F(a)$ et $y_{i+1} = y_i + (x_{i+1}-x_i)F'(x_i)= y_i + pas.u(x_i, y_i).$
[Python]
Cela revient à calculer deux suites les $(x_i)$ et les $(y_i)$ définies par récurrence et à renvoyer la valeur $y_n$.
[Amélioration]
Si on conservait les différentes valeurs de x et de y donc la fonction précédente renvoie les listes $x$ et $y$, on pourrait tracer une courbe approximant la courbe représentative de F
[Amélioration]
La résolution de l'équation permettant le calcul de $f'(a)$ peut être difficile mais Python offre des fonctions de résolution d'équation ...mais ceci est une autre histoire
- Identifiez-vous pour poster des commentaires