二阶导数的中心差分方案导致病态

计算科学 调理
2021-12-24 05:02:50

中心差分方案:

d2udx2=un+12ui+un1Δx2
产生一个三对角系数矩阵 [1 -2 1];随着点数变大,这个矩阵变得病态。然而,这是一种流行的离散化。为什么这种方案在容易出现病态的情况下如此普遍,以及病态的典型解决方法是什么?

1个回答

TL;DR:连续算子表现出这种行为,任何忠实的离散化都会继承它。

更深切:如果您查看连续算子的频谱(特征对)d2dx2, 特征向量是形式的三角函数cos(kx)sin(kx), 有特征值k2. 低频函数(即恒定或非常平滑的函数)可以很好地表示在任何网格上。随着您对更多点进行细化和采样,您也将更接近高频解。因此,基本上这个算子的任何收敛离散化都会有一个几乎恒定的λmin特征值和λmax随样本数二次增长的特征值(因此,条件数κ=λmax/λmin随 N 二次增长)。所以你不能仅仅通过摆弄 FD 方案和 FE 方案等来真正摆脱这种命运。

这对于(例如)Krylov 求解器或其他收敛取决于条件数的技术是有问题的(因此解决这个问题需要超过线性的时间复杂度)。但是您可以使用多分辨率分析(尤其是多网格,它可以解决这个问题,以及许多其他类似的,在O(N)时间)。多重网格的收敛特性都是基于这种光谱/傅里叶分析。