编写一个用数值分析中的辛普森公式或梯形公式或复合辛普森公式或复合梯形公式或Cotes公式或Romberg算法或Gauss求积公式 来构造从x=1.000开始的 伽马函数表 (结果保留四位小数)的python代码
时间: 2024-02-17 21:05:18 浏览: 147
matlab 复合辛普森公式、复合梯形公式、高斯-勒让德求积公式 还有一些其他的
以下是使用梯形公式和复合梯形公式构造伽马函数表的Python代码:
```python
import math
def gamma(x):
if x == 1:
return 1
elif x < 1:
return math.pi / (math.sin(math.pi * x) * gamma(1 - x))
else:
return (x - 1) * gamma(x - 1)
def trapezoidal_rule(f, a, b, n):
h = (b - a) / n
sum = (f(a) + f(b)) / 2
for i in range(1, n):
x = a + i * h
sum += f(x)
return h * sum
def composite_trapezoidal_rule(f, a, b, n):
h = (b - a) / n
sum = f(a) + f(b)
for i in range(1, n):
x = a + i * h
sum += 2 * f(x)
return h * sum / 2
def gamma_table(start, end, n):
print("x\tGamma(x)")
print("-" * 16)
for i in range(start, end+1):
f = lambda x: x**(i-1) * math.exp(-x)
gamma_approx = composite_trapezoidal_rule(f, 0, 100, n)
print("{:.3f}\t{:.4f}".format(i, gamma_approx))
gamma_table(1, 10, 1000)
```
这个代码使用了梯形公式和复合梯形公式来逼近伽马函数。`gamma(x)` 函数实现了递归定义的伽马函数,`trapezoidal_rule(f, a, b, n)` 函数使用梯形公式来计算一个函数 `f` 在区间 `[a, b]` 上的积分,`composite_trapezoidal_rule(f, a, b, n)` 函数使用复合梯形公式来计算一个函数 `f` 在区间 `[a, b]` 上的积分,`gamma_table(start, end, n)` 函数则使用 `composite_trapezoidal_rule` 函数来计算从 `x=start` 到 `x=end` 的伽马函数,并输出到控制台上。
阅读全文