吉布斯现象

在数值分析领域中，吉布斯现象（Gibbs phenomenon）是傅立叶级数对具有不连续点的周期函数进行近似时出现的振荡行为。对该函数的$N$项傅立叶级数部分和（由函数傅立叶级数中最低的 $N$ 个正弦波组成）在不连续点附近会出现明显的过冲。即使使用更多的正弦项，这种逼近误差也只会收敛到约为跳跃高度 9% 的极限，尽管无穷傅立叶级数最终仍会几乎处处收敛。

吉布斯现象最初是由实验物理学家观察到的，当时人们认为这是由于测量仪器的缺陷所致，但其实这是一个纯粹的数学现象。这种现象也是讯号处理中常见的振铃效应原因之一。该现象以乔赛亚·威拉德·吉布斯（Josiah Willard Gibbs）的名字命名。

## 现象描述

<image>

<image>

<image>

吉布斯现象描述的是函数具有跳跃不连续时，其傅立叶级数呈现的行为。可描述如下：当傅立叶级数加入更多的组成项时，其在跳跃点附近的震荡行为会出现第一次超越，逼近跳跃高度约 9%，而这种震荡并不会消失，只会越来越接近跳跃点，使得震荡的积分趋近于零。在跳跃点处，傅立叶级数的值是该函数在该点左右极限的平均值。

### 方波范例

右侧的三张图片展示了一个方波的吉布斯现象（方波的峰峰值为 $c$，范围从 $-c/2$ 到 $c/2$，周期为 $L$），其$N$项傅立叶级数部分和为：

$$\frac{2c}{\pi}\left ( \sin(\omega x) + \frac{1}{3} \sin(3\omega x) + \cdots + \frac{1}{2N-1} \sin((2N-1)\omega x) \right )$$

其中 $\omega = 2\pi/L$。更精确地说，该方波函数 $f(x)$ 在区间 $2n(L/2)$ 到 $(2n+1)(L/2)$ 间等于 $\tfrac{c}{2}$，而在 $(2n+1)(L/2)$ 到 $(2n+2)(L/2)$ 间等于 $-\tfrac{c}{2}$，对于每个整数 $n$ 成立；因此该方波在每个 $L/2$ 的整数倍处都有跳跃不连续，跳跃高度为 $c$。

随着加入更多的正弦项（即增加 $N$），部分傅立叶级数的误差会收敛到一个固定高度。但由于误差的宽度会不断缩小，因此其面积，也就是误差的能量，会趋近于 0。对方波的分析显示，误差超过了方波由零到顶的高度 $\tfrac{c}{2}$，其超出量为：

$$\frac{c}{\pi} \int_0^\pi \frac{\sin(t)}{t}\ dt - \frac{c}{2} = c \cdot (0.089489872236\dots).$$（A243268）

即约为跳跃总高度 $c$ 的 9%。更一般地，对于任何具有跳跃高度 $c$ 的分段连续可微函数，其 $N$项傅立叶级数部分和（当 $N$ 趋于很大时）在跳跃点一侧会出现近似 $c \cdot (0.089489872236\dots)$ 的超出，在另一侧出现等量的低估；因此级数的“总跳跃量”约为原函数的跳跃量多出 18%。在不连续点处，傅立叶级数会收敛到该跳跃的中点，这是狄利克雷定理的结果。该积分量：

$$\int_0^\pi \frac{\sin t}{t}\ dt = (1.851937051982\dots) = \frac{\pi}{2} + \pi \cdot (0.089489872236\dots)$$（A036792）

有时被称为Henry Wilbraham–Gibbs 常数”。

### 历史

吉布斯现象最早由Henry Wilbraham在 1848 年的一篇论文中提出和分析。该文在当时未受到重视，直到 1914 年被Heinrich Burkhardt在Klein's encyclopedia中提及。1898 年，阿尔伯特·迈克耳孙开发了一种能够计算并重建傅立叶级数的装置。有一则流传甚广的轶事说，当输入方波的傅立叶系数时，图形在不连续处会出现震荡。当时由于机器存在制造误差，迈克耳孙误以为这些超出是机器的错误。事实上，该装置所产生的图形分辨率并不足以清楚展现吉布斯现象，迈克耳孙本人可能并未注意到此现象，因为他在发表的论文或随后寄给《自然》的信件中均未提及。

在《自然》杂志上，迈克耳孙与奥古斯塔斯·乐甫（A. E. H. Love）关于方波傅立叶级数收敛性的通信激发了乔赛亚·威拉德·吉布斯的兴趣。他于 1898 年发表了一则短文，指出傅立叶级数部分和图形的极限与部分和的极限图形之间的重要差异。在他最初的信中并未提及吉布斯现象，并且对极限的描述有误。1899 年，他发表了修正稿，描述了不连续点处的超出现象（《Nature》，1899 年 4 月 27 日，第 606 页）。1906 年，马克西姆·博谢对该超出进行了详细的数学分析，并首次使用“吉布斯现象”一词，从而使该术语广为人知。

1925 年，当Henry Wilbraham的论文重新被注意时，Horatio Scott Carslaw 评论道：“我们仍可以将傅立叶级数（及某些其他级数）的这一特性称为吉布斯现象；但我们不应再认为这是吉布斯首先发现的。”

### 解释

不严谨地说，吉布斯现象反映了以“有限个”连续的正弦波来近似一个“不连续函数”所固有的困难。这里强调“有限”一词很重要，因为尽管傅立叶级数的每一个部分和在每个不连续点附近都会有过冲（overshoot）的情况，无限项的总和在极限下并不会出现这种现象。当项数增加时，超出的波峰会越来越靠近不连续点，因此收敛仍是可能的。

这并不矛盾（即便超出的误差在极限下收敛到一个非零的高度，而无限总和本身却没有超出），因为这些波峰逐渐向不连续点靠近。吉布斯现象因此展现出的是“逐点收敛”（pointwise convergence），而不是“一致收敛”（uniform convergence）。对于分段连续可微（即属于 C¹ 类）的函数，其傅立叶级数在除跳跃不连续点以外的“每一点”都会收敛到该函数的值。至于跳跃不连续点，无限和会收敛到跳跃点的中点值（即该点左右极限的平均值），这是狄利克雷定理（Dirichlet’s theorem）的结果。

吉布斯现象与“函数的平滑度控制其傅立叶系数的衰减速度”这一原理密切相关。愈平滑的函数，其傅立叶系数衰减得愈快（因此收敛得也愈快）；而不连续的函数，其傅立叶系数会缓慢衰减（导致收敛变慢）。例如，不连续的方波，其傅立叶系数为 $(\tfrac{1}{1},{\scriptstyle\text{0}},\tfrac{1}{3},{\scriptstyle\text{0}},\tfrac{1}{5},{\scriptstyle\text{0}},\tfrac{1}{7},{\scriptstyle\text{0}},\tfrac{1}{9},{\scriptstyle\text{0}},\dots)$，只以 $\tfrac{1}{n}$ 的速度衰减；而连续的三角波，其傅立叶系数为 $(\tfrac{1}{1^2},{\scriptstyle\text{0}},\tfrac{-1}{3^2},{\scriptstyle\text{0}},\tfrac{1}{5^2},{\scriptstyle\text{0}},\tfrac{-1}{7^2},{\scriptstyle\text{0}},\tfrac{1}{9^2},{\scriptstyle\text{0}},\dots)$，则以 $\tfrac{1}{n^2}$ 的速度快速衰减。

然而这只是对吉布斯现象的部分解释，因为若傅立叶级数的系数“绝对收敛”，根据魏尔斯特拉斯 M 测试（Weierstrass M-test），其级数将会“一致收敛”，从而不会出现上述的振荡现象。同理，不连续函数也不可能具有绝对收敛的傅立叶系数，因为那样的函数将是连续函数的“一致极限”，也就是连续的，这将导致矛盾。

### 解决方法

由于吉布斯现象是因“过冲”（overshooting）而造成的，因此可以透过使用“非负核函数”来消除这个现象，例如使用 Fejér 核。

在实际应用中，可以借由采用较平滑的傅立叶级数求和方法来改善吉布斯现象所带来的问题，例如 Fejér 求和、Riesz 求和，或是使用 σ-近似（sigma-approximation）。使用连续的小波转换时，小波吉布斯现象的严重程度永远不会超过傅立叶的吉布斯现象。此外，若使用以 Haar 基底函数 为基础的 离散小波转换，则对于具有跳跃不连续的连续资料，吉布斯现象完全不会出现，在离散资料中，大幅变化点附近的吉布斯现象也会被大幅减轻。在小波分析领域，这种情况通常被称为 Longo 现象（Longo phenomenon）。在多项式插值的应用场景中，可以利用 S-Gibbs 算法 来缓解吉布斯现象。

## 吉布斯现象的正式数学描述

设 $f: {\mathbb R} \to {\mathbb R}$ 为一个分段连续可微的函数，并且具有某个正的周期 $L > 0$。假设在某个点 $x_0$，函数 $f$ 的左极限 $f(x_0^-)$ 与右极限 $f(x_0^+)$ 存在差异，跳跃量为非零常数 $c$：

$$f(x_0^+) - f(x_0^-) = c \neq 0.$$ 对每个正整数 $N \geq 1$，令 $S_N f(x)$ 为 $N$ 次的傅立叶部分和（$S_N$ 可以视为对函数作用的数学算子）：

$$S_N f(x) := \sum_{-N \leq n \leq N} \widehat f(n) e^{\frac{i2\pi n x}{L}} = \frac{1}{2} a_0 + \sum_{n=1}^N \left( a_n \cos\left(\frac{2\pi nx}{L}\right) + b_n \sin\left(\frac{2\pi nx}{L}\right) \right),$$ 其中傅立叶系数 $\widehat f(n), a_n, b_n$ 定义如下：

$$\widehat f(n) := \frac{1}{L} \int_0^L f(x) e^{-\frac{i2\pi nx}{L}}\, dx$$ $$a_0 := \frac{1}{L} \int_0^L f(x)\ dx$$ $$a_n := \frac{2}{L} \int_0^L f(x) \cos\left(\frac{2\pi nx}{L}\right)\, dx$$ $$b_n := \frac{2}{L} \int_0^L f(x) \sin\left(\frac{2\pi nx}{L}\right)\, dx$$ 那么，我们有以下极限性质：

$$\lim_{N \to \infty} S_N f\left(x_0 + \frac{L}{2N}\right) = f(x_0^+) + c\cdot (0.089489872236\dots)$$ $$\lim_{N \to \infty} S_N f\left(x_0 - \frac{L}{2N}\right) = f(x_0^-) - c\cdot (0.089489872236\dots)$$ 但同时也有：

$$\lim_{N \to \infty} S_N f(x_0) = \frac{f(x_0^-) + f(x_0^+)}{2}$$ 更一般地说，若 $x_N$ 是一个实数数列，当 $N \to \infty$ 时趋近于 $x_0$，且跳跃 $c$ 为正数，则有：

$$\limsup_{N \to \infty} S_N f(x_N) \leq f(x_0^+) + c\cdot (0.089489872236\dots)$$ $$\liminf_{N \to \infty} S_N f(x_N) \geq f(x_0^-) - c\cdot (0.089489872236\dots)$$ 若跳跃 $c$ 为负，则上述两个不等式中需要对调上极限（$\limsup$）与下极限（$\liminf$），并对调不等号中的 $\leq$ 与 $\ge$。

### 一般情况下吉布斯现象的证明

设 $f: {\mathbb R} \to {\mathbb R}$ 为一个具周期性、周期为 $L > 0$ 的逐段连续可微函数，且此函数在若干处具有跳跃不连续点，记作 $x_i$，其中 $i = 0, 1, 2, \ldots$。在每个不连续点处，其垂直跳跃的幅度为 $c_i$。

那么，$f$ 可以表达为一个连续函数 $f_c$ 与一个多阶跃函数 $f_s$ 的和，其中 $f_s$ 是若干阶跃函数的总和：

$$f = f_c + f_s,$$ $$f_s = f_{s_1} + f_{s_2} + f_{s_3} + \cdots,$$ $$f_{s_i}(x) = \begin{cases} 0 & \text{if } x \leq x_i, \\ c_i, & \text{if } x > x_i. \end{cases}$$

设 $S_N f(x)$ 为 $f = f_c + f_s = f_c + \left ( f_{s_1} + f_{s_2} + f_{s_3} + \ldots \right )$ 的第 $N$ 项傅立叶级数部分和，则除了在不连续点 $x_i$ 附近外，该级数在所有 $x$ 点处均收敛良好。在每个不连续点 $x_i$ 附近，只有 $f_{s_i}$ 会呈现出吉布斯现象（最大振荡误差约为跳跃值 $c_i$ 的 9%，可参见方波分析），因为在该点附近，其他函数皆为连续（$f_c$）或为常零函数（$f_{s_j}$，其中 $j \neq i$）。这便证明了吉布斯现象会在每个跳跃不连续点发生。

## 讯号处理观点的解释

<image>

从讯号处理的角度来看，吉布斯现象就是低通滤波器的阶跃响应（step response），其振荡称为振铃或振铃效应。对于一个实数域上的信号，截断其傅立叶变换，或对周期信号（等价于定义在圆上的信号）截断其傅立叶级数，相当于使用一个理想的（也称“砖墙式”）低通滤波器来滤除高频分量。这种滤波过程可以表示为将原始信号与滤波器的脉冲响应（亦称为卷积核）做卷积，而该脉冲响应就是sinc函数。因此，吉布斯现象可以视为将一个单位阶跃函数（若不要求周期性）或一个方波（若要求周期性）与 sinc 函数进行卷积的结果：sinc 函数中的振荡造成输出中的波纹。

<image>

当与单位阶跃函数做卷积时，结果正是 sinc 函数的积分，也就是Si函数；对于方波，则较难用简单方式表述。对于阶跃函数，负下摆的大小正是 sinc 函数左尾巴从负无限大积到第一个负零点的积分值：若使用单位取样周期的标准化 sinc 函数，该值为$$\int_{-\infty}^{-1} \frac{\sin(\pi x)}{\pi x},dx.$$ 同理，正的上摆（overshoot）则具有相同大小：可看作是右尾巴的积分，或（等价地）是从负无限大积分至第一个正零点后再减去 1（即非振荡时的理想值）。

上摆与下摆可以这样理解：卷积核（kernel）通常会被标准化，使其总积分为 1，从而能将常数函数映射为常数函数——否则该滤波器将具有增益。卷积结果在某一点的值是输入信号的一组线性组合，其系数为核函数的值。

若卷积核为非负（如高斯核），则滤波后的信号值会是输入值的凸组合（因为系数为非负且总和为 1），因此结果必落于输入信号的最大值与最小值之间——不会有上摆或下摆。但若卷积核含有负值（如 sinc 函数），则滤波后的信号值将是输入值的仿射组合，因此可能落在输入的最小与最大值之外，从而产生上摆与下摆，也就是吉布斯现象。

若进行更长的展开——即在更高的频率处截断——这在频域中相当于加宽砖墙滤波器，在时域中则相当于缩窄 sinc 函数并成比例地增高其幅度，使得在相应点之间的积分值保持不变。这是傅立叶变换的一个普遍性质：在一个域中拉宽，会导致在另一个域中缩窄并增高幅度。这使得 sinc 函数中的振荡变得更窄、更高，而卷积后的滤波结果中振荡的面积虽然变小，但幅度并不会降低：即使截断于任意有限频率，所对应的 sinc 函数仍具有不变的尾部积分。这便解释了为何上摆与下摆的幅度不会消失。

<image>

- 振荡可以解释为与 sinc 函数的卷积。

<image>

- 更高的截止频率会使 sinc 函数变得更窄且更高，但尾部积分大小不变，因此得到更高频率的振荡，但其幅度不会消失。

因此，吉布斯现象的特征可以如此解释:

- 下摆是因为脉冲响应具有负的尾部积分，这是因为该函数本身取有负值;
- 上摆则是对应的对称补偿（整体积分在滤波下保持不变）;
- 振荡的持续性来自于：即使增加截止频率，脉冲响应变窄，积分却未减少——因此振荡虽然集中靠近不连续点，但其幅度并未减弱。

## 方波分析

<image>

我们考察一个具有周期性 $L$ 的方波 $f(x)$ 的第 $N$ 阶傅立叶部分和 $S_N f(x)$，该方波在 $x = x_0$ 处具有一个从 $y = y_0$ 起跳的垂直“完整”跳跃 $c$。由于奇数 $N$ 的情况类似，我们仅考虑偶数 $N$：

$$S_N f(x) = \left(y_0 + \frac{c}{2} \right) + \frac{2c}\pi \left ( \sin(\omega (x - x_0) ) + \frac{1}{3} \sin(3\omega (x - x_0)) + \cdots + \frac{1}{N-1} \sin((N-1)\omega (x - x_0)) \right )$$

其中 $\omega = \frac{2\pi}{L}$。（$N = 2N'$，$N'$ 是非零的傅立叶正弦项数，因此某些文献会用 $N'$ 代替 $N$。）

令 $x = x_0$（即不连续点），代入可得：

$$S_N f(x_0) = \left(y_0 + \frac{c}{2}\right) = \frac{f(0^-) + f(0^+)}{2} = \frac{y_0 + (y_0 + c)}{2}$$

如前所述，傅立叶级数在跳跃点处的值是左右极限的平均值。

接下来，我们透过检查 $S_N f(x)$ 的一阶与二阶导数来找出跳跃点 $x = x_0$ 附近震荡的第一个极大值位置。第一个条件是导数为零，即：

$$\frac{d}{dx} S_N f(x) = \frac{2c}{\pi} \left ( \cos(\omega (x - x_0)) + \cos(3\omega (x - x_0)) + \cdots + \cos((N-1)\omega (x - x_0)) \right ) = \frac{c}{\pi} \frac{\sin(N\omega (x - x_0))}{\sin(\omega (x - x_0))} = 0$$

第二个等号是利用拉格朗日三角恒等式推得。解此条件得：

$x - x_0 = \frac{k\pi}{N\omega} = \frac{kL}{2N}$。

其中 $k$ 为整数，须排除使分母为零的 $N\omega$ 倍数，因此允许的 $k$ 为 $1, 2, \ldots, N\omega - 1, N\omega + 1, \ldots$，以及其负值。

在 $x - x_0 = kL / (2N)$ 处，$S_N f(x)$ 的二阶导数为：

$$\frac{d^2}{dx^2} S_N f(x) = \frac{c\omega}{\pi} \left ( \frac{N\cos(N\omega (x - x_0))\sin(\omega (x - x_0)) - \sin(N\omega (x - x_0))\cos(\omega (x - x_0))}{\sin^2(\omega (x - x_0))} \right )$$

$$\left. \frac{d^2}{dx^2} S_N f(x) \right \vert _{x_0 + kL / (2N)} = \begin{cases} \frac{2c}{L} \frac{N }{\sin(k\pi/N)}, & \text{if }k \text{ is even,} \\[4pt] \frac{2c}{L} \frac{-N }{\sin(k\pi/N)}, & \text{if }k \text{ is odd.} \end{cases}$$

因此，第一个极大值出现在 $x = x_0 + L / (2N)$（即 $k = 1$），此时的函数值为：

$$S_N f\left(x_0 + \frac{L}{2N} \right) = \left(y_0 + \frac{c}{2}\right) + \frac{2c}{\pi} \left ( \sin\left(\frac{\pi}{N}\right) + \frac{1}{3} \sin\left(\frac{3\pi}{N}\right) + \cdots + \frac{1}{N-1} \sin\left( \frac{(N-1)\pi}{N} \right) \right )$$

若引入正规化的sinc函数 $\operatorname{sinc}(x) = \frac{\sin(\pi x)}{\pi x}$（$x \neq 0$），则上述可写为：

$$S_N f\left(x_0 + \frac{L}{2N} \right) = \left(y_0 + \frac{c}{2}\right) + c \left[ \frac{2}{N} \operatorname{sinc}\left(\frac{1}{N}\right) + \frac{2}{N} \operatorname{sinc}\left(\frac{3}{N}\right)+ \cdots + \frac{2}{N} \operatorname{sinc}\left( \frac{(N-1)}{N} \right) \right]$$

对于充分大的 $N$，括号内的和为黎曼和，可近似积分 $\int_0^1 \operatorname{sinc}(x)\ dx$（实际上是步长为 $\tfrac{2}{N}$ 的中间点法则）。由于 sinc 函数是连续的，该和在 $N \to \infty$ 时会趋近于积分值。因此。

$$\begin{align} \lim_{N \to \infty} S_N f\left(x_0 + \frac{L}{2N}\right) & = \left(y_0 + \frac{c}{2}\right) + c \int_0^1 \operatorname{sinc}(x)\, dx \\[8pt] & = \left(y_0 + \frac{c}{2}\right) + \frac{c}{\pi} \int_0^1 \frac{\sin(\pi x)}{x}\, dx \\[8pt] & = \left(y_0 + \frac{c}{2}\right) + \frac{c}{\pi} \int_0^\pi \frac{\sin(t)}{t}\ dt \quad = \quad y_0 + c + c \cdot (0.089489872236\dots) \end{align}$$ 这就是前一节所提及的结果。类似的计算可得：

$$\lim_{N \to \infty} S_N f\left(x_0 -\frac{L}{2N}\right) = y_0 - c \cdot (0.089489872236\dots)$$

## 结论

吉布斯现象在应用中往往是不受欢迎的，因为它会造成失真，如因过冲与下冲产生的削波，以及由震荡产生的振铃失真。在低通滤波器的应用中，可透过改变滤波器设计来减少或消除这些效应。

在核磁共振成像（MRI）中，当相邻区域的讯号强度差异很大时，吉布斯现象会造成伪影。这在脊髓 MRI 中尤为常见，有时可能会误认为是脊髓空洞症。

在图像的离散傅立叶转换中，吉布斯现象会以十字型的伪影图样出现，这是因为多数图像（如显微图或照片）在上下或左右边界处存在明显不连续。当傅立叶转换强制使用周期性边界条件时，这种跳跃不连续在频域中会以轴向的频率连续分布形式表现出来，即在傅立叶频谱中形成一个十字图样。

尽管本文主要探讨的是在时间域中用部分傅立叶级数重建不连续讯号所造成的失真，但在傅立叶反变换与正变换结构对称的情况下，这种问题在频率域中同样存在。例如，理想化的砖墙滤波器与矩形函数在频率域中具有不连续性，因此在时间域中其精确表示必然需要无限脉冲响应的sinc滤波器。若使用有限脉冲响应，会在截止频率附近导致频率响应中的吉布斯震荡。不过可以透过窗函数对有限脉冲响应滤波器进行加窗处理来减少震荡（代价是过渡带会变宽）。

## 延伸阅读

- 第1卷, 第2卷
- Paul J. Nahin, 《Dr. Euler's Fabulous Formula》，Princeton University Press，2006年，第4章，第4节。

## 外部链接

- Weisstein, Eric W., "Gibbs Phenomenon"，出自 Wolfram MathWorld