Matlab で多変量 t 分布の pdf 用に独自のコードを書いています。ガンマ関数を含むコードがあります。
gamma((nu+D)/2) / gamma(nu/2)
問題は nu=1000 であるため、ガンマ関数から Inf を取得します。ガンマ関数を別の方法で書き直すには、ガンマ関数の数学的な性質を使用する必要があるようです。
提案をありがとう
Matlab で多変量 t 分布の pdf 用に独自のコードを書いています。ガンマ関数を含むコードがあります。
gamma((nu+D)/2) / gamma(nu/2)
問題は nu=1000 であるため、ガンマ関数から Inf を取得します。ガンマ関数を別の方法で書き直すには、ガンマ関数の数学的な性質を使用する必要があるようです。
提案をありがとう
数値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
、あなたが望む結果になります。