Quelle est la raison pour laquelle LAPACK utilise


9

La routine QR de LAPACK stocke Q en tant que réflecteurs domestiques. Il met à l'échelle le vecteur de réflexion v avec 1/v1 , de sorte que le premier élément du résultat devient 1 , il n'a donc pas besoin d'être stocké. Et il stocke un vecteur τ séparé , qui contient les facteurs d'échelle nécessaires. Donc, une matrice de réflecteur est comme ceci:

H=IτvvT,

v n'est pas normalisé. Alors que, dans les manuels, la matrice du réflecteur est

H=I2vvT,

v est normalisé.

Pourquoi LAPACK met-il à l'échelle v avec 1/v1 , au lieu de le normaliser?

τv1Hτ2v2/v

(La raison de ma question est que j'écris une routine QR et SVD, et j'aimerais connaître la raison de cette décision, si je dois la suivre ou non)

Réponses:


7

C'est la variante bloquée de Householder-QR qui anime cette conception. Si vous regardez dans le livre de Golub et Van Loan (Ch 5.2 ou plus), ils parlent de la façon dont les k-itérations de l'algorithme peuvent être bloquées ensemble en accumulant les réflecteurs individuels dans un réflecteur de rang k de la forme , où et sont des matrices "hautes et maigres" de taille . Cet algorithme fait plus de travail mais est plus rapide dans la pratique car il est riche en appels gemm (). Malheureusement, cela est un gaspillage de stockage en raison de la nécessité de représenter et indépendamment.I+WYTWYn×kWY

Dans un article ultérieur (cité ci-dessous), Van Loan décrit une structure de données "symétrisée" plus efficace, un réflecteur de bloc de la forme . Ici est toujours , mais l'exigence de flop / stockage pour former a été éliminée en introduisant , une petite matrice triangulaire supérieure . Bien que la nécessité de multiplier par introduise une petite quantité de travail supplémentaire, c'est généralement un gain net car .I+YTYTYn×kWTk×kTk<<n

Au sein de LAPACK, l'algorithme non bloqué n'est vraiment qu'un cas limitant de l'algorithme de bloc, jusqu'au choix des symboles (ce qui nous amène à , une petite version du Triangle ).k1τ1×1T

Référence: Schreiber, Robert et Charles Van Loan. "Une représentation WY efficace pour le stockage des produits des transformations des ménages." SIAM Journal on Scientific and Statistical Computing 10.1 (1989): 53-57.


Merci d'avoir répondu! Je ne vois pas, que est juste -sized . Dans l'article cité, dans l'algorithme 5, est et est -2. Il finit donc par être la version du manuel, pas la version LAPACK. Dois-je manquer quelque chose? τ1×1TYvT
geza

2

Vous n'avez pas besoin de stocker , vous pouvez le recalculer à partir du reste du vecteur. (Vous pouvez recalculer partir des autres entrées également dans la version normalisée, mais il s'agit clairement d'un calcul instable en raison de ces soustractions.)τv1

En fait, vous pouvez réutiliser la partie triangulaire inférieure de pour stocker , afin que la factorisation soit entièrement calculée en place. Lapack se soucie beaucoup de ces versions d'algorithmes en place.Rv2,...vn


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.