Vi_*_*_Vi 2 matlab computation eps noise
eps返回从1.0到下一个最大双精度数的距离,因此我可以使用它来解释负权重位置上的数字值.但对于具有高正重量位置值的非常大的数字,我可以用什么来解释?
我的意思是我需要一些参考来计算在Matlab上获得的数字上的计算噪声.
它讨论了舍入误差(你称之为"计算噪声"),用于表示浮点数的IEEE 754标准,以及计算机上浮点数学的实现.
我相信阅读本文将回答您的问题,或者至少让您更深入地了解浮点数学的工作原理.
一些澄清以帮助您理解 - 太大而不适合@ Richante的帖子的评论:
首先,之间的差异realmin
和eps
:
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
,你的答案表示的舍入错误,只有十亿分之一左右.您的真正敌人是每次执行浮点运算时累积的错误,这就是您需要跟踪的错误估计值.