# Calcolatore della serie di Fourier per segnali periodici

-Processo di approssimazione per la determinazione dello spettro dei segnali periodici-

## La serie di Fourier con il supporto delle figure

Prima di descrivere il calcolatore della serie di Fourier, al quale è dedicato il paragrafo successivo, esaminiamo l'algoritmo omonimo mostrato in figura 1
    ${\begin{aligned}F(x)&=a_{0}+\sum _{n=1}^{\infty }\left(a_{n}\cos nx+b_{n}\sin nx\right)\\&{\begin{cases}a_{0}={\frac {1}{2\pi }}\int _{-\pi }^{+\pi }f(x)dx\\a_{n}={\frac {1}{\pi }}\int _{-\pi }^{+\pi }f(x)\cos nx\ dx\\b_{n}={\frac {1}{\pi }}\int _{-\pi }^{+\pi }f(x)\sin nx\ dx\end{cases}}\qquad \qquad \qquad \qquad \qquad 1)\end{aligned}}$
questo consente, per via esclusivamente analitica, lo studio dei fenomeni periodici funzioni del tempo per il computo del loro spettro in frequenza, spettro espresso in figura 1 con il simbolo $F(x)$ ( dove $x=2\cdot \pi \cdot f\cdot t)$.
Generalmente la funzione $F(x)$ è espressa con il simbolo $G(\omega )$.
Un esempio di segnale periodico $f(t)$, onda rettangolare, espresso matematicamente è mostrato in figura 2a
    $f(2\pi f_{0}t)={\begin{cases}-E:&{\text{per}}\ (2k-1)\pi <2\pi f_{0}t<2k\pi \\+E:&{\text{per}}\ 2k\pi <2\pi f_{0}t<(2k+1)\pi \end{cases}}\qquad \qquad 2a)$
il cui andamento è tracciato in figura 2b
L'impiego della serie di Fourier porta alla determinazione dello spettro di frequenza a righe $G(\omega )$, dell'onda di figura 2b,così come mostrato in figura 3.
Se dell'onda periodica da analizzare non si conosce la legge $f(t)$, come ad esempio per la curva di figura 4:
la serie di Fourier non è applicabile; è sostituibile, con buona approssimazione, dall'algoritmo di figura 5 che prevede la determinazione dello spettro mediante l'elaborazione dei coefficienti $An'$ e $Bn'$ da $n$ campioni di $f(t)$ , messi a calcolo, rilevati da grafici o da presentazioni su oscilloscopio:
    $C'_{n}=A'_{0}+\sum _{n=1}^{n=k}A'_{n}\cos(n2\pi f_{0}t)+B'_{n}\sin(n2\pi f_{0}t)\qquad \qquad \qquad 5)$
Si osservi che:
* Con il simbolo $C'n$ s'intende l'ampiezza della n esima riga dello spettro di frequenza.
* I coefficienti di figura 5 sono indicati con $A'n$ e $B'n$ per distinguerli da quelli diversi di figura 1.
* $A'o,A'n,B'n$ sono determinati con processo numerico iterativo implementando nel programma di calcolo le funzioni esposte in figura 5a dove, ad esempio, $20$ campioni del periodo in analisi sono riportati, in apposita memoria del P.C, con i simboli $a(1).....a(20)$ .
    ${\begin{aligned}&A'_{0}={\frac {1}{2\pi }}\left[0,5a(1)+a(2)+a(3)+\dots +a(19)+0,5a(20)\right]{\frac {2\pi }{19}}\qquad \qquad \qquad \qquad \qquad \qquad 5a)\\&A'_{n}={\frac {1}{\pi }}\left[0,5a(1)\cos(nwt_{1})+a(2)\cos(nwt_{2})+\dots +0,5a(20)\cos(nwt_{20})\right]{\frac {2\pi }{19}}\\&B'_{n}={\frac {1}{\pi }}\left[0,5a(1)\sin(nwt_{1})+a(2)\sin(nwt_{2})+\dots +0,5a(20)\sin(nwt_{20})\right]{\frac {2\pi }{19}}\\&C'_{n}=\left({A'_{n}}^{2}+{B'_{n}}^{2}\right)^{\frac {1}{2}}\end{aligned}}$
* Il modulo della $n$ esima riga dello spettro è indicato da $C'n$ ; nel calcolatore l valori $C'n$ sono valutati senza l'addizione di $A'o$ che viene calcolato separatamente.
Vedremo di seguito, in dettaglio, l'impiego degli algoritmi di figure 5 e 5a contestualmente all'esame del pannello operativo del calcolatore.

## Il pannello operativo del calcolatore

Il pannello operativo, mostrato in figura 6, è generato da un file eseguibile disponibile all'indirizzo: wikiFourier oppure seriefourier
Il file esguibile consente il calcolo e la presentazione grafica dello spettro dell'onda da analizzare.
In figura 6, con una serie di numeri in rosso, sono distinte le 5 sezioni funzionali:
Sezione 1 (Variabili di calcolo)
La sezione contiene il pulsante ingresso variabili e 4 textbox nelle quali inserire i seguenti dati:
* Durata del periodo dell'onda da analizzare espressa con $T$ in secondi.
* Il numero $m=n$ dei campioni da prelevare dal periodo dell'onda da analizzare.
* Il numero $k$ delle righe dello spettro che si vogliono calcolare.
* L'incremento di calcolo $dm$ dal quale dipendono sia la precisione che il tempo calcolo.
Al lancio del programma la sezione è impostata, in via preliminare, con i valori:
$T=0.01\ S$; $\quad m=n=20$; $\quad k=10$; $\quad dm=0.01$ .
Sezione 2: (Campioni nel periodo)
La sezione contiene:
* Un label, a sinistra, che indica il numero progressivo dei campioni ricavati dal periodo da analizzare e un textbox, a destra, per l'inserzione delle ampiezze dei diversi campioni.
* Un pulsante "Ingresso campioni" per l'inserzione progressiva dei valori sopra citati;il pulsante presenta colore verde nella fase d'introduzione campioni, cambia colore in arancio una volta che i campioni dell'onda sono pari al valore impostato di $m=n$
* Un pulsante " Azzeramento memorie" per la ripetizione, se necessario, dell'inserzione dati.
Sezione 3: ( Presentazione spettro)
La sezione contiene:
* Il pulsante "Calcolo dello spettro" per l'avvio del programma di calcolo per la presentazione grafica del modulo delle righe dello spettro tracciate come visione indicativa dello stesso.
* Un listato numerico delle frequenze e relative ampiezze normalizzate delle righe dello spettro.
L'azione di questo comando provoca inoltre il tracciamento del periodo dell'onda inserito a campioni nella sezione 2 per un controllo della correttezza del suo profilo.
Sezione 4: (Listato valori calcolati)
Nel listato compaiono:
* Le $n$ coppie calcolate nella forma, ad esempio per una generica $3^{a}$ coppia, $F=1300\ Hz$ $\ C'3=0.65432$ ; ciascuna coppia definisce una riga dello spettro sia in frequenza che in ampiezza normalizzata.
* In alto, sopra il listato, il valore calcolato di $C'o$ ( componente continua dell'onda ove sia presente )
Sezione 5: (Area di presentazione grafici)
I grafici sono tracciati a solo scopo illustrativo dato che i valori che li generano sono già contenuti nei listati della sezione 4.
* In alto lo spettro dell'onda con le $m=n$ righe messe a calcolo; le ascisse del tracciato non sono calibrate in frequenza
* In basso il profilo del periodo dell'onda definito con tanti punti quanti sono gli $m=n$ campioni messi a calcolo; le ascisse del tracciato non sono calibrate in tempo.

## Primo esempio di calcolo della serie di Fourier con controllo analitico

Questo esempio, che interessa l'analisi di un'onda rettangolare, si avvale di un riscontro analitico in quanto lo spettro dell'onda in esame è definito dalla caratteristica serie di figura 7 che servirà come controllo dati elaborati dal calcolatore:
    $y={\frac {4}{\pi }}E\left(\cos x-{\frac {1}{3}}\cos 3x+{\frac {1}{5}}\cos 5x-{\frac {1}{7}}\cos 7x+\dots \right)\qquad \qquad \qquad 7)$
Come si vede la serie analitica è formata soltanto da addendi dispari i cui coefficienti, espressi con frazioni, sono gli analoghi dei termini $Cn$ elaborati dal calcolatore.
Utilizziamo sempre i valori preliminari assegnati al calcolatore al momento dell'avvio, come mostra la figura 8 della sezione 1.
Quindi pigiamo il pulsante "Ingresso variabili".
Impostiamo nella sezione 2, premendo " Ingresso campioni" (pulsante arancione), per lo spettro di un'onda rettangolare quale quella riportata in figura 2b, la seguente sequenza di campioni:
$1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1$
relativa ad un periodo dell'onda sopra citata fino a quando il pulsante stesso diventa arancione.
Dopo la pressione del pulsante " Calcolo dello spettro ", si ha sia il listato dei valori così come riportato in figura 9 che i grafici di figura 10
La lista indica righe multiple di $1000\ Hz$ dato che, essendo $T=0.001\ S$, la frequenza è $f=1/0.001$ = $1000\ Hz$.
Procediamo ora al controllo della lista di figura 9 impostando una tabella che riporta, tanto le ampiezze calcolate con l'espressione dello spettro teorico espresso in figura 7, che quelle del listato di figura 9:
    Righe> C'$_1$ C'$_2$ C'$_3$ C'$_4$ C'$_5$ C'$_6$ Con il calcolatore 1,0000 0,0012 0,3333 0,0012 0,2000 0,0012 Per via analitica 1,0000 0 0,3333 0 0,2000 0
Come si vede in tabella di tavolo i valori di $C'n$ per $n$ dispari, praticamente coincidono, per $n$ pari il calcolatore commette un errore presentando ampiezze pari a $0.002$ invece che $0$ come da processo analitico.
Gli errori si riducono ripetendo il computo con un passo di calcolo inferiore a $dm=0.01$, ad esempio $dm=0.001$; naturalmente il processo di calcolo richiede un tempo superiore di sviluppo.

## Secondo esempio: calcolo della serie di Fourier con controllo analitico

Questo esempio, che interessa l'analisi di un'onda a dente di sega, si avvale di un riscontro analitico in quanto lo spettro dell'onda in esame è definito dalla caratteristica serie di figura 11 che servirà come controllo dei dati elaborati dal calcolatore:
    $y={\frac {2}{\pi }}E\left(\sin x-{\frac {1}{2}}\sin 2x+{\frac {1}{3}}\sin 3x-{\frac {1}{4}}\sin 4x+\dots \right)\qquad \qquad \qquad 11)$
Come si vede la serie analitica è formata da addendi pari e dispari i cui coefficienti, espressi con frazioni, sono gli analoghi dei termini $Cn$ elaborati dal calcolatore.
Utilizziamo sempre i valori di base assegnati al calcolatore al momento dell'avvio, come mostra la figura 12 della sezione 1.
quindi pigiamo il pulsante "Ingresso variabili".
Impostiamo nella sezione 2, premendo " Ingresso campioni" ( pulsante giallo ), i campioni d'ampiezza di un'onda a dente di sega quale quella riportata in figura 13
la seguente sequenza di campioni:
$-1;-0.9;-0.8;-0.7;-0.6;-0.5;-0.4;-0.3;-0.2;0.1;0;0.1;0.2;0.3;0.4;0.5;0.6;0.7:0.8:0.9$
relativa ad un periodo $T$ dell'onda sopra citata fino a quando il pulsante stesso diventa arancione.
Dopo la pressione del pulsante " Calcolo dello spettro ", si ha sia il listato dei valori così come riportato in figura 14 che i grafici di figura 15:
La lista indica righe multiple di $1000Hz$ dato che, essendo $T=0.001\ S$, $f=1/0.001$= $1000\ Hz$.
Procediamo ora al controllo della lista di figura 14 impostando una tabella che riporta, tanto le ampiezze dello spettro teorico espresso in figura 11 che quelle della lista nella figura citata:
    Righe> C'$_1$ C'$_2$ C'$_3$ C'$_4$ C'$_5$ C'$_6$ Con il calcolatore 1,0000 0,5001 0,3335 0,2501 0,2001 0,1667 Per via analitica 1,0000 0,5000 0,3333 0,2500 0,2000 0,1666
Come si vede in tabella di tavolo i valori di $C'$ da calcolatore sono quasi coincidenti con dagli analoghi analitici; l'errore massimo è dell'ordine del $2$ per mille.

## Terzo esempio: calcolo della serie di Fourier di un'onda generica

Questo esempio, che interessa l'analisi di un'onda generica, non si avvale alcun riscontro analitico.
Il tracciato dell'onda sia quello riportato in figura 16:
Si esegue la campionatura di un periodo con 21 campioni così come mostrato in figura 17:
Si compila, in tavola, la lista delle ampiezze dei campioni ricavandola da rilievi geometrici su figura 17:
    periodo ampiezza t$_0$ 0,00 t$_1$ 0,40 t$_2$ 0,64 t$_3$ 0,75 t$_4$ 0,85 t$_5$ 0,99 t$_6$ 1,04 t$_7$ 0,86 t$_8$ 0,53 t$_9$ 0,21 t$_{10}$ 0,00 t$_{11}$ -0,02 t$_{12}$ -0,17 t$_{13}$ -0,38 t$_{14}$ -0,47 t$_{15}$ -0,40 t$_{16}$ -0,28 t$_{17}$ -0,26 t$_{18}$ -0,29 t$_{19}$ -0,22 t$_{20}$ -0,00
I dati di tavola s'inseriscono progressivamente in sezione 2 pigiando il pulsante "Ingresso campioni".
Dopo la pressione del pulsante " Calcolo dello spettro ", si ha sia il listato dei valori così come riportato in figura 19 che i grafici di figura 20:
La lista indica righe multiple di $1000\ Hz$ dato che, essendo $T=0.001\ S$, $\quad f=1/0.001$ = $1000\ Hz.$

## Quarto esempio: calcolo della serie di Fourier di un'onda precostruita

Per un controllo ulteriore del calcolatore analizziamo un'onda precostruita che è caratterizzata dalla presenza della sola $4^{a}$ armonica di ampiezza $C'4=0.3333.$
L'onda in oggetto, generata da un'apposita funzione matematica, è riportata in figura 21:
L'onda ha un periodo $T=0.001\ S$ e quindi una frequenza di $1000\ Hz$; il periodo viene campionato con le stesse modalità relative al periodo dell'esercizio precedente; il risultato della campionatura è riportato in tavola:
    periodo ampiezza t$_0$ 0,00 t$_1$ 0,62 t$_2$ 0,78 t$_3$ 0,61 t$_4$ 0,63 t$_5$ 0,99 t$_6$ 1,26 t$_7$ 1,00 t$_8$ 0,39 t$_9$ -0,00 t$_{10}$ -0,00 t$_{11}$ 0,00 t$_{12}$ -0,38 t$_{13}$ -1,00 t$_{14}$ -1,26 t$_{15}$ -1,00 t$_{16}$ -0,63 t$_{17}$ -0,61 t$_{18}$ -0,78 t$_{19}$ -0,63 t$_{20}$ -0,00
Seguendo la procedura d'inserzione dati e campioni analoga a quella del paragrafo precedente, dopo la pressione del pulsante " Calcolo dello spettro ", si ha sia il listato dei valori così come riportato in figura 23 che i grafici di figura 24:
L'esame dei dati, sia numerici ( riga $C'4$ ) che grafici evidenziano, come era nelle aspettative, la presenza di una riga a $4000\ Hz$ di ampiezza $C'4=0.3133$.
Le righe a livello molto basso presenti in figura 23, non visibili in figura 24, sono dovute all'approssimazione dell’algoritmo di calcolo.