JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

分离变量法

求解三大经典偏微分方程的主力方法:先猜解是若干单变量因子的乘积,看着方程散成一个个常微分方程,再用得到的本征函数把任意初始形状重新搭起来。

那个让偏微分方程变得可解的大胆猜测

你已经学会了给一个偏微分方程分类,能看出它是抛物型、双曲型还是椭圆型。现在登场的,是第一个真正的求解技术,也是你日后会一次次伸手去拿的那一个:**分离变量法**。这个策略大胆得近乎放肆。一个偏微分方程把两个独立变量缠在一起——对于杆中的热方程,是位置 x 和时间 t,被那些偏导数打成一个结。我们不去解这个结,而是干脆假设它从来就不存在:我们去找形如「一个只含 x 的函数」乘以「一个只含 t 的函数」的解,u(x, t) = X(x) T(t)。这要求似乎太过分了。可了不起的是,对于合适的问题,它真的管用。

把画面落到实处。取一根长度为 L 的细金属杆,沿 x 轴从 0 摆到 L,两端都埋在冰里,因而被固定在温度零。在最初那一刻,你交给它某个温度分布 f(x)——也许中间烫、两端冷。热方程 du/dt = k d^2u/dx^2(其中 k > 0 是热扩散率)支配着此后的每一刻:每一点处温度随时间的变化率,正比于那里空间上的弯曲程度。分布向上鼓起(上凸,偏导数的二阶为负)的地方温度下降;向下凹陷(下凹)的地方温度上升。热从热处流向冷处,凸包逐渐松弛。我们的任务,是从这一个初始形状 f(x),预测出整个未来 u(x, t)。

把猜测代回去,再把变量撬开

把猜测 u = X(x) T(t) 喂进 du/dt = k d^2u/dx^2。时间导数只碰 T,于是 du/dt = X(x) T'(t)。两次空间导数只碰 X,于是 d^2u/dx^2 = X''(x) T(t)。热方程变成 X T' = k X'' T。现在每一项都是「一个 x 的东西」乘「一个 t 的东西」,我们可以把它们分类:两边同除以 k X T,把所有含 t 的项归到一边,所有含 x 的项归到另一边。结果是 T'/(k T) = X''/X。盯着这个方程,因为下一句话就是整个诀窍。

左边只依赖 t;右边只依赖 x。然而它们对所有 x 和所有 t 同时相等。一个纯粹的 t 的函数要处处等于一个纯粹的 x 的函数,唯一的可能是两者都等于同一个常数——你拨动 t,左边不能动(一动就破坏了等式,而冻结在 x 里的右边拒绝跟随),反之亦然。所以每一边都等于一个固定的数。我们把它记作负 lambda,写成 T'/(k T) = X''/X = -lambda,那个负号是有远见地选的,因为(我们将会看到)边界条件会逼着 lambda 取正。一举之间,一个含两个变量的偏微分方程,裂变成了两个分立的常微分方程:X'' + lambda X = 0 与 T' + k lambda T = 0。

边界条件挑选出被允许的模式

现在来解空间方程 X'' + lambda X = 0——但不是在真空里解。杆的两端被固定在零,u(0, t) = 0 与 u(L, t) = 0 对所有 t 成立,而既然 u = X T,这就逼出 X(0) = 0 与 X(L) = 0(我们丢弃平凡的 T = 0)。这是 X 上的齐次狄利克雷边界条件。常微分方程 X'' + lambda X = 0 有一个你在二阶线性常微分方程里熟知的特征方程 r^2 + lambda = 0。它的解依赖于 lambda 的符号,而把这三种情形都查一遍,正是把除一支特殊的离散族之外的一切都杀掉的过程。

X'' + lambda X = 0,   X(0) = 0,   X(L) = 0

Case lambda < 0  (write lambda = -mu^2):  X = A cosh(mu x) + B sinh(mu x)
   X(0)=0 => A = 0;  X(L)=0 => B sinh(mu L) = 0 => B = 0.   Only X == 0.  Rejected.

Case lambda = 0:                          X = A + B x
   X(0)=0 => A = 0;  X(L)=0 => B L = 0 => B = 0.            Only X == 0.  Rejected.

Case lambda > 0  (write lambda = mu^2):   X = A cos(mu x) + B sin(mu x)
   X(0)=0 => A = 0;  X(L)=0 => B sin(mu L) = 0.
   Nontrivial (B != 0) needs sin(mu L) = 0 => mu L = n pi,  n = 1, 2, 3, ...

   ==> lambda_n = (n pi / L)^2,    X_n(x) = sin(n pi x / L)
只有正的 lambda 幸存。被夹住的两端就像一根在两个琴码上都固定的吉他弦:只有整数个半波能装进去,于是 lambda 被逼上离散的阶梯 lambda_n = (n pi / L)^2,形状为 X_n = sin(n pi x / L)。

读懂刚刚发生的事。边界条件起了过滤器的作用:在连续多个可能的 lambda 之中,只有离散的阶梯 lambda_n = (n pi / L)^2(n = 1, 2, 3, ...)通过,每一个都带着自己的空间形状 X_n(x) = sin(n pi x / L)。这些特殊的数就是这个问题的本征值,那些正弦形状就是它的本征函数——杆的自然模式,完全由它的几何与两端被固定的方式所确定。它们恰恰是长度为 L 的弦能容纳的驻波形状:一个鼓包、两个、三个。手握每一个 X_n,时间方程 T' + k lambda_n T = 0 就是一行就能解完的可分离一阶常微分方程,它的解是纯粹的衰减,T_n(t) = e^(-k lambda_n t)。于是一个分离解就是 u_n(x, t) = sin(n pi x / L) e^(-k (n pi / L)^2 t)。

叠加:用这些模式搭出任意形状

单独的每一个 u_n 都是货真价实的解,但单独一个正弦几乎永远配不上你拿到的那个杂乱初始分布 f(x)。这里,热方程的线性救了我们。因为方程是线性且齐次的,叠加原理成立:任意多个解之和仍是解。于是我们组成最一般的组合,u(x, t) = 对 n 求和的 b_n sin(n pi x / L) e^(-k (n pi / L)^2 t),其中常数 b_n 仍然自由。无论 b_n 怎么选,这个和都自动满足偏微分方程与两个边界条件。只剩一个条件还没用上——初始形状——而它恰好足以把每一个 b_n 都定下来。

令 t = 0。每个衰减因子都变成 e^0 = 1,于是要求 u(x, 0) = f(x) 读作 f(x) = b_n sin(n pi x / L) 之和。这就是 f 在区间 [0, L] 上的一个傅里叶正弦级数——傅里叶那几篇里的半区间展开,如今带着用途登场。这些系数不是猜出来的;它们靠本征函数的正交性算出来。不同 n 的正弦 sin(n pi x / L) 两两正交:sin(n pi x / L) sin(m pi x / L) 在 [0, L] 上的定积分,当 n 不等于 m 时为零,相等时等于 L/2。把两边同乘 sin(m pi x / L),从 0 到 L 积分,整个和就坍缩了——除第 m 项外每一项都积成零——剩下 b_m = (2/L) 乘以 f(x) sin(m pi x / L) 从 0 到 L 的积分。

  1. 分离:代入 u = X(x) T(t),除以 k X T,令两边都等于常数 -lambda。偏微分方程裂成 X'' + lambda X = 0 与 T' + k lambda T = 0。
  2. 解本征值问题:在空间常微分方程上施加 X(0) = X(L) = 0;只有 lambda_n = (n pi / L)^2 幸存,本征函数为 X_n = sin(n pi x / L)。
  3. 对每个模式解时间常微分方程:T_n(t) = e^(-k lambda_n t),一个衰减率由 lambda_n 决定的纯指数衰减。
  4. 叠加并拟合初始数据:求和 b_n X_n(x) T_n(t),再令 t = 0,挑选 b_n 使这个和等于 f(x)——它们就是傅里叶正弦系数 b_n = (2/L) 乘以 f(x) sin(n pi x / L) 从 0 到 L 的积分。

读懂这个答案,也读懂它的小字

完成的解是 u(x, t) = b_n sin(n pi x / L) e^(-k (n pi / L)^2 t) 之和,它讲了一个鲜活的物理故事。每个模式都指数衰减,但衰减率是 k (n pi / L)^2——正比于 n 的平方。那些曲率尖锐、n 很高的扭动模式,凶猛地飞快消融;而平缓的第一模式 sin(pi x / L) 褪色最慢。所以无论你以多么参差的分布起步,杆几乎一瞬间就抹平成那个最低的单峰形状,随后悄悄地塌向零。这就是一个你早已刻在骨子里的事实的数学面孔:尖锐的温差最先被抹平,而热永远模糊细节。这个本征函数展开,已把单独一个偏微分方程,变成了一支由各自独立衰减的音符组成的无穷乐队。

对这个级数承诺了什么、没承诺什么,要诚实。b_n 恰是傅里叶正弦系数,所以若 f 带有跳跃,级数最初的那一片就携带着你先前见过的同一个吉布斯过冲——在 t = 0 处,截断和会在拐角上过冲。但这里物理是宽容的:对任意 t > 0,因子 e^(-k (n pi / L)^2 t) 把高 n 项压得如此猛烈,以至于热一开始流动,级数就在那一瞬间变得无穷光滑。吉布斯振铃只活在初始那一刻,此后所有时间里都已消失。这种「瞬时抹平」是抛物型热方程独有的;用一模一样的分离方法求解的波动方程,并没有这样的阻尼因子——它的模式不衰减而是永远振荡,所以初始数据里的一个拐角会原封不动地一路同行。同样的方法,截然不同的物理。

在你把这套带走之前,还有两条诚实的提醒。其一,这个配方依赖于齐次边界条件——两端都为零。如果两端反而被固定在非零的温度上,乘积形式直接失效,因为常数无法分解成 X(x)T(t);标准的补救是先减去稳态解(杆最终安定到的那条直线),让剩下的问题重新拥有零边界,再去分离它。其二,这套「先乘积、再叠加」的构造能重现每一个合理的 f、并且是唯一的解,并不是挥挥手就显然的——它靠的是一条货真价实的定理。正弦本征函数的完备性保证了展开存在,极大值原理保证了热方程是适定的,所以你搭出来的那个答案,就是那个答案。这套方法之所以是一名忠实的仆人,正因为有那套理论在它背后撑着。