Soit \(A\) et \(B\) deux points du plan. On souhaite connaître les coordonnées du vecteur \(\overrightarrow{AB}\).
L'instance de la classe Vecteur associée au vecteur \(\overrightarrow{AB}\) sera notée vAB.
Compléter le constructeur de la classe Vecteur qui prend en paramètres deux instances A et B de la classe Point représentant deux points \(A\) et \(B\), et initialise les attributs x et y, qui représentent les coordonnées du vecteur \(\overrightarrow{AB}\).
Rappels mathématiques
Soit \(A\) et \(B\) deux points du plan, respectivement de coordonnées \((x_A, y_A)\) et \((x_B, y_B)\).
Alors le vecteur \(\overrightarrow{AB}\) aura pour coordonnées \((x, y)\) avec \(x = x_B - x_A\) et \(y = y_B - y_A\).
Soit \(A\) et \(B\) deux points du plan. On souhaite connaître la norme \(\lVert\overrightarrow{AB}\rVert\) du vecteur \(\overrightarrow{AB}\).
Écrire la méthode norme de la classe Vecteur qui renvoie la norme de ce vecteur.
Rappels mathématiques
Soit \(\overrightarrow{u}\) un vecteurs du plan, de coordonnées \((x_u, y_u)\).
Alors la norme de ce vecteur est \(\lVert\overrightarrow{u}\rVert = \sqrt{x_u^2 + y_u^2}\).
Exemples
>>> vAB.norme()5.0
Racine carrée d'un nombre
La fonction permettant de calculer la racine carrée d'un nombre positif fait partie du module math. Elle est importée au début de cette version de l'exercice : from math import sqrt.
\(\sqrt{5}\) s'obtient avec sqrt(5)
La valeur renvoyée est bien souvent une valeur approchée du résultat. Regardons par exemple \({\sqrt{3}}^2\)
🐍 Console Python
>>> sqrt(3)**22.9999999999999996
La fonction sqrt renvoie un nombre flottant (type float) :
🐍 Console Python
>>> sqrt(16)4.0
Comparaison de nombres flottants
Lorsqu'on écrit a = x ou x est un nombre réel, la valeur de a enregistrée en machine est une valeur approchée de x (quelques fois la valeur exacte).
Cette valeur approchée a la forme d'un nombre flottant (le type float en Python). En conséquence, alors que des calculs et des comparaisons peuvent être effectués de manière exacte sur des réels, ils ne le sont que de manière approchée sur leur représentation en machine.
On peut donc obtenir par exemple, avec a = x et b = y, l'expression a == b évaluée à True alors que x et y sont différents.
C'est pourquoi les tests ne vérifient pas l'égalité des résultats et des valeurs attendues mais leur proximité.
Ainsi, on peut vérifier que \(\sqrt{2} \approx 1,414214\) en faisantassertabs(1.414214-sqrt(2))<1e-6. Ce test vérifie que les deux valeurs sont proches à \(10^{-6}\) près.
###(Dés-)Active le code après la ligne # Tests (insensible à la casse) (Ctrl+I)
Entrer ou sortir du mode "deux colonnes" (Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran" (Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Écrire la méthode est_colineaire qui renvoie une valeur booléenne indiquant si le vecteur courant (celui sur lequel on applique la méthode) est colinéaire ou non avec une autre instance de la classe Vecteur passée en paramètre.
Remarque
Du fait des problèmes de comparaison entre nombres flottants, on se limitera à des coordonnées entières.
Rappels mathématiques
Soit \(\overrightarrow{u}\) et \(\overrightarrow{v}\) deux vecteurs du plan, respectivement de coordonnées \((x_u, y_u)\) et \((x_v, y_v)\).
Ces deux vecteurs sont colinéaires si et seulement si \(x_u \times y_v - x_v \times y_u= 0\).
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)