matlab如何解决大型,对称和稀疏线性系统

时间:2011-11-10 19:11:38

标签: matlab linear-algebra solver sparse-matrix

也就是说,当我为一个非常大,对称且稀疏的A做A\b时,matlab使用什么算法?

2 个答案:

答案 0 :(得分:4)

如果矩阵是稀疏且对称正定,但具有非常窄带,则使用专门的带解算器。大多数矩阵没有足够窄的频带来触发这种情况。通常,这会在样条工具箱中显示一维样条曲线。二维问题有一个很大的“带”(它们不是真正的带状矩阵)。

更典型地,MATLAB将CHOLMOD用于稀疏对称正定矩阵。如果矩阵是稀疏的,对称的和不确定的,那么它使用Iain Duff的MA49。

您可以使用此选项让MATLAB告诉您A\b内部正在执行的操作:

spparms ('spumoni',3)

然后再次使用

将其关闭
spparms ('spumoni',0)

对于稀疏方阵,它使用UMFPACK。对于稀疏矩形矩阵,它使用SuiteSparseQR(或简称spqr)。

对于较低或较高三角形的稀疏矩阵,或者可以置换为这样的稀疏矩阵,它使用利用这些属性的前向/后向求解器。

MATLAB根本不使用反斜杠中的单纯形法。如果矩阵是矩形的(短而胖,列数多于行数),A\b将返回一个基本解。如果您想要最小的2-norm解决方案,则需要对A'进行因式分解。这可以在spqr MATLAB接口中完成,但该选项在MATLAB发行版中不可用。您需要从suitesparse.com的源代码安装spqr。

答案 1 :(得分:2)

答案取决于A的一些属性(对角线/方形/带状?等)。 CHOLMOD,UMFPACK和qr分解是一些选择。

文档解释了它。 以下是文档在线快照的链接。这可能已经过时了。   - http://amath.colorado.edu/computing/Matlab/OldTechDocs/ref/arithmeticoperators.html   - http://www.maths.lth.se/na/courses/NUM115/NUM115-11/backslash.html