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

幂级数解法

当一个方程没有闭形式答案时,就猜答案是一个幂级数,再让方程一项接一项地告诉你它的系数。勒让德、埃尔米特、贝塞尔,都将从这道门走进来。

当没有公式肯回答时

到现在为止,你已经能用公式求解一大类常微分方程:可分离变量的、带积分因子的一阶线性方程、用特征方程解的常系数方程。但这些都是幸运的情形。写下一个看似无害的方程,比如 y'' - x y = 0(艾里方程),所有闭形式技巧就都失效了——没有任何幂、指数、对数、正弦的组合能满足它。诚实的回应不是放弃,而是改变我们对「答案」的理解。我们将把解构造成一个无穷级数。

这个想法稳稳地立在你第一卷已经见过的东西上。幂级数就是一个无穷次多项式,y = 从 n = 0 到无穷的 a_n x^n 之和 = a_0 + a_1 x + a_2 x^2 + ……,而你学过,在它的收敛半径之内它表现得像一个你能信赖的多项式:你可以逐项求导,也能自由地把这样的级数相加、相乘。泰勒级数是其中一种特殊情形,那里的系数来自一个已知函数的各阶导数。这里我们把逻辑反过来。我们并不知道这个函数;我们把系数 a_n 当作未知数,让微分方程替我们把它们一个个揪出来。

常点:方法被允许奏效的地方

在猜级数之前,我们必须问清楚自己在哪里有资格这样猜。把一个二阶线性方程写成标准形 y'' + P(x) y' + Q(x) y = 0。一个点 x_0 是常点,如果 P 和 Q 在那里都表现良好——确切地说,如果它们各自在 x_0 处都是解析的(本身等于一个收敛的幂级数)。如果其中任一个系数在那里发散,x_0 就是奇点,单纯的幂级数可能就不够用了。这种常点与奇点的区分并不是官样文章里的小字:它正是「一个整洁的幂级数行得通」与「你需要更重的工具」之间的那条界线。

在常点处会启动一条保证,而它值得明明白白地说出来,因为正是它让整个方法成为正当之举、而非一厢情愿:如果 x_0 是常点,那么方程确实有两个独立的解,每一个都由 (x - x_0) 的一个幂级数给出,并在 x_0 周围的一个实区间内收敛。所以我们不是在指望某个级数也许存在——一条定理担保它存在,而且正如我们将看到的,还告诉我们它收敛到多远。你留作未定的两个自由常数 a_0 和 a_1,恰恰就是两个初始条件 y(x_0) 和 y'(x_0);它们正是二阶方程为通解所留出的空间。

这台机器:代入、对齐、配平

整套流程就是一小段需要细心完成的记账工作。你把 y 写成一个未定级数,逐项求导得到 y' 和 y''(这在收敛半径之内是被允许的——这张许可证直接来自第一卷的幂级数理论),把这三者全部代入方程,然后要求结果恒等于零。关键洞见在于「恒等于零」所强制的东西:一个幂级数在某区间内对所有 x 都为零,当且仅当它的每一个系数都为零。于是逐次匹配 x 各次幂的系数,就把一个微分方程变成了无穷多个普通的代数方程,每一次幂一个。

  1. 写下猜测:y = sum a_n x^n(以常点为中心,这里 x_0 = 0)。逐项求导:y' = sum n a_n x^{n-1},y'' = sum n(n-1) a_n x^{n-2}。
  2. 把所有部件代入方程,于是每一项现在都是某个常数乘以 x 的一个幂次。
  3. 平移求和指标,让每个求和都对同一个幂次 x^k 进行。这种重新贴标签是唯一琐碎的一步——它把各个求和对齐,好让你逐次幂读出一捆系数。
  4. 令每个 x^k 的系数为零。把它对最高指标的 a 解出来,就用较早的系数表示了它——这就是你的递推关系。

第三步值得多说一句,因为它头一回总会把人绊倒。代入之后,y'' 从 x^0 这个幂次开始,可它的指标 n 却从 2 起步;与此同时,像 x 乘 y 这样的项从 x^1 起步。要把它们摆在一起比较,你就重新标注求和指标,让所有求和都谈论同一个幂次 x^k——例如把 y'' 写成 从 k = 0 起的 (k+2)(k+1) a_{k+2} x^k 之和。头一回会觉得像在变戏法,但它只不过是给求和所用的变量改个名,就像在定积分里给哑变量改名一样。一旦各次幂对齐,系数的匹配就干净利落地读出来了。

一幅做出来的图景:从零搭出余弦

我们把这台机器开在一个答案早已知道的方程上,好让我们看着它运转、并信任它的输出:谐振子方程 y'' + y = 0,在常点 x_0 = 0 处展开。代入 y = sum a_n x^n。经过指标平移后,y'' 这一项贡献 (k+2)(k+1) a_{k+2} x^k,而 y 这一项直接贡献 a_k x^k。相加并要求 x^k 的系数为零,就得到对每个 k 都成立的 (k+2)(k+1) a_{k+2} + a_k = 0。解出最新的系数:a_{k+2} = -a_k / [(k+2)(k+1)]。这一行就是递推关系

y'' + y = 0,   y = sum_{n>=0} a_n x^n

recurrence:  a_{k+2} = - a_k / [ (k+2)(k+1) ]

leave a_0, a_1 free  (= y(0), y'(0))

even chain (from a_0):           odd chain (from a_1):
 a_2 = -a_0/2!                    a_3 = -a_1/3!
 a_4 = +a_0/4!                    a_5 = +a_1/5!
 a_6 = -a_0/6!                    a_7 = -a_1/7!

y = a_0 (1 - x^2/2! + x^4/4! - ...)  +  a_1 (x - x^3/3! + x^5/5! - ...)
  = a_0 cos(x)  +  a_1 sin(x)
递推关系分裂成由 a_0 喂养的偶数链和由 a_1 喂养的奇数链;把它们加起来就还原出 cos(x) 与 sin(x)——正是定理所许诺的两个解。

注意递推关系是怎样把一切组织起来的。它每次跳两步,于是偶数系数构成一条回溯到 a_0 的链,奇数系数构成另一条回溯到 a_1 的链。两个起始值从不相混——这正是为什么我们最终得到两个独立的解和两个自由常数。沿偶数链走下去得到 1 - x^2/2! + x^4/4! - ……,即 cos(x) 的泰勒级数;奇数链给出 sin(x) 的泰勒级数。这个方法用纯代数重新搭出了三角函数,从头到尾都没假设我们认得它们。当方程的答案不是一个熟悉的函数时,这同一台机器照样运转,而那个级数就是那个新函数。

它能伸到多远?收敛半径

一个级数解只有在它收敛的地方才值钱,所以最后一个问题是:我们这个无穷次多项式真正有意义的那个圆盘有多大?回想第一卷:每个幂级数都有一个收敛半径 R,在这段距离以内它收敛、超出它就发散。对于由递推关系搭出来的级数,你常常可以直接对系数用比值判别法求出 R。对 y'' + y = 0,系数之比无限地缩小,所以 R 是无穷——cos 和 sin 确实是整函数,对每个 x 都有效,这与我们早已知道的相符。

但还有一种远为漂亮的办法,能在算出任何一个系数之前就预知 R,而且它把整个故事系在了一起。常点处的定理保证:级数解的收敛半径至少等于从中心 x_0 到方程最近奇点的距离——而这里有一处反转,正是它撑起了这个判据的价值:那个最近的奇点可能落在实轴之外,活在复平面里。方程 (1 + x^2) y'' + …… 的系数在 1 + x^2 = 0 处变坏,也就是 x = 正负 i。尽管这些点在实轴上看不见,它们距原点为 1,于是把实的收敛半径锁定在 R = 1。实数解感觉到了一堵它看不见的墙。

为什么它开启了这一阶梯

你手里握着的是一把通用的开门钥匙。每当一个方程是线性的、有一个常点、又拒绝一切闭形式技巧时,幂级数法仍然能诚实而构造性地给出两个解,它们是系数服从某个递推关系的级数,其触及范围由最近的奇点所固定。它就是微积分版的手算长除法:某些地方繁琐,但它总会停在一个你信得过的数位上。

而它也是这一阶梯其余部分要穿过的那道门。把 y'' - 2x y' + 2n y = 0 喂给这台机器,只要 n 是整数,递推关系就在有限多项之后终止——埃尔米特多项式便掉了出来。把 (1 - x^2) y'' - 2x y' + l(l+1) y = 0 喂进去,勒让德多项式以同样的方式出现。贝塞尔方程在原点处有一个奇点,所以它需要弗罗贝尼乌斯式的升级——但那正是紧接着的下一篇指南,而它无非就是这个方法被准许以一个分数次幂作为起点。数学物理中每一个伟大的具名函数,归根结底都是一个等着被展开的递推关系。