关于比较数值方案准确性的问题

计算科学 pde 有限差分 数字 误差估计 平流扩散
2021-12-26 10:45:55

这是对我之前的帖子的跟进

我正在求解以下一维传输方程。

Ct=D2Cx2vCx

在入口(左边界),应用狄利克雷边界条件(1为入口节点号)C(1)=CL

在出口(右边界),扩散通量被忽略。DdCdx=0

我正在比较从以下实现计算的绝对误差,

  1. 使用反向差分和扩散使用中心差分近似离散对流项。

  2. 使用中心差分离散对流项,使用中心差分近似离散扩散。

在空间方向离散化后,pde 转换为一组 odes。使用刚性方程求解器求解 odes。

将上述 2 个实现的结果与从 MATLAB 的 pdepe 求解器获得的解进行比较,并计算绝对误差。

第一个实现的绝对误差如下图所示(使用 0.25 的空间离散化步长)。完整的代码可以在此处发布的解决方案中找到

在此处输入图像描述 第二种实现的绝对误差是 10^-13 的数量级。

据我了解,后向差分的截断误差为,中心差分的截断误差为,来自一阶导数的泰勒级数近似。从数值方案获得的误差对于后向 + 中心差为 0.04 量级,对于单独的中心差为 1e-13。我无法清楚地理解导致这种巨大差异的原因以及如何检查计算到泰勒级数截断阶数的误差。O(Δx)O(Δx2)

我想要求解释为什么在绝对错误中会出现这种巨大差异。

1个回答

正如我在评论中所写,您已将您的误差绘制为时间的函数,并询问这与您使用的不同有限差分方法的空间误差有何关系,这不是衡量这一点的正确方法。正确的方法是将您的两种方法错误与封闭形式的结果进行比较,并查看细化网格如何影响错误。

这使我想到了第二点,您的错误度量不是错误度量;您实际上是在测量您的实现与 pdepe 的比较。这意味着如果您编写与 pdepe 相同的求解器,您的错误标准将返回机器零值,即使显然情况并非如此。在我看来,您实现了编写中心差分方案的目标(我假设这是 pdepe 使用的),结果得到了一个返回机器零错误的标准。您编写的另一个求解器与 pdepe 不同,因此您的错误不为零。通过与我上面所说的封闭形式的已知结果进行比较,您会得到更好的服务,那么您的两个方案都会返回一个重要的错误估计。当您计算误差估计时,您应该问自己实际测量的是什么。