4

Matlab で多変量 t 分布の pdf 用に独自のコードを書いています。ガンマ関数を含むコードがあります。

gamma((nu+D)/2) / gamma(nu/2)

問題は nu=1000 であるため、ガンマ関数から Inf を取得します。ガンマ関数を別の方法で書き直すには、ガンマ関数の数学的な性質を使用する必要があるようです。

提案をありがとう

4

2 に答える 2

0

数値gamma(1000/2)が MATLAB サポートの最大数を超えています。したがって、「inf」が表示されます。MATLAB で最大数を確認するには、 を確認してくださいrealmax。あなたの場合、 D がそれほど大きくない場合、式を書き直す必要があります。あなたの場合、「D」が偶数であると仮定しましょう。式は次のようになります: nu/2 * (nu/2 -1) * ....* (nu/2 - D/2 + 1)。

sum1 = 1
for i = 1:D/2
sum1 = sum1*(nu/2 - i+1);
end

その後sum1、あなたが望む結果になります。

于 2013-04-01T22:28:48.140 に答える