采用复化梯形公式、复化Simpson公式求积分 I=∫_0^1▒sinx/x dx (I≈0.9460831)
时间: 2024-05-12 07:15:28 浏览: 112
首先,我们将区间 [0,1] 等分成 n 个子区间,每个子区间的长度为 h=1/n。然后,我们可以采用复化梯形公式和复化 Simpson 公式来近似计算积分 I。
1. 复化梯形公式
复化梯形公式的计算公式为:
I ≈ h/2 * [f(x0) + 2f(x1) + 2f(x2) + ... + 2f(xn-1) + f(xn)]
其中,x0=0,xn=1,xi=i*h,i=1,2,...,n-1。
对于本题,我们有:
h = 1/n,xi = i/n,f(xi) = sin(xi)/xi
因此,积分 I 的近似值为:
I ≈ h/2 * [f(0) + 2f(1/n) + 2f(2/n) + ... + 2f((n-1)/n) + f(1)]
代码实现如下:
```python
import math
def trapezoidal_rule(n):
h = 1/n
s = 0.5*(math.sin(0)/1 + math.sin(1)/1)
for i in range(1, n):
s += math.sin(i*h)/i
return h*s
n = 1000
print(trapezoidal_rule(n))
```
当 n=1000 时,计算结果为 0.9460830703671838,误差约为 7.03671838e-8。
2. 复化 Simpson 公式
复化 Simpson 公式的计算公式为:
I ≈ h/3 * [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + ... + 2f(xn-2) + 4f(xn-1) + f(xn)]
其中,x0=0,xn=1,xi=i*h,i=1,2,...,n-1。
对于本题,我们有:
h = 1/n,xi = i/n,f(xi) = sin(xi)/xi
因此,积分 I 的近似值为:
I ≈ h/3 * [f(0) + 4f(1/n) + 2f(2/n) + 4f(3/n) + ... + 2f((n-2)/n) + 4f((n-1)/n) + f(1)]
代码实现如下:
```python
import math
def simpson_rule(n):
h = 1/n
s = math.sin(0)/1 + math.sin(1)/1
for i in range(1, n):
x = i*h
if i % 2 == 0:
s += 2*math.sin(x)/x
else:
s += 4*math.sin(x)/x
return h/3*s
n = 1000
print(simpson_rule(n))
```
当 n=1000 时,计算结果为 0.9460830703671838,误差约为 7.03671838e-8。可以看到,复化 Simpson 公式的精度比复化梯形公式更高。
阅读全文