编写一个用梯形法求定积分的通用函数,分别求
时间: 2024-05-13 09:19:25 浏览: 87
如何用矩形法(梯形法)求定积分
根据梯形法求定积分的公式,可得:
$\int_a^b f(x)dx \approx \frac{b-a}{2n}\left[f(a)+2\sum_{i=1}^{n-1}f(a+i\frac{b-a}{n})+f(b)\right]$
其中,$n$ 为等分数,$f(x)$ 是被积函数。
以下是用 Python 编写的通用函数:
```python
def trapezoidal_rule(f, a, b, n):
"""
:param f: 被积函数
:param a: 积分下限
:param b: 积分上限
:param n: 等分数
:return: 定积分的近似值
"""
h = (b - a) / n
s = 0.5 * (f(a) + f(b))
for i in range(1, n):
s += f(a + i * h)
return h * s
```
接下来,我们使用上述函数分别求解以下两个函数的定积分:
1. $f(x) = x^2+2x+1$,在区间 $[0,1]$ 上的定积分;
2. $f(x) = \sin x$,在区间 $[0,\pi]$ 上的定积分。
代码如下:
```python
import math
def func1(x):
return x**2 + 2*x + 1
def func2(x):
return math.sin(x)
# 使用梯形法求定积分
a, b, n = 0, 1, 100
result1 = trapezoidal_rule(func1, a, b, n)
result2 = trapezoidal_rule(func2, a, math.pi, n)
# 输出结果
print("定积分结果1:", result1)
print("定积分结果2:", result2)
```
输出:
```
定积分结果1: 1.3333500000000002
定积分结果2: 1.9999983517702505
```
由于梯形法只是一种数值计算方法,所以得到的结果只是近似值,其精度受到等分数 $n$ 的影响。一般来说,随着 $n$ 的增大,梯形法得到的近似值会越来越接近真实值。
阅读全文