比较相同水动力代码的两个版本及其错误

计算科学 浮点
2021-11-30 21:46:49

所以我有两个版本的流体动力学代码,它们具有相同的基础物理特性。让我们称它们为代码 A 和 B。但是代码 B 更优化且更面向对象。我试图比较两个代码的数值结果,看看它们是否兼容。我这样做的方式是使用相同的初始参数运行两个代码并计算特定的流体动力学值 X。

X 的数量级为 1E6。为了比较这两个代码,我实际上是在做

X(A)X(B)=ϵ,
在哪里ϵ是一些错误。测试是给ϵ=102.

这意味着两个代码的前 8 位数字都吐出相同的 X。

这个错误有多严重?我对非整数使用双精度,这样的大小是否仅仅意味着水电代码中涉及的数千次计算的累积舍入误差?还是我缺少的根本区别?

1个回答

如果两个不同的代码在某个不平凡的数量上同意 8 位数字,那么在几乎所有情况下,这都比您预期的要好得多。但是,在某些情况下,数量X选择不当,因此不具指示性。例如,如果您考虑模拟中的总质量,那么两个保守的代码可能会给出相同的答案,但它们产生的解的几乎所有其他方面都不同。换句话说,选择X很重要。但是,如果您的答案与 8 位数字相同,那么您很可能使用这两个代码都在正确的轨道上(或者它们都包含完全相同的错误)。