我正在尝试通过有限差分来求解2D泊松方程。在此过程中,我获得了每个方程式中只有变量的稀疏矩阵。例如,如果变量为U,则离散化将产生:
我知道我可以通过迭代方法求解该系统,但是我想到,如果我对变量进行适当排序,我也许能够获得可以通过直接方法(即高斯消去w)求解的带状矩阵。 / o旋转)。这可能吗?是否有其他策略可用于其他结构较疏的稀疏系统呢?
我正在尝试通过有限差分来求解2D泊松方程。在此过程中,我获得了每个方程式中只有变量的稀疏矩阵。例如,如果变量为U,则离散化将产生:
我知道我可以通过迭代方法求解该系统,但是我想到,如果我对变量进行适当排序,我也许能够获得可以通过直接方法(即高斯消去w)求解的带状矩阵。 / o旋转)。这可能吗?是否有其他策略可用于其他结构较疏的稀疏系统呢?
Answers:
在稀疏直接求解器领域,这是一个经过充分研究的问题。我强烈建议阅读Joseph Liu的多前沿方法概述,以更好地了解重新排序和超节点如何影响填充和求解时间。
嵌套解剖是生成重新排序的一种极为常见的方法,并且基本上由递归图分区组成。MeTiS是图形分区的事实上的标准,您可以在此处了解其背后的一些想法。另一个常用的软件包是SCOTCH,Chaco也很重要,因为它的作者介绍了多级图分区,这也是MeTiS背后的基本思想。
乔治和刘翔出现在他们的经典书 是2D稀疏直接的解决方案只需要工作和Ø (ñ 日志ñ )内存,而3D稀疏直接需要Ø (ñ 2)工作和Ø (ñ 4 / 3)记忆。
Cuthill-McKee是您要做的事实上的标准。如果您想使用这种方法,Boost Graph Library(BGL)中有一个易于使用的算法实现(及其反向),并且文档中包含使用方法的示例。
在应用数学界中有一种称为ADI(交替方向隐式)的算法,在物理界中有一种称为分裂算符的算法,基本上可以完成您所描述的事情。这是一种迭代方法,它遵循以下基本过程:
重复1和2,直到错误尽可能小为止。
我不知道该算法的形式复杂性,但是我发现每次使用它时,它的收敛迭代次数都少于Jacobi和Gauss-Seidel之类的迭代次数。