- À propos de la réduction des fractions algébriques avec SymPy
- Réduire une fraction algébrique avec cancel()
- Supprimer les facteurs communs
- Réduire des fractions avec des polynômes de degré supérieur
- Réduire des fractions à plusieurs variables
- Utiliser cancel() après une addition de fractions
- Utiliser cancel() avec factor() et expand()
- Tenir compte des valeurs interdites
- Comparer cancel() avec simplify() et together()
- À retenir !
1. À propos de la réduction des fractions algébriques avec SymPy
La bibliothèque SymPy permet de manipuler des fractions algébriques contenant des expressions symboliques au numérateur et au dénominateur. Pour réduire ce type d'expression, SymPy fournit la fonction cancel().
La fonction cancel() transforme une fonction rationnelle en une fraction réduite en supprimant les facteurs communs entre le numérateur et le dénominateur. Le résultat est généralement présenté sous la forme d'un quotient de polynômes n'ayant plus de facteur polynomial commun.
Le programme suivant présente une première utilisation de cancel().
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (x**2 - 1)/(x - 1) resultat = cancel(expression) print(resultat) |
Sortie :
1 | x + 1 |
Le numérateur se factorise sous la forme (x - 1)(x + 1). Le facteur commun x - 1 est supprimé, ce qui donne x + 1. L'expression originale reste toutefois non définie pour x = 1.
2. Réduire une fraction algébrique avec cancel()
La syntaxe de base de cancel() est cancel(expression). L'expression transmise peut contenir une fraction dont le numérateur et le dénominateur sont des polynômes.
Le programme suivant réduit une fraction contenant une différence de deux carrés.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (x**2 - 4)/(x - 2) resultat = cancel(expression) print(resultat) |
Sortie :
1 | x + 2 |
Comme x² - 4 = (x - 2)(x + 2), le facteur commun x - 2 disparaît lors de la réduction.
La fonction peut également réduire une fraction dans laquelle plusieurs facteurs doivent être éliminés.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (x**2 + 3*x + 2)/(x**2 + 2*x + 1) resultat = cancel(expression) print(resultat) |
Sortie :
1 | (x + 2)/(x + 1) |
En effet, le numérateur vaut (x + 1)(x + 2) et le dénominateur vaut (x + 1)². Après suppression d'un facteur x + 1, il reste la fraction réduite (x + 2)/(x + 1).
3. Supprimer les facteurs communs
L'un des principaux intérêts de cancel() est qu'il n'est pas nécessaire de factoriser manuellement le numérateur et le dénominateur. SymPy recherche automatiquement leurs facteurs polynomiaux communs.
Dans l'exemple suivant, le facteur commun n'apparaît pas directement dans l'écriture initiale.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (x**3 - x)/(x**2 - 1) resultat = cancel(expression) print(resultat) |
Sortie :
1 | x |
Le numérateur peut s'écrire x(x² - 1). Le facteur x² - 1 est commun au numérateur et au dénominateur et peut donc être supprimé.
La fonction fonctionne également lorsqu'un coefficient numérique et une expression algébrique doivent être réduits simultanément.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (6*x**2 + 12*x)/(3*x) resultat = cancel(expression) print(resultat) |
Sortie :
1 | 2*x + 4 |
Le facteur commun 3x est éliminé et l'expression obtenue est réduite. L'expression originale impose cependant x ≠ 0.
4. Réduire des fractions avec des polynômes de degré supérieur
La fonction cancel() peut traiter des fractions contenant des polynômes de degré supérieur. Elle détermine les facteurs communs même lorsque leur identification manuelle devient moins immédiate.
Le programme suivant réduit une fraction contenant des polynômes de degrés 4 et 3.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (x**4 - 1)/(x**3 - x) resultat = cancel(expression) print(resultat) |
Sortie :
1 | (x**2 + 1)/x |
En effet, x⁴ - 1 = (x² - 1)(x² + 1) et x³ - x = x(x² - 1). Après suppression du facteur commun x² - 1, il reste (x² + 1)/x.
Un autre exemple montre la réduction d'une fraction dont le numérateur et le dénominateur possèdent plusieurs facteurs.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = (x**3 + 2*x**2 - x - 2)/(x**2 - 1) resultat = cancel(expression) print(resultat) |
Sortie :
1 | x + 2 |
SymPy détecte automatiquement que le numérateur contient le facteur x² - 1 et le supprime du quotient.
5. Réduire des fractions à plusieurs variables
La fonction cancel() peut également travailler avec des fractions rationnelles à plusieurs variables. Les facteurs communs peuvent alors contenir plusieurs symboles.
Le programme suivant réduit une fraction contenant les variables x et y.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x, y = symbols("x y") expression = (x**2 - y**2)/(x - y) resultat = cancel(expression) print(resultat) |
Sortie :
1 | x + y |
SymPy reconnaît l'identité x² - y² = (x - y)(x + y) et élimine le facteur commun x - y.
La réduction peut également concerner une fraction possédant plusieurs facteurs communs à plusieurs variables.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x, y = symbols("x y") expression = (x**2*y + x*y**2)/(x*y) resultat = cancel(expression) print(resultat) |
Sortie :
1 | x + y |
Le numérateur vaut xy(x + y). Le facteur commun xy est supprimé. L'expression originale nécessite néanmoins x ≠ 0 et y ≠ 0.
6. Utiliser cancel() après une addition de fractions
Lorsque nous additionnons plusieurs fractions algébriques, SymPy peut conserver l'expression sous forme d'une somme de fractions. La fonction cancel() peut alors transformer l'expression rationnelle obtenue en un quotient réduit.
Le programme suivant additionne deux fractions puis applique cancel().
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = 1/x + 1/(x + 1) resultat = cancel(expression) print(resultat) |
Sortie :
1 | (2*x + 1)/(x**2 + x) |
SymPy met les deux fractions au même dénominateur puis retourne une fraction rationnelle réduite.
Le même principe peut être appliqué à une expression contenant trois fractions.
1 2 3 4 5 6 7 | from sympy import symbols, cancel x = symbols("x") expression = 1/x + 1/(x + 1) + 1/(x + 2) resultat = cancel(expression) print(resultat) |
Sortie :
1 | (3*x**2 + 6*x + 2)/(x**3 + 3*x**2 + 2*x) |
Le résultat est présenté sous la forme d'une seule fraction rationnelle dont le numérateur et le dénominateur ne possèdent plus de facteur polynomial commun.
7. Utiliser cancel() avec factor() et expand()
La fonction cancel() peut être combinée avec factor() et expand() afin d'observer les différentes formes d'une fraction algébrique. factor() fait apparaître les facteurs tandis que cancel() supprime les facteurs communs du quotient.
Le programme suivant compare l'expression originale, sa forme factorisée et sa forme réduite.
1 2 3 4 5 6 7 8 | from sympy import symbols, factor, cancel x = symbols("x") expression = (x**2 - 4)/(x**2 - x - 2) print("Expression :", expression) print("Forme factorisée :", factor(expression)) print("Forme réduite :", cancel(expression)) |
Sortie :
1 2 3 | Expression : (x**2 - 4)/(x**2 - x - 2) Forme factorisée : (x + 2)/(x + 1) Forme réduite : (x + 2)/(x + 1) |
Le numérateur vaut (x - 2)(x + 2) et le dénominateur vaut (x - 2)(x + 1). Le facteur commun x - 2 est éliminé.
Nous pouvons ensuite utiliser expand() pour développer le numérateur et le dénominateur de certaines formes rationnelles si cela est utile pour la suite du calcul.
1 2 3 4 5 6 7 8 | from sympy import symbols, cancel, expand x = symbols("x") expression = ((x + 1)*(x + 2))/((x + 1)*(x + 3)) resultat = cancel(expression) print("Fraction réduite :", resultat) print("Forme développée :", expand(resultat)) |
Sortie :
1 2 | Fraction réduite : (x + 2)/(x + 3) Forme développée : x/(x + 3) + 2/(x + 3) |
Le choix entre une forme réduite, factorisée ou développée dépend du calcul que nous souhaitons effectuer ensuite.
8. Tenir compte des valeurs interdites
La réduction d'une fraction avec cancel() peut faire disparaître certains facteurs du dénominateur. Il est donc essentiel de conserver les valeurs interdites de l'expression originale.
Le programme suivant réduit une fraction pour laquelle x = 1 est initialement interdit.
1 2 3 4 5 6 7 8 | from sympy import symbols, cancel x = symbols("x") expression = (x**2 - 1)/(x - 1) resultat = cancel(expression) print("Expression originale :", expression) print("Expression réduite :", resultat) |
Sortie :
1 2 | Expression originale : (x**2 - 1)/(x - 1) Expression réduite : x + 1 |
L'expression réduite x + 1 peut être calculée pour x = 1, mais l'expression originale ne le peut pas car son dénominateur s'annule. Les deux expressions coïncident donc sur le domaine où l'expression originale est définie.
Nous pouvons utiliser solve() sur le dénominateur original pour rechercher les valeurs interdites.
1 2 3 4 5 6 7 | from sympy import symbols, solve x = symbols("x") denominateur = x**2 - 1 valeurs_interdites = solve(denominateur, x) print(valeurs_interdites) |
Sortie :
1 | [-1, 1] |
Pour une fraction ayant x² - 1 comme dénominateur original, les valeurs -1 et 1 doivent être exclues du domaine, même si certains facteurs disparaissent après réduction.
9. Comparer cancel() avec simplify() et together()
Les fonctions cancel(), simplify() et together() peuvent toutes intervenir dans la manipulation des fractions, mais leurs objectifs sont différents. cancel() est spécialisée dans la réduction des fonctions rationnelles, simplify() cherche une simplification générale et together() cherche principalement à réunir des termes rationnels sous un dénominateur commun.
Le programme suivant compare ces trois fonctions sur une somme de fractions.
1 2 3 4 5 6 7 8 9 | from sympy import symbols, cancel, simplify, together x = symbols("x") expression = 1/x + 1/(x + 1) print("Expression :", expression) print("cancel() :", cancel(expression)) print("simplify() :", simplify(expression)) print("together() :", together(expression)) |
Sortie :
1 2 3 4 | Expression : 1/(x + 1) + 1/x cancel() : (2*x + 1)/(x**2 + x) simplify() : (2*x + 1)/(x*(x + 1)) together() : (2*x + 1)/(x*(x + 1)) |
Les résultats sont mathématiquement équivalents, mais leur présentation diffère. cancel() privilégie une forme rationnelle réduite avec des polynômes développés, tandis que together() est particulièrement adaptée à la mise sous un dénominateur commun.
Le programme suivant montre comment together() et cancel() peuvent être utilisés successivement.
1 2 3 4 5 6 7 8 9 10 | from sympy import symbols, together, cancel x = symbols("x") expression = 1/(x - 1) - 1/(x + 1) fraction = together(expression) reduite = cancel(fraction) print("Dénominateur commun :", fraction) print("Fraction réduite :", reduite) |
Sortie :
1 2 | Dénominateur commun : 2/((x - 1)*(x + 1)) Fraction réduite : 2/(x**2 - 1) |
together() permet ici de réunir les fractions tandis que cancel() donne ensuite une représentation rationnelle réduite.
10. À retenir !
La fonction cancel() de SymPy est spécialement conçue pour réduire les fractions algébriques et les fonctions rationnelles. Elle recherche les facteurs polynomiaux communs au numérateur et au dénominateur puis les élimine automatiquement.
- cancel(expression) réduit une fraction algébrique.
- Elle élimine les facteurs communs du numérateur et du dénominateur.
- Il n'est pas nécessaire de factoriser manuellement les polynômes avant d'utiliser cancel().
- La fonction peut traiter des polynômes de degré élevé.
- Elle fonctionne également avec des expressions contenant plusieurs variables.
- cancel() peut transformer une somme de fractions en une fraction rationnelle réduite.
- factor() peut être utilisé pour visualiser les facteurs d'une expression.
- together() est particulièrement utile pour mettre plusieurs fractions sous un dénominateur commun.
- Les facteurs supprimés du dénominateur peuvent correspondre à des valeurs interdites qu'il faut conserver lors de l'étude du domaine.
- Pour la réduction spécifique d'une fonction rationnelle, cancel() est généralement plus appropriée qu'une simplification générale.
Le programme suivant rassemble plusieurs utilisations importantes de cancel() sur différentes fractions algébriques.
1 2 3 4 5 6 7 8 9 10 11 | from sympy import symbols, cancel x, y = symbols("x y") expression1 = (x**2 - 1)/(x - 1) expression2 = (x**4 - 1)/(x**3 - x) expression3 = (x**2 - y**2)/(x - y) print("Fraction 1 :", cancel(expression1)) print("Fraction 2 :", cancel(expression2)) print("Fraction 3 :", cancel(expression3)) |
Sortie :
1 2 3 | Fraction 1 : x + 1 Fraction 2 : (x**2 + 1)/x Fraction 3 : x + y |
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/


