【发布时间】:2015-09-26 00:42:08
【问题描述】:
我有两个几乎相同的数字数组。当我计算它们的差异时,我得到一个由一半非常小的数字组成的数组(大约为 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 中显示更多数字,我希望看到这两个数字之间的差异。
【问题讨论】:
-
@HamtaroWarrior 仅更改显示,而不更改计算方式
-
@HH
vpa在 R2009b 中可用,但您需要符号工具箱 -
@AnderBiguri 我理解这个问题,我只是想知道是否有办法解决它。似乎至少有几个,但不幸的是我缺乏适当的资源。