提问人:m615 提问时间:11/3/2023 最后编辑:Cris Luengom615 更新时间:11/4/2023 访问量:80
我不明白 Machine Epsilon 是什么意思
I do not understand what Machine Epsilon means
问:
我正在学习Matlab和计算机算术,但我很难掌握Machine Epsilon的概念。我希望有一个简单的解释,就好像我还是个孩子一样。“2.2204e-16”是什么意思,添加“1”时有什么问题,它的目的是什么?
我只认为使用 64 位机器 epsilon,我们知道一个数字精确到第 16 位,但我有很多疑问。
答:
“2.2204e-16”是什么意思,添加“1”时有什么问题,它的目的是什么?
使用典型的 64 位浮点数,epsilon 约为 0.000000000000000022204(“2.2204e-16”或 2.2204*10-16)或正好是 2-52。
Epsilon:1 与给定浮点类型中可表示的大于 1 的最小归一化值之间的差值。
...
在 [0.5 和 1.0] 之间,64 位浮点步长各为 2-53。
在 [1.0 和 2.0] 之间,64 位浮点步长各为 2-52。Epsilon
在 [2.0 和 4.0] 之间,64 位浮点步长各为 2-51。
在 [4.0 和 8.0] 之间,64 位浮点步长各为 2-50。
。
我们知道一个数字精确到第十六位数字,但我有很多疑问。
典型的浮点数,如果以 2 为基数:±b.bbbbbbbb... * 2指数精确到 53 个二进制数字。
这大约是 15.95 或对数10(253) 十进制数字 ±d.ddddddd... * 10指数。
非零有限浮点数表示为 ±f•be,其中:
- b 是一个固定整数,它是格式的基础(最常见的是 2),
- f 是以 b 为基数的数字,带有 p 位数字,并且
- e 是某个区间内的整数指数,e 最小值 ≤ e ≤ e最大值。
f 称为有效。p 是格式的精度。f 被限制在某个间隔内。目前,1 我们取 1 ≤ f < b。例如,当 b = 2 且 p = 53(通常用于 的格式的精度)时,数字 1 表示为:double
- +1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
即“1.”后跟 52 个“0”数字,因此它是以 2 为基数的 53 位数字。
所谓的机器 epsilon 是我们为获得下一个可表示的数字而可以做出的最小更改。下一个数字是:
- +1.0000000000000000000000000000000000000000000000001 2•2 0.
所以区别在于:
-
- +0.000000000000000000000000000000000000000000000000001 2•2 0.
即 2−52•20 = 2−52 ≈ 2.220446049•10−16。
这是最小精度单位 (ULP) 1。
请注意,ULP 取决于数字的一般大小,特别是使用哪个指数来表示它。数字 32,768 用指数 15 表示:
- +1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
因此,下一个可表示的数字是:
- +1.00000000000000000000000000000000000000000000000001 2•2 15.
这意味着区别在于:
- +0.000000000000000000000000000000000000000000000000001 2•2 15.
即 2−52•215 ≈ 7.275957614•10−12。
因此,32,768 的 ULP 约为 7.275957614•10−12。
补充
我只认为使用 64 位机器 epsilon,我们知道一个数字精确到第 16 位,但我有很多疑问。
格式中的位数只能告诉您格式中数字的精度,而不能告诉它们有多准确。将数字转换为浮点格式时,会将其舍入为该格式。当您进行加法、乘法或执行其他运算时,普通算术结果将四舍五入为格式。在各种操作过程中,这些舍入误差可能会复合或抵消,因此最终结果可能非常不准确或可能准确。确定哪个以及多少可能很困难。无论浮点格式多么精确,某些操作序列几乎总是会产生不准确的结果。精度并不能告诉您准确性。
脚注
1 有时,将 f 缩放到区间 [b p−1, b p[,并相应地调整指数。这使得 f 始终是一个整数,因此它对于在浮点证明中使用数论很有用。有时,它被缩放为 [1/b, 1[.C 标准使用这个。在所有这些中,f 的第一个数字必须为非零。有时,允许第一个数字为零,这允许表示零和次正常数字。
评论