• Aucun résultat trouvé

Transformation de Fourier discr` ete

Dans le document Cours de Calcul Formel (Page 33-41)

4.1 Racines principales (primitives) de l’unit´ e

Soient A un anneau non n´ecessairement int`egre, par exemple Z/NZ, n un entier >0, et ω une racine n-i`eme de l’unit´e dansA, c’est `a dire une racine du polynˆomeP =Xn−1 deA[X]. L’ensemble des racines deP est un groupe multiplicatif.

Les conditions suivantes sont ´equivalentes :

(i) Pour tout entier i, tel que 0< i < n, l’´el´ement 1−ωi n’est pas diviseur de z´ero dans A, c’est `a dire que : a∈A et (1−ωi)a= 0 implique a= 0.

(ii) Pour tout couple d’entiers ietj non congrus modulon, l’´el´ementωi−ωj n’est pas diviseur de z´ero dans A.

En effet ω est inversible et on aωi−ωj =ωi(1−ωj−i).

On dira qu’un tel ω est uneracine principale n-i`eme de l’unit´e.

En particulier, le polynˆome Xn1 poss`ede n racines distinctes, l’ensemble de ces racines poss`ede une structure de sous-groupe cyclique d’ordre n du groupe multiplicatif U(A), de g´en´erateur ω.

Exemples :

Dans C, le nombre ein est une racine principale n-i`eme de l’unit´e.

Proposition 4.1.1 Soit ω une racine principale n-i`eme de l’unit´e dans A.

1. On a dans A[X] la relation :

Xn1 = Qn−1

i=0(X−ωi).

33

34 CHAPITRE 4. TRANSFORMATION DE FOURIER DISCR `ETE 2. L’´el´ement n.1A n’est pas un diviseur de z´ero dans A et on a :

n.1A=Qn−1

i=1(1−ωi) D´emonstration :

i) SoitP =Xn1, on aP(1) = 0 doncP = (X1)Qo`uQest un polynˆome unitaire.

On aP(ω) = 0 donc (ω1)Q(ω) = 0, mais commeω−1 n’est pas diviseur de 0 dans A, on a :

Q(ω) = 0 et Qs’´ecrit Q= (X−ω)R, avec R polynˆome unitaire.

AinsiP s’´ecrit :

P = (X1)(X−ω)R et P2) = (ω1)(ω21)R(ω2) = 0, etc.

On trouve ainsi : P =n−1Q

i=0

(X−ωi).

ii) Le polynˆome P est divisible par X−1, et Qs’´ecrit : Q= XXn−1−1 =Xn−1+Xn−2+· · ·+X+ 1 =n−1Q

i=1

(X−ωi), en particulier :

Q(1) =n1A=n−1Q

i=1

(1−ωi)6= 0.

L’´evaluation d’un polynˆome de A[X] en ces n racines n-i`emes de l’unit´e se fait beaucoup plus vite qu’enn points quelconques deA. De plus l’op´eration inverse qui consiste `a retrouver un polynˆome dont on connait les valeurs en lesn racines n-i`emes de l’unit´e, probl`eme d’interpolation, se fait aussi rapi-dement que l’´evaluation en ces points.

Pour multiplier deux polynˆomes de degr´e convenable, il suffira alors d ´evaluer chacun d’eux en lesnracines de l’unit´e, de multiplier ensuite les valeurs obte-nues en ces points, puis de reconstruire le polynˆome produit par interpolation.

4.2 Evaluation d’un polynˆ ´ ome en les racines n-i` emes de l’unit´ e

Soit dans A, ω une racine n-i`eme de l’unit´e o`u n= 2k. Consid´erons un polynˆome P =Pn−1

i=0 aiXi.

On veut calculerP en les n ´el´ements 1, ω, ω2, . . . , ωn−1.

A priori chacune de ces op´eration n´ecessite` O(n) op´erations dansApar utili-sation de H¨orner. On peut donc esp´erer cesn´evaluations enO(n2) op´erations

4.2. ´EVALUATION D’UN POLYN ˆOME EN LES RACINESN-I `EMES DE L’UNIT ´E35

arithm´etiques. Cependant les ´evaluations peuvent s’effectuer simultan´ement en beaucoup moins de n2 op´erations.

Th´eor`eme 4.2.1 Soient A un anneau commutatif, ω une racine n-i`eme de l’unit´e avec n= 2k, et P un polynˆome de degr´e strictement plus petit que n.

Alors l’´evaluation dePi)pouri= 0,1, . . . , n−1n´ecessiteO(nlog(n)) op´erations dans A.

D´emonstration :NotonsOnle nombre maximum d’op´erations arithm´etiques n´ecessaires pour le calcul des Pi), i= 0,1, . . . , n1, lorsque deg(P)< n.

On peut ´ecrire P sous la forme :

P(X) = P0(X2) +XP1(X2),

o`uP0 etP1 sont des polynˆomes deA[X] de degr´es strictement inf´erieurs `a n2. On est donc amen´e `a calculer les deux polynˆomes P0 et P1 en les n2 points ω2i, i = 0,1, . . . ,n2 1. Or ω2 est une racine n2-i`eme de l’unit´e. On obtient ainsi la relation de r´ecurrence :

On = 2On2 + 2n .

Le terme 2n provenant des n multiplications et des n additions. De plus O1 = 0, O2 = 4, puis O2k = 2k+1k= 2nlog2(n).

Exemples : A = ZZ

5Z, ω = 2 est alors une racine quatri`eme principale de l’unit´e, les puissances successives ´etant 4, 3, 1.

Soit P := 1 + 3X+ 4X2+X3, la m´ethode de H¨orner va n´ecessiter 8 multi-plications `a cause du 1, et 12 additions, au lieu de 12 multimulti-plications et 12 additions.

Cependant on peut d´ecomposer P sous la forme :

P = (1 + 4X2) +X(3 +X2) =P0(X2) +XP1(X2), P0 = 1 + 4X, P1 = 3 +X.

Et on a en 1 et 4, les racines 2-i`eme de l’unit´e :

P0(1) = 0, P0(4) = 2, P1(1) = 4, P1(4) = 2.

Et alors :

P(1) =P0(1) +P1(1) = 4, P(2) =P0(4) + 2P1(4) = 1, P(3) =P0(4) + 3P1(4) = 3, P(4) =P0(1) + 4P1(1) = 1, en 8 multiplications et 8 addition au total.

On peut encore abaisser le nombre de multiplication en utilisant l’identit´e : ωn1 = 0 = (ωn2 1)(ωn2 + 1),

on voit que si ω est une racine principale n-i`eme de l’unit´e on a, d`es lors, n´ecessairement : ωn2 =−1, et donc ωi+n2 =−ωi.

36 CHAPITRE 4. TRANSFORMATION DE FOURIER DISCR `ETE

4.3 Le probl` eme r´ eciproque

Th´eor`eme 4.3.1 Soit ω une racine principale n-i`eme de l’unit´e dans un anneau A, telle que n.1A soit inversible dans A, d’inverse not´e n1.

Soit un n-uplet0, α1, . . . , αn−1) appartenant `a An et soit le polynˆome : P˜=n−1P

i=0

αiXi. Alors il existe dans A[X] un unique polynˆome P

P =n−1P

D´emonstration : On est amen´e `a chercher lesn cœfficients : ai i= 0,1, . . . , n1 et donc `a r´esoudre un syst`eme lin´eaire den ´equations `a n inconnues.

On consid´ere la matrice de ce syst`eme lin´eaire, elle est de Vandermonde et de la forme :

4.4. TRANSFORM ´EE DE FOURIER DISCR `ETE (DFT) 37 De l’identit´e :

1−Xn= (1−X)(1 +X+X2+· · ·+Xn−1), on peut d´eduire :

cij(1−ωi−j) = (1(i−j))n) = 0.

Cependantω ´etant une racine principalen-ieme de l’unit´e, 1−ωi−j ne divise pas 0 pour i6=j dans l’intervalle consid´er´e. On a donc :

Vω.Vω−1 =n.Id En particulier si n.1A est inversible dans A, alors :

Vω est inversible et (Vω)−1 = 1nVω−1. Ce qui est la traduction matricielle de l’´enonc´e.

Si l’anneau A est un corps, alors la condition n.1A inversible est satisfaite dans le cas o`u ω est une racine principale n-i`eme de l’unit´e.

Exemples : Dans l’exemple trait´e plus hautP = 1 + 3X+ 4X2+X3, on a trouv´eP(1) = 4, P(2) = 1, P(4) = 1, P(3) = 3,le polynˆome r´eciproque ˜P = 4+X+X2+3X3que l’on ´evalue en 1,3,4,2 qui sont les puissances successives de 2−1 mod (5). On obtient ˜P(1) = 4, P˜(3) = 2, P˜(4) = 1, P˜(2) = 4, et en multipliant par 4−1 = 4 mod (5), on retrouve bien les coefficients de P.

4.4 Transform´ ee de Fourier discr` ete (DFT)

Soit ω une racine primitive n-i`eme de l’unit´e dans un anneau A, n ´etant inversible dans A, c’est `a dire premier avec l’ordre de A, siA est fini.

On consid`ere l’homorphisme d’anneau

Fω : A[X] An

P 7→ (P(ω0), P(ω), P(ω2), . . . , P(ωn−1)), de noyau l’id´eal de A[X] engendr´e par Xn1.

Th´eor`eme 4.4.1 Soit A un anneau muni d’une racinen-i`eme principale de l’unit´e. Soient deux polynˆomes P et Q de A[X] tels que deg(P) +deg(Q) <

n. Alors en utilisant la DFT leur multiplication se r´ealise en O(nlog(n)) op´erations dans A.

38 CHAPITRE 4. TRANSFORMATION DE FOURIER DISCR `ETE D´emonstration : On calcule les DTF associ´ees `a ω de P et Q, soit O(nlog(n)) op´erations dansA. On obtient ainsi lesn-uplets :

(P(1), P(ω), . . . , P(ωn−1)), et (Q(1), Q(ω), . . . , Q(ωn−1)).

On calcule alors dans An les produits :

(P(1)Q(1), P(ω)Q(ω), . . . , P(ωn−1)Q(ωn−1))

enn op´erations arithm´etiques dans A, puis on utilise le th´eor`eme pr´ec´edent pour retrouver l’ant´ec´edent P Q de ce n-uplet, ce qui n´ecessite un calcul de DTF associ´e au point ω−1, soit encore O(nlog(n)) op´erations dansA.

SiK est un corps fini d’ordreqimpair, son groupe multiplicatifKest d’ordre q−1 = 2km ( m impair), et est cyclique. Connaissant un ´el´ement primitif de ce corps, on en d´eduira facilement un ´el´ement d’ordre 2k.

Cependant on aura besoin de trouver un corps de cardinal q = 2km+ 1 en partant dek fix´e `a priori. Un th´eor`eme dˆu `a Dirichlet nous permet d’affirmer l’existence d’une infinit´e de nombres premiers de la forme 2km+ 1.

Dans un corps K dire que ω est une racine 2k-i`eme principale de l’unit´e re-vient `a dire queω2k−1 est une racine carr´e de l’unit´e diff´erente de 1, et comme il n’y en a que deux, cela revient `a dire que : ω2k−1 =−1,

et qu’on a : −1A6= 1A, c’est `a dire : 21A 6= 0.

Ce crit`ere reste valable pour les racines principales :

Lemme 4.4.1 Soit A un anneau tel que 2.1A ne soit pas un diviseur de 0, k un entier >0 et ω un ´el´ement de A tel que ω2k−1 =−1A. Alors ω est une racine principale de l’unit´e.

D´emonstration :On aω2k = (−1)2 = 1. Soitiun entier tel que 0< i <2k. Montrons que la relation (ωi 1)a = 0 implique a = 0. Or il existe r et s aveci= 2rs, 0≤r < k ets= 1 (mod 2).

Comme on aa=ωia= (ωi)2a= (ωi)22a, on a aussi a = (ωi)2k−r−1a.

Mais comme i2k−r−1 = 2k−1s, on aboutit `a a=ω2k−1sa= (−1)sa=−a.

En d´efinitive 2a= 0, et, comme par hypoth`ese 2 ne divise pas 0 ; donca= 0.

Cela s’applique au cas o`u A est de la forme Z/NZ avec N entier impair de telle sorte que 2 soit inversible dans A, et ω classe d’un entier a tel que a2k−1 =−1 (mod N).

Exemples :

Soit N =a2k−1 + 1 alors a est racine 2k-i`eme principale dansZ/NZ.

En particulier on peut prendre le nombre de FermatN = 22m+k + 1 =Fm+k

etω = 22m+1.

4.5. MULTIPLICATION RAPIDE D’ENTIERS `A L’AIDE DE LA DFT39

4.5 Multiplication rapide d’entiers ` a l’aide de la DFT

Soient deux nombres entiers uet v ´ecrits en base b, `a multiplier et que nous utilisions un ordinateur dont le mot machine est M. La baseb est choisie de telle sorte que le produit de deux chiffres tienne encore dans un mot machine, soit b2 < M. Les nombres se pr´esentent alors sous la forme,U etV ´etant des

´el´ements de ZZ[X] :

u = u0+u1b+· · ·+un−1bn−1 = U(b), v = v0+v1b+· · ·+vn−1bn−1 = V(b),

o`u les ui et lesvi (i= 0,1, . . . , n1) sont dans [0, b1] et on prend n= 2k. On applique alors la DFT pour multiplier les deux polynˆomes U et V. Pour retrouver l’´ecriture de uv on fait une propagation des retenues, de l’ordre de O(n) op´erations dansZZ.

Pour r´ealiser le calcul de UV en appliquant la DFT, il nous faut choisir un entier ppremier tel queZZp poss`ede une racine primitive d’ordre 2nde l’unit´e qui satisfait : b2 < p < M.

Il est facile de v´erifier que les coefficients de UV sont positifs et major´es par n(b−1)2.

Si on veut que les calculs faits modulo p nous donnent la valeur exacte de UV dans ZZ[X], il faudra que n(b−1)2 = 2k(b1)2 < p.

Sous ces conditions nous pourrons r´ealiser le produit des deux polynˆomes en O(nlog(n)) op´erations dansZZp, et ainsi obteniruv avec la mˆeme complexit´e.

Les conditions d’application de la m´ethode sont assez restrictives. L’in´equation n(b−1)2 < p nous montre que pour un p fix´e plus on cherche `a travailler sur des nombres de grande taille, plus on est oblig´e de r´eduire la valeur de la base b.

Par exemple, si on veut travailler sur une machine 32 bits (M = 232), un des plus gros nombres premiers inf´erieur `a 232 est p= 2013265921 = 15.227+ 1, on peut alors prendre n = 226 et l’in´egalit´e 226(b 1)2 15.227 impose de prendre b= 6. Les nombres u que l’on pourra multiplier v´erifieront u <6226 ainsi u et v seront-ils des nombres qui poss´ederont de l’ordre de 52 millions de chiffres en base b= 10.

L’id´ee de Pollard pour repousser cette limite est de travailler non pas sur un seul corps, mais sur un produit de corps finis ZZp, et d’utiliser le th´eor`eme

40 CHAPITRE 4. TRANSFORMATION DE FOURIER DISCR `ETE chinois.

On choisit des entiers premiers distincts plus petit queM,p1, . . . , pl sur cha-cun desquels on puisse calculer une racine n-i`eme primitive de l’unit´e avec n = 2k et on r´ealise le calcul de UV modulo p1p2· · ·pl. Afin que le r´esultat soit exact dansZZ on doit choisir b tel que n(b−1)2 < p1· · ·pl. Soient Ui et Vi i= 1, . . . , l les projections de U etV dans ZZpi.

Supposons que l’on travaille avec une machine 32 bits ; on utilisera les trois moduli suivants qui tiennent sur un mot machine : p1 = 15.227+ 1, p2 = 7.226+ 1, p3 = 27.226+ 1. On peut alors sur les trois corps ainsi d´efinis pra-tiquer une DFT `an = 226 points qui permettra de multiplier des nombres `a 225 chiffres dans une baseb qui devra v´erifier 226(b1)2 < p1p2p3. On choisit alors b= 216; les chiffres seront m´emoris´es sur trois octets.

La borne des nombres que l’on pourra multiplier entre eux est alors 6226 = 2805306368 soit des nombres qui peuvent poss´eder environ 240 millions de chiffres en base 10.

Un algorithme dˆu `a Sch¨onhage prolonge cette m´ethode en utilisant non pas un choix fixe de moduli, mais en proc´edant `a un choix dynamique des pi en cours d’algorithme ce qui permet de mieux utiliser les ressources de la machine.

Bibliographie

[1] SAUX PICCART P.,Cours de Calcul Formel. Algorithmes fondamen-taux Ellipses , 1999.

[2] NAUDIN, P. QUITT´E,C. Algorithmique alg´ebrique.Masson, 1992.

[3] KNUTH D.E., The Art of computer Programming : seminumerical al-gorithms. Addison Wesley, 1992.

41

Dans le document Cours de Calcul Formel (Page 33-41)

Documents relatifs