python编写辛普森法则
时间: 2024-10-17 15:14:05 浏览: 28
在Python中,辛普森法则是一种数值积分方法,用于近似计算函数在一个区间上的定积分。它是牛顿-库仑法的一个变种,通过将区间划分为小的矩形区域并利用更精确的梯形或 parabola 形状来估计面积,而不是简单的矩形。
下面是使用Python实现辛普森法则的基本步骤:
```python
def simpson(f, a, b, n=4):
"""
使用辛普森法则计算函数f在[a, b]区间的定积分为S的近似值
参数:
f: 函数对象
a: 区间起始点
b: 区间终点
n: 分割的份数,默认为4,偶数
"""
h = (b - a) / n # 每个小区间的宽度
points = [a + i * h for i in range(n+1)] # 矩形中心点列表
# 计算各矩形和抛物线下的面积
areas = [h * f(p) for p in points]
if n % 2 == 0: # 如果划分的节点数是偶数
mid_points = [points[i] + h/3 for i in range(1, n, 2)] # 中心点处的函数值
areas[1::2] = [h * ((4/3)*f(mp) - (2/3)*f(points[i])) for i, mp in enumerate(mid_points)]
else: # 如果划分的节点数是奇数,最后一个抛物线不需要修正
mid_points = [points[i] + h/3 for i in range(1, n, 2)]
areas[1::2] = [h * (2*f(mp)) for mp in mid_points]
return sum(areas)
# 示例:
import math
integral_approx = simpson(math.sin, 0, math.pi)
print("Simpson's Rule integral approximation:", integral_approx)
```
阅读全文