让变换值得费这番功夫的那一个戏法
在本级前面的几篇里,你把[[fourier-transform-pair|傅里叶变换]]看作傅里叶级数在周期延伸到无穷时的极限:一个函数 f(x) 被分解成一段连续的频谱 F(k),而一个相配的反变换又能从 F 重建出 f。这是看待一个信号的优美方式。但工程师和物理学家天天伸手去取它,原因更实际,而且只是一个事实:变换把“求导”这个动作变成了“相乘”这个动作。一边的微积分,变成了另一边的代数。
想想这是为什么。傅里叶变换把 f 写成一堆纯波 e^{i k x} 的叠加。对 e^{i k x} 求一次导,不过是把它乘以 i k——波的形状没变,只是幅度被缩放。所以若 f 是这样一堆波,取 df/dx 就把第 k 个波缩放 i k 倍,别无其他。翻译到变换的世界里,这就是[[fourier-transform-of-derivatives|导数的变换法则]]:若 F(k) 是 f(x) 的变换,则 f'(x) 的变换就只是 (i k) F(k)。求导——屋里最难的运算——变成了乘以 i k。
用它两次,二阶导数 f''(x) 就变换成 (i k)^2 F(k) = -k^2 F(k)。你往 f 上每叠一次导,就只是给 F(k) 再乘一个 i k 因子。于是一个微分方程——一句把 f 与它的导数们纠缠在一起的话——在变换之后,就变成一句把 F(k) 与 k 的各次幂纠缠在一起的、寻常的代数方程。微积分一点不剩;只需解出 F(k)。这就是全部的策略,而本篇余下的内容,就是学会信任它、并干净利落地把它执行出来。
法则从何而来,以及关于边界的那个陷阱
这法则并非魔法;它是一次乔装过的分部积分。f'(x) 的变换,是 f'(x) e^{-i k x} dx 在整条直线上的积分。做分部积分:导数从 f 上跳下来、落到指数上,贡献一个因子 -(-i k) = i k,而剩下的边界项是 f(x) e^{-i k x} 在 x = 正负无穷处的取值。傅里叶变换若想存在,f 在远处就必须衰减到零,于是那个边界项干脆消失——存活下来的,恰好就是 (i k) 乘以 f 的变换。
那个消失的边界项,是一处真实分别的核心。傅里叶变换活在无穷长的直线上,那里万物必须在两端死去,所以导数法则很干净:没有剩料。但它的表亲[[laplace-transform|拉普拉斯变换]]活在从 0 到无穷的半直线上,在 x = 0 处留下了一个边界项——而那块存活下来的料,恰好就是初始条件。它的导数法则写作:f'(t) 的变换是 s F(s) - f(0),f''(t) 的变换是 s^2 F(s) - s f(0) - f'(0)。初始数据不是事后补的;它直接被烤进了代数里。
三步:变换、求解、反变换
无论方程是什么,每一种变换方法都是同一支三拍的舞。你离开那个艰难的原始世界,在变换世界里做轻松的活,再回家。慢慢走通一次,它就成了反射。让我们先在一个你本就能手算的简单微分方程上跑一遍,纯粹为了看清这套机械,然后再把它放出去对付一个你手算不来的偏微分方程。
- 变换每一项。用变换打在方程的两边上。每个导数变成乘以 i k(傅里叶)或乘以 s 并附带初始条件的料(拉普拉斯),于是微分方程坍缩成一个关于被变换的未知量 F(k) 或 F(s) 的代数方程。导数们消失了。
- 解那个代数。既然路上没了导数,就用寻常代数把被变换的未知量孤立出来——做除法、做因式分解、做整理。你得到一个关于 k(或 s)与已知数据的、F(k) 或 F(s) 的整洁闭式。这一步偿付了整段绕路的代价。
- 反变换以回家。对那条公式施行反变换,把原变量里真正的解找回来。实践中你很少从头算那个反变换积分——你在一张变换对照表里认出各个零件,或者动用卷积定理,把答案读出来。最难的一步,通常正是这最后一步。
取初值问题 y'' + y = 0,附 y(0) = 0、y'(0) = 1,这是一道单位幅度振荡的方程。按拉普拉斯法则,y'' 变换成 s^2 Y(s) - s y(0) - y'(0) = s^2 Y(s) - 1,y 变换成 Y(s)。方程变成 s^2 Y(s) - 1 + Y(s) = 0,纯代数;解得 Y(s) = 1/(s^2 + 1)。一张表告诉你 1/(s^2 + 1) 是 sin(t) 的变换——于是 y(t) = sin(t),恰是特征方程本会给出的那个振荡,但这回是不必猜任何试探解就到了手。用变换解初值问题,缩影正是这般模样。
压轴:无穷长杆上的热方程
现在是回报,一个寻常方法会绊倒的问题。一根无限长的杆有一个初始温度分布 f(x),我们想要此后每一时刻的温度 u(x, t)。支配它的定律是[[heat-equation|热方程]],一个偏微分方程:du/dt = alpha 乘以 d^2u/dx^2,其中 alpha 是热扩散率。它牵涉一个对时间的偏导数与两个对空间的偏导数,纠缠在一起——这正是变换被造出来要斩断的那种纠缠。
决定性的一步在此:只对 x 做变换——那个跑遍整条直线的变量——让 t 作为旁观者原封不动。设 U(k, t) 是 u(x, t) 关于 x 的傅里叶变换。空间导数 d^2u/dx^2 按法则变成 -k^2 U(k, t)。时间导数 du/dt 径直穿过那个对 x 的积分、变成 dU/dt,仍是一个老实的导数——因为 t 从未被变换。那个吓人的二元偏微分方程坍缩成 dU/dt = -alpha k^2 U,对每个固定的 k 而言,这不过是一个关于 t 的一阶常微分方程。我们把一个偏微分方程,变成了一族平凡的常微分方程,一个频率配一个。
PDE (in x and t): du/dt = alpha * d^2u/dx^2 , u(x,0) = f(x) apply Fourier transform in x only (d/dx -> i k, d^2/dx^2 -> -k^2) ODE (in t, k a parameter): dU/dt = -alpha k^2 * U , U(k,0) = F(k) solve this first-order ODE in t: U(k,t) = F(k) * exp(-alpha k^2 t) <- spectrum decays, fast modes first invert the transform in x to get back u(x,t).
那个小小的常微分方程 dU/dt = -alpha k^2 U,是活着的最简单的方程:指数衰减。它的解是 U(k, t) = U(k, 0) e^{-alpha k^2 t},而起始值 U(k, 0) 不过是 F(k),即给定初始分布 f(x) 的变换。所以 U(k, t) = F(k) e^{-alpha k^2 t}。在反变换之前,先读出它在物理上说了什么:每个频率分量 F(k) 都只是指数地淡去,而淡去的速率 alpha k^2 随 k^2 增长——于是温度里最扭曲、最高频的部分先死,而宽阔、缓慢的成分则逗留。这就是扩散把一个分布抹平的过程,用尽可能干净的语言道出。
回家:高斯核与卷积
我们手里有 U(k, t) = F(k) e^{-alpha k^2 t};最后一步是反变换、与 u(x, t) 正面相见。注意答案是两个变换的乘积:F(k),即初始数据的变换,乘以 e^{-alpha k^2 t}。[[fourier-convolution-theorem|卷积定理]]说:变换世界里的乘积,是原世界里的卷积——所以 u(x, t) 是 f(x) 与“某个以 e^{-alpha k^2 t} 为其变换的函数”的卷积。我们只需认出那第二个函数。
而这里,一位第一卷的老友又走了回来。函数 e^{-alpha k^2 t} 是 k 里的一条高斯钟形,而一个深刻、近乎神奇的事实——它由高斯积分(e^{-x^2} 在整条直线上的积分等于 sqrt(pi))证得——是:一条高斯的傅里叶变换,仍是一条高斯。反变换 e^{-alpha k^2 t},得到 x 里一条归一化的钟形曲线:热核 G(x, t) = (1 / sqrt(4 pi alpha t)) 乘以 e^{-x^2 / (4 alpha t)},一个以原点为心、宽度按 sqrt(t) 增长的小丘。于是解就是 u(x, t) = 初始分布 f 与这条铺展开来的高斯的卷积。
与一条钟形曲线卷积,恰恰就是一次加权的、模糊化的平均:要求点 x、时刻 t 处的温度,你就在一个邻域上对初始分布做平均,给近处的点以重权、给远处的点以高斯尾巴的轻权。t 越大钟形越宽,于是越晚的每个温度,都是对原分布越来越长一段的平均——热量从四面八方渗入,分布越抹越光滑、越平。倘若初始分布本身就是一根孤独的热尖峰,即原点处的一个狄拉克 delta,那么卷积什么也不做,答案就是赤裸的核 G(x, t)。那便是基本解:对一个热点源的响应,是把其余一切解都靠涂抹建起来的那颗种子。
诚实的边界,以及该带走什么
这方法强大,却非全能,几条诚实的提醒能保你平安。其一,反变换是瓶颈:代数那步容易,但把原函数找回来,可能要算一个艰难的反变换积分。实践中你倚靠表格、卷积定理,或者——对拉普拉斯变换而言——对布罗姆维奇积分做围道积分,那是你将在本卷稍后遇见的一种复平面技术。反变换不是可以跳过的取巧;它确确实实是活计所在之处。
其二,变换需要对的定义域和衰减。上面的傅里叶方法之所以奏效,恰恰因为杆是无限长的、温度在两端死去,于是边界项消失。在一根两端固定的有限长杆上,你无法对整条直线做变换;那时你退回到分离变量法与傅里叶级数,即上一级里那个有限的表亲。挑选变换,实则是在挑选一种几何,而几何必须相配。其三,一个微妙之处:热核对任何大于零的 t 处处为正,这意味着热量在形式上瞬间抵达每一点——这是热方程作为一个物理模型已知的、诚实的缺陷,而非我们求解中的错误。
退后一步,看清整个念头的形状。变换把一个世界里的难题,换成另一个世界里的易题,因为它把求导对角化了——它让每一道纯波都成为一个本征函数,导数对它只是重新缩放。变换、解代数、反变换:同样的三拍,能料理常微分方程、热方程、波动方程,以及远不止于此。你如今握着的,是为信号处理、光学、控制论与量子力学供能的那台引擎。后续各级不过是递给它新的函数家族去作用——而你在这里建起的那份反射,正是会迁移过去的东西。