Article de reference

Factorisation des polynômes

En mathématiques et en calcul formel , la factorisation de polynômes consiste à exprimer un polynôme à coefficients appartenant à un corps donné ou à l' ensemble des entiers com...

mathématiques et en calcul formel , la factorisation de polynômes consiste à exprimer un polynôme à coefficients appartenant à un corps donné ou à l' ensemble des entiers comme le produit de facteurs irréductibles à coefficients appartenant au même corps. La factorisation de polynômes est l'un des composants fondamentaux des systèmes de calcul formel .

Le premier algorithme de factorisation polynomiale a été publié par Theodor von Schubert en 1793. Leopold Kronecker a redécouvert l'algorithme de Schubert en 1882 et l'a étendu aux polynômes multivariés et à leurs coefficients dans une extension algébrique . Cependant, la plupart des connaissances sur ce sujet ne sont pas antérieures à 1965 environ et aux premiers systèmes de calcul formel par ordinateur :

Lorsque les algorithmes à pas finis, connus depuis longtemps, ont été implémentés pour la première fois sur ordinateur, ils se sont révélés extrêmement inefficaces. Le fait que presque tout polynôme univarié ou multivarié de degré inférieur ou égal à 100 et à coefficients de taille modérée (jusqu'à 100 bits) puisse être factorisé par les algorithmes modernes en quelques minutes de temps de calcul témoigne du succès rencontré par ce problème au cours des quinze dernières années. (Erich Kaltofen, 1982)

Les algorithmes et les ordinateurs modernes peuvent rapidement factoriser des polynômes univariés de degré supérieur à 1000 ayant des coefficients à plusieurs milliers de chiffres. À cette fin, même pour la factorisation sur les nombres rationnels et les corps de nombres , une étape fondamentale est la factorisation d'un polynôme sur un corps fini .

Les anneaux de polynômes sur les entiers ou sur un corps sont des anneaux factoriels uniques . Cela signifie que tout élément de ces anneaux est le produit d'une constante et d'un produit de polynômes irréductibles (c'est-à-dire des polynômes qui ne sont pas le produit de deux polynômes non constants). De plus, cette décomposition est unique à la multiplication des facteurs par des constantes inversibles près.

La factorisation dépend du corps de base. Par exemple, le théorème fondamental de l'algèbre , qui stipule que tout polynôme à coefficients complexes possède des racines complexes, implique qu'un polynôme à coefficients entiers peut être factorisé (à l'aide d'algorithmes de recherche de racines ) en facteurs linéaires sur le corps complexe C. De même, sur le corps des réels , les facteurs irréductibles sont de degré au plus deux, tandis que sur le corps des rationnels Q , il existe des polynômes de tout degré qui sont irréductibles.

La question de la factorisation polynomiale n'a de sens que pour les coefficients d'un corps calculable dont chaque élément peut être représenté par ordinateur et pour lequel il existe des algorithmes pour les opérations arithmétiques. Cependant, cette condition n'est pas suffisante : Fröhlich et Shepherdson donnent des exemples de tels corps pour lesquels aucun algorithme de factorisation ne peut exister.

Les corps de coefficients pour lesquels on connaît des algorithmes de factorisation comprennent les corps premiers (c’est-à-dire le corps des nombres rationnels et le corps des entiers modulo un nombre premier ) et leurs extensions de type fini . Les coefficients entiers sont également traitables. La méthode classique de Kronecker ne présente d’intérêt que d’un point de vue historique ; les algorithmes modernes procèdent par une succession d’étapes :

  • Factorisation sans carré
  • Factorisation sur les corps finis

et réductions :

Factorisation primitive partie-contenu

à son signe près, le plus grand commun diviseur de ses coefficients. La partie primitive de p est primpart( p ) = p / cont( p ), qui est un polynôme primitif à coefficients entiers. Ceci définit une factorisation de p en le produit d'un entier et d'un polynôme primitif. Cette factorisation est unique à un signe près du contenu. Par convention, on choisit le signe du contenu de sorte que le coefficient dominant de la partie primitive soit positif.

Par exemple,

est une factorisation en contenu et partie primitive.

Tout polynôme q à coefficients rationnels peut être écrit

pZ [ X ] et cZ : il suffit de prendre pour c un multiple de tous les dénominateurs des coefficients de q (par exemple leur produit) et p = cq . Le contenu de q est défini comme :

La partie primitive de q est celle de p . Quant aux polynômes à coefficients entiers, cela définit une factorisation en un nombre rationnel et un polynôme primitif à coefficients entiers. Cette factorisation est unique à un signe près.

Par exemple,

est une factorisation en contenu et partie primitive.

Gauss a démontré que le produit de deux polynômes primitifs est lui-même primitif ( lemme de Gauss ). Il en découle qu'un polynôme primitif est irréductible sur les rationnels si et seulement s'il est irréductible sur les entiers. Cela implique également que la factorisation sur les rationnels d'un polynôme à coefficients rationnels est identique à la factorisation sur les entiers de sa partie primitive. De même, la factorisation sur les entiers d'un polynôme à coefficients entiers est égale au produit de la factorisation de sa partie primitive par la factorisation de son contenu.

En d'autres termes, le calcul du PGCD entier réduit la factorisation d'un polynôme sur les rationnels à la factorisation d'un polynôme primitif à coefficients entiers, et la factorisation sur les entiers à la factorisation d'un entier et d'un polynôme primitif.

Tout ce qui précède reste vrai si l'on remplace Z par un anneau de polynômes sur un corps F et Q par un corps de fonctions rationnelles sur F à partir des mêmes variables, à la seule différence que « à un signe près » doit être remplacé par « à la multiplication près par une constante inversible dans F ». Ceci ramène la factorisation sur une extension purement transcendante de F à la factorisation de polynômes multivariés sur F.

Factorisation sans carré

dérivée du polynôme (par rapport à n'importe laquelle des variables, s'il y en a plusieurs).

Pour les polynômes univariés, la présence de plusieurs facteurs équivaut à celle de plusieurs racines (sur un corps d'extension approprié). Pour les polynômes univariés sur les rationnels (ou plus généralement sur un corps de caractéristique nulle), l'algorithme de Yun exploite cette propriété pour factoriser efficacement le polynôme en facteurs non carrés, c'est-à-dire des facteurs qui ne sont pas des multiples d'un carré, en effectuant une suite de calculs de PGCD commençant par pgcd( f ( x ), f '( x )). Pour factoriser le polynôme initial, il suffit de factoriser chaque facteur non carré. La factorisation sans facteur carré est donc la première étape de la plupart des algorithmes de factorisation de polynômes.

L'algorithme de Yun étend cela au cas multivarié en considérant un polynôme multivarié comme un polynôme univarié sur un anneau de polynômes.

Dans le cas d'un polynôme sur un corps fini, l'algorithme de Yun n'est applicable que si le degré est inférieur à la caractéristique, car, sinon, la dérivée d'un polynôme non nul peut être nulle (sur le corps à p éléments, la dérivée d'un polynôme en x<sup> p</sup> est toujours nulle). Néanmoins, une succession de calculs de PGCD, à partir du polynôme et de sa dérivée, permet de calculer la décomposition sans facteur carré ; voir Factorisation de polynômes sur des corps finis#Factorisation sans facteur carré .

méthodes classiques

Cette section décrit les méthodes classiques qui peuvent s'avérer pratiques pour le calcul manuel. Ces méthodes ne sont pas utilisées pour les calculs sur machine car elles font appel à la factorisation d'entiers , actuellement plus lente que la factorisation de polynômes.

Les deux méthodes qui suivent partent d'un polynôme univarié à coefficients entiers pour trouver des facteurs qui sont également des polynômes à coefficients entiers.

Obtention des facteurs linéaires

Tous les facteurs linéaires à coefficients rationnels peuvent être trouvés à l'aide du test de la racine rationnelle . Si le polynôme à factoriser est

La méthode de Kronecker

La méthode de Kronecker vise à factoriser les polynômes univariés à coefficients entiers en polynômes à coefficients entiers.

La méthode repose sur le fait que l'évaluation de polynômes entiers à des valeurs entières doit produire des entiers. Autrement dit, si

Si l'on recherche tous les facteurs d'un degré donné

Si ce polynôme se factorise sur Z , alors au moins un de ses facteurs

1×2, 2×1, (−1)×(−2), ou (−2)×(−1).

Par conséquent, s'il existe un facteur polynomial entier du second degré, il doit prendre l'une des valeurs

p (0) = 1, 2, −1 ou −2

et de même pour p (−1). Il existe huit factorisations de 6 (quatre pour 1×6 et quatre pour 2×3), ce qui donne un total de 4×4×8 = 128 triplets possibles ( p (0), p (1), p (−1)), dont la moitié peut être éliminée comme étant l'opposé de l'autre moitié. Il faut donc vérifier 64 polynômes entiers explicites.

construit à partir des facteurs ( g (0), g (1), g (−1)) = (1,3,1)

La division de f ( x ) par p ( x ) donne l'autre facteur

méthodes modernes

Factorisation sur les corps finis

Factorisation sur les extensions algébriques (méthode de Trager)

On peut factoriser un polynôme

est la factorisation souhaitée de p ( x ), l'anneau se décompose de manière unique en corps comme :

Nous allons trouver cette décomposition sans connaître la factorisation. Tout d'abord, nous écrivons L explicitement comme une algèbre sur

Nous avons donc :

Les générateurs de L sont x ainsi que les générateurs de

Polynômes au carré

Factoriser un polynôme au carré en ses racines carrées

En général, la plupart des polynômes n'ont pas de racine carrée. Cependant, certaines applications, comme la fonction utilisée par les ingénieurs électriciens pour obtenir les paramètres Y à partir de l'impédance du point d'entrée d'un réseau à deux ports , font appel à des polynômes au carré qui doivent être factorisés en deux polynômes à racine carrée identiques. L'algorithme ci-dessous permet de factoriser un polynôme au carré.

Mesures:

Étape 1 : Calculer la racine carrée du terme dominant,

Étape 2 : Soustraire le nouveau placé

Étape 3 : Doublez l'état actuel du polynôme de solution R, puis ajoutez un nouveau terme, Q, tel que R(2Q+R) nie le terme principal de la ligne 2, et placez le négatif de R(2Q+R) dans l'espace inférieur de la ligne 2.

Étape 4 : Soustrayez les deux nombres de la ligne 2, placez les résultats dans la ligne 3 et reportez les deux termes suivants de la ligne 1 dans la ligne 3.

Étape 5 : Répétez l’opération pour toutes les lignes et colonnes restantes jusqu’à ce que ce soit terminé.

Une fois le calcul terminé, le polynôme R de la solution apparaîtra dans la colonne R du tableau de gauche et dans la ligne R du tableau de droite.

solution générale de racine carrée polynomiale

L'algorithme de calcul de la racine carrée d'un polynôme présenté ci-dessus peut être résumé et généralisé en une syntaxe mathématique standard permettant d'extraire les racines carrées de polynômes au carré de toute taille. Il est facilement traduisible en langage informatique pour des calculs rapides. Si le terme de plus haut degré du polynôme au carré est différent de 1, il faut d'abord le diviser par la valeur de ce terme, puis multiplier les facteurs obtenus par la racine carrée de ce même terme. En résumé, voici l'algorithme :

Notez qu'une fois

Factorisation numérique

à virgule flottante .

Pour les polynômes univariés à coefficients complexes, la factorisation peut facilement être réduite au calcul numérique des racines et des multiplicités polynomiales .

Dans le cas multivarié, une perturbation infinitésimale aléatoire des coefficients produit avec une probabilité de un un polynôme irréductible , même à partir d'un polynôme à plusieurs facteurs. Il est donc nécessaire de préciser la signification même de la factorisation numérique .

Laisser

Si

Plusieurs algorithmes ont été développés et mis en œuvre pour la factorisation numérique, un sujet de recherche toujours en cours.