I.3 Méthode numérique 

I.3.1 Un calcul approché dans un corps de nombres

a. Méthode en trois étapes

La donnée est une famille finie de polynômes engendrant un idéal I de K[X1,..., Xm], où K est un corps de nombres, habituellement Q. Nous construisons une approximation de la solution, c'est à dire un ou plusieurs points très proches de VKbar(I), et nous en déduisons la structure algébrique de cette variété.

Pour cela, nous commençons par fabriquer une approximation grossière d'un point solution. Nous faisons ensuite converger numériquement cette valeur vers une meilleure approximation, suffisamment précise. Cela nous permettra de retrouver la valeur exacte du point solution, et ensuite d'en déduire (une partie au moins) de la structure de la variété solution.

Chacune de ces étapes doit être adaptée au type de système étudié, si nous voulons que cette méthode puisse être compétitive avec la recherche d'une base de Gröbner. C'est envisageable si le système n'est pas quelconque mais s'il est construit pour représenter un objet plus riche, tel un dessin d'enfant.

b. Valeur des résultats obtenus

Il est toujours possible de vérifier par des calculs exacts (dans K[X1,..., Xm]) le résultat de nos calculs. Cette méthode permet donc de trouver une solution du système, ou bien une famille de solutions.

Il est parfois possible d'en déduire une description de l'ensemble solution mais, en général, si notre méthode ne trouve pas de solution, cela ne prouve pas que le système n'en a pas. De plus, si la variété se décompose en variétés irréductibles de dimensions différentes, il est très probable que la méthode numérique n'aboutisse qu'à des points des composantes de dimension maximale.

I.3.2 Convergence

a. Algorithme de Newton

À partir d'une valeur yy = (yy1 , ... , yym) proche d'une solution y du système, nous allons construire des approximations de y aussi précises que nécessaire.

La formule de Taylor, valable pour toute norme, nous donne :

||F(yy + d) - ( F(yy) + DF(yy)[d])|| = O(||d||2).

Si nous cherchons l'écart d = yy - y, nous savons que ||d|| est petit puisque par hypothèse yy est proche de y. Or y est solution du système donc ||F(y)|| = 0. La formule de Taylor devient
||F(yy) + DF(yy)[d]|| = O(||d||2).

Si DF(yy) est inversible (et donc carrée), nous avons donc un moyen d'obtenir une approximation dd de d, et chaque étape de l'algorithme de Newton remplace yy par yy + dd

dd = - DF(yy)-1[F(yy)].

Il faut inverser DF(yy), ce qui n'est pas toujours stable numériquement, et il s'agit d'un développement au premier degré, qui ne permet pas toujours de se rapprocher de la solution.

b. Choix de la norme

Lorsqu'on affirme que yy est proche de y, cela signifie que nous utilisons une certaine norme sur Km, donc une valeur absolue sur K. Si deux normes sont équivalentes, la résolution du système se fera de la même façon. C'est donc le choix de la valeur absolue qui importe.

Le choix le plus intuitif est la valeur absolue usuelle (dans C), ce que nous conseillons.

c. Dans Qp

Lorsqu'on connaît un premier p tel que K -> Qp , ce qui n'est pas évident puisqu'habituellement on ne connaît pas K, une approximation p-adique d'une solution y avec une précision k est une solution yy du système modulo pk. Comme la valeur absolue p-adique est ultramétrique, l'algorithme de Newton (qui s'appelle alors lemme de Hensel) restera dans la boule de rayon rk autour de y.

Pour pouvoir inverser la matrice DF(yy) il faut que son déterminant soit non nul modulo pk. Ce qui signifie que l'algorithme (de Newton) ne convergera vers y que si l'approximation initiale yy est une solution du système modulo pkk est supérieur à la valuation p-adique de DF(y).

Sauf pour les petits p, on peut espérer que k=1 suffit, mais la recherche d'une solution modulo p n'est pas facile. On peut l'obtenir par calcul d'une base de Gröbner modulo p, mais si cette recherche aboutit, un logiciel comme GB [19] arrivera vraisemblablement à calculer une base de Gröbner dans Z.

Malle [29] a utilisé la métrique 23-adique pour le groupe Aut(M22) des automorphismes du groupe de Mathieu M22 , mais cette approche ne paraît pas prometteuse dans le cas général : il avait une connaissance a priori du corps K, et nous montrons au paragraphe IV.5.2 qu'on peut arriver au même résultat à l'aide d'approximations dans C.

d. Dans C

Une variante (classique) de l'algorithme de Newton permet (presque) toujours de se rapprocher d'une solution : on remplace yy par yy + k dd avec k dans ] 0, 1] de telle sorte que ||F(yy + k dd)|| < ||F(yy)||. En réalité, on se rapproche ainsi d'un minimum local de ||F||. Le système et l'approximation initiale doivent être étudiés pour que ce soit un zéro.

Une fois que yy est dans la zone de convergence, l'algorithme de Newton aboutit rapidement à la précision demandée. Le nombre de chiffres significatifs gagnés double à chaque étape, ce qui permet de connaître la précision de l'approximation que nous avons calculée.

Il est possible de converger plus vite, par exemple en calculant la différentielle seconde de F.

I.3.3 Choix de l'approximation initiale

a. Problématique

Dans le cas des dessins d'enfants, toutes les solutions du système ne sont pas intéressantes. En particulier, il faut éviter les solutions triviales, qui correspondent à la collision de plusieurs points. Ceci peut être obtenu en utilisant une formulation du système qui élimine la plupart des solutions parasites (cf. section III.1.2).

Il faut aussi choisir l'approximation initiale de telle sorte que nous puissions maîtriser la solution vers laquelle convergera le système. C'est ainsi que nous pouvons calculer suffisamment de points pour obtenir la description d'une solution de dimension 1 ou plus.

b. Difficulté du cas général

Dans le cas général, une valeur de départ quelconque risque de ne pas permettre de convergence. En particulier si la variété solution est de dimension 1 ou plus, il y a le risque de se rapprocher de la variété sans se rapprocher d'un point particulier de celle-ci. On voit alors par exemple une fuite vers l'infini.

c. Résolution successives de problèmes proches

Après une étude spécifique, il peut être possible de trouver un système algébrique plus simple, dont les solutions sont proches de celles du système étudié.

Dans le cas de revêtements (dessins d'enfants), le choix naturel est un dessin dont la structure topologique est proche de notre problème. Sa géométrie est alors assez proche de la solution cherchée (cf. III.3.1 et III.3.3).

I.3.4 Algébrisation

a. Conditions

Nous devons connaître a priori la dimension de la variété et avoir suffisamment de points très proches de cette variété.

Le nombre de points et la précision nécessaires ne sont pas toujours faciles à estimer. Nous pouvons contourner cet obstacle en vérifiant formellement nos résultats et en calculant de nouveaux points ou avec une précision plus grande si besoin.

b. Dépendance algébrique, pour une solution de dimension 0

La variété solution est un ensemble fini de points de Kbarm. Pour chaque point y = (y1,..., ym) de la solution nous sommes intéressés par le calcul de son corps de définition L qui nous permettra d'exprimer ses coordonnées en termes exacts.

Si nous connaissons une borne supérieure d >= [L : K] et si P le polynôme minimal de x = yi est de degré supérieur à d/2, on en déduit que L = K[X] / (P). Nous devons donc trouver le polynôme minimal d'un nombre algébrique dont on connaît une approximation a proche de x.

Le calcul de P se fait en remarquant que P(a) est proche de 0. Il s'agit donc de trouver une relation de dépendance linéaire entre 1, a, a2, ..., ad telle que Sommej=0..d pj aj soit proche de 0.

Supposons que K = Q, nous devons alors chercher des pj dans Z tels que |Sommej=0..d pj aj| soit minimal. Comme suggéré par Lenstra, Lenstra et Lovász [28], ceci peut être réalisé par la recherche d'un vecteur court dans le réseau décrit au paragraphe suivant.

Il importe que a soit suffisamment proche de x, pour que ces pj soient les coefficients de P. Le paragraphe d'après étudie cette question.

c. Utilisation de l'algorithme LLL

Soit (Vj)j=1...p une famille libre de vecteurs de Qn. L'ensemble des combinaisons linéaires Sommej qjVj (avec qj dans Z) forme un réseau dont (Vj) est une base. Le déterminant du réseau est l'aire p-dimensionnelle du parallélépipède engendré par les (Vj ; il ne dépend pas du choix de la base. La notion de base réduite d'un réseau peut être définie de plusieurs façons qui ne sont pas équivalentes. Les vecteurs d'une base réduite ont une norme assez petite et sont presque orthogonaux les uns aux autres. Les algorithmes de réduction de réseau, dont LLL, calculent une base réduite, donc un vecteur non nul de norme assez petite. On peut considérer qu'en pratique cette norme est inférieure à la racine p-ième du déterminant D du réseau. Il est possible de prouver que pour LLL elle est inférieure à 2p(p-1)/2 D1/p.

À tout polynôme Q(X) = Sommej pj Xj on associe le vecteur du réseau VQ = Sommej pj Vj. Nous construirons un réseau tel que Vp soit très probablement son vecteur le plus court.

Nous avons le choix de l'algorithme de réduction de réseau : l'algorithme LLL est le plus rapide, il s'exécute en temps polynomial. L'algorithme Korkine-Zolotarev donne une base beaucoup plus réduite, mais en temps exponentiel. Les variantes intermédiaires Block-KZ (avec ou sans élagage de l'arbre de recherche) sont polynomiales mais bien plus lentes que LLL.

Si un algorithme de réduction plus puissant que LLL trouve Vp dans la base réduite du réseau, il est toujours possible, en augmentant légèrement la précision avec laquelle a approche x, de construire un autre réseau tel que LLL trouve Vp. L'expérimentation confirme que cette augmentation de précision n'est pas pénalisante et que nous avons intérêt à utiliser LLL, bien plus rapide que les autres algorithmes de réduction.

d. Précision nécessaire 

Nous plongeons Qbar dans C, donc x est élément de C, et nous supposons que a est un nombre complexe quelconque, proche de x. Il faut trouver une valeur N dans R>0 suffisante pour qu'on puisse calculer P dès que |a - x| < 1/N.

Si nous avons un tel N, nous notons Rj et Ij les parties entières des parties réelles et imaginaires de Naj. Les d+1 vecteurs Vj = (0, ... , 1, ..., 0, Rj , Ij) pour j=0...d (avec un 1 en j-ième position) sont libres dans Qd+3 et engendrent donc un réseau. Lorsque  max |qj| = K, sa norme est environ :

||VQ|| ~= max(Kd, |N Q(a)|).

L'ensemble ZK,d[X] des polynômes de Z[X] de degré au plus d et de coefficients majorés par K a un nombre fini d'éléments. Si x est racine d'un de ces polynômes, alors il existe une borne minimale fK,d telle que pour tout Q dans ZK,d[X], soit Q(x) = 0, soit |Q(x)| >= fK,d.

Supposons que nous avons une borne K sur les coefficients de P le polynôme minimal que nous cherchons. Si N > K d / fK,d , alors ||VQ|| < Kd si, et seulement si, Q = P. Si de plus N > Kd+1, alors le vecteur calculé par LLL est très probablement Vp.

Malheureusement, la borne fK,d est difficile à calculer. Expérimentalement, on remarque que ce n'est pas nécessaire pour les dessins d'enfants. Nous avons mesuré des valeurs comprises entre 0,53 et 1,18 pour 1/(d+1) (log N / log K), pour d valant jusqu'à 60. On a aussi remarqué que pour les corps de définition des dessins calculés, K < 102d, ce qui nous donne en première estimation N = 102d².

e. Solution de dimension 1 

Nous devons calculer des approximations numériques d'un grand nombre de points de la courbe V, pour trouver ensuite un paramétrage naturel. Ceci se fait donc en deux étapes.

Pour avoir suffisamment de valeurs sur V, nous devons faire varier un paramètre du système, par exemple en changeant l'approximation initiale à partir de laquelle nous allons faire converger vers une solution. Il existe une variable yi du système telle que la projection de V sur le i-ième axe de coordonnées ne soit pas réduite à un point. Nous cherchons par exemple des points de V ayant leur i-ième coordonnée fixée a priori.

Nous avons ainsi un grand nombre de valeurs yy = (yy1 , ... , yym) que nous supposerons suffisamment proches de la courbe solution du système, définie sur K. Nous cherchons alors un paramètre rationnel de cette courbe.

Nous devons trouver un nombre suffisant de fonctions xi, fractions rationnelles en les variables du système, pour en extraire un paramètre naturel. Nous faisons ceci par étapes : si nous trouvons une équation polynomiale P1(x0, x1) = 0, nous construisons un paramètre t2 de la courbe définie par P1, en désingularisant cette équation. Puis nous cherchons une équation P2(t2, x2) = 0, d'où un paramètre t3, jusqu'à avoir un paramètre de V. C'est ce que nous avons mis en oeuvre pour le calcul d'un polynôme de groupe de Galois M24 (voir § IV.5.4.d.).