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 :

Exemple
Représenter un point
Prêt
Sortie

  

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

\[d=(x_B-x_A)(y_C-y_A)-(y_B-y_A)(x_C-x_A)\]

est le déterminant des vecteurs \(\overrightarrow{AB}\) et \(\overrightarrow{AC}\). Les trois points sont alignés exactement lorsque \(d=0\).

Exemple
Calculer un déterminant
Prêt
Sortie

  

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.

À toi
Trois points alignés
À faire
Sortie

  

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

\[m=\frac{y_B-y_A}{x_B-x_A} \qquad\text{et}\qquad p=y_A-mx_A.\]

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.

À corriger
Une division impossible
Erreur attendue
Sortie

  
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).

À toi
Droite passant par deux points
À faire
Sortie

  

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 :

\[h=\frac{b-a}{n},\qquad x_i=a+ih,\qquad M_i=(x_i;f(x_i)).\]

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.

Exemple
Construire les points et additionner
Prêt
Sortie

  

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.

À toi
Longueur polygonale
À faire
Sortie

  

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 :

\[\frac{f(a+h)-f(a)}{h}.\]

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.

Exemple
Calculer plusieurs pentes
Prêt
Sortie

  

Mise en pratique

Écrire une fonction pentes_secantes(f, a, pas) qui renvoie une pente pour chacune des valeurs positives de la liste pas.

À toi
Liste de pentes
À faire
Sortie

  

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.

Exemple
Encadrer la racine carrée de 2
Prêt
Sortie

  

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.

À toi
Encadrement par balayage
À faire
Sortie

  

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.

Exemple
Mémoriser la meilleure valeur
Prêt
Sortie

  

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]\).

À toi
Réduire la zone du maximum
À faire
Sortie

  

Dans le parcours