当前位置: 首页 > news >正文

用Scipy理解Gamma函数

文章目录

    • 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)=0tz1etdt

z z z为正整数时,有 Γ ( z ) = ( z − 1 ) ! \Gamma(z)=(z-1)! Γ(z)=(z1)!,其函数图像如下

在这里插入图片描述
绘图代码为

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函数,分别是gammalnloggamma,其中后者的自变量大于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_1\frac{t^{x-1}}{e^t}\cos(y\ln t)\text dt+\sum_{k=0}^\infty\frac{(-1)^k}{k!}[\frac{k+x}{(k+x)^2+y^2}] (Γ(x+iy))=1ettx1cos(ylnt)dt+k=0k!(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_1\frac{t^{x-1}}{e^t}\sin(y\ln t)\text dt-\sum_{k=0}^\infty\frac{(-1)^k}{k!}[\frac{y}{(k+x)^2+y^2}] (Γ(x+iy))=1ettx1sin(ylnt)dtk=0k!(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逐渐变大复数域上其他位置也逐渐出现了凸起。

相关文章:

  • wordpress远程特色图/一键注册所有网站
  • 舟山工程建设信息网站/百度数据研究中心
  • 高端上海网站设计公司/长沙seo推广公司
  • 网站官网建设/天津百度seo排名优化
  • 网站开发需要什么配置/网络优化
  • 南宁cms建站/app下载推广
  • 基于二叉树的改进SPIHT算法(Matlab代码实现)
  • 大数据分案例-基于随机森林算法构建返乡人群预测模型
  • 适合编程初学者的开源项目:小游戏2048(安卓Compose版)
  • 数据标注平台(CVAT)安装及踩坑记录
  • 【jQuery】jQuery其他方法
  • SPSS常用的10种统计分析
  • 【TypeScript】TS泛型
  • 【鸟哥杂谈】腾讯云 CentOS8 Linux环境搭建docker
  • Kotlin~策略模式+简单工厂模式消除if else
  • 二十八、Kubernetes中job详解
  • EDA开源仿真工具verilator入门8:verilator 5.0 最新版本仿真玄铁性能对比
  • Duet 安装教程