Matlab ソフトウェアの異なる実行結果を同じ入力で比較すると、問題が発生します。問題を絞り込むために、次のことを行いました。
- Matlab の save() メソッドを使用して、関連するすべての変数を保存します
- 何かを計算するメソッドを呼び出す
- save() を使用して、関連するすべての出力変数を再度保存します
呼び出されたメソッドを変更せずに、別の実行を行いました
- 上記で保存した変数をロードし、isequal() を使用して現在の入力変数と比較します
- 現在の入力変数を使用してメソッドを再度呼び出す
- 上記で保存した out 変数を読み込んで比較します。
最後の「行」の比較でわずかな違いが検出されるとは信じられません。計算には単精度と倍精度の数値が含まれ、誤差は 1e-10 の大きさです (出力は倍精度の数値です)。
私が想像できる唯一の説明は、変数を保存するときにMatlabがいくらかの精度を失うことです(私は非常にありそうにないと思います、私はデフォルトのバイナリMatlab形式を使用します)、またはa = b + c + dのような計算が含まれている可能性がありますa=(b+c)+d または a=b+(c+d) として計算され、数値の違いにつながる可能性があります。
上記の観察の理由が何であるか知っていますか?
どうもありがとう!