如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例

我为什么要在乎garmma分布?

使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等。 对于数据科学家,机器学习工程师,研究人员来说,伽马函数可能是一种最广泛使用的功能,因为它已在许多分布中使用。然后将这些分布用于贝叶斯推理,随机过程(例如排队模型),生成统计模型(例如潜在狄利克雷分配)和变分推理。因此,如果您很好地了解了Garmma功能,您将对其中出现的许多应用程序有更好的了解!

1.为什么需要伽玛功能?

因为我们要泛化阶乘!

阶乘函数仅针对离散点(对于正整数-上图中的黑点)定义,但是我们希望连接黑点。我们想将阶乘函数扩展到所有复数。阶乘的简单公式x!= 1 * 2 x,不能直接用于小数值,因为它仅在x是整数时才有效。 因此,数学家一直在寻找...

“什么样的function将这些点平滑地连接起来,并为我们提供所有实际值的阶乘?”

但是,他们找不到可以表示x的和,乘积,幂,指数或对数的* 有限*组合!直到…的实数.

2.欧拉发现了伽玛函数。(在18世纪)

上面的公式用于找到z的任何实数值的Gamma函数的值。 假设您要计算Γ(4.8)。您将如何解决上述整合? 可以手动计算Γ(4.8)吗?也许使用零件积分?

试试看,让我知道您是否找到有趣的方式!对于我(以及到目前为止的许多其他人)而言,没有快速简便的方法手动评估分数的Gamma函数。(如果您有兴趣用手解决它,这是一个很好的起点。) 好吧,那么就不用分析了。您能否实现从0到无穷大的积分-以编程方式添加术语“无限次”?

您可以通过几种方法来实现。最常用的两种实现是斯特林近似 和Lanczos近似。

[For implementation addicts:] For implementation addicts: the codes of Gamma function (mostly Lanczos approximation) in 60+ different language - C, C++, C#, python, java, etc.

让我们计算Γ(4.8)使用计算机在已经实现的。

我们得到了17.837。 正如我们所期望的,17.837介于3!(=Γ(4)= 6)和4!(=Γ(5)= 24)之间。 (当z是自然数时,Γ(z)=(z-1)!我们将很快证明这一点。) 与只需要正整数的阶乘不同,我们可以将任何实数/复数输入z,包括负数。Gamma函数连接黑点,并很好地绘制曲线。

Confusion-buster: 我们正在积分从0到无穷大的x(NOT z)。 • x是正在集成的辅助变量。 • 我们没有将4.8插入x。我们将4.8插入z。

3. Gamma函数如何对阶乘函数进行插值?

如果看一下Gamma函数,您会注意到两件事。 首先,相对于z,它绝对是一个递增函数。 其次,当z是自然数时,Γ(z + 1)= z! (我保证我们会尽快证明这一点!) 因此,我们可以期望Gamma函数连接阶乘。


Gamma函数如何以当前项x ^ z和e ^ -x结束? 我不确切知道欧拉的思维过程是什么,但是他是发现自然数e的那个人,因此他必须做很多实验,将e与其他函数相乘才能找到当前形式。

4. Gamma函数的图形是什么样的?

当x变为无穷大∞时,第一项(x ^ z)也变为无穷大∞,但是第二项(e ^ -x)变为零。

然后,伽玛函数会收敛到有限值吗?

我们可以使用L'Hôpital规则严格证明它收敛。但是我们也可以毫不费力地看到它的融合。如果您考虑一下,我们正在积分x ^ z(一个多项式递增函数) 和e ^ -x(一个 指数递减函数)的乘积。因为e ^ -x的值 下降快于x ^ z的值,所以Gamma函数很可能收敛并具有有限的值。 让我们绘制每个图形,因为眼见为实。

x ^ z * e ^ -x的图 让我们看一下Γ(4.8)的情况。

图下绿色阴影区域从0到无穷大,Γ(4.8)= 3.8! Python代码用于生成上面的漂亮图。自己绘制,看看z如何改变Gamma函数的形状!

########################
# f(x) = exp(-x) graph #
########################
import matplotlib.pyplot as plt
import numpy as np
# Create x and y
x = np.linspace(-2, 20, 100)
y = np.exp(-x)
# Create the plot
fig, ax = plt.subplots()
plt.plot(x, y, label='f(x) = exp(-x)', linewidth=3, color='palegreen')
# Make the x=0, y=0 thicker
ax.set_aspect('equal')
ax.grid(True, which='both')
ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
# Add a title
plt.title('f(x) = exp(-x)', fontsize=20)
# Add X and y Label
plt.xlabel('x', fontsize=16)
plt.ylabel('f(x)', fontsize=16)
# Add a grid
plt.grid(alpha=.4, linestyle='--')
# Show the plot
plt.show()
####################
# f(x) = x^z graph #
####################
import matplotlib.pyplot as plt
import numpy as np
# Create x and y
x = np.linspace(0, 2, 100)
y1 = x**1.3
y2 = x**2.5
y3 = x**3.8
# Create the plot
fig, ax = plt.subplots()
plt.plot(x, y1, label='f(x) = x^1.3', linewidth=3, color='palegreen')
plt.plot(x, y2, label='f(x) = x^2.5', linewidth=3, color='yellowgreen')
plt.plot(x, y3, label='f(x) = x^3.8', linewidth=3, color='olivedrab')
# Make the x=0, y=0 thicker
ax.set_aspect('equal')
ax.grid(True, which='both')
ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
# Add a title
plt.title('f(x) = x^z', fontsize=20)
# Add X and y Label
plt.xlabel('x', fontsize=16)
plt.ylabel('f(x)', fontsize=16)
# Add a grid
plt.grid(alpha=.4, linestyle='--')
# Add a Legend
plt.legend(bbox_to_anchor=(1, 1), loc='best', borderaxespad=1, fontsize=12)
# Show the plot
plt.show()
###############################
# f(x) = x^(3.8)*e^(-x) graph #
###############################
import matplotlib.pyplot as plt
import numpy as np
# Create x and y
x = np.linspace(0, 20, 100)
y = x**3.8 * np.exp(-x)
# Create the plot
fig, ax = plt.subplots()
plt.plot(x, y, label='f(x) = x^(3.8) * np.exp(-x)', linewidth=3, color='palegreen')
ax.fill_between(x, 0, y, color='yellowgreen')
# Make the x=0, y=0 thicker
ax.set_aspect('equal')
ax.grid(True, which='both')
ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
# Add a title
plt.title('f(x) =  x^(3.8)*e^(-x) ', fontsize=20)
# Add X and y Label
plt.xlabel('x', fontsize=16)
plt.ylabel('f(x)' ,fontsize=16)
# Add a grid
plt.grid(alpha=.4, linestyle='--')
# Add a Legend
plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=1, fontsize=12)
# Show the plot
plt.show()

5.伽玛函数属性

如果您从这篇文章中删除一件事,应该是本节。

> 给定z> 1 Γ(z)=(z-1)*Γ(z-1) 或将其写为 Γ(z + 1)= z *Γ(z)

让我们使用部分集成和Gamma函数的定义来证明它.

如果n是一个正整数 C(n)=(n-1)!

什么是Γ(1) ?

因此,Γ(n)=(n-1)!

您可能还已经看到表达式Γ(n + 1)= n!而不是 Γ(n)=(n-1)!。 这只是使右手边n!,而不是(n-1)! 我们所做的就是将n移1。

6.使用Gamma函数的属性,显示Gamma分布的PDF积分为1。

快速回顾一下Gamma“分布”(不是Gamma“函数”!):Gamma分布直觉和推导。 证明如下:

问答:

  1. 伽玛功能多大了? 很老。大约300年。(您是否正在研究将在300年后使用的东西?;) 有趣的旁注:欧拉(Euler)在64岁时失明,但是在失明后他完成了近一半作品。
  2. 一些有趣的价值观: C(1/2)=平方( ) 许多有趣的方式来表明这一点: C(-1/2)= -2 * sqrt( ) C(-1)= C(-2)= C(-3)=无限∞ 你能证明这些吗? 3.这是快速查看Gamma函数图的实数。

伽马函数Γ(z)用蓝色绘制,而Γ(z)+ sin(πz)用绿色绘制。(请注意正整数处的交点,因为sin(πz)为零!)两者都是对非整数的阶乘分解的有效解析延续。

gamma分布_如何通俗的理解伽马(gamma)函数相关推荐

  1. python怎么用gamma函数_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

  2. python 求 gamma 分布_用(python)Scipy拟合gamma分布

    我对ss.gamma.rvs函数不满意,因为它可以生成负数,这是gamma分布不应该有的.所以我通过期望值=平均值(data)和方差=var(data)对样本进行了拟合(详见维基百科),并编写了一个函 ...

  3. gamma分布_轻松理解gamma分布

    gamma函数与gamma分布 上一篇讲到了gamma函数,今天讲一下gamma分布.既然二者的名字都含有gamma,必然是有联系的.我们先从gamma函数来讲gamma分布,完全是从数学的角度,然后 ...

  4. gamma分布_深度学习需要掌握的 13 个概率分布(附代码)

    作者:Sophia@知乎 来源:https://zhuanlan.zhihu.com/p/158801020 本文仅用于学术分享,著作权归作者所有.如有侵权,请联系后台作删文处理. 在逛Github时 ...

  5. 【Unity3D】sRGB伽马(gamma)空间和sRGB Frame Buffer线性空间的简单介绍

    2022年7月20日更新 线性空间是指物理意义上的真实颜色值,伽马空间是人眼会自动将真实世界进行一个伽马校正运算,即对数据进行1/2.2次幂,提高较暗区域细节,减弱亮区域细节.人眼处理这种细节变化是用 ...

  6. OpenCV论道:为什么我的伽马校正函数只有一行?

    最近在用 OpenCV 识别棋盘棋子,基本的思路是这样的:先转灰度,再做高斯模糊和二值化,此时棋盘格上有的有棋子,有的无棋子:通过迭代腐蚀,消去棋子,再迭代膨胀回来,就得到了一个纯净的棋盘:识别棋盘, ...

  7. 电容或电感的电压_如何通俗的理解电流,电压,电阻,电容和电感电工技术知识学习干货分享...

    点击上方↑↑↑『电工技术知识学习』关注本公众号可以免费进微信群咨询技术问题 猜您喜欢的文章 82条电气专业术语详解,这资料就该人手一份 接触器如何选择?电气性能参数有哪些 收集最全的电工口诀,不用到处 ...

  8. 如何计算近似纳什均衡_如何通俗的理解纳什均衡点?

    导读:如何通俗的理解纳什均衡点? 一.市场上有2家企业A和B,都是卖纸的,纸的成本都是2元钱,A和B都卖5块钱. 有一天A降价到4块钱,于是A销量大增,B销量大减.B看到了后,降价到3块钱,于是B销量 ...

  9. 关于视频播放的伽马——gamma校正

    关于视频播放中的gamma 我们在做视频播放器过程中经常会看到有的播放器有gamma调整,通过gamma调整也能明显觉察到视频图像颜色亮度等变化,但gamma对普通用户太专业难懂,即时对开发人员来说g ...

最新文章

  1. Netty 和 RPC 框架线程模型分析
  2. 【建议收藏】centos更新yum源为阿里云
  3. ITK:计算矢量图像的梯度
  4. 【数据结构与算法】之深入解析“石子游戏VI”的求解思路与算法示例
  5. 大图详解负载神器 LVS、Nginx及HAProxy工作原理
  6. java 正则匹配 sql星号,正则表达式匹配星号和换行符之间的字符串
  7. C/C++中的近指令、远指针和巨指针
  8. Ivan and Burgers(CF-1100F)
  9. android lru进程队列,Android缓存机制——LruCache
  10. 移远ec20驱动_移远通信Cat 1产品天团迎来新成员,引爆中速连接市场
  11. R语言︱决策树族——随机森林算法
  12. Netfilter的使用和实现
  13. 怎样把两个HTML合一起,将两个 PDF 页面合并在一起
  14. 小孩子都喜欢的卡通影视角色原来是用maya软件制作出来的
  15. 论文出图-Matlab导入txt文件数据并绘图
  16. 手机壁纸尺寸android,APP设计手抄:5点安卓手机尺寸分辨率知识
  17. mysql本机地址_mysql连接时用的IP地址是不是电脑本机上的IP地址呢!
  18. Vivo手机获取文件管理器里的文件路径为空
  19. Redis应用---Redis可以用来做什么?
  20. android酷狗缓存目录,酷狗缓存的歌曲在哪个文件夹_酷狗音乐缓存的歌曲在电脑哪个目录-win7之家...

热门文章

  1. hotstuff共识算法总结
  2. sketch最强切图工具Sketch Measure
  3. oracle提取字段中的数字
  4. 【微信小程序控制硬件13 】 与硬件平台无关,微信小程序 AP 配网安信可 Wi-Fi 模块入网示例。【AT篇,附带Demo】
  5. Android Sqlite数据库多表联合查询
  6. 【无线网络技术专题(九)】全网最全!典型室内场景无线网络部署方案!
  7. linux下安装 Gitk或者GitGui
  8. 软件获取手机的ime权限_如果Android手机软件不授权权限,软件应用可以使用
  9. electron 进程
  10. RHEL7软件包的管理