Esercizio - prodotto di matrici circolanti e convoluzione ciclica con la DFT (esercizi su supercircolanti e circolanti, es. CR 10)
In questa pagina 5
Esercizio supplementare 10 (con il 14) sulle matrici circolanti, dalle note ed esercizi del corso di Algoritmi per l'Ingegneria (Ing. Informatica UniPD) su supercircolanti e circolanti. Teoria usata: Matrici circolanti e supercircolanti - algoritmi divide and conquerle matrici supercircolanti (quadranti alternati ricorsivi) hanno solo n valori distinti: somma in n operazioni, prodotto in 4n log2 n + n con il trucco (A1+A2)(B1+B2) e (A1-A2)(B1-B2) invece delle 4 chiamate (Theta(n^2)); gli autovalori sono la trasformata di Hadamard della prima riga (FHT, n log2 n) e il prodotto passa dalla base diagonalizzante; le matrici circolanti sono polinomi nella matrice di rotazione R, il loro prodotto è la convoluzione ciclica delle prime righe e si diagonalizzano con la matrice di Fourier: prodotto in O(n log n) con la FFT.Matrici circolanti e supercircolanti - algoritmi divide and conquer →, Polinomi - rappresentazione per coefficienti e per valori e convoluzioneun polinomio di grado limitato da n si rappresenta con n coefficienti o con n valori su n punti distinti (teorema di interpolazione, matrice di Vandermonde). Per coefficienti la somma costa n e il prodotto, la convoluzione lineare, n^2 prodotti e (n-1)^2 somme; per valori il prodotto costa 2n-1 prodotti ma serve una base estesa di almeno 2n-1 punti. Le conversioni generali costano troppo: valutazione n volte con Horner 2n(n-1), interpolazione con Gauss-Jordan n^3 o con Lagrange n^2. Serve una base speciale: la DFT.Polinomi - rappresentazione per coefficienti e per valori e convoluzione →, 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à → e 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 →.
Testo
Una matrice è circolante (CR) se ogni riga è la rotazione di una posizione verso destra della precedente; si rappresenta con la prima riga . Sia la CR con prima riga (rotazione circolare a sinistra, ). Date due sequenze di lunghezza , la convoluzione ciclica è la sequenza con , equivalentemente .
- 10. Dimostrare che, se e sono matrici CR, allora è la matrice CR con prima riga . Dunque moltiplicare matrici CR equivale a convolverne ciclicamente le prime righe. Suggerimento: si scrivano e come polinomi nella matrice , , e si sfrutti la relazione .
- 14. Dimostrare che gli autovalori di una matrice circolante formano la DFT del vettore , cioè (l'argomento ricalca quello sviluppato per le matrici SC).
Per fissare le idee si svolge anche un esempio numerico completo con , e : prodotto per definizione, convoluzione ciclica, e prodotto passando dalla DFT.
Preliminare:
La matrice ha se e altrimenti (infatti la sua prima riga è e ogni riga è la precedente ruotata a destra). Per induzione se e altrimenti: sposta di posizioni. Allora
perché solo il termine con ha un in posizione , e per la definizione di CR. Quindi ogni CR è un polinomio in di grado minore di con coefficienti .
Punto 10:
Siano e , con , . Il prodotto di polinomi nella stessa matrice si espande come per i polinomi ordinari (le potenze di commutano con tutto), con :
Siccome , vale per ogni . Raggruppando i termini con lo stesso :
dove per ogni c'è un solo con , cioè . Il membro destro è un polinomio in , quindi una CR (le CR sono tutte e sole le combinazioni lineari delle potenze di ), con prima riga . Dunque è CR e .
Equivalenza delle due definizioni di convoluzione ciclica. , e ridurre modulo significa sostituire con , quindi con : il coefficiente di è la somma degli con , cioè sopra.
Punto 14: gli autovalori sono la DFT
Si usano il polinomio in e la diagonalizzazione di . Sia e, per , .
- . La componente di è la componente di (l'effetto di è ): per , e per si ha .
- , con : .
- Quindi è autovettore di ogni CR, con autovalore , dove è la matrice di Fourier, (simmetrica; le sue colonne sono i ). Gli autovettori sono indipendenti (matrice di Vandermonde sui punti distinti ), quindi e questi sono tutti gli autovalori.
Seconda strada (come per le SC): se è autovettore di una matrice con prima riga e , dalla prima componente di si ha ; con , , quindi .
Conseguenza (teorema di convoluzione ciclica in forma matriciale). Gli autovalori di sono i prodotti (stessa base ), quindi
con prodotto componente per componente: la convoluzione ciclica si calcola con tre DFT e prodotti, cioè 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 →). (Le note del corso scrivono "FHT" in questo punto; serve la FFT, perché la trasformata di Hadamard diagonalizza solo le supercircolanti.)
Esempio numerico ()
, :
1. Per definizione (prima riga di = prima riga di per le colonne di ). Le colonne di sono , , , e la prima riga di è :
2. Convoluzione ciclica, con , :
- ;
- ;
- ;
- .
Stesso risultato, ✓.
3. Con la DFT (, ):
: questi sono gli autovalori di . Controlli: la somma è ; il prodotto è . Con : la prima riga di dà ✓ e la seconda riga dà ✓.
.
Prodotto componente per componente: .
Antitrasformata: , cioè :
Ancora ✓: i tre metodi coincidono.
Verifica con un programma. Per e prime righe casuali, il prodotto delle matrici circolanti piene coincide con , i prodotti commutano, e la combinazione riproducono la matrice, gli sono autovettori con autovalori e la formula con la DFT dà la convoluzione; i valori dell'esempio (, , ) sono quelli calcolati da numpy.
Versione ripasso
Punti: CR con prima riga ; = rotazione a sinistra, ; con (prodotto di polinomi modulo ). Teoria: Matrici circolanti e supercircolanti - algoritmi divide and conquerle matrici supercircolanti (quadranti alternati ricorsivi) hanno solo n valori distinti: somma in n operazioni, prodotto in 4n log2 n + n con il trucco (A1+A2)(B1+B2) e (A1-A2)(B1-B2) invece delle 4 chiamate (Theta(n^2)); gli autovalori sono la trasformata di Hadamard della prima riga (FHT, n log2 n) e il prodotto passa dalla base diagonalizzante; le matrici circolanti sono polinomi nella matrice di rotazione R, il loro prodotto è la convoluzione ciclica delle prime righe e si diagonalizzano con la matrice di Fourier: prodotto in O(n log n) con la FFT.Matrici circolanti e supercircolanti - algoritmi divide and conquer →.
- Preliminare: sse , quindi : ogni CR è un polinomio in .
- 10. : e, per , ; si raggruppa per : (per ogni c'è un solo ). Il risultato è un polinomio in , quindi CR con prima riga . Equivalenza: ridurre modulo dà .
- 14. Autovalori = DFT: , . (componente di è ; per si usa ). Quindi : e diagonalizza tutte le CR (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à →). Seconda strada: .
- Teorema: , con la FFT in (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 →; serve la FFT, non la FHT).
- Esempio , , : per definizione ; convoluzione ciclica uguale (es. ). DFT con : (autovalori di : somma , prodotto ), , prodotto , antitrasformata : .
- Errori tipici: indici non ridotti modulo in ; dimenticare il nell'antitrasformata; usare nella diagonalizzazione di senza cambiare la convenzione (con rotazione a sinistra e si usa ); confondere le CR (FFT) con le SC (FHT).