Python >> Tutoriel Python >  >> Python

Mathématiques symboliques avec SymPy

Cet article montre comment résoudre symboliquement des équations et des expressions mathématiques, en Python . Merci à Sympy bibliothèque, cela s'avère être une tâche extrêmement facile.

Cependant, comme vous le verrez dans les exemples suivants, le nombre d'outils et de fonctions fournis par cette bibliothèque est énorme. Grâce à toutes ses fonctionnalités, Sympy représente un système d'algèbre vraiment puissant avec lequel nous pouvons résoudre de manière très immédiate, expressions mathématiques, équations, inégalités et même des systèmes d'équations/inégalités .

Pour ces raisons, Sympy représente un outil fondamental pour résoudre une pléthore de problèmes liés aux mathématiques. L'article est divisé en différentes sections, chacune traitant d'un Sympy spécifique fonction. Si le sujet vous intéresse, vous pouvez trouver la documentation sur toutes les fonctions décrites ici (et bien d'autres) sur https://www.sympy.org/en/index.html.

Importer Sympy

La première étape consiste à importer dans notre script le Simpy bibliothèque; puisque plusieurs packages différents seront utilisés tout au long de cet exemple, nous les importons tous en écrivant la ligne de code suivante (pour importer Sympy vous devez l'avoir préalablement installé, si vous ne l'avez pas encore fait, tapez "pip install sympy ” dans votre terminal).

from sympy import *

Définir les variables et les fonctions

Nous commençons par définir les variables que nous voulons utiliser dans nos calculs. Pour ce faire, nous exploitons le Sympy fonction symbols() qui prend en entrée une chaîne et la transforme en Sympy variable; nous attribuons ensuite la valeur de la fonction à une variable portant le même nom que la chaîne choisie. Dans les lignes de code suivantes, nous initialisons deux variables "x ” et “y ”.

# Initializing two variables
x = symbols('x')  
y = symbols('y')

Une procédure similaire peut être employée pour définir le nom des fonctions qui seront utilisées dans le script; cette fois, le Sympy la fonction qui sert à cet effet est Function() et fonctionne de la même manière que symbols() . Nous initialisons donc une fonction appelée "f », à partir de ce moment, à chaque fois que l'on tape « f ” sur le script, nous faisons référence à une fonction.

# Initializing a function f
f = Function('f')

Utiliser Sympy dans votre terminal informatique

Sympy utilisable même directement depuis votre terminal; c'est ici que sa capacité à résoudre symboliquement des équations et des fonctions mathématiques s'exprime le mieux. Nous allons maintenant voir comment initialiser et utiliser directement Sympy dans l'aérogare. La première chose à faire est d'ouvrir votre terminal et d'importer Sympy de la même manière qu'auparavant. Nous tapons donc "import sympy" et appuyons sur entrée. Après cela, nous entrons la commande suivante "sympy.init_session() ", les lignes suivantes contiennent les deux commandes décrites ci-dessus et la sortie demandée par votre terminal.

>>> import sympy
>>> sympy.init_session()
Python console for SymPy 1.7.1 (Python 3.7.1-64-bit) (ground types: python)
These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)
>>> init_printing()  

Comme vous pouvez le voir, après le sympy.init_session() commande, plusieurs Sympy des colis ont été importés ; de plus, les lettres « x », « y », « z » et « t » ont été initialisées en variables Sympy, « k », « m » et « n » en paramètres entiers, tandis que les lettres « f », « g » et "h" comme fonctions.

Toutes ces tâches ont été exécutées automatiquement dans le sympy.init_session() commande, qui a essentiellement lancé un Sympy session avec des fonctions et des variables prédéfinies.

L'avantage d'utiliser le terminal par rapport à l'éditeur de texte est qu'il affichera toutes les fonctions et équations en utilisant un style graphique amélioré, les rendant (comme nous le verrons) plus immédiats. La plupart des commandes qui suivront dans les sections suivantes, peuvent être tapées à la fois dans le script et dans le terminal, je préciserai quand certaines fonctions spécifiques ne fonctionneront pas sur l'une des deux plateformes.

Développer et simplifier des expressions mathématiques

Dans cette section, nous allons apprendre à utiliser Sympy pour développer ou simplifier une expression mathématique. Les deux tâches peuvent être effectuées automatiquement et instantanément en exploitant simplement les fonctions expand() et factor() .

Pour voir comment le expand() fonctionne, nous définissons d'abord une fonction f =(3x + 5y 2 – 6) 2 puis nous le passons comme seul paramètre d'entrée de la fonction expand() . Les lignes suivantes sont saisies dans le terminal afin d'obtenir une meilleure sortie graphique ; cependant, ils fonctionnent exactement de la même manière lorsqu'ils sont saisis dans le script.

>>> f = (3*x +5*y - 6)**2
>>> expand(f)
     2                       2
9⋅x  + 30⋅x⋅y - 36⋅x + 25⋅y  - 60⋅y + 36

Comme vous pouvez le voir dans les résultats rapportés, la fonction expand() a calculé l'expression définie dans la fonction f et l'a imprimé d'une manière graphique améliorée, en évitant les astérisques et en plaçant les exposants comme sommets. Le style de présentation peut varier d'un terminal à l'autre, mais il s'améliore généralement par rapport à celui d'entrée.

Par contre, la fonction factor() fonctionne exactement à l'opposé, il simplifie l'expression qui est passée entre ses crochets. Vous pouvez voir un exemple dans les lignes suivantes.

>>> g = x**3 + y**3 + 3*x*y**2 + 3*x**2*y
>>> factor(g)

Résoudre des équations et des inégalités

Une autre fonctionnalité utile offerte par Sympy est la possibilité de trouver la solution d'équations algébriques en exploitant la fonction .solve() .

Cette fonction prend en entrée deux paramètres différents, l'équation que nous voulons résoudre et la variable pour laquelle nous voulons la résoudre, respectivement.

Ceci est particulièrement utile dans le cas de solutions symboliques d'équations à plusieurs variables dans lesquelles on pourrait être intéressé à obtenir la solution symbolique par rapport à l'une des deux inconnues. Les lignes suivantes rapportent soit la solution numérique d'une équation à une variable et la solution symbolique d'une équation à deux variables par rapport à la variable "y ”.

>>> solve(2*x + 3)
[-3/2]
>>> solve(2*x + 3 -y, y)
[2⋅x + 3] 

De la même manière, nous pouvons également obtenir la solution numérique et/ou symbolique d'équations ou d'inégalités d'ordre supérieur. Les deux tâches sont affichées dans les lignes suivantes.

>>> solve(x**3 - 7*x)
[0, -√7, √7]
>>> solve(x +4*y -7 > 0, y)
      7    x
y > ─ - ─
      4    4

Résoudre des systèmes d'équations/inégalités

Sympy peut également être utilisé pour résoudre des systèmes d'équations/inégalités. Pour ce faire, nous allons exploiter, à nouveau, la fonction solve() . Dans le cas d'un système d'équations, on inscrit les équations comme éléments d'une liste; les lignes suivantes décrivent la solution d'un système de trois équations linéaires en utilisant solve() .

>>> solve([x + 2*y - 5*z, z + 3 - x,  y + x + z])
{x: 21/8, y: -9/4, z: -3/8} 

Comme on peut le voir, la sortie du solve() fonction sont les valeurs des trois variables système différentes. De la même manière, on peut aussi obtenir la solution de systèmes d'inégalités; il suffit de saisir les inégalités comme éléments d'une liste; cette fois, les symboles ">" "<" doivent être spécifiés pour les deux inégalités.

>>> solve([x**2 + 2*x > 2, 4*x + 5 < 6])
-∞ < x ∧ x < -√3 - 1

Comme d'habitude, la solution est imprimée directement sous notre commande, en exploitant les symboles booléens pour l'opérateur "et", "ou".

Conclusion

Cet article a présenté quelques-unes des fonctions de base fournies par Sympy bibliothèque. En particulier, nous avons vu comment exploiter Sympy définir des variables et des fonctions ; comment développer et simplifier symboliquement des expressions mathématiques et comment utiliser cette bibliothèque pour résoudre des équations, des inégalités et même des systèmes d'équations/inégalités. Les fonctions présentées dans l'article peuvent être saisies à la fois dans le texte du script mais aussi directement dans le terminal (ou les notebooks Jupyter) afin d'obtenir une évaluation immédiate et une meilleure représentation graphique des calculs effectués.