(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
Certaines fonctions n’ont pas de primitives qui peuvent s’écrire à l’aide des fonctions usuelles.
C’est par exemple le cas de la fonction $f$ définie sur $\mathbb{R}$ par $f(x)=e^{-x^2}$.
Le but de cette activité est d’obtenir malgré tout des valeurs approchées de l’intégrale $K=\int_{0}^{1}{e^{-x²}dx}$.
1. Placer les points $M_0$ ; $M_1$ ; $M_2$ ; $M_3$ et $M_4$ de la courbe de $f$ d’abscisses respectives $0$ ; $\displaystyle \frac{1}{4}$ ; $\displaystyle \frac{2}{4}$; $\displaystyle \frac{3}{4}$ et $\displaystyle \frac{4}{4}$.
2. A l’aide de ces points, inscrire $4$ rectangles sous la courbe de $f$, de largeur $\displaystyle \frac{1}{4}$ et de longueur maximale.
3. Ecrire une fonction Python f qui prend x en argument et renvoie l’image de $x$ par $f$.
Important : Ne pas utiliser la fonction exp. Utiliser les notations de puissances à partir de la constante e, obtenue avec from math import e.
from math import e
# Ecrire la fonction
# Tester la fonction
Ecrire une fonction Python Aire_rect qui reçoit en argument la largeur l et la longueur L d’un rectangle et renvoie son aire.
# Ecrire la fonction
# Tester la fonction
A l’aide de ces fonctions, calculer la somme des aires des $4$ rectangles précédents, et en déduire un minorant de $K$.
# Effectuer les saisies nécessaires
1. La fonction ci-dessous trace la courbe représentative de $f$ sur l’intervalle $[0;1]$ et construit les 4 rectangles sous la courbe de $f$. Tester cette fonction.
import matplotlib.pyplot as plt
import matplotlib.patches as ptc
import numpy as np
def Methode_rectangle():
# tracé de la courbe de f
prec=0.05
abs_fonc = np.arange(0,1+prec,prec)
ord_fonc = f(abs_fonc)
plt.plot(abs_fonc,ord_fonc,color='green')
ax = plt.gca()
# tracé des rectangles
l=1/4
for k in range(4):
x=k*1/4
L=f(x+1/4)
#Rectangle défini par le point en bas à gauche,
#sa largeur l et sa longueur L
rect=ptc.Rectangle( (x,0) , l, L, fill=False)
ax.add_patch(rect)
# reglage des bornes des axes du repere
plt.axis([0,1,0,1])
# affichage
plt.show()
# (Ces fonctionnalités sont désactivées dans la version Notebook)
# attente d'une action de clic sur la fenetre puis fermeture
# plt.waitforbuttonpress()
# plt.close()
return None
#Test de la fonction
Methode_rectangle()
2. Prévoir les valeurs successives prises par les variables x, l et L dans la boucle en complétant ce tableau :
$k$ | 0 | 1 | 2 | 3 |
---|---|---|---|---|
$x$ | ||||
$l$ | ||||
$L$ |
Compléter la fonction précédente pour qu’elle renvoie Aire_inf qui est la somme des aires de ces rectangles.
Aides : On pourra ajouter un compteur qui s’incrémente à chaque étape de la boucle, en utilisant la fonction Aire_rect précédemment écrite. On pourra éventuellement utiliser l’instruction plt.text(0,-0.2,’Aire=’+str(Aire_inf)) pour afficher cette aire sur le graphique.
Tester et vérifier qu’on retrouve le résultat de la question I.3.
# Tester la fonction modifiée
3. Modifier la fonction pour qu’elle reçoive en argument le nombre n de rectangles souhaités, et adapter l’affichage et le calcul. Tester pour $n=10$ puis pour $n=100$.
#Effectuer les tests
1. A l'aide de la figure dynamique ci-dessous, vérifier les résultats des questions I.3 et II.3.
(Pour faire apparaître et activer la figure dynamique, sélectionner la cellule et valider avec SHIFT+Entrée).
#Sélectionner cette zone puis SHIFT+ENTREE
from IPython.display import display, HTML ; display(HTML('fig_dyn_GeoGebra/Rectangles.html'))
2. On se place dans le cas général où on trace $n$ rectangles de même largeur sous la courbe de $f$ sur l’intervalle $[0;1]$, et on note $s_n$ la somme de leurs aires (voir la figure dynamique fournie).
Justifier que $\displaystyle s_n=\frac{1}{n} \left( f \left(\frac{1}{n}\right)+f \left(\frac{2}{n}\right)+f \left(\frac{3}{n}\right)+⋯+f \left(\frac{n}{n}\right) \right) =\frac{1}{n} \sum_{k=0}^{n-1} \ f \left ( \frac{k+1}{n} \right ) \ $
3. On considère de la même façon la somme $S_n$ des aires de $n$ rectangles de même largeur construits au-dessus de la courbe de $f$ sur l’intervalle $[0;1]$ (utiliser le curseur vert sur la figure dynamique fournie)
Donner une expression de $S_n$ similaire à celle de $s_n$.
4. Exprimer $S_n-s_n$ en fonction de $n$.
En admettant que $\displaystyle s_n \leqslant \int_{0}^{1} \ e^{-x²} dx \ \leqslant S_n $, en déduire que : $\displaystyle 0 \leqslant ∫_0^1 \ e^{-x^2} dx \ -s_n \leqslant \frac{1}{n} $ .
Quelle valeur de $n$ faut-il choisir pour que $s_n$ soit une valeur approchée de $K$ à $10^{-4}$ près ?
Donner une valeur approchée à $10^{-4}$ près de cette intégrale $K$ à l’aide de vos fonctions Python de la partie II.
# Effectuer les saisies nécessaires
Georg Friedrich Bernhardt Riemann (1826-1866) est à l’origine de cette méthode d’approximation d’intégrales à l’aide de rectangles
(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/