Esercizio - matrice V per V trasposta con V di Vandermonde, formula degli elementi e calcolo in tempo quadratico (compito del 4 settembre 2024, es. 2)
In questa pagina 3
Testo (compito d'esame del 4 settembre 2024 di Algoritmi per l'Ingegneria, Ing. Informatica UniPD, seconda parte, esercizio 2, 17 punti). Data una sequenza di numeri complessi , sia la matrice di Vandermonde generata da (dunque , per ). Sia la trasposta di e sia . Nel seguito, la complessità temporale va considerata come numero di operazioni aritmetiche tra scalari complessi.
- (a) [6 punti] Si ricavi una formula analitica per il generico elemento di , per . (Si presti attenzione al caso .)
- (b) [5 punti] Sulla base della formula ricavata al punto (a), si proponga un algoritmo
EVAL_W(x, i, j)per valutare la singola componente in tempo (e quindi l'intera matrice in tempo ). - (c) [6 punti] Si proponga e si analizzi un algoritmo
COMPUTE_W(x)che calcola l'intera matrice in tempo . (Suggerimento: si provi a evidenziare parti comuni nell'espressione associata a elementi diversi.)
Teoria usata: 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 → (matrice di Vandermonde), Serie notevoli - geometrica, telescopica, armonicaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica → e SommatorieIl simbolo di sommatoria, le sue proprietà (linearità, additività, cambio di indice) e le somme notevoli di Gauss e geometrica.Sommatorie → (somma di una progressione geometrica), Esponenziazione veloce per quadrature successivepotenza x^n con un operatore associativo con elemento neutro, costo = numero di applicazioni dell'operatore; STUPID_POWER costa n-1, la sottostruttura x^n = (x^floor(n/2))^2 (per n dispari per x) dà POWER con T(n) = floor(log2 n) + (numero di bit a 1 di n) - 1, Theta(log n) (caso peggiore 2 floor(log2 n), n = 2^t - 1); versioni iterative POWER2 e POWER3 dalla rappresentazione binaria di n; esempio con la matrice di Fibonacci; il modello a costo unitario vale solo se l'operatore non fa crescere gli operandi.Esponenziazione veloce per quadrature successive → (potenza in prodotti), Operazioni tra matriciLe matrici m×n formano uno spazio vettoriale (somma e prodotto per scalare elemento per elemento); il prodotto righe per colonne corrisponde alla composizione di funzioni lineari, è associativo ma non commutativo; la trasposta scambia righe e colonne e (AB)^T = B^T A^T.Operazioni tra matrici → (prodotto righe per colonne).
Nessun elemento di richiede di moltiplicare matrici: la struttura di Vandermonde trasforma ogni elemento in una somma geometrica di ragione .
(a) La formula di
Per definizione di prodotto righe per colonne, con : Posto , è la somma dei primi termini della progressione geometrica di ragione (Serie notevoli - geometrica, telescopica, armonicaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica →, valida in ). Due casi:
- se ogni termine vale e la somma è ;
- se la formula chiusa è (infatti per telescopia).
Il caso va trattato a parte perché la formula chiusa darebbe . La matrice è simmetrica, , perché .
Esempio (, ). . Gli elementi:
: , (infatti ); : , quindi (infatti ); : , (); : , ; : , ; : , . Quindi
uguale a calcolato per righe per colonne (controllo fatto anche con numpy su valori complessi casuali con un elemento forzato a ).
(b) Valutare un singolo elemento in
Si calcola ; se si restituisce , altrimenti si restituisce con la potenza per quadrature successive.
EVAL_W(x, i, j)
n <- x.len
b <- x[i] * x[j]
if b = 1 then return n
else return (POWER(b, n) - 1) / (b - 1)POWER(b, n) esegue quadrature e prodotti per le cifre dell'esponente (verificato contando i prodotti di un'implementazione, per esempio : prodotti; : ), in ogni caso al più . Le altre operazioni sono prodotto (), sottrazioni e divisione. Quindi
e calcolare tutti gli elementi con questo algoritmo costa (il confronto è un test, non un'operazione aritmetica).
(c) L'intera matrice in
Il costo per elemento viene dalla potenza . Ma cioè dipende da e da separatamente, e le potenze richieste sono prodotti delle sole potenze . Si calcolano allora una volta sola , e ogni elemento costa un numero costante di operazioni:
COMPUTE_W(x)
n <- x.len
for i <- 0 to n-1
y[i] <- POWER(x[i], n) { n chiamate, O(log n) l'una }
for i <- 0 to n-1
for j <- 0 to n-1
b <- x[i] * x[j]
if b = 1 then W[i][j] <- n
else W[i][j] <- (y[i]*y[j] - 1) / (b - 1)
return WCosto. Primo ciclo: potenze, ciascuna al più prodotti, in tutto . Secondo doppio ciclo: ciascuno degli elementi richiede ( prodotto), ( prodotto), e ( sottrazioni) e una divisione: operazioni al più (solo se ). Totale Verificato contando le operazioni di un'implementazione per : la parte dopo il precalcolo vale meno per ogni elemento con (per con , i due elementi e costano operazione invece di , quindi ). Sfruttando la simmetria si calcolano solo gli elementi con () e si copiano gli altri: . Il costo è ottimo, perché la matrice ha elementi da scrivere.
Versione ripasso
Testo. (), . (a) [6] formula di (attenzione a ); (b) [5] EVAL_W(x,i,j) in ; (c) [6] COMPUTE_W(x) in evidenziando le parti comuni. Teoria: 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 →, Esponenziazione veloce per quadrature successivepotenza x^n con un operatore associativo con elemento neutro, costo = numero di applicazioni dell'operatore; STUPID_POWER costa n-1, la sottostruttura x^n = (x^floor(n/2))^2 (per n dispari per x) dà POWER con T(n) = floor(log2 n) + (numero di bit a 1 di n) - 1, Theta(log n) (caso peggiore 2 floor(log2 n), n = 2^t - 1); versioni iterative POWER2 e POWER3 dalla rappresentazione binaria di n; esempio con la matrice di Fibonacci; il modello a costo unitario vale solo se l'operatore non fa crescere gli operandi.Esponenziazione veloce per quadrature successive →, Serie notevoli - geometrica, telescopica, armonicaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica →.
- (a) , geometrica di ragione : se (altrimenti ), se . è simmetrica.
- Esempio: , : , (), , , , .
- (b)
b <- x[i]*x[j]; se restituisce , altrimenti(POWER(b,n)-1)/(b-1).POWERfa prodotti; più prodotto, sottrazioni, divisione: ; tutta : . - (c) : si precalcolano ( potenze, ) e poi (o se ) con operazioni per elemento.
- Costo di (c): ; con la simmetria . Ottimo, perché l'output ha elementi.
- Controllo: confronto con per righe per colonne e conteggio delle operazioni per (con forzato).
- Errori tipici: dimenticare il caso (formula ); ricalcolare per ogni coppia invece di usare ; dire che il costo è senza notare la parte comune.