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
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),
où 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 i ≤ s.
-
Poser Q1 = ⋯ = QS = R =0
- Tant que G ≠ 0, faire
-
Soit LG le terme de tête de G
- Si il existe i tel que LG est divisible par Li faire
-
Qi = Qi + LG/Li
- G = G - (LG/Li) Fi
- Sinon
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
-
tout Gi s'écrit sous la forme ∑j Qi,j Fj ;
- le terme de tête de tout élément de la forme ∑i Qi
Fi est divisible par le terme de tête de l'un des Gi.
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, j ≠ i.
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.
-
F est inconsistant ssi G={1}.
- F a un nombre fini de solutions ssi pour tout i, il existe
un polynôme de G dont le terme de tête est Xiαi.
- Si c'est le cas, le nombre de solutions est égal au nombre de
monômes qui ne sont divisibles par aucun des termes de tête des
éléments de G (attention, on compte ici les solutions avec
leurs éventuelles multiplicités).
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α1⋯ Xnαn et bXβ=b
X1β1⋯ Xnβn les termes de tête de F et
G. Pour i=1,...,n, soit γi=max(α1,βi), et
notons Xγ= X1γ1⋯ Xnγn. On appelle
S-polynôme de F et G le polynôme
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.
-
Poser G=F
- Faire
-
Poser G'=G.
- 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 X2 ⋯ Xn-1 + ⋯ + Xn X1 ⋯ Xn-2 |
= |
0, |
X1 ⋯ Xn |
= |
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.