SuperLU 计算的 U 矩阵中缺少非零值

计算科学 线性代数 矩阵分解
2021-12-02 06:49:58

在 SuperLU 的用户指南的第 18 页上,给出了以下示例输入矩阵A

19,0,21,21,0
12,21,0,0,0
0,12,16,0,0
0,0,0,5,21
12,12,0,0,18

U矩阵在用户指南中给出如下:

19,0,21,21,0
0,21,-13.26,-13.26,0
0,0,23.58,7,58,0
0,0,0,5,21
0,0,0,0,34.2

但是dgssv()会产生以下矩阵,该矩阵通过以下方式打印dPrint_CompCol_Matrix("U", U)

CompCol matrix U:
Stype 0, Dtype 1, Mtype 4
nrow 5, ncol 5, nnz 11
nzval: 21.000000  -13.263158  7.578947  21.000000  
rowind: 0  1  2  0  
colptr: 0  0  0  1  4  4

用户指南中给出的U矩阵是正确的(您可以在此链接上进行验证)。我想知道为什么 SuperLU 会产生这样的矩阵。如何U从 SuperLU 输出中生成正确的矩阵?

PS 对于 的列排序A,我使用了我的置换向量,即 1、2、3、4、5。换句话说,列没有重新排序。SuperLUA不会重新排序的行。

1个回答

我发现丢失的非零值存储在L矩阵中。存储类型L是 supernodel,通过利用密集块来加速分解过程。所以矩阵的一些非零U值存储在L矩阵中。