{"cells":[{"metadata":{},"cell_type":"markdown","source":"![En tête general](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/En_tete_general.png)\n\n\n© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n\n Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.\n"},{"metadata":{},"cell_type":"markdown","source":"# Longueur d'une courbe (Corrigé)"},{"metadata":{},"cell_type":"markdown","source":"__On considère la fonction $h$ définie par $h(x)=x^2$ pour $x∈\\mathbb{R}$.__\n\n\n*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]$.*\n\n*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.*\n\n*(Pour faire apparaître et activer la figure dynamique, sélectionner la cellule et valider avec SHIFT+Entrée).*\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"#Sélectionner cette zone puis SHIFT+ENTREE\nfrom IPython.display import HTML ; HTML(\"\"\"\"\"\")","execution_count":1,"outputs":[{"output_type":"execute_result","execution_count":1,"data":{"text/plain":"","text/html":""},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"__1. Ecrire une fonction Python h qui prend une valeur x en argument et renvoie l’image de $x$ par $h$.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"def h(x):\n return x**2","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__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$.__\n\nRappel : On peut calculer la racine carrée à l’aide de la fonction Python sqrt, accessible avec l’appel « from math import* ».\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from math import*\n\ndef long_segment(xA,yA,xB,yB):\n return sqrt((xB-xA)**2+(yB-yA)**2)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__3. Tester la fonction approx_long_courbe ci-dessous, qui permet de représenter les $4$ segments approchant la courbe de $h$.__\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import matplotlib.pyplot as plt\n\ndef approx_long_courbe():\n \n # initialisation du graphique\n plt.figure()\n \n for k in range(4):\n \n # calcul des abscisses de deux points consécutifs\n x1=k/4\n x2=(k+1)/4\n \n # affichage du segment reliant ces points\n plt.plot([x1,x2],[h(x1),h(x2)],color='blue')\n \n # ouverture de la fenetre graphique et affichage\n plt.show() \n \n # (fonctionnalités désactivées dans le Notebook Jupyter)\n # attente d'une action de clic sur la fenetre puis fermeture\n # plt.waitforbuttonpress() \n # plt.close() \n \n return None\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"approx_long_courbe()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__Compléter cette fonction pour qu’elle renvoie la longueur totale de la ligne polygonale.__\n\nAide : Calculer la longueur de chaque segment dans la boucle.\n\n__Donner une approximation de la longueur de la courbe de la fonction $h$ sur $[0;1]$.__\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import matplotlib.pyplot as plt\n\ndef approx_long_courbe(n=4):\n\n # initialisation du graphique\n plt.figure()\n \n # initialisaion de la variable pour la longueur totale\n Long=0\n \n for k in range(n):\n \n # calcul des abscisses de deux points consécutifs\n x1=k/n\n x2=(k+1)/n\n \n # affichage du segment reliant ces points\n plt.plot([x1,x2],[h(x1),h(x2)],color='blue')\n \n # incrémentation de la longueur totale\n Long=Long+long_segment(x1,h(x1),x2,h(x2))\n \n # ouverture de la fenetre graphique et affichage\n plt.show() \n \n return Long\n\na=approx_long_courbe()\n\na","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__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.__\n__Donner des approximations de la longueur de la courbe de la fonction $h$ sur $[0;1]$ obtenues avec $10$ segments, puis $1000$ segments.__\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"a=approx_long_courbe(10) \nb=approx_long_courbe(1000)\n\na , b","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__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]$.__\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"def f(x):\n return x**3\n\ndef approx_long_courbe_2(n=4):\n \n # initialisation du graphique\n plt.figure()\n \n # initialisaion de la variable pour la longueur totale\n Long=0\n \n for k in range(n):\n \n # calcul des abscisses de deux points consécutifs\n x1=-10+20*k/n\n x2=-10+20*(k+1)/n\n \n # affichage du segment reliant ces points\n plt.plot([x1,x2],[f(x1),f(x2)],color='blue')\n \n # incrémentation de la longueur totale\n Long=Long+long_segment(x1,f(x1),x2,f(x2))\n \n # ouverture de la fenetre graphique et affichage\n plt.show() \n \n return Long\n\na=approx_long_courbe_2(n=1000)\n\na","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n

\nDernière modification de l'activité : Juillet 2022"}],"metadata":{"celltoolbar":"Raw Cell Format","kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}