- À propos de fraction() et together() avec SymPy
- Extraire le numérateur et le dénominateur avec fraction()
- Utiliser fraction() avec des expressions symboliques
- Réunir des fractions avec together()
- Utiliser together() avec plusieurs fractions
- Combiner together() et fraction()
- Manipuler séparément le numérateur et le dénominateur
- Utiliser fraction() avec cancel() et factor()
- Comparer together(), cancel() et apart()
- À retenir !
1. À propos de fraction() et together() avec SymPy
La bibliothèque SymPy fournit plusieurs fonctions permettant de manipuler des fractions algébriques et des expressions rationnelles. Parmi celles-ci, fraction() et together() jouent des rôles complémentaires.
La fonction fraction() permet de séparer une expression en deux parties : son numérateur et son dénominateur. Elle retourne ces deux éléments sous la forme d'un tuple.
Le programme suivant extrait le numérateur et le dénominateur d'une fraction simple.
1 2 3 4 5 6 7 | from sympy import symbols, fraction x = symbols("x") expression = (x + 1)/(x - 2) numerateur, denominateur = fraction(expression) print("Numérateur :", numerateur) print("Dénominateur :", denominateur) |
Sortie :
1 2 | Numérateur : x + 1 Dénominateur : x - 2 |
La fonction together(), quant à elle, permet de regrouper plusieurs termes rationnels sous un dénominateur commun. Ces deux fonctions peuvent donc être utilisées successivement pour réunir une expression puis récupérer son numérateur et son dénominateur.
2. Extraire le numérateur et le dénominateur avec fraction()
La fonction fraction() retourne un tuple contenant deux expressions SymPy. La première correspond au numérateur et la seconde au dénominateur.
Le programme suivant utilise directement le résultat de fraction() sans effectuer immédiatement la décomposition du tuple.
1 2 3 4 5 6 | from sympy import symbols, fraction x = symbols("x") expression = (x**2 + 3*x + 2)/(x**2 - 1) resultat = fraction(expression) print(resultat) |
Sortie :
1 | (x**2 + 3*x + 2, x**2 - 1) |
Le premier élément du tuple est le numérateur et le second est le dénominateur. Il est généralement plus pratique de les affecter directement à deux variables.
Le programme suivant utilise cette technique pour accéder séparément aux deux parties de la fraction.
1 2 3 4 5 6 7 | from sympy import symbols, fraction x = symbols("x") expression = (2*x + 5)/(x**2 + 1) num, den = fraction(expression) print("num =", num) print("den =", den) |
Sortie :
1 2 | num = 2*x + 5 den = x**2 + 1 |
Les variables num et den sont elles-mêmes des expressions SymPy et peuvent donc être manipulées avec les autres fonctions de calcul symbolique.
3. Utiliser fraction() avec des expressions symboliques
La fonction fraction() ne se limite pas aux fractions écrites explicitement avec l'opérateur /. Elle analyse la structure multiplicative d'une expression pour séparer les facteurs placés au numérateur de ceux qui apparaissent avec des puissances négatives.
Le programme suivant utilise une puissance négative pour représenter une division.
1 2 3 4 5 6 7 | from sympy import symbols, fraction x, y = symbols("x y") expression = x*y**(-2) num, den = fraction(expression) print("Numérateur :", num) print("Dénominateur :", den) |
Sortie :
1 2 | Numérateur : x Dénominateur : y**2 |
SymPy reconnaît que y**(-2) correspond à 1/y² et place donc y² au dénominateur.
Lorsqu'une expression ne possède pas de dénominateur explicite, fraction() retourne simplement 1 comme dénominateur.
1 2 3 4 5 6 7 | from sympy import symbols, fraction x = symbols("x") expression = x**2 + 3*x + 2 num, den = fraction(expression) print("Numérateur :", num) print("Dénominateur :", den) |
Sortie :
1 2 | Numérateur : x**2 + 3*x + 2 Dénominateur : 1 |
Une expression polynomiale peut ainsi être considérée comme une fraction ayant 1 pour dénominateur.
4. Réunir des fractions avec together()
Lorsqu'une expression contient une somme ou une différence de fractions, la fonction together() permet de les regrouper sous un dénominateur commun. Cette opération correspond à la réduction au même dénominateur effectuée en algèbre.
Le programme suivant réunit les fractions 1/x et 1/(x + 1).
1 2 3 4 5 6 | from sympy import symbols, together x = symbols("x") expression = 1/x + 1/(x + 1) resultat = together(expression) print(resultat) |
Sortie :
1 | (2*x + 1)/(x*(x + 1)) |
Le dénominateur commun est x(x + 1) et le numérateur obtenu après addition est 2x + 1.
La fonction fonctionne de la même manière avec une différence de fractions.
1 2 3 4 5 6 | from sympy import symbols, together x = symbols("x") expression = 1/(x - 1) - 1/(x + 1) resultat = together(expression) print(resultat) |
Sortie :
1 | 2/((x - 1)*(x + 1)) |
SymPy conserve ici le dénominateur sous une forme factorisée, ce qui permet de visualiser facilement les deux facteurs x - 1 et x + 1.
5. Utiliser together() avec plusieurs fractions
La fonction together() peut réunir plus de deux fractions. SymPy recherche automatiquement un dénominateur commun adapté à l'ensemble des termes rationnels.
Le programme suivant réunit trois fractions possédant des dénominateurs différents.
1 2 3 4 5 6 | from sympy import symbols, together x = symbols("x") expression = 1/x + 1/(x + 1) + 1/(x + 2) resultat = together(expression) print(resultat) |
Sortie :
1 | (x*(x + 1) + x*(x + 2) + (x + 1)*(x + 2))/(x*(x + 1)*(x + 2)) |
together() met les termes au même dénominateur sans nécessairement développer complètement le numérateur. Cette représentation conserve ainsi une partie de la structure de l'expression.
Si nous souhaitons développer ensuite le résultat, nous pouvons utiliser expand().
1 2 3 4 5 6 7 | from sympy import symbols, together, expand x = symbols("x") expression = 1/x + 1/(x + 1) + 1/(x + 2) resultat = together(expression) developpe = expand(resultat) print(developpe) |
Sortie :
1 | 3*x**2/(x**3 + 3*x**2 + 2*x) + 6*x/(x**3 + 3*x**2 + 2*x) + 2/(x**3 + 3*x**2 + 2*x) |
La fonction expand() développe l'expression selon ses règles propres. Si l'objectif est plutôt d'obtenir directement un quotient de polynômes réduit, la fonction cancel() est souvent mieux adaptée.
6. Combiner together() et fraction()
Les fonctions together() et fraction() sont particulièrement utiles lorsqu'elles sont combinées. Nous pouvons commencer par réunir plusieurs fractions sous un même dénominateur, puis extraire séparément le numérateur et le dénominateur du résultat.
Le programme suivant applique cette méthode à une somme de deux fractions.
1 2 3 4 5 6 7 8 9 10 | from sympy import symbols, together, fraction x = symbols("x") expression = 2/x + 3/(x + 1) reunie = together(expression) num, den = fraction(reunie) print("Fraction réunie :", reunie) print("Numérateur :", num) print("Dénominateur :", den) |
Sortie :
1 2 3 | Fraction réunie : (5*x + 2)/(x*(x + 1)) Numérateur : 5*x + 2 Dénominateur : x*(x + 1) |
Cette combinaison permet d'obtenir facilement les deux polynômes qui constituent une expression rationnelle résultant d'un calcul plus complexe.
La même méthode fonctionne avec plusieurs fractions.
1 2 3 4 5 6 7 8 9 | from sympy import symbols, together, fraction x = symbols("x") expression = 1/x + 2/(x + 1) + 3/(x + 2) reunie = together(expression) num, den = fraction(reunie) print("Numérateur :", num) print("Dénominateur :", den) |
Sortie :
1 2 | Numérateur : 6*x**2 + 10*x + 2 Dénominateur : x*(x + 1)*(x + 2) |
Nous disposons maintenant séparément du numérateur et du dénominateur, ce qui permet de poursuivre leur étude indépendamment.
7. Manipuler séparément le numérateur et le dénominateur
Une fois le numérateur et le dénominateur extraits avec fraction(), ils deviennent deux expressions SymPy indépendantes. Nous pouvons donc leur appliquer séparément des opérations telles que expand(), factor(), subs() ou diff().
Le programme suivant factorise séparément le numérateur et le dénominateur d'une fraction.
1 2 3 4 5 6 7 8 | from sympy import symbols, fraction, factor x = symbols("x") expression = (x**2 + 3*x + 2)/(x**2 - 1) num, den = fraction(expression) print("Numérateur factorisé :", factor(num)) print("Dénominateur factorisé :", factor(den)) |
Sortie :
1 2 | Numérateur factorisé : (x + 1)*(x + 2) Dénominateur factorisé : (x - 1)*(x + 1) |
Cette présentation fait apparaître immédiatement le facteur commun x + 1.
Nous pouvons également remplacer une variable par une valeur séparément dans le numérateur et le dénominateur.
1 2 3 4 5 6 7 8 | from sympy import symbols, fraction x = symbols("x") expression = (x**2 + 1)/(x + 3) num, den = fraction(expression) print("Numérateur pour x = 2 :", num.subs(x, 2)) print("Dénominateur pour x = 2 :", den.subs(x, 2)) |
Sortie :
1 2 | Numérateur pour x = 2 : 5 Dénominateur pour x = 2 : 5 |
Cette séparation est utile lorsque nous souhaitons étudier indépendamment les zéros du numérateur et ceux du dénominateur.
8. Utiliser fraction() avec cancel() et factor()
La fonction fraction() peut être associée à cancel() afin de récupérer le numérateur et le dénominateur d'une fraction après suppression de leurs facteurs communs.
Le programme suivant commence par réduire une fraction avec cancel() puis extrait les deux parties du résultat.
1 2 3 4 5 6 7 8 9 10 | from sympy import symbols, cancel, fraction x = symbols("x") expression = (x**2 - 1)/(x**2 + 3*x + 2) reduite = cancel(expression) num, den = fraction(reduite) print("Fraction réduite :", reduite) print("Numérateur :", num) print("Dénominateur :", den) |
Sortie :
1 2 3 | Fraction réduite : (x - 1)/(x + 2) Numérateur : x - 1 Dénominateur : x + 2 |
Le facteur x + 1 présent dans la fraction originale a été supprimé avant l'extraction du numérateur et du dénominateur. La valeur x = -1 reste toutefois interdite si nous étudions le domaine de l'expression originale.
Nous pouvons également utiliser factor() sur les deux éléments obtenus avec fraction().
1 2 3 4 5 6 7 8 | from sympy import symbols, fraction, factor x = symbols("x") expression = (x**3 - x)/(x**2 + 3*x + 2) num, den = fraction(expression) print("Numérateur :", factor(num)) print("Dénominateur :", factor(den)) |
Sortie :
1 2 | Numérateur : x*(x - 1)*(x + 1) Dénominateur : (x + 1)*(x + 2) |
La factorisation séparée permet d'identifier rapidement le facteur commun x + 1 avant une éventuelle réduction avec cancel().
9. Comparer together(), cancel() et apart()
Les fonctions together(), cancel() et apart() manipulent toutes des fractions rationnelles, mais elles répondent à des objectifs différents. together() réunit plusieurs termes sous un dénominateur commun, cancel() réduit les facteurs communs et apart() effectue une décomposition en éléments simples.
Le programme suivant applique ces trois transformations à une même expression.
1 2 3 4 5 6 7 8 9 | from sympy import symbols, together, cancel, apart x = symbols("x") expression = 1/x + 1/(x + 1) print("Expression :", expression) print("together() :", together(expression)) print("cancel() :", cancel(expression)) print("apart() :", apart(expression, x)) |
Sortie :
1 2 3 4 | Expression : 1/(x + 1) + 1/x together() : (2*x + 1)/(x*(x + 1)) cancel() : (2*x + 1)/(x**2 + x) apart() : 1/(x + 1) + 1/x |
together() est donc adaptée à la mise au même dénominateur, tandis que cancel() produit une fonction rationnelle réduite et que apart() cherche une décomposition en fractions plus simples.
Le programme suivant illustre une chaîne de transformations : réunir les fractions, réduire le résultat, puis extraire son numérateur et son dénominateur.
1 2 3 4 5 6 7 8 9 10 11 12 | from sympy import symbols, together, cancel, fraction x = symbols("x") expression = 1/(x - 1) + 2/(x + 1) reunie = together(expression) reduite = cancel(reunie) num, den = fraction(reduite) print("Fraction réunie :", reunie) print("Fraction réduite :", reduite) print("Numérateur :", num) print("Dénominateur :", den) |
Sortie :
1 2 3 4 | Fraction réunie : (3*x - 1)/((x - 1)*(x + 1)) Fraction réduite : (3*x - 1)/(x**2 - 1) Numérateur : 3*x - 1 Dénominateur : x**2 - 1 |
Ces fonctions peuvent ainsi être combinées pour construire des traitements symboliques plus élaborés sur les fractions rationnelles.
10. À retenir !
Les fonctions fraction() et together() de SymPy permettent respectivement de séparer et de réunir les différentes parties d'une expression rationnelle. Elles sont particulièrement utiles lorsque nous souhaitons manipuler explicitement le numérateur et le dénominateur d'une expression.
- fraction(expression) retourne le numérateur et le dénominateur d'une expression.
- Le résultat de fraction() est un tuple contenant deux expressions SymPy.
- Si l'expression n'a pas de dénominateur, fraction() retourne 1 comme dénominateur.
- together() réunit plusieurs fractions sous un dénominateur commun.
- together() peut être appliquée à une somme comportant plusieurs termes rationnels.
- Après together(), fraction() permet de récupérer séparément le numérateur et le dénominateur obtenus.
- Le numérateur et le dénominateur extraits peuvent être manipulés avec factor(), expand(), subs() ou d'autres fonctions SymPy.
- cancel() permet de supprimer les facteurs communs du numérateur et du dénominateur.
- apart() réalise l'opération de décomposition d'une fraction rationnelle en éléments simples.
- La combinaison de ces fonctions fournit des outils puissants pour la manipulation des fractions algébriques.
Le programme suivant rassemble les principales opérations étudiées en réunissant plusieurs fractions, en réduisant le résultat puis en récupérant séparément son numérateur et son dénominateur.
1 2 3 4 5 6 7 8 9 10 11 12 13 | from sympy import symbols, together, cancel, fraction, factor x = symbols("x") expression = 1/x + 1/(x + 1) reunie = together(expression) reduite = cancel(reunie) num, den = fraction(reduite) print("Fraction réunie :", reunie) print("Fraction réduite :", reduite) print("Numérateur :", num) print("Dénominateur :", den) print("Dénominateur factorisé :", factor(den)) |
Sortie :
1 2 3 4 5 | Fraction réunie : (2*x + 1)/(x*(x + 1)) Fraction réduite : (2*x + 1)/(x**2 + x) Numérateur : 2*x + 1 Dénominateur : x**2 + x Dénominateur factorisé : x*(x + 1) |
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/


