概述
文章目录
- Gamma函数
- 对数Gamma函数
- 复数域的Gamma函数
Gamma函数
Γ Gamma Γ函数是阶乘的解析延拓,在概率论中非常常见,例如Gamma分布表示某个事件在某个时刻发生第 n n n次的概率:Gamma分布详解
Γ Gamma Γ函数显含在 Γ Gamma Γ分布中,其表达式可以写为
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t Gamma(z)=int^infty_0 t^{z-1}e{-t}text dt Γ(z)=∫0∞tz−1e−tdt
当 z z z为正整数时,有 Γ ( z ) = ( z − 1 ) ! Gamma(z)=(z-1)! Γ(z)=(z−1)!,其函数图像如下
绘图代码为
import numpy as np
from scipy.special import gamma, factorial
import matplotlib.pyplot as plt
x = np.linspace(-3.5, 6, 2000)
y = gamma(x)
plt.plot(x, y, 'b')
plt.ylim(-100, 150)
k = np.arange(1, 7)
plt.plot(k, factorial(k-1), 'k*')
plt.grid()
plt.xlabel('x')
plt.show()
对数Gamma函数
鉴于阶乘函数发散得十分迅速,故而scipy
提供了两种对数的Gamma
函数,分别是gammaln
和loggamma
,其中后者的自变量大于0。其图像为
import scipy.special as sc
x = np.linspace(-10, 10, 2000)
plt.plot(x, sc.gammaln(x), 'b')
plt.show()
复数域的Gamma函数
Γ Gamma Γ函数在复数域也有定义,对于 Γ ( x + i y ) Gamma(x+operatorname{i}y) Γ(x+iy),其实部可写为
ℜ ( Γ ( x + i y ) ) = ∫ 1 ∞ t x − 1 e t cos ( y ln t ) d t + ∑ k = 0 ∞ ( − 1 ) k k ! [ k + x ( k + x ) 2 + y 2 ] Re(Gamma(x+operatorname{i}y)) = int^infty_1frac{t^{x-1}}{e^t}cos(yln t)text dt+sum_{k=0}^inftyfrac{(-1)^k}{k!}[frac{k+x}{(k+x)^2+y^2}] ℜ(Γ(x+iy))=∫1∞ettx−1cos(ylnt)dt+k=0∑∞k!(−1)k[(k+x)2+y2k+x]
其虚部可写为
ℑ ( Γ ( x + i y ) ) = ∫ 1 ∞ t x − 1 e t sin ( y ln t ) d t − ∑ k = 0 ∞ ( − 1 ) k k ! [ y ( k + x ) 2 + y 2 ] Im(Gamma(x+operatorname{i}y)) = int^infty_1frac{t^{x-1}}{e^t}sin(yln t)text dt-sum_{k=0}^inftyfrac{(-1)^k}{k!}[frac{y}{(k+x)^2+y^2}] ℑ(Γ(x+iy))=∫1∞ettx−1sin(ylnt)dt−k=0∑∞k!(−1)k[(k+x)2+y2y]
scipy
中的gamma函数本身就是定义在复数域的,故而可以绘制一下复数域的
Γ
Gamma
Γ函数
xs = np.linspace(-5, 5, 2000)
ys = np.linspace(-5, 5, 200)
ys, xs = np.meshgrid(ys,xs)
zs = gamma(xs+1j*ys)
ax = plt.subplot(projection='3d')
ax.plot_surface(xs, ys, zs)
plt.show()
结果如下
沿着实轴看去,其实就是
Γ
(
x
)
Gamma(x)
Γ(x);随着
x
x
x逐渐变大复数域上其他位置也逐渐出现了凸起。
最后
以上就是香蕉纸飞机为你收集整理的用Scipy理解Gamma函数的全部内容,希望文章能够帮你解决用Scipy理解Gamma函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复