Équation de droites connaissant les coordonnées de deux points en Python

Nous allons voir sur cette page une manière de déterminer et d’afficher une équation réduite d’une droite passant par deux points de coordonnées connues, le tout en Python.

Équation de droites passant par deux points en Python

Approche mathématique

Considérons les deux points \(A(x_A;y_A)\) et \(B(x_B;y_B)\) par lesquels passent la droite dont on souhaite déterminer une équation réduite.

Rappelons qu’une équation réduite de droite est de la forme:$$y=mx+p$$où m est le coefficient directeur (autrement appelé la pente) de la droite, et p son ordonnée à l’origine.

D’après le cours, nous savons que:$$m=\frac{y_B-y_A}{x_B-x_A}.$$De plus, comme A appartient à la droite, ses coordonnées vérifient l’équation et donc:$$y_A=mx_A+p$$ce qui donne:$$p=y_A-mx_A.$$

Nous avons désormais tout ce qu’il faut pour écrire un programme qui permet de déterminer l’équation réduite de la droite (AB) en Python.

Détermination de l’équation en Python

Il nous faut avant tout demander les coordonnées des points A et B. Il y a plusieurs façons de faire. On peut par exemple faire comme ceci:

xA = int( input("Entrez l'abscisse de A : ") )
yA = int( input("Entrez l'ordonnée de A : ") )
xB = int( input("Entrez l'abscisse de B : ") )
yB = int( input("Entrez l'abscisse de B : ") )

Mais cette solution ne me convient pas car la saisie est trop longue (flemmard que je suis!). Je préfère entrer les coordonnées directement, séparées par une virgule. Le code Python est certes plus long, mais il en vaut la peine à mes yeux:

coordA = input('Entrez les coordonnées du point A : ')
A = coordA.split(',')

coordB = input('Entrez les coordonnées du point B : ')
B = coordB.split(',')

for n in range( 2 ):
    A[n] = float( A[n] )
    B[n] = float( B[n] )

Quand on entre (→ lignes 1 et 4) les coordonnées, les variables où elles sont stockées sont de type str (“string” → chaîne de caractères). C’est pour cela que je les convertis en listes (→ lignes 2 et 5) à l’aide de la méthode split(‘,’), qui se charge de séparer les chaînes de caractères en fonction des virgules. Ainsi, la chaîne de caractères “3,-6” sera transformée en la liste [‘3’ , ‘-6’]. Il reste cependant un inconvénient : les éléments de la liste ne sont pas des nombres. Il faut donc les transformer (→ lignes 7 à 9) en parcourant les listes ainsi formées et en transformant chaque élément de type str en type float (nombres réels).

Il ne reste plus qu’à utiliser les formules pour trouver m et p:

m = ( B[1] - A[1] ) / ( B[0] - A[0] )
p = A[1] - m * A[0]

print("L'équation réduite de (AB) est : y = {}x + {}".format(m,p))

Il faut avoir à l’esprit que A et B sont deux listes; donc A[0] représente le premier élément (l’abscisse de A) et A[1], le second (son ordonnée). De même pour B.

Le programme complet donne alors:

coordA = input('Entrez les coordonnées du point A : ')
A = coordA.split(',')

coordB = input('Entrez les coordonnées du point B : ')
B = coordB.split(',')

for n in range( 2 ):
    A[n] = float( A[n] )
    B[n] = float( B[n] )

m = ( B[1] - A[1] ) / ( B[0] - A[0] )
p = A[1] - m * A[0]

print("L'équation réduite de (AB) est : y = {}x + {}".format(m,p))

Ce qui donne par exemple:
Entrez les coordonnées du point A : 5,-9
Entrez les coordonnées du point B : 1,2
L'équation réduite de (AB) est : y = -2.75x + 4.75

Malheureusement, avec cette solution, on ne peut pas entrer de fractions comme coordonnées des points. Mais on pourrait modifier ce programme en faisant appel au module fractions de Python. Cela donne:

from fractions import Fraction

coordA = input('Entrez les coordonnées du point A : ')
A = coordA.split(',')

coordB = input('Entrez les coordonnées du point B : ')
B = coordB.split(',')

for n in range( 2 ):
    A[n] = Fraction( A[n] )
    B[n] = Fraction( B[n] )

m = ( B[1] - A[1] ) / ( B[0] - A[0] )
p = A[1] - m * A[0]

print("L'équation réduite de (AB) est : y = {}x + {}".format(m,p))

On obtient par exemple:

Entrez les coordonnées du point A : 1/3,2/3
Entrez les coordonnées du point B : -1/7,3/7
L'équation réduite de (AB) est : y = 1/2x + 1/2

Elle est pas belle la vie ?

N’oubliez pas que si vous avez des difficultés en mathématiques, je peux vous aider par webcam !

[Retour aux ressources Python]