Lors de l’élaboration de vos programmes, vous aurez certainement des calculs à réaliser. Dans vos calculs, vous pourrez avoir besoin de certaines fonctions mathématiques. La librairie « math » vous aide une petite collection de fonctions mathématiques usuelles.

La première étape consiste à importer le module avec l’instruction « import ».
import math
Les fonctions arithmétiques du module math
Le module intègre plusieurs fonctions arithmétiques qui peuvent être utile.
La fonction CEIL
Cette fonction renvoie le nombre entier supérieur direct. Par « ceil », il faut comprendre « plafond » d’où la valeur entière directement supérieure. Il faut donc faire attention au comportement de cette fonction avec les nombres négatifs. En effet, la valeur absolue du résultat de la fonction « ceil » pour une variable X et -X ne donnera pas la même valeur.
import math
math.ceil(3.2)
>>> 4
math.ceil(-3.2)
>>> -3La fonction FLOOR
Cette fonction fonctionne à l’opposé de la fonction « ceil ». Par « floor », il faut comprendre « plancher ». La fonction renverra donc la valeur entière « pancher ». Ce sera la valeur entière directement inférieure.
math.floor(3.2)
>>> 3
math.floor(-3.2)
>>> -4La fonction TRUNC
La fonction « trunc » permet de récupérer la partie entière d’un nombre sans chercher un arrondi supérieur ou inférieur.
math.trunc(3.2)
>>> 3
math.trunc(-3.2)
>>> -3La fonction FACTORIAL
Cette fonction renvoie le résultat de l’opérateur factoriel. L’argument est forcément un nombre entier positif. Le résultat de l’opérateur factoriel N est la multiplication de tous les nombres entiers de 1 à N.
math.factorial(4)  # 1 x 2 x 3 x 4 = 24 
>>> 24La fonction FSUM
La fonction « fsum » évite de perdre en précision lorsqu’on somme sur une liste de valeurs. Le delta n’est pas énorme mais cela peut engendrer des erreurs dans votre code. C’est donc important de l’avoir en tête.
liste=[.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]
sum(liste)
>>> 0.9999999999999999
math.fsum(liste)
>>> 1.0
sum(liste) == math.fsum(liste)
>>> FalseLa fonction GCD, plus grand commun diviseur
Cette fonction nous replonge dans nos cours de mathématiques du collège :). La fonction « gcd » renvoie le plus grand commun diviseur. C’est la plus grande valeur qui permet de diviser les deux nombres, sachant que le résultat doit être un nombre entier.
math.gcd(125,20)
>>> 5La fonction ISCLOSE
math.isclose(a,b, rel_tol=1e-09, abs_tol = 0.0)
Nous pouvons nous trouver dans des situations où nous comparons des nombres qui ont des précisions différentes. Au lieu d’écrire une comparaison complexe sur plusieurs lignes, la fonction « isclose » permet de comparer deux valeurs de façon compacte. La fonction demande deux valeurs à comparer et les tolérances pour la comparaison.
a,b = 10, 10.1
math.isclose(a,b)
>>> False
math.isclose(a,b,rel_tol=0.05)  # Tolérance relative à 5%
>>> True
math.isclose(a,b,abs_tol=0.01)  # Tolérance absolue à 0.01
>>> FalseLa fonction ISNAN
Quand vous manipulez des données, vous aurez parfois besoin de contrôler l’information que vous utilisez. La fonction « isnan() » permet de savoir si la variable est un nombre ou non. « NaN » est l’acronymie de « Not a Number » ou « Pas un Nombre » en français :).
x, y = math.nan, 2.5
math.isnan(x)
>>> True
math.isnan(y)
>>> FalseFonctions logarithme et exponentielle du module math
Le module « math » permet d’utiliser la fonction exponentielle et logarithme. Il existe des fonctions prédéfinies pour les bases usuelles du logarithme mais il est possible de définir une base personnalisée.
math.exp(2)
>>> 7.38905609893065
math.log2(4)  # logarithme de base 2
>>> 2.0
math.log10(100)  # logarithme de base 10
>>> 2.0
math.log(27,3)  # logarithme de base quelconque, ici 3
>>> 3.0Il y a aussi les fonctions « .pow() », « .sqrt », « .cbrt » qui permettent de calculer une valeur élevée à une puissance, la racine carrée et la racine cubique.
math.pow(3, 2)  # 3 est élevé à la puissance 2 soit 9
>>> 9.0
math.sqrt(9.0)  # racine carrée
>>> 3.0
math.cbrt(8)  # racine cubique, à partir de la version 3.11 de Python
>>> 2
math.pow(8, 1/3)  # équivalent à la racine cubique
>>> 2.0
math.pow(9, 1/2)  # équivalent à la racine carrée
>>> 3.0Les fonctions trigonométriques
Le module « math » propose également toutes les fonctions trigonométriques usuelles : sinus, cosinus, tangente …. La valeur donnée à la fonction doit être en radians.
math.cos(math.pi/3)
>>> 0.5000000000000001
math.sinus(math.pi/2)
>>> 1.0
math.tan(math.pi/4)
>>> 0.9999999999999999
Les fonctions inverses sont bien entendues disponibles : math.atan(), math.acos(), math.asin(). Les fonctions retournent une valeur d’angle en radians.
math.atan(x)
math.acos(x)
math.asin(x)Les fonctions hyperboliques sont elle aussi disponible : math.tanh(), math.cosh(), math.sinh(). Tout comme les fonctions inverses : math.atanh(), math.acosh(), math.asinh().
math.cosh(x)
math.sinh(x)
math.tanh(x)
math.acosh(x)
math.asinh(x)
math.atanh(x)Pour finir, il y a la fonction « .atan2() » qui elle permet de récupérer le quadrant du cercle dans lequel on se trouve.
X1, Y1 = 0.5, math.sqrt(3)/2
X2, Y2 = -0.5, -math.sqrt(3)/2
T1 = Y1 / X1
T2 = Y2 / X2
T1 == T2
>>> True
math.atan2(Y1,X1)
>>> 1.0471975511965976
math.atan2(Y2,X2)
>>> -2.0943951023931957
math.atan(T1)
>>> 1.0471975511965976
math.atan(T2)
>>> 1.0471975511965976
Dans le cas 1, on a un angle de 60° alors que dans le cas 2 on est à l’opposé, soit -120°.

Conversion angulaire et calcul de distance
Le module « math » vous donne également la possibilité de convertir vos angles de radians en degrés et inversement.
X2, Y2 = -0.5, -math.sqrt(3)/2
angle_rad = math.atan2(Y2,X2)
math.degrees(angle_rad)
>>> -120.00000000000001
math.radians(-120.)
>>> -2.0943951023931953Et pour terminer sur cette section, voici deux fonctions qui vous renverront un calcul de distance. La première fonction « math.hypot » renvoie le calcul de la norme euclidienne des deux valeurs a et b données comme arguments. La norme euclidienne représente l’hypoténuse d’un triangle rectangle de longueur a et b. Ensuite, la fonction « math.dist » renvoie la distance entre deux points.
math.hypot(3.,4.)
>>> 5.0
pt1 = [10.,5.,1.]
pt2 = [100.,50.,10.]
math.dist(pt1,pt2)
>>> 101.02474944289642Les constantes du module math
Enfin, voici les constantes mathématiques qui peuvent vous servir dans vos programmes. On retrouve la constante Pi, la valeur e qui est équivalente à exponentielle(1), une valeur réelle correspondant à l’infini et la valeur flottante de « NaN ».
math.pi  # à la précision disponible
>>> 3.141592653589793
math.e  # à la précision disponible
>>> 2.718281828459045
math.inf  # pour un infini côté négatif -math.inf
>>> inf
math.nan
>>> nanEt pour finir
Vous avez pu voir les principales fonctions du module « math » en python. Ce n’est pas une liste exhaustive, d’autres fonctions existent et sont décrites dans la documentation en ligne. Egalement, vous trouverez plus de détails sur les fonctions présentées si vous en avez besoin.
Merci de m’avoir lu, n’hésitez pas à me laisser un commentaire, j’y répondrai avec plaisir,
A bientôt,
Benjamin

