私は現在、Matlab で初歩的な最適化アルゴリズムに取り組んでおり、Matlab が途方もない精度で変数を保存するという問題に直面しています。数回の反復で、変数が非常に大きくなり、sym.m である種の無限ループが実際にトリガーされます。
すべてを開始するコード行は次のとおりです。
SLine = (m * (X - P(1))) + P(2);
ここで、P = [2,2] および m = 1.2595 です。このコード行をコマンド ラインに手動で入力すると、SLine は記号式 (2519*X)/2000 - 519/1000 として保存されます。小数近似を使用していない理由はわかりませんが、少なくともこれらの分数には正しい値があります。ただし、このコード行を私のプログラムで実行すると、SLine が式 (2836078626493975*X)/2251799813685248 - 584278812808727/1125899906842624 として保存されます。これらの大量の断片が私のプログラムを通して運ばれ、コードの新しい行ごとに成長し、プログラムを停止させます。
なぜMatlabがこのように振る舞っているのか、誰にも分かりますか? 計算の実行中に使用する精度を指定する方法はありますか? ご協力いただきありがとうございます。