Documentation de Pyromaths 15.02

2.2. PolynomesCollege — Fonctions polynômes

«  2.1. Fractions — Nombres rationnels   ::   Contenu   ::   2.3. SquareRoot — Objet racine carrée  »

2.2. PolynomesCollege — Fonctions polynômes

Le module PolynomesCollege introduit la classe Polynome qui permet de faire des calculs détaillés sur les polynômes.

Un objet Polynome peut être construit à partir d’une liste et d’une chaîne contenant une variable ou à partir d’une chaîne représentant le polynôme avec la variable choisie.

class pyromaths.classes.PolynomesCollege.Polynome(monomes, var=None, details=0)[source]

Cette classe crée la notion de polynômes.

Si var == None alors la variable est x.

details donne le niveau de détails attendus dans les développements et réductions :

  • 0 : pas de détails : 3x+4x => 7x
  • 1 : ordonne avant de réduire
  • 2 : ordonne puis factorise les réductions : 3x+4x=(3+4)x
  • 3 : comme 2 et détaille les produits : 2x*3x=2*3*x*x
>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome([[2,2],[3,1],[4,0]], 'z')
Polynome([[2, 2], [3, 1], [4, 0]], "z", 0)
>>> Polynome("2y^2+3y+4")
Polynome([[2, 2], [3, 1], [4, 0]], "y", 0)
>>> Polynome([[1, 1], [2, 2]])
Polynome([[1, 1], [2, 2]], "x", 0)
>>> Polynome("Fraction(1,7)x^2-Fraction(3,8)x-1")
Polynome([[Fraction(1, 7), 2], [Fraction(-3, 8), 1], [-1, 0]], "x", 0)
__add__(*others)[source]

object.__add__(*others)

p.__add__(q) est équivalent à p + q calcule la somme de polynômes.

other peut être une chaîne représentant un polynôme.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+3y^2+4", details=2)+Polynome('-y+6', details=2)
Polynome([[3, 2], [2, 1], [-1, 1], [4, 0], [6, 0]], "y", 2)
Param :other
Type :Polynome ou string évaluable comme Polynome
Type retourné:Polynome
__call__(valeur)[source]

__call__(object,*valeur*)

p.__call__(valeur) est équivalent à p(valeur) Retourne l’expression numérique du polynôme pour sa variable égale à valeur.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("4+x-x^2+x^3-2x^5")(-5)
'4-5-(-5)**2+(-5)**3-2*(-5)**5'
Param :valeur
Type :integer, float or Fraction
Type retourné:string
__delitem__(i)[source]

object.__delitem__(integer)

Renvoie le polynôme privé du i ème monome.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> p = Polynome("2y+3y^2+4")
>>> del p[1]
>>> p
Polynome([[2, 1], [4, 0]], "y", 0)
Type retourné:Polynome
__eq__(other)[source]

object.__eq__(other)

p.__eq__(q) est équivalent à p == q Renvoie True si deux polynômes sont égaux. Ne tient pas compte de l’ordre des monômes.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+3y^2+4") == Polynome('-y+6')
False
>>> Polynome('3x+5x+4')== Polynome('8x+4')
False
Type retourné:boolean
__floordiv__(other)[source]

self // other

__getitem__(i)[source]

object.__getitem__(integer)

Renvoie le i ème monome du polynôme.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+3y^2+4")[1]
[3, 2]
Type retourné:list
__iadd__(other)[source]

object.__iadd__(other)

p.__iadd__(q) est équivalent à p += q

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> p=Polynome("2y+3y^2+4")
>>> p += Polynome('-y+6')
>>> p
Polynome([[2, 1], [3, 2], [4, 0], [-1, 1], [6, 0]], "y", 0)
Type retourné:Polynome
__init__(monomes, var=None, details=0)[source]

Crée un polynôme.

__len__()[source]

object.__len__()

p.__len__() équivaut à len(p) et renvoie le nombre de monômes d’un polynôme.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> len(Polynome("2y+3y^2+4"))
3
Type retourné:integer
__mod__(other)[source]

self % other

__mul__(*others)[source]

object.__mul__(other)

p.__mul__(q) est équivalent à p * q

Renvoie une chaîne de caractère ou un objet Polynôme dont les éléments sont :

  • le produit de p et q si ce sont deux monômes dont un au moins a pour coefficient 1.
  • le produit détaillé de p et q si ce sont deux monômes ne dépendant pas du cas précédent.
  • le développement par distributivité dans les autres cas

si details est égal à 0, les produits dans les distributivités sont calculés immédiatement, sinon les produits sont explicités.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome('3x+4', details=0)*Polynome('2x+5', details=0)
'Polynome([[6, 2]], "x", 0)+Polynome([[15, 1]], "x", 0)+Polynome([[8, 1]], "x", 0)+Polynome([[20, 0]], "x", 0)'
>>> Polynome('3x', details=1)*Polynome('2x+5', details=1)
'Polynome([[3, 1]], "x", 1)*Polynome([[2, 1]], "x", 1)+Polynome([[3, 1]], "x", 1)*Polynome([[5, 0]], "x", 1)'
>>> Polynome('3x', details=3) * Polynome('2x', details=3)
"Polynome([[3, 0]], var = 'x', details=3)*Polynome([[1, 1]], var = 'x', details=3)*Polynome([[2, 0]], var = 'x', details=3)*Polynome([[1, 1]], var = 'x', details=3)"
>>> Polynome('3', details=3)*Polynome('x', details=3)
Polynome([[3, 1]], "x", 3)
Param :other
Type :Polynome ou string évaluable comme Polynome
Type retourné:string ou Polynome
__ne__(other)[source]

object.__ne__(other)

p.__ne__(q) est équivalent à p != q Renvoie True si deux polynômes sont différents. Ne tient pas compte de l’ordre des monômes.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+3y^2+4") != Polynome('-y+6')
True
Type retourné:boolean
__neg__()[source]

object.__neg__()

p.__neg__() est équivalent à -p est équivalent à p = -p

TODO : Corriger ce dernier point ; p ne devrait pas être modifié

Renvoie l’opposé d’un polynôme.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> -Polynome("2y+3y^2+4")
Polynome([[-2, 1], [-3, 2], [-4, 0]], "y", 0)
Type retourné:Polynome
__pos__()[source]

object.__pos__()

p.__pos__() est équivalent à +p

Renvoie le polynôme.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> +Polynome("2y+3y^2+4")
Polynome([[2, 1], [3, 2], [4, 0]], "y", 0)
Type retourné:Polynome
__pow__(other)[source]

object.pow(integer)

p.__pow__(n) équivaut à p**n et renvoie le développement du polynôme p à la puissance n.

  • Si n == 1, alors renvoie l’objet Polynome ;
  • si n == 2, alors renvoie une chaîne avec le développement en utilisant une identité remarquable ;
  • si n > 1, renvoie le développement en utilisant la formule du binôme de Newton.

TODO : si n == 2 et len(p) > 2, bug

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+4")**2
'Polynome([[2, 1]], "y", 0)**2+2*Polynome([[2, 1]], "y", 0)*Polynome([[4, 0]], "y", 0)+Polynome([[4, 0]], "y", 0)**2'
>>> Polynome("2y")**3
Polynome([[8, 3]], "y", 0)
Type retourné:string ou Polynome
__radd__(other)[source]

object.__radd__(other)

p.__radd__(q) est équivalent à q + p

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> from pyromaths.classes.Fractions import Fraction
>>> Fraction(5,4)+Polynome("3x")
Polynome([[3, 1], [Fraction(5, 4), 0]], "x", 0)
Param :other
Type :Polynome ou string évaluable comme Polynome
Type retourné:Polynome
__repr__()[source]

repr(object)

Renvoie une chaîne de caractère représentant un Polynome évaluable pour créer un Polynome.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> repr(Polynome([[2,2],[3,1],[4,0]], 'z'))
'Polynome([[2, 2], [3, 1], [4, 0]], "z", 0)'
Type retourné:string
__rmul__(other)[source]

Multiplication de other (qui n’est pas un polynôme) par self (qui en est un)

  • Si other est une suite de produits de monômes, et self un polynôme de rang 1, on effectue toutes les multiplications en une fois
  • Sinon, on calcule d’abord @other
Param :other
Type :Polynome ou string évaluable comme Polynome
Type retourné:string ou Polynome
__rsub__(other)[source]

object.__rsub__(other)

p.__rsub__(q) est équivalent à q - p

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> 1-Polynome([[-4, 1], [-9, 2], [-5, 0]], "x")
'Polynome([[1, 0]], "x", 0)+Polynome([[4, 1], [9, 2], [5, 0]], "x", 0)'
>>> from pyromaths.classes.Fractions import Fraction
>>> Fraction(5,4)-Polynome("3x")
Polynome([[-3, 1], [Fraction(5, 4), 0]], "x", 0)
>>> Fraction(5,4)-Polynome("-3x")
Polynome([[3, 1], [Fraction(5, 4), 0]], "x", 0)
Param :other
Type :Polynome ou string évaluable comme Polynome
Type retourné:Polynome
__str__()[source]

str(object)

Renvoie une version LaTeX du polynôme.
>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> str(Polynome([[2,2],[3,1],[4,0]], 'z'))
'2\\,z^{2}+3\\,z+4'
>>> str(Polynome("y^2-Fraction(3,2)y-1"))
'y^{2}-\\dfrac{3}{2}\\,y-1'
>>> from pyromaths.classes.Fractions import Fraction
>>> print(Polynome([[1, 1], [Fraction(-5, 1), 0]]))
x-5
Type retourné:string
__sub__(*others)[source]

object.__sub__(other)

p.__sub__(q) est équivalent à p + q calcule la somme de polynômes.

other peut être une chaîne représentant un polynôme.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+3y^2+4")-Polynome('-y+6')
'Polynome([[2, 1], [3, 2], [4, 0]], "y", 0)+Polynome([[1, 1], [-6, 0]], "y", 0)'
>>> Polynome("3y^2+2y+4")-Polynome('-y+6')
'Polynome([[3, 2], [2, 1], [4, 0]], "y", 0)+Polynome([[1, 1], [-6, 0]], "y", 0)'
>>> Polynome("x+6")-Polynome("3x")
Polynome([[-2, 1], [6, 0]], "x", 0)
>>> Polynome("x+6",details=2)-Polynome("3x",details=2)
Polynome([[1, 1], [-3, 1], [6, 0]], "x", 2)
Param :other
Type :Polynome ou string évaluable comme Polynome
Type retourné:Polynome or string
degre()[source]

degre(object)

Retourne le degré d’un polynôme, -1 pour le polynôme nul

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome("2y+3y^2+4").degre()
2
>>> Polynome('').degre()
-1
Type retourné:integer
nreduction(bdirecte=False)[source]

nreduction(object)

Retourne une étape de la réduction d’un polynome selon la valeur de detail Si bdirecte est True, alors donne la version réduite sans aucun détail de calcul

Paramètres:
  • type – Polynome
  • bdirecte – faut-il donner directement le résultat de la réduction, sans étape de calcul ?
  • type – boolean
Type retourné:

Polynome

ordonnable()[source]

ordonnable(object)

Retourne True si le polynome n’est pas ordonnée, False sinon.

Paramètres:type – Polynome
Type retourné:boolean
ordonne()[source]

ordonne(object)

Retourne une version ordonnée d’un polynome en écrivant en premier les monômes de degré supérieur.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome([[2, 1], [3, 2], [4, 0], [-1, 1], [6, 0]], "y").ordonne()
Polynome([[3, 2], [2, 1], [-1, 1], [4, 0], [6, 0]], "y", 0)
Paramètres:type – Polynome
Type retourné:Polynome
reductible()[source]

reductible(object)

Retourne True si le polynôme est réductible ou ordonnable, False sinon.

>>> from pyromaths.classes.PolynomesCollege import Polynome
>>> Polynome([[2, 1], [3, 2], [4, 0], [-1, 1], [6, 0]], "y").reductible()
True
Paramètres:type – Polynome
Type retourné:boolean

«  2.1. Fractions — Nombres rationnels   ::   Contenu   ::   2.3. SquareRoot — Objet racine carrée  »