Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

6
voti

Analisi di Fourier con EXCEL

Indice

Premessa

La costruzione di una qualunque oscillazione complessa a partire dalla sovrapposizione di oscillazioni armoniche semplici costituisce un procedimento di sintesi .

La decomposizione di una oscillazione complessa nelle sue oscillazioni armoniche costituisce, per così dire, il procedimento inverso della sintesi e viene denominato analisi spettrale o analisi di Fourier. Tale analisi offre la base teorica per innumerevoli applicazioni.

In matematica una serie di Fourier, quindi, è la rappresentazione di una funzione f(x) periodica come combinazione lineare infinita di funzioni della forma cos(nx) e sin(nx):

f(x) = \frac{{a_0 }}{2} + \sum\limits_{n = 1}^\infty  {\left[ {a_n \cos \left( {nx} \right) + b_n \sin \left( {nx} \right)} \right]}

\begin{array}{l}
 a_0  = \frac{1}{\pi }\int_{ - \pi }^\pi  {f\left( x \right) \cdot } {\rm{d}}x \\ 
 a_n  = \frac{1}{\pi }\int_{ - \pi }^\pi  {f\left( x \right) \cdot } \cos \left( {nx} \right) \cdot {\rm{d}}x \\ 
 b_n  = \frac{1}{\pi }\int_{ - \pi }^\pi  {f\left( x \right) \cdot } \sin \left( {nx} \right) \cdot {\rm{d}}x \\ 
 \end{array}


i coefficienti an e bn , detti coefficienti di Fourier, esprimono le ampiezze ovvero i pesi delle sinusoidi e cosinusoidi, ao/2 corrisponde al valor medio in un periodo della funzione f(x).

Funzioni pari e dispari

Considerato che la serie di Fourier è la somma di una serie di funzioni pari coseni e di funzioni dispari seni , è utile approfondire le caratteristiche di tali funzioni.

Si dice che una funzione f(x):

  • è pari se per ogni x: f( − x) = f(x), ad esempio le funzioni x2,x4,cos(x) sonno pari. Tali funzioni sono simmetriche rispetto all’ asse Y;
  • è dispari se per ogni x: f( − x) = − f(x), ad esempio le funzioni x,x3,sin(x) sono dispari. Se di tali funzioni ruotiamo il ramo positivo attorno all’asse X, il nuovo ramo diventa simmetrico col ramo non ruotato rispetto all’asse Y.

Ogni funzione f(x) può essere decomposta in una funzione pari fp e in una funzione dispari fd , vedi figura .

Considerato che fp( − x) = fp(x) e fd( − x) = − fd(x), dal grafico si deduce:

  • per il ramo di sinistra : f( − x) = fp + fd
  • per il ramo di destra : f(x) = fpfd - - - (1)
F1.jpg

F1.jpg

Sommando e sottraendo le (1) si ottengono rispettivamente:

  • f(x_i) + f(-x_i) = 2f_p  \Rightarrow \   f_p =  (f(x) + f(-x))/2
  • f(x_i)- f(-x_i)  =  2f_d   \Rightarrow \    f_d  =  (f(x) - f(-x))/2 - - - (2)

Pertanto, nota la f(x) con le (2) si possono ricavare la fp e la fd.

Esempio: y = 2x2 − 3x per xi=2 f(2) = 2 ed f(-2) = 14 dalle (2) possiamo ricavare

  • fp = ( 2 + 14 ) / 2 = 8
  • fd(2) = ( 2 – 14 ) / 2 = - 6 fd(-2) = 6

per x=1 f(1) = -1 ed f(-1) = 5 dalle (2)

  • fp(2) = (-1 + 5 ) / 2 = 2
  • fd(1) =(-1 - 5 ) / 2 = -3 fd(-1)= 3

Della y = 2x2 − 3x è facile notare che la funzione pari è y = 2x2 mentre la funzione dispari è y = − 3x.

Calcolo dei coefficienti delle sottofunzioni fp ed fd

Considerato che ogni funzione f(x) può considerarsi come la somma di una funzione dispari fd e di una funzione pari fp, troviamo di queste sottofunzioni i coefficienti di Fourier, ricordando che per la fp tutti i coefficienti dei seni bi sono = 0 mentre per la fd tutti i coefficienti dei coseni ai sono = 0 .

Stante le proprietà di simmetria delle 2 funzioni, per calcolare tali coefficienti è sufficiente considerare una metà di ogni funzione (ad esempio il ramo negativo delle x).

  • ----
Consideriamo, ad esempio, la funzione y = x2 + x, i coefficienti ai bi (con i = 1, 2, … 16) con il metodo di Fourier sono:
F2.jpg

F2.jpg

I coefficienti ai bi rispettivamente della funzione pari fp e della funzione dispari fd sono invece:
F3.jpg

F3.jpg

Si fa notare che, sebbene le aree siano state computate in entrambi i casi con il metodo dei rettangoli, i coefficienti ai sono diversi.
F4.jpg

F4.jpg

Nel grafico sopra, riportata in giallo, la curva calcolata con i coeff. ai bi di Fourier,
F5.jpg

F5.jpg

Nel grafico sopra, riportata in giallo, la curva calcolata con i coeff. delle funzioni fp ed fd. Si noti la migliore approssimazione della curva alla funzione f(x) (parabola di colore nero).
  • ----
Consideriamo adesso la funzione dispari f(x) = x e calcoliamo i coefficienti
F6.jpg

F6.jpg

Grafico sopra - Coefficienti ai bi (con i = 1, 2, … 16) con il metodo di Fourier :
F8.jpg

F8.jpg

F7.jpg

F7.jpg

Grafico sopra - Coefficienti ai bi con le funzioni pari e dispari:
F9.jpg

F9.jpg

Si noti che i coefficienti bi calcolati con i due metodi sono uguali. I coefficienti ai col primo metodo sono ≠ 0, invece col secondo metodo sono tutti =0.

Il grafico di fig.7 evidenzia che i 32 punti della curva calcolata con la funzioni dispari coincidono con i 32 punti della funzione f(x) = x. Ciò significa che i coefficienti bi sono esatti.

Se consideriamo invece una funzione pari, calcolando i coefficienti ai, dal grafico si nota che i punti calcolati non coincidono con i punti della funzione pari, cioè non si ottengono valori esatti.

Trasformiamio, allora, la funzione pari in una funzione dispari e ne calcoliamo i coefficienti.

  • ----

Ad esempio, consideriamo la funzione pari f(x) = x2, la funzione dispari si ottiene ruotando solo il ramo delle x positive attorno all’asse x, la funzione diventa: vedi curva azzurra del grafico

    • y = x2: per x<0
    • y = − x2: per x>0

In tal modo, di questa funzione pari resa dispari, possiamo calcolare i coefficienti (che chiameremo) ci con la funzione dispari sin(nx).

F10.jpg

F10.jpg

I valori di questi coefficienti sono:
F16.JPG

F16.JPG

  • ----
Data, allora, una funzione generica f(x) e calcolati i coefficienti bi e ci, bisogna ricombinare tali coefficienti al fine di ritrovare la funzione f(x).
F11.jpg

F11.jpg

In particolare:

  • per il ramo sinistro della f(x) occorre sommare le funzioni fd + fp ovvero sommare i coeff. bi+ci ,
  • per il ramo destro della f(x) occorre sottrarre le funzioni fd - fp ovvero sottrarre i coefficienti bi-ci.

Nel grafico è stata riportata la f(x) = x2 + x che è stata decomposta nella funzione dispari y = x , e nella funzione pari resa dispari y = + / − x2, nonché le 3 curve calcolate coll metodo delle funzioni pari dispari che risultano perfettamente sovrapposte alle prime.

Pertanto, dati in un intervallo [ − π; + π] N+1 punti, sono sufficienti N coefficienti ed N/2 sinusoidi per descrivere una funzione che passa per tali punti.

Le formule per il calcolo dei coefficienti sono:

  • b_i = \frac{(2 \cdot (\left( \frac{1}{2} \right) \cdot (y_1-y_{n+1}) \cdot sin(ix_1)+\sum_{s=2}^\frac{N}{2} (y_s-y_{n+1-s}) \cdot sin(ix_s))}{N}
  • c_i = \frac{(2 \cdot (\left( \frac{1}{2} \right) \cdot (y_1+y_{n+1}) \cdot sin(ix_1)+\sum_{s=2}^\frac{N}{2} (y_s+y_{n+1-s}) \cdot sin(ix_s))}{N}  con (i = 1,2,..n / 2) (1) , poiché xi = − π ne segue che sin(ix1) = 0 per cui le (1) diventano:
  • b_i = \frac{2}{N}\cdot \sum_{s=2}^\frac{N}{2} (y_s-y_{n+1-s}) \cdot sin(ix_s)
  • c_i = \frac{2}{N}\cdot \sum_{s=2}^\frac{N}{2} (y_s+y_{n+1-s}) \cdot sin(ix_s)  con (i = 1,2,...n / 2) - - - (1a)

Calcolati i coefficienti bi e ci, è possibile rappresentare esattamente la funzione f(x).

  • f(x) = \sum_{s=1}^\frac{N}{2} (b_s+c_s) \cdot sin(sx)  per x nell’intervallo [ − π;0]
  • f(x) = \sum_{s=1}^\frac{N}{2} (b_s-c_s) \cdot sin(sx)  per x nell’intervallo [0; + π] - - - (2)

Il segnale può, cioè, essere scomposto per metà nella somma di N/2 armoniche di coeff. bs+cs, per l’altra metà nella somma di N/2 armoniche di coeff. bs-cs. dove i coeff. bs coincidono con i coeff. di Fourier per la parte dispari del segnale.

F12.jpg

F12.jpg

Nota: Se calcoliamo i coefficienti

  • A_i = \frac{2}{N}\cdot \sum_{s=1}^N y_s \cdot sin(ix_s)
  • B_i = \frac{2}{N}\cdot \sum_{s=1}^N  y_s \cdot cos(ix_s)  con (i = 1,2,...N).

si ritrova una antisimmetria nei coeff. Ai, che rappresentano la parte dispari della funzione: Ai = − Ani ed una simmetria nei coeff. Bi, che rappresentano la parte pari della funzione: Bi = Bni. Si fa notare che, per il calcolo della serie di Fourier, i valori dei coeff. centrali: An / 2 e Bn / 2, in quanto non accoppiati, devono essere dimezzati : An / 2 = 0.5 * An / 2 e Bn / 2 = 0.5 * Bn / 2.

Calcolo coefficienti con solo seni (coseni)

Si è visto, da quanto sopra riportato, che è possibile studiare un ramo di funzione con la somma di N/2 sinusoidi. Se quindi trasliamo la funzione f(x) di π (pigreco) cioè f(x-π) e raddoppiamo il periodo, possiamo studiare la funzione nell’intervallo [0;2π]. La formula (1) diventa :

  • C_i = \frac{2}{N}\cdot \sum_{s=1}^N y_{n+1-s} \cdot sin(ix_s)

mentre la (2) diventa:

  • f(x) = \sum_{i=1}^\N c_i \cdot sin(ix)  per x nell’intervallo [0;2π]

Lo stesso ragionamento si può ripetere per la funzione coseno. La traslazione della funzione f(x) di π , infatti, fa diventare asse di simmetria la retta: y = π, per cui sen(i*x), rispetto a tale asse, è una funzione pari se il coefficiente i è pari e viceversa. Analogamente cos(i*x) è una funzione pari o dispari in funzione di i. Da ciò risulta che, di una funzione pari (dispari), tutti i coefficienti ci con i pari (dipari) sono nulli.

Conclusione: Una qualsiasi funzione f(x) costituita da N punti può essere scomposta nella somma di N sinusoidi (cosinusoidi) e viceversa: con N sinusoidi (cosinusoidi) è possibile costruire una funzione che passa per N punti qualsiasi.

Si riporta il programma [1] per il calcolo degli N seni (coseni).


Lettura di più segnali

Si rileva dalle (1) e (2) che, per un calcolo esatto della f(x), nel caso dei seni, non è necessario calcolare integrali in quanto i coefficienti ci dipendono solo dalle ordinate di f(x).

Per cui, se abbiamo 2 funzioni o segnali f(t) e g(t) definiti, in un intervallo T, ognuno da N punti sfalsati fra loro di un intervallo dt < T/N (T/N = intervallo tra 2 punti consecutivi), con le suddette formule è possibile, distinguendo i punti dei 2 segnali, calcolare i relativi coefficienti ci e ritrovare i 2 segnali.

Relazione tra f(x) ed i coefficienti bi e ci

Vediamo, adesso, la relazione esistente tra la funzione f(x) ed i coefficienti bi e ci. Consideriamo una funzione con tutti i punti =0 tranne un punto S di ascissa xs e ordinata ys, la (1a) diventa:

  • b_i = \frac{(2 \cdot y_s \cdot sin(ix_s))}{N}  - - - - - (1b)

In pratica i coefficienti bi dovuti al punto S descrivono una sinusoide di ampiezza ys e frequenza proporzionale ad xs .ovvero, ogni punto P della funzione f(x) contribuisce ai valori dei coefficienti bi con sinusoidi di ampiezza yp e frequenza proporzionale ad xp

La (2), per x nell’intervallo [ − π;0], diventa:

  • f(x_s) =\frac{ (\sum_{i=1}^\frac{N}{2} (b_i+c_i)*sin(ix_s))}{N}

Considerato che, per le condizioni poste, il ramo destro è nullo cioè ci - bi = 0 ovvero ci = bi si ha :

  • f(x_s) =  (\sum_{i=1}^\frac{N}{2} 2b_i \cdot sin(ix_s)) inoltre dalla (1b)
  • f(x_s) =y_s=4 \cdot y_s \cdot  \frac{ (\sum_{i=1}^\frac{N}{2} sin(ix_s)^2)}{N}

Eliminando la ys dall’equazione si ricava :

\frac{N}{4} =  \sum_{i=1}^\frac{N}{2} sin(ix_s)^2 - - - (4)


Cioè la somma dei N/2 quadrati dei seni = N/4. Se N multiplo di 4, vale anche: la somma dei N/4 quadrati dei seni = N/8.

Si ricorda che la f(x) è stata divisa in N parti per cui  i\cdot x_s =i\cdot 2 \cdot \pi/N = (con i = 1, 2, ..N/2) .

Esempio se N=6 la (4) è: sin(1 * 2 * π / 6)2 + sin(2 * 2 * π / 6)2 + sin(3 * 2 * π / 6)2 =

= 0.8662 + 0.8662 + 02 = 1.5 = N / 4

La (4) resta valida se ai valori i * xs si somma una costante ψ cioè:

\frac{N}{4} =  \sum_{i=1}^\frac{N}{2} sin(ix_s+\psi)^2 - - - (4a)

Se N = 4 la (4) diventa  : sin(1 * 2 * π / 4 + ψ)2 + sin(2 * 2 * π / 4 + ψ)2 = sin(π / 2 + ψ)2 + sin(π + ψ)2, considerato che sin(π + ψ)2 = cos(π / 2 + ψ)2 si ritrova il teorema di Pitagora:

sin(π / 2 + ψ)2 + cos(π / 2 + ψ)2 = N / 4 = 1.

Il teorema di Pitagora risulta, allora, un caso particolare della (4a).


Onda - Punto

Nella figura sotto è stata considerata una funzione, definita in un periodo T [ − π; + π] e composta da 32 punti. Tutti i punti sono stati posti = 0 tranne il (2° punto da x=0) punto y(-0.393) = 1 . Per tale punto si ha una funzione delle frequenze con periodo T/2 e frequenza 2f .

F13.jpg

F13.jpg

Nella figura a seguire è stata considerata una funzione composta da 32 punti e definita in un periodo T [ − π; + π]. I punti nulli della funzione sono i 2 punti y(16)= 1 e y(19)=1 (si noti la perfetta corrispondenza tra la funzione curva nera e la curva calcolata curva gialla).

Si rileva che il punto di destra y(19) più lontano di una posizione dall’origine y(17), rispetto al punto di sinistra y(16), crea un’onda di frequenza doppia.

F14.jpg

F14.jpg

Dalla formula (1b):

  • b_i = \frac{(2 \cdot y_s \cdot sin(ix_s))}{N}  - - - (1b)

e dai 2 grafici sopra riportati si rileva il dualismo:

  1. Ad una frequenza f corrisponde un onda di punti (funzione) di frequenza f ;
  2. Ad un punto (di una funzione) in posizione k corrisponde un’onda di frequenze avente frequenza k.

Che richiama al dualismo: Onda - Particella


Calcolo a tratti della f(x)

Premessa:

  1. Una funzione f(t) di periodo T e frequenza f = 1/T , può essere considerata come avente periodo con la trasformazione della variabile
    x = t * (2π / T) = t * (2π * f)
  2. Una funzione y = f(x) può essere traslata verso sinistra (destra) di un valore a (-a) ponendo y = f(x+a) (ovvero y = f(x-a) ).

Data, allora, una funzione composta da N punti, è possibile spezzare la f(x) in Q=N/4 sottofunzioni, composte ciascuna da 4 punti, e calcolare tali sottofunzioni traslando di volta ini volta i punti in modo che l’asse y risulti in mezzeria rispetto ad essi.

In tal modo, come già detto , per definire i 4 punti sono sufficiente 2 bi, 2 ci e 2 sinusoidi di periodo K e K/2 essendo K = 4*T/N (le frequenze sono f =1/K e f ’= 2/K). Cioè, per ogni quadrupla di punti saranno calcolati 4 coefficienti: 2 bi e 2 ci mentre le 2 sinusoidi sen(k*x) e sen(2*k*x) descriveranno tutta la f(x).

Ad esempio se nell’intervallo T [-2 ; +3] ci sono N = 40 punti, il periodo sarà K = 4*T/N = 4*5/40 = 0.5 mentre la frequenza f = N/(4*T), da cui f = 2 ed f’ = 2*f =4 , sen(2* π*2*x) e sen(2* π*4*x).

Spezzando la f(x) in Q = N/4 sottofunzioni ognuna di N' =4 punti le operazioni di calcolo si riducono a: Q*(N'*N'/2) = N/4*(4*4/2)= N*4/2 = N*2 operazioni.

Si noti che le frequenze delle 2 sinusoidi aumentano col numero di punti N e diminuiscono all’aumentare dell’intervallo T.

La trasformata di Fourier

Da quanto sopra indicato una funzione f(t), sia essa periodica o meno in un intervallo T,. può essere rappresentata in modo esatto con una somma di N seni Se aumentiamo l’intervallo fino a T → ∞ otteniamo la trasformata diretta di Fourier F(Ω) cioè il segnale f(t) e’ espresso come sovrapposizione di oscillazioni (seni) …..

Calcolo dei coefficienti con i sistemi lineari

I coefficienti ci possono calcolarsi, altresì, con un sistema di equazioni lineari che impongono alle funzioni sin(s*x) di passare per gli N punti della funzione dispari f(x)


  • y_i = \sum_{s=1}^\N (c_i) \cdot sin(sx_i)  - - - - per xi nell’intervallo [0;2π]:

in forma matriciale:


  • \begin{vmatrix} y_i  \end{vmatrix} = \begin{vmatrix} sin(sx_i) \end{vmatrix} * \begin{vmatrix} c_i \end{vmatrix} - - - - per xi nell’intervallo [0;2π]

in cui ci sono le incognite, sin(sxi) sono i coefficienti, yi e yi i termini noti.

Dal punto di vista del calcolo risulta chiaramente più vantaggioso il metodo delle funzioni pari e dispari.



Nota: I calcoli e le figure sopra riportate sono state eseguite con il programma in Excel Fourier Pari-Dispari [2]

3

Commenti e note

Inserisci un commento

di ,

Il file è disponibile nella nota a fine articolo. Un grazie ad Oromoiluig per l'errore segnalato.

Rispondi

di MVB,

Comodo! ma non si può rendere disponibile anche il file ?

Rispondi

di ,

c'è un errore nella sezione "funzioni pari e funzioni dispari": vengono erroneamente indicati come pari i seni e dispari i coseni...

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.