(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.
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 display, HTML ; display(HTML('fig_dyn_GeoGebra/Longueur_courbe.html'))
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():
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):
# 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
1.4742804757093162
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
(1.4781973974873288, 1.4789427830089974)
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):
# 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
2001.3938362296606
(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/