La bibliothèque Sympy Python

La bibliothèque mathématique sympy python


1. A propos de la bibliothèque Sympy

SymPy est une bibliothèque Python open-source déstinée au calcul symbolique, gratuite et est distribuée sous la nouvelle licence BSD. Elle offre des méthodes efficaces pour le calcul scientifique et elle couvre presque tous les domaines de mathématiques, analyse, algèbre linéaire et générale, géométrie, statistiques... SymPy est simple à installer et à inspecter car elle est entièrement écrite en Python avec peu de dépendances. Cette facilité d'accès combinée à une base de code simple et extensible dans un langage bien connu font de SymPy un système de calcul formel lympide et puissant. Actuellement, le noyau de la bibliothèque SymPy englobe environ 260 000 lignes de code.

2. Installation de La bibliothèque SymPy

La bibliothèque Sympy rapidement en toute aisance via l'utilitaire pip avec la commande :


Pour vérifier la version de Sympy installée, on utilise le code suivant:

3. Les symbols Sympy

La bibliothèque SymPy peut être utilisé dans n'importe quel environnement où Python est disponible. Afin de pouvoir l'utiliser, nous devons préalablement l'importer:

Pour définir un symbol x , on utilise la commande:

On peut aussi utiliser la syntaxe:

Pour définir plusieurs symbols Sympy en même temps, on utilise la commande:




4. Les expressions sympy

Une expression sympy n'est autre qu'une combinaison de symbols à l'aides des opérations classiques de mathématiques comme l'addition, multiplication...

Exemple

5. Opération sur les expressions sympy

On peut aussi faire des opérations sur les expressions comme factorisation, développement, symplification...

5.1 Développer une expression sympy à l'aide de la méthode expand()

La méthode expand() comme tous les autres langages de calcul symbolique, permet de développer une expression mathématique

Exemple (développer une expression à l'aide de la méthode expand() )

5.2 Simplification

La bibliothèque sympy est dotée de la méthode simplify() qui permet de simplifier une expression mathématique:

Exemple( simplifier une expression via la méthode simplify() )

5.3 Substitution des symbols dans sympy

Dans une expression sympy, on peut substituer un symbol par une valeur numérique ou par un autre grâce à la méthode subs().

Exemple(substitution d'un symbol par une valeur numérique )

Exemple(substitution d'un symbol par un autre symbol)

5.4 Evalution d'une expression sympy

Pour évaluer une expression, sympy nous offre la méthode evalf()
Pour bien comprendre le mécanisme de fonctionnement de cette méthode essayons d'examiner l'affichage du nombre pi

Exemple

from sympy import pi

Comme vous l'avez remarqué, l'exemple ci-dessus ne nous permet pas d'obtenir la valeur de pi et c'est grâce à la méthode evalf() qu'on peut l'obtenir.

Exemple

5.5 transformer une expression sympy en une fonction

Une expression sympy par défaut ne peut jouer le rôle d'une fonction mathématique, mais elle le peut à l'aide de la méthode lambdify()

Syntaxe

Exemple

5.6 Factoriser une expression à l'aide de la méthode sympy.factor()

A l'aide de la méthode sympy.factor(), vous pouvez  factoriser toute expressions mathématiques via la syntaxe

Syntaxe

Exemple (factorisation d'un polynome)

5.7 Code LaTeX d'une expression sympy

Le code LaTeX d'une expression sympy s'obtient facilement à l'aide de la méthode latex()

Exemple




6. Traitement des nombres rationnels avec sympy

Afin de pouvoir gérer et manipuler des nombres rationnels sous forme de fractions a/b , sympy nous offre la classe Rational qui permet de réaliser l'affaire:

Exemple (création d'un nombre rationnel )

On peut aussi effectuer des opérations sur les nombres rationnels avec sympy

Exemple (somme et produit de deux rationnels)

Exemple(transformation d'un nombre décimal en fraction)




7. Résoudre les équations en Python avec la méthode sympy.solve()

Avec l'aide de la méthode sympy.solve(expression), vous pouvez résoudre facilement les équations mathématiques. Cette méthode renverra la liste des racines de l'équation qui est fournie comme paramètre en utilisant la méthode sympy.solve().

Syntaxe

Exemple

Remarque

On peut aussi résoudre un système d'équations en utilisant la syntaxe:

Nous allons à titre d'exemple résoudre le système:

8. Calcul Intégrale avec Sympy Python

Le package SymPy contient le module de calcul intégrale. Il implémente des méthodes pour calculer les intégrales définies et indéfinies des expressions mathématiques. La méthode integrate() est utilisée pour calculer les intégrales définies et indéfinies.
Pour calculer une intégrale indéfinie ou primitive, il suffit de passer la variable après l'expression dans la méthode integrate().

Syntaxe

Exemple




9. Differentiation des fonctions à l'aide de la méthode diff()

La bibliothèque sympy permet aussi de calculer la dérivée d'une expression grâce à la méthode diff().

Syntaxe

Exemple

La même méthode diff() permet de calculer les dérivées succéssives d'une expression

Exemple

10. Calcul matriciel avec sympy

10.1 A propos des matrices sympy

En mathématiques, une matrice (matrix en anglais) est un tableau à deux dimensions constitué de nombres, de symboles ou d'expressions.Il contient des données stockées dans les lignes et les colonnes du tableau. Dans une matrice Python, les séries horizontales d'éléments sont appelées "lignes", tandis que les séries verticales d'éléments sont appelées "colonnes".
Le package SymPy possède un module nommé matrix qui traite complètement la gestion des matrices. Il inclut la classe Matrix dont l'objet représente une matrice.
Afin de pouvoir utiliser le module matrix, vous devez au préalable importer la classe Matrix via la commande:

Exemple ( création d'une matrice 2x2)

10.2 Opération basiques sur les matrices sympy

10.2.1 Les propriétés shape, rows et cols
Pour connaitre le type d'une matrice sympy, le nombre de lignes et de colonnes, on utilise lespropriétés: shap, rows et cols

  1. shape: détermine le type de la matrice 'mxn'
  2. rows: renvoie le nombre de lignes de la matrice
  3. cols: renvoie le nombre de colonnes de la matrice

Exemple






10.2.2  Accéder aux lignes et aux colonnes d'une matrice sympy

Pour obtenir une ligne ou une colonne d'une matrice A, on utilise row ou col. Par exemple, A.row(0) obtiendra la première ligne. A.col(-1) obtiendra la dernière colonne.

Exemple

9.2.3 Insertion des lignes et des colonnes

Pour insérer des lignes ou des colonnes dans une matrice sympy, on utilise les méthodes row_insert() ou col_insert().

Exemple

10.3 Déterminant d'une matrice avec sympy

Pour calculer le déterminant d'une matrice sympy, on utilise la méthode det()

Exemple

On peut aussi calculer le déterminant d'une matrice sympy définie à l'aide des symbols

Exemple

10.4 Valeurs propres, vecteurs propres et diagonalisation d'une matrice sympy

10.4.1 Valeurs propres d'une matrice sympy
Pour trouver les valeurs propres d'une matrice sympy, on utilise la méthode eigenvals(). eigenvals renvoie un dictionnaire de paires eigenvalue: algebraic_multiplicity.

Exemple

L'exemple ci-dessus montre que la matrice A possède deux valeurs propres: 3 de multiplicité 1 et 2 de multiplicité 2.
10.4.2 Vecteurs propres d'une matrice sympy
Pour trouver les vecteurs propres d'une matrice, on utilise la méthode eigenvects(). eigenvects renvoie une liste de tuples de la forme (eigenvalue, algebraic_multiplicity, [eigenvectors]).

Exemple




11. Liste des méthodes associées à la bibliothèque Sympy

  1. Abs() : Pour calculer la valeur absolue d'une expression.
  2. accumulate(): Pour effectuer une accumulation sur une séquence.
  3. acosh(), asinh(), et atanh() : Pour calculer les fonctions trigonométriques hyperboliques inverses.
  4. add() et Mul() : Créer des expressions en additionnant et ou multipliant des expressions mathématiques.
  5. airyai() et airybi(): Pour calculer les fonctions d'Airy.
  6. apart() : Pour effectuer une décomposition en éléments simples.
  7. asin(), acos(), et atan() : Pour calculer les fonctions trigonométriques inverses.
  8. bernoulli() et euler() : Pour accéder aux nombres de Bernoulli et aux nombres d'Euler.
  9. besseli() et besselk(): Pour calculer les fonctions de Bessel modifiées.
  10. binomial() : Pour calculer les coefficients binomiaux.
  11. cos(), sin(), tan(), etc. : Pour calculer des fonctions trigonométriques.
  12. cot() : Pour calculer la cotangente d'une expression.
  13. count_atoms(): Pour compter le nombre total de symboles atomiques dans une expression.
  14. count_ops(): Pour compter le nombre total d'opérations dans une expression.
  15. Derivative() : Pour calculer des dérivées.
  16. diff(): Pour calculer la dérivée d'une expression par rapport à une variable.
  17. dirichlet_eta(): Pour calculer la fonction eta de Dirichlet.
  18. divisors(): Pour obtenir la liste des diviseurs d'un nombre.
  19. Ei(): Pour calculer l'intégrale exponentielle.
  20. eigenvals() et eigenvects() : Pour calculer les valeurs propres et les vecteurs propres d'une matrice.
  21. elliptic_e() et elliptic_k(): Pour calculer les fonctions elliptiques complètes..
  22. Eq(): Pour représenter une équation symbolique.
  23. exp() : Pour calculer l'exponentielle d'une expression..
  24. expand() : Pour développer une expression symbolique.
  25. factor() : Pour factoriser une expression symbolique.
  26. floor() et ceiling() : Pour calculer les fonctions plancher et plafond d'une expression.
  27. Fourier() : Pour effectuer une transformation de Fourier.
  28. FresnelS() et FresnelC(): Pour calculer les intégrales de Fresnel.
  29. Function() : Pour définir des fonctions symboliques.
  30. gamma() : Pour calculer la fonction gamma.
  31. gcd() et lcm(): Pour calculer le plus grand commun diviseur (PGCD) et le plus petit commun multiple (PPCM) de plusieurs nombres.
  32. Heaviside(): Pour représenter la fonction de Heaviside.
  33. Hermite() : Pour calculer les polynômes d'Hermite.
  34. hyper(): Pour représenter des fonctions hypergéométriques.
  35. Integral() : Pour représenter une intégrale définie.
  36. integrate() : Pour calculer l'intégrale d'une expression par rapport à une variable.
  37. inverse_fourier_transform() : Pour effectuer une transformation de Fourier inverse.
  38. inverse_laplace_transform() : Pour effectuer une transformation de Laplace inverse.
  39. is_prime(): Pour vérifier si un nombre est premier.
  40. Jacobi() : Pour représenter les fonctions jacobiennes.
  41. KroneckerDelta(): Pour représenter le delta de Kronecker.
  42. lambdify(): Pour créer une fonction numérique à partir d'une expression SymPy.
  43. laplace_transform() : Pour effectuer une transformation de Laplace.
  44. legendre() : Pour calculer les polynômes de Legendre.
  45. LegendrePoly(): Pour représenter les polynômes de Legendre associés.
  46. limit() : Pour calculer une limite d'une expression.
  47. limit_seq() (avec des séquences récursives): Pour calculer la limite d'une séquence récursive.
  48. linear_eq_to_matrix() : Pour transformer un système d'équations linéaires en matrices.
  49. linsolve(): Pour résoudre des systèmes d'équations linéaires.
  50. log() : Pour calculer le logarithme de base arbitraire d'une expression.
  51. Matrix(): Pour créer des matrices symboliques.
  52. matrix_symbols(): Pour générer des symboles matriciels.
  53. meijerg(): Pour représenter les fonctions de Meijer.
  54. Min() et Max(): Pour calculer le minimum et le maximum de plusieurs expressions.
  55. N() : Pour évaluer une expression symbolique numériquement.
  56. next_poly() et prev_poly(): Pour obtenir le prochain ou le précédent polynôme d'une certaine forme.
  57. nextprime(): Pour trouver le prochain nombre premier après un nombre donné.
  58. nonlinsolve(): Pour résoudre des systèmes d'équations non linéaires.
  59. Not() : Pour représenter une négation logique.
  60. Or() et And() : Pour représenter des opérations logiques OR et AND.
  61. pi et E: Pour accéder aux constantes mathématiques π (pi) et e (la base du logarithme naturel).
  62. Piecewise(): Pour définir une fonction par morceaux.
  63. Poly(): Pour manipuler des polynômes.
  64. polygamma(): Pour calculer les fonctions polygammes.
  65. prevprime(): Pour trouver le nombre premier précédent avant un nombre donné.
  66. Product() : Pour représenter un produit explicite.
  67. Rational() : Pour créer des nombres rationnels à partir d'expressions fractionnaires.
  68. re(), im(), arg(), et abs(): Pour extraire différentes parties d'une expression complexe.
  69. RootOf(): Pour représenter des racines d'équations polynomiales.
  70. satisfiable() (avec des expressions booléennes): Pour vérifier si une expression booléenne est satisfaisable.
  71. sec() et csc() : Pour calculer la sécante et la cosécante d'une expression.
  72. simplify() : Pour simplifier une expression symbolique autant que possible.
  73. simplify_logic() (avec des expressions booléennes): Pour simplifier des expressions logiques booléennes.
  74. simplify_rational() : Pour simplifier des expressions rationnelles.
  75. SingularFunction(): Pour représenter les fonctions singulières.
  76. solve() : Pour résoudre des équations symboliques.
  77. solve_linear_system() : Pour résoudre un système d'équations linéaires.
  78. solve_univariate_inequality(): Pour résoudre des inégalités univariées.
  79. solveset(): Pour résoudre des équations symboliques avec des solutions réelles ou complexes.
  80. spherical_besseljn() : Pour calculer les fonctions de Bessel sphériques.
  81. sqrt() : Pour calculer la racine carrée d'une expression.
  82. Subfactorial(): Pour calculer le sous-factoriel d'un nombre.
  83. subs(): Pour substituer des valeurs dans une expression symbolique.
  84. Sum() : Pour représenter une sommation explicite.
  85. summation(): Pour effectuer une sommation.
  86. tan() : Pour calculer la tangente d'une expression.
  87. together() : Pour combiner des fractions.
  88. trigsimp() : Pour simplifier des expressions trigonométriques.
  89. Ynm(): Pour représenter les harmoniques sphériques.
  90. zeta(): Pour calculer la fonction zêta de Riemann.
  91. symbols(): Pour définir des symboles symboliques.

12. Liste des sous modules de la bibliothèque sympy

SymPy est une bibliothèque Python de calcul symbolique puissante qui offre de nombreux sous-modules pour effectuer une variété de tâches mathématiques. Ces sous-modules de SymPy couvrent une vaste gamme de domaines mathématiques et scientifiques, ce qui en fait une bibliothèque polyvalente pour le calcul symbolique en Python. Vous pouvez importer les sous-modules dont vous avez besoin pour résoudre des problèmes spécifiques.

Voici une liste des principaux sous-modules de SymPy :

  1. sympy.core : Ce module contient les éléments fondamentaux de SymPy, tels que les objets symboliques, les expressions symboliques et les fonctions mathématiques de base.
  2. sympy.solvers : Ce module contient des solveurs pour résoudre des équations algébriques, différentielles, et autres, y compris solve, dsolve, solve_univariate_inequality, etc.
  3. sympy.calculus : Ce module propose des outils pour effectuer des calculs différentiels et intégraux, notamment diff, integrate, et d'autres.
  4. sympy.series : Vous pouvez utiliser ce module pour travailler avec des séries de Taylor, des développements en série, et d'autres opérations liées aux séries.
  5. sympy.matrices : Ce module permet la manipulation de matrices, la résolution de systèmes d'équations linéaires et la réalisation d'opérations matricielles.
  6. sympy.geometry : Ce module fournit des fonctionnalités pour la géométrie, telles que la création de points, de lignes, de cercles, de polygones, et la résolution de problèmes géométriques.
  7. sympy.physics : Ce sous-module propose des fonctionnalités pour la physique, notamment la mécanique quantique, la mécanique classique, et d'autres domaines de la physique.
  8. sympy.stats : Vous pouvez l'utiliser pour effectuer des calculs statistiques, notamment la création de distributions de probabilité, le calcul d'espérance, de variance, et d'autres statistiques.
  9. sympy.combinatorics : Ce module est destiné à la combinatorique, offrant des outils pour travailler avec les permutations, les combinaisons, et d'autres structures combinatoires.
  10. sympy.logic : Ce module est utilisé pour travailler avec la logique symbolique, notamment la manipulation d'expressions booléennes, la simplification d'expressions logiques, etc.
  11. sympy.sets : Il fournit des fonctionnalités pour travailler avec les ensembles mathématiques, notamment l'union, l'intersection, la différence, etc.
  12. sympy.functions : Ce module contient une variété de fonctions utilisées en calcul symbolique mathématique.
  13. sympy.ntheory : Vous pouvez l'utiliser pour effectuer des calculs liés à la théorie des nombres, tels que la factorisation, les tests de primalité, la recherche de diviseurs, etc.
  14. sympy.parsing : Ce sous-module offre des fonctionnalités de conversion entre expressions textuelles et objets SymPy.
  15. sympy.printing : Il permet de formater et d'imprimer des expressions SymPy dans divers formats, tels que LaTeX, Unicode, etc.

 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply