python写出辛普森积分法
时间: 2024-10-14 22:00:41 浏览: 24
辛普森积分法是一种数值积分技术,它基于多项式插值,将区间分成几个小部分,每个部分近似为二次函数。在Python中,我们可以用`numpy`库来实现这个算法。以下是简单的辛普森积分法的步骤:
```python
import numpy as np
def simpson(f, a, b, n):
"""
使用辛普森法则计算函数f在[a, b]区间的定积分
f: 函数,接受单个浮点数作为输入并返回浮点数
a, b: 积分上下限
n: 等份份数,偶数
"""
h = (b - a) / n # 每个小段的宽度
x = np.linspace(a + h, b, num=n+1)[:-1] # 点集,排除最后一个点防止重复
if n % 2 == 1: # 如果n是奇数,需要对最后一项做特殊处理
integral = (h/3) * (f(x[0]) + 4*np.sum(f(x[1:-1:2])) + f(x[-1]))
else: # 如果n是偶数,所有项都采用标准的辛普森公式
integral = (h/3) * (2*f(x[0]) + 4*np.sum(f(x[1::2])) + 2*f(x[-1]))
return integral
# 示例:计算sin(x)在[0, π]上的积分
integral_value = simpson(np.sin, 0, np.pi, 100)
print(f"辛普森积分结果: {integral_value}")
阅读全文