我正在尝试使用 Trilinos 包中的 LAPACK 求解器求解大型稀疏 30,000x1,000 矩阵。我的目标是最小化计算时间,但是这个 Lapack 求解器只需要方阵。所以我通过乘以它的转置手动将我的非方阵(A)转换为方阵,基本上像这样解决系统:
(A T *A)x = A T *b
使我的求解速度变慢的是矩阵乘以 A T步。有想法该怎么解决这个吗?
我正在尝试使用 Trilinos 包中的 LAPACK 求解器求解大型稀疏 30,000x1,000 矩阵。我的目标是最小化计算时间,但是这个 Lapack 求解器只需要方阵。所以我通过乘以它的转置手动将我的非方阵(A)转换为方阵,基本上像这样解决系统:
(A T *A)x = A T *b
使我的求解速度变慢的是矩阵乘以 A T步。有想法该怎么解决这个吗?
您可以直接计算 QR 分解 ( wikipedia-link ) 并使用它来解决您的最小二乘问题。这样您就不必计算矩阵 product A^T A
。
有多个 LAPACK 例程用于计算 QR 分解,例如gels
通用矩阵 ( intel-link ) 的驱动例程。
我必须说我不知道 Trilinos 是否提供该例程,但它是标准的 LAPACK 例程。