Matlab:eps的逆向?正重量的准确性?

标签 matlab noise eps computation

eps 返回从 1.0 到下一个最大 double 字的距离,因此我可以用它来解释负权重位置上的数字值。但是对于在高正权重位置具有值(value)的非常大的数字,我可以用什么来解释?

我的意思是我需要一些引用来计算 Matlab 上获得的数字的计算噪声。

最佳答案

你读过"What Every Computer Scientist Should Know About Floating-Point Arithmetic"吗? ?

它讨论了舍入误差(您所说的“计算噪声”)、 float 表示的 IEEE 754 标准以及计算机上 float 学的实现。

我相信阅读本文可以回答您的问题,或者至少让您更深入地了解 float 学的工作原理。

<小时/>

一些有助于您理解的说明 - 太大,无法容纳@Richante 帖子的评论:

首先,realmineps的区别:

  • realmin 是最小的标准化 float 。您可以以非规范化形式表示较小的数字。
  • eps 是不同数字之间的最小增量。 realmin = eps(realmin) * 2^52

“标准化”和“非标准化” float 在上面链接的论文中进行了解释。

其次,舍入误差并不能表明您对数字的第 n 位数字的“信任程度”。

举个例子:

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

ans =

    1.0000

我们将 0.3^512 除以自身,所以答案应该正好是 1,对吗?我们应该能够信任 eps(1) 以内的每一位数字。

这个计算的误差实际上是400 * eps:

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

ans =

  9.4591e-014

>> ans / eps(1)

ans =

   426

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

我再说一遍:eps() 不是计算错误的指标。不要尝试显示:“我的结果是 1234.567 +/- eps(1234.567)”。这是毫无意义且具有欺骗性的,因为它意味着您的数字比实际情况更精确。

eps,您的答案的表示中的舍入误差仅为十亿分之一左右。您真正的敌人是每次执行浮点运算时累积的错误,这就是您需要跟踪的错误,以便对错误进行有意义的估计。

关于Matlab:eps的逆向?正重量的准确性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137137/

相关文章:

latex - Inkscape 搞砸了 EPS 文件

r - 使用 R 将图形导出到 .eps 文件

matlab - 如何在Matlab中显示小数点后n位

matlab - 覆盖matlab中抽象类的empty()方法

javascript - RecordRTC产生噪音,无需录制耳机视频

c++ - 程序生成无缝分形噪声纹理

python - Matplotlib imshow 与 EPS

matlab - Netlab的函数mlperr计算均方误差吗?

matlab - 3D 矩阵乘以 2D 矩阵

algorithm - 我可以使用 3 维单纯形噪声实现在球面上生成噪声吗?