也就是说,当我A\b
为一个非常大的、对称的和稀疏的 A 做时,matlab 使用什么算法?
2 回答
如果矩阵是稀疏且对称的正定矩阵,但具有非常窄的频带,则使用专门的频带求解器。大多数矩阵没有足够窄的频带来触发这种情况。通常,这会在样条工具箱中提供一维样条。二维问题有一个很大的“带”(它们不是真正的带状矩阵)。
更典型的是,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。
答案取决于 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