Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab中的数字问题:相同的输入,相同的代码->不同的输出?

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

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

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

非常感谢!



回答:

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



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 21:18


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