Answers:
推动此设计的是Householder-QR的受阻变形。如果您查看Golub和Van Loan的书(Ch 5.2左右),他们将讨论如何通过将各个反射器累积为形式的k级反射器来将算法的k个迭代一起阻止,其中和均为大小为 “高瘦”矩阵。该算法执行的工作更多,但实际操作更快,因为它包含许多gemm()调用。不幸的是,由于需要单独表示和因此在存储上很浪费。
Van Loan在随后的论文中(下文引用)描述了一种更有效的“对称”数据结构,即形式的块反射器。这里仍然是,但是通过引入(一个小的上三角矩阵),消除了形成的翻转/存储要求。尽管需要乘以带来少量额外的工作,但由于,因此通常是净收益。
在LAPACK中,非阻塞算法实际上只是块算法的一个限制情况,一直到符号选择(这导致我们,版本)三角形)。
引用:Schreiber,Robert和Charles Van Loan。“针对Householderer变换的产品的存储有效的WY表示形式。” SIAM科学与统计计算杂志10.1(1989):53-57。
您不必存储,可以从向量的其余部分重新计算它。(您也可以在规范化版本中从其他条目重新计算,但是由于这些减法,显然这是不稳定的计算。)
实际上,您可以重用的下三角部分来存储,以便完全就地计算因式分解。Lapack非常关心这些就地版本的算法。
我的建议基于英特尔MKL的文档https://software.intel.com/zh-cn/mkl-developer-reference-c-geqrf。看起来像输出存储R的对角线上和上方的值,因此Q仅剩下较低的三角形。使用额外的存储作为比例因子似乎很自然。