我在求解稀疏线性方程 Ax = b 时遇到了一些问题
我的矩阵 A 是稀疏的,尺寸为 500 万乘 500 万。实际上,它是两个矩阵的组合。一个是三对角矩阵,另一个矩阵具有更大的频带。例如 行具有非零对角线条目。加上非零元素,,, ,,,柱子。所以每一行都有几乎 6 个非零元素加上非零对角线条目。
我尝试在 matlab 中使用几个迭代求解器,但它们似乎并没有给出很好的准确性。此外,如果我长时间运行迭代,我将有四舍五入的错误和所有。我该怎么做才能得到最好的估计?
我在求解稀疏线性方程 Ax = b 时遇到了一些问题
我的矩阵 A 是稀疏的,尺寸为 500 万乘 500 万。实际上,它是两个矩阵的组合。一个是三对角矩阵,另一个矩阵具有更大的频带。例如 行具有非零对角线条目。加上非零元素,,, ,,,柱子。所以每一行都有几乎 6 个非零元素加上非零对角线条目。
我尝试在 matlab 中使用几个迭代求解器,但它们似乎并没有给出很好的准确性。此外,如果我长时间运行迭代,我将有四舍五入的错误和所有。我该怎么做才能得到最好的估计?
迭代方法的收敛性不取决于矩阵的稀疏结构,但(对于 Krylov 方法)取决于其特征向量的分布。甚至可以构建 GMRES 收敛速度非常慢的对角 (!) 矩阵。
如果您的矩阵带宽较窄,建议使用某种 LU 求解器是安全的。但是,这些条目 14725 和 44175 表示范围很广,由于填充效应,LU 可能不得不使用大量内存。
无论如何,如果您正在探索线性系统的求解方法,那么 500 万个未知数对许多人来说都是可以玩的。我的第一个建议是调整您的问题,使未知数约为几千(如果您的问题源于 PDE,您可以增加网格大小),然后检查光谱属性并了解求解器。