Cours Transf Fourier
Cours Transf Fourier
Cours Transf Fourier
numérique
Stéphane Balac
Stéphane BALAC
UFR de Mathématiques, Université de Rennes 1
Campus de Beaulieu, CS 74205, F-35042 Rennes
stephane.balac@univ-rennes1.fr
Résumé. La transformée de Fourier et ses propriétés sont présentées dans de très nombreux ouvrages.
Nous abordons dans ce document ce thème incontournable en sciences de l’ingénieur d’une manière
moins conventionnelle à travers la problématique du calcul numérique de la transformée de Fourier d’une
fonction réelle ou complexe de la variable réelle. L’objectif visé, servant de fil conducteur au document,
est de comprendre comment l’algorithme de transformée de Fourier rapide (Fast Fourier Transform -
FFT - en anglais), qui permet de calculer de manière très efficace la transformée de Fourier discrète
d’une suite (finie) de valeurs, peut être exploité pour calculer la transformée de Fourier d’une fonction
en un grand nombre des valeurs (imposées) de la fréquence.
Mots clés. Transformée de Fourier, quadrature numérique, algorithme FFT, formule de Shannon
Introduction
Des renseignements très utiles sur un signal donné (d’un point de vue mathématique, une fonction réelle ou
complexe de la variable réelle) peuvent être obtenus en déterminant son spectre fréquentiel. La découverte
de l’intérêt de la décomposition spectrale d’un signal est due à Joseph Fourier qui a établi que tout
signal périodique peut se décomposer en une somme finie ou dénombrable de signaux sinusoïdaux de
fréquences et d’amplitudes constantes. C’est l’ensemble fini ou dénombrable de ces fréquences qui est
appelé le spectre du signal. L’outil mathématique utilisé pour obtenir cette décomposition d’un signal
périodique et le spectre correspondant est celui des séries de Fourier. Dans le cas d’un signal qui n’est pas
périodique, une analyse comparable du signal peut être effectuée pour mettre en évidence les composantes
fréquentielles principales d’un signal. On a recours dans ce cas à un outil mathématique appelé transformée
de Fourier. L’analyse spectrale d’un signal numérique (pouvant être représenté par une fonction constante
par morceaux) fait intervenir quant à elle un outil mathématique appelé transformée de Fourier discrète.
En dehors de l’analyse spectrale d’un signal, les outils mathématiques que sont les séries de Fourier et la
transformée de Fourier sont également utiles pour d’autres usages comme la résolution d’équations aux
dérivées partielles, le calcul de la valeur de certaines intégrales, le calcul de la valeur de la somme de
certaines séries, etc. Joseph Fourier eut au demeurant l’idée de décomposer une fonction périodique en
une somme de fonctions trigonométriques pour résoudre l’équation de la chaleur.
Dans ce document nous nous intéressons au calcul de la transformée de Fourier d’une fonction réelle
ou complexe de la variable réelle par une approche basée sur l’utilisation de méthodes de quadrature
numérique. Nous verrons comment les différents points de vue sur la transformée de Fourier que nous
venons de mentionner (transformée de Fourier, transformée de Fourier discrète et décomposition en série
de Fourier) se rejoignent considérés sous l’angle du calcul numérique. L’approche retenue ici, basée
sur l’exploitation de formules de quadrature numérique, permettra de montrer de manière logique et
constructive, comment le célèbre algorithme de transformée de Fourier rapide (algorithme FFT pour Fast
Fourier Transform en anglais) permettant un calcul efficace de la transformée de Fourier discrète, peut
être utilisé pour le calcul de la transformée de Fourier d’une fonction intégrable ou des coefficients de
Fourier d’une fonction périodique. Nous verrons enfin comment la formule de Shannon peut elle aussi
être utilisée dans le cadre du calcul de la transformée de Fourier d’une fonction.
La problématique abordée dans ce document est bien entendu assez ancienne et suit de près la publication
de l’algorithme FFT par James W. Cooley et John W. Tukey pour le calcul des séries de Fourier [8]. On
La transformée de Fourier vue sous l’angle du calcul numérique 2
pourra consulter par exemple [1, 2, 16, 17, 21] pour l’intérêt historique lié à cette problématique du calcul
numérique de la transformée de Fourier d’une fonction à partir de l’algorithme FFT.
Pour les moins enclins à s’intéresser aux détails des méthodes numériques mises en œuvre dans des logiciels
de calcul numérique comme matlab, 1 indiquons tout de suite que la commande fft de matlab ne calcule
pas la transformée de Fourier d’une fonction, voir la figure 1. La lecture de ce document apportera tout
l’éclairage nécessaire sur ce point.
1
par FFT
TF exacte
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
−6 −4 −2 0 2 4 6
4 L’algorithme FFT 18
4.1 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2 Principe de la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Algorithme FFT pour le calcul de la transformée de Fourier d’une fonction . . . . . . . . . . . . . 20
5 Le théorème de Shannon 23
5.1 Rappel du théorème de Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2 Utilisation du théorème de Shannon pour le calcul de la transformée de Fourier . . . . . . . . . . . 24
1. Tous les programmes proposés dans ce document sont également exécutables, sans modification, sous le logiciel libre
octave, téléchargeable à cette adresse : https://www.gnu.org/software/octave/download.html
1. La transformée de Fourier
Pour certaines fonctions f , il est possible de calculer explicitement leur transformée de Fourier en ayant
recours aux méthodes habituelles du calcul intégral ou à certains artifices calculatoires. Par exemple,
on trouvera dans [13, 22] les détails sur la manière de calculer les transformées de Fourier des fonctions
données dans le tableau suivant (a désigne une constante réelle strictement positive) :
1 ν
f : t 7→ sinc2 (πat) fb : ν 7→ Λ
|a| a
1 πν
f : t 7→ Λ(at) fb : ν 7→ sinc2
|a| a
1
f : t 7→ e−at H(t) fb : ν 7→
a + 2πiν
r
2 π − (πν)2
f : t 7→ e−at f : ν 7→
b e a
a
2a
f : t 7→ e−a|t| fb : ν 7→ 2
a + 4π 2 ν 2
tk −at 1
f : t 7→ e H(t) fb : ν 7→
k! (a + 2iπν)k+1
−4iπν
f : t 7→ sign(t) e−at fb : ν 7→
a2 + 4π 2 ν 2
où
— 1I désigne la fonction indicatrice de l’intervalle I qui vaut 1 en tout point de I et 0 ailleurs (appelée
aussi fonction porte en traitement du signal lorsque I est un intervalle borné),
— Λ désigne la fonction t 7→ max(1 − |t|, 0) (appelée fonction chapeau en traitement du signal),
— sinc désigne la fonction sinus cardinal définie par sinc(t) = sin(t)/t pour t 6= 0 et prolongée par
continuité en 0 en posant sinc(0) = 1,
— H désigne la fonction de Heaviside 1[0,+∞[ qui est l’indicatrice de l’intervalle [0, +∞[.
Rappelons que la transformée de Fourier d’une fonction réelle de la variable réelle est, en général, une
fonction complexe de la variable réelle. On dispose toutefois de certaines propriétés de symétrie de la
transformée de Fourier observables sur les quelques exemples précédents.
2. Dans ce document, nous utiliserons alternativement les deux notations F et b pour désigner l’opérateur de Fourier en
privilégiant à chaque fois celle des deux notations la mieux adaptée au contexte dans un soucis de clarté et de facilité de
compréhension des expressions mathématiques manipulées.
3. D’autres formules intégrales sont utilisées pour la définition de la transformée de Fourier, voir par exemple http:
//en.wikipedia.org/wiki/Fourier_transform pour une présentation des différentes définitions courantes de la transformée
de Fourier. Nous reprenons ici celle de l’ouvrage Analyse de Fourier [22].
— Si f ∈ L1 (R, R) est à valeurs réelles et est paire alors fb est elle aussi à valeurs réelles (autrement
dit, la partie imaginaire de fb est nulle) et de plus la partie réelle de fb est une fonction paire.
— Si f ∈ L1 (R, R) est à valeurs réelles et est impaire alors fb est à valeurs imaginaires pures (autrement
dit, la partie réelle de fb est nulle) et la partie imaginaire de fb est une fonction impaire.
Les principales propriétés de la transformée de Fourier sont les suivantes :
— linéarité : soient (α, β) ∈ C2 , (f, g) ∈ L1 (R, K)2 et h = αf + βg ; on a h ∈ L1 (R, K) et b
h = αfb+ βb
g;
— translation : soient f ∈ L (R, K), x0 ∈ R et h : x ∈ R 7→ f (x − x0 ) ; on a h ∈ L1 (R, K) et
1
En théorie du signal, pour un signal représenté par une fonction f ∈ L1 (R, C), on appelle spectre du
signal sa transformée de Fourier fb. Comme cette fonction est à valeurs complexes, on a coutume de
représenter séparément son module et son argument. On appelle spectre d’amplitude du signal le module
de la transformée de Fourier de f et spectre de phase du signal l’argument de la transformée de Fourier
de f .
Parmi les propriétés importantes de la transformée de Fourier, rappelons 4 que si f est une fonction
appartenant à L1 (R, K) alors sa transformée de Fourier est une fonction continue qui tend vers 0 en
l’infini. Par ailleurs, si f ∈ L1 (R, K) et si fb ∈ L1 (R, K) alors, pour tout t ∈ R, on a
Z +∞
f (t) = fb(ν) e2iπνt dν. (2)
−∞
Par analogie avec la situation des séries de Fourier, dans cette relation, la valeur fb(ν) apparaît comme le
« poids » associé à la fréquence ν.
Rappelons aussi que la régularité de la fonction f considérée et le comportement à l’infini de sa transformée
de Fourier fb sont étroitement liés comme l’indique les résultats suivants.
— Si f ∈ L1 (R, K) est de classe C k et si pour tout i ∈ {1, . . . , k} la dérivée i-ème de f est dans
L1 (R, K) alors il existe une constante C ∈ R+ telle que
C
|fb(ν)| 6 .
|ν|k
Ce résultat indique que plus une fonction est « régulière » et plus sa transformée de Fourier décroît
rapidement en l’infini. Il se démontre en intégrant par parties k fois la relation (1), voir [22] ou [13]
leçon 19.
4. Voir [22] ou [13].
R fb(ν)
— Si f ∈ L1 (R, K) et s’il existe k ∈ N∗ tel que R 1+|ν| k
k dν < +∞ alors f est de classe C .
Ce résultat indique que si la transformée d’une fonction décroît assez rapidement à l’infini alors
cette fonction est régulière. Il se démontre en appliquant k fois le théorème de dérivation sous le
signe somme dans la relation (2), voir [22] ou [13] leçon 19.
Ainsi, plus une fonction est régulière et plus sa transformée de Fourier décroît rapidement à l’infini et
inversement. En pratique, cela signifie qu’un signal régulier possède peu de « structures » oscillantes à
des fréquences élevées.
L’intégrale dans l’expression de la transformée de Fourier d’une fonction donnée par la relation (1) porte
sur un intervalle non borné. Bien qu’il existe des techniques permettant de calculer numériquement de
telles intégrales, une approche beaucoup plus simple consiste à remarquer que les fonctions intégrables au
sens de Lebesgue sur R qui sont d’intérêt pratique tendent vers 0 en +∞ et on peut, le plus souvent, en
commettant une erreur assez minime, remplacer l’intégrale sur R par une intégrale sur un intervalle borné
[a, b] suffisamment grand. Si la longueur de l’intervalle est assez grand ou si f (t) décroît assez rapidement
lorsque t tend vers ±∞ alors l’approximation suivante sera de bonne qualité
Z +∞ Z b
fb(ν) = f (t) e−2iπνt dt ≈ f (t) e−2iπνt dt
−∞ a
et permettra d’utiliser les méthodes de quadrature numérique usuelles (voir par exemple [19], chap. 8
ou [9]).
Le point de vue physique va dans le sens de cette approximation mathématique : en pratique, on ne dispose
souvent d’un signal que sur une durée d’enregistrement T finie correspondant à la variable temporelle t
variant par exemple entre a = t0 et b = t0 + T (on parle de « fenêtre » d’acquisition du signal). En dehors
de la fenêtre d’acquisition du signal, on peut « compléter » l’enregistrement en faisant l’hypothèse que
le signal est périodique, ou encore en considérant qu’il est d’intensité négligeable, voir la section 2. Dans
ces deux cas, le calcul de la transformée de Fourier fait intervenir une intégrale portant sur un intervalle
borné.
Bien entendu l’introduction d’un fenêtrage lors du calcul de la transformée de Fourier d’une fonction
n’est pas sans conséquence sur l’expression de cette transformée de Fourier. Pour simplifier l’étude des
effets du « fenêtrage » de la fonction f sur sa transformée de Fourier, on peut ne considérer que des
fenêtres centrées à l’origine et correspondant à des intervalles de la forme [− T2 , T2 ]. En effet, si la fenêtre
correspond à l’intervalle [a, b] alors le changement de variable s = t − c où c = 21 (b − a) implique que
T T
Z b Z 2
Z 2
−2iπνt −2iπν(s+c) −2iπνc
f (t) e dt = f (t + c) e ds = e τ−c f (s) e−2iπνs ds
a − T2 − T2
où T = a + b et τ−c désigne l’opérateur de translation de c. On observera donc des effets analogues, que
la fenêtre soit centrée à l’origine ou non, puisque les deux intégrales ne diffèrent que par une translation
de la fonction f considérée et par la présence d’un terme multiplicatif (fonction de ν).
On considère donc dans tout ce qui suit un fenêtrage de la fonction f centré à l’origine, voir la figure 2,
ce qui revient à considérer l’approximation suivante pour T ∈ R∗+ fixé :
T
Z +∞ Z 2
−2iπνt
fb(ν) = f (t) e dt ≈ f (t) e−2iπνt dt. (3)
−∞ − T2
L’intégrale du membre de droite dans la relation (3) peut s’interpréter comme une transformée de Fourier :
il s’agit de la transformée de Fourier de la fonction g = f × 1[− T , T ] où 1[− T , T ] est la fonction indicatrice
2 2 2 2
de l’intervalle [− T2 , T2 ] (on parle aussi de fonction porte ou de fonction rectangle en traitement du signal).
Pour tout ν ∈ R, on a
T
Z 2
Z +∞
f (t) e−2iπνt dt = f (t) 1[− T , T ] (t) e−2iπνt dt = F(f × 1[− T , T ] )(ν).
2 2 2 2
− T2 −∞
En utilisant les propriétés de la transformée de Fourier, voir [3, 13, 22], on obtient
F(f × 1[− T , T ] ) = fb ∗ 1
b[− T , T ]
2 2 2 2
Ainsi, le fait de remplacer dans l’expression de la transformée de Fourier de f l’intégrale sur R par une
intégrale sur l’intervalle borné [− T2 , T2 ], ou ce qui revient au même, le fait de tronquer la fonction f en
la restreignant à l’intervalle borné [− T2 , T2 ] pour en évaluer la transformée de Fourier, a pour résultat de
convoler la transformée de Fourier de f avec une fonction sinus cardinal.
Afin de visualiser les conséquences pratiques du fenêtrage, intéressons-nous à la fonction f : t 7→ sinc2 (πat)
dont la transformée de Fourier est fb : ν 7→ a1 Λ(ν/a), voir p. 3. D’après ce qui précède, le fenêtrage de
f a pour conséquence de fournir gb = fb ∗ h où h : ν 7→ T sinc(πT ν) au lieu de fb. La figure 3 illustre
Figure 4. Illustration de l’effet du fenêtrage d’une fonction sur sa transformée de Fourier pour la
fonction considérée à la figure 3. A gauche la largeur de la fenêtre vaut T = 6 et à droite T = 7.
On retiendra que le fait de remplacer la fonction f par sa restriction à l’intervalle borné [− T2 , T2 ] pour
évaluer la transformée de Fourier de f (autrement dit de « fenêtrer » la fonction f ), revient à convoler la
transformée de Fourier de f avec une fonction sinus cardinal. Cela se traduit par l’apparition d’oscillations
aux extrémités du spectre de f qui sont d’autant plus importantes que le fenêtrage n’a pas pris en compte
une partie significative du support de la fonction f .
Signalons qu’un moyen d’atténuer les oscillations associées à la convolution par la fonction sinus cardinal
consiste à utiliser une fonction de fenêtrage plus lisse que la fonction indicatrice de [− T2 , T2 ]. Nous
n’aborderons pas cet aspect des choses ici.
Le cadre mathématique dans lequel est étudiée la transformée de Fourier suppose que l’on dispose d’un
signal représenté par une fonction f définie sur R, à valeurs réelles ou complexes, qui soit intégrable
sur R. Dans la pratique, lorsque la transformée de Fourier est utilisée comme moyen d’analyser un
signal analogique (c’est-à-dire variant de façon continu dans le temps), celui-ci est connu à travers un
enregistrement sur une durée finie. Il convient donc de faire des hypothèses, acceptables relativement à la
situation physique considérée, permettant de connaître la forme du signal sur la partie non enregistrée. 5
5. Voir http://fr.wikipedia.org/wiki/Analyse_spectrale pour une présentation plus détaillée de cette problématique.
Figure 5. Signal enregistré modélisé par une fonction périodique (en haut) et signal enregistré modélisé
par une fonction à support borné (en bas).
— On peut par exemple supposer que le signal enregistré se reproduit indéfiniment : on dispose dans
ce cas d’un signal périodique dont l’enregistrement correspond à l’évolution du signal sur une
période. Ce signal est représenté par une fonction de R dans K périodique, voir la figure 5 en haut.
Dans ce cas l’analyse spectrale du signal est basée sur la notion de série de Fourier. Un signal
périodique représenté par une fonction f de R dans C périodique de période T peut, sous certaines
conditions (voir [3, 13, 22]), être égal à sa série de Fourier, c’est-à-dire, vérifier pour tout t ∈ R
Z T
X 1 2
f (t) = fbn e2iπnt/T où fbn = f (t) e−2iπnt/T dt. (4)
T − T2
n∈Z
— On peut aussi supposer que l’intensité du signal est négligeable en dehors de l’enregistrement
effectué : on dispose dans ce cas d’un signal représentable par une fonction de R dans K à support
borné, voir la figure 5 en bas. Pour un signal représentable par une fonction de R dans K à support
borné [− T2 , T2 ], on peut avoir sous certaines conditions (voir par exemple [3, 13, 22]), pour tout
t∈R
Z Z T2
f (t) = fb(ν) e2iπνt dν où fb(ν) = f (t) e−2iπνt dt. (5)
R − T2
Certains signaux varient de façon discrète dans le temps, c’est-à-dire que leur amplitude ne prend qu’un
nombre fini de valeurs au cours du temps. On parle dans ce cas de signal numérique. Pour de tels signaux,
il existe un outil mathématique d’analyse spectrale appelée transformée de Fourier discrète (TFD).
Considérons un signal numérique modélisable par une fonction f constante par morceaux sur chaque
intervalle [n, n + 1[ pour n ∈ Z, voir la figure 6. On appelle transformée de Fourier discrète de f ,
l’application fb de R dans C définie par
X
∀ν ∈ R fb(ν) = f (n) e−2iπνn .
n∈Z
La fonction fb est une fonction périodique de période 1 définie comme la somme d’une série
trigonométrique. Comme pour un signal analogique, la connaissance de la transformée de Fourier d’un
signal numérique permet d’obtenir le signal lui-même par la formule d’inversion
Z 1
2
∀n ∈ Z f (n) = fb(ν) e2iπnν dν. (6)
− 12
Si le signal numérique considéré est périodique et représentable par une fonction f périodique, constante
par morceaux et prenant un nombre fini N de valeurs y1 , . . . , yN sur une période, voir la figure 6, alors
on appelle transformée de Fourier discrète de f l’application fb de N dans C définie par
N
X −1
∀k ∈ Z fb(k) = fbk = f (n) e−2iπkn/N
n=0
et on a la formule d’inversion
N −1
1 X b 2iπkn/N
∀n ∈ Z f (n) = fk e . (7)
N
k=0
On voit que l’analyse spectrale d’un signal met en œuvre, selon les caractéristiques de celui-ci, trois outils
mathématiques distincts :
— les séries de Fourier dans le cas d’un signal analogique périodique,
— la transformée de Fourier dans le cas d’un signal analogique non périodique,
— la transformée de Fourier discrète dans le cas d’un signal numérique.
Pour toutes ces situations intervient sous une forme ou sous une autre la nécessite de calculer l’intégrale
Z T
2
f (t) e−2iπνt dt.
− T2
T
f (t) e−2iπνt dt par la méthode des rectangles à
R 2
Figure 7. Illustration du calcul de l’intégrale
−T
2
gauche.
Étant donnée une fonction f de R dans K intégrable sur R, on cherche à calculer une valeur approchée de
sa transformée de Fourier au moyen de l’approximation suivante qui résulte du fenêtrage de la fonction f :
T
Z +∞ Z 2
f (t) e−2iπνt dt ≈ f (t) e−2iπνt dt (8)
−∞ − T2
| {z } | {z }
= fb(ν) = S(ν)
b
où T est un réel strictement positif fixé choisi suffisamment grand pour qu’en dehors de l’intervalle [− T2 , T2 ]
les valeurs prises par la fonction f peuvent être considérées comme négligeables. Une valeur approchée
RT
de l’intégrale S(ν)
b = −2T f (t) e−2iπνt dt peut être obtenue en utilisant une formule de quadrature
2
numérique. Une formule de quadrature particulièrement simple, que nous allons utiliser ici, est la formule
des rectangles à gauche. Bien entendu, d’autres formules de quadrature peuvent être utilisées mais la
formule des rectangles à gauche va nous amener à introduire et à exploiter pour le calcul un algorithme
de calcul de transformée de Fourier discrète très célèbre : l’algorithme de transformée de Fourier rapide
ou algorithme FFT pour Fast Fourier Transform en anglais.
Remarque L’intégrale S(ν) b dans la relation (8) que l’on cherche à calculer intervient dans le calcul de
la transformée de Fourier d’une fonction de plusieurs manière :
— elle fournit une approximation de la transformée de Fourier d’une fonction f appartenant L1 (R, K)
ou à L2 (R, K) lorsque T est convenablement choisi ;
— elle fournit la valeur exacte de la transformée de Fourier d’une fonction à support borné [− T2 , T2 ] ;
— elle fournit, par la relation cn = T1 S(b ν ), la valeur des coefficients de Fourier d’une fonction
T
périodique de période T .
Dans la suite de ce document, nous nous intéressons plus particulièrement au calcul de S(ν) b pour
approcher la transformée de Fourier d’une fonction f .
3.1.2. Mise en oeuvre avec matlab La fonction matlab tfquad suivante permet de calculer une
approximation de la valeur de la transformée de Fourier d’une fonction f en ν en ayant recours la formule
d’approximation (10).
1 function tfnu=tfquad(f,nu,n,T)
% Calcule la transformée de Fourier TF de la fonction f pour la fréquence nu par la formule
% de quadrature des rectangles à gauche en utilisant pour fenêtre temporelle l’intervalle
% [-T/2,T/2] et n points de quadrature
5 %
% Paramètres d’entrée :
% f : la fonction dont on cherche à calculer la
% nu : la fréquence pour laquelle on souhaite la TF
% n : nombre de noeuds de quadrature
10 % T : largeur de la fenetre temporelle (qui est l’intervalle [-T/2,T/2])
% Paramètres de sortie :
% tfnu : valeur de la TF de f pour la fréquence nu
k=0:n-1;
15 tfnu=(T/n)*exp(pi*i*nu*T)*sum(f((k/n-1/2)*T).*exp(-2*i*pi*nu*T*k/n));
La figure 8 représente la transformée de Fourier de la fonction t 7→ 1[−1,1] (t) et son approximation obtenue
par la formule (10) pour n = 32 et T = 2. 0n observe que même avec peu de points de quadrature, les
deux courbes sont superposées. L’erreur quadratique relative est de 1.36%. Dans le cas de la fonction
considérée dans cet exemple, les effets de fenêtrage sont inexistants puisque la fonction f est à support
borné. Pour n = 256, l’erreur quadratique relative n’est plus que de 0.02%.
Figure 8. Transformée de Fourier de la fonction f : t 7→ 1[−1,1] (t) et son approximation obtenue par
la formule (10) pour n = 32.
Cette formule d’approximation est identique à la formule d’approximation (10) dans la mesure où la
transformée de Fourier de la translaté de T2 de f est égale au produit de la transformée de Fourier de f
par la fonction ν 7→ eπνT , voir [13, 22].
2
Figure 9. Représentation graphique de la fonction f : t 7→ e−t (à gauche) et de la partie réelle et
imaginaire de φ : t 7→ f (t) e−2iπνt pour ν = 25 (à droite).
Les fortes oscillations de la fonction à intégrer nécessitent de prêter une attention toute particulière lorsque
l’on a recours à une méthode de quadrature numérique afin d’obtenir une précision numérique suffisante.
L’utilisation d’une méthode de quadrature usuelle avec un nombre important de points de quadrature
n’est en général pas suffisant pour assurer une bonne qualité de l’approximation numérique de la valeur
de l’intégrale. Des méthodes de quadrature dédiées (par exemple la méthode de Filon) prenant en compte
le caractère oscillant de l’intégrande ont été développées et ce sujet reste un domaine de recherche actuel
en analyse numérique, voir par exemple [14, 15]. Dans le cas qui nous intéresse, le caractère très oscillant
de l’intégrande sera « contrôlé » par un choix judicieux des points en lesquels est évaluée la transformée
de Fourier et par l’utilisation de l’algorithme de transformée de Fourier rapide (FFT pour Fast Fourier
Transform en anglais).
3.2.1. Périodisation du spectre D’après la relation (10), une valeur approchée de la transformée de
Fourier de f ∈ L1 (R) en ν ∈ R peut être obtenue par la formule d’approximation
n−1
T iπνT X
fb(ν) ≈ Sbn (ν) où Sbn : ν ∈ R 7−→ e fk e−2iπνT k/n (12)
n
k=0
avec fk = f ( 2k−n
2n T ).
Il n’est pas anodin de remarquer que bien que fb n’ait aucune raison d’être périodique, la fonction Sbn est
périodique de période νmax = Tn . En effet,
n−1 n−1
T iπνT X n k
−2iπ(ν+ T )T n T iπνT X k
∀ν ∈ R Sbn (ν + n
T) = e fk e = e fk e−2iπνT n |e−2kiπ
n n {z }
k=0 k=0 =1
n−1
T iπνT X k
= e fk e−2iπνT n = Sbn (ν).
n
k=0
3.2.2. Fréquence de Nyquist La propriété de périodicité de Sbn implique qu’il est impossible de
calculer par cette approche, une fois le paramètre de fenêtrage T et le nombre de nœuds de quadrature n
fixés, la valeur de fb(ν) pour n’importe quelle valeur de ν. En particulier, il est impossible d’obtenir la
valeur de fb(ν) pour ν > 21 νmax ou pour ν 6 − 12 νmax où νmax = n/T car compte tenu de la périodicité
de Sbn seules les valeurs de ν ∈ [− 21 νmax , 12 νmax ] sont calculables. La valeur νmax = Tn correspond à la
fréquence critique de Nyquist. 7
Cela doit il surprendre ? La réponse est non. En effet, si le calcul de fb(ν) pour une grande valeur de ν
(en valeur absolue) est requise (ou si celle-ci est significativement différente de 0), cela signifie que la
fonction f possède une structure interne très oscillante. Dans ce cas, pour pouvoir espérer obtenir une
valeur approchée de l’intégrale de Fourier suffisamment précise, il est indispensable de prévoir un très
grand nombre n de noeuds de quadrature, voir la section 3.3 pour des détails. Mais si n est pris très grand
alors νmax = Tn le devient aussi et dans ce cas, on retombe dans la situation où ν ∈ [− 21 νmax , 12 νmax ].
On retiendra donc que :
— la formule d’approximation (10) utilisée pour le calcul approché de la transformée de Fourier d’une
fonction fait intervenir une fonction Sbn périodique (en d’autres termes, l’approximation calculée
du spectre est périodique) ;
— en pratique, cela ne conduit pas à une impasse car la nécessité de calculer fb(ν) pour une grande
valeur de ν sous-entend que la fonction f est très oscillante, ce qui requiert pour obtenir une
bonne approximation de fb(ν) d’avoir un nombre de noeuds de discrétisation important ; la période
principale [− 12 νmax , 12 νmax ] de Sbn inclut dans ce cas la valeur de ν.
3.3.1. Erreur de quadrature Dans le cas d’une subdivision uniforme σ = (tk )k=0,...,n de l’intervalle
RT
[− T2 , T2 ] de pas ht = Tn , le calcul approché de l’intégrale −2T φ(t) dt par la méthode des rectangles à
2
gauche consiste en l’approximation
Z T n−1
2 X
φ(t) dt ≈ ht φ(tk ).
− T2 k=0
où tk = − T2 + k ht pour k ∈ {0, . . . , n} sont les nœuds de quadrature. L’erreur absolue commise en faisant
cette approximation est |E| où
Z T n−1 n−1
X Z tk+1
2 X
E= φ(t) dt − ht φ(tk ) = φ(t) dt − ht φ(tk ) .
− T2 k=0 k=0 tk
Pn−1 R tk+1
D’après l’inégalité triangulaire, on a |E| 6 k=0 |Ek | où Ek = tk
φ(t) dt − ht φ(tk ) désigne l’erreur
locale ou erreur d’intégration élémentaire.
Rappelons le résultat suivant concernant l’erreur locale pour la formule des rectangles à gauche [9, 10].
h2t 0
∃ck ∈ ]tk , tk+1 [ Ek = φ (ck ).
2
Si la fonction f dont on cherche la transformée de Fourier est de classe C 1 sur [− T2 , T2 ] alors la fonction
φ : t 7→ f (t) e−2πiνt est elle aussi de classe C 1 sur [− T2 , T2 ]. On déduit du lemme 1 que si f est de classe
C 1 sur [− T2 , T2 ] alors il existe des réels c0 , . . . , cn−1 dans l’intervalle [− T2 , T2 ] tels que
n−1 n−1
X h2 h2t n−1
X X
0
|Ek | = t
2 φ (c )
k 6
|φ0 (ck )| .
2
k=0 k=0 k=0
def
où 8 M1 = kφ0 k∞ = supt∈[− T , T ] |φ0 (t)|.
2 2
Pour tout t ∈ R, on a
φ0 (t) = f 0 (t) − 2iπν f (t) e−2πiνt .
De plus, on a Z T Z T
2 2
−2iπνt
f (t) e dt 6 |f (t)| dt 6 T sup |f (t)|
−T −T t∈[− T2 , T2 ]
2 2
kf 0 k∞
T
+ 2π|ν| . (14)
2n kf k∞
Remarques
(i) L’estimation d’erreur (13) est grossière. On pourra notamment remarquer que sous l’hypothèse
où f s’annule aux extrémités de l’intervalle d’intégration ± 12 T et compte tenu du fait que l’on
considère une subdivision uniforme de l’intervalle [− 12 T, 12 T ], la somme Sbn (ν) peut s’interpréter
RT
comme l’approximation de l’intégrale −2T f (t) e−2iπνt dt obtenue par la méthode des trapèzes.
2
Cette remarque permet d’améliorer l’estimation d’erreur (13).
(ii) Il existe une littérature abondante concernant l’estimation de l’erreur commise en calculant la
transformée de Fourier d’une fonction en utilisant l’algorithme FFT, voir par exemple [1,4,6,7,11].
Ces différents travaux ont pour objectif de trouver des bornes pour l’erreur commise les plus
précises possibles, indépendamment de la fréquence ν, pour différentes classes de fonctions.
(iii) Il peut être tentant d’étudier expérimentalement l’erreur commise en approchant la transformée
de Fourier d’une fonction par la somme Sbn (ν) évaluée en utilisant l’algorithme FFT en considérant
le cas d’une fonction de Gauss car on dispose dans ce cas de l’expression exacte de la transformée
de Fourier. C’est en fait voué à l’échec car la formule des trapèzes possède des propriétés de super-
convergence pour l’intégrande associée à la fonction de Gauss (mais pas uniquement) comme mis
en évidence par exemple dans la référence [17].
On en déduit que si l’on souhaite conserver une même précision numérique lors du calcul de fb(ν)
pour différentes valeurs croissantes de ν, il faut augmenter le nombre n de noeuds de quadrature
proportionnellement à ν de sorte que le rapport νT /n reste constant (tout en prenant des valeurs
suffisamment petites). On est donc conduit à la relation suivante reliant la longueur T de l’intervalle
d’intégration et le nombre n de noeuds de quadrature à la fréquence ν pour que le calcul de fb(ν) puisse
donner satisfaction :
νT
<< 1. (15)
n
On peut donner une explication simple à cette constatation issue de l’interprétation de l’expression de la
borne d’erreur relative (14). Plus la valeur de ν est grande et plus la fonction intégrée φ : t ∈ [− T2 , T2 ] 7→
f (t) e−2iπνt présente des oscillations, voir la figure 11. On peut en effet interpréter ν comme la fréquence
des oscillations : dans le cas où f est la fonction constante égale à 1, la fonction φ est périodique de période
1/ν. Sur un intervalle de longueur 1, la fonction partie réelle (resp. partie imaginaire) de φ présente donc
ν oscillations (ou battements) de la fonction cosinus (resp. sinus), voir la figure 12.
1 1 1
0 0 0
−1 −1 −1
−3 −2 −1 0 1 2 3 −3 −2 −1 0 1 2 3 −3 −2 −1 0 1 2 3
2
Figure 11. Évolution du nombre d’oscillation de la fonction φ : t 7→ f (t) e−2iπνt où f : t 7→ e−t
pour ν = 1 (à gauche), ν = 3 (au centre) et ν = 6 (à droite). On a superposé sur chaque figure la
représentation graphique de la partie réelle et de la partie imaginaire de la fonction φ.
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figure 12. Représentation graphique de la partie réelle (trait plein) et de la partie imaginaire (trait
pointillé) de la fonction t 7→ e−2iπνt où ν = 6 sur l’intervalle [0, 1]. On observe ν oscillations de la
fonction.
La méthode de calcul de la transformée de Fourier de f étudiée ici est basée sur la formule de quadrature
des rectangles à gauche. Sur un intervalle [tk , tk+1 ] de la subdivision de l’intervalle [− T2 , T2 ], l’intégrale
de f est approchée par la valeur de l’intégrale de la fonction constante égale à la valeur de f au point tk .
Il est facile de comprendre que si ν est suffisamment grand, de sorte que sur l’intervalle [tk , tk+1 ] la
fonction φ présente plusieurs oscillations, la valeur approchée fournie par la méthode des rectangles sera
de piètre qualité. Comme on a νT oscillations de φ sur l’intervalle [− T2 , T2 ] de longueur T , on en a νT n
sur l’intervalle [tk , tk+1 ], voir la figure 12. Pour pouvoir espérer obtenir une valeur approchée de fb(ν)
assez précise, il faut qu’il y ait largement moins d’une oscillation sur l’intervalle [tk , tk+1 ]. On retrouve la
relation (15) obtenue à partir de l’expression de la borne absolue d’erreur.
n T
Remarque On notera que pour la fréquence de Nyquist νmax = T on a n νmax = 1, de sorte que pour
3.4. Lien entre formule d’approximation des rectangles et transformée de Fourier discrète
La formule de quadrature des rectangles à gauche nous a conduit à la formule d’approximation suivante
pour ν ∈ [− 21 νmax , 12 νmax ] où νmax = Tn est la fréquence de Nyquist :
Z T n−1
2
−2iπνt T iπνT X 2k−n
f (t) e dt ≈ e f ( 2n T ) e−2iπνT k/n . (16)
− T2 n
k=0
| {z } | {z }
= S(ν)
b = Sbn (ν)
Cette formule permet d’obtenir la valeur approchée des coefficients de Fourier d’une fonction périodique
par la relation
Z T2
1 1 b k
fk =
b f (t) e−2iπkt/T dt ≈ Sn ( T ).
T − T2 T
Elle permet également d’obtenir une approximation de la transformée de Fourier d’une fonction
f ∈ L1 (R, K) préalablement tronquée par fenêtrage ou d’une fonction sommable à support borné [− T2 , T2 ]
par la relation
Z +∞ Z T2
fb(ν) = f (t) e−2iπνt dt ≈ f (t) e−2iπνt dt ≈ Sbn (ν).
−∞ − T2
On peut bien entendu dans ce dernier cas utiliser la formule (16) pour calculer une valeur approchée de
la transformée de Fourier de f en n’importe quel réel ν ∈ [− 12 νmax , 12 νmax ], mais on a également souvent
besoin de disposer d’une représentation de la fonction ν 7→ fb(ν), ce qui nécessite de faire le calcul pour
un nombre important de valeurs de ν. Nous allons voir qu’il existe une méthode permettant de calculer
la valeur de la transformée de Fourier d’une fonction en n + 1 valeurs de la variable ν dans l’intervalle
[− 21 νmax , 12 νmax ] beaucoup plus rapide que l’approche consistant à recommencer n + 1 fois le calcul par
la formule d’approximation (16).
Considérons une subdivision uniforme (νj )j∈{− n2 ,..., n2 −1} de l’intervalle [− 12 νmax , 12 νmax ] de pas hν =
νmax /n. Pour tout j ∈ {− n2 , . . . , n2 − 1}, on a νj = j hν = Tj . On déduit de la relation (16) que, pour tout
j ∈ {− n2 , . . . , n2 − 1}, on a
n−1
T X
fb(νj ) ≈ Sbn (νj ) = (−1)|j| fk e−2iπjk/n . (17)
n
k=0
Pn−1 k
−2iπj n
La somme Sj (f0 , . . . , fn−1 ) = k=0 fk e s’interprète comme la transformée de Fourier discrète
(TFD) de f0 , . . . , fn−1 et cette somme peut être très efficacement calculée par l’algorithme de transformée
de Fourier rapide (algorithme FFT pour Fast Fourier Transform en anglais) que nous allons présenter
dans la section suivante. Schématiquement,
j T
∀j ∈ {− n2 , . . . , n2 − 1} fb( ) ≈ (−1)|j| TFD(f0 , . . . , fn−1 ). (18)
T n
Remarque Compte tenu du fait que νmax , qui est la fréquence de Nyquist, est donnée par νmax = Tn ,
on a hν = νmax 1
n = T . Cela signifie que le pas de la discrétisation dans le domaine fréquentiel est l’inverse
de la longueur T de « la fenêtre temporelle ». Cette propriété est un des inconvénients de la méthode
consistant à évaluer la transformée de Fourier d’une fonction en ayant recours à l’évaluation d’une TFD :
si la fonction considérée possède un spectre très oscillant que l’on souhaite bien approcher en ayant un
pas de discrétisation en fréquence hν petit, il est nécessaire de prendre T très grand. Assez souvent, il
s’agit d’un intervalle beaucoup plus grand que la longueur de l’intervalle correspondant au support utile
(c’est-à-dire les points où la fonction prend des valeurs supérieures au « zéro numérique ») de la fonction
considérée.
On retiendra que :
— Pour une fonction f à support dans [− 21 T, 12 T ], on peut obtenir une approximation de la
transformée de Fourier de f en les valeurs Tj , j ∈ {− n2 , . . . , n2 − 1} de la fréquence par la formule
j T
fb( ) ≈ (−1)|j| TFD(f0 , . . . , fn−1 ),
T n
où, pour tout k ∈ {0, . . . , n − 1}, on a noté fk = f ( 2k−n
2n T ).
— Pour obtenir les valeurs de la transformée de Fourier de f aux points νj = Tj où j ∈ {− n2 , . . . , n2 −1},
il convient donc de multiplier chacune des valeurs de la transformée de Fourier discrète (TFD)
du tableau de valeurs f0 , . . . , fn−1 par la constante (−1)j Tn . On trouve dans cette nécessitée de
multiplier alternativement les valeurs de la TFD par ± Tn l’explication des « battements» observés
sur la figure 1 p. 2.
4. L’algorithme FFT
4.1. Préliminaires
On peut regretter, pour une mise en oeuvre sur ordinateur, que la formule (18) ne fasse pas jouer
un rôle symétrique aux indices j et k qui varient respectivement dans les ensembles {− n2 , . . . , n2 − 1}
et {0, . . . , n − 1}. Compte tenu de la périodicité de l’application Sbn , les valeurs approchées de la
transformée de Fourier de f sur l’intervalle [− νmax νmax
2 , 2 ] peuvent être déduites des valeurs de Sn aux
b
0 νmax j
points νj = j n = T , j ∈ {0, . . . , n − 1} en utilisant la relation
si j ∈ {0, . . . , n2 − 1}
n−1
(
T X k Sbn (νj )
Sbn (νj0 ) = (−1)j fk e−2iπj n = (19)
n Sbn (νj−n ) si j ∈ { n2 , . . . , n − 1}
k=0
où on a exploité la relation
k k k
e−2iπj n = e−2iπ(j−n) n × |e−2ikπ
{z } = e
−2iπ(j−n) n
pour j ∈ { n2 , . . . , n − 1}.
=1
Cette remarque est essentielle pour la mise en œuvre de l’algorithme FFT.
Pour j ∈ {0, . . . , n − 1} fixé, scindons la somme Sj en deux sommes correspondants aux indices k pairs et
aux indices k impairs. On a d’une part k = 2` avec ` ∈ {0, . . . , 2m−1 − 1} pour les indices pairs et d’autre
part k = 2` + 1 avec ` ∈ {0, . . . , 2m−1 − 1} pour les indices impairs, de sorte que l’on peut écrire
m
2X −1 2m−1
X−1 2m−1
X−1
m k 2` 2`+1
Sj2 (f0 , . . . , f2m −1 ) = fk e−2iπj 2m = f2` e−2iπj 2m + f2`+1 e−2iπj 2m
pour j ∈ {0, . . . , 2m−1 − 1}. En itérant le raisonnement, on peut calculer les deux transformées de Fourier
m−1 m−1
discrètes Sj2 (f0 , . . . , f2m −2 ) et Sj2 (f1 , . . . , f2m −1 ) à 2m−1 points à partir respectivement des deux
2m−2 m−2
transformées de Fourier discrètes Sj (f0 , . . . , f2m −3 ) et Sj2 (f2 , . . . , f2m −2 ) à 2m−2 points et des
m−2 m−2
deux transformées de Fourier discrètes Sj2 (f1 , . . . , f2m −2 ) et Sj2 (f3 , . . . , f2m −1 ) à 2m−1 points. On
dispose ainsi d’un algorithme récursif permettant de calculer la valeur de la transformée de Fourier
m
Sj2 (f0 , . . . , f2m −1 ) à 2m points pour tout j variant entre 0 et 2m − 1. La figure 13 illustre la structure
des calculs effectués dans le cas où m = 4. On dispose ainsi d’un algorithme récursif de calcul des sommes
m
Sj2 (f0 , . . . , f2m −1 ) basé, à l’étape k, sur les relations suivantes :
k k−1 1 k−1
Sj2 (f0 , . . . , f2k −1 ) = Sj2 (f0 , . . . , f2k −2 ) + e2iπj 2k Sj−2 (f1 , . . . , f2k −1 )
k k−1 1 k−1
2
Sj+2 2
k−1 (f0 , . . . , f2k −1 ) = Sj (f0 , . . . , f2k −2 ) − e−2iπj 2k Sj2 (f1 , . . . , f2k −1 )
Voyons à présent comment effectuer le calcul numérique de la transformée de Fourier d’une fonction
f ∈ L1 (R) à l’aide de l’algorithme FFT via la formule d’approximation
n−1
T iπνT X
fb(ν) ≈ Sbn (ν) où Sbn (ν) = e fk e−2iπνT k/n (20)
n
k=0
avec fk = f ( 2k−n
2n T ).
Rappelons que cette formule d’approximation est obtenue après introduction d’une « fenêtre » temporelle
où la fonction f est remplacée par sa restriction à l’intervalle [− T2 , T2 ]. D’un point de vue pratique, la
longueur T de la fenêtre doit être prise suffisamment grande pour que l’on puisse considérer comme
négligeables les valeurs prises par la fonction f en dehors de l’intervalle [− T2 , T2 ]. Rappelons aussi que le
fait de considérer la restriction de la fonction f à l’intervalle [− T2 , T2 ] implique qu’il n’est pas possible,
par une méthode de quadrature composée à n noeuds de quadrature, de calculer les valeurs approchées
de la transformée de Fourier de f en dehors de l’intervalle de fréquence [− 12 νmax , 12 νmax ] où νmax = Tn
est la fréquence critique de Nyquist.
Comme nous venons de le voir, l’algorithme FFT permet un calcul simultané, rapide, de la somme présente
dans la relation (20) pour plusieurs fréquences lorsque ces fréquences correspondent aux valeurs ν = Tj
pour j ∈ {0, . . . , n − 1}. Cela signifie que seule la partie du spectre de f correspondant à une subdivision
de pas T1 de l’intervalle [− 12 νmax , 21 νmax ] peut être calculée au moyen de l’algorithme FFT. En d’autres
termes, les paramètres des discrétisations temporelle et fréquentielle sont étroitement liés. La figure 14
illustre ces liens.
Par ailleurs, ainsi que nous l’avons vu à la section 3.2.1, la fonction Sbn est périodique de période νmax = Tn
et les valeurs de fb(ν) calculées de cette manière pour ν ∈ / [− 21 νmax , 12 νmax ] ne sont pas correctes. En
particulier, Sbn (νn−1 ) = Sbn ( T ) est une approximation de fb(− T1 ) et non de fb( n−1
n−1
T ) (valeur qui ne
peut être calculée avec précision par l’approche présentée ici). Ainsi, la seconde partie du tableau des
valeurs obtenues par FFT (valeurs correspondant à j ∈ { 12 n, . . . , n}) doit être interprétée comme les
approximations des valeurs de fb(− Tj ) pour j ∈ { 21 n, . . . , n}. Cette opération de symétrisation du résultat
issu de l’algorithme FFT peut être réalisée très simplement sous matlab grâce à la commande dédiée
fftshift. Une fois cette opération de symétrisation effectuée, il est encore nécessaire de translater les
fréquences associées aux valeurs issues de l’algorithme FFT si l’on souhaite pouvoir comparer sous forme
graphique ces résultats à la transformée de Fourier de la fonction. Ces transformations sont illustrées sur
la figure 15.
Figure 14. Illustration des relations entre paramètres de discrétisation temporelle et fréquentielle.
On retiendra que pour calculer la transformée de Fourier de la fonction f à support dans [− T2 , T2 ] en les
fréquences νj = j/T où l’entier j varie dans {− n2 , . . . , n2 − 1} avec n = 2p , p ∈ N∗ par la méthode FFT,
on doit procéder de la manière suivante :
— créer la suite finie F de valeurs f ( 2k−n
2n T ) où l’entier k varie dans {0, . . . , n − 1} ;
— calculer la transformée de Fourier discrète Fb de la suite finie F par la méthode FFT (sous matlab,
ce calcul est effectué par la commande fft) ;
— symétriser les valeurs de la seconde partie du tableau (cela peut être réalisé sous matlab par la
commande fftshift) ;
— multiplier chacune des valeurs du tableau obtenu par Tn (−1)j−1 où j ∈ {1, . . . , n} désigne la
position de l’élément dans le tableau.
On dispose alors d’un tableau de valeurs correspondant à des valeurs approchées de fb(νj ) où νj = j/T
pour j = − n2 , . . . , n2 − 1.
La fonction matlab tffft.m suivante calcule la transformée de Fourier d’une fonction donnée en mettant
en œuvre les différentes étapes qui ont été détaillées précédemment.
Figure 15. Illustration des transformations nécessaires à l’issue de la mise en œuvre de l’algorithme
FFT afin d’obtenir un résultat exploitable. En haut est représentée la courbe correspondant aux valeurs
issues de l’algorithme FFT. Au milieu, la courbe obtenue après symétrisation réalisée avec la commande
fftshift de matlab. Enfin, en bas la superposition de la courbe avec celle de fb après translation des
fréquences.
On illustre dans le programme ci-dessous le calcul de la transformée de Fourier d’une fonction donnée
(une fonction de Gauss).
1 % fonction considérée
a=10;
f=@(t) exp(-a*t.^2);
5 % paramètres de calcul
T=10; % largueur de la fenetre temporelle
n=2^8; % nombre d’intervalles de discretisation temporelle
% Calcul de la TF de f
10 [tf,nu,t] = tffft (f,T,n);
Mentionnons que la figure 1 p. 2 a été obtenue en superposant les résultats produits par les commandes :
tf=h*(-1).^(0:n-1).*fftshift(fft(f(t)));
et
tg=fftshift(fft(f(t)));
5. Le théorème de Shannon
Une fonction g est dite à bande limitée si sa transformée de Fourier gb est à support borné, autrement dit,
si elle est nulle en dehors d’un intervalle. Dans ce cas, le plus petit réel strictement positif νc tel que gb est
nulle en dehors de l’intervalle [−2πνc , 2πνc ] est appelée fréquence de coupure. D’un point de vue physique,
un signal à bande limitée ne contient pas de « structures » qui oscillent plus vite qu’une fréquence de
coupure.
Le théorème d’interpolation de Shannon-Wittaker 9 indique qu’il est possible sous certaines conditions
de reconstruire une fonction à bande limitée à partir uniquement des valeurs que prend cette fonction en
certains points.
9. Claude Elwood Shannon (1916, Petoskey (USA) – 2001, Medford (USA)) était un ingénieur en génie électrique et
mathématicien américain. Il est l’un des pères de la théorie de l’information.
Sir Edmund Taylor Whittaker (1873, Southport (UK) – 1956 Édimbourg) était un astronome, mathématicien et historien
des sciences britannique.
sin(x)
où sinc désigne la fonction sinus cardinal définie par sinc(x) = x pour tout x ∈ R∗ et sinc(0) = 1.
Un signal à bande limité peut donc être reconstitué à partir des données correspondant à un
échantillonnage de ce signal si la fréquence d’échantillonnage est supérieure au double de la fréquence
maximale de ce signal.
Le théorème de Shannon ne peut pas être appliqué à la fonction f dont on cherche la transformée de
Fourier car il n’y a aucune raison que la fonction f soit à bande limitée. Par contre dans la situation
considérée ici, nous avons supposé que f était à support dans un intervalle [− T2 , T2 ] ou que la fonction f
pouvait être fenêtrée en faisant en sorte qu’elle soit presque nulle en dehors de l’intervalle [− T2 , T2 ].
Comme f est la transformée de Fourier inverse de fb et compte tenu de la symétrie entre la transformée
de Fourier et la transformée de Fourier inverse, il est possible d’utiliser la formule de Shannon pour fb.
On peut ainsi obtenir la valeur de fb(ν) pour des valeurs de ν différentes des valeurs νj = Jj associées à
l’algorithme FFT. En prenant α = T1 dans le théorème de Shannon-Wittaker, on obtient
1
n−1
2X
X k k
∀ν ∈ R fb(ν) = f ( ) sinc(πT (ν − )) ≈
b Sbn (νk ) sinc(πT (ν − νk )).
T T 1
k∈Z k=− 2 n
1 function tfnu=shannon(tf,nu,T)
%
% Calcule la valeur de la TF d’une fonction f en nu à partir
% de la connaissance des valeurs de la TF de f fournies par la méthode FFT
5 %
% Paramètres d’entrée
% tf : valeurs de la transformée de Fourier de la fonction f en j/T
% pour j=-n/2, ..., n/2-1. Si ces valeurs sont calculees par la commande fft
% le tableau tf est obtenu apres utilisation de fftshift
10 % nu : fréquence ou est recherchée la valeur de la transformee de Fourier
% T : les fréquences échantillonnées sont j/T pour j=-n/2, ..., n/2-1
% Paramètre de sortie
% tfnu : la valeur de la transformée de Fourier de la fonction f en nu
15 n=length(tf);
tfnu=0;
for j=1:n % boucle sur les éléments du tableau
k=j-1-(n/2); % indice de la somme de la formule de Shannon
tfnu=tfnu+tf(j)*sinc(T*nu-k); % sinc(t) = sin(pi t)/ (pi t)
20 end
fenêtre T = 40. Le programme matlab suivant permet de comparer la valeur exacte de la transformée
de Fourier à celle déduite des valeurs obtenues par l’algorithme FFT en utilisant la formule de Shannon.
1 a=1/2;
f=@(x) exp(-a*abs(x)); % la fonction
tf=@(x) (2*a)./(a^2+4*pi^2*x.^2); % sa transformee de fourier
T=40; % longueur de la fenetre
5 n=2^10; % nombre d’intervalle de discretisation temporelle
t=(2*[0:n-1]-n)*T/(2*n); % noeuds de discretisation temporelle
tff=(T/n)*(-1).^[0:n-1].*fft(f(t)); % calcul de la transformee de Fourier par FFT
tffs=fftshift(tff); % symetrisation
nucal=input(’Fréquence souhaitée nu= ’);
10 disp([’Valeur fournie par la formule de Shannon :’, ...
num2str(real(shannon(tffs,nucal,T)))]);
disp([’Valeur exacte :’, num2str(tf(nucal))]);
3 π
On compare ci-dessous les valeurs obtenues en ν = T et en ν = T.
>> testshan
Frequence souhaitee nu= 3/T
Valeur fournie par la formule de Shannon :2.1186
Valeur exacte :2.1183
>> testshan
Frequence souhaitee nu= pi/T
Valeur fournie par la formule de Shannon :2.0264
Valeur exacte :2.0262
On remarquera que bien que la valeur 3/T (dont la valeur correspondante de la transformée de Fourier
est contenue dans le tableau issu de l’algorithme FFT) soit proche de la valeur π/T , les valeurs associées
de la transformée de Fourier de f en ces deux fréquences sont significativement différentes. La formule de
Shannon peut donc se révéler très utile lorsque les valeurs souhaitées pour la transformée de Fourier ne
sont pas présentes parmi les valeurs fournies par l’algorithme FFT.
Signalons qu’une alternative à l’emploi de la formule de Shannon consiste à effectuer une interpolation
des résultats fournis par l’algorithme FFT, voir [9, 19]. Il est également important d’avoir à l’esprit que
lorsque la transformée de Fourier d’une fonction n’est requise que pour une seule fréquence, il est moins
coûteux d’effectuer un calcul de l’intégrale de Fourier correspondante par une méthode de quadrature
numérique adaptée au caractère oscillant de l’intégrant, voir [14, 15]. que d’avoir recours à l’algorithme
FFT (puis éventuellement à la formule de Shannon).
Étant donnée une fonction f ∈ L1 (R, K), on cherche à présent à calculer sa transformée de Fourier inverse
qui est la fonction fˇ (notée également F −1 (f )) définie sur R par 10
Z +∞
ˇ
f (t) = f (ν) e2iπνt dν. (21)
−∞
10. Cette définition de la transformée de Fourier inverse est choisie en cohérence avec le choix de définition de la transformée
de Fourier faite avec la formule (1) p. 3.
1 % fonction considérée
a=10;
f=@(nu) exp(-a*nu.^2);
% TF exacte
5 itfexa=@(t) sqrt(pi/a).*exp(-(pi*t).^2./a);
% TF calculée numériquement
[itf,t,nu] = tffft (@(nu) f(-nu),10,2^8);
% Représentation graphique des résultats
figure
10 subplot(2,1,1); plot(nu,f(nu),’-g’, ’Linewidth’,3);
xlabel(’Fréquence’); title(’Fonction considérée’);
subplot(2,1,2); plot(t,abs(itf),’-b’, ’Linewidth’,3);
hold on, plot(t,abs(itfexa(t)),’-r’,’Linewidth’, 3);
legend(’solution calculee’, ’solution exacte’);xlabel(’Temps’)
15 title(’Module de la transformée de Fourier Inverse’);
% calcul de l’erreur
err=norm(itf-itfexa(t))/norm(itfexa(t));
disp([’Erreur relative en % = ’,num2str(100*err)]);
posx=xlim; posy=ylim;
20 text(posx(1),0.9*posy(2),[’Erreur relative = ’,num2str(100*err,3),’ %’]);
Fonction consideree
1
0.8
0.6
0.4
0.2
0
-6 -4 -2 0 2 4 6
Frequence
Une alternative pour calculer (une approximation de) la transformée de Fourier inverse d’une fonction
consiste à avoir recours à la notion de transformée de Fourier discrète inverse et d’exploiter la même
approche que celle qui nous a permis de calculer (une approximation de) la transformée de Fourier d’une
fonction à partir de la notion de transformée de Fourier discrète.
Soit νmax > 0 tel que la fonction f soit à support inclus dans [− 12 νmax , 12 νmax ] (ou, d’un point de vue
pratique, tel que les valeurs prises par f puissent être considérées comme négligeables en dehors de cet
Approchons cette intégrale par la formule de quadrature des rectangles à gauche à partir d’une subdivision
uniforme (νj )j=0,...,n de l’intervalle [− 21 νmax , 12 νmax ]. Nous obtenons la formule d’approximation suivante
pour tout t ∈ [− 12 T, 21 T ] où νmax et T sont liés par la relation de Nyquist νmax = Tn ,
1 n−1
2 νmax
Z
νmax −iπtνmax X 2k−n
f (ν) e2iπνt dν ≈ e f ( 2n νmax ) e2iπtνmax k/n . (24)
− 12 νmax n
k=0
| {z } | {z }
= fˇ(t) = Šn (t)
Considérons à présent une subdivision uniforme (tj )j∈{− n2 ,..., n2 −1} de l’intervalle [− T2 , T2 ] de pas ht = Tn .
Pour tout j ∈ {− n2 , . . . , n2 − 1}, on a tj = j ht = nj T . On déduit de la relation (24) que, pour tout
j ∈ {− n2 , . . . , n2 − 1}, on a
n−1
νmax X
fˇ(tj ) ≈ Šn (tj ) = (−1)|j| fk e2iπjk/n (25)
n
k=0
où on a posé
∀k ∈ {0 . . . , n − 1} fk = f ( 2k−n
2n νmax ). (26)
Pn−1 k
2iπj n
La somme Sj (f0 , . . . , fn−1 ) = k=0 fk e s’interprète comme la transformée de Fourier discrète
(TFD) inverse de f0 , . . . , fn−1 . Schématiquement, on a donc
j
∀j ∈ {− n2 , . . . , n2 − 1} fˇ( T ) ≈ νmax (−1)|j| TFDI(f0 , . . . , fn−1 ). (27)
n
Sous matlab, la transformée de Fourier discrète inverse peut être calculée à l’aide de la commande ifft
qui exploite l’algorithme FFT pour le calcul. On est conduit à une approche calculatoire en tout point
analogue à celle permettant le calcul de la transformée de Fourier :
— créer la suite finie F de valeurs f ( 2k−n
2n νmax ) où l’entier k varie dans {0, . . . , n − 1} ;
— calculer la transformée de Fourier discrète inverse F̌ de la suite finie F par la méthode FFT (sous
matlab, ce calcul est effectué par la commande ifft) ;
— symétriser les valeurs de la seconde partie du tableau (cela peut être réalisé sous matlab par la
commande fftshift) ;
— multiplier chacune des valeurs du tableau obtenu par νmax n (−1)
j−1
où j ∈ {1, . . . , n} désigne la
position de l’élément dans le tableau.
On dispose alors d’un tableau de valeurs correspondant à des valeurs approchées de fˇ(tj ) où tj = νmax j
n n
pour j = − 2 , . . . , 2 − 1.
Le programme suivant effectue le calcul de la transformée de Fourier inverse d’une fonction (ici une
fonction de Gauss) par cette approche.
1 % fonction considérée
a=10;
f=@(nu) exp(-a*nu.^2);
% TF exacte
5 itfexa=@(t) sqrt(pi/a).*exp(-(pi*t).^2./a);
% paramètres de calcul
Nux=10; % largueur de la fenetre fréquentielle
n=2^8; % nombre d’intervalles de discretisation temporelle
h=Nux/n; % pas de discretisation temporelle
10 nu=-0.5*Nux+(0:n-1)*h; % noeuds de discretisation temporelle
t=-n/(2*Nux)+[0:n-1]*(1/Nux); % discrétisation de la fenetre spectrale
% Calcul de la TF INVERSE de f
itf=Nux*(-1).^(0:n-1).*fftshift(ifft(f(nu)));
% Représentation graphique des résultats
15 figure
subplot(2,1,1); plot(nu,f(nu),’-g’, ’Linewidth’,3);
xlabel(’Fréquence’) title(’Fonction considérée’);
subplot(2,1,2); plot(t,abs(itf),’-b’, ’Linewidth’,3);
hold on, plot(t,abs(itfexa(t)),’-r’,’Linewidth’, 3);
20 legend(’Solution calculée’, ’solution exacte’);
xlabel(’Temps’)
xlim([min(t),max(t)])
title(’Module de la transformée de Fourier Inverse’);
% calcul de l’erreur
25 err=norm(itf-itfexa(t))/norm(itfexa(t));
disp([’Erreur relative en % = ’,num2str(100*err)]);
posx=xlim; posy=ylim;
text(posx(1),0.9*posy(2),[’Erreur relative = ’,num2str(100*err,3),’ %’]);
On obtient bien évidement la même représentation graphique que celle obtenue avec la première approche.
Il est assez courant que l’on soit amené à effectuer successivement une transformée de Fourier et une
transformée de Fourier inverse. Il est dans ce cas possible de diminuer un peu les calculs à effectuer
lorsque les fenêtres temporelle et spectrale restent inchangées et que l’on n’a pas besoin d’exploiter les
résultats des étapes intermédiaires du calcul. En effet, lors du calcul d’une transformée de Fourier, on est
amené à multiplier le tableau des valeurs issu du calcul de transformée de Fourier discrète par Tn (−1)|j| .
Ce résultat subit en général un traitement opératoire et on est ensuite amené à calculer la transformée
de Fourier inverse de cette nouvelle quantité correspondant à l’approximation d’une certaine fonction
dans le domaine spectral. Pour ce faire, on est amené à multiplier le tableau des valeurs issu du calcul de
transformée de Fourier discrète inverse par νmax (−1)|j| . Comme νmax et T sont liés par la relation de
Nyquist νmax = Tn et que (−1)|j| × (−1)|j| = 1, le produit des deux termes vaut 1. On peut donc gagner
en temps de calcul en omettant d’apporter ces « corrections » aux résultats du calcul des transformée de
Fourier et transformée de Fourier inverse.
Cette situation se produit par exemple lors de la résolution de certaines équations aux dérivées partielles.
Considérons à titre d’illustration le problème suivant correspondant à l’équation de Schrödinger linéaire
intervenant dans la modélisation de certains phénomènes optiques [5] :
iβ2 ∂ 2
∂ 1
U (z, t) + U (z, t) + αU (z, t) = 0 ∀z ∈ [0, L] ∀t ∈ R
∂z 2 ∂t2 2 (28)
U (0, t) = ϕ(t) ∀t ∈ R
∂ U
[ (z)(ν) = d(ν) U [(z)(ν) ∀z ∈ [0, L] ∀z ∈ [0, L] ∀ν ∈ R
∂z (29)
[
U (0)(ν) = ϕ(ν)
b ∀ν ∈ R
où on a noté
αint
d(ν) = − + 2iπ 2 β2 ν 2 . (30)
2
La solution du problème de Cauchy (29) constitué d’une équation différentielle linéaire du premier ordre
est
[
U (z)(ν) = ϕ(ν)
b ed(ν)z . (31)
On en déduit que
U (z, t) = F −1 U (z) (t) = F −1 ν 7→ ϕ(ν) edω (ν)z
[ b (32)
Lorsque la fonction ϕ est telle que sa transformée de Fourier est connue et que la transformée de Fourier
inverse dans (32) peut être calculée explicitement, on dispose de l’expression exacte de la solution du
problème (28).
Supposons par exemple que ϕ corresponde à un pulse Gaussien
2
p
ϕ(t) = P0 exp − 21 (t/T0 )
et d’après (32)
p
U (z, t) = T0 2πP0 exp(− 12 αz) F −1 ν 7→ exp 2π 2 (iβ2 z − T02 ) ν 2 (t)
s
P0 (t/T0 )2
= 1 exp − 12 αz − . (34)
1− iβ z
T02 2 2(1 − iβ
T2
2
z)
0
Dans le cas contraire, on peut calculer numériquement la solution en calculant la transformée de Fourier
de ϕ et la transformée de Fourier inverse dans (32) comme cela a été détaillé dans le document. Comme
mentionné ci-dessus, il est inutile dans ce cas de faire intervenir dans le calcul les termes Tn (−1)|j| et
νmax (−1)|j| car ceux-ci se compensent in fine. Le programme suivant illustre le propos.
1 % Données physiques
P0=1; % puissance (W)
T0=5.673; % largeur à mi-hauteur (ps)
alpha=0.5; % coef. de perte (km^-1)
5 beta2=-19.83; % dispersion chromatique (ps^2 km^-1)
L=1; % longueur de l’intervalle considéré en espace
% Paramètres de la simulation
T=100; % Largeur de la fen^etre temporelle
n=2^10; % nombre de noeuds de discrétisation
10 dt=T/n; % pas de temps (ps)
dnu=1/(n*T); % pas en fréquence (THz)
t=-T/2+(0:n-1)*dt; % noeuds de discrétisation en temps (ps)
nu=[(0:n/2-1),(-n/2:-1)]/T; % noeuds de discrétisation en fréquence[Thz]
% Calcul de la solution approchée
15 U0=sqrt(P0)*exp(-0.5*(t/T0).^2);
tfU=fft(U0);
dcoef=-0.5*alpha+1i*2*pi^2*beta2*nu.^2;
U = ifft(exp(dcoef*L).*tfU);
% Solution exacte
20 Uex=T0*sqrt(P0/(T0^2-1i*beta2*L))*exp(-0.5*alpha*L- 0.5*t.^2./(T0^2-1i*beta2*L));
% Affichage des résultats
plot(t,U0,’-g’,’LineWidth’,2);
hold on; plot(t,U,’-b’,’LineWidth’,2);
hold on; plot(t,Uex,’-r’);
25 legend(’Terme source’,’Solution calculée’,’Solution exacte’);
disp([’Erreur quadratique relative en % = ’,num2str(100*norm(U-Uex)/norm(Uex))]);
Références bibliographiques
[1] F. Abramovici. The accurate calculation of Fourier integrals by the fast Fourier transform technique. Journal of
Computational Physics, 11(1) :28 – 37, 1973.
[2] F. Abramovici. The accuracy of finite Fourier transforms. Journal of Computational Physics, 17(4) :446 – 449, 1975.
[3] W. Appel. Mathématiques pour la physique et les physiciens. H& K ed., 4e edition, 2008.
[4] L. Auslander and F.A. Grunbaum. The Fourier transform and the discrete Fourier transform. Inverse Problems,
5(2) :149, 1989.
[5] S. Balac and A. Fernandez. SPIP : A computer program implementing the Interaction Picture method for simulation
of light-wave propagation in optical fibre. Computer Physics Communications, 199 :139–152, 2015.
[6] N.S. Barnett, S.S. Dragomir, and G. Hanna. Error estimates for approximating the Fourier transform of functions of
bounded variation. J. KSIAM, 8(1) :31–40, 2004.
[7] R.I. Becker and N. Morrison. The errors in fft estimation of the Fourier transform. IEEE Transactions on Signal
Processing, 44(8) :2073–2077, 1996.
[8] J.W. Cooley and J.W Tukey. An algorithm for the machine calculation of complex Fourier series. Math. Comp.,
19 :297–301, 1965.
[9] M. Crouzeix and A.L. Mignot. Analyse numérique des équations différentielles. Collection mathématiques appliquées
pour la maîtrise. Masson, 1992.
[10] J.P. Demailly. Analyse numérique et équations différentielles. Collection Grenoble sciences. EDP Sciences, 2006.
[11] C.L. Epstein. How well does the finite Fourier transform approximate the Fourier transform ? Communications on
Pure and Applied Mathematics, 58(10) :1421–1435, 2005.
[12] M. Frigo and S.G. Johnson. The design and implementation of FFTW3. Proceedings of the IEEE, 93(2) :216–231,
2005. Special issue on “Program Generation, Optimization, and Platform Adaptation”.
[13] C. Gasquet and P. Witomski. Analyse de Fourier et applications. Dunod, Paris, 1994.
[14] A. Iserles and S. Norsett. On quadrature methods for highly oscillatory integrals and their implementation. BIT
Numerical Mathematics, 44 :755–772, 2004.
[15] A. Iserles and S. Norsett. Efficient quadrature of highly oscillatory integrals using derivatives. Proc. R. Soc. A,
461 :1383–1399, 2005.
[16] F. Mandel and R.J. Bearman. Some remarks on the numerical evaluation of Fourier and Fourier-bessel transforms.
Journal of Computational Physics, 7(3) :637 – 645, 1971.
[17] K.C. Ng. On the accuracy of numerical Fourier transforms. Journal of Computational Physics, 16(4) :396 – 400, 1974.
[18] W.H. Press. Numerical Recipes in C : The Art of Scientific Computing. Number Second edition. Cambridge University
Press, 1992.
[19] A.M. Quarteroni, J.F. Gerbeau, R. Sacco, and F. Saleri. Méthodes numériques pour le calcul scientifique : Programmes
en MATLAB. Collection IRIS. Springer Paris, 2000.
[20] K.R. Rao, D.N. Kim, and J.J. Hwang. Fast Fourier Transform - Algorithms and Applications. Signals and
Communication Technology. Springer Netherlands, 2011.
[21] J. C. Rasaiah and H. L. Friedman. Integral Equation Methods in the Computation of Equilibrium Properties of Ionic
Solutions. The Journal of Chemical Physics, 48 :2742–2752, March 1968.
[22] P. Struillou. Analyse de Fourier : Théorie et applications pour l’ingénieur et le physicien, Cours et exercices corrigés.
Technosup (Paris). Ellipses, 2012.
[23] C. Van Loan. Computational Frameworks for the Fast Fourier Transform. Frontiers in Applied Mathematics. Society
for Industrial and Applied Mathematics, 1992.
Le programme matlab fourni ici met en œuvre l’algorithme FFT dans sa version basique présentée dans
ce document. Une mise en œuvre plus raffinée de l’algorithme FFT est accessible via la commande fft
de matlab.
1 function g=fftbas(f)
%
% Calcul de la transformee de Fourier discrete du vecteur f en ayant recours
% a l’algorithme FFT
5 %
% fftbas utilise 2 fonctions externes : ordonne.m et S2.m
%
15 % Construction du tableau des indices initiaux des elements de f ranges dans l’ordre adequat
tabi=0:2^m-1; % tableau des indices ranges dans l’ordre croissant
for k=m:-1:2
tabi=ordonne(tabi,2^k); % on re-ordonne les indices en les re-arrangeant par paquets
end
20 % initialisation de la FFT
for j=0:1
for i=1:2^(m-1)
S(j+ind,i) = S2(j,[f(tabi(2*i-1)+ind),f(tabi(2*i)+ind)]);
end
25 end
% On applique les etapes successives de l’algorithme de FFT
T=[];
for k=2:m
clear T % par facilite de programmation; on pourrait utiliser un vecteur ligne
30 % dont la taille serait fixe au lieu d’une matrice dont le nombre de lignes
% et colonnes varie a chaque etape
for j=0:2^(k-1)-1
for l=1:2^(m-k)
T(j+ind,l) = S(j+ind,2*l-1)+exp(-2*I*pi*j/2^k)*S(j+ind,2*l);
35 T(j+2^(k-1)+ind,l) = S(j+ind,2*l-1)-exp(-2*I*pi*j/2^k)*S(j+ind,2*l);
end
end
clear S
S=T;
40 end
g=transpose(S(:,1)); % par coherence avec l’instruction fft de matlab
1 function T=ordonne(S,p)
% reordonne le tableau S en groupant les elements d’indices pairs
% puis impairs de S en considerant des paquets de p termes
5 n=length(S);
q=n/p; % nb de paquets successifs a considere
T=[];
for i=1:q % parcours des paquets
U=S((i-1)*p+1:i*p); % extraction du paquet
10 T=[T,U(1:2:length(U)),U(2:2:length(U))]; % reordonement du paquet
end
1 function y = S2(j,f)
% intitialisation pour la recursivite
I=sqrt(-1);
y=f(1)+exp(-I*pi*j)*f(2);