8 Bibliothèques Python pour le Calcul Mathématique — De la stdlib à NumPy et SciPy

Python dispose d’un ensemble solide de modules mathématiques dans la bibliothèque standard, et l’écosystème externe ajoute des capacités qui couvrent l’algèbre symbolique comme le calcul scientifique. Cet article parcourt 8 bibliothèques essentielles — quatre de la stdlib et quatre externes — pour vous aider à choisir l’outil adapté à votre problème.

Si vous ne maîtrisez pas encore les bases de Python, consultez notre guide de démarrage. Pour les patrons de gestion des erreurs dans le code qui utilise ces bibliothèques, voici des stratégies pratiques. Vous disposez aussi d’outils en ligne pour expérimenter.

Tableau de référence rapide — cliquez pour accéder à chaque section.

BibliothèqueUsage
mathTrigonométrie, logs, racine carrée
statisticsMoyenne, médiane, écart-type
decimalPrécision décimale exacte
fractionsFractions exactes
NumPyTableaux et calcul vectorisé
SymPyAlgèbre symbolique
SciPyOptimisation, intégration, algèbre linéaire
PintUnités physiques

Bibliothèque standard

math

math_demo.py
import math

# hypotenuse: sqrt(3²+4²)=5
print(math.sqrt(3**2 + 4**2))  # 5.0
# sin(30°) = 0.5
print(math.sin(math.radians(30)))  # 0.5
# log10(1000) = 3
print(math.log10(1000))  # 3.0

Le module math fournit des fonctions trigonométriques, logarithmiques, exponentielles et diverses utilitaires numériques. Il convient parfaitement aux calculs scalaires qui ne nécessitent ni tableaux ni algèbre symbolique.

L’exemple montre l’hypoténuse d’un triangle 3-4-5, le sinus de 30 degrés (convertis avec radians), et le logarithme en base 10 de 1000. Ces opérations sont courantes en géométrie, physique et traitement du signal.

Si vous devez manipuler des nombres complexes, utilisez cmath au lieu de math.

statistics

stats_demo.py
import statistics

data = [120, 180, 250, 300, 420]
print(statistics.mean(data))    # 254.0
print(statistics.median(data))  # 250
print(statistics.stdev(data))   # ~118.5

Le module statistics propose des mesures de tendance centrale et de dispersion. Il est idéal pour une analyse descriptive rapide sans installer NumPy.

Dans l’exemple, on calcule la moyenne, la médiane et l’écart-type d’un échantillon de prix ou de mesures. La médiane est plus robuste que la moyenne face aux valeurs aberrantes.

Pour des jeux de données volumineux ou lorsque vous avez déjà des tableaux NumPy, numpy est généralement plus performant.

decimal

decimal_demo.py
# floating-point trap
print(0.1 + 0.2)  # 0.30000000000000004

from decimal import Decimal
price = Decimal("19.99")
with_tax = price * (1 + Decimal("0.10"))
print(with_tax)  # 21.989

La virgule flottante binaire provoque des erreurs d’arrondi connues : 0.1 + 0.2 n’est pas exactement 0,3. Pour l’argent, les taxes ou tout calcul où la précision décimale compte, utilisez decimal.

Avec Decimal, on représente des quantités avec une précision décimale exacte. Dans l’exemple, on applique 10 % de TVA à 19,99 et on obtient 21,989 sans artefacts de virgule flottante.

Configurez le contexte (getcontext().prec) si vous avez besoin de plus de chiffres significatifs.

fractions

fractions_demo.py
from fractions import Fraction

print(Fraction(2, 5) + Fraction(1, 10))  # 1/2

Le module fractions représente les nombres rationnels comme des quotients d’entiers, en évitant les erreurs d’arrondi dans les opérations fractionnaires.

On additionne 2/5 et 1/10 pour obtenir exactement 1/2. Utile dans les algorithmes de proportions, la théorie des nombres ou quand l’arithmétique exacte importe.

Pour des calculs numériques intensifs, NumPy reste préférable ; Fraction brille dans les cas symboliques ou discrets.

Bibliothèques externes

NumPy

numpy_demo.py
import numpy as np

arr = np.array([10, 20, 30, 40, 50])
normalized = (arr - arr.mean()) / arr.std()
print(normalized.mean())   # ~0
print(normalized.std())    # 1.0

NumPy est le standard de facto pour le calcul numérique en Python. Il fournit des tableaux multidimensionnels et des opérations vectorisées nettement plus rapides que les boucles Python pures.

Dans l’exemple, on normalise un tableau en soustrayant la moyenne et en divisant par l’écart-type — une opération typique en machine learning et analyse de données.

Pratiquement toutes les bibliothèques scientifiques (SciPy, Pandas, scikit-learn) s’appuient sur NumPy.

SymPy

sympy_demo.py
from sympy import symbols, diff, solve

x = symbols('x')
print(diff(x**3 - x, x))       # 3*x**2 - 1
print(solve(x**3 - x, x))      # [-1, 0, 1]

SymPy effectue de l’algèbre symbolique : dérivées, intégrales, résolution d’équations, simplification d’expressions. Tout reste sous forme symbolique jusqu’à ce que vous décidiez d’évaluer numériquement.

On dérive x³ − x pour obtenir 3x² − 1 et on résout l’équation pour trouver les racines. Idéal pour les mathématiques discrètes, la physique théorique ou la vérification de formules.

Vous pouvez exporter les expressions en LaTeX, en C, ou les évaluer avec sympify et lambdify pour les utiliser avec NumPy.

SciPy

scipy_demo.py
from scipy.optimize import minimize

result = minimize(lambda x: x[0]**2 + 3*x[0] + 2, x0=[0])
print(result.x)   # [-1.5]  (mínimo en x=-1.5)

SciPy étend NumPy avec des algorithmes scientifiques : optimisation, intégration, interpolation, algèbre linéaire numérique, traitement du signal, etc.

On minimise la fonction x² + 3x + 2, dont le minimum se trouve en x = −1,5. L’optimiseur retourne cette valeur dans result.x.

SciPy est la pièce maîtresse pour les problèmes d’ingénierie et de science computationnelle qui vont au-delà de l’analyse exploratoire.

Pint

pint_demo.py
from pint import UnitRegistry

ureg = UnitRegistry()
velocidad = (120 * ureg.km) / (2 * ureg.h)
print(velocidad.to(ureg.m / ureg.s))  # 16.67 m/s

Pint permet d’effectuer des calculs avec des unités physiques (mètres, secondes, kilogrammes, etc.) en évitant les erreurs de conversion manuelle.

On calcule une vitesse en km/h et on la convertit en m/s. Pint gère les unités de manière cohérente et détecte les incompatibilités dimensionnelles.

C’est particulièrement utile en simulation, dans les rapports scientifiques et tout contexte où les unités doivent être explicites et vérifiées.

Résumé

En résumé :

math — trigonométrie, logs, exponentielles pour calculs scalaires
statistics — moyenne, médiane, écart-type sans dépendances
decimal — précision décimale exacte pour la finance
fractions — arithmétique rationnelle exacte
NumPy — tableaux et calcul vectorisé
SymPy — algèbre symbolique
SciPy — optimisation, intégration, algèbre linéaire
Pint — calcul avec unités physiques

Comments

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *