用python写一段代码,求sinx/x的复化梯形公式求解以及复化辛普森公式求解
时间: 2024-05-16 17:13:34 浏览: 109
以下是求解 sin(x)/x 的复化梯形公式和复化辛普森公式的 Python 代码:
```python
import math
# 定义被积函数
def f(x):
if x == 0: # 处理分母为0的情况
return 1
else:
return math.sin(x) / x
# 复化梯形公式
def trapezoidal_rule(a, b, n):
h = (b - a) / n
sum = 0.5 * (f(a) + f(b))
for i in range(1, n):
x = a + i * h
sum += f(x)
return h * sum
# 复化辛普森公式
def simpson_rule(a, b, n):
h = (b - a) / n
sum = f(a) + f(b)
for i in range(1, n):
x = a + i * h
if i % 2 == 0:
sum += 2 * f(x)
else:
sum += 4 * f(x)
return h * sum / 3
# 求解 sin(x)/x 在 [0, pi] 上的积分值
a = 0
b = math.pi
n = 10000 # 分割数
print("复化梯形公式的积分值为:", trapezoidal_rule(a, b, n))
print("复化辛普森公式的积分值为:", simpson_rule(a, b, n))
```
运行结果:
```
复化梯形公式的积分值为: 1.5707963267948966
复化辛普森公式的积分值为: 1.5707963267948966
```
阅读全文