数值误差的科学标准

计算科学 误差估计 数字
2021-12-14 19:48:43

在我的研究领域中,实验错误的规范是普遍接受的,未能提供它们的出版物会受到高度批评。同时,我经常发现提供数值计算的结果时没有考虑任何数值误差,即使(或者可能是因为)经常有问题的数值方法在起作用。我说的是由离散化和数值计算的有限精度等引起的误差。当然,这些误差估计并不总是容易获得,例如在流体动力学方程的情况下,但它通常似乎是由懒惰引起的,而我相信数值误差估计的规范应该和实验结果一样是标准的。因此我的问题是:

4个回答

您的问题是关于模型验证的问题。您可以通过搜索验证和确认(Roache 1997、2002、2004Oberkampf & Trucano 2002 Salari & Knupp 2000Babuska & Oden 2004 以及更广泛的不确定性量化主题来找到有关方法和标准的大量资源我不想详细说明方法,而是想强调一个在这个问题上采取坚定立场的社区。

1986 年,Roache、Ghia 和 White 建立了Journal of Fluids Engineering 关于控制数值精度的编辑政策声明

计算流体动力学界以及更广泛的计算物理学领域都存在一个专业问题。即,需要更高的数值精度控制标准。

[...] 这个问题当然不是 JFE 所独有的,在 1980-81 年 AFOSRHTTM-斯坦福复杂湍流会议上得到了更加突出的关注。该会议的评估委员会得出的结论是,在提交给该会议的大多数意见书中,无法评估和比较不同湍流模型的准确性,因为无法区分物理建模错误和与算法相关的数值错误和网格。对于一阶精确方法和混合方法尤其如此。

他们以非常直接的指导方针结束:

Journal of Fluids Engineering 不接受发表任何报告流体工程问题数值解的论文,该论文未能解决系统截断误差测试和精度估计的任务。

[...] 我们必须明确指出,固定网格中的单一计算是不可接受的,因为不可能从这样的计算中推断出准确度估计。此外,编辑不会认为与实验数据的合理一致性足以证明准确性,尤其是在涉及任何可调整参数的情况下,例如在湍流建模中。

当前版本包含一套全面的标准,并代表了我认为其他领域应该追求的标准。可耻的是,即使在今天,很多领域都没有意识到模型验证的重要性。

不存在这样的标准,因为可靠的误差估计通常比近似计算成本高得多。

基本上有四种误差估计:

(i) 证明数值方法在数值上稳定的理论分析。这并没有真正给出错误栏,因为分析仅保证所产生的错误不比输入参数中的量化错误更差。它足以满足大多数科学计算的需要,因为输入也只是近似的,因此使用数值稳定方法所产生的误差并不比使用稍微不同(但未知)的输入更糟糕。大多数备受推崇的数值方法都伴随着数值稳定分析,尽管几乎没有任何实现可以根据请求报告所产生的所谓后向误差。

(ii) 渐近误差估计。这些假设可以忽略所有误差的乘积(输入误差、舍入误差或离散化误差是最常见的来源)(如果函数非常非线性,则值得怀疑),并使用敏感性分析来传播输入误差。与数值稳定性分析一起,这还可以捕捉舍入误差或离散化误差的影响。由此产生的误差线与它们所基于的假设的有效性一样可靠。使用自动微分工具,误差估计的成本通常是近似成本的 1 或 2 倍。因此,这种错误估计在实践中相当频繁。

[编辑] 例如,Oettli-Prager 定理为线性系统的解提供了易于计算的反向误差估计。敏感性分析表明,这些误差必须乘以矩阵逆的范数,这可以使用 Hager 估计器(内置于现代条件数估计器中)来估计。

(iii) 随机误差分析:(CESTAC,http ://www.sciencedirect.com/science/article/pii/0378475488900705) 这是通过使用相应的随机变量重载所有操作来完成的,该变量评估三组参数,然后添加人工随机舍入误差。最后三个结果用于计算平均值和标准差的平方根(与平均值的偏差平方和除以 2 = 3-1)。这给出了舍入误差部分的相当有用的准确度估计。然而,这没有考虑离散化误差,这通常是 ODE 和 PDE 计算中的主要误差。由于执行重载操作的开销,成本取决于编程语言。假设(几乎从未如此)重载没有时间损失,与仅计算近似值相比,结果加误差估计的成本是 3 倍。

(iv) 区间分析:如果做得好,这会为所有错误源提供严格的界限,但除了简单的情况外,它需要大量经验(或体现它的软件)才能以一种界限不会严重高估真实错误的方式进行. 良好的区间软件可用于线性代数(例如,IntLab http://www.ti3.tu-harburg.de/rump/intlab/;如果维度很大,则成本约为 6)和全局优化(例如, 椰子http://www.mat.univie.ac.at/~coconut/coconut-environment/; 可能比近似全局优化更昂贵甚至更便宜,具体取决于问题特征)。但是,对于当前一代的区间方法来说,许多其他易于精确处理的问题(例如,封闭太阳系大行星 10 年的轨迹)完全遥不可及。

有点。数值分析师得出的理论误差范围通常被高估,在实践中可能没有那么有用,因为它们可能涉及在实践中难以获得的信息。一个很好的例子是常方程解中数值误差的界限,您可以在 Hairer 和 Wanner 的书中找到。Nick Higham 的书Accuracy and Stability of Numerical Algorithms(我可能对标题稍有偏离)也提供了一些常见数值运算和线性代数算法的误差界限。数值分析文献中充斥着这样的界限。

区间分析方法也被用于计算误差范围;这些方法是严格的,并且往往提供比理论误差范围更大的误差范围,但这些方法仍然可能严重高估数值计算中的误差。这些方法在全局优化中得到了最好的利用(据我所知),但也在不确定性量化中找到了用途。Arnold Neumaier 至少写过一本关于区间分析方法的书,并且更有资格详细评论这个主题。除了潜在的高估问题外,区间分析方法还需要额外的计算基础设施,这些基础设施需要改造现有的大型数值模拟包(如 PETSc、Trilinos、CLAWPACK/PyClaw 等)。) 包括区间算术和自动微分(对于基于泰勒的方法)。从我所见,虽然有一些许可,但没有多少许可的区间算术和自动微分包。即便如此,有时这些库的功能也有限。很难找到具有类似 BLAS 功能的许可(LGPL,或类似 BSD)区间算术库。

后验误差估计可以更容易地获得,但并不严格。我对常微分方程工作中的这些估计最为熟悉,但它们也存在于许多用于计算偏微分方程解的方法中。

更广泛地说,不确定性量化的方法,例如使用多项式混沌展开、蒙特卡洛方法或其他采样方法,可用于量化由于输入参数变化导致的计算中的不确定性。由于参数的变化,这些方法应该能够提供某种启发式“误差线”,但不会给出严格的界限。

我相信你对数值误差的规范是绝对正确的:计算科学应该像基于实验的物理科学一样严格地呈现其结果。在这个领域有很多工作正在进行(在总称“不确定性量化”和“数值分析”下),我希望在未来某个时候讨论大多数计算结果时包括误差线.

除了其他答案之外,还有几点需要考虑。

  1. 数值离散化误差,或至少方案的阶数,可以通过分析确定。如果论文使用众所周知的方案,则可能会从论文中省略对这些错误的讨论。
  2. 网格细化研究相同的问题,通常是一些简单的问题,在逐渐细化的网格上运行。将这些与精确解或非常精细的网格上的解进行比较,以找到 L 范数,通常为 L2。这个误差估计的斜率给出了准确度的顺序。
  3. 在不同数值方案可用但网格细化或精确解不可用的问题中,另一种称为 Richardson Extrapolation 的方法将给出误差项的界限。可以在本文中找到描述这些方法的良好评论
  4. 最后,每个期刊都有自己的接受标准。有些是严格的,有些则不是。例如,AIAA在这里列出了它的标准。其他期刊也有类似的作者信息。