辛普森公式求积分和误差估计的python代码
时间: 2024-02-05 09:02:59 浏览: 91
复化梯形求积分实例——用Python进行数值计算
以下是使用辛普森公式进行积分和误差估计的Python代码:
```python
import math
# 定义被积函数
def f(x):
return math.sin(x)
# 辛普森公式进行积分
def simpson_integral(a, b, n):
h = (b - a) / n
sum_1 = 0
sum_2 = 0
for i in range(1, int(n/2) + 1):
sum_1 += f(a + (2 * i - 1) * h)
for i in range(1, int(n/2)):
sum_2 += f(a + 2 * i * h)
integral = (b - a) / (3 * n) * (f(a) + f(b) + 4 * sum_1 + 2 * sum_2)
return integral
# 辛普森公式进行误差估计
def simpson_error(a, b, n):
h = (b - a) / n
M4 = max(abs(f(a)), abs(f(b)), abs(f(a + h)), abs(f(b - h)), abs(f((a + b) / 2)), abs(f(a + 3 * h / 2)), abs(f(b - 3 * h / 2)), abs(f(a + h / 2)), abs(f(b - h / 2)))
error = (b - a) * h ** 4 / 180 * M4
return error
# 测试
a = 0
b = math.pi / 2
n = 100
integral = simpson_integral(a, b, n)
error = simpson_error(a, b, n)
print('积分值为:', integral)
print('误差估计为:', error)
```
其中,`f(x)`是被积函数,通过修改该函数来求解不同的积分。`simpson_integral(a, b, n)`函数使用辛普森公式进行积分,其中`a`和`b`是积分区间的端点,`n`是分割区间的数目。`simpson_error(a, b, n)`函数使用辛普森公式进行误差估计。最后的测试部分可以修改`a`、`b`和`n`的值来测试不同的积分和误差估计。
阅读全文