1

私のコードには次の問題があります。このような、オンラインで見つけた他の投稿を使用しようとしています。しかし、彼らは私が探しているものではありませんでした。

私のコードは、次のようなドットの後に32桁であることが重要な数値を最適化するMATLAB Exchange関数を使用しています

0.59329669191989231613604260928696

最適化関数はここにあり、fminsearchbnd 最適化関数はこれを計算し、コード全体で使用する変数に値を格納します。変数を格納するたびに最適化を実行しないようにするために (私は *.mat と文字列形式のラベルのいずれかを試しました。 14日以降の数字ですが、大事なことなので全部必要です!

vpa()シンボリック値では何もできないため、使用せずにそのような数値を読み取ることは可能ですか?

どんな助けでも本当に感謝しています。ありがとう

EDIT: fminsearchbndこれを私に与えますclass(bb)->doubleワークスペースでそれを見たいときは0.586675392365899. しかしformatSpec = '%.32f\n';、最適化によって得られるすべての数値を見たいために設定すると、次のように入力しますset(editLabel,'String',num2str(bb,formatSpec))

4

1 に答える 1

2

IEEE754 64 ビット倍精度浮動小数点数では正確に表現できない数値を保存/使用しようとしています。

vpa()そもそも64ビットdoubleがMatlabの最大精度であるため、最初に使用せずにその数値を取得した方法がわかりません...

同じ FEX から、 Ben Barrowes による多精度ツールボックス、またはJohn d'Errico によるHPFを使用できます。ファイルとの間で保存/ロードする場合は、文字列との間で変換/構築する必要があります。

しかし、ジョンのコメントに同意する必要があります。

事実、ほとんどの場合、double でそれができない場合は、何か間違ったことをしているということです。

では、なぜこれらの 32 桁以上の数字が重要なのでしょうか?

于 2013-06-05T07:40:00.973 に答える