© 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.
On considère la fonction $h$ définie par $h(x)=x^2$ pour $x∈\mathbb{R}$.
Le but de l’exercice est de déterminer des valeurs approchées de la longueur de la portion de la courbe de la fonction $h$ pour $x∈[0;1]$.
Pour cela, on décide dans un premier temps d’approcher la courbe à l’aide de $4$ segments, en utilisant des abscisses régulièrement espacées, comme indiqué sur la figure ci-dessous.
(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 HTML ; HTML("""<iframe scrolling="no" title="Longueur d'une courbe" src="https://www.geogebra.org/material/iframe/id/qskuraat/width/520/height/520/border/888888/sfsb/true/smb/false/stb/false/stbh/false/ai/false/asb/false/sri/false/rc/false/ld/false/sdz/false/ctl/false" width="520px" height="520px" style="border:0px;"> </iframe>""")
1. Ecrire une fonction Python h qui prend une valeur x en argument et renvoie l’image de $x$ par $h$.
def h(x):
return x**2
2. Ecrire une fonction Python long_segment qui prend en argument les coordonnées de deux points $A(x_A;y_A)$, $B(x_B;y_B)$ et qui renvoie la longueur du segment $AB$.
Rappel : On peut calculer la racine carrée à l’aide de la fonction Python sqrt, accessible avec l’appel « from math import* ».
from math import*
def long_segment(xA,yA,xB,yB):
return sqrt((xB-xA)**2+(yB-yA)**2)
3. Tester la fonction approx_long_courbe ci-dessous, qui permet de représenter les $4$ segments approchant la courbe de $h$.
import matplotlib.pyplot as plt
def approx_long_courbe():
# initialisation du graphique
plt.figure()
for k in range(4):
# calcul des abscisses de deux points consécutifs
x1=k/4
x2=(k+1)/4
# affichage du segment reliant ces points
plt.plot([x1,x2],[h(x1),h(x2)],color='blue')
# ouverture de la fenetre graphique et affichage
plt.show()
# (fonctionnalités désactivées dans le Notebook Jupyter)
# attente d'une action de clic sur la fenetre puis fermeture
# plt.waitforbuttonpress()
# plt.close()
return None
approx_long_courbe()
Compléter cette fonction pour qu’elle renvoie la longueur totale de la ligne polygonale.
Aide : Calculer la longueur de chaque segment dans la boucle.
Donner une approximation de la longueur de la courbe de la fonction $h$ sur $[0;1]$.
import matplotlib.pyplot as plt
def approx_long_courbe(n=4):
# initialisation du graphique
plt.figure()
# initialisaion de la variable pour la longueur totale
Long=0
for k in range(n):
# calcul des abscisses de deux points consécutifs
x1=k/n
x2=(k+1)/n
# affichage du segment reliant ces points
plt.plot([x1,x2],[h(x1),h(x2)],color='blue')
# incrémentation de la longueur totale
Long=Long+long_segment(x1,h(x1),x2,h(x2))
# ouverture de la fenetre graphique et affichage
plt.show()
return Long
a=approx_long_courbe()
a
4. Modifier la fonction pour qu’elle permette l’affichage et le calcul de la longueur d’une ligne polygonale composée de $n$ segments, où $n$ est un entier non nul donné en argument. Donner des approximations de la longueur de la courbe de la fonction $h$ sur $[0;1]$ obtenues avec $10$ segments, puis $1000$ segments.
a=approx_long_courbe(10)
b=approx_long_courbe(1000)
a , b
5. Pour aller plus loin : Adapter la méthode précédente pour donner une approximation de la longueur de la courbe des cubes sur l’intervalle $[-10;10]$.
def f(x):
return x**3
def approx_long_courbe_2(n=4):
# initialisation du graphique
plt.figure()
# initialisaion de la variable pour la longueur totale
Long=0
for k in range(n):
# calcul des abscisses de deux points consécutifs
x1=-10+20*k/n
x2=-10+20*(k+1)/n
# affichage du segment reliant ces points
plt.plot([x1,x2],[f(x1),f(x2)],color='blue')
# incrémentation de la longueur totale
Long=Long+long_segment(x1,f(x1),x2,f(x2))
# ouverture de la fenetre graphique et affichage
plt.show()
return Long
a=approx_long_courbe_2(n=1000)
a
© 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