MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   Matlab中的数字问题:相同的输入,相同的代码->不同的输出? (https://www.labfans.com/bbs/showthread.php?t=23846)

poster 2019-12-10 20:48

Matlab中的数字问题:相同的输入,相同的代码->不同的输出?
 
将相同输入的Matlab软件的不同运行结果进行比较时,遇到了问题。为了缩小问题,我做了以下工作:
[LIST][*]使用Matlab的save()方法保存所有相关变量[*]调用计算某物的方法[*]使用save()再次保存所有相关的输出变量[/LIST]在不更改调用方法的情况下,我再次进行了运行
[LIST][*]加载上面保存的变量,并使用isequal()与当前输入变量进行比较[*]使用当前输入变量再次调用我的方法[*]加载上面保存的输出变量并进行比较。[/LIST]我不敢相信最后一个“行”中的比较会检测到细微的差异。计算包括单精度和双精度数,误差为1e-10(输出为双精度数)。

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

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

非常感谢!



[B]回答:[/B]

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



[url=https://stackoverflow.com/questions/3608853]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:05

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.