可以在多重网格方法中使用像 Thomas 这样的直接方法作为更平滑的方法吗?

计算科学 pde 迭代法 多重网格 带状矩阵
2021-12-05 02:50:46

据我所知,多重网格使用平稳迭代方法作为平滑器(即 GS),但我们也可以使用直接方法吗?

例如,如果我们有一个三对角系统(例如一维热方程),我们是否可以使用带空间粗化的 Thomas 算法(例如在 V 循环中)。我知道在这种特定情况下使用 Thomas 可以节省很多工作,但我很好奇?

2个回答

如果您可以使用直接求解器求解线性系统,那么这正是您应该做的。如果您没有时间或内存资源来使用直接求解器,多重网格是一种可以使用的方法(因为直接求解器的复杂性增长速度快于线性系统大小的如果您使用直接求解器作为多重网格方法中的子步骤,那么多重网格必然会继承直接求解器的复杂性,并且扩展性也很差。O(N)

有一个例外:在多重网格层次结构中,在某个级别或其他级别,您将到达线性系统变得相对较小的地方(因为线性系统的大小减少了 4 倍(在 2d 中)或 8 倍(在 3d 中)每次将网格粗化一级)。在这一点上,继续使用多重网格方法变得低效,并且只需精确地求解线性系统 - 通常使用直接求解器。但关键是人们不想在更精细的层面上这样做。

我不明白你为什么不能这样做。所以,我没有看到技术限制。

但是,使用直接方法求解(甚至是三对角系统)可能是矫枉过正。您可能只需要几次迭代(意味着只有几个非常便宜的矩阵向量产品)就可以使用迭代方法获得合理的平滑,而您必须使用直接方法实际求解系统。

在数学上,我会表达如下。定义为执行矩阵向量乘积的时间,并将为求解具有相同矩阵的三对角系统。tMVPtThomas

对于传统的工作流程,您将需要来达到所需的准确度因此,您更愿意在以下情况下使用迭代技术tMVPNiter(ε)ε

tMVPNiter<tThomas

这在很多情况下都是正确的。这里,是收敛到所需精度的迭代次数。对于多重网格平滑器,通常不会太高,因此使迭代求解器成为一般选择。Niter(ε)ε

此外,矩阵越复杂,执行直接求解的成本就越高。