matlab - matlab如何求解大型、对称和稀疏线性系统

标签 matlab linear-algebra solver sparse-matrix

也就是说,当我对一个非常大、对称且稀疏的 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/

相关文章:

c++ - 如何将矩阵因式分解为核矩阵的乘积?

c - 最小化 C 语言的线性规划系统

matlab - 使用 MATLAB 实现视频稳定

python - Numpy 协方差矩阵 numpy.cov

c++ - Eigen :如果我只能计算 Aty 和 Ax,是否有可能创建类似 LeastSquareDiagonalPreconditioner 的调节器?

c++ - 模数中的线性组合 C++

python - 我的复杂方程上的 Scipy.optimize.fsolve()

python - 在 Python3.5 Numberjack (OSX) 上安装 SCIP 求解器

matlab - 找出两个信号之间的差异

c++ - 在 Visual Studio 中构建 MATLAB mex 文件给出 "LNK2019 unresolved external symbol _mexPrintf referenced in function mexFunction"?