我正在学习Matlab和计算机算术,但我很难理解机器事件的概念。我希望你能像个孩子一样简单地解释一下。“2.2204e-16”是什么意思,当我们添加“1”时会有什么问题,它的目的是什么?我只认为,有了64位的机器计数器,我们就知道一个数字精确到第十六位,但我有很多疑问。
lh80um4z1#
'2.2204e-16'是什么意思,当我们添加'1'时有什么问题,它的目的是什么?使用典型的64-bit floating point,x1=about 0.0000000000000022204('2.2204e-16'或2.2204*10-16)或正好2-52。Epper:1和在给定浮点类型中可表示的大于1的最小规格化值之间的差。...在[0.5和1.0]之间,64位浮点步长为2-53。在[1.0和2.0]之间,64位浮点步长为2-52。在[2.0和4.0]之间,64位浮点步长为2-51。在[4.0和8.0]之间,64位浮点步长为2-50。...我们知道一个数字精确到十六位数,但我有很多疑问。典型的浮点数,如果以2为基数:±b. bbbbbbb... * 2指数精确到53 * 二进制 * 位。也就是 about 15.95或log 10(253)decimal digits ±d.ddddddd... * 10 exponent。
nafvub8i2#
非零有限浮点数表示为±f·b**e,其中:
double
即“1.”后跟52个“0”数字,因此它是以2为基数的53位数。所谓的机器epsilon是我们能做出的最小改变,以得到下一个可表示的数字。下一个数字是:
所以区别在于:
即2−52·20 = 2−52 ≈ 2.220446049·10−16。这是最小精确度单位(ULP)1。注意,ULP取决于数字的一般大小,具体地取决于使用哪个指数来表示它。数字32,768用指数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 的第一位必须非零。有时,允许第一位为零,这允许表示零和 * 次正规 * 数。
2条答案
按热度按时间lh80um4z1#
'2.2204e-16'是什么意思,当我们添加'1'时有什么问题,它的目的是什么?
使用典型的64-bit floating point,x1=about 0.0000000000000022204('2.2204e-16'或2.2204*10-16)或正好2-52。
Epper:1和在给定浮点类型中可表示的大于1的最小规格化值之间的差。
...
在[0.5和1.0]之间,64位浮点步长为2-53。
在[1.0和2.0]之间,64位浮点步长为2-52。
在[2.0和4.0]之间,64位浮点步长为2-51。
在[4.0和8.0]之间,64位浮点步长为2-50。
...
我们知道一个数字精确到十六位数,但我有很多疑问。
典型的浮点数,如果以2为基数:±b. bbbbbbb... * 2指数精确到53 * 二进制 * 位。
也就是 about 15.95或log 10(253)decimal digits ±d.ddddddd... * 10 exponent。
nafvub8i2#
非零有限浮点数表示为±f·b**e,其中:
double
的格式的精度)时,数字1表示为:即“1.”后跟52个“0”数字,因此它是以2为基数的53位数。
所谓的机器epsilon是我们能做出的最小改变,以得到下一个可表示的数字。下一个数字是:
所以区别在于:
即2−52·20 = 2−52 ≈ 2.220446049·10−16。
这是最小精确度单位(ULP)1。
注意,ULP取决于数字的一般大小,具体地取决于使用哪个指数来表示它。数字32,768用指数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 的第一位必须非零。有时,允许第一位为零,这允许表示零和 * 次正规 * 数。