9.2. Fonctions mathématiques — math
¶
Ce module est toujours disponible. Il fournit l’accès aux fonctions mathématiques définies par le standard C.
Ces fonctions ne peuvent être utilisées avec les nombres complexes, utilisez les fonctions du même nom du module cmath
si vous souhaitez un support des nombres complexes. La distinction entre les fonctions supportant les nombres complexes et celles ne les supportant pas set née du fait que tous les utilisateurs ne désirent pas acquérir le niveau mathématique suffisant pour comprendre les nombres complexes. Recevoir une exception à la place d’un nombre complexe permet de détecter un nombre complexe non désiré en paramètre, ainsi le programmeur peut déterminer comment et pourquoi il a été généré.
Les fonctions suivantes sont fournies dans ce module. Sauf mention contraire explicite, toutes les valeurs de retour sont des flottants.
9.2.1. Fonctions arithmétiques et de représentation¶
-
math.
ceil
(x)¶ Retourne la fonction plafond de x, le plus petit entier plus grand ou égal à x. Si x est un flottant, délègue à
x.__ceil()__
, qui doit retourner une valeurIntegral
.
-
math.
copysign
(x, y)¶ Retourne un flottant contenant la magnitude (valeur absolue) de x mais avec le signe de y. Sur les plate-formes supportant les zéros signés,
copysign(1.0, -0.0)
retourne -1.0.
-
math.
fabs
(x)¶ Retourne la valeur absolue de x.
-
math.
factorial
(x)¶ Retourne la factorielle de x. Lève une
ValueError
si x n’est pas entier ou s’il est négatif.
-
math.
floor
(x)¶ Retourne le plancher de x, le plus grand entier plus petit ou égal à x. Si x n’est pas un flottant, délègue à
x.__floor()__
, qui doit retourner une valeurIntegral
.
-
math.
fmod
(x, y)¶ Retourne
fmod(x, y)
, tel que défini par la bibliothèque C de la plate-forme. Notez que l’expression Pythonx % y
peut ne pas retourner le même résultat. Le sens du standard C pourfmod(x, y)
est d’être exactement (mathématiquement, à une précision infinie) égal àx - n*y
pour un entier n tel que le résultat a le signe de x et une magnitude inférieure àabs(y)
. L’expression Pythonx % y
retourne un résultat avec le signe de y, et peut ne pas être calculable exactement pour des arguments flottants. Par exemple :fmod(-1e-100, 1e100)
est-1e-100
, mais le résultat de l’expression Python-1e-100 % 1e100
est1e100-1e-100
, qui ne peut pas être représenté exactement par un flottant et donc qui est arrondi à1e100
. Pour cette raison, la fonctionfmod()
est généralement préférée quand des flottants sont manipulés, alors que l’expression Pythonx % y
est préféré quand des entiers sont manipulés.
-
math.
frexp
(x)¶ Retourne la mantisse et l’exposant de x dans un couple
(m, e)
. m est un flottant et e est un entier tels quex == m * 2**e
exactement. Si x vaut zéro, retourne(0, 0)
, sinon0.5 <= abs(m) < 1
. Ceci est utilisé pour « extraire » la représentation interne d’un flottant de manière portable.
-
math.
fsum
(iterable)¶ Retourne une somme flottante exacte des valeurs dans l’itérable. Évite la perte de précision en gardant plusieurs sommes partielles intermédiaires :
>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 0.9999999999999999 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 1.0
L’exactitude de cet algorithme dépend des garanties arithmétiques de IEEE-754 et des cas typiques où le mode d’arrondi est half-even. Sur certaines versions non-Windows, la bibliothèque C sous-jacente utilise une addition par précision étendue et peut occasionnellement effectuer un double-arrondi sur une somme intermédiaire causant la prise d’une mauvaise valeur du bit de poids faible.
For further discussion and two alternative approaches, see the ASPN cookbook recipes for accurate floating point summation.
-
math.
isfinite
(x)¶ Retourne
True
si n n’est ni infini, ni NaN, etFalse
sinon. (Notez que0.0
est considéré fini.)Nouveau dans la version 3.2.
-
math.
isinf
(x)¶ Retourne
True
si x vaut l’infini positif ou négatif, etFalse
sinon.
-
math.
isnan
(x)¶ Retourne
True
si x est NaN (Not a Number, ou Pas un Nombre en français), etFalse
sinon.
-
math.
modf
(x)¶ Retourne les parties entières et fractionnelle de x. Les deux résultats ont le signe de x et sont flottants.
-
math.
trunc
(x)¶ Retourne la valeur
Real
x tronquée en unIntegral
(habituellement un entier). Délègue àx.__trunc()__
.
Notez que les fonctions frexp()
et modf()
ont un système d’appel différent de leur homologue C : elles prennent un simple argument et retournent une paire de valeurs au lieu de retourner leur seconde valeur de retour dans un “paramètre de sortie” (il n’y a pas de telle possibilité en Python).
Pour les fonctions ceil()
, floor()
, et modf()
, notez que tous les nombres flottants de magnitude suffisamment grande sont des entiers exacts. Les flottants de Python n’ont typiquement pas plus de 53 bits de précision (tels que le type C double
de la plate-forme), en quel cas tout flottant x tel que abs(x) >= 2**52
n’a aucun bit fractionnel.
9.2.2. Fonctions logarithme et exponentielle¶
-
math.
exp
(x)¶ Retourne
e**x
.
-
math.
expm1
(x)¶ Return
e**x - 1
. For small floats x, the subtraction inexp(x) - 1
can result in a significant loss of precision; theexpm1()
function provides a way to compute this quantity to full precision:>>> from math import exp, expm1 >>> exp(1e-5) - 1 # gives result accurate to 11 places 1.0000050000069649e-05 >>> expm1(1e-5) # result accurate to full precision 1.0000050000166668e-05
Nouveau dans la version 3.2.
-
math.
log
(x[, base])¶ Avec un argument, retourne le logarithme naturel de x (en base e).
Avec deux arguments, retourne le logarithme de x en la base donnée, calculé par
log(x)/log(base)
.
-
math.
log1p
(x)¶ Retourne le logarithme naturel de 1+x (en base e). Le résultat est calculé par un moyen qui reste exact pour x proche de zéro.
-
math.
log2
(x)¶ Retourne le logarithme en base 2 de x. C’est habituellement plus exact que
log(x, 2)
.Nouveau dans la version 3.3.
Voir aussi
int.bit_length()
retourne le nombre de bits nécessaires pour représenter un entier en binaire, en excluant le signe et les zéros de début.
-
math.
log10
(x)¶ Retourne le logarithme de x en base 10. C’est habituellement plus exact que
log(x, 10)
.
-
math.
pow
(x, y)¶ Retourne
x
élevé à la puissancey
. Les cas exceptionnels suivent l’annexe “F” du standard C99 autant que possible. En particulier,pow(1.0, x)
etpow(x, 0.0)
retournent toujours1.0
, même six
est zéro ou NaN. Si à la foisx
ety
sont finis,x
est négatif ety
n’est pas entier, alorspow(x, y)
est non défini et lève uneValueError
.À l’inverse de l’opérateur interne
**
, la fonctionmath.pow()
convertit ses deux arguments enfloat
. Utilisez**
ou la primitivepow()
pour calculer des puissances exactes d’entiers.
-
math.
sqrt
(x)¶ Retourne la racine carrée de x.
9.2.3. Fonctions trigonométriques¶
-
math.
acos
(x)¶ Retourne l’arc cosinus de x, en radians.
-
math.
asin
(x)¶ Retourne l’arc sinus de x, en radians.
-
math.
atan
(x)¶ Retourne l’arc tangente de x, en radians.
-
math.
atan2
(y, x)¶ Retourne
atan(y / x)
, en radians. Le résultat est entre-pi
etpi
. Le vecteur du plan allant de l’origine vers le point(x, y)
forme cet angle avec l’axe X positif. L’intérêt deatan2()
est que le signe des deux entrées est connu. Donc elle peut calculer le bon quadrant pour l’angle. par exempleatan(1)
etatan2(1, 1)
donnent tous deuxpi/4
, maisatan2(-1, -1)
donne-3*pi/4
.
-
math.
cos
(x)¶ Retourne le cosinus de x radians.
-
math.
hypot
(x, y)¶ Retourne la norme euclidienne
sqrt(x*x + y*y)
. C’est la longueur du vecteur allant de l’origine au point(x, y)
.
-
math.
sin
(x)¶ Retourne le sinus de*x* radians.
-
math.
tan
(x)¶ Retourne la tangente de x radians.
9.2.4. Conversion angulaire¶
-
math.
degrees
(x)¶ Converts angle x from radians to degrees.
-
math.
radians
(x)¶ Converts angle x from degrees to radians.
9.2.5. Fonctions hyperboliques¶
Hyperbolic functions are analogs of trigonometric functions that are based on hyperbolas instead of circles.
-
math.
acosh
(x)¶ Retourne l’arc cosinus hyperbolique de x.
-
math.
asinh
(x)¶ Retourne l’arc sinus hyperbolique de x.
-
math.
atanh
(x)¶ Retourne l’arc tangente hyperbolique de x.
-
math.
cosh
(x)¶ Retourne le cosinus hyperbolique de x.
-
math.
sinh
(x)¶ Retourne le sinus hyperbolique de x.
-
math.
tanh
(x)¶ Retourne la tangente hyperbolique de x.
9.2.6. Fonctions spéciales¶
-
math.
erf
(x)¶ Return the error function at x.
The
erf()
function can be used to compute traditional statistical functions such as the cumulative standard normal distribution:def phi(x): 'Cumulative distribution function for the standard normal distribution' return (1.0 + erf(x / sqrt(2.0))) / 2.0
Nouveau dans la version 3.2.
-
math.
erfc
(x)¶ Return the complementary error function at x. The complementary error function is defined as
1.0 - erf(x)
. It is used for large values of x where a subtraction from one would cause a loss of significance.Nouveau dans la version 3.2.
-
math.
gamma
(x)¶ Return the Gamma function at x.
Nouveau dans la version 3.2.
-
math.
lgamma
(x)¶ Retourne le logarithme naturel de la valeur absolue de la fonction gamma en x.
Nouveau dans la version 3.2.
9.2.7. Constantes¶
-
math.
pi
¶ La constante mathématique π = 3.141592…, à la précision disponile.
-
math.
e
¶ La constante mathématique e = 2.718281…, à la précision disponible.
-
math.
inf
¶ Un flottant positif infini. (Pour un infini négatif, utilisez
-math.inf
.) Équivalent au résultat defloat('inf')
.Nouveau dans la version 3.5.
-
math.
nan
¶ Un flottant valant NaN. Équivalent au résultat de
float('nan')
.Nouveau dans la version 3.5.
Le module math
consiste majoritairement en un conteneur pour les fonctions mathématiques de la bibliothèque C de la plate-forme. Le comportement dans les cas spéciaux suit l’annexe “F” du standard C99 quand c’est approprié. L’implémentation actuelle lève une ValueError
pour les opérations invalides telles que sqrt(-1.0)
ou log(0.0)
(où le standard C99 recommande de signaler que l’opération est invalide ou qu’il y a division par zéro), et une OverflowError
pour les résultats qui débordent (par exemple exp(1000.0)
). NaN ne sera retourné pour toute les fonctions ci-dessus sauf si au moins un des arguments de la fonction vaut NaN. Dans ce cas, la plupart des fonctions retournera NaN, mais (à nouveau, selon l’annexe “F” du standard C99) il y a quelques exceptions à cette règle, par exemple pow(float('nan'), 0.0)
ou hypot(float('nan'), float('inf'))
.
Notez que Python ne fait aucun effort pour distinguer les NaNs signalétiques des NaNs silencieux, et le comportement de signalement des NaNs reste non-spécifié. le comportement typique est de traiter tous les NaNs comme s’ils étaient silencieux.
Voir aussi
- Module
cmath
- Version complexe de beaucoup de ces fonctions.