これはやや漠然とした質問だと認識しているので、最善を尽くします。のような数値がある場合n = 0.783325849821429
、さらに小数点以下の桁数を表示する方法はありますか? これは long 形式で作成されました。問題は、正弦を使用して誤差推定計算を行っており、推定が正弦の実際の値に非常に近くなり、MATLAB が誤差を 0 と計算するポイントが来ることです。推定が完全に正確であるとは限りません。MATLAB が認識するには小さすぎるため、常にエラーが発生します。MATLAB で小数点以下の桁数を考慮する方法はありますか?
質問する
12186 次
4 に答える
3
フォーマットされた文字列を使用して、いつでも桁数を求めることができます
fprintf(1, 'n = %.20f\n', n ); % print with 20 digits after the decimal point
ただし、浮動小数点で格納される数値の精度には制限があります。
を使用して機械の精度をテストできますeps
eps( n )
推定誤差が推定よりも小さい場合eps
は、機械の精度の範囲内であり、測定できません。
于 2013-02-19T06:57:59.383 に答える
1
vpa (可変精度精度)で数字を使用します。可変精度演算の詳細はこちら... 記号演算ツールボックスが必要になることに注意してください。持っていない場合は、ファイル交換からJohn D'Errico のVariable Precision Integer Arithmeticを使用できます。
于 2013-02-19T06:55:30.107 に答える
0
vpa関数を使用して精度を上げると、変数がsymsになり、その後、この変数を他のmatlab内部関数に使用したい場合は機能しないため、他の方法を見つけます。
例えば
a=vpa(a,5)
a =
[ 1.25, 2.0276, 3.2108, 3.3695, 2.0589, 1.0]
polyval(a,3)
??? Undefined function or method 'isfinite' for input arguments of type
'sym'.
Error in ==> polyval at 54
if isscalar(x) && (nargin < 3) && nc>0 && isfinite(x) &&
all(isfinite(p(:)))
于 2014-05-05T08:28:55.077 に答える