伽马(gamma)函数,神奇的gamma函数

  伽马(gamma)函数,神奇的gamma函数

  Python计算不完整的伽马函数。不完全伽玛函数有级数展开。这意味着你需要计算一系列的值,然后把它们加起来。欲了解更多信息,请参阅http://dlmf.nist.gov/8.

  这个级数有无穷多个项,最后这些值越不相关,就越小。您可以创建最小值\epsilon,如果以下项目小于该值,则停止计算:

  {(-1)} k删除计算会产生交替符号。

  如果s=1且z=2,则序列中的项目如下:

  在某些时候,所有的附加项目对结果没有明显的影响。

  当考察累积分布函数f(x,k)时,分数的值。分数可以考虑。k除以2是一个整数。x的值可以是分数,也可以是浮点数,很少是整数值。

  计算(gamma) s,z)项时,值为()frac) {(-1)} k} {k!}包含整数,可以用适当的分数值表示。但是,整个表达式不一定是分数对象。z {s k}的值可以是分数或浮点数。如果s k不是整数,结果就是无理数。对于无理数,可以使用格式更复杂的Fraction对象来逼近它们。

  虽然分数值可以用在gamma函数中,但似乎没什么用。然而,对于全伽马函数,分数对象具有潜在的优势。因此,即使Fraction对象可以近似为一个不合理的值,这个实现也会使用这个对象。

  上述级数展开实现如下。

  这将定义用于生成一组项目的term()函数,并将for语句限制为最多生成100个项目。您还可以使用itertools.count()函数来生成无限的项目序列,但是在这里使用上限循环似乎更简单。

  上面算出的Z {s k},可能是无理数,并根据这个值创造了一个分数值。Division \ frac {z {s k}} {s k}包括两个分数的除法,一个新的分数值将赋给变量t2。后续变量term的值是这两个Fraction对象的乘积。

  此外,还定义了take_until()函数,该函数取可重复对象的值,直到给定函数为真。如果函数为真,可重复对象将不再生成新值。它还定义了一个小阈值\:10 {-8 }。Term))从函数中获取值,直到该值小于\epsilon。这些值的总和是伽玛函数部分的近似值。

  注意,阈值变量是希腊字符\epsilon。在Python 3中,变量名可以包含任何Unicode字符。

  以下测试案例可以用来验证计算结果是否正常。

  误差函数erf())位于Python的数学库中,不需要特殊的近似。

  我们关注卡方分布。由于一些数学上的考虑,不完整的伽马函数通常是不感兴趣的,所以您可以使用测试用例将范围缩小到数字类型,并限制结果的准确性。大部分卡测的精度都达到了小数点后三位。测试数据显示7位小数。这可能超出了实际需要。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: