Résolution de systèmes polynomiaux

Éric Schost
Eric.Schost@polytechnique.fr

Le but de ce projet est de présenter quelques techniques de résolution de systèmes d'équations polynomiales. En ce qui nous concerne, sur un exemple, nous serons intéressés par la transformation d'un ensemble d'équations de la forme
x2+y2+z2 = 1,    x2+z2 =y,    x=z
en un ensemble d'équations équivalentes de la forme
z4+
1
2
z2-
1
4
=0,    x=z,    y=-2z2.
La deuxième forme est manifestement plus sympathique : on y lit qu'il y a 4 solutions complexes (dont 2 réelles), et il n'est pas difficile d'en trouver des approximations numériques. Par comparaison, il est bien moins évident de répondre à ces questions sur la première formulation. Le deuxième système est une base de Gröbner associée aux équations initiales.

On peut considérer comme second exemple le système
54-5y+99z-61xy-50x2-12yz,
1-47x-91xy-47z2-61yz+41y2,
-86+23xy-84x2+19x2y-50xyz+88xz2 ;
un des ses bases de Gröbner est de la forme
x - Px(z),    y - Py(z),    Q(z),
Px,Py sont des polynômes en z de degré 11, et Q un polyôme en z de degré 12. On voit donc que le système initial a 12 solutions ; pour en trouver des approximations, il suffit de trouver des approximations des racines de Q, et les injecter dans Px et Py. Ce projet demande d'écrire de quoi calculer de telles bases de Gröbner.

1  Description

1.1  Rappel : division euclidienne

Une idée sous-jacente à la notion de base de Gröbner est une généralisation de la division euclidienne (que l'on connaît pour les polynômes en une variable) à des situations en plusieurs variables. Si k est un corps, pour tous F et G de k[X], il existe d'uniques quotient et reste Q,R tels que G=QF+R, avec deg R < degF. L'algorithme de division euclidienne est un processus itératif permettant de calculer le reste R.

Notons degF = D et degG = D' et supposons que D' est au moins égal à D (sinon, il n'y a rien à faire). La boucle élémentaire de la division euclidienne de G par F consiste à réécrire G modulo F de manière à faire disparaître son terme de plus haut degré. Pour cela, on pose la soustraction G-coeff(G,D')/coeff(F,D) XD'-DF, ce qui fait descendre le degré d'au moins 1. On itère ensuite le procédé jusqu'à ce que le degré descende en dessous de celui de F.

Avec plus de recul, l'idée principale derrière ce procédé consiste à associer aux polynômes F et G des termes de tête, à savoir les termes de plus haut degré. La division avec reste de G par F passe alors par une suite de réécritures : tant que le terme de tête de F divise le terme de tête de G, on peut annuler ce dernier par une combinaison linéaire adéquate. La technologie des bases de Gröbner est une extension de ce processus en plusieurs variables.

1.2  Ordres monomiaux et division avec reste

Pour étendre les techniques de division avec reste, il faut pouvoir associer à tout polynôme un terme de tête. Pour cela, il faut définir une relation d'ordre sur les monômes. On appelle ordre monomial une relation d'ordre < sur les monômes de k[X1,...,Xn] telle que pour tous monômes n,m,m', 1 < n et m < m' implique nm < nm'. Plus explicitement, soient Xα et Xβ deux monômes, avec α=(α1,...,αn) et β=(β1,...,βn). Des ordres parmi les plus fréquemment utilisés sont les suivants.
Ordre lexicographique (lex).
On dit que Xβ< Xα pour l'ordre lexicographique si αi > βi pour le premier indice i tel que αi ≠ βi. C'est l'ordre du dictionnaire sur les ``mots'' α et β.
Ordre du degré, raffiné par l'ordre lexicographique inverse (grevlex).
On dit que Xβ< Xα pour cet ordre si ∑iβi < ∑i αi, ou, en cas d'égalité, si αi < βi pour le dernier indice i tel que αi ≠ βi.



La notion d'ordre monomial permet d'associer à tout polynôme F son terme de tête, c'est le terme correspondant au monôme le plus grand (attention : dans le terme de tête, on prend en compte le coefficient). On peut dès lors écrire un algorithme de division avec reste pour les polynômes à plusieurs variables, qui généralise celui donné dans le cas d'une variable ; étant donnés des polynômes F1,...,Fs et G, cet algorithme calcule des quotients Q1,...,Qs et un reste R tels que G=Q1F1 + ⋯ + Qs Fs + R. Le terme de tête du polynôme Fi est noté Li, pour is.
  1. Poser Q1 = ⋯ = QS = R =0
  2. Tant que G ≠ 0, faire
    1. Soit LG le terme de tête de G
    2. Si il existe i tel que LG est divisible par Li faire
      • Qi = Qi + LG/Li
      • G = G - (LG/Li) Fi
    3. Sinon
      • G=G-LG
      • R=R+LG
L'exemple suivant montre cependant que sans prendre de précaution supplémentaire, le reste n'est pas unique (il dépend de l'ordre dans lequel on choisit les diviseurs). Dans Q[X1,X2] muni de l'ordre lexicographique, considérons les polynômes F1=X1X2+1,F2 = X22-1 et G=X1X22-X1 (le trait indique le terme de tête). Si on effectue d'abord la réduction par F2, on obtient 0. Par contre, si on réduit d'abord par F1, on obtient comme reste R=-X2-X1, qui ne se réduit pas à zéro.

1.3  Bases de Gröbner et algorithme de Buchberger

Dans l'exemple précédent, l'unicité du reste a été mise en défaut par l'existence de R=-X1-X2 qui peut s'écrire sous la forme Q1 F1 +Q2 F2, mais dont le terme de tête n'est divisible ni par le terme de tête de F1 ni par celui de F2. La définition d'une base de Gröbner vise précisément à éviter ce genre de phénomène.


Définition. Soit < un ordre monomial sur k[X1,...,Xn] et F1,...,Fr des polynômes de k[X1,...,Xn]. Une famille de polynômes G1,...,Gs forme une base de Gröbner pour F1,...,Fs et pour l'ordre < si Cette base est réduite si pour tout i, aucun des monômes de Gi n'est divisible par le terme de tête d'un des Gj, ji.

On montre que pour tous F1,...,Fr, il existe une unique base de Gröbner réduite ; en outre, l'algorithme de division par les polynômes {G1,...,Gs} produit un reste unique, quels que soient les choix effectués : cela permet de généraliser l'algorithme d'Euclide. Enfin, un système d'équations et sa base de Gröbner ont les mêmes ensembles de solutions.




Dans les exemples de l'introduction, la deuxième forme du système est une base de Gröbner pour les équations initiales, pour l'ordre lexicographique. C'est un phénomène général : dans une base lexicographique, on trouve des polynômes en la dernière variable uniquement, en les deux dernières variables, etc ..., ce qui facilite par exemple la résolution numérique, par propagation. Les bases pour l'ordre grevlex n'ont pas cette propriété, mais sont généralement bien plus faciles à calculer.

Soit F un système et G sa base de Gröbner réduite (pour un ordre quelconque). Voici d'autres résultats que l'on peut lire sur G.


Il reste à dire comment calculer une base de Gröbner. On passe d'un système F1,...,Fr à une base de Gröbner par un processus de complétion par l'adjonction de paires critiques, que l'on appelle S-polynômes. Soient F et G deux polynômes de k[X1,...,Xn], a Xα=a X1α1Xnαn et bXβ=b X1β1Xnβn les termes de tête de F et G. Pour i=1,...,n, soit γi=max(α1i), et notons Xγ= X1γ1Xnγn. On appelle S-polynôme de F et G le polynôme
Xγ
a Xα
F -
Xγ
b Xβ
G.
L'idée derrière cette définition est de forcer l'annulation des termes de tête des deux membres par collision.




À l'aide de cette définition, l'algorithme de Buchberger consiste à adjoindre au système initial de générateurs tous les S-polynômes que l'on peut en déduire, jusqu'à stabilisation du processus. On montre que cet algorithme calcule une base de Gröbner.
  1. Poser G=F
  2. Faire
    1. Poser G'=G.
    2. Pour p,q dans G', faire
      • Soit R le reste du S-polynôme de p,q par G'
      • Si R≠ 0, faire G=G ∪ {R}.
    Jusqu'à ce que G=G'.
À la sortie, la base G n'est pas réduite : on réduit G en considérant successivement tous les éléments g de G, et en réduisant g par G-{g} : si le reste r est différent de g, on remplace g par r dans G (si r=0, on supprime g de G). On montre que le processus s'arrête, et calcule une base réduite.

2  Travail demandé

La première étape à réaliser pour ce projet est l'implantation des algorithmes décrits ci-dessus : calcul d'une base de Gröbner réduite, et calcul du nombre de solutions d'un système, si ce nombre de solutions est fini.

Jusqu'ici, on n'a pas spécifié qui était le corps k : concrètement, on pense à des corps finis Z/pZ (p premier) ou à Q. Pour pouvoir traiter ces deux cas simultanément (et potentiellement n'importe quel autre corps), on écrira du code générique, en utilisant les mécanismes d'héritage. De même, on s'attachera à écrire un code le plus générique possible vis-à-vis de l'ordre monomial utilisé.

Lorsqu'on travaille sur Q, la taille des coefficients "explose" rapidement : il ne suffira pas de travailler avec des int ni des long, et on aura besoin d'entiers en précision arbitraire. Une solution est d'utiliser la bibliothèque BigInteger.




À titre indicatif, vous pourrez tester votre code sur les systèmes cycliques : pour n fixé, on obtient le système cyclique d'ordre n en posant les équations
X1 + X2 + ⋯ + Xn = 0,
X1 X2 + X2 X3 + X3 X4 + ⋯ + Xn X1 = 0,
X1 X2 X3 + X2 X3 X4 + ⋯ + Xn X1 X2 = 0,
   
X1 X2Xn-1 + ⋯ + Xn X1Xn-2 = 0,
X1Xn = 1.
Jusqu'à quelle valeur de n pouvez vous effectuer les calculs ?




Enfin, pour aller plus loin, on propose les extensions suivantes :
Changement d'ordre :
l'expérience montre que les bases pour l'ordre lexicographique sont plus "intéressantes" que celles pour l'ordre grevlex, mais plus longues à calculer. Les techniques de changement d'ordre consistent à calculer une base grevlex pour commencer, puis à en déduire une base lexicographique. L'ingrédient essentiel est de l'algèbre linéaire.
Critères de Buchberger et techniques modulaires :
une large part des calculs consiste à réduire des S-polynômes par la base en cours de construction. S'il y a moyen de prédire qu'une réduction donne 0, on peut directement rejeter le S-polynôme en question, et c'est autant de temps de gagné.

Les critères de Buchberger premettent d'effectuer ce type de prédiction. Une autre possibilité, lorsqu'on travaille sur Q, est de commencer par réduire le système modulo un nombre premier p et d'effectuer le calcul modulo p, en gardant trace des réductions à 0.
Isolation des racines réelles :
Enfin, lorsqu'on travaille sur Q, dans le cas où le système a un nombre fini de solutions (complexes), on propose d'écrire un algorithme pour approcher les solutions réelles (il existe également des algorithmes pour trouver les racines complexes, mais ils sont plus délicats à mettre en place). L'ingrédient principal est la règle des signes de Descartes pour les polynômes en une variable.
Références.
Une référence très abordable est le livre de D. Cox, J. Little, D. O'Shea, Ideals, varieties and algorithms, Springer, 1992.

Pour les extensions décrites ci-dessus, on pourra consulter le livre de D. Cox, J. Little, D. O'Shea, Using algebraic geometry, Springer, 1998. Avant d'aborder ces extensions, il est vivement conseillé de prendre contact avec l'auteur du sujet pour obtenir davantage d'explications, et un guide plus précis de la littérature.

Enfin, pour vérifier vos résultats, n'hésitez pas à utiliser un logiciel comme Maple, installé dans les salles informatiques de l'X, qui permet d'effectuer tous ces calculs.


Ce document a été traduit de LATEX par HEVEA.