matlab - Matlab 中的数值问题 : Same input, 相同的代码 -> 不同的输出?

标签 matlab numerical

当我比较具有相同输入的 Matlab 软件的不同运行结果时,我遇到了问题。为了缩小问题范围,我执行了以下操作:

  • 使用 Matlab 的 save() 方法保存所有相关变量
  • 调用一个计算某些东西的方法
  • 使用 save() 再次保存所有相关的输出变量

在不更改调用方法的情况下,我又运行了一次

  • 加载上面保存的变量并使用isequal()与当前输入变量进行比较
  • 使用当前输入变量再次调用我的方法
  • 加载上面保存的输出变量并进行比较。

我无法相信最后“行”中的比较会检测到细微的差异。计算包括单精度数和 double ,误差在1e-10的量级(输出为 double )。

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

您知道上述观察结果可能是什么原因吗?

非常感谢!

最佳答案

这似乎真的是计算中的单/双混合造成的。由于我只切换到 double ,因此问题不再发生。感谢大家的想法。

关于matlab - Matlab 中的数值问题 : Same input, 相同的代码 -> 不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608853/

相关文章:

java - 在 Java 中运行 m 文件

matlab - 在 MATLAB 中简化迭代维度

matlab - matlab中的快速异或数组

python - OpenCV:src 不是数字元组

algorithm - 在近似树皮刻度上获取等距间隔

python - 如何像在 MATLAB 中一样在 Python 中创建数字范围

matlab - 如果矩阵中偶数/奇数则更改向量

c - 数值微分

c++ - 最准确的线相交坐标计算与 float ?

python - 加速一个计算巨大数组中邻居平均值的程序