Manipuler les polynômes avec Poly en SymPy Python

1. À propos des polynômes avec Poly en SymPy

La bibliothèque SymPy permet de manipuler directement des expressions algébriques, mais elle propose également la classe Poly, spécialement conçue pour représenter et manipuler des polynômes. Un objet Poly fournit des méthodes permettant d'obtenir facilement le degré, les coefficients, les monômes et les termes d'un polynôme, mais aussi d'effectuer des divisions et d'autres opérations polynomiales.

Le programme suivant crée un premier objet Poly à partir d'une expression en x.

Sortie :

SymPy indique que P est un polynôme en x. Le domaine ZZ signifie ici que ses coefficients appartiennent aux entiers.

Un objet Poly est différent d'une expression SymPy ordinaire. La méthode as_expr() permet de récupérer l'expression algébrique associée au polynôme.

Sortie :

Nous pouvons ainsi passer facilement d'une représentation sous forme de polynôme à une expression SymPy classique.

2. Créer un polynôme avec Poly

La syntaxe générale est Poly(expression, variable). L'expression doit être polynomiale par rapport à la variable indiquée. SymPy analyse alors automatiquement les coefficients et détermine leur domaine.

Le programme suivant crée un polynôme de degré 4.

Sortie :

Le terme en x³ est absent, mais cela ne pose aucun problème. Son coefficient est simplement égal à zéro.

Les coefficients d'un polynôme ne sont pas nécessairement des entiers. Dans l'exemple suivant, nous utilisons des coefficients rationnels exacts avec Rational.

Sortie :

Le domaine QQ indique que les coefficients sont des nombres rationnels.

3. Connaître le degré et les coefficients d'un polynôme

Un objet Poly possède plusieurs méthodes permettant d'analyser sa structure. La méthode degree() retourne le degré du polynôme, tandis que LC() retourne son coefficient dominant.

Le programme suivant récupère le degré et le coefficient dominant d'un polynôme.

Sortie :

La méthode all_coeffs() retourne tous les coefficients du polynôme dans l'ordre décroissant des puissances. Les coefficients nuls correspondant aux puissances absentes sont également présents.

Sortie :

Le nombre 0 correspond au coefficient de x², puisque ce terme n'apparaît pas dans le polynôme.

La méthode coeffs() permet au contraire de récupérer uniquement les coefficients associés aux termes effectivement présents.

Sortie :

La différence entre all_coeffs() et coeffs() est donc importante lorsqu'un polynôme possède des puissances manquantes.

4. Accéder aux termes et aux monômes d'un polynôme

En plus des coefficients, Poly permet d'obtenir les monômes et les termes qui constituent un polynôme. La méthode monoms() retourne les exposants des monômes présents.

Le programme suivant affiche les monômes d'un polynôme en une variable.

Sortie :

Les tuples (4,), (2,) et (0,) représentent respectivement les monômes x⁴, x² et 1.

La méthode terms() retourne simultanément les monômes et leurs coefficients.

Sortie :

Chaque élément contient un tuple représentant le monôme suivi de son coefficient. Cette représentation est particulièrement pratique pour analyser un polynôme par programmation.

5. Effectuer des opérations sur les polynômes

Les objets Poly peuvent être additionnés, soustraits et multipliés comme des expressions algébriques. Le résultat reste un objet Poly lorsque les polynômes sont compatibles.

Le programme suivant additionne deux polynômes.

Sortie :

Les coefficients correspondant aux mêmes puissances de x sont automatiquement additionnés.

Le produit de deux objets Poly s'effectue également avec l'opérateur *.

Sortie :

Le produit reste représenté comme un objet Poly, ce qui permet de poursuivre les traitements polynomiaux.

6. Effectuer une division polynomiale

La classe Poly fournit la méthode div() pour effectuer une division euclidienne de polynômes. Cette opération retourne deux objets : le quotient et le reste.

Le programme suivant divise x³ - 1 par x - 1.

Sortie :

Le reste est nul, ce qui montre que x - 1 divise exactement x³ - 1.

Lorsque la division n'est pas exacte, la méthode retourne le reste correspondant.

Sortie :

Nous avons donc la relation P = Q × quotient + reste, exactement comme dans une division euclidienne classique.

7. Évaluer et transformer un polynôme

La méthode eval() permet d'évaluer directement un objet Poly pour une valeur donnée de sa variable. Cette opération évite de convertir préalablement le polynôme en expression classique.

Le programme suivant calcule la valeur de P(x) = x² + 3x + 2 pour x = 2.

Sortie :

La classe Poly permet également de calculer directement la dérivée polynomiale avec la méthode diff().

Sortie :

La dérivée obtenue reste un objet Poly. Nous pouvons donc continuer à utiliser directement les méthodes spécifiques aux polynômes.

Pour récupérer ensuite une expression SymPy classique, il suffit d'utiliser as_expr().

Sortie :

Cette conversion est utile lorsqu'une fonction SymPy attend une expression générale plutôt qu'un objet Poly.

8. Manipuler des polynômes à plusieurs variables

La classe Poly peut représenter des polynômes à plusieurs variables. Il suffit d'indiquer les différents générateurs après l'expression lors de la création du polynôme.

Le programme suivant crée un polynôme en deux variables x et y.

Sortie :

Les variables x et y sont les générateurs du polynôme. La méthode total_degree() permet d'obtenir son degré total.

Sortie :

Les termes x²y et xy² ont chacun un degré total égal à 3.

Pour un polynôme multivarié, degree() peut également être utilisé pour connaître le degré par rapport à une variable particulière.

Sortie :

Cette distinction entre degré total et degré par rapport à une variable est fondamentale pour l'étude des polynômes multivariés.

9. Factoriser et rechercher les racines d'un polynôme

Un objet Poly peut être converti en expression afin d'utiliser les fonctions générales de SymPy telles que factor(). Cette fonction permet de mettre en évidence les facteurs d'un polynôme.

Le programme suivant factorise le polynôme x³ - 6x² + 11x - 6.

Sortie :

La factorisation permet de voir immédiatement que les racines sont 1, 2 et 3.

La méthode all_roots() permet également d'obtenir directement toutes les racines d'un polynôme univarié, en tenant compte de leur multiplicité.

Sortie :

Lorsqu'une racine est multiple, elle apparaît plusieurs fois dans la liste retournée par all_roots().

Sortie :

La racine 1 apparaît deux fois car elle est de multiplicité 2.

10. À retenir !

La classe Poly de SymPy fournit une représentation spécialement conçue pour la manipulation des polynômes. Elle offre des méthodes précises pour étudier leur degré, leurs coefficients, leurs termes, leurs monômes et leurs racines, ainsi que pour effectuer des opérations polynomiales.

  • Poly(expression, x) crée un polynôme en x.
  • as_expr() transforme un objet Poly en expression SymPy classique.
  • degree() retourne le degré d'un polynôme.
  • LC() retourne son coefficient dominant.
  • all_coeffs() retourne tous les coefficients, y compris les coefficients nuls des puissances manquantes.
  • coeffs(), monoms() et terms() permettent d'étudier la structure du polynôme.
  • Les objets Poly peuvent être additionnés, soustraits et multipliés.
  • div() effectue une division polynomiale et retourne le quotient et le reste.
  • eval(), diff() et all_roots() permettent respectivement d'évaluer, dériver et rechercher les racines d'un polynôme.
  • La classe Poly prend également en charge les polynômes à plusieurs variables.

Le programme suivant rassemble plusieurs méthodes importantes de Poly afin d'analyser complètement un polynôme simple.

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 *