Géométrie et courbes#
Dans un repère, les coordonnées permettent de transformer une question géométrique en calculs. Cette page montre aussi comment fabriquer des points sur une courbe : Python ne « voit » pas la figure, il calcule les coordonnées qu’on lui demande.
Dès la seconde
Alignement et déterminant#
Dans les programmes de cette page, un point est représenté par une liste de deux coordonnées :
Ainsi, A[0] désigne toujours l’abscisse et A[1] l’ordonnée. La même convention sera
utilisée pour tous les points de la page.
Pour \(A(x_A;y_A)\), \(B(x_B;y_B)\) et \(C(x_C;y_C)\), le nombre
est le déterminant des vecteurs \(\overrightarrow{AB}\) et \(\overrightarrow{AC}\). Les trois points sont alignés exactement lorsque \(d=0\).
Lorsque le déterminant n’est pas nul, les deux vecteurs délimitent un triangle d’aire non nulle.
Avec des coordonnées entières, le test d == 0 est exact. Si les coordonnées décimales
proviennent elles-mêmes de calculs, de petites erreurs d’arrondi sont possibles : on teste alors
plutôt abs(d) < 1e-10, c’est-à-dire que le déterminant est très proche de zéro.
Mise en pratique
Écrire une fonction sont_alignes(A, B, C) qui reçoit trois couples de coordonnées et
renvoie True si les points sont alignés, False sinon.
Une droite passant par deux points#
Lorsque \(x_A\ne x_B\), la droite passant par A et B a une équation \(y=mx+p\), avec
Si \(x_A=x_B\), la droite est verticale et son équation est \(x=x_A\). Il faut détecter ce cas avant de calculer le quotient.
Comment chercher ?
La dernière ligne du message indique une division par zéro. Calcule mentalement xB-xA,
puis traite séparément la situation où les deux abscisses sont égales.
Mise en pratique
Écrire une fonction equation_droite(A, B). Pour une droite non verticale, elle renvoie le
couple (m, p). Pour une droite verticale, elle renvoie ("verticale", x_A).
Approcher la longueur d’une courbe#
Python ne connaît pas spontanément les points de la courbe. Entre a et b, on choisit
n segments de même largeur :
On obtient donc n+1 points : \(M_0,M_1,\ldots,M_n\). La courbe est remplacée par la
ligne brisée qui les relie, puis les n longueurs sont additionnées.
La courbe bleue et les segments orange ne coïncident qu’aux points calculés.
Augmente n : la ligne brisée suit plus finement la courbe et les valeurs doivent se
stabiliser.
Mise en pratique
Écrire une fonction longueur_courbe(f, a, b, n) qui réalise ce calcul. Tester d’abord une
fonction constante, puis \(f(x)=x\) entre 0 et 1.
Observer des sécantes#
Dès la première
Cette application prépare la notion de nombre dérivé. Pour une fonction \(f\), la pente de la sécante passant par les points d’abscisses \(a\) et \(a+h\) vaut :
Lorsque h diminue, le second point se rapproche du premier et la sécante se rapproche de la
tangente.
La légende est commune aux trois droites. Le point \(B_2\) est plus proche de \(A\) que \(B_1\) : la sécante verte est donc déjà plus proche de la tangente en pointillés.
Mise en pratique
Écrire une fonction pentes_secantes(f, a, pas) qui renvoie une pente pour chacune des
valeurs positives de la liste pas.
Chercher une solution par balayage#
Lorsqu’une équation ne se résout pas facilement à la main, un balayage peut localiser une
solution. On part de a, puis on compare \(f(x)\) et \(f(x+pas)\) tant que le second
point ne dépasse pas b. Si les deux images sont de signes opposés, la continuité de la
fonction garantit une solution entre les deux abscisses.
Avec un pas de 0,1, l’encadrement reste large. Un pas de 0,001 demande davantage de calculs mais produit directement trois décimales d’encadrement. La dichotomie, étudiée plus loin, réduit l’intervalle plus efficacement.
La méthode peut ne rien trouver : la fonction peut ne pas s’annuler sur l’intervalle, le pas peut sauter deux racines très proches, ou la courbe peut toucher l’axe sans changer de signe. Un balayage donne donc une information numérique à interpréter, pas une preuve universelle.
Mise en pratique
Écrire une fonction encadrement_racine(f, a, b, pas) qui renvoie les deux premières valeurs
consécutives entre lesquelles f change de signe. Elle renvoie None si aucun changement
de signe n’est trouvé avant b. L’utiliser pour encadrer \(\sqrt2\).
None représente ici l’absence de résultat : ce n’est ni un nombre ni un intervalle. Une
instruction return None permet donc à la fonction de signaler clairement qu’elle a terminé
son balayage sans trouver de changement de signe.
Un défi sur les extrémums#
Un balayage peut aussi approcher un maximum : on calcule l’image de nombreux points et on garde en mémoire la meilleure image ainsi que l’abscisse correspondante.
Le test ne remplace les deux valeurs mémorisées que lorsqu’un meilleur point est rencontré.
Augmenter n resserre le quadrillage, mais augmente aussi le nombre de calculs.
Mise en pratique
Écrire une fonction maximum_balaye(f, a, b, n) qui renvoie le couple formé de l’abscisse
retenue et de la valeur maximale approchée. L’utiliser pour
\(f(x)=-x^2+6x-5\) sur \([0;6]\).
Dans le parcours