计算给定数字自然对数伽玛的Python程序

计算给定数字自然对数伽玛的Python程序

在数学中, 伽玛函数 被称为是任何给定数字的阶乘的扩展。然而,由于阶乘仅对实数有定义,伽玛函数扩展到为所有复数定义阶乘,除了负整数。它由-表示

Γ(x) = (x-1)!

由于伽玛函数仅在较大数字上迅速增长,因此将对伽玛应用对数会大大减慢它。它也被称为给定数字的 自然对数伽玛

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

在Python编程语言中,像一些其他编程语言一样,对数伽玛函数是使用 math.lgamma() 函数计算的。但是,在本文中我们还将看到几种其他计算数字对数伽玛的方法。

输入输出方案

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

假设对数伽玛函数的输入为正整数 –

输入:12
结果:17.502307845873887

假设对数伽玛函数的输入为负整数 –

输入:-12
结果:“ValueError: math domain error”

假设对数伽玛函数的输入为零 –

输入:0
结果:“ValueError: math domain error”

假设对数伽玛函数的输入为靠近零的负十进制值 –

输入:-0.2
结果:1.761497590833938

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

使用 math.lgamma() 函数

lgamma()方法在math库中被定义,并返回给定数字的自然对数伽玛值。该方法的语法为-

math.lgamma(x)

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

示例

使用math.lgamma()函数找到对数伽玛的Python示例如下 –

#导入math库
import math

#正整数的log gamma
x1 = 10
print(math.lgamma(x1))

#负复数数字的log gamma
x2 = -1.2
print(math.lgamma(x2))

#正复数数字的log gamma
x3 = 3.4
print(math.lgamma(x3))

输出

上面python代码的输出如下 –

12.801827480081467
1.5791760340399836
1.0923280598027416

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

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

示例

具有所述过程的Python实现如下 –

# 导入数学库
import math

#正整数的对数伽玛函数
x1 = math.gamma(10)
print(math.log(x1))

#负复数的对数伽玛函数
x2 = math.gamma(-1.2)
print(math.log(x2))

#正复数的对数伽玛函数
x3 = math.gamma(3.4)
print(math.log(x3))

输出

得到的输出为 −

12.801827480081469
1.5791760340399839
1.0923280598027414

应用对数到一个数字的阶乘

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

示例

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

# 导入数学库
import math

def factorial(n):
   if n == 1:
      return 1
   else:
      return n*factorial(n-1)

#正整数的对数伽玛函数
x1 = 10
y1 = factorial(x1-1)
print(math.log(y1))

x2 = 3
y2 = factorial(x2-1)
print(math.log(y2))

#正复数的对数伽玛函数
x3 = 3.4
y3 = factorial(x3-1)
print(math.log(y3))

输出

得到的输出为 −

12.801827480081469
0.6931471805599453
RecursionError: maximum recursion depth exceeded in comparison

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程