Factorisation de polynômes à une variable 1 Décomposition sans

Université de Nice Sophia Antipolis
Préparation à l’ Agrégation de Mathématiques 2010-2011
Factorisation de polynômes à une variable
On dispose d’algorithmes pour décomposer un polynôme en facteurs irréductibles
dans Z[X], c’est ce que nous allons voir, et du coup dans Q[X](lemme de Gauss)
dans Fp[X],ppremier
dans Q(α1, . . . , αn)[X]Q(α1, . . . , αn)est une extension algébrique de Q.
On ne peut pas résoudre ce problème en général dans R[X]ou C[X](théorie de Galois).
Les propositions ci-dessous constituent un menu à la carte.
Il serait intéressant que vos fonctions affichent une trace des étapes importantes de l’algorithme.
1 Décomposition sans facteur multiple
Programmer l’algorithme de décomposition d’un polynôme Pen produit de polynômes sans
facteurs multiples P=P1P2
2. . . P k
koù les Pisont sans facteur multiple et premiers entre eux
dans Q[X]
dans Fp[X]
2 Décomposition en facteurs irréductibles dans Fp[X]
On utilise la méthode de Berlekamp qui permet d’obtenir la décomposition en facteurs irré-
ductibles d’un polynôme Psans facteur multiple dans Fp[X]. On note Bl’application linéaire
de Berlekamp.
Si Pn’est pas irréductible
montrer que si VKer(B)non constant alors le calcul des pgcd(P, V i)pour ide 0 à
p1donne une décomposition non triviale de Pet que P=Qp1
i=0 pgcd(P, V i)
on connaît le nombre de facteurs irréductibles de P: c’est la dimension du noyau de B.
L’étape précédente peut ne pas donner le bon nombre de facteurs, par exemple si p= 2 et
Pa plus de deux facteurs c’est obligatoirement le cas. On recommence alors ces calculs
avec d’autres éléments non constants d’une base de Ker(B)et en remplaçant Ppar la
liste de ses facteurs déjà obtenus. Montrer qu’en fin de compte on aura la décomposition
en facteurs irréductibles du polynôme P.
programmer cet algorithme
3 De Fp[X]àZ[X]
3.1 Borne de Landau-Mignotte
On peut majorer les racines d’un polynôme en fonction de ses coefficients : si rest une racine
de P=Xn+an1Xn1+· · · +a0alors |r| ≤ max(1,Pn1
i=0 |ai|), de même on peut borner
les coefficients en fonction des racines (fonctions symétriques) et obtenir ainsi des bornes des
coefficients des facteurs en fonction des coefficients du polynôme factorisé. Mais ces bornes sont
très mauvaises.
On utilise la borne, difficile à démontrer, de Landau-Mignotte.
Si Q=Pq
i=0 biXiest un diviseur de P=Pp
i=0 aiXi, polynômes dans Z[X], alors
q
X
i=0
|bi| ≤ 2q
ap
bq
v
u
u
t
p
X
i=0
a2
i
3.2 Remontée de Hensel linéaire
Soit Pun polynôme unitaire dans Z[X]qui se décompose en deux facteurs irréductibles distincts
dans Fp[X]. Programmer la remontée de Hensel qui permet à partir de cette factorisation
modulo pd’en calculer une modulo p2,p3, ..., pkjusqu’à ce que pksoit supérieur à deux fois
la borne de Landau-Mignotte. En déduire la factorisation de Pdans Z[X]. La fonction mods
de Maple peut vous être utile.
3.3 Remontée de Hensel quadratique
C’est une variante de l’algorithme précédent : à chaque étape on remonte non seulement la
factorisation mais aussi la relation de Bézout entre les deux facteurs. Précédemment une
étape remontait de piàpi+1, montrer qu’avec cette variante une étape remonte de piàp2i.
Programmer cette variante.
3.4 Remontée de Hensel à kfacteurs initiaux
Soit Pun polynôme unitaire dans Z[X]qui se décompose en facteurs irréductibles distincts
dans Fp[X]mais on ne suppose plus qu’il y en ait seulement deux. Adapter l’algorithme de
remontée de Hensel linéaire pour traiter ce cas plus général.
3.5 Recombinaison
On peut avoir plus de facteurs dans Fp[X]que dans Z[X]. Après remontée on teste les facteurs
obtenus : si ce sont des facteurs de Pdans Z[X]on les met de côté. Pour ceux qui restent on
teste les produits deux à deux en les éliminant dès qu’ils constituent un facteur de Pdans Z[X]
et en ajoutant ce facteur à la liste des facteurs trouvés. Puis on recommence avec les produits
trois à trois s’il en reste, etc . . .
C’est cette étape qui donne une mauvaise complexité théorique à l’algorithme mais elle inter-
vient suffisamment peu en pratique pour ne pas pénaliser.
3.6 Le coefficient principal
Et si Pn’est pas unitaire ? Soit P=anXn+an1Xn1+· · · +a0.
En faisant le changement de variable anX=xmontrer que an1
nP=xn+an1xn1+
anan2xn2+· · · +an1
na0et qu’on est ainsi ramené à factoriser un polynôme unitaire.
Le défaut de cette méthode est qu’elle fait croître les coefficients et donc la borne de remontée.
En général on commence, quitte à décomposer Pdans Z[X], par se ramener à factoriser un
polynôme Pprimitif et sans facteur multiple, puis on choisit un modulo pqui ne divise pas an
et tel que Preste sans facteur multiple dans Fp[X]. Alors
on applique la méthode de Berlekamp au polynôme unitaire P
andans Fp[X]
on applique la remontée de Hensel aux facteurs trouvés en utilisant à chaque étape
P
an(mod pi)au lieu de P
on remonte jusqu’à 2anfois la borne de Landau-Mignotte donnée par P(cf. étape suiv-
ante)
à l’étape finale pour chaque facteur Qtrouvé on teste si anQmod pk(modulo symétrique)
divise Pdans Z[X]. Si c’est le cas on met sa partie primitive dans la liste des facteurs
trouvés et on l’élimine des facteurs à tester. On recommence en testant les produits deux
à deux, etc . . .
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !