En Python, vous pouvez calculer les fonctions trigonométriques (sin, cos, tan) et les fonctions trigonométriques inverses (arcsin, arccos, arctan) avec le module 𝐦𝐚𝐭𝐡 .
- Pi (π): 𝐦𝐚𝐭𝐡.𝐩𝐢
- Conversion d’angle entre radians et degrés : 𝐦𝐚𝐭𝐡.𝐝𝐞𝐠𝐫𝐞𝐞𝐬() , 𝐦𝐚𝐭𝐡.𝐫𝐚𝐝𝐢𝐚𝐧𝐬()
- Sinus et arc sinusal : 𝐦𝐚𝐭𝐡.𝐬𝐢𝐧() , 𝐦𝐚𝐭𝐡.𝐚𝐬𝐢𝐧()
- Cosinus et arc cosinus : 𝐦𝐚𝐭𝐡.𝐜𝐨𝐬() , 𝐦𝐚𝐭𝐡.𝐚𝐜𝐨𝐬()
- Tangente et arc tangente : 𝐦𝐚𝐭𝐡.𝐭𝐚𝐧() , 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() , 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2()
- Différences entre 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() et 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2()
- Negative zero
Pour plus d’informations sur les fonctions trigonométriques dans NumPy, consultez l’article suivant.
Tous les exemples de code de cet article supposent que le module 𝐦𝐚𝐭𝐡 a été importé.
import math
Pi (π): 𝐦𝐚𝐭𝐡.𝐩𝐢
La constante mathématique pi (π) est disponible sous forme de constante dans le module 𝐦𝐚𝐭𝐡 et est représentée par 𝐦𝐚𝐭𝐡.𝐩𝐢 .
print(math.pi) # 3.141592653589793
Conversion d’angle entre radians et degrés : 𝐦𝐚𝐭𝐡.𝐝𝐞𝐠𝐫𝐞𝐞𝐬() , 𝐦𝐚𝐭𝐡.𝐫𝐚𝐝𝐢𝐚𝐧𝐬()
Dans le module 𝐦𝐚𝐭𝐡 , les fonctions trigonométriques et trigonométriques inverses utilisent les radians comme unité d’angles.
Pour convertir entre les radians et les degrés, utilisez 𝐦𝐚𝐭𝐡.𝐝𝐞𝐠𝐫𝐞𝐞𝐬() et 𝐦𝐚𝐭𝐡.𝐫𝐚𝐝𝐢𝐚𝐧𝐬() .
𝐦𝐚𝐭𝐡.𝐝𝐞𝐠𝐫𝐞𝐞𝐬() convertit les radians en degrés, tandis que 𝐦𝐚𝐭𝐡.𝐫𝐚𝐝𝐢𝐚𝐧𝐬() convertit les degrés en radians.
print(math.degrees(math.pi)) # 180.0 print(math.radians(180)) # 3.141592653589793
Sinus et arc sinusal : 𝐦𝐚𝐭𝐡.𝐬𝐢𝐧() , 𝐦𝐚𝐭𝐡.𝐚𝐬𝐢𝐧()
Utilisez 𝐦𝐚𝐭𝐡.𝐬𝐢𝐧() pour la fonction sinus et 𝐦𝐚𝐭𝐡.𝐚𝐬𝐢𝐧() pour son inverse.
Voici un exemple de recherche du sinus de 30 degrés. Utilisez 𝐦𝐚𝐭𝐡.𝐫𝐚𝐝𝐢𝐚𝐧𝐬() pour convertir les degrés en radians.
sin30 = math.sin(math.radians(30)) print(sin30) # 0.49999999999999994
Le sinus de 30 degrés devrait être de 0,5, mais comme pi est un nombre irrationnel, il peut y avoir de petites erreurs dans le calcul en raison d’approximations.
Pour arrondir à un nombre spécifique de décimales, utilisez la fonction 𝐫𝐨𝐮𝐧𝐝() , en spécifiant le nombre de décimales souhaité comme deuxième argument. Notez que cette fonction utilise « l’arrondi à la moitié près » ou « l’arrondi bancaire », ce qui signifie qu’elle arrondit au nombre paire le plus proche.
print(round(sin30, 1)) # 0.5
Pour comparer des valeurs tout en tenant compte des erreurs potentielles, vous pouvez utiliser 𝐦𝐚𝐭𝐡.𝐢𝐬𝐜𝐥𝐨𝐬𝐞() .
print(math.isclose(sin30, 0.5)) # True
De même, voici un exemple de recherche du sinus inverse de 0,5. Étant donné que 𝐦𝐚𝐭𝐡.𝐚𝐬𝐢𝐧() renvoie des radians, 𝐦𝐚𝐭𝐡.𝐝𝐞𝐠𝐫𝐞𝐞𝐬() est utilisé pour convertir le résultat en degrés.
asin05 = math.degrees(math.asin(0.5)) print(asin05) # 29.999999999999996 print(round(asin05, 1)) # 30.0
Cosinus et arc cosinus : 𝐦𝐚𝐭𝐡.𝐜𝐨𝐬() , 𝐦𝐚𝐭𝐡.𝐚𝐜𝐨𝐬()
Utilisez 𝐦𝐚𝐭𝐡.𝐜𝐨𝐬() pour la fonction cosinus et 𝐦𝐚𝐭𝐡.𝐚𝐜𝐨𝐬() pour son inverse.
Voici un exemple de recherche du cosinus de 60 degrés et de l’arc cosinus de 0,5.
print(math.cos(math.radians(60))) # 0.5000000000000001 print(math.degrees(math.acos(0.5))) # 59.99999999999999
Pour arrondir à un nombre spécifique de décimales, vous pouvez utiliser 𝐫𝐨𝐮𝐧𝐝() comme expliqué dans la section précédente.
Tangente et arc tangente : 𝐦𝐚𝐭𝐡.𝐭𝐚𝐧() , 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() , 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2()
Utilisez 𝐦𝐚𝐭𝐡.𝐭𝐚𝐧() pour la fonction tangente. Les fonctions inverses sont 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() et 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2() , les différences entre elles étant décrites ci-dessous.
Voici un exemple de recherche de la tangente de 45 degrés et de l’arc tangente de 1.
print(math.tan(math.radians(45))) # 0.9999999999999999 print(math.degrees(math.atan(1))) # 45.0
Pour arrondir à un nombre spécifique de décimales, vous pouvez utiliser 𝐫𝐨𝐮𝐧𝐝() comme expliqué dans la section précédente.
Différences entre 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() et 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2()
Bien que 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() et 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2() calcule l’arc tangente, ils diffèrent dans le nombre d’arguments qu’ils acceptent et la plage de leurs valeurs de sortie.
- math.atan() — Fonctions mathématiques — Documentation Python 3.11.4
- math.atan2() — Fonctions mathématiques — Documentation Python 3.11.4
La valeur de retour de 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧(𝐱) est de -90 à 90 degrés
𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧(𝐱) prend un argument et renvoie « arctan(x) » en radians. La valeur renvoyée est comprise entre -pi/2 et pi/2 (-90 degrés à 90 degrés).
print(math.degrees(math.atan(0))) # 0.0 print(math.degrees(math.atan(1))) # 45.0 print(math.degrees(math.atan(-1))) # -45.0 print(math.degrees(math.atan(math.inf))) # 90.0 print(math.degrees(math.atan(-math.inf))) # -90.0
Dans l’exemple ci-dessus, 𝐦𝐚𝐭𝐡.𝐢𝐧𝐟 représente l’infini.
La valeur de retour de 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2(𝐲, 𝐱) est de -180 à 180 degrés
𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2(𝐲, 𝐱) prend deux arguments et renvoie « arctan(y / x) » en radians. Cet angle est l’angle polaire du vecteur de l’origine au point (𝐱, 𝐲) dans le plan de coordonnées polaires, et la valeur renvoyée est comprise entre -pi et pi (-180 degrés à 180 degrés).
𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2() est plus adapté que 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() lorsque vous travaillez dans le plan de coordonnées polaires, car il peut également déterminer correctement les angles dans les deuxième et troisième quadrants.
Notez que l’ordre des arguments est 𝐲, 𝐱 et non 𝐱, 𝐲 .
print(math.degrees(math.atan2(0, 1))) # 0.0 print(math.degrees(math.atan2(1, 1))) # 45.0 print(math.degrees(math.atan2(1, 0))) # 90.0 print(math.degrees(math.atan2(1, -1))) # 135.0 print(math.degrees(math.atan2(0, -1))) # 180.0 print(math.degrees(math.atan2(-1, -1))) # -135.0 print(math.degrees(math.atan2(-1, 0))) # -90.0 print(math.degrees(math.atan2(-1, 1))) # -45.0
Zéro négatif
Dans 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2() , comme dans l’exemple ci-dessus, l’angle dans la direction négative de l’axe des x ( 𝐲 est 0 et 𝐱 a une valeur négative) est pi (180 degrés). Cependant, lorsque 𝐲 est négatif zéro, l’angle est -pi (-180 degrés). Soyez prudent si vous devez manipuler le signe avec précision.
print(math.degrees(math.atan2(-0.0, -1))) # -180.0
Un zéro négatif peut être généré à la suite de certaines opérations.
print(-1 / math.inf) # -0.0 print(-1.0 * 0.0) # -0.0
Il n’y a pas de zéro négatif dans les entiers ( 𝐢𝐧𝐭 ).
print(-0.0) # -0.0 print(-0) # 0
Dans les cas où 𝐱 et 𝐲 sont tous deux nuls (origine), le résultat peut différer en fonction de leurs signes.
print(math.degrees(math.atan2(0.0, 0.0))) # 0.0 print(math.degrees(math.atan2(-0.0, 0.0))) # -0.0 print(math.degrees(math.atan2(-0.0, -0.0))) # -180.0 print(math.degrees(math.atan2(0.0, -0.0))) # 180.0
Non seulement 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧2() , mais aussi 𝐦𝐚𝐭𝐡.𝐬𝐢𝐧 ( ) , 𝐦𝐚𝐭𝐡.𝐭𝐚𝐧() , et 𝐦𝐚𝐭𝐡.𝐚𝐭𝐚𝐧() peut produire des résultats avec des signes différents en raison du zéro négatif.
print(math.sin(0.0)) # 0.0 print(math.sin(-0.0)) # -0.0 print(math.asin(0.0)) # 0.0 print(math.asin(-0.0)) # -0.0 print(math.tan(0.0)) # 0.0 print(math.tan(-0.0)) # -0.0 print(math.atan(0.0)) # 0.0 print(math.atan(-0.0)) # -0.0 print(math.atan2(0.0, 1.0)) # 0.0 print(math.atan2(-0.0, 1.0)) # -0.0