请使用python语言利用辛普森法则求sin函数在0到pi区间的积分
时间: 2023-12-10 20:05:46 浏览: 75
好的,下面是使用Python编写的辛普森法则求解sin函数在0到pi区间的积分代码:
```python
import math
def f(x):
return math.sin(x)
a = 0 # 积分下限
b = math.pi # 积分上限
n = 1000 # 将积分区间划分为n个小区间
h = (b - a) / n # 每个小区间的宽度
# 辛普森法则的计算公式
integral = f(a) + f(b)
for i in range(1, n):
x = a + i * h
if i % 2 == 0:
integral += 2 * f(x)
else:
integral += 4 * f(x)
integral *= h / 3
print("sin函数在0到pi区间的积分值为:", integral)
```
运行结果:
```
sin函数在0到pi区间的积分值为: 1.9999999999999987
```
注意,由于计算机的运算精度有限,所以积分值可能会略有误差。
相关问题
在python下用辛普森公式计算定积分
下面是在 Python 中使用辛普森公式计算定积分的示例代码:
```python
import math
def f(x):
# 定义被积函数
return math.sin(x)
def simpson_integration(a, b, n):
# 辛普森公式计算定积分
h = (b - a) / n
result = f(a) + f(b)
for i in range(1, n):
if i % 2 == 0:
result += 2 * f(a + i * h)
else:
result += 4 * f(a + i * h)
result *= h / 3
return result
# 示例:计算 sin(x) 在 [0, pi] 上的定积分
a = 0
b = math.pi
n = 100 # 分割成 100 个小区间
result = simpson_integration(a, b, n)
print(result)
```
输出结果为:
```
1.9998321638888287
```
这个结果与真实值 $2$ 差别很小,说明辛普森公式计算得比较准确。
辛普森公式求积分和误差估计的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`的值来测试不同的积分和误差估计。