由 RD(f)和 RU(f)表示通过在浮点运算中评估函数 f 获得的计算近似值分别向下舍入和向上舍入。
假设我们从舍入错误分析中知道
| RD(f) - f | < E 和
| RU(f) - f | < ë
RD(f)和 RU(f)之间差异的界限是什么,
| RD(f) - RU(f)| < E 或
| RD(f) - RU(f)| < 2E ?
[UPD]除了评论:
考虑一个带有p = 4
的“玩具”十进制浮点系统(精度,有效数字中的总位数,包括小数点左边的一个数字)和一个无界指数。对于此系统,单位舍入u
定义如下:
u = 1/2 * 10^{1-4} = 0.0005
,
u = 10^{1-4} = 0.001
用于任何定向舍入模式。
我们假设需要在这样的系统中计算f = (1.324/1.567 + 1.641/1.878)
。
f
的确切价值为1.7187285282921926...
。
错误分析显示
| RD (f) - f | <= E
和
| RU (f) - f | <= E
,
其中E = n * u * (|1.324/1.567| + |1.641/1.878|)
,
并且,如上所述,u = 0.001
。
所以,
E = 2 * 0.001 * 1.7187285282921926 = 0.0034374570565843852
(这是一个粗略的估计,因为f
被舍入了。)
现在让我们计算RD(f)
和RF(f)
:
RD(f) = RD(0.8449266113592853 + 0.8738019169329073) = RD(0.844 + 0.873) = 1.717
RU(f) = RU(0.8449266113592853 + 0.8738019169329073) = RU(0.845 + 0.874) = 1.719
所以,
|RD(f) - f| = 0.0017285282921926
|RU(f) – f| = 0.0002714717078074
和
|RD(f) - RU(f)| = 0.002 < 0.0034374570565843852
由此我认为|RD(f) - f| = E
只有|RU(f) – f| = 0
,反之亦然。因此,
| RD(f) - RU(f)| &lt; = E 。
或者这个例子有问题吗?
答案 0 :(得分:2)
设 u 为1与下一个可表示的数字之间的差值大于1.(这是最小精度单位[ULP]为1,有效数字中最低有效位的值以浮点格式表示1。)
考虑函数f( x )=(4 - ( x +½ u ) - 3)/(½ û)。 f(1)的精确数学值为1,但舍入的计算值为0,舍入的计算值为0:
因此,对于域 x ∈{1}上的此函数,我们有一个错误界限 E = 1,这样| RD(f) - f | ≤ E 和| RU(f) - f | ≤ E ,但| RD(f) - RU(f)| ≤0。
相反,考虑函数(x +½ u - 1)/(½ u )。 f(1)的精确数学值再次为1,但现在舍入的计算值为-1,而舍入的计算值为+1。
所以,在这种情况下,我们有相同的错误绑定 E = 1,这样| RD(f) - f | ≤ E 和| RU(f) - f | ≤ E ,但现在是| RD(f) - RU(f)|的最佳限制是| RD(f) - RU(f)| ≤2
所以,一般来说,给定| RD(f) - f | ≤ E 和| RU(f) - f | ≤ E ,| RD(f) - RU(f)|的最佳界限可以从0到2 波动。
总的来说回答了这个问题。在评论中,你会询问f = a1 / b1 + a2 / b2 + ... + an / bn是否为正ai和bi。给定约束,并且如果所有b值都是可表示的,我认为每个舍入误差必须对计算结果具有负(朝向-∞)效果,并且每个舍入误差必须具有正效果(朝向+∞)。 (如果任何b值不可表示,则其舍入将对最终结果产生相反的影响,并且以下分析不适用。)如果 E 是最佳(最小)限制,则| RD (f) - f | &LT; E 和| RU(f) - f | &LT; E ,那么| RD(f) - RU(f)|是不可能的&LT; E ,| RD(f) - RU(f)|必须&LT; 2 电子的
(如果你改变&lt;to≤,那么,如果 E 是最好的界限,那么| RD(f) - f |≤ E 和| RU( f) - f |≤ E ,当且仅当 E 时,| RD(f) - RU(f)|≤ E 是可能的如果 E 为0,则显然是正确的,这意味着算术是精确的。如果 E 不为零,那么其中一个计算必须有一些非零错误,因此另一个也是如此。由于计算过程中错误必然是单调的,因此最终错误必须保持非零且符号相反。)
[事实证明我在f( x )中不需要参数 x ;我可以简单地使用问题中提出的常数函数f。但是,在我意识到我不需要之前,我就用这种方式编写了演示。]