📅  最后修改于: 2023-12-03 15:41:45.770000             🧑  作者: Mango
定积分是微积分中的一种重要概念,可以用来计算曲线下的面积、质心、物理中的功等等。评估定积分就是通过一定的数值算法来近似计算定积分的值,常见的数值算法有矩形法、梯形法、辛普森法等等。
矩形法是一种最简单的数值算法,它将区间 $[a,b]$ 分成 n 个小区间,用矩形将每一个小区间近似成一个梯形,并计算出每个小梯形面积的和。矩形法又可以分为左矩形法、右矩形法、中矩形法三种。
左矩形法的数值公式为:
$$ \int_a^b f(x)dx \approx \sum_{i=0}^{n-1} f(x_i)(x_{i+1}-x_i) $$
其中 $x_i=a+i\frac{b-a}{n}$,$f(x_i)$ 是第 i 个小区间左端点处的函数值。
右矩形法的数值公式为:
$$ \int_a^b f(x)dx \approx \sum_{i=1}^{n} f(x_i)(x_{i}-x_{i-1}) $$
其中 $x_i=a+i\frac{b-a}{n}$,$f(x_i)$ 是第 i 个小区间右端点处的函数值。
中矩形法的数值公式为:
$$ \int_a^b f(x)dx \approx \sum_{i=0}^{n-1} f(\frac{x_i+x_{i+1}}{2})(x_{i+1}-x_i) $$
其中 $x_i=a+i\frac{b-a}{n}$,$f(\frac{x_i+x_{i+1}}{2})$ 是第 i 个小区间中点处的函数值。
矩形法是一种非常简单的数值算法,但是它对曲线线性程度的要求较高,如果曲线过于曲折,矩形法得到的结果可能会误差很大。
梯形法是一种比矩形法更为精确的数值算法,它将每个小区间近似成一条线段构成的梯形。梯形法的数值公式为:
$$ \int_a^b f(x)dx \approx \frac{1}{2}\sum_{i=1}^{n} (f(x_{i-1})+f(x_i))(x_{i}-x_{i-1}) $$
其中 $x_i=a+i\frac{b-a}{n}$,$f(x_i)$ 是第 i 个小区间右端点处的函数值。
梯形法相对于矩形法的优势在于更能适应曲线的变化,误差更小,但是明显的缺陷是计算量较大。
辛普森法又被称为复合梯形法的一种精度更高的数值算法,它将每个小区间近似成一条二次函数形成的曲面。辛普森法的数值公式为:
$$ \int_a^bf(x)dx \approx \frac{b-a}{6}\left(f(a)+4f(\frac{a+b}{2})+f(b)\right) $$
辛普森法的计算量较大,但是它精度很高,可以适用于大多数曲线的计算。
下面是使用 Python 语言实现三种算法的代码示例:
def left_rect(f, a, b, n):
dx = (b-a)/float(n)
result = 0.0
for i in range(n):
result += f(a+i*dx) * dx
return result
def trapezoid(f, a, b, n):
dx = (b-a)/float(n)
result = 0.0
for i in range(1, n):
result += f(a+i*dx)
result += (f(a)+f(b))/2.0
result *= dx
return result
def simpson(f, a, b, n):
dx = (b-a)/float(n)
result = f(a) + f(b)
for i in range(1, n, 2):
result += 4*f(a+i*dx)
for i in range(2, n-1, 2):
result += 2*f(a+i*dx)
result *= dx/3.0
return result
评估定积分是一种重要的数值算法,具有广泛的应用。在实际使用中,我们可以根据曲线的特点选择合适的算法和参数,以保证计算结果的精度和效率。