也就是说,当我对一个非常大、对称且稀疏的 A 进行 A\b
时,matlab 使用什么算法?
最佳答案
如果矩阵是稀疏且对称正定矩阵,但带非常很窄,则使用专门的带求解器。大多数矩阵没有足够窄的带来触发这种情况。通常,它会在样条工具箱中提供一维样条。二维问题有一个很大的“带”(它们不是真正的带状矩阵)。
更典型的是,MATLAB 使用 CHOLMOD 来表示稀疏对称正定矩阵。如果矩阵是稀疏、对称且不定的,则使用 Iain Duff 的 MA49。
使用此选项,您可以让 MATLAB 告诉您它在 A\b
中正在做什么:
spparms ('spumoni',3)
然后再次将其关闭
spparms ('spumoni',0)
对于稀疏方阵,它使用 UMFPACK。对于稀疏矩形矩阵,它使用 SuiteSparseQR(或简称 spqr)。
对于下三角或上三角的稀疏矩阵,或者可以排列成这样的稀疏矩阵,它使用利用这些属性的前向/后向求解器。
MATLAB 根本不在反斜杠中使用单纯形法。如果矩阵是矩形的(又短又粗,列多于行),则 A\b
返回基本解决方案。如果您想要最小 2 范数解,则需要分解 A'
。这可以在 spqr MATLAB 界面中完成,但该选项在 MATLAB 发行版中不可用。您需要从源代码安装 spqr suitesparse.com .
关于matlab - matlab如何求解大型、对称和稀疏线性系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8084987/