Transformées de Fourier discrètes et rapides (introduction).

Transcription

Transformées de Fourier discrètes et rapides (introduction).
1
Notes du cours d'Équations aux Dérivées Partielles de l'ISIMA, deuxième année
http://www.isima.fr/∼leborgne
Courte introduction :
série de Fourier, Transformée de Fourier Discrète (DFT), Transformée
de Fourier Rapide (FFT)
Gilles Leborgne
4 août 2009
Table des matières
I Pour les fonctions
1
1 Série de Fourier
1
2 Coecient d'une série de Fourier
2
3 Série de Fourier discrète
3
4 Décalage des notations
4
5 Dénition de la transformée de Fourier discrète (TFD) et son inverse
5
6 Transformée de Fourier rapide (TFR) = Fast Fourier Transform (FFT)
6
7 Convolution périodique et calcul par FFT
7
8 Convolution discrète et calcul par FFT
8
9 Remarques : équation de la chaleur
9
Première partie
Pour les fonctions
1 Série de Fourier
On veut décrire une fonction f : [0, T ] → R à l'aide de ses composantes sur la base de Fourier.
Posant ω = 2π
T = la pulsation, la base de Fourier est la base constituée des fonctions 1, cos ωt, sin ωt,
cos 2ωt, sin 2ωt,..., cos nωt, sin nωt,... On montre qu'une fonction f : [0, T ] → R susamment
régulière (par exemple L1 ou L2 ou C 1 ...) est de la forme :
f (t) = a0 +
∞
X
ak cos(kωt) +
k=1
∞
X
les ak et bk étant réels.
ω
On appelle ν = 2π
= T1 la fréquence fondamentale, et les kν =
niques (pour k ≥ 2).
Comme (notations génériques) :
cos θ =
eiθ + e−iθ
,
2
(1.1)
bk sin(kωt),
k=1
sin θ =
k
T
=
k
T
les fréquences harmo-
eiθ − e−iθ
eiθ − e−iθ
= −i
,
2i
2
parties réelle et imaginaire de eiθ , on a donc également, avec les ck ∈ C :
f (t) =
∞
X
k=−∞
1
ck eikωt ,
(1.2)
2
où, pour k > 0 (ici on est dans le cas f à valeurs réelles) :
ak − ibk
ak + ibk
,
c−k =
(= ck ),
c0 = a0 .
2
2
Et on a également, pour k > 0 (toujours dans le cas f à valeurs réelles) :
ck =
ak = ck + c−k ,
(1.3)
(1.4)
bk = i(ck − c−k ).
L'intérêt de (1.2) par rapport à (1.1) est que les calculs sont beaucoup plus simples à écrire,
et de plus permet de considérer toutes les fonctions [0, T ] → C (et non uniquement les fonctions
[0, T ] → R).
Exercice 1.1 Soit f une fonction sous la forme (1.2). Montrer que si f est à valeurs réelles, alors
c−k = ck .
Réponse. Soit X
ck = αk + iβk . Alors (1.2) donne :X
f (t) = c0 +
(αk cos(kωt) − βk sin(kωt)) + i
k6=0
La partie imaginaire est nulle, donc β0 = 0 et
X
(αk sin(kωt) + βk cos(kωt)).
k6=0
(αk − α−k ) sin(kωt) + (βk + β−k ) cos(kωt) = 0 pour tout t.
k>0
D'où αk − α−k = 0 et
k.
Xβk + β−k = 0, i.e. c−k = αk − iβk = cX
Et f (t) = α0 +
(αk cos(kωt) − βk sin(kωt)) = α0 +
((αk +α−k ) cos(kωt) − (βk −β−k ) sin(kωt)).
D'où, posant αk =
k6=0
ak
et
2
k>0
βk = − b2k , cf. (1.3), on retrouve (1.1).
Remarque 1.2 Quitte à prolonger f par périodicité (période T ), on peut considérer f comme
étant dénie sur tout R.
R
Remarque 1.3 On rappelle que pour f, g ∈ L2 ([0, T ]; R) on a (f, g)L2 =déf 0T f (t)g(t) dt, et que
la base
(1, cos ωt,
sin ωt, ..., cos√nωt, sin nωt,
...) est orthogonale dans L2 ([0, T ]; R), et que la base
√
√
√
2
2
2
2
1
( √T , √T cos ωt, √T sin ωt, ..., √T cos nωt, √T sin nωt, ...) est orthonormale dans L2 ([0, T ]; R).
Vérications simples : par exemple :
RT
RT
cos(nωt) sin(mωt) dt = 21 0 sin((n+m)ωt) − sin((n−m)ωt) dt = 21 [...]T0 ,
0
où ... est en cos(kωt), donc périodique de période T , donc [...]T0 = 0. Et pour n 6= 0 :
RT
RT
|| cos(nω·)||2L2 = 0 cos2 (nωt) dt = 21 0 cos(2nωt) + 1 dt = T2 = || sin(nω·)||2L2 .
2 Coecient d'une série de Fourier
On se place pour simplier dans le cadre f ∈ L2 ([0, T ]; C) l'espace des fonctions de variables
RT
réelles à valeurs complexes d'énergie nie : 0 |f (t)|2 dt < ∞. On rappelle que le produit scalaire
dans L2 ([0, T ]; C) est donné par :
Z T
Z T
(f, g)L2 =
f (t)g(t) dt =
f (t)ḡ(t) dt,
0
0
où z ∈ C est le complexe conjugué de z ∈ C, où ḡ est la fonction t → ḡ(t) =déf g(t). La norme
RT
1
associée est dénie par son carré ||f ||2L2 = (f, f )L2 = 0 |f (t)|2 dt où |z| = (x2 +y 2 ) 2 est le module
de z = x+iy quand x, y ∈ R.
t
On remarque que la base (e2ikπ T )k∈Z de L2 ([0, T ]; C) est orthogonale mais non normée :
(
Z T
T si k = `,
2ikπ Tt
2i`π Tt
2ikπ Tt −2i`π Tt
(e
,e
)L2 =
e
e
dt = T δk` =
0 si k 6= `
0
t
(la base orthonormée associée étant donc ( √1T e2ikπ T )k∈Z ).
t
Écrivons f sur la base (e2ikπ T )k∈Z :
f (t) =
∞
X
t
ck e2ikπ T ,
(2.1)
k=−∞
ses composantes ck étant donc données par :
t
1
1
ck = (f, e2ikπ T )L2 =
T
T
Z
T
t
f (t)e−2ikπ T dt,
0
t
i.e. ck est la valeur moyenne de f pour la mesure e−2ikπ T dt.
2
(2.2)
3
3 Série de Fourier discrète
On se donne une fonction f : [0, T ] → R telle que f (0) = f (T ).
Remarque 3.1 Supposer f (0) = f (T ) simplie la présentation. Si cette condition n'est pas satisfaite, cela n'a pas d'importance pour le calcul des coecients de Fourier puisqu'ils sont obtenus
en intégrant, cf. (2.2), et que l'intégrale ne dépend pas des valeurs de f au bord. On peut donc
modier la valeur de f (T ) pour lui donner la valeur = f (0).
SN
On partitionne l'intervalle [0, T ] en N intervalles égaux : [0, T ] = n=1 [tn−1 , tn ] où on pose
T
h= N
, puis tn = nh pour tout n = 0, ..., N . Donc tn − tn−1 = h pour tout n.
Hypothèse : on connaît f en les tn , i.e. on connaît les f (tn ) =noté fn pour n = 0, ..., N , avec donc
fN = f0 .
But : on souhaite avoir une estimation de la série de Fourier de f . Au vu des fréquences harmoniques, il est naturel d'essayer de connaître N premiers coecients de Fourier : par exemple :
(
si N est pair,
c− N , c− N +1 , ..., c N −1 ,
2
2
2
si N est impair.
c− N −1 , c− N −1 +1 , ..., c N −1 ,
2
2
2
Dans la suite, pour simplier on prendra N pair (pour la transformée de Fourier rapide on aura
N = une puissance de 2).
P N2 −1
2ikπ Tt
(en d'autres termes que le reste de la série est
Et on espère alors que f (t) ' k=−
N ck e
2
petit.)
Démarche : si on connaissait f , ses coecients seraient donnés par (2.2), et donc par :
N Z
t
1 X tn
ck =
f (t)e−ki2π T dt.
T n=1 tn−1
Connaissant les fn = f (tn ), l'idée est d'estimer les
trapèzes :
Z
tn
f (t)e
−ki2π Tt
dt '
f (tn−1 )e−2ikπ
R tn
(3.1)
t
tn−1
tn−1
T
f (t)e−ki2π T dt à l'aide de la formule des
tn
+ f (tn )e−2ikπ T
2
tn−1
=
(tn − tn−1 )
h
h −2ikπ (n−1)h
T
(fn−1 + fn e−2ikπ T ),
e
2
et donc, les ck donnés par (3.1) sont approchés par les c̃k donnés par :
c̃k =
Soit, avec
h
h
h
2h
h
h
(f0 + f1 e−2ikπ T + e−2ikπ T (f1 + f2 e−2ikπ T ) + e−2ikπ T (f2 + f3 e−2ikπ T ) + ...).
2T
h
T
=
1
N
et e−2ikπ
c̃k =
Nh
T
= e−2ikπ = 1 :
N −1
1
2
1 f0
fN
( + f1 e−2ikπ N + f2 e−2ikπ N + ... + fN −1 e−2ikπ N +
),
N 2
2
et comme f0 = fN , on a, pour k ∈ [− N2 , N2 − 1] :
c̃k =
où on a noté :
N −1
1 X
−kn
fn ωN
N n=0
(=
h
N −1
n
1 X
fn e−2ikπ N ),
N n=0
ωN = e2iπ T = e
i.e. ωN qui est la première N -ième racine de l'unité.
3
2iπ
N
,
(3.2)
(3.3)
4
Comme ω N = e−
2iπ
N
on a donc :
c̃k =
N −1
1 X
fk ω N kn ,
N n=0
(3.4)
et on espère qu'une approximation de f sera donnée par la fonction f˜ dénie par :
f˜(t) =
N
2
−1
X
t
c̃k e2ikπ T
(3.5)
k=− N
2
Exemple 3.2 Pour N = 4 on a ω4 = i et :

1


c̃−2 = (f0 − f1 + f2 − f3 ),


4



1


 c̃−1 = (f0 + if1 − f2 − if3 ),
4
1



c̃0 = (f0 + f1 + f2 + f3 ),


4




 c̃1 = 1 (f0 − if1 − f2 + if3 ).
4
Dans la suite, on réordonnera en mettant les indices négatifs à la n :

1
déf


d0 = c̃0 = (f0 + f1 + f2 + f3 ),


4



1

déf

 d1 = c̃1 = (f0 − if1 − f2 + if3 ),
4
1

déf


d2 = c̃−2 = (f0 − f1 + f2 − f3 ),


4



1

 d3 déf
= c̃−1 = (f0 + if1 − f2 − if3 ),
4
  
  




f0
1 1
1
1
f0
1 1
1
1
c̃0
−i −1 i   f1 
ω42 ω43   f1 
 c̃1 
1  1 ω4
1 1
i.e. 
.  , où quand M =
 .   = 4
 = 4
f2
1 ω42 ω44 ω46
1 −1 1 −1
f2
c̃−2
f3
1 ω43 ω46 ω49
1 i −1 −i
f3
c̃−1
[mij ] on note M = [mij ] la matrice conjuguée.
4 Décalage des notations
Sous forme matricielle, on réécrit (3.4) comme, si N est pair (exercice dans le cas N impair) :


c̃0
 .. 


 . 
f0


 c̃ N −1 
. 
 2  = 1 ΩN 
(4.1)
 ..  ,
 c̃− N  N
2 

fN −1
 . 
 .. 
c̃−1
où, avec ωN = e
2iπ
N
ΩN
, et ΩN est la matrice conjuguée de :

1
1
1
2
ωN
ωN
1

2
4
1
ωN
ωN

kn
= [ωN
] k=0,...,N −1 =  1
3
6
ωN
ωN
n=0,...,N −1

.
 ..
1
N −1
ωN
matrice symétrique.
4
2(N −1)
ωN
...
...
...
...
...
1
N −1
ωN
2(N −1)
ωN
3(N −1)
ωN
(N −1)(N −1)
ωN





,



(4.2)
5
Pour des raisons pratiques, on pose, si N est pair (décalage des notations) :




d0
c̃0
 .. 
 .. 
 . 
 . 




 d N −1  déf  c̃ N −1 
 2  =  2 ,
 dN 
 c̃− N 
2 
 2 

 . 
 . 
 .. 
 .. 
c̃−1
dN −1
i.e., si N est pair :


 dk = c̃k
si 0 ≤ k ≤

 d = c̃
k
k−N
N
− 1,
2
N
≤ k ≤ N − 1.
2
si
Cela permet de réécrire (4.1) comme :




f0
d0
. 
 ...  = 1 ΩN 
 ..  ,
N
dN −1
fN −1
(4.3)
(4.4)
qui est la forme utilisée pour la FFT (Fast Fourier Transform) = TFR (Transformée de Fourier
Rapide).
5 Dénition de la transformée de Fourier discrète (TFD) et
son inverse
Dénition 5.1 On se donne N valeurs (fk )k=0,...,N −1 , et les N valeurs associées (dk )k=0,...,N −1
données par (4.4). L'application :

RN → RN










f0
f0
d0
FN :  . 
1
 . 
.

 ..  →  ..  = ΩN .  .. 


N

dN −1
fN −1
fN −1
est appelée la transformée de Fourier discrète d'ordre N .
Proposition 5.2 Avec ωN = e N racine N -ième de l'unité, on a :
2iπ
N
−1
X
k
ωN
= 0.
k=0
n
De même, pour tout entier relatif n 6= 0 modulo N , sachant que ωN
est alors une racine de l'unité
diérente de 1 :
N
−1
X
kn
ωN
= 0.
k=0
Preuve. Faire un dessin. Calcul : on note r une racine n-ième de l'unité, i.e. r ∈ C tel que rN = 1.
Soit encore rN − 1 = 0, soit encore (r − 1)(1 + r + r2 + ... + rN −1 ) = 0. Donc si r 6= 1 on obtient
n
1 + r + r2 + ... + rN −1 = 0 : polynôme de degré N −1 qui a donc N −1 racines. Et les ωN
pour
n = 1, ..., N −1 (modulo N )conviennent (racines n-ième de l'unité diérentes de 1).
nk
Corollaire 5.3 La matrice ΩN = [ωN
] = [e
2inkπ
N
] est inversible d'inverse :
1 −2inkπ
1
ΩN = [e N ],
(5.1)
N
N
et donc, si on connaît les dk , on récupère les fk à l'aide de (transformée de Fourier discrète inverse) :




f0
d0
 .. 
.
(5.2)
 .  = ΩN .  ..  .
dN −1
fN −1
Ω−1
N =
5
6
Preuve. Il sut de vérier que M = [e
−2iπ
N kn
].[e
2iπ 0 0
N k n
de RN . Or le terme Mkn est donné par :
Mkn =
N
−1
X
e
−2iπ
N km
e
2iπ
N mn
=
m=0
] = N IN , où IN est la matrice identité
N
−1
X
e
2iπ
N m(n−k)
.
m=0
Si k = n c'est la somme de 1 eectuée N fois, et si k 6= n, c'est la somme des racines de l'unité
diérentes de 1, cf. proposition précédente 5.2.
6 Transformée de Fourier rapide (TFR) = Fast Fourier
Transform (FFT)
(Algorithme de Cooley et Tuckey, 1965.) C'est une méthode très rapide pour calculer les N
coecients dk de la TFD (à partir des N valeurs fk ) pour k = 0, ..., N − 1, quand N est une
puissance de 2. Et on récupère ensuite les c̃k avec (4.3).
Ecrivons la k -ième ligne de (4.4), pour k = 0, ..., N − 1 :
dk =
1
−(N −2)k
−(N −1)k
−k
−2k
−3k
(f0 + ωN
f1 + ωN
f2 + ωN
f3 + ... + ωN
fN −2 + ωN
fN −1 ).
N
On pose N = 2m (on traite le cas N pair). On a e−2
2iπ
N
= e−
2iπ
m
−2
−1
, i.e. ωN
= ωm
. On a donc :
1
−(2m−2)k
−(2m−2)k
−2k
−1
−2k
([f0 + ωN
f2 + ... + ωN
f2m−2 ] + ωN
[f1 + ωN
f3 + ... + ωN
f2m−1 ])
N
1 1
−1 1
−k
−(m−1)k
−k
−(m−1)k
f2 + ... + ωm
f2(m−1) ] + ωN
[f1 + ωm
f3 + ... + ωm
f2(m−1)+1 ]).
= ( [f0 + ωm
2 m
m
On s'est ainsi ramené à, pour k = 0, ..., 2m − 1 :
1
−1
dk = (Pm,k + ωN
Im,k ),
2
où, pour k = 0, ..., m − 1 :
 P





 I

f0
f1
m,0
m,0
 Pm,1 
 f 
 f3 
 Im,1 

 = 1 Ωm .  .2  et 
 = 1 Ωm .  .  .
..
..

 m
 . 
 . 

 m
.
.
.
.
f2m−2
f2m−1
Pm,m−1
Im,m−1
dk =
Ici les Pm,k et les Im,k sont des transformées de Fourier discrètes des gm,k = f2k et des hm,k = f2k+1 ,
pour k = 0, ..., m−1.
−(k)
−(k+m)
= ωm :
De plus, pour k = 0, ..., m − 1, sachant ωm
Pm,k+m = Pm,k
−(k+m)
Puis sachant ω2m
et
Im,k+m = Im,k .
−k
= −ω2m
(faire un dessin), pour k = 0, ..., m − 1 :
1
−1
(Pm,k − ωN
Im,k ).
2
On a ainsi ramené le problème de taille N =2m à 2 problèmes de taille m.
Si m est également pair, chacun de ces problèmes de taille m est ramené à deux problèmes de
tailles m
2.
C'est le principe de la méthode FFT quand on choisit N = 2n avec n ∈ N : on se ramène
à 2 problèmes de tailles 2n−1 , puis 22 problèmes de tailles 2n−2 , puis..., puis 2n−1 problèmes de
taille 2, i.e. à 2n−1 = N2 problèmes de type (cas N = 2) :
dk+m =
1
1
(f0 + f1 ),
d1 = (f0 − f1 ).
2
2
Remarque 6.1 L'intérêt de cette méthode FFT est son coût : pour N une puissance de 2, il est
de l'ordre de 32 N log2 N , où log2 est le logarithme en base 2. (Ou encore, si on écrit N = 2n , le
coût est de l'ordre de 23 2n log2 2n = 32 n2n .)
Rappel pour x > 0 : logartithme népérien : lnx = loge x est l'inverse de ex ; et logarithme en
base 2 : log2 x est l'inverse de 2x (et donc log2 (2x ) = x et log2 2 = 1).
Ainsi avec N = 1024 = 210 points de discrétisation, il faut ' 32 N log2 N = 15000 opérations
élémentaires (ici ' 15000 mutliplications ou additions).
d0 =
6
7
7 Convolution périodique et calcul par FFT
(La convolution périodique est diérente de la convolution discrète, cf. suite.)
Dénition 7.1 Une suite (ak )k∈Z est dite périodique de période N ssi ak+N = ak pour tout k ∈ Z.
Dénition 7.2 On se donne deux suites périodiques (ak ) et (bk ) de même période N . La convolution périodique de ces deux suites est l'opération qui leur associe la suite périodique (ck )k∈Z de
période N dénie par, pour k = 0, ..., N − 1 :
ck =
N
−1
X
am bk−m
(=
m=0
et on note :
N
−1
X
ak−m bm ),
m=0
(ck ) = (ak ) ∗ (bk ).
On a donc :

c0 = a0 b0 + a1 b−1 + ... + aN −1 b−(N −1) ,




 c1 = a0 b1 + a1 b0 + ... + aN −1 b−(N −2) ,
..


.



cN −1 = a0 bN −1 + a1 bN −2 + ... + aN −1 b0 ,
ou encore :

c0 = a0 b0 + a1 bN −1 + a2 bN −2 + ... + aN −1 b1 ,




 c1 = a0 b1 + a1 b0 + a2 bN −1 + ... + aN −1 b2 ,
..


.



cN −1 = a0 bN −1 + a1 bN −2 + ... + aN −1 b0 .
Dénition 7.3 On appelle matrice circulante une matrice de type :



B=


b0
b1
b2
..
.
bN −1
bN −1
b0
b1
bN −2
bN −1
b0
···
···
···
..
.
bN −2
bN −3
···

b1
b2 

b3  .


b0
La convolution périodique se présente alors sous forme matricielle :



~c = B.~a

c0
a0
 c1 
 a1 



où on a posé ~c = 
 ...  et ~a =  ... .
cN −1
aN −1
Proposition 7.4 Une matrice circulante B est diagonalisable de matrice de passage ΩN . I.e. :
Λ = Ω−1
N .B.ΩN ,
est la matrice diagonale Λ = diag(λ0 , ..., λN −1 ) de terme diagonal les valeurs propres
(N −1)k
k
2k
λk = b0 + bN −1 ωN
+ bN −2 ωN
+ · · · + b1 ωN
.
(Et les vecteurs propres de B associés sont stockés dans les colonnes de ΩN puisque B.ΩN = ΩN .A.)
Preuve. Il s'agit de vérier que B.ΩN = ΩN .Λ.
2iπ
kn
On a ΩN = [ωN
]0≤k,n≤N −1 (matrice symétrique) où ωN = e N , cf. (4.2). Il est immédiat que
 
1
Pn−1
.
le vecteur  ..  (première colonne de ΩN est vecteur propre de valeur propre k=0 bk (somme
1
des termes d'une ligne).
7
8
Prenons le vecteur colonne k de ΩN . On obtient :




1
(N −1)k
k
2k
b0 + bN −1 ωN
+ bN −2 ωN
+ · · · + b1 ωN
k
 ωN 
(N −1)k


k
2k


b1 + b0 ωN
+ bN −1 ωN
+ · · · + b2 ωN
2k


ω


N
B. 
= 


..


.


..
.
(N
−1)k
k
2k
(N −1)k
bN −1 + bN −2 ωN
+ bN −3 ωN
+ · · · + bN −1 ωN
ωN
³
´


(N −1)k
k
2k
1 b0 + bN −1 ωN
+ bN −2 ωN
+ · · · + b1 ωN
³
´


(N −1)k
(N −2)k


k
k
ωN
b1 ωN
+ b0 + bN −1 ωN
+ · · · + b2 ωN


= 



..

.
´
³
(N −1)k
(N −1)k
3k
2k
k
+ · · · + bN −1 ωN
+ bN −3 ωN
+ bN −2 ωN
ωN
bN −1 ωN
2k
k
+ bN −2 ωN
+
et le vecteur colonne k est vecteur propre associé à la valeur propre λk = b0 + bN −1 ωN
(N −1)k
· · · + b1 ωN
. On a donc bien ΩN .Λ = B.ΩN , égalité qui lue colonne par colonne donne bien
λk~vk = B.~vk om ~vk est la k -ième colonne de ΩN , k = 0, ..., N −1.
Corollaire 7.5 (Calcul de la convolution périodique à l'aide de la FFT.)
On veut calculer (ck ) = (ak ) ∗ (bk ) = B.~a, sachant B.~a = ΩN .Λ.Ω−1
a = N1 ΩN .Λ.ΩN .~a.
N .~
On calcule ΩN .~a en utilisant la FFT.
On multiplie par Λ matrice diagonale.
On multiplie par ΩN en utilisant la FFT.
On divise par N .
Remarque 7.6 Quand N ci-dessus n'est pas une puissance de 2, on complète les suites (ak )k=0,...,N −1
par des zéros : aN +j = 0 pour j = 0, ..., 2n − N où n est le plus petit entier t.q. 2n ≥ N . De même
pour (bk ). Et les valeurs ck pour k = 0, ..., N −1 restent inchangées.
PN −1
P −1
k
k
Exemple 7.7 On multiplie les polynômes a(x) = N
k=0 bk x . Ces polyk=0 ak x et b(x) =
nômes sont représentés par leurs coordonnées (ak )k=0,...,N −1 et (bk )k=0,...,N −1 sur la base usuelle
(1, x, x2 , ...) de l'ensemble des polynômes. On peut prolonger ces suites par 0 pour k < 0 et k ≥ N .
Le produit c = ab est un polynôme de degre 2N − 2 donné par :
c(x) =
2N
−2 N
−1
X
X
(
k=0
k
ak−m bm x ) =
m=0
2N
−2
X
k
ck x ,
où
ck =
N
−1
X
ak−m bm ,
m=0
k=0
représenté par la suite (ck )k=0,...,N −2 , i.e. :
c0 = a0 b0 ,
c1 = a1 b0 + a0 b1 ,
c2 = a2 b0 + a1 b1 + a0 b2 ,
...,
c2N −2 = aN −1 bN −1 .
Utilisation de la FFT pour calculer le produit : on complète la suite (ak )k=0,...,N −1 en la suite
(ak )k=0,...,2N −1 par des zéros : ak = 0 pour tout k = N, ..., 2N − 1. De même pour la suite
(bk )k=0,...,N −1 complétée par des zéros en la suite (bk )k=0,...,2N −1 . Et on a alors :
ck =
2N
−2
X
ak−m bm ,
m=0
car pour m > k on a ak−m = 0.
8 Convolution discrète et calcul par FFT
Dénition 8.1 On se donne deux suites (ak )k∈Z et (bk )k∈Z indicées sur Z tout entier. La suite
convolée (discrète) (ck )k∈Z = (ak )k∈Z ∗ (bk )k∈Z est la suite dénie par :
∞
X
ck =
ak−m bm = ... + ak+2 b−2 + ak+1 b−1 + ak b0 + ak−1 b1 + ak−2 b2 + ....
m=−∞
noté
= (ak )k∈Z ∗ (bk )k∈Z .
8
9
On remarque immédiatement qu'également (symétrie) :
(ck )k∈Z = (bk )k∈Z ∗ (ak )k∈Z = (
∞
X
am bk−m )k∈Z
m=−∞
Et on trouve le cas particulier où les suites (ak ) et (bk ) sont nulles pour k < 0 : on obtient
immédiatement que (ck ) est nulle pour k < 0 (car pour k < 0 et m ≥ 0 on a ak−m = 0, et pour
m < 0 on a bm = 0).
D'où également :
Dénition 8.2 On se donne deux suites (ak )k∈N et (bk )k∈N indicées sur N. La suite convolée
(ck )k∈N = (ak )k∈N ∗ (bk )k∈N est la suite dénie par :
ck =
k
X
ak−m bm = ak b0 + ak−1 b1 + ... + a0 bk ,
m=0
chaque ck étant une somme de k+1 termes.
Cas particulier : si (ak ) et (bk ) sont des suites nies de longueur ≤ N , i.e. (quitte à renuméroter)
si on considère les suites nies (ak )k=0,...,N −1 et (bk )k=0,...,N −1 , (ck ) est également une suite nie,
suite de longueur ≤ 2N :
(ak )k=0,...,N −1 , (bk )k=0,...,N −1 ∈ RN
⇒
(ck )k=0,...,2(N −1) ∈ R2N −1 .
En eet : si k < 0 alors ck = 0, cf. cas précédent ; si k ≥ 2N −1 alors soit m ≥ N et bm = 0, soit
m < N et on a 2N −1 − m ≥ N et ak−N = 0 et donc ck = 0 ; et c2N −2 = aN −1 bN −1 .
9 Remarques : équation de la chaleur
Remarque 9.1 L'intérêt essentiel d'utiliser les exponentielles est qu'elles sont fonctions propres
de l'opérateur de dérivation D : f → f 0 , i.e. qu'elles vérient Df = αf (d'ailleurs se sont les seules
fonctions ayant cette propriété) : ici (eαt )0 = α(eαt ), pour α ∈ C.
Ainsi, pour résoudre l'équation diérentielle u0 − αu = d où d est une fonction donnée et α un
complexe, on commence par chercher une solution de l'équation homogène :
u0 (t) − αu(t) = 0,
i.e. solution de u0 (t) = αu(t), et cette solution homogène est proportionnelle à uh (t) = eαt : c'est
la propriété fondamentale de l'exponentielle.
Remarque 9.2 Les fonctions sinus et cosinus sont fonctions propres de l'opérateur de dérivation
seconde D2 : u → u00 . Et si on s'intéresse au problème aux limites : trouver u : [0, L] → R telle
que :
u00 (x) = −r u(x),
u(0) = 0, u(L) = 0,
i.e. au problème des fonctions propres de l'opérateur de dérivation seconde avec conditions aux
limites
√ homogènes, alors les solutions (non nulles) sont de la forme u = a cos ωx + b sin ωx quand
ω = r > 0 (impose r > 0), les conditions aux limites imposants a = 0 puis b sin(ωL) = 0 ; et
avec b 6= 0 (sinon u = 0 est l'unique solution) on obtient des solutions non nulles ssi ω = k 2π
L pour
x
).
k ∈ N∗ . Les solutions non nulles sont données par les fonctions harmoniques sin(2kπ L
Remarque 9.3 Les deux remarques précédentes mettent en évidence l'intérêt des séries de Fourier
2
∂ u
pour la résolution de l'équation de la chaleur, équation aux dérivées partielles ∂u
∂t (t, x)− ∂x2 (t, x) =
f (t, x) avec condition initiale en temps et conditions aux limites en espace, f étant une source de
chaleur.
Références
[1] Gasquet C., Witomski P. : Analyse de Fourier et applications. Dunod, 2000.
[2] Schwartz L. : Méthodes mathématiques pour les sciences physiques. Hermann, 1965 (nouveau
tirage 1993).
[3] Strang G. : Introduction to Applied Mathematics. WellesleyCambridge Press, 1986.
9