• Aucun résultat trouvé

Interpolation d’une fraction rationnelle multivariée

Dans le document Calcul de polynômes modulaires en dimension 2 (Page 114-117)

3.6 Applications de la moyenne de Borchardt

4.1.2 Interpolation d’une fraction rationnelle multivariée

X

i=0aiXiC[X] et B(X) =Pd

A X

i=0biXi∈ C[X]. On cherche la solution avec des degrés dA X et

dBX minimaux. Chaque paire (A, B) est alors définie à une constante multiplicative près.

Soit n = dAX + dBX + 1. Écrire A(X) − F (X)B(X) = 0 induit un algorithme par algèbre linéaire : il suffit d’évaluer F en n + 1 valeurs xi et de trouver les coefficients ai et bi en résolvant le système linéaire

1 x1 . . . xd A X 1 −F (x1) −F (x1) · x1 . . . −F (x1) · xd B X 1 .. . . .. ... ... ... ... . .. ... 1 xn . . . xd A X n −F (xn) −F (xn) · xn . . . −F (xn) · xd B X n · a0 .. . adA X b0 .. . bdB X = 0 .. . 0 .

Cette méthode est particulièrement facile à implanter mais elle a une mauvaise complexité. Une autre solution consiste à utiliser l’interpolation de Cauchy (voir [85, Section 5.8]) couplée avec l’algorithme d’Euclide rapide (voir [85, Section 11]), ce qui produit un algorithme de complexité O(MN(n) log (n)). Le nombre d’évaluations est alors n.

Décrivons brièvement cette dernière méthode. Soient k et m tels que deg A < k et deg B ≤ m − k. Prenons x1, . . . , xm ∈ C et yi = F (xi) pour 1 ≤ i ≤ m et interpolons : on obtient un polynôme univarié f . On cherche des polynômes r(X) et t(X) tels que pour tout i, r(xi) = t(xi)F (xi) ; ceci implique (r(xi) = t(xi)yi =

t(xi)f (xi) si et seulement si r ≡ tf mod (X − xi) pour tout i) et par le théorème des restes Chinois, c’est équivalent à avoir que r ≡ tf mod g, où g =Qm

i=1(X −xi). On utilise alors l’algorithme d’Euclide étendu sur g et f . Soient rj, sj, tj la

j-ième ligne de cet algorithme où j est minimal tel que deg rj < k (c’est-à-dire

que r1 = g, r2 = f, s1 = 1, s2 = 0, t1 = 0, t2= 1 et r`= gs`+ f t` pour chaque ligne

`). Par le corollaire 5.18 de [85, Section 5.8], rj et tj vérifient rj(xi) = tj(xi)yi et tj(xi) 6= 0 pour tout i. Ainsi, il suffit de calculer cette ligne pour interpoler la fraction F et il est possible de ne calculer qu’une ligne par l’algorithme d’Euclide rapide (voir [85, Section 11] pour plus de détails).

On étudie maintenant le cas bivarié F (X, Y ) = A(X,Y )B(X,Y ), avec

A(X, Y ) = dA X X i=0 dA Y X j=0 cAi,jXiYj = dA X X i=0 cAi (Y )Xi ∈ C[X, Y ]

et similairement pour B(X, Y ). On pourrait bien entendu utiliser de l’algèbre li-néaire, mais la complexité serait vraiment très mauvaise. On veut plutôt faire comme dans le cas des polynômes bivariés : fixer des valeurs yj, calculer les frac-tions F (X, yj) et ensuite interpoler les coefficients comme des polynômes univariés en Y . Si F (X, Y ) ∈ Q[X, Y ], alors pour chaque fraction rationnelle trouvée, on peut forcer les numérateur et dénominateur à avoir un contenu égal à 1. Mais à cause de la constante multiplicative, cela ne va pas marcher comme le montre l’exemple suivant.

Exemple 4.1.1. Supposons que l’on cherche F (X, Y ) = 3X3XY +32Y2+Y +2 et que l’on a trouvé F (X, 1) = XX+12+1, F (X, 2) = 12X6X+32+4, F (X, 3) = 27X9X+32+5 et aussi F (X, 5) =

75X2+7

15X+3. Pour le plus grand coefficient du numérateur, cA2(Y ), si on interpole avec

yi = 2, 3, 5, ce qui nous donne cA2(yi) = 12, 27, 75, on trouve 3Y2 ce qui est correct ; d’un autre côté, avec yi = 1, 2, 3 donnant c2(yi) = 1, 12, 27, on obtient en

interpolant le polynôme 2Y2+ 5Y − 6, qui est complètement faux. Cette erreur

provient de la simplification entre le numérateur et le dénominateur dans le cas Y = 1.

Remarque 4.1.2. Pour quelques valeurs de Y , il y a une simplification par un

polynôme. Par exemple, F (X, −5) = −5X − 1. Ceci est immédiatement détecté à cause du fait que les degrés en X se trouvent diminués. À chaque fois que cela arrive, on abandonne nos valeurs. On supposera dans la suite que cela n’arrive jamais.

Dans l’exemple, si on avait fixé le coefficient de degré 0 du dénominateur de la fraction rationnelle univarié calculé à une certaine valeur (3 par exemple), la simplification n’aurait pas été un problème. Ce n’est pas vrai en général.

Exemple 4.1.3. Cette fois-ci, on écrit F (X, 1) = XX+12+1, F (X, 2) = 3X3 2+1

2X+34, F (X, 3) =

27 5X2+1

9

5X+35 , . . . , où on fixe toujours le coefficient de degré 0 du numé-rateur à 1. Alors on déduit par interpolation que cA0(Y ) = 1, ce qui est faux.

En effet, lorsque l’on divise par une constante pour obtenir le coefficient 1, c’est comme si on divisait par le polynôme Y + 2.

La difficulté est donc qu’on doit normaliser tout en étant sûr que le i-ième coefficient du numérateur et du dénominateur de chaque fraction en X provient bien de l’évaluation du même polynôme en Y .

Cette normalisation est facile à obtenir dans le cas très particulier où un des coefficients cAi (Y ) ou cBi (Y ) ∈ C[Y ] non nul est connu : on doit juste multiplier la fraction trouvée par la constante qui donne la bonne évaluation pour le coefficient connu. On peut alors obtenir par l’interpolation de Cauchy la fraction avec en tout n(dY + 1) évaluations. La complexité de l’interpolation est alors en

(dY + 1)O(MN(n) log(n)) + (n + 1)O(MN(dY) log(dY)) ⊆ ˜O(dXdYN )

où dX = max(dAX, dBX), dY = max(dYA, dBY) et n = dAX + dBX+ 1 ≤ 2dX+ 1.

Exemple 4.1.4. On reprend l’exemple précédent. Supposons que l’on connaisse

cA0(Y ) = Y + 2. On a cA0(1) = 3 et au lieu de prendre la fraction XX+12+1 comme précédemment, on prend plutôt 3X3X+32+3. On a aussi que cA0(2) = 4 et on écrit

4.1. INTERPOLATION 115 En général, une idée pour éviter la difficulté à laquelle on a fait allusion plus haut consiste à considérer la fraction F0(X, Y ) = F (X, Y X) = BA00(X,Y )(X,Y ) plutôt que F (X, Y ) car dans ce cas, on a toujours que cB00(Y ) est une constante. Si elle n’est pas nulle, on peut choisir de la fixer à 1 et alors l’argument précédent (un coefficient connu) s’applique. Ensuite, en remplaçant Y par Y /X dans F (X, Y X) on obtient F (X, Y ). Puisque dAX0 = dAT et dBX0 = dBT, où l’indice T désigne le degré total, la complexité est en ˜O(dTdYN ), où dT = max(dAT, dBT).

Remarquons que dans le cas particulier où le coefficient de degré zéro de cB0(Y ) est 0, cette méthode ne fonctionne pas. Néanmoins, pour surmonter ce problème, on peut considérer F (X + r, Y + s) au lieu de F (X, Y ) pour certaines valeurs r et s telles que ce coefficient ne soit pas nul.

On étudie maintenant le cas trivarié. On veut interpoler F (X, Y, Z) = A(X,Y,Z)B(X,Y,Z) avec A(X, Y, Z) et B(X, Y, Z) dans C[X, Y, Z]. Notons dT = max(dAT, dBT) et simi-lairement pour dX, dY et dZ. Soit n = dAT + dBT + 1. Comme dans le cas bivarié, on calcule F (X, XY, XZ) et ensuite en remplace Y par Y /X et Z par Z/X pour obtenir F (X, Y, Z). Nous expliquons comment calculer F (X, XY, XZ) récursive-ment.

1. Supposons que l’on soit capable de calculer F (X, XY, zX) pour z ∈ C fixé. Alors on n’a besoin que de dZ+ 1 évaluations en zi pour interpoler, comme des polynômes, chaque coefficient en Z et trouver F (X, XY, XZ). Le nombre de coefficients est majoré par (n + 1)(dY + 1) de telle sorte que la complexité de l’interpolation pour cette étape est en

(n + 1)(dY + 1)O(MN(dZ) log(dZ));

2. Pour obtenir F (X, XY, zX) pour un z fixé, il suffit d’appliquer l’algorithme d’interpolation dans le cas d’une fraction rationnelle bivariée. On applique cette étape dZ+ 1 fois. La complexité est alors

(dZ+ 1)((dY + 1)O(MN(n) log(n)) + (n + 1)O(MN(dY) log(dY))). En procédant ainsi, le nombre d’évaluations est de n(dY + 1)(dZ+ 1) et la complexité totale de l’interpolation est en ˜O(dTdYdZN ). Dans le cas spécial où

l’on connaît un des cAi (Y, Z) ou cBi (Y, Z), la complexité est en ˜O(dXdYdZN ).

Une amélioration de cet algorithme est obtenue en remarquant qu’il y a la pos-sibilité de remplacer Y par Y /X dans la seconde étape pour trouver F (X, Y, zX) et calculer F (X, Y, XZ) dans la première. Ce faisant, le nombre de coefficients dans la première étape décroit et est majoré par (n0 + 1)(dY + 1) où n0 est degAX(F (X, Y, zX)) + degBX(F (X, Y, zX)) + 1 ≤ n, ce qui nous permet de réduire le nombre d’interpolations. La complexité est alors

(dY + 1)(dZ+ 1)O(MN(n) log(n)) + (n + 1)(dZ+ 1)O(MN(dY) log(dY))+ (n0+ 1)(dY + 1)O(MN(dZ) log(dZ)) ⊆ ˜O(dTdYdZN ).

On peut généraliser tout ceci récursivement pour traiter le cas des fractions rationnelles F ayant m variables X1, . . . , Xm. On trouve

O( m Y i=2 (dXi+ 1)MN(n) log(n) + m X j=2 m Y i=2 i6=j (dXi+ 1)n(j)MN(dXj) log(dXj))

⊆ ˜O(dT m

Y

i=2

dXiN ),

où n = dAT + dBT + 1 et n(j) est 1 plus le degré en X1 du numérateur plus le degré en X1 du dénominateur de F (X1, X2, . . . , Xj−1, XjX1, . . . , XmX1).

Notons que, cette fois-ci, toutes ces formules de complexité pour les fractions rationnelles sont asymétriques. Le choix de l’ordre des variables est alors impor-tant. Les formules suggèrent qu’il est préférable de prendre X1 comme la variable apparaissant avec le plus grand degré. Dans ce cas, on a que n ≤ 6dX1+ 1 et la complexité de l’interpolation est alors en ˜O(Qm

i=1dXiN ).

4.2 Polynômes modulaires : définition et calcul

Dans le document Calcul de polynômes modulaires en dimension 2 (Page 114-117)