2017-08-07 7 views
2

Matlabの2 ^( - x)= realminの最大値xを-log2(realmin)という式で見つけようとしました。結果は1022です。しかし、1023から1074までのxの2 ^( - x)> 0コードを試してみると、結果は1(真)です。私の理解から、realminは最小の正の浮動小数点数です。だから、-log2(realmin)が2 ^( - x)> 0のような最大のxを与えない理由は何ですか?2 Matlabの^( - x)= realmin

+1

私はMatLabを知らないが、私はそれが最小の正の**正規化** FP番号であると思う。デノーマル(精度が低い)は小さくすることができます。 https://en.wikipedia.org/wiki/Denormal_numberを参照してください。 –

答えて

3

前述のように、realmin関数は最小の正規化数を返します。あなたは限り行くことができるように2 ^( - 1075年)、私は次のように非常に単純なスクリプト使用して見られるように、非正規化数を使用している間:

%% Script to check the smallest possible power of two in Matlab 

power = 0; 

while 2^power > 0 
    power = power - 1; 
end 

sprintf('%d', power) 

あなたの最初の選択肢です。また、MATLABで最小の非正規化数を取得するためにeps(0)を使用することができ、あなたが得るでしょう:正しい

Trial>> log2(eps(0)) 

ans = 

     -1074 

を。

詳細については、非正規化/正規化された数値に関するWikipediaページをお読みください。

関連する問題