跳到主要内容

反常积分与数值积分

反常积分通过极限处理无穷区间或无界奇点。只有有限个跳跃点的有界函数仍可有普通黎曼积分;间断本身不意味着积分反常。下列定义要求每个截断积分存在,而收敛要求各个所需极限均存在且有限。可参阅 Paul Dawkins 的反常积分讲解。

幂函数的无穷尾部判别须假设 a>0a>0。零点附近的条件相反:∫01x−p dx\int_0^1x^{-p}\,dx 当且仅当 p<1p<1 时收敛。p≠1p\ne1 时,先积分得到 x1−p/(1−p)x^{1-p}/(1-p),再取相应端点极限;p=1p=1 时使用 ln⁡x\ln x。因此

∫1∞x−2 dx=lim⁡R→∞(1−1/R)=1,∫01x−1/2 dx=lim⁡ε→0+(2−2ε)=2.\int_1^\infty x^{-2}\,dx=\lim_{R\to\infty}(1-1/R)=1, \qquad \int_0^1x^{-1/2}\,dx=\lim_{\varepsilon\to0^+}(2-2\sqrt\varepsilon)=2.

但 ∫01x−2 dx\int_0^1x^{-2}\,dx 发散。比较法的例子是:x≥1x\ge1 时 0≤1/(1+x2)≤1/x20\le1/(1+x^2)\le1/x^2,所以前者的无穷尾部收敛。参与比较的函数须在有限截断区间上可积。

不能跨奇点抵消无穷大。1/x1/x 在 [−1,1][-1,1] 上的左右积分分别发散。对称截断虽给出零,但那是柯西主值,不是反常积分收敛。

反常积分​

反常积分(Improper Integrals)处理两类特殊情况:积分区间无限长,或被积函数在区间内存在无界奇点。其核心定义是通过极限来赋予积分值。

无穷限积分​

  • 上限为无穷:

    ∫a∞f(x) dx=lim⁡t→∞∫atf(x) dx\int_{a}^{\infty} f(x) \, dx = \lim_{{t \to \infty}} \int_{a}^{t} f(x) \, dx

  • 下限为无穷:

    ∫−∞bf(x) dx=lim⁡t→−∞∫tbf(x) dx\int_{-\infty}^{b} f(x) \, dx = \lim_{{t \to -\infty}} \int_{t}^{b} f(x) \, dx

  • 双侧无穷:

    需拆分为两部分,且两部分必须同时收敛:

    ∫−∞∞f(x) dx=∫−∞cf(x) dx+∫c∞f(x) dx\int_{-\infty}^{\infty} f(x) \, dx = \int_{-\infty}^{c} f(x) \, dx + \int_{c}^{\infty} f(x) \, dx

被积函数间断​

若 f(x)f(x) 在区间 [a,b][a, b] 内的某点 cc 处无界,需将积分拆分为两部分,分别取极限:

  • 在左端点 aa 处间断:

    ∫abf(x) dx=lim⁡t→a+∫tbf(x) dx\int_{a}^{b} f(x) \, dx = \lim_{{t \to a^{+}}} \int_{t}^{b} f(x) \, dx

  • 在右端点 bb 处间断:

    ∫abf(x) dx=lim⁡t→b−∫atf(x) dx\int_{a}^{b} f(x) \, dx = \lim_{{t \to b^{-}}} \int_{a}^{t} f(x) \, dx

  • 在区间内部 cc 处间断 (a<c<ba < c < b):

    ∫abf(x) dx=∫acf(x) dx+∫cbf(x) dx\int_{a}^{b} f(x) \, dx = \int_{a}^{c} f(x) \, dx + \int_{c}^{b} f(x) \, dx (注:两部分积分必须均收敛)

比较判别法​

对于定义在 [a,∞)[a, \infty) 上的非负函数 f(x)f(x) 和 g(x)g(x):

  • 收敛性传递: 若 0≤f(x)≤g(x)0 \leq f(x) \leq g(x) 且 ∫a∞g(x) dx\int_a^\infty g(x)\,dx 收敛,则 ∫a∞f(x) dx\int_a^\infty f(x)\,dx 必收敛。
  • 发散性传递: 若 0≤g(x)≤f(x)0 \leq g(x) \leq f(x) 且 ∫a∞g(x) dx\int_a^\infty g(x)\,dx 发散,则 ∫a∞f(x) dx\int_a^\infty f(x)\,dx 必发散。

关键结论:p-积分​

对于 p>0p > 0,积分 ∫a∞1xp dx\int_{a}^{\infty} \frac{1}{x^p} \, dx 的收敛性仅取决于 pp 的值:

  • p>1p > 1 时收敛;
  • p≤1p \leq 1 时发散。

数值积分方法​

当定积分无法解析求解或计算过于复杂时,数值积分通过离散采样近似计算积分值。以下是三种常用算法。

中点法则 (Midpoint Rule)​

将区间 [a,b][a, b] 分为 nn 等份,取每个子区间的中点函数值乘以区间宽度并求和。

∫abf(x)dx≈Δx[f(x1∗)+f(x2∗)+…+f(xn∗)]\int_{a}^{b} f(x) dx \approx \Delta x \left[ f\left(x_1^*\right) + f\left(x_2^*\right) + \ldots + f\left(x_n^*\right) \right]

其中 Δx=b−an\Delta x = \frac{b - a}{n},xi∗x_i^* 为第 ii 个子区间的中点。

梯形法则 (Trapezoid Rule)​

利用梯形面积公式近似曲线下面积。对每个子区间,取两端点函数值的平均值乘以宽度。

∫abf(x)dx≈Δx2[f(x0)+2f(x1)+2f(x2)+…+2f(xn−1)+f(xn)]\int_{a}^{b} f(x) dx \approx \frac{\Delta x}{2} \left[ f(x_0) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(x_n) \right]

辛普森法则 (Simpson's Rule)​

每两个子区间用经过三个相邻采样点的二次曲线近似函数;函数足够光滑时,其收敛阶更高。要求子区间数 nn 必须为偶数。

∫abf(x)dx≈Δx3[f(x0)+4f(x1)+2f(x2)+…+4f(xn−1)+f(xn)]\int_{a}^{b} f(x) dx \approx \frac{\Delta x}{3} \left[ f(x_0) + 4f(x_1) + 2f(x_2) + \ldots + 4f(x_{n-1}) + f(x_n) \right]
左图用一段抛物线穿过三个采样点,右图用两段抛物线覆盖四个子区间。查看清晰大图

左图用一段抛物线穿过三个采样点,覆盖两个子区间;右图再接一段抛物线,继续覆盖下一对区间。这也解释了复合辛普森法为什么要求子区间数为偶数。与前面的矩形、梯形对照,看近似图形的顶边怎样从水平线、斜线变成曲线。

应用场景​

在计算机仿真、优化算法及无法符号积分的工程问题中,这些数值方法提供了高效的近似解。

Python 实现​

import numpy as np

def midpoint_rule(f, a, b, n):
if isinstance(n, bool) or not isinstance(n, int) or n <= 0:
raise ValueError("n must be a positive integer")
dx = (b - a) / n
x_mid = np.linspace(a + dx/2, b - dx/2, n)
return np.sum(f(x_mid)) * dx

def trapezoid_rule(f, a, b, n):
if isinstance(n, bool) or not isinstance(n, int) or n <= 0:
raise ValueError("n must be a positive integer")
dx = (b - a) / n
x = np.linspace(a, b, n + 1)
return dx/2 * np.sum(f(x[:-1]) + f(x[1:]))

def simpsons_rule(f, a, b, n):
if isinstance(n, bool) or not isinstance(n, int) or n <= 0:
raise ValueError("n must be a positive integer")
if n % 2 == 1:
raise ValueError("n must be even for Simpson's Rule")
dx = (b - a) / n
x = np.linspace(a, b, n + 1)
y = f(x)
return dx/3 * np.sum(y[0:-1:2] + 4*y[1::2] + y[2::2])

参数说明​

  • f: 被积函数。
  • a, b: 积分上下限。
  • n: 子区间数量。
  • dx: 步长(子区间宽度)。
  • 注意:simpsons_rule 强制要求 n 为偶数。

误差界与可复算示例​

设 a<ba<b、I=∫abf(x) dxI=\int_a^b f(x)\,dx。复合求积公式的误差界为

∣I−Mn∣≤K2(b−a)324n2,∣I−Tn∣≤K2(b−a)312n2,∣I−Sn∣≤K4(b−a)5180n4.|I-M_n|\le\frac{K_2(b-a)^3}{24n^2},\qquad |I-T_n|\le\frac{K_2(b-a)^3}{12n^2},\qquad |I-S_n|\le\frac{K_4(b-a)^5}{180n^4}.

前两式要求二阶导数连续且绝对值不超过 K2K_2;辛普森公式要求四阶导数连续且绝对值不超过 K4K_4,并且 nn 为偶数。它们约束离散化误差,不包括浮点舍入误差。步长减半时,误差界分别缩小为原来的 1/41/4 或 1/161/16。精确算术下,辛普森法对三次多项式精确,但对不光滑函数不保证总是更准。

对 [0,1][0,1] 上的 f(x)=x2f(x)=x^2,取 n=2n=2,得到 M2=5/16M_2=5/16、T2=3/8T_2=3/8、S2=1/3S_2=1/3,而真值 I=1/3I=1/3。绝对误差分别为 1/481/48、1/241/24 和零,与 K2=2K_2=2、K4=0K_4=0 的界一致。若要保证此例的梯形误差不超过 10−410^{-4},可取 n≥⌈1/(6⋅10−4)⌉=41n\ge\lceil\sqrt{1/(6\cdot10^{-4})}\rceil=41。

实现需要已安装的 NumPy、有限上下限,以及能接收数组并返回同形状数组的函数。常函数应写成 lambda x: np.ones_like(x),不能写成 lambda x: 1。这些是固定网格的教学程序,不是自适应奇异积分求解器。

f = lambda x: x**2
assert np.isclose(midpoint_rule(f, 0, 1, 2), 5/16)
assert np.isclose(trapezoid_rule(f, 0, 1, 2), 3/8)
assert np.isclose(simpsons_rule(f, 0, 1, 2), 1/3)

可比较 n,2n,4nn,2n,4n 的结果观察收敛,但数值接近不是严格误差保证:网格可能漏掉狭窄尖峰。梯形法和辛普森法不能直接采样奇异端点,应先分段或换元。无穷区间截断还会引入独立的尾部误差:把 ∫1∞x−2 dx\int_1^\infty x^{-2}\,dx 换成 ∫1Rx−2 dx\int_1^R x^{-2}\,dx,恰好遗漏 1/R1/R,加密网格也无法消除它。

探索关联打开关联网络