У меня возникают проблемы при сравнении результатов разных запусков моего программного обеспечения Matlab с одним и тем же вводом. Чтобы сузить проблему, я сделал следующее:
- сохранить все соответствующие переменные с помощью метода save () Matlab
- вызов метода, который вычисляет что-то
- снова сохранить все соответствующие выходные переменные, используя save ()
Не меняя вызываемый метод, я сделал еще один запуск с
- загрузить переменные, сохраненные выше, и сравнить с текущими входными переменными, используя isequal ()
- снова вызвать мой метод с текущими входными переменными
- загрузить сохраненные выше переменные out и сравнить.
Я не могу поверить, что сравнение в последней "строке" обнаруживает небольшие различия. Расчеты включают числа одинарной и двойной точности, погрешность составляет 1e-10 (на выходе - двойное число).
Единственное возможное объяснение, которое я могу себе представить, это то, что либо Matlab теряет некоторую точность при сохранении переменных (что я считаю очень маловероятным, я использую двоичный формат Matlab по умолчанию), либо что есть вычисления, включенные как a = b + c + d , который может быть рассчитан как a = (b + c) + d или a = b + (c + d), что может привести к численным различиям.
Вы знаете, в чем может быть причина описанных выше наблюдений?
Большое спасибо!