© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
Les activités partagées sur Capytale sont sous licence Creative Commons.
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
Dans cette activité, on admet qu'il existe une unique fonction $f$ dérivable sur $\mathbb{R}$ vérifiant :$\quad\quad$NB : Cette fonction est la fonction exponentielle et se note $\exp$.
- $f'=f$
- $f(0)=1$
$h>0$ étant fixé, les abscisses $(x_n)_{n \geq 0}$ des points $(M_n)_{n \geq 0}$ vérifient :
- $x_0=0$
- $x_{n+1}=x_n+h$ pour tout $n \in \mathbb{N}$
1.1. Donner la nature de la suite $(x_n)_{n \geq 0}$, et en déduire une expression de $x_n$ en fonction de $h$ et $n$.
La suite $(x_n)_{n \geq 0}$ est arithmétique :
1.2. Écrire une fonction Python x d'arguments h et n (dans cet ordre) qui renvoie la valeur $x_n$.
# Écrire ici la fonction x d'arguments h et n
def x(h,n):
"""
fonction qui renvoie la valeur de l'abscisse x_n du point A_n
"""
return n*h
$h>0$ étant fixé, on note $(y_n)_{n \geq 0}$ les ordonnées des points $(M_n)_{n \geq 0}$ que l'on cherche à construire.
Comme $x_0=0$ et $f(0)=1$, on pose $y_0=1$.
2.2. En considérant que $h$ est fixé "suffisamment petit", on estime que les points $M_{n+1}$ et $S$ sont très proches, c'est à dire que $y_{n+1} = (1+h)y_n$.
$\quad\;$ a. Donner la nature de la suite $(y_n)_{n \geq 0}$.
$\quad\;$ b. En déduire l'expression de $y_n$ en fonction de $h$ et $n$.
$\quad\;$ c. Écrire une fonction Python y d'arguments h et n (dans cet ordre) qui renvoie la valeur $y_n$.
# Écrire ici la fonction y d'arguments h et n
def y(h,n):
"""
fonction qui renvoie une valeur approchée de l'ordonnée y_n du point A_n
"""
return (1+h)**n
3.1.a. Exécuter la cellule ci-dessous, qui permet de générer la liste des abscisses $x_0$, $x_1$, $x_2$ pour $h=0,1$.
# Exécuter cette cellule
h = 0.1
[ x(h,n) for n in range(3) ]
[0.0, 0.1, 0.2]
$\quad\;$b. Écrire une fonction Python L_x qui reçoit h et N en arguments (dans cet ordre) et qui renvoie la liste des abscisses $x_0$, $x_1$, ..., $x_N$.
# Écrire ici la fonction L_x
def L_x(h,N):
"""
fonction qui renvoie les N+1 premières abscisses
"""
return [ x(h,n) for n in range(N+1) ]
$\quad\;$c. Écrire une fonction Python L_y qui reçoit h et N en arguments (dans cet ordre) et qui renvoie la liste des ordonnées $y_0$, $y_1$, ..., $y_N$.
# Écrire ici la fonction L_y
def L_y(h,N):
"""
fonction qui renvoie les N+1 premières ordonnées
"""
return [ y(h,n) for n in range(N+1) ]
La fonction Graphique_Euler fournie ci-dessous permet de représenter les points $M_n$ pour $0 \leq n \leq N$ dans un repère.
L'appel effectué permet d'obtenir des curseurs permettant de paramétrer :
3.2. Exécuter la cellule ci-dessous. À l'aide des curseurs, observer le nuage de points obtenu, et en particulier le gain en précision lorsqu'on prend des valeurs de $h$ "suffisamment petites".
NB : L'exécution de cette cellule nécessite que les fonctions L_x et L_y aient été préalablement définies.
import matplotlib.pyplot as plt
from ipywidgets import interact, widgets
def Graphique_Euler(h,N,xmin,xmax,ymin,ymax):
# initialisation du graphique
fig = plt.figure()
# paramétrage des axes
ax = fig.gca()
ax.set_xticks([x for x in range(xmin,xmax+1,1 if xmax-xmin<25 else 5)])
ax.set_yticks([y for y in range(ymin,ymax+1,1 if ymax-ymin<25 else 5)])
plt.plot([xmin,xmax],[0,0],color='black')
plt.plot([0,0],[ymin,ymax],color='black')
plt.axis([xmin,xmax,ymin,ymax])
plt.grid()
# représentation graphique des points
plt.scatter( L_x(h,N), L_y(h,N), s=10, color='purple' )
plt.show()
interact(Graphique_Euler,
h = widgets.FloatSlider (min=.01, max=0.5, step=.01, value=.25),
N = widgets.IntSlider (min=0 , max=100, step=5 , value=5 ),
xmin = widgets.IntSlider (min=-20, max=-5 , step=5 , value=-3 ),
xmax = widgets.IntSlider (min=0 , max=20 , step=5 , value=10 ),
ymin = widgets.IntSlider (min=-15, max=-5 , step=5 , value=-2 ),
ymax = widgets.IntSlider (min=0 , max=100, step=5 , value=10 ),
)
interactive(children=(FloatSlider(value=0.25, description='h', max=0.5, min=0.01, step=0.01), IntSlider(value=…
<function __main__.Graphique_Euler(h, N, xmin, xmax, ymin, ymax)>
3.3. On admet que la même méthode permet d'approcher la courbe $C_f$ par des points d'abscisses négatives, en prenant $h<0$.
$\quad\;\;$Exécuter la cellule ci-dessous pour observer un tel nuage de points.
interact(Graphique_Euler,
h = widgets.FloatSlider (min=-0.5, max=-0.01, step=.01, value=-.25),
N = widgets.IntSlider (min=0 , max=100 , step=5 , value=5 ),
xmin = widgets.IntSlider (min=-20 , max=-5 , step=5 , value=-3 ),
xmax = widgets.IntSlider (min=0 , max=20 , step=5 , value=10 ),
ymin = widgets.IntSlider (min=-15 , max=-5 , step=5 , value=-2 ),
ymax = widgets.IntSlider (min=0 , max=100 , step=5 , value=10 ),
)
interactive(children=(FloatSlider(value=-0.25, description='h', max=-0.01, min=-0.5, step=0.01), IntSlider(val…
<function __main__.Graphique_Euler(h, N, xmin, xmax, ymin, ymax)>
On appelle nombre d'Euler (et on note $e$) l'image de 1 par la fonction $f$, c'est à dire $e = f(1) = \exp (1)$
4.1. On fixe $N \in \mathbb{N}^*$ et on pose $h=\displaystyle \frac{1}{N}$.
$\quad\;\;$Déterminer la valeur de $x_N$, et en déduire que $y_N \approx e$.
4.2. À l'aide d'un appel à la fonction L_y, déterminer une valeur approchée de $e$ en prenant $N=10000$.
$\quad\;\;$Aide : Pour une liste Python L, la syntaxe L[-1] permet d'obtenir la valeur du dernier élément de la liste.
# Effectuer ici un appel à la fonction L_y
L_y(1/10000,10000)[-1]
2.7181459268249255
© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
Les activités partagées sur Capytale sont sous licence Creative Commons.
Dernière modification de l'activité : Juillet 2022