Python pour le calcul scientifique/Fonctions mathématiques générales

Par défaut, Python ne propose que les quatre opérations et l'élévation à la puissance. Le module NumPy fournit les opérations mathématiques avancées. En particulier, il propose des fonctions « universelles » (ufunc) qui peuvent travailler directement sur des matrices.

Importer le moduleModifier

Toutes les fonctions évoquées dans ce chapitre supposent l'import du module NumPy sous le nom « np » :

# Importer NumPy, sous le nom np
import numpy as np

# Ensuite, le code utilisant les fonctions de np
# ...

Fonctions universelles de baseModifier

On retrouve les quatre opérations mais sous la forme de fonctions de deux variables :

  • np.add(x1, x2) : x1 + x2 ;
  • np.subtract(x1, x2) : x1x2 ;
  • np.multiply(x1, x2) : x1 × x2 ;
  • np.divide(x1, x2), np.true_divide(x1, x2) : x1 ÷ x2.

Les variables x1 et x2 peuvent être des matrices de même dimension, les opérations sont alors faites élément par élément. Ces fonctions disposent en outre de méthodes, notamment de la méthode .accumulate() qui cumule les opérations, par exemple

np.add.accumulate([1, 2, 3, 4, 5])
# array([ 1,  3,  6, 10, 15])

Cette méthode existe d'ailleurs pour toutes les fonctions universelles de deux variables.

Les autres opérations de base sont :

  • np.negative(x) : –x ;
  • np.reciprocal(x) : 1 / x ;
  • np.mod(x1, x2), np.remainder(x1, x2) : reste de la division euclidienne x1 ÷ x2 ;
  • np.absolute(x), np.abs(x) : |x| ;
  • np.rint(x) : arrondit à l'entier le plus proche ;
  • np.floor(x), np.ceil(x) : arrondit respectivement à l'entier directement inférieur et supérieur ;
  • np.trunc(x) : tronque les décimales, partie entière, E(x) ;
  • np.sign(x) : signe de x (+1 ou –1) ;
  • np.gcd(x1, x2) : PGCD ;
  • np.lcm(x1, x2) : PPCM ;
  • np.mean([x1, x2, …, xn]) : moyenne des xi ;
  • np.average([x1, x2, …, xn], weights=[m1, m2, …, mn]) : moyenne des xi pondérée par mes masses mi.

Notez que les valeurs renvoyées par np.rint(), np.floor(), np.ceil() et np.trunc() sont des réels à virgule flottante (float) bien que les valeurs soient entières. Pour avoir des nombres de types « entier » (integer), il faut utiliser la fonction int() : int(np.rint())

Autres fonctions universellesModifier

  • np.power(x1, x2) : x1x2 ;
  • np.square(x) : x2 ;
  • np.sqrt(x) :   ;
    si x est une matrice de réels, alors le résultat doit être réel, les valeurs négatives renvoient un NaN ; si x contient au moins un nombre complexe, alors le résultat est complexe, par exemple :
np.sqrt(-1) # NaN
np.sqrt(-1 + 0j) # 0 + 1j
np.sqrt(complex(-1)) # 0 + 1j
  • np.cbrt(x) :   ;
  • np.exp(x) : exp(x), ex ;
  • np.exp2(x) : 2x ;
  • np.expm1(x) : exp(x) – 1 ;
  • np.log(x) : ln(x), logarithme népérien ;
  • np.log2(x) : logarithme en base 2 ;
  • np.log10(x) : log(x), logarithme en base 10 ;
  • np.log1p(x) : ln(1 + x) ;
  • np.conj(z) : z, conjugué complexe ;
  • np.heavyside(x1, x2) : fonction marche, vaut 0 si x1 < 0, 1 si x1 > 0, et x2 si x1 = 0.

Autres fonctionsModifier

Fonctions trigonométriques
  • np.sin(x) : fonction sinus trigonométrique ;
  • np.cos(x) : fonction cosinus trigonométrique ;
  • np.tan(x) : fonction tangente trigonométrique ;
  • np.arcsin(x) : fonction sinus trigonométrique inverse ;
  • np.arccos(x) : fonction cosinus trigonométrique inverse ;
  • np.arctan(x) : fonction tangente trigonométrique inverse ;
  • np.arctan2(x1,x2) : fonction tangente trigonométrique inverse de   sélectionnant le bon quadrant selon les deux valeurs.
Fonctions hyperboliques
  • np.sinh(x) : fonction sinus hyperbolique ;
  • np.cosh(x) : fonction cosinus hyperbolique ;
  • np.tanh(x) : fonction tangente hyperbolique ;
  • np.arcsinh(x) : fonction sinus hyperbolique inverse ;
  • np.arccosh(x) : fonction cosinus hyperbolique inverse ;
  • np.arctanh(x) : fonction tangente hyperbolique inverse.

PrécisionModifier

La précision de la représentation des réels en virgule flottante (float) est donnée par :

np.finfo(float).eps

Fonctions booléennesModifier

Les fonctions booléennes sont incluses dans le langage de base :

  • x or y : ou ;
  • x and y : et ;
  • not x : non ;
  • all([x, y, z]) : et appliqué à une liste ;
  • any([x, y, z]) : ou appliqué à une liste.

Notes et référencesModifier


Premiers programmes < > Éléments de programmation