Python 计算完全伽马函数,与不完全伽马函数相比,完全伽马函数更难实现,其中有多种近似方法。更多相关信息,请访问http://dlmf.nist.gov/5。Python的math
库中有一个可用的版本,它实现了一个广泛适用的近似。
我们对完全伽马函数的完整通用实现并不感兴趣,只关心两种特殊情况:整型值和二分值。对于这两种特殊情形,可以得到精确的解,而不需要依赖近似。
对于整数值,=(n-1)!。整数的完全伽马函数可以依赖此前定义的阶乘函数。
对于二分值,有一个特殊形式:
它包含一个无理数 ,因此只能使用float
或Fraction
对象来近似表示。
如果使用合适的Fraction
值,那么可以用以下几个简单用例来设计一个函数:一个integer
数值、一个分母为1的Fraction
值和一个分母为2的Fraction
值。可以如下所示使用Fraction
值:
将这个函数称为Gamma_Half
是为了强调它只适用于所有整数二分数。对于整型值,可使用前面定义的fact()
函数。对于分母为1的Fraction
对象,可使用同一个fact()
定义。
如果分母为2,可以使用更复杂的闭形式值。我们对值 n! 显式使用了一个Fraction
()函数,还为无理数 提供了一个Fraction
近似。
一些测试用例如下所示:
也可以用合适的Fraction
值来表示它们。无理数的表示(平方根和π)往往会生成数值很大且可读性很差的分数。可以使用更易读的分数形式,如下所示:
这里给出的值,限制了其分母小于200万,这样就得到了易读的6位数值,可以用它们来进行单元测试。