登录论坛

查看完整版本 : Matlab中的数字问题:相同的输入,相同的代码->不同的输出?


poster
2019-12-10, 20:48
将相同输入的Matlab软件的不同运行结果进行比较时,遇到了问题。为了缩小问题,我做了以下工作:


使用Matlab的save()方法保存所有相关变量
调用计算某物的方法
使用save()再次保存所有相关的输出变量
在不更改调用方法的情况下,我再次进行了运行


加载上面保存的变量,并使用isequal()与当前输入变量进行比较
使用当前输入变量再次调用我的方法
加载上面保存的输出变量并进行比较。
我不敢相信最后一个“行”中的比较会检测到细微的差异。计算包括单精度和双精度数,误差为1e-10(输出为双精度数)。

我能想象的唯一可能的解释是,要么在保存变量时Matlab失去了一些精度(我认为这不太可能,我使用默认的二进制Matlab格式),要么包含像a = b + c + d这样的计算,计算为a =(b + c)+ d或a = b +(c + d),这可能会导致数值差异。

您知道上述观察的原因可能是什么?

非常感谢!



回答:

它实际上似乎是由计算中的单/双混合引起的。由于仅切换到双精度,因此不再出现此问题。感谢大家的想法。



更多&回答... (https://stackoverflow.com/questions/3608853)