4

以下内容的完整内容位于《每个计算机科学家应该了解的浮点运算知识》的第 8 页。在下文中指出“一般而言,当基数为 b 时,以 ulps 表示的固定相对误差可以摆动高达 b 的因子。”

有人可以详细证明这一点吗?“以 ulps 表示的固定相对误差可以波动高达 b 的因子”到底是什么意思;如果相对误差是固定的,那么它如何摆动或改变?

相对误差始终以 e 为界,称为机器 epsilon。

...

为了说明 ulps 和相对误差之间的区别,请考虑实数 x = 12.35。它近似为在此处输入图像描述= 1.24 x 10^1。误差为 0.5 ulps;相对误差为 0.8 e。接下来考虑计算 8x。精确值为 8 x = 98.8,而计算值为 8 在此处输入图像描述 = 9.92 x 10^1。误差现在是 4.0 ulps,但相对误差仍然是 0.8 e。即使相对误差相同,以 ulps 为单位测量的误差也大 8 倍。一般而言,当基数为 b 时,以 ulps 表示的固定相对误差可以摆动高达 b 的因子。相反,如等式。(2) 表明,1/2 ulps 的固定误差导致相对误差可以摆动 b。

4

1 回答 1

7

它与您给出的报价在同一页面上进行了演示,在“一般情况下,当基数为 b 时,以 ulps 表示的固定相对误差可以摆动高达 b 的因子。”</p>

该段解释了从 1.0000…0 • b e到 d.dddd…d • b e的数字,其中 d 是,正如我在这里使用的那样,数字 b-1,具有相同的 ULP,因为 ULP 是最后一位数字,最后一位数字的值由 b 的指数(以及有效数字中的位数,对于格式是固定的)确定。

这些数字跨越(几乎)b 的比率,因为 d.dddd...d 几乎是 b,所以 d.dddd...d / 1 几乎是 b。但它们具有相同的 ULP。因此,一个 ULP对于数量的大小跨越了 b 的比率。

针对 2013 年 10 月 30 日,编辑:

“以 ulps 表示的固定相对误差可以波动高达 b 的因子”到底是什么意思;如果相对误差是固定的,那么它如何摆动或改变?

该错误据说是固定数量的 ULP。但是 ULP 的值不是固定的或恒定的,相对于浮点值而言,它是真正固定的或恒定的。

这里只是语言问题。将 ULP 称为“固定相对误差”是不准确的。但是,人们有时会在 ULP 中表达误差范围或误差量,因为浮点的性质会量化值,而这些量子就是 ULP。

ULP大约是一个相对误差。它在浮点格式的整个范围内保持在相同的范围内。考虑一个三位十进制格式:

  • 在 1.00 到 9.99 的区间内,ULP 的绝对值为 0.005。它相对于区间中的数字的值范围从 0.005 到(几乎)0.0005。
  • 在 1,000,000 到 9,990,000 的区间内,ULP 的绝对值为 5,000。它相对于区间中的数字的值范围从 0.005 到(几乎)0.0005。
  • 在 1.00•10 -100到 9.99•10 -100的区间内,ULP 的绝对值为 0.005•10 -100。它相对于区间中的数字的值范围从 0.005 到(几乎)0.0005。

如您所见,ULP 相对于浮点数的值始终保持在一个小区间内。因此,它用作相对误差的近似值。

我们在浮点算术中的相对误差表达式会以 b 因子摆动,这一事实来自两个数学事实:

  • 当您使用浮点算术并计算或得出有关可能发生的错误的证明时,您会发现自己以 ULP 为单位表达错误,因为浮点格式的量化导致边界处于 ULP 或半ULP。
  • 对于浮点值 x,当 x在浮点格式的单个指数区间内变化时,x 除以 x 的 ULP 的值会按因子 b 变化。当指数改变时,值 ULP(x)/x 将重置。
于 2013-10-29T14:47:32.720 回答