首页 > 解决方案 > 是否有用于将矩阵的上角/下角归零的 LAPACK 函数?

问题描述

一些 LAPACK 函数(如dgqrf)返回一个函数,其中答案是上三角形,但在对角线下方存储了一些辅助信息。我想知道是否有一个函数可以将对角线条目下方的值归零。

标签: linear-algebralapackblasscientific-computing

解决方案


一般问题

不,标准 BLAS/LAPACK 中没有这样的功能。

如果您愿意放弃直接使用 BLAS/LAPACK 函数(存在所有潜在问题和副作用),您可能会发现线性代数包可以使此类操作更容易。比如说,Eigen会提供TriangularViews,而其他包会有他们这样做的方式。

如果您必须直接使用 BLAS/LAPACK,则必须自己将其归零。

QR分解

我假设您不需要 QR 分解中的 Q 并且只关心 R。这样,您希望将其存储在适当的位置并清理并避免将副本复制到另一个分配的存储中。

从技术上讲,您可以使用dormqr并将矩阵 C 设置为零矩阵来实现。但是,它效率不高,因为您实际上是在执行不需要的线性代数运算并存储另一个密集矩阵。如果确实需要这样做,您当然最好进行手动循环进行清理,或者将 R 复制到另一个地方(类似于此处的操作方式)。


推荐阅读