PHP前端开发

Python程序计算给定数字的对数gamma

百变鹏仔 8小时前 #Python
文章标签 对数

在数学中,伽玛函数被认为是任何给定数字的阶乘的扩展。然而,由于阶乘仅针对实数定义,因此伽马函数超出了对除负整数之外的所有复数定义阶乘的范围。它由 -

表示
Γ(x) = (x-1)!

对数伽玛函数出现,因为伽玛函数仅在较大的数字上快速增长,因此对伽玛应用对数会使其速度减慢很多。它也称为给定数字的自然对数 gamma

log(Γ(x)) = log((x-1)!)

在Python编程语言中,与其他编程语言一样,对数伽玛函数是使用math.lgamma()函数计算的。不过,我们还将在本文中研究几种其他方法来计算数字的对数伽玛。

输入输出场景

让我们看看一些输入输出场景,以使用 math.lgamma() 方法查找对数伽玛函数。

立即学习“Python免费学习笔记(深入)”;

假设对数 gamma 函数的输入是正整数 -

Input: 12Result: 17.502307845873887

假设对数 gamma 函数的输入是负整数 -

Input: -12Result: “ValueError: math domain error”

假设对数 gamma 函数的输入为零 -

Input: 0Result: “ValueError: math domain error”

假设对数 gamma 函数的输入是接近于零的负十进制值 -

Input: -0.2Result: 1.761497590833938

使用 lgamma() 方法时会出现定义域错误,因为该函数是为所有复数减去负“整数”定义的。让我们看看寻找给定数字的对数伽玛的各种方法。

使用math.lgamma()函数

lgamma() 方法在数学库中定义,返回给定数字的自然对数 gamma 值。该方法的语法是 -

math.lgamma(x)

其中 x 是除负整数之外的任何复数。

示例

使用 math.lgamma() 函数求 log gamma 的 Python 示例如下 -

# import math libraryimport math#log gamma of positive integerx1 = 10print(math.lgamma(x1))#log gamma of negative complex numberx2 = -1.2print(math.lgamma(x2))#log gamma of a positive complex numberx3 = 3.4print(math.lgamma(x3))

输出

上述 python 代码的输出为 -

12.8018274800814671.57917603403998361.0923280598027416

使用 math.gamma()和math.log()函数

在另一种方法中,可以通过首先使用 math.gamma() 函数查找数字的伽玛,然后使用 对伽玛值应用对数来找到数字的对数伽玛。 b>math.log() 函数。在这里,我们只是将 lgamma() 函数分解为多个步骤。

示例

上述过程的 python 实现如下 -

# import math libraryimport math#log gamma of positive integerx1 = math.gamma(10)print(math.log(x1))#log gamma of negative complex numberx2 = math.gamma(-1.2)print(math.log(x2))#log gamma of a positive complex numberx3 = math.gamma(3.4)print(math.log(x3))

输出

获得的输出如下 -

12.8018274800814691.57917603403998391.0923280598027414

通过对数字的阶乘应用对数

更简单的方法是找到给定数字的阶乘,因为 gamma 函数被定义为复数的阶乘,并使用 math.log() 方法对其应用对数计算阶乘。

示例

在这个 Python 示例中,我们使用阶乘和 math.log() 方法查找数字的对数 gamma。使用此方法的唯一缺点是它仅适用于正整数。

# import math libraryimport mathdef factorial(n):   if n == 1:      return 1   else:      return n*factorial(n-1)#log gamma of positive integerx1 = 10y1 = factorial(x1-1)print(math.log(y1))x2 = 3y2 = factorial(x2-1)print(math.log(y2))#log gamma of a positive complex numberx3 = 3.4y3 = factorial(x3-1)print(math.log(y3))

输出

输出为 -

12.8018274800814690.6931471805599453RecursionError: maximum recursion depth exceeded in comparison