Esercizio - domande di prima parte su polinomi, DFT e FFT (simulazioni d'esame)
Testo. La prima parte dell'esame di Algoritmi per l'Ingegneria (Ing. Informatica UniPD) è composta da domande a risposta unica, a scelta multipla o con risposta numerica; non si riporta il procedimento ma solo la risposta. Le simulazioni d'esame del 2023-24 e del 2025-26 contengono, tra le altre, due domande su questo argomento (sono le stesse in entrambe le simulazioni). Qui si risolvono entrambe con il procedimento completo, anche se all'esame basta la risposta, e si mostra il metodo più veloce.
Teoria usata: DFT, matrice di Fourier e radici n-esime dell'unitàla DFT di ordine n valuta un polinomio di grado limitato da n sulle n radici n-esime dell'unità, y_i = p(ω^i) con ω = e^{2πi/n}; è il prodotto per la matrice di Fourier F_n, una Vandermonde invertibile. Le radici formano un gruppo moltiplicativo e valgono tre lemmi: cancellazione (ω_{dn}^{dk} = ω_n^k, ω_n^{n/2} = -1), dimezzamento (i quadrati delle n radici sono le n/2 radici n/2-esime, ciascuna due volte) e somma (la somma delle potenze di ω^k vale n se k è multiplo di n, 0 altrimenti). Teorema di convoluzione lineare: (c|0) = DFT^{-1}{2n}(DFT{2n}(a|0) ⊙ DFT_{2n}(b|0)).DFT, matrice di Fourier e radici n-esime dell'unità →, Trasformate notevoli ed esponenziazione di polinomi con la FFTalcune famiglie di vettori hanno DFT nota o più economica della FFT generale: il vettore costante (a,...,a) ha DFT (na,0,...,0), il vettore (a,0,...,0) ha DFT (a,...,a); un vettore (n,k)-sparso ha DFT formata da k copie della DFT_{n/k} delle sue componenti di indice multiplo di k, e SPARSE_FFT costa 2 (n/k) log2(n/k) con ricorrenza T(n,k) = T(n/2,k/2). Per la potenza p(x)^k di un polinomio con n coefficienti: o si eleva a potenza per quadrature successive con LIN_CONV, O(nk log(nk)), oppure si valuta p con la FFT su h = 2^ceil(log2((n-1)k+1)) punti, si eleva alla k ogni valore e si antitrasforma, Theta(nk log(nk)).Trasformate notevoli ed esponenziazione di polinomi con la FFT →, Fast Fourier Transform - algoritmo ricorsivo e trasformata inversala FFT calcola DFT_n (n potenza di due) con divide et impera: si separano i coefficienti di indice pari e dispari, p(x) = p0(x^2) + x p1(x^2), e per il lemma di dimezzamento bastano due DFT di ordine n/2; y_i = y0_i + w^i y1_i e y_{i+n/2} = y0_i - w^i y1_i. La ricorrenza T(n) = 2T(n/2) + 2n con T(1) = 0 ha soluzione esatta 2 n log2 n. L'inversa ha matrice F^{-1}_{ij} = w^{-ij}/n: si ottiene con la FFT sulle potenze negative (poi si divide per n fuori dalla ricorsione) oppure con DFT_n(y) rovesciato. LIN_CONV moltiplica due polinomi con n coefficienti in 12 n log2(2n) + 4n operazioni.Fast Fourier Transform - algoritmo ricorsivo e trasformata inversa →.
Domanda 1: parte reale e parte immaginaria di
Si determini la parte reale () e la parte immaginaria () di . Scegli un'alternativa:
- e
- e
- e
- e
Risposta: la quarta, .
Metodo 1, periodicità. Le potenze di hanno periodo nell'esponente: . Con si ha , quindi . Per il lemma di cancellazione (mezzo giro). In generale .
Metodo 2, cancellazione ripetuta (più veloce se ordine ed esponente sono pari): dove ogni passaggio divide ordine ed esponente per e l'ultimo usa .
Metodo 3, angolo. : sono giri completi più mezzo giro, cioè il punto (controllato numericamente: il risultato è con una parte immaginaria dell'ordine di , errore di arrotondamento).
Le altre risposte corrispondono a (esponente multiplo di ), (esponente ) e (esponente modulo ).
Domanda 2: DFT di un vettore quasi costante
Sia . Calcolare . Scegli un'alternativa:
Risposta: la prima, .
Metodo veloce, linearità e trasformate notevoli. La DFT è lineare (, perché è una matrice). Il vettore si scompone in
- Il vettore costante ha (lemma di somma).
- Il vettore -sparso (componenti non nulle solo agli indici multipli di ) ha DFT formata da copie della del vettore delle componenti di indice multiplo di , cioè : , ripetuta volte: .
Sommando: .
Metodo per eliminazione, senza calcolare tutta la DFT. Bastano due componenti:
- (la riga di è di soli ): esclude le risposte e , che hanno ;
- (perché ): la seconda risposta ha , quindi è esclusa; la prima ha .
Controllo. Calcolando dalla definizione (somma per ) con un programma si ottiene a meno di errori di arrotondamento dell'ordine di .
Versione ripasso
Testo. Prima parte dell'esame: domande a risposta unica, si riporta solo la risposta. Due domande sull'argomento, uguali nelle simulazioni 2023-24 e 2025-26: (1) e di ; (2) . Teoria: DFT, matrice di Fourier e radici n-esime dell'unitàla DFT di ordine n valuta un polinomio di grado limitato da n sulle n radici n-esime dell'unità, y_i = p(ω^i) con ω = e^{2πi/n}; è il prodotto per la matrice di Fourier F_n, una Vandermonde invertibile. Le radici formano un gruppo moltiplicativo e valgono tre lemmi: cancellazione (ω_{dn}^{dk} = ω_n^k, ω_n^{n/2} = -1), dimezzamento (i quadrati delle n radici sono le n/2 radici n/2-esime, ciascuna due volte) e somma (la somma delle potenze di ω^k vale n se k è multiplo di n, 0 altrimenti). Teorema di convoluzione lineare: (c|0) = DFT^{-1}{2n}(DFT{2n}(a|0) ⊙ DFT_{2n}(b|0)).DFT, matrice di Fourier e radici n-esime dell'unità →, Trasformate notevoli ed esponenziazione di polinomi con la FFTalcune famiglie di vettori hanno DFT nota o più economica della FFT generale: il vettore costante (a,...,a) ha DFT (na,0,...,0), il vettore (a,0,...,0) ha DFT (a,...,a); un vettore (n,k)-sparso ha DFT formata da k copie della DFT_{n/k} delle sue componenti di indice multiplo di k, e SPARSE_FFT costa 2 (n/k) log2(n/k) con ricorrenza T(n,k) = T(n/2,k/2). Per la potenza p(x)^k di un polinomio con n coefficienti: o si eleva a potenza per quadrature successive con LIN_CONV, O(nk log(nk)), oppure si valuta p con la FFT su h = 2^ceil(log2((n-1)k+1)) punti, si eleva alla k ogni valore e si antitrasforma, Theta(nk log(nk)).Trasformate notevoli ed esponenziazione di polinomi con la FFT →.
- Domanda 1, risposta (parte reale , immaginaria ): e per cancellazione; oppure ; oppure ( giri e mezzo). Regola: .
- Domanda 2, risposta : linearità, . Costante: . -sparso: copie di , cioè . Somma .
- Verifica per eliminazione: (scarta ); (scarta ).
- Errori tipici: ridurre l'esponente modulo un ordine sbagliato; confondere con ; dimenticare che la DFT del vettore costante ha solo in posizione ; scambiare le posizioni dei valori nella DFT di un vettore sparso.