数值积分
在微积分中,计算定积分 $I(f) = \int_a^b f(x) dx$ 是一个核心问题。然而,许多函数的原函数无法用初等函数表示,或者函数本身只以离散数据点的形式给出。在这些情况下,我们必须依赖数值方法来近似计算定积分的值。
理论基石
在探讨数值方法之前,我们先回顾几个关键的微积分定理。
积分中值定理
-
第一积分中值定理:如果 $f(x)$ 在 $[a, b]$ 上连续,那么至少存在一点 $\xi \in [a, b]$,使得:
$$\int_a^b f(x) dx = f(\xi)(b-a) $$
这个定理表明,积分值可以看作是函数在某一点的函数值与区间长度的乘积,这是所有数值积分方法的基本思想来源。
-
第二积分中值定理:如果 $f(x)$ 在 $[a, b]$ 上单调,$\phi(x)$ 在 $[a, b]$ 上可积,那么至少存在一点 $\xi \in [a, b]$,使得:
$$\int_a^b f(x)\phi(x) dx = f(a)\int_a^\xi \phi(x) dx + f(b)\int_\xi^b \phi(x) dx $$
Newton-Leibniz 定理与函数连续性
函数连续性:一个函数 $f(x)$ 在点 $x_0$ 处连续,直观地讲,是指当 $x$ 趋近于 $x_0$ 时,$f(x)$ 的值趋近于 $f(x_0)$。严格定义为:
$$\lim_{x \to x_0} f(x) = f(x_0) $$
如果函数在区间 $[a, b]$ 上的每一点都连续,则称该函数在该区间上连续。函数的连续性保证了其图像没有“断点”或“跳跃”,是其在闭区间上可积的基本条件。
牛顿-莱布尼茨公式指出,如果 $F(x)$ 是连续函数 $f(x)$ 在 $[a, b]$ 上的一个原函数,那么:
$$\int_a^b f(x) dx = F(b) - F(a) $$
这个定理建立了定积分与原函数之间的桥梁。然而,数值积分的用武之地恰恰是当我们找不到或不想找 $F(x)$ 的时候。
数值积分的目标与形式
数值积分的核心目标是找到一个易于计算的求积公式 $J(f)$,用它来近似定积分 $I(f)$。
$$I(f) = \int_a^b f(x) dx \approx J(f) $$
一个通用的求积公式通常是函数在某些特定点(称为节点)上的函数值的加权和:
$$J(f) = \sum_{i=0}^{n} w_i f(x_i) $$
其中,$x_i$ 是积分区间 $[a, b]$ 内的求积节点,$w_i$ 是对应的权重。不同的数值积分方法,其区别就在于如何选择节点 $x_i$ 和权重 $w_i$。
基本的牛顿-柯特斯(Newton-Cotes)公式
这类方法通过在等距节点上构造插值多项式,然后对多项式进行积分来导出求积公式。
1. 左/右矩形法则
- 左矩形法则:取区间的左端点作为代表点。
$$\int_a^b f(x) dx \approx (b-a)f(a) $$
- 右矩形法则:取区间的右端点作为代表点。
$$\int_a^b f(x) dx \approx (b-a)f(b) $$
2. 中点矩形法则
取区间的中点作为代表点,通常比端点有更好的精度。
$$\int_a^b f(x) dx \approx (b-a)f\left(\frac{a+b}{2}\right) $$
3. 梯形法则
将两个端点连接成一条直线(线性插值),计算直线下方形成的梯形面积。
$$\int_a^b f(x) dx \approx \frac{b-a}{2}[f(a) + f(b)] $$
4. 辛普森(Simpson)法则
在区间内取三个点(两端点及中点),用一个二次多项式(抛物线)来逼近函数,然后计算抛物线下的面积。
$$\int_a^b f(x) dx \approx \frac{b-a}{6}\left[f(a) + 4f\left(\frac{a+b}{2}\right) + f(b)\right] $$
误差分析与代数精度
误差定义与来源
- 误差定义:数值积分的误差 $E(f)$ 定义为真实积分值与近似值之差:
$$E(f) = I(f) - J(f) = \int_a^b f(x) dx - \sum_{i=0}^{n} w_i f(x_i) $$
- 误差来源:
- 方法误差 (截断误差):这是数值积分方法的核心误差,来源于用一个简单的、可积的函数(如插值多项式 $P(x)$)来近似原函数 $f(x)$。即 $\int_a^b f(x)dx \approx \int_a^b P(x)dx$ 这一步产生的误差。
- 舍入误差:在进行加权和 $\sum w_i f(x_i)$ 的计算过程中,由于计算机使用有限精度的浮点数进行运算,产生的累积误差。
误差上界
对于一个给定的数值积分方法,其截断误差 $E(f)$ 的绝对值通常可以被一个包含函数高阶导数的表达式所约束。
代数精度 (Order of Precision)
代数精度是衡量一个求积公式优劣的重要指标。如果一个求积公式对于所有次数不超过 $m$ 的多项式都能精确地计算其积分(即误差为0),但对于某个 $m+1$ 次多项式不精确,那么我们称这个公式具有 $m$ 阶代数精度。
代数精度越高,意味着该方法能更好地逼近那些可以被高次多项式良好近似的函数。
常用公式的误差与精度分析
方法 | 误差项 | 代数精度 |
---|---|---|
左/右矩形 | $O(h^2 f'(\xi))$ | 0 阶 |
中点矩形 | $\frac{h^3}{24}f''(\xi)$ | 1 阶 |
梯形法则 | $-\frac{h^3}{12}f''(\xi)$ | 1 阶 |
辛普森法则 | $-\frac{h^5}{2880}f^{(4)}(\xi)$ | 3 阶 |
注:这里 $h = b-a$。
从表中可以看出:
- 中点和梯形法则的代数精度都是1阶,但中点法则的误差常数更小,通常更优。
- 辛普森法则具有3阶代数精度,精度非常高,是实际应用中最常用的方法之一。
积分区间的变量变换
为了方便地应用上述公式,并编写通用的程序,我们通常将任意区间 $[a, b]$ 上的积分变换到一个标准的参考区间,如 $[-1, 1]$。
设 $x \in [a, b]$,我们引入新变量 $t \in [-1, 1]$,它们之间的线性关系为:
$$x = \frac{b-a}{2}t + \frac{a+b}{2} $$
求微分,得到 $dx = \frac{b-a}{2}dt$。
于是,积分变换为:
$$\int_a^b f(x) dx = \int_{-1}^1 f\left(\frac{b-a}{2}t + \frac{a+b}{2}\right) \frac{b-a}{2} dt $$
令 $g(t) = f\left(\frac{b-a}{2}t + \frac{a+b}{2}\right)$, 则
$$\int_a^b f(x) dx = \frac{b-a}{2} \int_{-1}^1 g(t) dt $$
这样,我们只需要开发针对标准区间 $[-1, 1]$ 的数值积分程序,就可以通过变量变换处理任何区间上的积分问题。例如,在 $[-1, 1]$ 上应用辛普森法则:
$$\int_{-1}^1 g(t) dt \approx \frac{1}{3}[g(-1) + 4g(0) + g(1)] $$
将 $g(t)$ 的定义代回,就得到了在 $[a, b]$ 上的辛普森法则。