Qual è la ragione per cui LAPACK usa


9

La routine QR di LAPACK memorizza Q come riflettori Householder. Ridimensiona il vettore di riflessione v con 1/v1 , quindi il primo elemento del risultato diventa 1 , quindi non deve essere memorizzato. E memorizza un vettore τ separato , che contiene i fattori di scala necessari. Quindi una matrice di riflettori è così:

H=IτvvT,

dove v non è normalizzato. Mentre, nei libri di testo, la matrice del riflettore è

H=I2vvT,

dove v è normalizzato.

Perché LAPACK scala v con 1/v1 , invece di normalizzarlo?

τv1Hτ2v2/v

(Il motivo della mia domanda è che sto scrivendo una routine QR e SVD e mi piacerebbe conoscere il motivo di questa decisione, sia che debba seguirla o meno)

Risposte:


7

È la variante bloccata di Householder-QR che sta guidando questo progetto. Se guardi nel libro di Golub e Van Loan (Ch 5.2 o giù di lì), parlano di come le iterazioni k dell'algoritmo possano essere bloccate insieme accumulando i singoli riflettori in un riflettore di grado k della forma , dove entrambe e sono matrici "magre" con dimensione . Questo algoritmo funziona di più ma è più veloce in pratica perché è ricco di chiamate gemm (). Purtroppo è dispendioso nello stoccaggio a causa della necessità di rappresentare e indipendente.I+WYTWYn×kWY

In un successivo documento (citato di seguito), Van Loan descrive una struttura dati "simmetrica" ​​più efficiente, un riflettore a blocchi della forma . Qui è ancora , ma il requisito flop / storage per formare è stato eliminato introducendo , una piccola matrice triangolare superiore . Sebbene la necessità di moltiplicare per introduca una piccola quantità di lavoro extra, in genere è un guadagno netto perché .I+YTYTYn×kWTk×kTk<<n

All'interno di LAPACK, l'algoritmo non bloccato è in realtà solo un caso limitante di dell'algoritmo a blocchi, fino alla scelta dei simboli (che ci porta a , una piccola versione di Triangolo a ).k1τ1×1T

Citazione: Schreiber, Robert e Charles Van Loan. "Una rappresentazione WY efficiente dal punto di vista dell'archiviazione per i prodotti delle trasformazioni delle famiglie". SIAM Journal on Scientific and Statistical Computing 10.1 (1989): 53-57.


Grazie per la risposta! Non vedo, che si trova a -sized . Nel documento citato, in Algorithm 5, è e è -2. Quindi finisce come la versione del libro di testo, non come la versione LAPACK. Mi manca qualcosa? 1 × 1 T Y v Tτ1×1TYvT
geza,

2

Non è necessario memorizzare , è possibile ricalcolarlo dal resto del vettore. (Puoi ricalcolare dalle altre voci anche nella versione normalizzata, ma è chiaramente un calcolo instabile a causa di quelle sottrazioni.)τv1

In realtà, puoi riutilizzare la parte triangolare inferiore di per memorizzare , in modo che la fattorizzazione sia calcolata completamente sul posto. Lapack si preoccupa molto di queste versioni sul posto di algoritmi.Rv2,...vn


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.