当前位置:  开发笔记 > 编程语言 > 正文

如何在MATLAB中计算eps()?

如何解决《如何在MATLAB中计算eps()?》经验,为你挑选了1个好方法。

epsMATLAB中的例程实质上返回浮点数之间的正距离.它也可以采用可选参数.

我的问题:MATLAB如何计算这个值?(它是使用查找表,还是使用某种算法在运行时计算它,或其他什么......?)

相关:在给定浮点数的情况下,如何以任何提供位访问的语言计算?



1> Adriaan..:

WIkipedia上有相当多的页面

特别是对于MATLAB,它是2 ^( - 53),因为MATLAB默认使用双精度.这是图表: 在此输入图像描述 它是符号的一位,指数的11位和分数的其余位.

关于浮点数的MATLAB文档也显示了这一点.

d = eps(x),其中x数据类型为single或double,返回正距离abs(x)到下一个相同精度的较大浮点数x.

由于并非所有分数在数字线上的间距相等,因此不同分数将在相同精度内显示到下一个浮点的不同距离.他们的位代表是:

1.0 = 0 01111111111 0000000000000000000000000000000000000000000000000000
0.9 = 0 01111111110 1100110011001100110011001100110011001100110011001101

两者的符号都是正(0),指数不相等,当然它们的分数差别很大.这意味着下一个浮点数将是:

dec2bin(typecast(eps(1.0), 'uint64'), 64) = 0 01111001011 0000000000000000000000000000000000000000000000000000
dec2bin(typecast(eps(0.9), 'uint64'), 64) = 0 01111001010 0000000000000000000000000000000000000000000000000000

因此,它们不一样eps(0.9)~=eps(1.0).


@jvriesem ["每个计算机科学家应该知道的浮点运算"](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html).
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有