ガンマ関数

Juliaを用いて,ガンマ関数[gamma function]をプロットする.Juliaに組み込まれているガンマ関数と新たに定義したガンマ関数でプロットして比較.Juliaに組み込まれているものを利用するのが良いのはもちろんであるが,ガンマ関数の理解のために.

using Plots

# ガンマ関数の近似値を計算するための関数.
# 引数xはベクトル型.
# <:Realという制約により,実数型のベクトルである必要あり
function gamma_func(x::AbstractVector{<:Real})
#結果を格納するintegralというベクトルをxと同じ長さで初期化
integral = zeros(length(x))
#100000回のループを回す
for i in 1:100000
# 積分区間を[0, 10]に分割し,その区間の中点をtとして定義
t = i / 10000
# ガンマ関数の定義にあるガウス積分を数値積分で近似.
# .^と.*は要素ごとの累乗と乗算を意味するブロードキャスト演算子.
# /10000は,台形公式による数値積分の重み付けを表現.
integral += ((t .^ (x .- 1)) * exp(-t))*(1 / 10000)
end
return integral
end

# プロットするx座標の値を0.1間隔で作成.
x=0.1:0.1:5
y1=gamma_func(x)
y2=gamma.(x)

plot(x,y1,label="approximate gamma function")
plot!(x,y2,label="built-in gamma function")


INDEX