Vous êtes sur la page 1sur 18

Traveaux pratiques numériques de Méthodes pour la

Physique

ELPHP5B1

L3 Physique Fondamentale, 2019/2020

Université Paul Sabatier

(Klaus Frahm, frahm@irsamc.ups-tlse.fr, Bureau : 320 Bât. 3R1B4)


(Dominique Toublanc, dominique.toublanc@univ-tlse3.fr)

1
Modalités

Les Travaux pratiques sur ordinateur (TPO) en Méthodes pour la Physique ont lieu
sur trois séances de durée 2h40 selon l’emploi de temps. La note TPO en Méthodes
pour la Physique sera constituée des notes de deux rapports à rendre sur les Séries de
Fourier (TPO1) et La Transformée de Fourier (TPO2).
La présence régulière et assidue à toutes les séances est obligatoire et une
absence (non-justifiée) peut impliquer une déduction (si retard et/ou absence partielle)
ou annulation (si absence totale) de la note même si des rapports ont été rendus 1 .
D’ailleurs l’implication personnelle en séance, notamment la volonté et capacité aussi
d’aborder les questions de calcul analytiques des deux sujets, sera aussi notée et cette
note constituera une partie importante des notes des rapports.
Les deux sujets des TPO1 et TPO2 seront traités pendant les deux première séances.
La 3ème séance permettra d’approfondir les deux sujets et finaliser les rapports.
Il sera possible de rendre les rapports sous forme de papier ou de fichier pdf (par
exemple créé avec openoffice ou Latex où on inclut des fichiers pdf des figures produits
avec Matlab). Pour les parties des calculs analytiques on peut joindre des calculs sur
papier aux fichier pdf, inclure des scan/photos des calculs dans le pdf ou imprimer le
pdf avec des pages supplémentaires vides sur lesquelles on pourra écrire les calculs. Les
rapports peuvent être rendus en binôme mais les notes d’implication personnelle en
séance (aussi relies à la présence en séance) seront établies de manière individuelle.
Sauf mention contraire en séance les deux rapports doivent être rendus à la fin de la
3ème séance. Si toutefois les enseignants acceptent un délai supplémentaire celui-ci ne
concerne que les parties pdf et pas les parties papiers des rapports qui doivent impé-
rativement être rendus à la fin de la 3ème séance. Tout étudiant qui choisit d’envoyer
les rapports par mail (au lieu de les rendre à la fin de la 3ème séance) assume entiè-
rement le risque de tout problème technique, notamment s’il utilise une adresse mail
incorrecte (voir la 1ère page de ce document pour les adresses mail des enseignants)
ou une adresse non-ups pour son propre mail. Tout retard par rapport à la date limite
officielle implique (au moins) une réduction ou même annulation (si le retard est trop
important) de la note. Des passages obtenus par “copier-coller” d’autres rapports se-
ront fortement sanctionnés pour la note (jusqu’à l’annulation totale de la note en cas
d’absence de tout travail personnel).
Pour tout contact émail à l’enseignant (questions, envoi de rapports pdf, fichiers de pro-
grammes, de justificatifs éventuels etc.) tout étudiant doit impérativement utiliser
son compte adresse mail de l’université de type : nom_etudiant@univ-tlse3.fr.

1. Une absence injustifiée à une séance ou le fait de travailler sur une matière autre que “Méthodes
pour la Physique” implique d’office une note 0/20 pour la note de l’implication personnelle de la séance
concernée. Tout étudiant qui souhaite faire valoir dans ce contexte un travail salarié doit avoir obtenu
le statut d’étudiant salarié selon la procédure de “la charte d’étudiant(e) salarié(e)” disponible sur
le site web de l’université et il devra fournir le justificatif de ce statut ainsi des justificatifs solides sur
les horaires de son travail en début de semestre.

2
Analyse spectrale
On cherche souvent à détecter et analyser des phénomènes périodiques à partir de
données expérimentales. Par exemple, on peut vouloir calculer des cycles d’activités
solaires à partir des rayons cosmiques qui arrivent du soleil afin d’en déterminer l’in-
fluence sur le climat terrestre. C’est le but de l’analyse spectrale que l’on retrouve dans
tous les domaines de la physique et de l’ingénierie.
Dans le TPO 1 on étudie les Séries de Fourier réelles et complexes pour des fonctions
T -périodiques f (t) caractérisées par la propriété :

∀t ∈ R f (t) = f (t + T ) (1)

où T > 0 est la période.


Dans le TPO 2 on aborde la Transformée de Fourier, d’abord la variante Transformée
de Fourier discrète où les variables de temps et fréquences sont discrétisées et après
on fera le lien avec la vraie Transformée de Fourier comme elle est définie en cours et
dont on va numériquement illustrer quelques propriétés.

1 TPO 1 : Séries de Fourier de fonctions périodiques


Dans ce TPO on étudie les Séries de Fourier réelles et complexes de fonctions f (t)
T -périodique de période T > 0.

1.1 Série de Fourier réelle

1a) Compléter le programme SFreel.m pour calculer numériquement la Série de Fou-


rier réelle d’une fonction. Pour tester on peut choisir des coefficients an = 1/n ou
an = 1/n2 (si n 6= 0), a0 = 0 et bn = 0. Les sommes en n dans le programme sont
finies avec la condition n ≤ N . Choisir différentes valeurs maximales de N entre
N = 10 et N = 500 pour vérifier si oui ou non il y a convergence par point pour
tout t ∈ [0, T [ si N → ∞. Expliquer théoriquement le résultat pour les deux cas.
On peut aussi étudier les deux cas bn = 1/n ou bn = 1/n2 et an = 0.
1b) On considère la fonction T périodique définie par :

sin(ωt) si 0 ≤ t < T /2 , 2π
f (t) = , ω= (2)
0 si T /2 ≤ t < T . T

Calculer analytiquement les coefficients an (f ) et bn (f ) de la Série de Fourier réelle


de cette fonction. Modifier le programme de la question précédente pour tester si
pour des valeurs de N finies la Série de Fourier réelle correspond bien à la fonction
(2). Faire varier la valeur de N pour étudier la convergence. La période T peut
être choisie librement, par exemple T = 2π, T = 2, etc. Veiller de remplir le
programme tel qu’il soit valable pour tout T (après la valeur de T est renseignée
au début du programme).

3
RT
Calculer numériquement et/ou analytiquement l’intégrale (1/T ) 0 |f (t)|2 dt né-
cessaire pour la formule de Parseval. (Le calcul numérique est aussi prévu dans le
programme SFreel.m.) Vérifier numériquement la validité et la convergence de
la formule de Parseval.
Est-ce que la fonction f (t) est continue pour tout t ∈ R ? Vérifier si oui ou non
il y a convergence par point pour tout t ∈ [0, T [ si N → ∞.
Indication : Pour déterminer an (f ) et bn (f ) d’abord calculer pour m ∈ Z entier
quelconque les intégrales :
1 T /2
Z
Im ≡ sin(ωmt) dt ,
T 0
1 T /2
Z
Jm ≡ cos(ωmt) dt
T 0
en distinguant les deux cas m = 0 et m 6= 0 (rappel : ω = 2π/T ).
Avec I1 on peut déjà directement trouver a0 (f ). Ensuite, pour n ≥ 1, exprimer
an (f ) et bn (f ) en fonction de Im et Jm en utilisant les relations suivantes (voir
aussi le cours) :
1 
sin(α) sin(β) = cos(α − β) − cos(α + β) , (3)
2
1 
sin(α) cos(β) = sin(α + β) + sin(α − β) .
2
Il n’est pas demandé de demontrer ces relations mais on doit faire attention au
cas particulier n = 1 et préciser comment il faut choisir m en fonction de n.
On rappelle que la fonction f (t) donnée dans (2) n’est ni paire ni impaire. Donc
on ne peut pas profiter d’une simplification par symétrie !

1.2 Série de Fourier complexe

2a) On considère la fonction T -périodique de période T > 0 définie par :


f (t) = exp(a t) , t ∈ [0, T [ (4)
où a > 0 est un paramètre réel. Calculer analytiquement les coefficients cn (f ) de
la Série de Fourier complexe pour cette fonction pour a > 0 et T > 0 quelconques.
Indication : Pour simplifier les résultats des intégrales après le calcul montrer
et utiliser que : exp(inωT ) = exp(in 2π) =???.
Compléter le programme SFcomplex.m pour calculer numériquement la Série de
Fourier complexe pour |n| ≤ N où on fait varier la valeur de N (par exemple
entre 10 et 500) pour tester la convergence.
Remarque : Dans le programme Matlab on utilisera pour des raisons pratiques
la variable c0 pour c0 (f ), les deux tableaux cplus(n) pour cn (f ) si n > 0 et
cneg(n) pour c−n (f ) (aussi avec n > 0 donc “−n<0” !).

4
RT
Aussi calculer numériquement et/ou analytiquement l’intégrale (1/T ) 0 |f (t)|2 dt
nécessaire pour la formule de Parseval. (Le calcul numérique est aussi prévu dans
le programme SFcomplex.m.) Vérifier numériquement la validité et la convergence
de la formule de Parseval.
Est-ce que la fonction f (t) est continue pour tout t ∈ R ? Qu’observez vous
concernant la convergence de la Série de Fourier pour des points où la fonction
f (t) n’est éventuellement pas continue ?
2b) Refaire la question précédente pour la fonction T -périodique :

g(t) = t , t ∈ [0, T [ . (5)

Indication : Si on a réussi le calcul analytique de cn (f ) de la question précédente


on peut éviter le calcul des intégrales et facilement obtenir cn (g) en utilisant la
limite :
1  1 
g(t) = lim f (t) − 1 = lim exp(a t) − 1 (6)
a→0 a a→0 a

en utilisant le développement limité :

1 2
exp(z) = 1 + z + z + ... , si |z|  1 . (7)
2
Pour ceci il faut aussi trouver et utiliser la Série de Fourier complexe de la fonction
“un” donnée par : t 7→ 1.

1.3 Rappel cours : Séries de Fourier


Soit f (t) une fonction périodique de période T > 0 et dont |f (t)|2 est sommable sur
l’intervalle [0, T [. Soit ω ≡ 2π/T la pulsation associée à T .
La Série de Fourier complexe de f (t) est donnée par :
∞ Z T
X 1
f (t) = cn (f ) eiωnt
, cn (f ) = e−iωnt f (t) dt , n∈Z (8)
n=−∞
T 0

et la formule de Parseval complexe associée est :


Z T ∞
1 2
X
|f (t)| dt = |cn (f )|2 . (9)
T 0 n=−∞

La Série de Fourier réelle de f (t) est donnée par :



X ∞
X
f (t) = an (f ) cos(ωnt) + bn (f ) sin(ωnt) (10)
n=0 n=1

5
où les coefficients an (f ) et bn (f ) peuvent être obtenus par : ∀n ∈ N∗
Z T Z T Z T
1 2 2
a0 = f (t) dt , an = cos(ωnt) f (t) dt , bn = sin(ωnt) f (t) dt . (11)
T 0 T 0 T 0

La formule de Parseval réelle associée est :



1 T
Z
1X
|f (t)|2 dt = |a0 (f )|2 + |an (f )|2 + |bn (f )|2

. (12)
T 0 2 n=1

Remarques :
• Dans les calculs numériques on choisit une valeur N ∼ 10 − 500 et on évalue
les sommes pour |n| ≤ N . Après on peut étudier la qualité de la convergence en
fonction de la valeur de N choisie.
• Concernant l’intégrale d’une fonction g(t) T -périodique sur une période on peut
remarquer :
Z T Z T −a Z T
g(t) dt = g(t) dt + g(t) dt = (13)
0 0 T −a
Z T −a Z 0 Z T −a
= g(t) dt + g(t + T ) dt = g(t) dt
0 −a | {z } −a
= g(t)
où a ∈]0; T [ est quelconque. Par conséquent on peut dans les expressions (8) de
cn (f ) ou (11) de an (f ) et bn (f ) utiliser une intégration entre −T /2 et T /2 ce
qui est parfois plus commode mais on doit être vigilant d’appliquer l’expression
correcte de la fonction f (t) pour l’intervalle modifié. Par exemple si f (t) = t
pour t ∈ [0, T [ et complétée de manière périodique si t 6∈ [0, T [ alors pour
t ∈ [−T /2, 0[ on a f (t) = t + T ( 6= t) car c’est : t + T ∈ [0, T [.
• Pour calculer numériquement des intégrales sur une période on peut utiliser
l’expression :
Z T K−1
X
g(t) dt ≈ ∆t g(k ∆t) , ∆t = T /K , si K  1. (14)
0 k=0

1.4 Programmes
%%% Prwogramm SFreel.m
%%%
%%% Calcul de la Serie de Fourier reelle d’une fonction
%%% periodique de periode T

clear all;

6
initiales=’?????????’; % votre nom

% periode
T = ????;

% pulsation
omega = ????;

% nombre de coefficients
N=20;

% nombre de points en t pour le plot


K=400;

% nombre de periodes a tracer


np=1;

dt=np*T/K; % delta t pour le plot

%%% remplir les coefficients: a(n) et b(n)


%%% Attention: pour a(0) on utilisera a0 pour des raisons pratiques

%% utiliser "a0" au lieu de "a(0)" pour des raisons pratiques


a0=????;

for n=1:N;
%% ruse: mod(n,2) donne "1" pour n impair et "0" pour n pair
%% on peut aussi utiliser (-1)^n selon les formules a remplir

a(n)=????;
b(n)=????;
end

% plot pour np periodes


for k=0:K;
t(k+1)=k*dt; % tableau pour les temps
s=0;

s=s+a0;
for n=1:N;
s=s+a(n)*cos(???);
s=s+b(n)*???;
end
f(k+1)=s;
end

7
%%% fonction theorique si disponible
%%% si on ne remplit pas f_th le code suivant pour les plots etc.
%%% fonctionnera quand meme mais sans la courbe pour f_th

%for k=0:K;
% if(mod(t(k+1),T)<T/2)
% f_th(k+1)=????;
% else
% f_th(k+1)=????;
% end
%end

subplot(211);
if(exist(’f_th’)==0)
plot(t,f);
ylabel(’f(t)’);
else
plot(t,f,t,f_th);
ylabel(’f(t), f_{th}(t)’);
endif
title(initiales);
xlabel(’t’);

%%% somme de Parseval


subplot(212)

somme=a0*a0;
s_pars(1)=somme;
index(1)=0;
for n=1:N;
%% ajouter les contributions pour a(n) et b(n)
somme=somme + ???? ;

%% on stocke les valeurs des sommes partielles dans un tableau


%% pour tracer plus tard la convergence de la somme
s_pars(n+1)=somme;
%% un tableau d’index pour le plot plus tard
index(n+1)=n;
end

if(exist(’f_th’)==0)

8
plot(index,s_pars);
ylabel(’s_{pars}’);
else
% calcul numerique de l’integrale theorique
s=0;
for k=0:K/np-1
s=s + ???;
end
s=s*dt/T;

% on peut aussi remplir une formule analytique pour l’integrale


% si on la connait
% s = ????;

% remplir un tableau s_th pour le plot


s_th(1)=s;
for n=1:N;
s_th(n+1)=s;
end
plot(index,s_pars,index,s_th);
ylabel(’s_{pars}, s_{th}’);
endif
title(’somme de Parseval’);
xlabel(’n’);

*************

%%% Programm SFcomplex.m


%%%
%%% Calcul de la Serie de Fourier complexe d’une fonction
%%% periodique de periode T

clear all;

initiales=’?????????’; % votre nom

% parametre a pour la fonction f(t)


a=1;

9
% periode T
T = ????;

% pulsation
omega = ????;

% nombre de coefficients
N=20;

% nombre de points en t pour le plot


K=400;

% nombre de periodes a tracer


np=1;

dt=np*T/K; % delta t pour le plot

%%% remplir les coefficients: c(n) entre -N et +N


%%% Attention: pour c(0) on utilisera c0
%%% pour c(n) on utilisera le tableau cplus(n) (si n>=1)
%%% pour c(-n) on utilisera le tableau cneg(n) (si n>=1)

%% utiliser "c0" au lieu de "c(0)" pour des raisons pratiques


c0=????;

for n=1:N;
%% ruse: avec mod(n,2) on "1" pour n impair et "0" pour n pair
%% on peut aussi utiliser (-1)^n selon les formules a remplire

%%% c(n) = cplus(n)


cplus(n)=????;

%%% c(-n) = cneg(n)


%%% remarque: si f(t) est reelle on peut aussi mettre:
%%% cneg(n)=conj(cplus(n));
cneg(n)=????;
end

% calcul de la fonction f(t) de la serie de Fourier


for k=0:K;
t(k+1)=k*dt; % tableau pour les temps
s=c0;
for n=1:N;
s=s+cplus(n)*exp(???);
s=s+cneg(n)*???;

10
end
f(k+1)=s;
end

%%% fonction theorique si disponible


%%% si on ne remplit pas f_th le code suivant pour les plots etc.
%%% fonctionnera quand meme mais sans la courbe pour f_th

%for k=0:K;
% %% tmod sera le temps modulo une periode
% tmod=mod(t(k+1),T);
% %% on doit utiliser tmod au lieu de t(k+1) si np>1
% f_th(k+1)=????;
%end

subplot(211);
if(exist(’f_th’)==0)
plot(t,f);
ylabel(’f(t)’);
else
plot(t,f,t,f_th);
ylabel(’f(t), f_{th}(t)’);
endif
title(initiales);
xlabel(’t’);

%%% somme de Parseval


subplot(212)

somme=conj(c0)*c0;
s_pars(1)=somme;
index(1)=0;
for n=1:N;
%% ajouter les contributions pour cplus(n) et cneg(n)
somme=somme + ????;

%% on stocke les valeurs des sommes partielles dans un tableau


%% pour tracer plus tard la convergence de la somme
s_pars(n+1)=somme;

%% un tableau d’index pour le plot plus tard


index(n+1)=n;

11
end

if(exist(’f_th’)==0)
plot(index,s_pars);
ylabel(’s_{pars}’);
else
% calcul numerique de l’integrale theorique
s=0;
for k=0:K/np-1
s=s + ???;
end
s=s*dt/T;

% on peut aussi remplir une formule analytique pour l’integrale


% si on la connait
% s = ????;

% remplir un tableau s_th pour le plot


s_th(1)=s;
for n=1:N;
s_th(n+1)=s;
end
plot(index,s_pars,index,s_th);
ylabel(’s_{pars}, s_{th}’);
endif
title(’somme de Parseval’);
xlabel(’n’);

12
2 TPO 2 : Analyse Spectrale - Transformée de Fourier

Comme dans le TPO 1 on considère une fonction T -périodique g(t) de période T > 0
et avec g(t) = g(t + T ) pour tout t ∈ R.
En pratique, on possède souvent seulement un nombre fini N d’échantillons de mesures
également espacées dans le temps et donnés par tn = n Te , où n = 0, . . . , N − 1 et
Te ≡ T /N est la période d’échantillonnage. Donc on connaît un vecteur yn donné par :
yn ≡ g(tn ) = g(n Te ) ∀n = 0, 1, . . . , N − 1 , (15)
qui représente la fonction g(t) de manière approximative. En principe on peut pour yn
aussi admettre des valeurs n ∈ Z quelconques en utilisant la propriété yn+N = yn qui
est due à la périodicité de la fonction g(t). Cependant pour caractériser ce vecteur de
manière unique il suffit de connaître yn pour n = 0, 1, . . . , N − 1.
Avec ce vecteur on définie la Transformée de Fourier Discrète (TFD) par :
N
X −1
Ym = C N yn e−2πimn/N ∀ m = 0, 1, . . . , N − 1 . (16)
n=0

Ici CN représente une constante positive. Dans un premier temps on choisit simplement
CN ≡ 1 mais plus tard quand on souhaite établir le lien avec la vraie Transformée de
Fourier définie par une intégrale (selon cours et TD) on va choisir une autre valeur de
CN .
À chaque point Ym de la transformée on associe une fréquence discrète :
m
fm = = m f1 m = 0, 1, . . . , N − 1 (17)
Te N
où f1 est la fréquence non nulle la plus basse donnée par f1 = 1/(Te N ) = 1/T . Donc
on peut récrire (16) comme :
N
X −1
ĝ(fm ) ≡ Ym = CN g(tn ) e−2πifm tn . (18)
n=0

La TFD de y est elle-même discrète (de période d’échantillonnage 1/T ) et périodique


(de période 1/Te = fe ) comme illustré ci-dessous. De ce fait, on peut la représenter sur
n’importe quel intervalle de durée 1/Te , par exemple sur [0, fe [ ou [−fe /2, fe /2[.

Signal discret pèriodique Transformée de Fourier discrète

y(n) Y(m)

0 1 N-1 0 1 N-1
Te 1/T

T 1/Te

13
La Transformée de Fourier Discrète inverse est donnée par :
N −1
1 X
yn = Ym e2πimn/N ∀ n = 0, 1, . . . , N − 1 . (19)
N CN m=0

La normalisation CN = 1 n’est pas universelle. En particulier, dans


√ les travaux mathé-
√ préfère la normalisation symétrique avec CN = 1/ N ce qui donne un
matiques on
facteur 1/ N dans les deux formules (16) et (19).

2.1 Propriétés basiques de la TFD


Il faut faire attention au fait que les indices des vecteurs MATLAB commencent avec 1
mais que m et n commencent à 0. Faire également attention au fait que la transformée
est un vecteur de nombres complexes. On préfère parfois représenter le spectre d’énergie
défini par :
Sm = |Ym |2 = Ym Ym∗ (20)
où Yk∗ est la complexe conjuguée de Yk (On utilisera en MATLAB la fonction conj).
1a) Compléter le programme tfd.m pour calculer TFD Ym et le spectre d’énergie Sm .
Comme première application on choisit pour g(t) un cosinus de fréquence 0.2 Hz
échantillonné à 1 Hz et de durée 50 secondes. Naturellement on s’attend à voir une
seule fréquence dans la transformée. Pour mieux comprendre le résultat on pourra
représenter la TFD sur l’intervalle [−fe /2, fe /2[ et se souvenir que le cosinus est
une somme d’exponentielles complexes. Faire de même pour un sinus.
1b) Changer la fréquence à une valeur telle que f 6= fm ∀m ; f < 0,5. Conclusion ?
1c) Théorème de Nyquist-Shannon :
La fréquence d’échantillonnage fe = 1/T d’un signal périodique doit être égale
ou supérieure au double de la fréquence maximale contenue dans ce signal.
Ce critère permet de convertir un signal d’une forme analogique à une forme
numérique. Un signal est considéré comme une somme de sinusoïdes. A faible
fréquence d’échantillonnage on voit apparaître des effets de repliement (en anglais
aliasing)
Pour illustrer ce théorème, on calculera avec le programme tfd.m la TFD de la
fonction :
(t − T /2)2
 
g(t) = exp − sin(2πf t) (21)
2(T /3)2
où pour la période T et la période d’échantillonnage Te on peut garder les mêmes
valeurs que dans les questions précédentes. Rappeler la valeur de fe dans ce cas.
De plus f est une fréquence pour la laquelle on choisit différentes valeurs, par
exemple f = 0.2, 0.4, 0.6, 0.8 (en Hz). À quelle type de signal la fonction g(t)
correspond-elle et que signifie le facteur exponentiel dans (21) ?
Pour quelle valeurs fm la TFD de g(t) est maximale ? Que se passe-t-il si f >
fe /2 ? Pourquoi peut-on parler de repliement ?

14
1d) Exercice analytique : Démontrer la formule (19) de la Transformée de Fourier
Discrète inverse en utilisant l’équation (16). (On pourra poser CN = 1 pour
simplifier le calcul.)
Indication : Rappeler et justifier l’expression pour la série géométrique finie :
N
X −1
SN (q) ≡ qn = ?
n=0

et notamment distinguer les deux cas q = 1 et q 6= 1. En déduire que :


N −1 
1 X 2πim(n1 −n2 )/N 1 si j = k
e = δn1 n2 ∀ n1 , n2 = 0, 1, . . . , N −1 , δjk ≡
N m=0 0 si j 6= k

où δjk est le symbole de Kronecker.

2.2 Lien avec la vraie Transformée de Fourier


La vraie Transformée de Fourier d’une fonction g(t) ∈ L1 (R) est donnée 2 par :
Z ∞
ĝ(ω) = g(t) e−iωt dt . (22)
−∞

Pour évaluer numériquement cette intégrale on suppose que la fonction g(t) → 0 is


t → ±∞. Pour être plus précis soit T > 0 tel que g(t) ≈ 0 si |t| > T /2. De plus on
choisit ω ≡ ωm ≡ 2πfm = 2πm/(N Te ) où Te est la période d’échantillonnage comme
ci-dessus et m = 0, . . . , N − 1. On suppose aussi que N = T /Te  1. Dans ce cas on
peut récrire (22) comme :
Z T /2 N/2−1
X
−iωm t
ĝ(ωm ) ≈ g(t) e dt ≈ Te g(n Te ) e−iωm n Te . (23)
−T /2 n=−N/2

Ici on a remplacé l’intégrale par une somme en identifiant dt → Te car dt = tn+1 − tn =


(n + 1)Te − n Te = Te est l’écart entre deux temps discrétisés. On introduit le vecteur
yn par : (
g(n
 Te ) si 0 ≤ n < N/2
yn ≡ . (24)

g (n − N ) Te si N/2 ≤ n < N
Dans ce cas on obtient de (23) :
N
X −1
Ym ≡ ĝ(ωm ) = Te yn e−2πinm/N (25)
n=0

ce qui est exactement la TFD (16) avec le choix CN ≡ Te . Donc la TFD permet
d’obtenir d’approximativement la vraie TF si la fonction g(t) décroît assez rapidement
et si on choisit T > 0 assez grande. Les temps négatives t ∈ [−T /2, 0[ correspondent à
t + T ∈ [T /2, T [ selon (24).
2. On note qu’en cours et TD on a plutôt utilisé des variables x à la place de t et k à la place de
ω. Ici on préfère t et ω = 2πf pour être cohérent avec les notations ci-dessus.

15
2a) Calculer avec le programme tfd.m la transformée de Fourier (discrète) d’autres
2 2
fonctions comme une gaussienne g(t) = e−t /(2a ) , une lorentzienne g(t) = a/(a2 +
t2 ) et une exponentielle g(t) = e−|t|/a . Pour tous ces trois cas on appliquera ces
expressions de g(t) pour 0 ≤ t < T /2 et g(t − T ) pour T /2 ≤ t < T . Choisir pour
a différentes valeurs entre Te et T /2. Quelle est la signification de ce paramètre ?
Comparer les résultats numériques avec les résultats analytiques de ces fonctions
obtenus en TD et cours (rappel : ωm correspond à 2πfm ).
2b) Rappeler les règles du cours pour obtenir la TF de dg(t)/dt, t g(t), g(t − t0 ),
g(t) eit k0 à partir de la TF de g(t). Vérifier certaines de ces règles numériquement

avec une fonction g(t) assez simple (par exemple la gaussienne avec : a ≡ T ).
Cet exercice est assez libre et vous pouvez aussi choisir différentes valeurs de T
et Te pour obtenir une bonne précision de la TFD.
Remarque : Le calcul manuel des sommes pour la TFD dans le programme tfd.m
nécessite N 2 opérations et le calcul devient assez long si on augmente N = T /Te
trop. Il existe un algorithme rusé (mais assez compliqué) avec N log(N ) opérations
appelé Transformée de Fourier rapide qui est disponible en Matlab (ou otave) par les
fonctions fft ou fftshift. Si on souhaite accélérer le programme on peut utiliser ces
fonctions pour calculer la TFD (faire “help fft” ou “help fftshift” pour connaître
la syntaxe précise de ces fonctions). Cependant pour un travail normal en TPO il n’est
pas nécessaire de le faire et la méthode lente dans tfd.m suffira.

2.3 Programmes
% Programme tfd.m
%
% Calcul de la transformee de Fourier discrete
% Licence de Physique
% ----------------------------------------------------------

%%clear all; clg


clear all;

% Initialisation (a completer)
% -----------------------------

initiales=’?????????’

T = ? ; % duree totale du signal (T)


freq = ? ; % Frequence du cosinus/sinus
Te = ? ; % periode d’echantillonnage
fe = 1/Te; % Frequence d’echantillonage
N = 2*ceil(T/Te/2); % Nombre pair de points
C_N=1 ; % constante globale

16
% calcul de la fonction
% ----------------------

for n = 0:N-1;
t(n+1) = n*Te ;
tt=t(n+1);
%%% partie a activer pour les exos 2a) et 2b)
% if(tt>=T/2)
% tt=tt-T;
% endif
%% ici utiliser la variable "tt" pour le temps
y(n+1) = ? ;
end

% Calcul de la tranformee de Fourier


% -----------------------------------

for m=0:N-1
somme = 0;
for n=0:N-1
somme = somme + ? ;
end

Y(m+1) = ? ; % Transformee de Fourier Discrete


Se(m+1) = ? ; % Spectre d’energie
end

% Construction du vecteur des frequences (a completer)


% ----------------------------------------------------

fmin= 0;

for m=0:N-1
fk(m+1) = ?;
end

f=fmin+fk;

% Lors du passage de [0,fe] \‘a [-fe/2,fe/2] enlever les commentaires


% Y = [Y(N/2+1:N) Y(1:N/2)];
% Se = [Se(N/2+1:N) Se(1:N/2)];

% Partie graphique
% ----------------

17
figure(1)
subplot(211)
plot(t,y);
title([’Signal- ’, initiales]);
ylabel(’Amplitude’);
xlabel(’Temps’)
subplot(212)
plot(f,Se);grid
title(’Spectre d’’energie’)
xlabel(’Frequence’)

% ----------------------------

figure(2)
subplot(211)

plot(f,real(Y));grid
title([’Partie reelle ’, initiales]);
ylabel(’T.F.D.’)
xlabel(’Frequence’)
subplot(212)
plot(f,imag(Y));grid
title(’Partie Imaginaire’)
ylabel(’T.F.D.’)
xlabel(’Frequence’)

18