首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有可能绕过Matlab epsilon?

是否有可能绕过Matlab epsilon?
EN

Stack Overflow用户
提问于 2015-07-08 08:12:59
回答 1查看 85关注 0票数 2

我有两个数列,它们几乎是相同的。当我取它们的差时,我得到了一个半个非常小的数字的数组(1e-16的阶数),和一半相同的0。我几乎肯定,这是由于四舍五入的问题;也就是说,这两个条目之间的差异小于epsilon。

尽管如此,我仍然想显示所有条目之间的差异(即使它们非常小)。有什么办法可以绕过Matlab的epsilon公差吗?也许会使用一些巧妙的数组缩放?

编辑:这是我的问题的一个例子。数组a精确到精确到15位(从C文件输出复制),而数组b来自Matlab。以a的一个元素为例,它正是1.00002429399044。现在从这里减去b中相应的条目,它显示为1.00002429399044。根据Matlab,两者的区别是2.22044604925031e-16。这意味着b条目中的数字必须比正在显示的数字多。

考虑同样的场景,a的元素是1.00003105215213。现在,这个数字与b中显示为1.00003105215213的元素之间的区别正是0。我很难解释,在这种情况下,存储的数字是完全相同的-也就是说,如果我能够在Matlab中显示更多的数字,我就会看到这两个数字之间的区别。

EN

回答 1

Stack Overflow用户

发布于 2015-07-09 03:50:36

如果Matlab中有两个浮点数 x和y,并且x-y的计算值为0,这意味着x和y实际上是相等的:它们内部由长度为64的相同的0-1字符串表示。减法操作不会“由于舍入问题”而丢失信息;相反,您不是一开始就没有信息,就是在减法之前丢失了它。

如果你怀疑它们x和y不应该是相等的,那么您必须查看前面发生的事情,因为它们是计算出来的。如果知道最终的目标是比较x与y,那么就有可能重新组织计算。

简单的例子:如果我想要计算一些大型x的y=sqrt(x^2+1),那么这个公式就可以按照所写的那样做得很好。但是,如果我的最终目标是将结果与x进行比较,即考虑sqrt(x^2+1)-x,我将使用sqrt(x^2+1)-x = 1/(sqrt(x^2+1)+x)这一事实进行不同的处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31287004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档