2

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

4

2 回答 2

4

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

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

A\b您可以使用此选项让 MATLAB 告诉您它在内部做什么:

spparms ('spumoni',3)

然后再次将其关闭

spparms ('spumoni',0)

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

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

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

于 2012-05-19T11:59:12.493 回答
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

于 2011-11-10T19:33:39.920 回答