代码:
# -*- coding: utf-8 -*-
'''
Created on 2018年5月15日
@author: user
@attention: gama function
'''
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import gamma, factorial
def test_gamma_funciton():
#整数集阶乘拓展到实数集、复数集
#整数
print (gamma([0, 1, 5, 10]))
#实数
print (gamma([0.5, 1.8, 5.9, 10.2]))
#复数
z = 2.5 + 1j
print (gamma(z))
print (gamma(z+1))
print (z*gamma(z)) # Recurrence property)
#计算π值
print (gamma(0.5)**2) # gamma(0.5) = sqrt(pi)
#gama和阶乘示意图
x = np.linspace(-3.5, 5.5, 2251)
y = gamma(x)
plt.plot(x, y, 'b', alpha=0.6, label='gamma(x)')
k = np.arange(1, 7)
plt.plot(k, factorial(k-1), 'k*', alpha=0.6,label='(x-1)!, x = 1, 2, ...')
plt.xlim(-3.5, 5.5)
plt.ylim(-10, 25)
plt.grid()
plt.xlabel('x')
plt.legend(loc='lower right')
plt.show()
if __name__ == '__main__':
test_gamma_funciton()#gama函数
结果:
[ inf 1.0000e+00 2.4000e+01 3.6288e+05]
[1.77245385e+00 9.31383771e-01 1.01270191e+02 5.70499028e+05]
(0.7747621045510835+0.7076312043795929j)
(1.2292740569981173+2.5438401155000685j)
(1.2292740569981158+2.543840115500066j)
3.1415926535897927