Calculer la valeur d’un angle avec le produit scalaire
En cette fin d’année, les élèves de 1ère abordent éventuellement le produit scalaire. Nous allons en voir une application pour déterminer la valeur d’un angle.
Un peu de mathématiques
Plaçons-nous dans un repère orthonormé, et considérons deux vecteurs \(\vec{u}\) et \(\vec{v}\) comme ci-dessous:

Nous cherchons à déterminer la valeur de l’angle \(\alpha\).
Pour cela, nous allons d’abord calculer le produit scalaire : $$\vec{u}\cdot\vec{v} = xx’ + yy’ = 7\times4 + 4\times(-4) = 12.$$
En effet, \(\vec{u}\displaystyle\binom{7}{4}\) car il faut avancer de 7 unités en abscisse et de 4 unités en ordonnées pour aller du point A au point B. De même, \(\vec{v}\displaystyle\binom{4}{-4}\).
Or, nous savons aussi que:$$\vec{u}\cdot\vec{v}=\|\vec{u}\| \times \|\vec{v}\| \times \cos(\vec{u},\vec{v}).$$ Or, $$\|\vec{u}\| = \sqrt{x_{\vec{u}}^2+y_{\vec{u}}^2}=\sqrt{7^2 + 4^2} = \sqrt{65}$$ et $$\|\vec{v}\| = \sqrt{x_{\vec{v}}^2+y_{\vec{v}}^2}=\sqrt{4^2 + (-4)^2} =4\sqrt{2}.$$Donc:$$\underbrace{\vec{u}\cdot\vec{v}}_{=12}=\sqrt{65}\times4\sqrt{2}\times\cos(\vec{u},\vec{v})$$soit:$$12=4\sqrt{130}\cos(\vec{u},\vec{v}).$$On en déduit alors:$$\cos(\vec{u},\vec{v})=\frac{12}{4\sqrt{130}}$$et donc :$$\alpha=\arccos\left( \frac{12}{4\sqrt{130}}\right)\approx75^\circ.$$
En Python
Nous venons de voir à l’instant une méthode que l’on peut généraliser pour écrire une fonction Python retournant une valeur approchée de l’angle en degrés.
from numpy import arccos,sqrt,pi def calcAngle(u,v): # u = (a,b) et v = (c,d) prodscal = u[0] * v[0] + u[1] * v[1] NormeU = sqrt(u[0]**2 + u[1]**2) NormeV = sqrt(v[0]**2 + v[1]**2) return arccos( prodscal / (NormeU * NormeV) ) * 180 / pi u = (7,4) v = (4,-4) print(calcAngle(u,v))