来自 Pytrilinos 的 LAPACK 用于最小二乘法

问题描述

我正在尝试使用 Trilinos 包中的 LAPACK 求解器来求解一个大型的 30,000x1,000 稀疏矩阵。我的目标是最小化计算时间,但是这个 Lapack 求解器只需要方阵。所以我通过乘以它的转置手动将我的非方阵 (A) 转换为方阵,基本上像这样解决系统:

(AT*A)x = AT*b

使我的求解变慢的是 AT 步骤的矩阵乘法。 有关如何解决此问题的任何想法?

解决方法

您可以直接计算 QR 分解 (wikipedia-link) 并使用它来解决您的最小二乘问题。 这样您就不必计算矩阵乘积 A^T A

有多个 LAPACK 例程用于计算 QR 分解,例如gels 是一般矩阵 (intel-link) 的驱动程序。

我必须说,我不知道 Trilinos 是否提供该例程,但它是标准的 LAPACK 例程。