Apa alasan bahwa LAPACK menggunakan

9

QR rutin LAPACK menyimpan Q sebagai reflektor rumah tangga. Ini skala vektor refleksi dengan , jadi elemen pertama hasilnya menjadi , sehingga tidak harus disimpan. Dan itu menyimpan vektor terpisah , yang berisi faktor skala yang diperlukan. Jadi matriks reflektor adalah seperti ini:v1/v11τ

H=IτvvT,

di mana tidak dinormalisasi. Sementara, dalam buku teks, matriks reflektor adalahv

H=I2vvT,

di mana dinormalisasi.v

Mengapa LAPACK berskala dengan , alih-alih menormalkannya?v1/v1

Penyimpanan yang dibutuhkan sama (bukan , harus disimpan), dan setelah itu, menerapkan dapat dilakukan lebih cepat, karena tidak perlu mengalikan dengan (perkalian dengan dalam versi buku teks dapat dioptimalkan, jika alih-alih normalisasi sederhana, diskalakan oleh ).τv1Hτ2v2/v

(Alasan pertanyaan saya adalah saya menulis rutin QR dan SVD, dan saya ingin tahu alasan keputusan ini, apakah saya perlu mengikutinya atau tidak)

geza
sumber

Jawaban:

7

Varian yang diblokir dari Householder-QR yang menggerakkan desain ini. Jika Anda melihat dalam buku Golub dan Van Loan (Bab 5.2 atau lebih), mereka berbicara tentang bagaimana k-iterasi dari algoritma dapat diblokir bersama-sama dengan mengumpulkan reflektor individu ke dalam reflektor peringkat-k dari bentuk , di mana keduanya dan adalah matriks "kurus tinggi" dengan ukuran . Algoritma ini bekerja lebih banyak tetapi lebih cepat dalam praktik karena kaya akan panggilan permata (). Sayangnya itu boros dalam penyimpanan karena kebutuhan untuk mewakili dan secara mandiri.I+WYTWYn×kWY

Dalam makalah selanjutnya (dikutip di bawah), Van Loan menjelaskan struktur data "simetri" yang lebih efisien, sebuah reflektor blok dari formulir . Di sini masih , tetapi persyaratan gagal / penyimpanan untuk membentuk telah dieliminasi dengan memperkenalkan , sebuah matriks segitiga atas kecil atas . Meskipun kebutuhan untuk mengalikan dengan memperkenalkan sejumlah kecil pekerjaan tambahan, itu biasanya merupakan keuntungan bersih karena .I+YTYTYn×kWTk×kTk<<n

Di dalam LAPACK, algoritma yang tidak diblokir sebenarnya hanya kasus yang membatasi algoritma blok, sampai ke pilihan simbol (yang membawa kita ke , versi dari segitiga).k1τ1×1T

Kutipan: Schreiber, Robert, dan Charles Van Loan. "Representasi WY yang efisien-penyimpanan untuk produk-produk transformasi Householder." Jurnal SIAM tentang Komputasi Ilmiah dan Statistik 10.1 (1989): 53-57.

rchilton1980
sumber
Terima kasih atas jawabannya! Saya tidak melihat, bahwa hanya -sized . Dalam makalah yang dikutip, dalam Algoritma 5, adalah , dan adalah -2. Jadi itu berakhir sebagai versi buku teks, bukan sebagai versi LAPACK. Apakah saya melewatkan sesuatu? 1 × 1 T Y v Tτ1×1TYvT
geza
2

Anda tidak harus menyimpan , Anda dapat menghitung ulang dari sisa vektor. (Anda dapat menghitung ulang dari entri lain juga dalam versi yang dinormalkan, tetapi jelas merupakan perhitungan yang tidak stabil karena pengurangan tersebut.)τv1

Sebenarnya, Anda dapat menggunakan kembali bagian segitiga-bawah untuk menyimpan , sehingga faktorisasi dikomputasi sepenuhnya di tempat. Lapack sangat peduli dengan versi algoritma ini.Rv2,...vn

Federico Poloni
sumber