• Aucun résultat trouvé

Conversion transpos´ ee et composition

3 Algorithme de Bostan-Salvy-Schost

3.1 Conversion transpos´ ee et composition

On observe queCtoMnappliqu´e au vecteur= (1, . . . , 𝑡𝑛1)donne les coefficients (en𝑥) du polyn^ome ∑𝑛𝑘=01𝑇𝑘(𝑥)𝑡𝑘. En effet, si on nomme 𝑇𝑖,𝑗 les coefficients tels que 𝑇𝑖(𝑥) =

𝑖𝑖=0𝑇𝑖,𝑗𝑥𝑗, l’applicationCtoMn()donne le vecteur (

𝑛1

𝑖=0

𝑇𝑖,0𝑡𝑖, . . . ,

𝑛1

𝑖=0

𝑇𝑖,𝑛1𝑡𝑖).

Il vient tout de suite que l’image du vecteur̃= (1, . . . , 𝑥𝑛1) par la conversion trans-pos´eeCtoMtnest le vecteur des coefficients en𝑡du m^eme polyn^ome. L’applicationCtoMtnℓ)

3. ALGORITHME DE BOSTAN-SALVY-SCHOST 37

donne D´efinissons la famille de fonctions𝐶𝑖 par :

𝑘0

𝑇𝑘(𝑥)𝑡𝑘= ∑

𝑖0

𝐶𝑖(𝑡)𝑥𝑖. (3.7)

On obtient cette famille (unique) en d´eveloppant par rapport `a𝑥 la s´erie g´en´eratrice des polyn^omes de Tchebychev. Ainsi, par unicit´e des 𝐶𝑖, la conversion transpos´ee CtoMtn est l’application lin´eaire :

(𝑓0, . . . , 𝑓𝑛1) ∈K𝑛𝑓0

2𝐶0(𝑡) +𝑓1𝐶1(𝑡)⋯ +𝑓𝑛1𝐶𝑛1(𝑡) mod𝑡𝑛.

L’id´ee de base de la m´ethode pr´esent´ee dans [BSS10] est que si la s´erie g´en´eratrice des 𝐶𝑖 est de la forme :

Cette ´egalit´e s’obtient en d´eveloppant par rapport `a 𝑥 les membres de l’´equation (3.8).

Partant de la s´erie g´en´eratrice des polyn^omes de Tchebychev (2.15) page21 et de la d´efinition des𝐶𝑖 (3.7), on observe que

𝑣(𝑡) = 1 2

1−𝑡2

1+𝑡2 et (𝑡) = 2𝑡 1+𝑡2,

sont bien d´efinis pour l’´equation (3.8). On obtient alors la factorisation

CtoMtn=𝑚𝑢𝑙(⋅, 𝑣) ○eval(⋅, ℎ), (3.9)

L’algorithme calculant la conversion se d´eduit en transposant chaque op´eration. On obtient alors l’algorithme3.5.

La suite de cette section montre comment effectuer chaque ´etape efficacement.

Entr´ee: 𝑝∶= (𝑝0, 𝑝1, . . . , 𝑝𝑛) tels que𝑝𝑖∈K

Sortie: 𝑏∶= (𝑏0, 𝑏1, . . . , 𝑏𝑛) tels que ∑𝑝𝑖𝑇𝑖(𝑥) = ∑𝑏𝑖𝑥𝑖

1: 𝑎∶=mul𝑡(𝑝, 𝑣)

2: renvoyer 𝑏∶=eval𝑡(𝑎, ℎ)

Algorithme 3.5: CtoMn

3.2 Algorithmes rapides pour la composition avec 12𝑡+𝑡2

Avant de donner les algorithmes transpos´es, il est n´ecessaire de pr´esenter les algorithmes directs.

Toujours dans l’article [BSS08], une m´ethode permettant de calculer rapidement cer-taines compositions de polyn^omes par des s´eries est expliqu´ee. La composition d’un polyn^ome quelconque par la s´erie = 2𝑡

1+𝑡2 en est un cas particulier.

Le principe fondamental de cette m´ethode est d’isoler la variable𝑥 dans l’´ecriture de la s´erie g´en´eratrice. Pour par exemple, l’isolation de la variable se ram`ene `a l’´ecriture suivante :

(𝑥) = 2𝑥 1+𝑥2 =

}︂

1− ( 2

1+𝑥2 −1)

2

. (3.10)

Pour l’algorithme 3.3, Pan avait d´ej`a utilis´e cette id´ee d’isolation de la variable quand il a ´ecrit la fraction 𝑎𝑥𝑐𝑥++𝑑𝑏 comme 𝑎𝑐(1+ 𝑏𝑐𝑑𝑎

𝑑𝑎(𝑐𝑑𝑥+1)). En fait Bostan et coauteurs proposent une g´en´eralisation de l’algorithme de Pan qui ´etait lui m^eme une g´en´eralisation de l’algorithme de d´ecalage.

Par l’´equation (3.10), le calcul de l’applicationeval(⋅, ℎ)se ram`ene aux calculs d’applica-tionssimplesde compositions par(𝑎𝑥+𝑏), par 𝑥1, par𝑥2 ou encore par⌋︂

𝑥. L’algorithme3.6 effectue ce calcul en n’utilisant que ces compositions.

Proposition 3.6. Soit 𝑝 un polyn^ome de degr´e 𝑛−1, l’algorithme 3.6permet de calculer 𝑝( 2𝑥

1+𝑥2)en 4M(𝑛) +4M(𝑛

2) + 𝒪(𝑛) op´erations arithm´etiques.

Remarque 3.7. La fonction M(𝑛) est au mieux lin´eaire : 2M(𝑛

2) ⩽M(𝑛). La complexit´e est donc major´ee par 6M(𝑛) + 𝒪(𝑛) op´erations arithm´etiques.

Pour d´emontrer cette proposition, on a besoin du lemme suivant, qui affirme que la multiplication d’une s´erie par une fraction rationnelle peut s’effectuer en temps lin´eaire.

M^eme si ce r´esultat para^ıt simple, je ne l’ai pas trouv´e dans la litt´erature.

Lemme 3.8. Si 𝑓 ∈K(𝑥) a un num´erateur et un d´enominateur de degr´e𝒪(1) et n’a pas de p^ole en 0, alors pour toute s´erie formelle 𝑔 `a coefficients dans K, la s´erie tronqu´ee𝑓 𝑔 mod𝑥𝑛 peut se calculer en𝒪(𝑛) op´erations arithm´etiques.

D´emonstration. On d´efinit d’abord les polyn^omes 𝑎et𝑏de degr´e constant tels que 𝑓 = 𝑎𝑏. En utilisant un algorithme na¨ıf, c’est-`a-dire en multipliant terme `a terme, le produit tronqu´e𝑔(𝑥)𝑎(𝑥) mod𝑥𝑛 se r´ealise en𝒪(𝑛)op´erations arithm´etiques, cette complexit´e s’explique par le degr´e constant de𝑎.

3. ALGORITHME DE BOSTAN-SALVY-SCHOST 39

Entr´ee: 𝑝(𝑥) ∈K(︀𝑥⌋︀ avec deg(𝑝, 𝑥) <𝑛, Sortie: 𝑝( 2𝑥

1+𝑥2) mod 𝑥𝑛

1: Calculer 𝑝1,0 et𝑝1,1 tel que𝑝(𝑥) =𝑝1,0(𝑥2) +𝑥𝑝1,1(𝑥2)

2: pour𝑖∈ {0,1} faire

3: 𝑑𝑖∶=deg(𝑝1,𝑖(𝑥), 𝑥)

4: 𝑝2,𝑖(𝑥) ∶=𝑝1,𝑖(1−𝑥)

5: 𝑝3,𝑖(𝑥) ∶=𝑝2,𝑖(𝑥2)

6: 𝑝4,𝑖(𝑥) ∶=𝑝3,𝑖(−2𝑥+1)

7: 𝑝5,𝑖(𝑥) ∶=p4,𝑖(1

𝑥)𝑥2𝑑𝑖

8: 𝑝6,𝑖(𝑥) ∶=𝑝5,𝑖(1+𝑥)

9: 𝑝7,𝑖(𝑥) ∶= (1+𝑥)2𝑑𝑖𝑝6,𝑖(𝑥) mod𝑥𝑑𝑖

10: 𝑝8,𝑖(𝑥) ∶=𝑝7,𝑖(𝑥2)

11: fin pour

12: renvoyer 𝑝8,0(𝑥) + 2𝑥

1+𝑥2𝑝8,1(𝑥) mod𝑥𝑛

Algorithme 3.6: eval(⋅,1+2𝑡𝑡2)

Comme=𝑓 𝑔, alors𝑏ℎ=𝑎𝑔. L’extraction du coefficient𝑥𝑖 donne donc une r´ecurrence lin´eaire inhomog`ene d’ordre le degr´e de 𝑏. En effet, en notant𝑖 et𝑏𝑖 les coefficients de et𝑏. Le produit ℎ𝑏 donne

ℎ𝑏=

𝑛1

𝑖 𝑖

𝑟=𝑖deg(𝑏)

𝑟𝑏𝑖𝑟𝑥𝑖.

`A partir de cette r´ecurrence, le calcul des𝑖s’effectue en𝒪(𝑛)op´erations arithm´etiques.

D´emonstration de la proposition 3.6. La correction de l’algorithme se d´eduit de l’´ecriture dans l’´equation (3.10) de la fonction ℎ. En effet, les compositions successives de cet algorithme assurent que le polyn^ome retourn´e est bien

𝑝

⎝ }︂

1− ( 2

1+𝑥2 −1)

2

⎠ mod𝑥𝑛=𝑝( 2𝑥

1+𝑥2) mod 𝑥𝑛.

Il reste `a donner le co^ut de chaque op´eration. Beaucoup de ces op´erations se calculent en temps lin´eaire. C’est le cas des ´etapes 1, 5, 7 et 10 qui ne sont que des r´e´ecritures directes des coefficients. La multiplication effectu´ee `a l’´etape12s’effectue aussi en un temps lin´eaire. Cette propri´et´e est donn´ee par le lemme 3.8. Les op´erations non ´el´ementaires sont les d´ecalages effectu´es aux lignes 4,6 et 8et la multiplication `a la ligne 4. L’algorithme3.2 permet de calculer le polyn^ome d´ecal´e d’un polyn^ome de degr´e plus petit que 𝑛 enM(𝑛) op´erations arithm´etiques. `A la ligne4, ces d´ecalages sont effectu´es sur des polyn^omes de degr´e au plus 𝑛2 et les autres ´etapes d´ecalent des polyn^omes de degr´e au plus 𝑛, on obtient donc une complexit´e de 4M(𝑛) +2M(𝑛

2)op´erations arithm´etiques pour effectuer l’ensemble de ces op´erations.

Entr´ee: 𝑝(𝑥) ∈K(︀𝑥⌋︀de degr´e au plus 𝑛−1 Sortie: eval𝑡(𝑝, ℎ)

1: Calculer𝑝7,0 et𝑝7,1 tels que𝑝(𝑥) =𝑝7,0(𝑥2) +𝑥𝑝7,1(𝑥2)

2: 𝑑0∶=degr´ee(𝑝7,0, 𝑥) et𝑑1 ∶=degr´ee(𝑝7,1, 𝑥)

3: 𝑝7,1(𝑥) ∶=mul𝑡(𝑝7,1,(1+2𝑥), 𝑑1)

4: pour𝑖∈ {0,1} faire

5: 𝑝6,𝑖(𝑥) ∶=mul𝑡(𝑝7,𝑖,(1+𝑥)2𝑑𝑖)

6: 𝑝5,𝑖(𝑥) ∶=shift𝑡(𝑝6,𝑖(𝑥) + ∑𝑛𝑖=𝑑1

𝑖+10𝑥𝑖)

7: 𝑝4,𝑖(𝑥) ∶=𝑥𝑛1𝑝5,𝑖(1

𝑥)

8: 𝑝3,𝑖(𝑥) ∶=shift𝑡(𝑝4,𝑖(−2𝑥))

9: 𝑝2,𝑖(𝑥) ∶=12(𝑝3,𝑖(𝑥) +𝑝3,𝑖(−𝑥))

10: 𝑝1,𝑖(𝑥2) ∶=shift𝑡(𝑝2,𝑖(−𝑥))

11: fin pour

12: renvoyer 𝑝1,0(𝑥2) +𝑥𝑝1,1(𝑥2)

Algorithme 3.7: eval𝑡(⋅,1+2𝑡𝑡2)

Il ne reste plus qu’`a expliciter le co^ut des op´erations r´ealis´ees `a la ligne9. Les coefficients du d´eveloppement en s´erie de la fonction (1+𝑥2)𝑑 v´erifient la r´ecurrence :

(2𝑑+𝑛)𝑢𝑛+ (𝑛+2)𝑢𝑛+2=0,

avec les conditions initiales 𝑢0=1 et𝑢1=0. Calculer les 𝑛⇑2 premiers coefficients s’effectue en𝒪(𝑛) op´erations arithm´etiques en d´eroulant cette r´ecurrence. Le co^ut de l’´etape9 n’est donc que le co^ut de la multiplication entre deux polyn^omes de degr´e aux plus 𝑛2. On r´ealise deux fois cette ´etape, la complexit´e est donc de 2M(𝑛

2)op´erations.

On retrouve alors la complexit´e de 4M(𝑛) +4M(𝑛2) op´erations arithm´etiques annonc´ee.