Droite par deux points, alignement et algorithme

Énoncé

Soit A(-1 ; 3), B(2 ; -3) et C(4 ; -7). a) Déterminer une équation cartésienne de la droite (AB). b) En déduire que les points A, B et C sont alignés. Le vérifier avec le déterminant de AB⃗ et AC⃗. c) On considère l'algorithme suivant, écrit en langage naturel : ``` a ← yB − yA b ← xA − xB c ← −(a × xA + b × yA) afficher a, b, c ``` Le faire fonctionner avec les points A et B. Que représentent les trois nombres affichés ? d) La fonction Python suivante doit renvoyer `True` exactement quand les trois points sont alignés. Par quoi faut-il remplacer les points de suspension ? ```python def alignes(xA, yA, xB, yB, xC, yC): d = (xB - xA) * (yC - yA) - ... return d == 0 ```

Indice : Avec le vecteur directeur AB⃗ : M ∈ (AB) ⟺ det(AM⃗, AB⃗) = 0.

Correction

  1. Étape 1 : Deux points distincts donnent un vecteur directeur, AB⃗ : on est ramené à « un point et un vecteur directeur ». Trois points alignés : deux tests équivalents : par l'équation : on détermine une équation de (AB), puis on teste si C la vérifie ; par le déterminant : A, B, C alignés ⟺ det(AB⃗, AC⃗) = 0. 👉 Un algorithme ne fait rien d'autre que ces calculs : la question c) en fait fonctionner un à la main, la question d) en complète un autre.
  2. Étape 2 : a) AB⃗(2 - (-1) ; -3 - 3) = (3 ; -6). Pour M(x ; y), AM⃗(x + 1 ; y - 3) : det(AM⃗, AB⃗) = (x + 1) × (-6) - 3 × (y - 3) = -6x - 6 - 3y + 9 = -6x - 3y + 3 Une équation est -6x - 3y + 3 = 0 ; en divisant par -3 : (AB) : 2x + y - 1 = 0 Contrôle : A : -2 + 3 - 1 = 0 ; B : 4 - 3 - 1 = 0.

    (AB) : 2x + y - 1 = 0

  3. Étape 3 : b) On teste C(4 ; -7) : 2 × 4 + (-7) - 1 = 8 - 7 - 1 = 0. C est sur la droite (AB) : les trois points sont alignés. Vérification par le déterminant : AC⃗(4 - (-1) ; -7 - 3) = (5 ; -10), et det(AB⃗, AC⃗) = 3 × (-10) - 5 × (-6) = -30 + 30 = 0 Les deux méthodes concordent.

    det(AB⃗, AC⃗) = 0

  4. Étape 4 : c) On remplace : xA = -1, yA = 3, xB = 2, yB = -3. a ← -3 - 3 = -6 b ← -1 - 2 = -3 c ← -((-6) × (-1) + (-3) × 3) = -(6 - 9) = 3 L'algorithme affiche -6, -3, 3 : ce sont les coefficients d'une équation cartésienne de (AB), -6x - 3y + 3 = 0 — exactement celle trouvée en a) avant la division par -3. 👉 Pourquoi : (a ; b) = (yB - yA ; xA - xB) est choisi pour que (-b ; a) = AB⃗ soit un vecteur directeur, et c est calculé pour que A vérifie l'équation.

    -6x - 3y + 3 = 0

  5. Étape 5 : d) La fonction doit calculer le déterminant de AB⃗(xB - xA ; yB - yA) et AC⃗(xC - xA ; yC - yA) : d = (xB - xA)(yC - yA) - (xC - xA)(yB - yA) Le premier produit en croix est déjà écrit : il manque le second, que l'on soustrait. On remplace donc les points de suspension par « (xC - xA) * (yB - yA) ». Avec les points de l'énoncé, d = 3 × (-10) - 5 × (-6) = 0, et la fonction renvoie « True » : les points sont alignés, comme en b). ℹ️ Le test « d == 0 » est sûr avec des coordonnées entières. Avec des décimaux, les calculs en flottants peuvent laisser un résultat très proche de 0 sans être nul : on teste alors « abs(d) < 1e-9 ».
  6. Étape 6 : L'erreur classique : Calculer le déterminant « ligne à ligne » : x × x' - y × y', ici 3 × 5 - (-6) × (-10) = 15 - 60 = -45, et conclure à tort que les points ne sont pas alignés. Le déterminant croise : l'abscisse du premier vecteur avec l'ordonnée du second, moins l'abscisse du second avec l'ordonnée du premier. À retenir : Droite par deux points : vecteur directeur AB⃗, puis det(AM⃗, AB⃗) = 0. 👉 Alignement : det(AB⃗, AC⃗) = 0 — un calcul assez simple pour être confié à une machine.