• Aucun résultat trouvé

Décomposition en série de Fourier et filtrage linéaire

N/A
N/A
Protected

Academic year: 2022

Partager "Décomposition en série de Fourier et filtrage linéaire"

Copied!
4
0
0

Texte intégral

(1)

Décomposition  en  série  de  Fourier   et  filtrage  linéaire  

   

Le  but  de  ce  projet  Python  est  d’étudier  le  filtrage  linéaire  par  des  filtres  d’ordre  1  et  de  retrouver  le   comportement  intégrateur  et  dérivateur  de  ces  filtres.  Il  permet  de  plus  de  réaliser  numériquement  la   décomposition   en   série   de   Fourier   d’un   signal   périodique   introduit   dans   les   cours   d’électricité   et   de   signaux.  

1. Décomposition  en  série  de  Fourier  d’une  fonction  carré  

On  rappelle  que  tout  signal  périodique  𝑥(𝑡),  de  période  𝑇,  peut  se  décomposer  en  série  de  Fourier  :    𝑥 𝑡 =𝐴!+ 𝐴!cos 2𝜋𝑓𝑛𝑡 +𝐵!sin 2𝜋𝑓𝑛𝑡

!

!!!

     avec    𝑓=1

𝑇  

Les  coefficients  de  la  décomposition  en  série  de  Fourier  se  calculent  par  les  formules  suivantes  :  

𝐴!= 1

𝑇 𝑥(𝑡)𝑑𝑡

!

!

!!!

   ;      𝐴!= 2

𝑇 𝑥(𝑡)cos 2𝜋𝑓𝑛𝑡 𝑑𝑡

!

!

!!!

   ;      𝐵!=2

𝑇 𝑥(𝑡)sin 2𝜋𝑓𝑛𝑡 𝑑𝑡

!

!

!!!

 

1.1.  Décomposition  en  série  de  Fourier    

Le  but  de  cette  première  partie  est  de  réaliser  la  décomposition  en  série  de  Fourier  d’un  signal  carré.  

Pour  les  modélisations,  on  prendra  les  valeurs  numériques  suivantes  :  

• 𝑓=1  Hz  

• 𝑈=1  V  

1.1)  Dans  l’éditeur,  importer  les  modules  scientifiques  nécessaires  pour  le  problème  :   -­‐  numpy  as  np  

-­‐  matplotlib.pyplot  as  pl  

-­‐  scipy.integrate  as  sp  (pour  le  calcul  des  coefficients  de  Fourier)   1.2)  Déclarer  et  affecter  les  variables  suivantes  :  

-­‐  la  fréquence  (notée  f)  et  la  période  (notée  T)  de  la  tension  carré   -­‐  l’amplitude  (notée  U)  de  la  tension  carré  

1.3)  Définir  une  fonction  (appelée  Carre)  définissant  une  fonction  valant  -­‐U  si  𝑡 <0  et  +U  si  𝑡 >0.  

1.4)  Sans  calcul,  prévoir  quels  sont  les  termes  nuls  de  la  décomposition  en  série  de  Fourier  de  la   fonction  Carre.  

1.5)  Initialiser  un  vecteur  (appelé  E)  contenant  51  valeurs,  toutes  égales  à  0.    

1.6)  A  l’aide  de  la  fonction  quad,  calculer  les  50  premiers  termes  non  nuls  de  la  décomposition  en   série  de  Fourier  de  la  fonction  Carre.  On  les  affectera  dans  les  composantes  du  vecteur  E.  

Aide  :   La   fonction   quad   du   module   integrate   de   scipy   permet   de   réaliser   du   calcul   intégral   numérique.  Cette  fonction  possède  trois  arguments  d’entrée  obligatoires  :  

(2)

2                            Projet  Python  3  :  Décomposition  en  série  de  Fourier  et  filtrage  linéaire   1  -­‐  la  fonction  que  l’on  souhaite  intégrer  

2  -­‐  la  borne  inférieure  de  l’intégrale   3  -­‐  la  borne  supérieure  de  l’intégrale  

Elle   renvoie   en   argument   de   sortie   un   nombre   complexe,   de   partie   imaginaire   négligeable.   Pour   récupérer  la  partie  réelle  de  cet  argument  de  sortie,  correspondant  à  la  valeur  de  l’intégrale,  on  prend   sa   première   composante.   On   utilise   également   un   argument   d’entrée   facultatif   (selon   la   syntaxe   args=(k))   pour   indexer   le   résultat   du   calcul.   On   écrira   donc   la   ligne   de   commande   suivante   pour   calculer  le  kième  terme  de  la  décomposition  en  série  de  Fourier  :  

E[k]= 2.0*sp.quad(lambda t,k: Carre(t)*np.sin(2*np.pi*k*t),-T/2,T/2,args=(k))[0]

1.7)  Tracer  le  spectre  de  la  fonction  créneau.  Pour  cela,  on  effectue  une  boucle,  avec,  pour  chaque   valeur  de  k,  un  appel  de  la  fonction  pl.plot  selon  la  syntaxe  :  

pl.plot([k,k],[0,np.abs(E[k])],’r’,linewidth=4).

1.2. Retour  à  la  fonction  décomposée  

Pour  vérifier  que  la  décomposition  en  série  de  Fourier  correspond  bien  au  signal  dont  on  est  parti,  on   peut  calculer  et  tracer  les  sommes  de  Fourier.  

Définition  :  La  somme  de  Fourier  de  rang    𝑁  revient  à  tracer  la  fonction  𝑓(𝑡)  correspondant  à  :   𝑓 𝑡 = 𝐸!sin 2𝜋𝑓𝑛𝑡

!

!!!

 

1.8)  Définir  un  vecteur  (noté  t)  contenant  1000  points  et  dont  les  valeurs  sont  comprises  entre  −𝑇   et  𝑇.  

1.9)  Tracer  les  sommes  de  Fourier  de  rang  2,  5,  10  et  50  sur  l’intervalle  𝑡= −𝑇,𝑇 .  Commenter.  

Aide  :  Pour  calculer  la  somme  de  Fourier  de  rang  n,  on  utilisera  la  fonction  sum  selon  la  syntaxe  :   s  =  [sum(E[k]*np.sin(2*np.pi*k*x)  for  k  in  range(1,n+1))  for  x  in  t]  

2. Filtrage  par  un  filtre  du  premier  ordre  

On  a  vu  dans  le  chapitre  E6  que  tout  signal  périodique  impair  pouvant  se  décomposer  en  une  somme   de  fonctions  sinus  et  la  réponse  de  chacune  de  ses  composantes  étant  connue  grâce  à  la  fonction  de   transfert  du  filtre,  il  suffit  de  sommer  ces  réponses  pour  obtenir  le  signal  de  sortie  résultant  :  

1  -­‐  On  décompose  le  signal  d’entrée  en  une  somme  de  fonctions  sinusoïdales  du  temps  :   𝑒 𝑡 =𝑒!+ 𝑒!(𝑡)

!

=𝑒!+ 𝐸!sin 𝑛𝜔𝑡

!

!!!

   avec    𝜔=2𝜋

𝑇  

Dans  cette  décomposition,  𝑒!  correspond  à  la  valeur  moyenne  du  signal  d’entrée  et  les  termes  𝑒!(𝑡)   correspondent  aux  différents  harmoniques  du  signal.  

2   -­‐   On   détermine   la   réponse   du   filtre   à   chacune   des   composantes   du   signal   d’entrée   grâce   à   la   fonction  de  transfert  du  filtre  :  

𝑠! = 𝐻(0)𝑒!    et    𝑠! 𝑡 =𝑆!sin 𝑛𝜔𝑡+𝜓!      avec        𝑆! = 𝐻(𝑛𝜔)𝐸!      

𝜓!=Arg 𝐻(𝑛𝜔)   Cette  étape  de  traitement  effectué  sur  chaque  harmonique  du  signal  est  le  filtrage.  

3  -­‐  On  superpose  les  termes  obtenus  pour  déterminer  le  signal  de  sortie  résultant  :   𝑠 𝑡 =𝑠!+ 𝑠!(𝑡)

!

=𝑠!+ 𝑆!sin 𝑛𝜔𝑡+𝜓!

!

 

(3)

 Projet  Python  3  :  Décomposition  en  série  de  Fourier  et  filtrage  linéaire                        3  

2.1.  Filtre  passe-­‐bas  d’ordre  1  

On  s’intéresse  ici  au  filtrage  de  la  fonction  carré  par  un  filtre  passe-­‐bas  d’ordre  1.  

Pour  les  modélisations,  on  prendra  les  valeurs  numériques  suivantes  :  

• 𝐻!=1  

• 𝜔!=60  000  rad.s!!  

2.1)  Rappeler  la  forme  canonique  de  la  fonction  de  transfert  d’un  filtre  passe-­‐bas  d’ordre  1.  

•  Courbe  de  gain  du  diagramme  de  Bode  

2.2)  Définir  un  vecteur  (noté  frequence)  contenant  1000  points  et  dont  les  valeurs  sont  comprises   entre  𝑓=0  Hz  et  𝑓=150  kHz.  

2.3)  A  partir  du  vecteur  précédent,  définir  le  vecteur  pulsation  réduite  :  𝑥=𝜔/𝜔!.  

2.3)  Définir  un  vecteur  (appelé  H_PB)  contenant  les  valeurs  de  la  fonction  de  transfert  complexe  du   filtre  passe-­‐bas  d’ordre  1  pour  les  différentes  valeurs  de  la  pulsation  réduite.  

2.4)  Définir  un  vecteur  (appelé  GdB_PB)  contenant  la  valeur  du  gain  en  décibels  du  filtre  passe-­‐bas   d’ordre  1  pour  les  différentes  valeurs  de  la  pulsation  réduite.  

La   fonction  pl.semilogx   du   module   matplotlib.pyplot   qui   permet   de   tracer   une   courbe   dans   un   repère   semi-­‐logarithmique   selon   l’axe   des   abscisses   (de   même,   la   fonction  pl.semilogy   permet   de   tracer  une  courbe  dans  un  repère  semi-­‐logarithmique  selon  l’axe  des  ordonnées).  

2.5)  Tracer  la  courbe  de  gain  du  diagramme  de  Bode  du  filtre  passe-­‐bas  d’ordre  1.  

•  Filtrage  du  signal  carré    

Le  signal  d’entrée  est  le  signal  carré  de  la  première  partie,  dont  les  différents  termes    𝐸!  sont  stockés   dans  le  vecteur  E.  

2.6)  Initialiser  deux  vecteurs  (appelés  S_PB  et  Phi_PB)  contenant  51  valeurs,  toutes  égales  à  0.  

2.7)  Calculer  les  50  premiers  termes  de  𝑆!  et    𝜓!  dans  le  cas  où  𝜔=𝜔!.   2.8)  Tracer  le  signal  de  sortie  sur  l’intervalle  𝑡= −𝑇,𝑇 .  

2.9)  Calculer  les  50  premiers  termes  de  𝑆!  et    𝜓!  dans  le  cas  où  𝜔=𝜔!/100.  

2.10)  Tracer  le  signal  de  sortie  sur  l’intervalle  𝑡= −𝑇,𝑇 .  

2.11)  Calculer  les  50  premiers  termes  de  𝑆!  et    𝜓!  dans  le  cas  où  𝜔=100  𝜔!.   2.11)  Tracer  le  signal  de  sortie  sur  l’intervalle  𝑡= −𝑇,𝑇 .  

2.12)  Quel  cas  correspondant  au  comportement  intégrateur  ?  Est-­‐ce  conforme  à  la  théorie  ?  

2.2.  Filtre  passe-­‐haut  d’ordre  1  

On  s’intéresse  ici  au  filtrage  de  la  fonction  carré  par  un  filtre  passe-­‐haut  d’ordre  1.  

2.13)  Rappeler  la  forme  canonique  de  la  fonction  de  transfert  d’un  filtre  passe-­‐haut  d’ordre  1.  

•  Courbe  de  gain  du  diagramme  de  Bode  

2.14)  Définir  un  vecteur  (appelé  H_PH)  contenant  les  valeurs  de  la  fonction  de  transfert  complexe   du  filtre  passe-­‐bas  d’ordre  1  pour  les  différentes  valeurs  de  la  pulsation  réduite.  

2.15)  Définir  un  vecteur  (appelé  GdB_PH)  contenant  la  valeur  du  gain  en  décibels  du  filtre  passe-­‐

bas  d’ordre  1  pour  les  différentes  valeurs  de  la  pulsation  réduite.  

2.16)  Tracer  la  courbe  de  gain  du  diagramme  de  Bode  du  filtre  passe-­‐haut  d’ordre  1.  

(4)

4                            Projet  Python  3  :  Décomposition  en  série  de  Fourier  et  filtrage  linéaire  

•  Filtrage  du  signal  carré    

Le  signal  d’entrée  est  le  signal  carré  de  la  première  partie,  dont  les  différents  termes    𝐸!  sont  stockés   dans  le  vecteur  E.  

2.17)  Initialiser  deux  vecteurs  (appelés  S_PH  et  Phi_PH)  contenant  51  valeurs,  toutes  égales  à  0.  

2.18)  Calculer  les  50  premiers  termes  de  𝑆!  et    𝜓!  dans  le  cas  où  𝜔=𝜔!.   2.19)  Tracer  le  signal  de  sortie  sur  l’intervalle  𝑡= −𝑇,𝑇 .  

2.20)  Calculer  les  50  premiers  termes  de  𝑆!  et    𝜓!  dans  le  cas  où  𝜔=𝜔!/100.  

2.21)  Tracer  le  signal  de  sortie  sur  l’intervalle  𝑡= −𝑇,𝑇 .  

2.22)  Calculer  les  50  premiers  termes  de  𝑆!  et    𝜓!  dans  le  cas  où  𝜔=100  𝜔!.   2.23)  Tracer  le  signal  de  sortie  sur  l’intervalle  𝑡= −𝑇,𝑇 .  

2.24)  Quel  cas  correspondant  au  comportement  dérivateur  ?  Est-­‐ce  conforme  à  la  théorie  ?    

       

Références

Documents relatifs

On considère que la lame est soumise à une action mécanique variant sinusoïdalement dans le temps à la fréquence f, fréquence que l’on se propose de déterminer à l’aide

Pour réaliser en pratique cette condition, on utilise bien souvent un montage suiveur, donc la fonction de transfert est égale à 1 mais qui a l’intérêt d’avoir une très

En (in, si j (z) a la péiiode (o, comme on peut, en restant dans une région ou J (z) est bolomorpbe, dé- placer parallèlement à lui-même le segment d'intégra- tion, on retrouve

directe et Les constantes figurant devant les intégrales (T.F. directe et T.F. inverse) n’ont aucune importance dans la mesure où leur T.F. inverse) n’ont aucune importance dans

Les constantes figurant devant les intégrales (T.F. directe et T.F. inverse) n’ont aucune importance dans la mesure où leur produit est égal à. Pour cette raison, nous allons

Exercice 10: Comparer la vitesse de convergence des séries de Fourier des exercices

Établir l’équation des asymptotes en gain et en phase à partir de la fonction de transfert et comparer au diagramme.. 3 - On se place dans la limite très haute fréquence : ω

Le spectre du signal créneau d’entrée dans les différentes expériences est représenté en bleu, le diagramme de Bode du filtre utilisé est représenté