Soit la fonction -périodique définie sur par
Vu qu’il s’agit d’une fonction paire, les coefficients de Fourier seront nuls.
On a
si et .
D’après le théorème de Dirichlet la série de Fourier converge simplement vers la régularisée de .
C’est à dire
si .
Par contre la convergence ne peut pas etre uniforme sur car sinon la limite serait une fonction continue.
Donc il existe un tel que pour tout il existe et tel que .
Sur les images suivants on voit la fonction en rouge et les sommes partielles de rangs 1, 3, 7, 19, 49 et 70 de la série de Fourier en bleu. On peut observer le comportement décrit ci-dessus.
De plus, une fois qu’on voit les images, il semble que
Ces deux observations expérimentales peuvent être prouvées rigoureusement (ce qu’on ne fera pas ici).
Exercice 1
a) Écrire un script, qui produira des images comme celui ci-dessus.
Indication : les commandes suivantes seront utiles: linspace
, ones
, clf
, subplot
, plot
, xgrid
(écrire par exemple help linspace
pour voir leur descriptif).
Le script commencera comme suit :
t=linspace(-%pi,%pi,2000);
sq=[zeros(1,500),ones(1,1000),zeros(1,500)];
N=[1,3,7,19,49,70];
clf();
b) Faire le même pour la fonction sur
c) Et pour la fonction sur .
Maintenant, on va essayer d’écrire un script qui va faire les calculs automatiquement pour toute fonction donnée.
D’abord il faut s’expliquer comment on peut calculer la transformée de Fourier d’une fonction quelconque dans SciLab. La transformée de Fourier discrète est idéale pour ce but.
Définition Soit . Si alors
s’appelle la transformée de Fourier discrète de (TFD).
Il est clair que cette suite est -periodique (c’est à dire pour tout ) et on peut donc considérer que .
Dans SciLab la TFD de se obtient en utilisant fft(f,-1)
.
Il faut faire attention aux indices car si x=fft(f,-1)
alors et .
Faisons un exemple :
S=[zeros(1,500),ones(1,1000),zeros(1,500)];
y=fft(S);
clf()
subplot(1,3,1);
plot(S,'r','LineWidth',2);
subplot(1,3,2);
plot(real(y),'b','LineWidth',2);
subplot(1,3,3);
plot(imag(y),'b','LineWidth',1);
Proposition L’application est bijective.
Sa réciproque est
Dans SciLab la TFD inverse de se obtient en utilisant fft(f,1)
.
Attention, dans le help fft
il y a un erreur dans la description mathématique de la fft(f,1)
(oubli de diviser par ).
Mais pour notre but nous avons besoin de sommes partielles de la série de Fourier.
Traitons pour l’instant les coefficients de comme les véritables coefficients de Fourier.
Dans ce cas les sommes partielles seront:
où on a utilisé le fait que est -periodique.
Exercice 2
Finir d’écrire le script suivant dans le but de calculer et afficher les sommes partielles de la série de Fourier de la fonction S
ci-dessous.
t=1:2000;//linspace(-%pi,%pi,2000);
S=[zeros(1,500),ones(1,1000),zeros(1,500)];
y=fft(S);
N=[1,3,7,19,49,999];
clf();
Ce qu’on voit est qu’on arrive reproduire le phénomène de Gibbs pour les petites valeurs de tandis qu’il disparaît pour les grandes valeurs proches de .
Ceci ne devrait pas être une grande surprise car nous avons déjà dit que est bijective, donc si on utilise tous les coefficients on peut récupérer la suite complètement.
Dans la première partie de ce TP nous avons manuellement calculées les coefficients de Fourier de la véritable fonction (supposée -periodique), ici nous avons accès seulement à un nombre fini de valeurs de cette fonction.
Il se trouve que les coefficients sont seulement une approximation (à une constante multiplicative près) des coefficients de Fourier . En effet, on a
C’est l’approximation par une somme de Riemann. On voit qu’à fixé, elle n’est pas précise pour grandes valeurs de (car, par exemple, est -periodique et ) .
Remarque La fonction fft
de SciLab utilise pour trouver la TFD de un algorithme appelé la transformé de Fourier rapide.
Cet algorithme se base (dans le cas ) sur une décomposition dyadique du produit matriciel caché dans la définition de .
Il permet de réduire le nombre d’opérations arithmétiques nécessaires pour le calcul de : au lieu de .
Cet algorithme améliore aussi la précision numérique du calcul.
Voir help fft
pour un comparaison de la vitesse et précision du calcul.
Written with StackEdit.