本节摘要:傅里叶分析断言信号可以拆解为正弦波的叠加,这一思想经两百年严格化后成为信号处理、压缩、微分方程求解的通用语言;复分析则在复平面上发现解析函数被极点完全决定,柯西积分定理与留数定理让一大类实积分变成"查表数极点"。本节用离散傅里叶变换做频谱实验,用 SymPy 演示留数计算实积分,并说明两个领域在单位根处的会师。
1807 年,傅里叶向巴黎科学院宣称:任意周期函数都能展开成正弦与余弦的无级数。拉格朗日当场表示不信——分段不连续的函数怎么可能由处处光滑的正弦波叠加出来?这场争论持续了半个多世纪,狄利克雷最终给出收敛的充分条件(分段光滑、周期),勒贝格积分(更宽容的积分定义)把可展开函数类扩到极大。故事的结局颇有戏剧性:傅里叶的直觉方向全对,严格化反而让工具更强。今天你手机里每一段音频、每一张压缩图片,内核都是这个断言。
离散傅里叶变换(DFT)是这套理论的有限版本:N 个采样点被展开在 N 个复指数基上。手工实现并做一次频谱侦查:
import cmath def dft(signal): # 朴素 DFT:X[k] = 信号与第 k 个复指数基的内积 N = len(signal) return [sum(signal[n] * cmath.exp(-2j * cmath.pi * k * n / N) for n in range(N)) for k in range(N)] # 混合信号:三个频率成分 + 噪声 import random, math random.seed(3) N = 256 signal = [3 * math.sin(2 * math.pi * 5 * n / N) # 5 倍频,振幅 3 + 1.5 * math.sin(2 * math.pi * 13 * n / N) # 13 倍频,振幅 1.5 + 0.7 * math.sin(2 * math.pi * 40 * n / N) # 40 倍频,振幅 0.7 + 0.1 * random.gauss(0, 1) for n in range(N)] spectrum = dft(signal) mags = [abs(X) / N * 2 for X in spectrum[:N // 2]] # 单边幅值谱 for k in [5, 13, 40]: print(f"频率 {k}: 幅值 {mags[k]:.3f}") # 输出约 3.0、1.5、0.7:DFT 精确找出三个隐藏成分的频率与振幅 # 这就是频谱分析的原理——噪声背景下按频率"对账"
变换是可逆的,逆变换把基上的系数重新合成为信号;有损压缩的胆量来自:丢掉幅值小的系数,合成信号几乎不变——耳朵与眼睛对小成分不敏感,JPEG 与 MP3 全押在这条性质上。

FFT(快速傅里叶变换)把 DFT 的计算量从 N 平方降到 N 乘以 log N,是二十世纪最有价值的算法之一。它的分治结构与第 1 章的递归归纳一脉相承:把 N 点变换拆成两个 N/2 点变换,奇偶分组后合并——矩阵视角下正是第 2 章的单位根矩阵的特殊因子化。
换到复平面,第 2 章的乘法几何(模相乘、辐角相加)直接给出核心工具:复指数绕单位圆转圈,正弦与余弦是它的实虚部投影。复可导(可微)比实可导苛刻得多——要求沿任意方向逼近时差商极限一致,这个苛刻换来的是超常回报:解析函数无限次可导、局部完全由泰勒系数决定、全局被奇点(极点与本性奇点)完全支配。柯西积分定理说解析函数沿不包含奇点的闭路积分为零——直观上是"保守力场沿闭合路径做功为零"的复变版本;留数定理进一步把闭路积分归结为内部各极点留数之和乘 2 pi i。
用留数定理算一个实变量方法很难积分的例子:
import sympy as sp x = sp.symbols('x', positive=True) # 目标积分:0 到无穷 1/(1+x^4) dx —— 实分析方法冗长,留数定理三行解决 res = sp.residue(1 / (1 + sp.symbols('z')**4), sp.symbols('z'), sp.exp(sp.pi * sp.I / 4)) integral = 2 * sp.pi * sp.I * res # 上半平面单个一阶极点的留数贡献 print(sp.simplify(sp.im(integral))) # 输出 pi/(2*sqrt(2)) 约 1.1107 # 数值验证 import numpy as np xs = np.linspace(0, 200, 2_000_001) print(np.trapz(1 / (1 + xs**4), xs)) # 输出约 1.1107,与留数计算一致
复分析还是经典的"外围武器":素数定理的最早证明用黎曼 zeta 函数的复解析性质(第 6 章会再遇到它),傅里叶变换的深刻版本(拉普拉斯变换)也是复频域的语言。
DFT 的基是 N 次单位根,伽罗瓦理论里方程可解性依赖的根与单位根,快速数论变换干脆在素数模下用单位根替代复指数根。频率世界观与代数结构世界观在单位根处握手——这解释了为什么"复数"这个曾被称作诡辩量的对象,会成为数字信号与数论共同的家。
⚠️ 实用警告一:DFT 把信号当作周期的,对非周期信号直接做会引入频谱泄漏,工程上先加窗(汉宁窗等)再变换。警告二:采样率低于信号最高频率两倍时发生混叠(奈奎斯特准则),高频成分会伪装成低频——预处理必须先抗混叠滤波。
还有一个初学者常见的方向性误区:频谱的横轴不是"时间"而是频率——傅里叶变换用"频率分辨率"换掉了"时间定位",这正是不确定性原理在信号处理中的化身:一个信号不可能同时在时间上和频率上任意精确地定位。短时傅里叶变换与小波变换正是为缓解这一权衡而生:前者滑动一个时间窗做局部频谱,后者用可伸缩的基在不同尺度上自动分配时间-频率分辨率。理解这条主线后,再去读任何压缩标准(音频的频域编码、图像的块变换)都是在读同一套数学的不同工程封装。
连续世界的装备发放完毕。下一章切换到离散与随机:图、素数、概率与统计——计算机时代数学的主战场。