为什么`symrcm`创建更大的带宽?

计算科学 matlab 稀疏矩阵 带状矩阵
2021-12-07 19:50:31

上运行以下(在 Matlab 中)时,我得到更大的带宽。对称反向 Cuthill-McKee 排列)不能保证找到最小带宽,但增加它没有任何意义。这里有什么问题?Asymrcm

reorderingForSmallBand = symrcm(A);
A = A(reorderingForSmallBand,reorderingForSmallBand);

spy(A)在重新排序之前和之后在上运行收益率:之前(PDF) 和之后(PDF)A

最初,我的矩阵具有这种形式(PDF)。我还想知道拥有大带宽是否很重要,因为 Matlab 中的反斜杠求解器表示它超出了利用带状结构的求解器的限制。迭代求解器具有小带宽有什么优势吗?A

1个回答

这里没有错。Cuthill-McKee 算法是一种贪心算法,并不太依赖于输入中 A 的阶数。逆向 Cuthill-McKee 算法通常用于为天际线求解器生成良好的订单,重新排序矩阵的天际线看起来确实相当合理。(如果我没记错的话,Cuthill-McKee 和反向 Cuthill-McKee 的带宽是相同的。)但我不知道 Matlab 是否有特殊的天际线求解器。它当然有带状求解器,因为 LAPACK 有带状求解器。LAPACK 过去没有天际线求解器,因此 Matlab 很可能两者都没有。然而,Matlat 具有一般的稀疏直接求解器,但反向 Cuthill-McKee 排序对这些求解器并不太有用。