Gnuplot伽玛函数

2024-09-30 06:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

对于GnuPlot中k>;2的gamma函数,如何绘制值为1的gamma CDF?当k>;=2,gamma(k)<;1,并且由于igamma(k,x/theta)在[0,1](在gnuplot中)中,所以CDF公式的限制是gamma(k)。它给了我这样一个情节gamma CDF

使用的代码如下:

set grid
set yrange[0:*]

gamma1_pdf(x, k, theta) = (1 / (gamma(k)*theta**k))*x**(k-1)*exp(-(x / theta))
gamma1_cdf(x, k, theta) = (1 / gamma(k))*igamma(k, (x / theta))

set term windows 0
plot gamma1_cdf(x, 1.0, 2.0) lc rgb "red", \
     gamma1_cdf(x, 2.0, 2.0) lc rgb "orange", \
     gamma1_cdf(x, 3.0, 2.0) lc rgb "yellow", \
     gamma1_cdf(x, 7.5, 1.0) lc rgb "black"

set term windows 1
plot gamma1_pdf(x, 1.0, 2.0) lc rgb "red", \
     gamma1_pdf(x, 2.0, 2.0) lc rgb "orange", \
     gamma1_pdf(x, 3.0, 2.0) lc rgb "yellow", \
     gamma1_pdf(x, 7.5, 1.0) lc rgb "black"

Tags: gtpdfplotwindowsrgbredlcterm
1条回答
网友
1楼 · 发布于 2024-09-30 06:24:40

根据help igamma,gnuplot实现了规范化的不完全伽马函数,对于大x,unnormalized版本接近于该极限下的gamma函数的值。在

幸运的是,撤销规范化很容易:

set xrange [0:30]
igamma2(a,x) = igamma(a,x)*gamma(a)    # unnormalized incoplete gamma function
gamma1_cdf(x, k, theta) = (1 / gamma(k))*igamma2(k, (x / theta))

plot gamma1_cdf(x, 1.0, 2.0) lc rgb "red", \
     gamma1_cdf(x, 2.0, 2.0) lc rgb "orange", \
     gamma1_cdf(x, 3.0, 2.0) lc rgb "yellow", \
     gamma1_cdf(x, 7.5, 1.0) lc rgb "black"

enter image description here

相关问题 更多 >

    热门问题