Simplifier une expression avec simplify() en SymPy Python

1. À propos de la simplification avec SymPy

La bibliothèque SymPy permet de manipuler des expressions mathématiques symboliques. Au cours d'un calcul, une expression peut devenir longue ou être écrite sous une forme qui n'est pas la plus pratique. La fonction simplify() tente alors de trouver automatiquement une forme mathématiquement plus simple.

La fonction simplify() peut notamment intervenir sur des expressions algébriques, des fractions, des puissances, des racines ou des expressions trigonométriques.

Le programme suivant présente un premier exemple de simplification.

Sortie :

SymPy reconnaît que x² - 1 = (x - 1)(x + 1) et simplifie donc l'expression en x + 1. Il faut toutefois noter que l'expression originale n'est pas définie pour x = 1, alors que l'expression simplifiée l'est.

2. Simplifier une expression avec simplify()

La syntaxe générale de la fonction simplify() consiste à lui transmettre l'expression que nous souhaitons simplifier. Elle retourne ensuite une nouvelle expression.

Le programme suivant simplifie une expression dans laquelle deux termes opposés s'annulent.

Sortie :

SymPy identifie que x - x = 0 et conserve uniquement le terme y.

Nous pouvons naturellement appliquer simplify() à une expression contenant plusieurs opérations.

Sortie :

La fonction réduit ici le facteur commun 2 afin d'obtenir une expression plus simple.

3. Simplifier des expressions algébriques

La fonction simplify() peut être utilisée pour réduire certaines expressions algébriques en regroupant des termes, en éliminant des facteurs ou en appliquant différentes transformations symboliques.

Le programme suivant simplifie une expression contenant plusieurs termes semblables.

Sortie :

Les termes contenant x et ceux contenant y sont regroupés.

Dans de nombreux cas simples, SymPy effectue déjà certaines simplifications lors de la construction de l'expression. La fonction simplify() devient surtout intéressante lorsque plusieurs transformations sont nécessaires pour obtenir une forme plus compacte.

Le programme suivant simplifie une expression rationnelle comportant un facteur commun.

Sortie :

Cette simplification suppose implicitement l'annulation du facteur x. L'expression originale n'est donc pas définie pour x = 0, même si l'expression simplifiée x + 2 l'est.

4. Simplifier des fractions algébriques

La fonction simplify() est particulièrement utile pour certaines fractions algébriques. Elle peut reconnaître des facteurs communs entre le numérateur et le dénominateur.

Le programme suivant simplifie une fraction contenant une différence de carrés.

Sortie :

En effet, x² - 4 = (x - 2)(x + 2). Le facteur x - 2 est éliminé lors de la simplification. L'expression originale reste cependant non définie pour x = 2.

La fonction peut également simplifier des fractions plus complexes.

Sortie :

Le numérateur peut s'écrire x(x² - 1). Après simplification du facteur commun x² - 1, il reste x. L'expression originale exclut néanmoins les valeurs x = -1 et x = 1.

5. Simplifier des expressions trigonométriques

La fonction simplify() peut reconnaître certaines identités trigonométriques classiques et les utiliser pour réduire une expression.

Le programme suivant utilise l'identité sin²(x) + cos²(x) = 1.

Sortie :

SymPy reconnaît directement cette identité trigonométrique fondamentale.

Nous pouvons également simplifier certaines expressions contenant un quotient trigonométrique.

Sortie possible :

Selon la forme de l'expression et les transformations choisies par SymPy, simplify() peut utiliser une fonction trigonométrique équivalente pour obtenir une représentation plus compacte.

6. Simplifier des expressions avec des puissances et des racines

Les puissances et les racines nécessitent parfois des informations supplémentaires sur les symboles. SymPy évite certaines simplifications lorsqu'elles ne sont pas valables pour toutes les valeurs possibles.

Le programme suivant crée un symbole réel et simplifie la racine carrée de son carré.

Sortie :

Pour un nombre réel, √(x²) = |x| et non nécessairement x. SymPy retourne donc correctement Abs(x).

Si le symbole est connu comme étant strictement positif, la simplification peut aller plus loin.

Sortie :

Comme x > 0, nous avons |x| = x. Les hypothèses associées aux symboles jouent donc un rôle important dans certaines simplifications.

7. Utiliser les hypothèses lors de la simplification

Le système d'hypothèses de SymPy permet d'indiquer qu'un symbole est positif, réel, entier ou possède une autre propriété mathématique. Ces informations peuvent influencer le résultat de simplify().

Le programme suivant compare la simplification de la même expression avec un symbole réel et un symbole positif.

Sortie :

Pour x, SymPy sait seulement que la variable est réelle. Pour y, il sait en plus qu'elle est positive et peut donc supprimer la valeur absolue.

Les hypothèses peuvent également permettre de déterminer le signe d'une expression.

Sortie :

Comme x est strictement positif, SymPy peut déduire que x + 1 est également strictement positif.

8. Comprendre les limites de simplify()

La fonction simplify() est une fonction générale qui essaie différentes transformations afin de trouver une expression considérée comme plus simple. Cependant, la notion de forme la plus simple n'est pas unique en mathématiques.

Deux expressions équivalentes peuvent être utiles sous des formes différentes selon le problème étudié. Le programme suivant montre qu'une expression développée peut être transformée en une forme factorisée.

Sortie :

Dans ce cas, simplify() peut conserver l'expression telle quelle. Pourtant, la forme (x + 1)**2 pourrait être considérée comme plus intéressante dans certains contextes.

Si nous voulons explicitement obtenir une forme factorisée, il est préférable d'utiliser la fonction spécialisée factor().

Sortie :

Il ne faut donc pas considérer simplify() comme une commande capable de produire systématiquement la forme que nous avons en tête. Pour une transformation précise, une fonction spécialisée est souvent préférable.

9. Comparer simplify() avec des fonctions spécialisées

SymPy fournit plusieurs fonctions spécialisées permettant de contrôler précisément la transformation d'une expression. Parmi les plus courantes, nous trouvons expand(), factor(), cancel(), together() et trigsimp().

Le programme suivant compare simplify(), expand() et factor() sur une même expression.

Sortie :

expand() demande explicitement le développement tandis que factor() demande une factorisation. La fonction simplify() choisit elle-même les transformations qu'elle juge appropriées.

Pour une expression trigonométrique, la fonction spécialisée trigsimp() permet de demander explicitement une simplification trigonométrique.

Sortie :

En pratique, simplify() est très pratique pour une simplification générale, tandis que les fonctions spécialisées offrent davantage de contrôle sur la transformation recherchée.

10. À retenir !

La fonction simplify() de SymPy permet de rechercher automatiquement une forme plus simple d'une expression symbolique. Elle constitue un outil général très pratique, mais elle ne remplace pas les fonctions spécialisées lorsqu'une transformation précise est souhaitée.

  • simplify(expression) tente de produire une forme mathématiquement plus simple.
  • Elle peut agir sur des expressions algébriques, des fractions, des puissances, des racines et des expressions trigonométriques.
  • SymPy effectue déjà automatiquement certaines simplifications élémentaires lors de la construction des expressions.
  • Les hypothèses associées aux symboles peuvent influencer les simplifications.
  • Pour un réel x, sqrt(x**2) se simplifie en Abs(x).
  • Pour un x positif, sqrt(x**2) peut se simplifier en x.
  • Une simplification algébrique peut modifier le domaine apparent d'une expression ; il faut donc conserver à l'esprit les restrictions de l'expression originale.
  • simplify() ne garantit pas une forme particulière, car la notion de simplicité dépend du contexte.
  • expand(), factor() et trigsimp() permettent de demander des transformations plus précises.
  • Pour une transformation connue à l'avance, une fonction spécialisée est généralement préférable à simplify().

Le programme suivant rassemble plusieurs exemples de simplification avec des expressions algébriques, rationnelles et trigonométriques.

Sortie :

 




 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *