Matlab:反向eps?正重的准确性?

Vi_*_*_Vi 2 matlab computation eps noise

eps返回从1.0到下一个最大双精度数的距离,因此我可以使用它来解释负权重位置上的数字值.但对于具有高正重量位置值的非常大的数字,我可以用什么来解释?

我的意思是我需要一些参考来计算在Matlab上获得的数字上的计算噪声.

Li-*_*Yip 6

你读过"每个计算机科学家应该知道的关于浮点运算的东西"吗?

它讨论了舍入误差(你称之为"计算噪声"),用于表示浮点数的IEEE 754标准,以及计算机上浮点数学的实现.

我相信阅读本文将回答您的问题,或者至少让您更深入地了解浮点数学的工作原理.


一些澄清以帮助您理解 - 太大而不适合@ Richante的帖子的评论:

首先,之间的差异realmineps:

  • realmin是最小的归一化浮点数.您可以用非规范化形式表示较小的数字.
  • eps是不同数字之间的最小增量.realmin= eps(realmin) * 2^52.

"归一化"和"非规范化"浮点数在上面链接的论文中进行了解释.

其次,舍入误差并不表示您可以"信任"多少n数字的数字.

举个例子,这个:

>> ((0.1+0.1+0.1)^512)/(0.3^512)

ans =

    1.0000
Run Code Online (Sandbox Code Playgroud)

我们0.3^512自己分开,所以答案应该是一个,对吧?我们应该能够信任每个数字eps(1).

此计算中的错误实际上是400 * eps:

>> ((0.1+0.1+0.1)^512)/(0.3^512) - 1

ans =

  9.4591e-014

>> ans / eps(1)

ans =

   426
Run Code Online (Sandbox Code Playgroud)

计算误差,即其中的程度n个数位不可信,远远大于eps,在答案的表示浮点舍入误差.请注意,我们在这里只进行了六次浮点运算!您可以轻松地获得数百万个FLOP以产生一个结果.

我会说这一次:eps()不是错误的在你的计算的指标.不要试图显示:"我的结果是1234.567 +/- eps(1234.567)".这是毫无意义和欺骗性的,因为它暗示你的数字比实际更精确.

eps,你的答案表示的舍入错误,只有十亿分之一左右.您的真正敌人是每次执行浮点运算时累积的错误,这就是您需要跟踪的错误估计值.