- À propos de la simplification avec SymPy
- Simplifier une expression avec simplify()
- Simplifier des expressions algébriques
- Simplifier des fractions algébriques
- Simplifier des expressions trigonométriques
- Simplifier des expressions avec des puissances et des racines
- Utiliser les hypothèses lors de la simplification
- Comprendre les limites de simplify()
- Comparer simplify() avec des fonctions spécialisées
- À retenir !
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x = symbols("x") expression = (x**2 - 1)/(x - 1) resultat = simplify(expression) print(resultat) |
Sortie :
1 | x + 1 |
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x, y = symbols("x y") expression = x + y - x resultat = simplify(expression) print(resultat) |
Sortie :
1 | y |
SymPy identifie que x - x = 0 et conserve uniquement le terme y.
Nous pouvons naturellement appliquer simplify() à une expression contenant plusieurs opérations.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x = symbols("x") expression = (2*x + 2)/2 resultat = simplify(expression) print(resultat) |
Sortie :
1 | x + 1 |
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x, y = symbols("x y") expression = 3*x + 2*y - x + 4*y resultat = simplify(expression) print(resultat) |
Sortie :
1 | 2*x + 6*y |
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x = symbols("x") expression = (x**2 + 2*x)/x resultat = simplify(expression) print(resultat) |
Sortie :
1 | x + 2 |
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x = symbols("x") expression = (x**2 - 4)/(x - 2) resultat = simplify(expression) print(resultat) |
Sortie :
1 | x + 2 |
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x = symbols("x") expression = (x**3 - x)/(x**2 - 1) resultat = simplify(expression) print(resultat) |
Sortie :
1 | x |
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.
1 2 3 4 5 6 7 | from sympy import symbols, sin, cos, simplify x = symbols("x") expression = sin(x)**2 + cos(x)**2 resultat = simplify(expression) print(resultat) |
Sortie :
1 | 1 |
SymPy reconnaît directement cette identité trigonométrique fondamentale.
Nous pouvons également simplifier certaines expressions contenant un quotient trigonométrique.
1 2 3 4 5 6 7 | from sympy import symbols, sin, cos, simplify x = symbols("x") expression = sin(x)/cos(x) resultat = simplify(expression) print(resultat) |
Sortie possible :
1 | tan(x) |
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é.
1 2 3 4 5 6 7 | from sympy import symbols, sqrt, simplify x = symbols("x", real=True) expression = sqrt(x**2) resultat = simplify(expression) print(resultat) |
Sortie :
1 | Abs(x) |
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.
1 2 3 4 5 6 7 | from sympy import symbols, sqrt, simplify x = symbols("x", positive=True) expression = sqrt(x**2) resultat = simplify(expression) print(resultat) |
Sortie :
1 | x |
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.
1 2 3 4 5 6 7 | from sympy import symbols, sqrt, simplify x = symbols("x", real=True) y = symbols("y", positive=True) print(simplify(sqrt(x**2))) print(simplify(sqrt(y**2))) |
Sortie :
1 2 | Abs(x) y |
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.
1 2 3 4 5 6 | from sympy import symbols x = symbols("x", positive=True) expression = x + 1 print(expression.is_positive) |
Sortie :
1 | True |
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.
1 2 3 4 5 6 7 | from sympy import symbols, simplify x = symbols("x") expression = x**2 + 2*x + 1 resultat = simplify(expression) print(resultat) |
Sortie :
1 | x**2 + 2*x + 1 |
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().
1 2 3 4 5 6 7 | from sympy import symbols, factor x = symbols("x") expression = x**2 + 2*x + 1 resultat = factor(expression) print(resultat) |
Sortie :
1 | (x + 1)**2 |
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.
1 2 3 4 5 6 7 8 9 | from sympy import symbols, simplify, expand, factor x = symbols("x") expression = (x + 1)*(x + 2) print("Expression :", expression) print("simplify() :", simplify(expression)) print("expand() :", expand(expression)) print("factor() :", factor(expand(expression))) |
Sortie :
1 2 3 4 | Expression : (x + 1)*(x + 2) simplify() : (x + 1)*(x + 2) expand() : x**2 + 3*x + 2 factor() : (x + 1)*(x + 2) |
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.
1 2 3 4 5 6 7 | from sympy import symbols, sin, cos, trigsimp x = symbols("x") expression = sin(x)**2 + cos(x)**2 resultat = trigsimp(expression) print(resultat) |
Sortie :
1 | 1 |
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.
1 2 3 4 5 6 7 8 9 10 11 | from sympy import symbols, sin, cos, sqrt, simplify x = symbols("x", positive=True) expression1 = (x**2 - 1)/(x - 1) expression2 = sin(x)**2 + cos(x)**2 expression3 = sqrt(x**2) print("Fraction :", simplify(expression1)) print("Trigonométrie :", simplify(expression2)) print("Racine :", simplify(expression3)) |
Sortie :
1 2 3 | Fraction : x + 1 Trigonométrie : 1 Racine : x |
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/


