幂级数解法:把未知函数一项一项算出来
上一章,我们让阶跃函数记录开关,让冲击记录短促作用,再用卷积把不同时间的输入叠加起来。这套办法很适合系统本身保持不变、外力随着时间变化的情形。但如果改变的恰好是系统本身呢?例如一个理想振子没有阻尼,外部机构却在缓慢调节它的刚度:即使不再施加外力,恢复力和位移之间的比例也不再固定。
把质量、时间和位移选用合适的尺度归一化后,一种简化模型可以写成
y′′+(1+t)y=0.
这里 t 和 y 都是无量纲变量,撇号表示对 t 求导。我们只在 t>−1 的范围内把 1+t 解释为正的刚度系数。这个模型假设阻力可忽略,刚度由外部装置按既定规则改变;它没有声称普通弹簧放着不管就会自己变硬。
这句话的物理意思仍然很熟悉:偏离平衡位置后,物体获得一个指向平衡位置的加速度。变化在于,同样大的偏离,在不同时刻产生的加速度不一样。于是 ert 不再能用一个固定的 r 配合全过程,常系数方程里的特征方程不能直接照搬。
我们可以换一个问题:先不要求立刻认出整条曲线叫什么名字,只问初始位置、初始速度已知以后,曲线在初始点附近怎样弯曲。再往前问一层:弯曲的程度又怎样变化?这些信息正好能依次决定一个多项式的系数。把这一过程继续下去,就得到幂级数。

从方程规定的变化规律出发,逐项确定局部函数的系数。图中的自变量若记为 x,与本章采用的 t 扮演相同角色。
先用多项式描述附近,再问能否继续下去
把展开中心记为 t0,令 h=t−t0。离中心很近时,最简单的描述是
y(t0+h)≈a0+a1
a0 告诉我们从什么位置出发,a1 告诉我们最开始朝哪个方向走、走多快。如果这条直线还不够,就加上 a2h 来修正曲率,再加上 描述曲率怎样改变。这样写出的
TN(t)=n=0∑Na
是一个有限多项式。它容易求值,也容易求导。所谓幂级数表示,则是再向前走一步,考虑无限和
y(t)=n=0∑∞an(t−t
这里必须分清两件事。写出无穷多个符号,并不等于已经得到一个函数。我们需要这个和在中心附近收敛,也就是有限部分和在项数增加时确实趋近某个确定的数;还需要确认它趋近的正是微分方程的解。
如果幂级数有正的收敛半径 R,那么在 ∣t−t0∣<R 内,它可以逐项求导,而且求导后的级数仍有相同的收敛半径。把 t=t 代进这些导数,就得到
a0=y(t0
因此这些系数有清楚的含义:它们记录的是解在中心的各阶变化。幂级数方法的方便之处是,我们不必先知道 y 的完整公式再求它的所有导数,微分方程本身就能替我们确定后面的系数。
比如开头的模型若满足 y(0)=1、y′(0)=0,原方程立刻给出 y。对方程求一次导数,得到
y′′′+(1+t)y′+y=0,
于是 y′′′(0)=−1。目前我们已经知道
y(t)=1−2t2−6
这种直接求高阶导数的方法能帮助理解系数,但越往后乘积求导越繁琐。接下来要学的“比较同次幂”,就是把同一件事整理成更适合持续计算的递推。
有所有阶导数,为什么还不一定能展开
微积分里的泰勒公式很容易给人一种印象:函数只要足够光滑,就一定等于自己的泰勒级数。这个印象需要在这里修正。能求出任意阶导数,叫无限次可微;在一个邻域内等于自己的收敛幂级数,才叫解析。 后者的要求更强。
看一个只用来区分概念的函数:
f(t)={e−1/t2,
当 t 靠近 0 时,指数衰减比任意负幂的增长都快。反复求导后,每一项仍是某个 1/t 的多项式乘上 e−1/t2,所以它在 0 的各阶导数全为 。它的泰勒级数因此也是零级数,可 时函数值明明为正。问题不在计算,而在“泰勒级数等于原函数”这一步没有保证。
那么,怎样知道一个微分方程适不适合本章的方法?先把二阶线性方程写成标准形式
y′′+p(t)y′+q(t)y=g(t).
若 p,q,g 在 t0 附近解析,那么给定任意 y(t0) 和 ,对应的唯一局部解也解析。齐次方程就是 的情况。这是我们使用级数的依据:先有适用条件,再用递推把保证存在的级数算出来。
对于原来写成
P(t)y′′+Q(t)y′+S(t)y=F
的方程,要考察的是除以 P 后的 Q/P、S/P 和 F/P。若这些系数在中心有正常的解析表达,我们就能在相应的标准方程上应用结论;齐次方程的这种展开中心通常叫普通点,也叫常点。本章主要处理系数为多项式、最高阶系数在中心非零的情形,此时检验尤其直接。
例如 (1+t)y′′+y=0 在 0 附近没有问题,因为 1/(1 在 内收敛;在 处却出现了不能这样跨过去的奇点。又如 ,原来的两个系数看起来都是多项式,但标准形式里出现 ,所以 不是普通点。
如果原式所有项都带着同一个因子,先识别这个共同因子,不要仅凭最高阶系数为零就认定标准方程一定有不可去的奇性。不过,在因子为零的点约去它会改变原式在该点直接给出的约束。讨论穿过该点的解时,还需要说明解的光滑性以及采用的延拓方程。后面的普通点算例都没有这个歧义。
移动指标,是为了让相同次幂站到一起
先在 t0=0 处展开,写成
y=a0+a1t+a
求两次导数:
y′=n=1∑∞n
如果要把 y′′ 和 y 相加,不能把两个求和符号下面碰巧同名的 n 当成相同次幂。y′′ 里原来的第 n 项带着 ,而 的第 项带着 ,两者相差两次。
我们真正想问的是:“tn 前面是什么?”在 y′′ 中,它来自 y 中的 an,所以
y′′=n=0∑∞(n+2)(n
把开头几项写出来核对最可靠:右边确实是 2a2+6a3t+12a4t。同理,
y′=n=0∑∞(n+
最后一式为什么从 1 开始?因为 ty=a0t+a1t2+ 根本没有常数项。若把它强行从 开始,就会写出没有定义的 ,还可能让一条必要的低次项方程消失。
有些零项可以补,有些不能。比如 ty′=∑n=1∞nant 可以从 开始,因为补进去的项是 ; 却不能在没有另作约定的情况下照样补。刚开始计算时,宁可把常数项、一次项单独列出,也不要为了求和符号整齐而隐藏它们。
整理完以后,若在一个邻域内有
b0+b1t+b2t
就必须有每个 bn=0。这不只是多项式经验的类推:令 t=0 得 b0=0,求一次导数再令 得 ,继续下去得到 。这里使用了收敛区间内部逐项求导的性质。
下面的实验台可以用来观察初始系数怎样传递到后面的项。操作时先看清它采用的具体方程;改变方程以后,递推也必须随之改变。
先走一条熟悉的路:重新算出正弦和余弦
想象一个无阻尼、刚度固定的理想振子,在归一化以后,加速度始终等于位移的相反数:
y′′+y=0.
我们当然已经会解它。现在刻意不用特征方程,是为了看看级数方法会不会把我们带回同一个答案。把刚才对齐后的级数代入,得到
n=0∑∞[(n+2)(n+1)a
每个系数等于零,于是
an+2=−(n+2)(n+1)a
这个式子每次跨两个下标。a0 决定 a2,a2 决定 ; 决定 , 决定 。偶数项和奇数项各自连成一条链:
从递推可用归纳法继续得到
a2m=(2m)!(−1)
把两条链重新合起来:
y(t)=a0(1−
括号里分别是 cost 和 sint,所以 y=a0cost+a。即使暂时没认出它们,两个收敛级数也已经完整描述了解。认出熟悉函数,只是给结果换一种更短的写法。
若给定 y(0)=3、y′(0)=−2,解就是 3cost−。若只需要五次局部多项式,则是
T5(t)=3−2t−23
还可以立刻检查精度。例如在 ∣t∣≤0.4 内,正弦和余弦的交错级数项的绝对值递减,所以遗漏尾项满足
∣y(t)−T5(t)∣≤6!
这里能写出明确上界,是因为我们额外掌握了尾项的性质。仅仅写出一个五次多项式,还不能自动附赠这个结论。
系数随位置改变时:完整求出两条解的分支
现在看一条没有必要强求初等函数名称的规则:曲线在某一点的二阶变化率,等于该点的位置参数乘上函数值。
y′′−ty=0.
在这个算例里,t 可以看作无量纲的位置参数,不必理解成时间。正的 t 会让正的 y 对应向上弯曲;负的 t 则会改变这个对应关系。它与固定频率振子的区别,是乘在 y 前的系数会变化并经过零点。这里 t=0 仍是普通点,因为最高阶导数的系数一直为 1。
仍设 y=∑antn,代入后得到
n=0∑∞(n+2)(n+1)a
先处理没有同伴的常数项:2a2=0,所以 a2=0。然后对 n≥1 比较系数:
(n+2)(n+1)an+2=an−1.
把下标换得更容易看出步长,也可以写成
an+3=(n+3)(n+2)a
现在每次跨三个下标。下表把三条系数链分别列出,免得零项在长公式里被忽略。
于是定义
u(t)=1+6t3+
v(t)=t+12t4+
就得到通解
y(t)=a0u(t)+a1v(t).
不要把这两条分支叫作偶解和奇解:u 同时包含 t3 和 t6,已经不是偶函数。分支来自递推的下标结构,并不总是来自奇偶性。
它们为什么确实给出了两个独立的解?从级数可读出 u(0)=1,u′(0)=0,以及 v(0)=0,。若 恒等于零,在 取值先得 ,再对导数取值得 。所以它们线性无关,而且任何初值都能由这两个标准初值组合出来。这和前面二阶线性方程的基本解组完全一致。
对于 y(0)=2、y′(0)=−1,我们得到 y=2u−。取到七次项:
T7(t)=2−t+3t
这个答案已经可以求值。例如 T7(0.5)≈1.536616443。再多取一些项不需要重新解方程,只需沿两条递推链继续往前算。
这两个级数究竟是否收敛?沿 u 的非零项,相邻项绝对值之比是
(3m+3)(3m+2)∣t∣3,
沿 v 的非零项则是 ∣t∣3/[(3m+4)(3m+3)]。对于任意固定的 t,两者都趋于 ,所以两条级数的收敛半径都是无穷大。注意我们比较的是各条链的非零项;若机械计算整个系数列的 ,会不断碰到除以零。
对 y″−ty=0,递推每次跨三个下标。初值决定前两条链的起点,而常数项方程令第三条链全部为零;这里的分支并不是奇偶分组。
多一个导数项,递推怎样跟着变
前面的例子都有 y′′ 和 y。如果方程里还出现 y′,方法没有换,只是每个幂次多收集一份贡献。比如一条变化规律规定:“函数的二阶变化,加上当前位置参数乘一阶变化,再加上函数本身,合起来为零。”它写成
y′′+ty′+y=0.
这里先把它当作数学算例,不预先给 ty′ 安上一个物理阻力的解释;若要把 t 看成阻尼系数,还必须另行限制时间范围并说明单位。
设 y=∑antn。这次 ty′=,因为求导降低的一次恰好被乘上的 补回来,不需要像 那样把系数改成 。于是
(n+2)(n+1)an+2+(n+1)a
也就是
an+2=−n+2an,
给定 y(0)=1,y′(0)=0,奇数链为零,偶数链依次给出 a。归纳下去,
a2m=2
我们还可以用另一条路核对:原方程左边恰好是 (y′+ty)′,所以 y′+ty 为常数;初值把这个常数定为零。于是 ,积分得到同一个 。这个核对不依赖刚才的递推,因此能真正帮助检查计算。
看起来相近的 ty 和 ty′,在递推中分别贡献 an−1 和 na。做题时先写出实际的前三项,就不容易把两者混掉。变系数带来的复杂,通常正藏在这些具体贡献中。
系数本身也是级数时怎么办
假如 p(t) 不是多项式,而是在 0 附近有展开 p(t)=∑pjtj,我们仍然可以处理 。乘积的常数项只能来自 ;一次项来自 和 ;二次项来自 、 和 。每次只收集次数加起来等于目标次数的项。
一般地,tn 的系数为
j=0∑npj(n−j+1)a
对 q(t)y(t) 同样处理。若 q(t)=∑qjtj、,则标准方程 给出
(n+2)(n+1)an+2+
只要在系数级数共同收敛的邻域内工作,这些乘法与合并就有依据。你不需要把这个长式背下来;它只是把刚才逐项对账的过程写成一行。更有用的是看清结构:算 an+2 时,右边涉及的都是已经算过的系数,新的最高下标前还有非零因子 (n+2)(n+1),所以递推能持续进行。
这也说明普通点为什么需要两个种子,而不需要一开始给出无穷多个数据:方程负责填满后面的所有位置。遇到非齐次方程时,输入的级数系数 gn 在每一级进入计算;遇到多项式系数时,多数 pj,qj 为零,长式自然就缩短成前面的简单递推。
初值不在零点,展开中心也要跟着移动
假设我们知道的是 t=1 时的状态,想求开头变刚度模型
y′′+(1+t)y=0,y(1)=1,y
在这个时刻附近的解。初始条件就在 1,以它为中心最省事。令 h=t−1,于是 1+t=2+h,并写
y(t)=n=0∑∞bnhn.
因为 dh/dt=1,对 t 求导和对 h 求导的系数公式相同。初值直接给出 b0=1,。代入 ,先比较常数项:
2b2+2b0=0,b2=
对 n≥1,则有
(n+2)(n+1)bn+2+2bn
逐项算下去:
b
所以
y(t)=1−(t−1)2−
拿最低两阶再核对一次:方程在 t=1 给出 y′′(1)=−2,而级数里 2!b2;对方程求导后得 ,也正好是 。这种检查很短,却特别容易发现移中心时把 错写成 的问题。
这一次递推里同时出现 bn 和 bn−1,所以系数不再分成独立的奇偶链。没有简单的通项公式也没关系,递推仍能生成任意有限数量的系数。我们要求的是解和可控的计算过程,不是要求每条系数列都长得整齐。
下面的练习器可以帮助检查移指标。纸上演算时,也可以先写出前三项,再反推求和式的下限与下标。
最近的奇点给了什么保证
级数是在一个中心周围描述函数。即便微分方程的解可以沿实轴走很远,以某个固定中心写出的级数也未必能跟着走同样远。
对于多项式系数方程,在排除公共因子等歧义后,设标准形式的系数离 t0 最近的复奇点距离为 ρ。普通点级数定理保证:每个解在 ∣t−t0∣<ρ 内都有收敛的幂级数表示。因此,解的实际收敛半径 满足
R≥ρ.
这里是保证的下界,不是上限,也不是每个解都必须取到的精确值。 系数在某处有奇点,不等于每一个解都在那里发散。对于某组特殊初值,解可能恰好成为多项式,实际收敛半径就是无穷大。
我们把两个容易混淆的情况都算出来。
系数有奇点,但一条解恰好终止
考虑
(1−t2)y′′−2ty′+6y=
在 0 展开时,标准形式的系数在 t=±1 有奇点,所以统一保证至少在 ∣t∣<1 内收敛。为了看看具体解,直接用原来的多项式形式代入级数,无须先把有理系数也展开:
(n+2)(n+1)an+2+[6−n(n
整理得
an+2=(n+2)(n+1)n(n+
如果初值为 y(0)=1,y′(0)=0,那么 a0=。奇数链全为零,偶数链给出 ,接着在 时递推分子恰好为零,因此 ,所有更高偶数项也为零。完整答案就是
y(t)=1−3t2.
代回原式:(1−t2)(−6)−2t(−6t)+6(1−3t。这个多项式在所有实数处都满足原方程,包括最高阶系数为零的两个点。它的级数半径为无穷大,直接说明“最近系数奇点就是解的收敛上限”不成立。另取初值时,另一条系数链一般不会一同终止。
实轴上没有奇点,级数仍可能只有有限半径
再看
(1+t2)y′′+2ty′
原式左边是 [(1+t2)y′]′,积分得到 (1+,所以
y(t)=∫0t1+s2
这个实函数在整条实轴上都有定义。但是几何级数给出
1+t21=1−t2
逐项积分后得到
y(t)=t−3t3+5
非零项的比值表明,这个级数的实际收敛半径是 1。原因要到复平面里看:1+t2 在 t=±i 为零,它们到中心的距离都是 1。实函数能在 t= 取值,不代表以 为中心的这条级数能在 求和。
至于 t=±1,半径结论本身没有作保证,必须另行检查。这条反正切级数在两个端点都收敛,但这是交错级数判别告诉我们的,不能推成所有幂级数的端点规则。也不能因为原级数在端点收敛,就无条件把逐项求导延伸到端点。
使用探测器时,请把它根据系数奇点算出的距离理解为保证值。若要认定某个具体解的实际半径,还要分析解的系数或奇性。更换展开中心能让我们描述另一段邻域,但新中心的初始值与导数也必须正确获得;把旧多项式在新中心的近似值当成初值继续算,会把已有误差一并传下去。
截断以后,残差和误差是两回事
回到 y′′−ty=0、y(0)=2,y。如果只取到四次项,得到
T4(t)=2−t+3t
把它代回微分方程,计算得到
R4(t)=T4′′(t)−
R4 叫残差。它告诉我们这个多项式在每一点偏离微分方程多少。真正的函数值误差则是 e(t)=y(t)−T4(t),二者满足
e′′−te=−R4(t),e(0)=
因此残差还要经过微分方程的作用,才变成解的误差。一般不能写成 ∣e(t)∣≤∣R4(t)∣,更不能把某一点的残差很小直接解释为整个区间内解都很准。如果保留物理单位,残差与函数值误差还可能拥有不同量纲。
本题恰好能用已经求出的级数尾项给出真实上界。在 ∣t∣≤0.5 内,2u 分支的第一项遗漏是 t6/90,后续项与前项的绝对值之比至多为 0.53/72; 分支的第一项遗漏是 ,后续比值至多为 。用两个几何级数压住尾项,就得到
∣y(t)−T4(t)∣≤1
这个界是对整个 [−0.5,0.5] 的保证。它的来历是遗漏项的绝对值估计,而非“画出的两条曲线看起来贴在一起”。若只想快速判断计算是否稳定,可以比较多种截断阶数;但相邻两次结果接近只是诊断,不能无条件替代严格尾项界。本题里 a5=0,因此 T5=,两者差为零,真实尾项却从 开始,仍然存在。
奇点附近,为什么会出现新的函数形状
普通点让两个初值自由进入级数。到了奇点,这种自由可能发生变化。我们只用一个简单例子看看边界在哪里,不展开完整的奇点级数理论。
考虑 t>0 上的方程
t2y′′+ty′−4y=0.
最高阶系数在 0 消失,标准形式里有 1/t 和 1/t2。但 t2y′′、、 对一个幂函数的作用恰好能保持同样的幂次:若 ,三项分别变成 、 和 的常数倍。代入得到
[r(r−1)+r−4]tr=(r2−
所以有 r=2 和 r=−2,通解为
y(t)=C1t2+C2t
第一条解在 0 很平常,第二条却发散。如果强行只寻找以 0 为中心、使用非负整数次幂的级数,最多能找到第一条,第二条根本不在这种表示形式里。这说明“二阶方程总要出现两个任意系数”的检查原则,需要放在普通点的前提下使用。
对于标准形式 y′′+py′+qy=0,如果在一个奇点 t 附近, 与 可以解析延拓到中心,我们称它为正则奇点。上面的例子就满足这个条件。处理这类点时,常尝试在幂级数前乘一个 ;有些情形还需要对数项。这里先记住方法为什么要改变,不必提前背完整分类。
这也解释了特殊函数的入口。圆柱或圆盘中的某些振动与传热问题,分离变量后会遇到贝塞尔方程;球坐标中某些角向问题会遇到勒让德方程。这里的位置变量通常记作 x,其典型形式分别为
x2y′′+xy′+(x2
(1−x2)y′′−2xy′+ℓ
第一条在 0 是正则奇点,不能期待普通点的两个自由泰勒级数。第二条在 0 是普通点,且当 ℓ 为非负整数时,会有一条适当选取的解终止成为多项式;刚才的 1−3t2 就对应 ℓ=2 的一个倍数。另一条独立解不因此自动成为多项式。

函数的名称用来整理经常出现的解及其性质;是否能用普通幂级数表示,仍要检查具体展开点。
给一个解起名字,并没有免掉研究它的工作。递推、收敛区间、初值和数值求值都需要建立起来。对现在的我们来说,看到一个陌生函数名时,至少可以先问:它满足什么方程,在哪个点展开,前几个系数是什么?这些问题已经有办法动手回答。
练习:把展开、核对和适用范围一起完成
从递推认出已知函数
对 y′′+4y=0,给定 y(0)=1,y。求递推,写到五次项,并认出完整解。
对齐 tn 后有 (n+2)(n+1)an+2+,所以 。从 依次得到 。
低次项不能跳过去
求 y′′+ty=0 在 0 附近的通解级数,写出包含两个自由参数的前六个可能非零项。
常数项仍然给出 2a2=0。其余系数满足 an+3=−a,。因此
展开中心跟随初值移动
求 y′′−(t−2)y=0、y(2)=0, 在 附近的级数,写到七次项。
令 h=t−2,方程变为 y′′−hy=0,而 a。正文里 分支消失,只剩 :
非齐次项也可以逐项匹配
求 y′′+y=t、y(0)=y′(0)= 的递推,并写出前三个非零项和完整解。
右边只有一次项。因此常数项满足 2a2+a0=0,一次项满足 6a3;对 ,仍有 。代入 得 。
分清保证半径与实际半径
对 (1−t)y′′=0 在 t0=0 附近求解。标准形式在 之外可写成什么?解的实际级数半径是多少?能否仅凭原最高阶系数的零点断定 ?
在 t=1 时,方程简化为 y′′=0,所以中心附近的解是 y=a,其级数实际半径为无穷大。这里原式有共同因子 ,约去以后标准方程的系数均为零,能解析延拓到 ,因此它也提醒我们先识别可去因子。
截断结果相同,误差就为零吗
对正文的 y′′−ty=0、y(0)=2,y,解释为什么 却不是精确解,并求 的残差以及真实误差的首项。
因为 a2=0,整条 a3m+2 链全为零,特别是 a,所以加上五次项没有改变多项式。但 不为零,级数没有终止。代入得到
把两个初值放进同一个状态里
这一章里,两条初值一直并排出现:y(t0) 给出位置,y′(t0) 给出速度;在普通点,它们决定了之后所有系数。级数让我们能把一条曲线在某个中心附近逐项构造出来,即使它没有熟悉的初等函数公式。
还有另一种整理这两个量的办法:把 y 和 y′ 当作两个未知函数,放进同一个状态向量。比如 y′′+y=0 可以改写成“位置的导数等于速度,速度的导数等于位置的相反数”。这样,一个二阶方程就变成了两个互相联系的一阶方程。下一章我们就从这里出发,让矩阵统一描述几个量怎样一起变化;本章熟悉的两条独立解,也会在矩阵系统里找到对应的位置。