特定の間隔でガンマ関数を近似する 3 パラメーター メソッドを作成しようとしています。近似は、右端点のリーマン和でなければなりません。
ガンマ関数は次の式で与えられます。
GAMMA(s) =
inf
INT x^(s-1) * exp(-x) dx
0
したがって、区間 (0, m) での右端のリーマン和近似は次のようになります。
GAMMA(s) ~
m
SUM ((m/n)*i)^(s-1) * exp(-(m/n)*i) * delta_x where delta_x = (m/n)
i=1
私のコードは次のとおりです。
def gamma(x = 4.0, n = 100000, m = 2500)
array = *(1..n)
result = array.inject(0) {|sum, i| sum + ((((m/n)*i)**(x-1))*((2.7183)**(-(m/n)*i))*(m/n))}
end
puts gamma
コードは 3 の近似値を返す必要があります! = 6 ですが、代わりに 0.0 を返します。私が間違っているかもしれないアイデアはありますか?