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

求特解

齐次问题已经解决——现在驱动项来了,你只需要一个能回应它的解。三件工具来完成这件事:当驱动项很「乖」时聪明地去猜,当它不乖时一路积分出答案,再从你已有的一个解里挤出那个缺失的第二解。

齐次部分之后,还剩什么

前面几篇指南攻下了齐次方程——右端为零的那种,像 y'' + a y' + b y = 0。你建起它的特征方程,读出根,再拼出一个基本解组 y_1、y_2,它们的组合 C_1 y_1 + C_2 y_2 扫遍每一个解。这个组合就是齐次解 y_c。但真实问题很少在右端保持沉默:弹簧被推,电路被驱动,梁被加载。方程变成 y'' + a y' + b y = g(x),带着一个真正的驱动项 g(x),单凭 y_c 已经满足不了它。

下面这个结构性事实,让本指南余下的一切成为可能——它正是线性的馈赠。把方程写成 L[y] = g,其中 L 是线性微分算子 L = d^2/dx^2 + a d/dx + b。假设你能找到仅仅一个被 L 送到 g 的函数 y_p,即 L[y_p] = g。那么这个受迫方程的通解恰恰是 y = y_c + y_p:整族齐次解,被那单独一个特解整体平移过去。一行就能验证——L[y_c + y_p] = L[y_c] + L[y_p] = 0 + g = g——你便看见线性在替你干活。

待定系数法:一次有根据的猜测

当驱动项 g(x) 属于一小串格外乖巧的形状之一——多项式、指数 e^{r x}、正弦或余弦,或它们的乘积——待定系数法几乎是白送给你一个 y_p。这个想法极其直白:这些函数在求导下会再生出同类。对多项式求导,得到多项式;对 e^{r x} 求导,得到 e^{r x} 的倍数;对 sin 和 cos 求导,永远只在 sin 与 cos 之间来回倒换。所以特解必定住在与驱动项相同的那个小家族里——你猜一份带未知系数的 g(x) 副本,再让方程告诉你这些系数是多少。

用 y'' - y' - 2y = 4x^2 来具体想象。驱动项是一个二次多项式,所以猜上完整的二次多项式 y_p = A x^2 + B x + C——绝不只猜 A x^2,因为求导会溢出到你必须准备好去匹配的低次项。求两次导、代入、归并:左边得到 -2A x^2 + (-2A - 2B) x + (2A - B - 2C),它必须等于 4x^2 + 0x + 0。逐一匹配 x 的各次幂,得到三个朴素的代数方程,于是 A = -2、B = 2、C = -3 滚落出来,故 y_p = -2x^2 + 2x - 3。这道微积分问题已经化成了求解一个小小的线性方程组——这正是该方法全部的魅力所在。

参数变易法:永远管用

待定系数法快,但脆弱:它只对那一小串菜单上的驱动项管用。要是 g(x) = tan(x)、sec(x),或任何不在单子上的东西呢?那就请出参数变易法,一种除了「你能积分」之外对 g 一无所求的方法,因而能对付任何驱动项。它的想法是一记小小的神来之笔。齐次解是 C_1 y_1 + C_2 y_2,其中 C_1、C_2 是常数。参数变易法说:让那些常数变起来。去找 y_p = u_1(x) y_1 + u_2(x) y_2,把那两个数提升成两个未知函数,恰到好处地弯折齐次解,好把驱动项吸收掉。

两个未知函数需要两个条件。一个是方程本身;另一个我们可以自行选择,而一个聪明的选择能让代数保持干净:要求 u_1' y_1 + u_2' y_2 = 0,这在那些杂乱的二阶导数项冒头之前就把它们杀掉。有了它,方程塌缩成 u_1' y_1' + u_2' y_2' = g。现在你有了关于两个未知导数 u_1' 和 u_2' 的两个线性方程,而它们的行列式恰恰是朗斯基行列式 W = y_1 y_2' - y_2 y_1'——正是这同一个量,因其非零,当初才认证了 y_1 与 y_2 的线性无关。解出来,再积分,y_p 就归你了。

Given  y'' + a y' + b y = g(x),  with homogeneous basis y_1, y_2:

  Wronskian   W = y_1 y_2' - y_2 y_1'      (nonzero since y_1, y_2 independent)

  u_1' = - y_2 g / W        u_2' = + y_1 g / W

  u_1 = INTEGRAL( - y_2 g / W ) dx     u_2 = INTEGRAL( + y_1 g / W ) dx

  particular solution:   y_p = u_1 y_1 + u_2 y_2

Example  y'' + y = sec(x):  y_1=cos x, y_2=sin x, W=1
  u_1 = INTEGRAL(-sin x sec x)dx = ln|cos x|,   u_2 = INTEGRAL(cos x sec x)dx = x
  y_p = cos(x) ln|cos x| + x sin(x)        (undetermined coefficients cannot touch sec x)
参数变易法的配方:朗斯基行列式坐在每个分母里,而那两个积分是该方法唯一可能卡住的地方——不是原理上卡住,而是因为积分本身可能是非初等的。

对这里「永远管用」是什么意思,要诚实。这个方法永远能产出正确的那两个积分——这一步从不失败。但那些积分本身可能是非初等的,意思是不存在用初等函数写出的公式,正如 e^{-x^2} 的高斯积分没有初等原函数。「非初等」并不意味着不可计算:你仍可以把答案诚实地留作一个积分,或数值地算到任意精度。参数变易法永远把问题归结为积分;那个积分漂不漂亮,是另一个问题,而且答案并不总是友善的。

降阶法:一个解生出两个

上面两种方法都悄悄假定你已经握有完整的齐次基 y_1、y_2。对常系数方程,特征方程把两个都交给你。但对变系数方程——a 和 b 依赖 x——根本没有特征方程,而你往往只能靠观察或运气找到一个齐次解。降阶法正是把那单独一个 y_1 变成一整对的工具。它的前提是同一招变形术:把第二个解找成 y_2 = v(x) y_1,即已知解乘上一个未知函数 v。

把 y_2 = v y_1 代入齐次方程,看魔术上演。因为 y_1 本来就满足方程,所有带 v(未求导)的项恰好相消——这个相消正是 y_1 必须是一个已知解的原因。幸存下来的项只含 v' 和 v'',从不含 v 本身。令 w = v',一个关于 v 的二阶方程就变成关于 w 的一阶方程——阶数真真切切地降了一阶,方法之名即由此而来。解这个一阶方程(一个可分离或线性的方程),把 w 积分得到 v,于是 y_2 = v y_1 就是你那个独立的第二解。

一个鲜活的例子:x^2 y'' - x y' + y = 0(一个欧拉方程)有显而易见的解 y_1 = x。令 y_2 = v x;代入并经 w = v' 的替换,留下 x w' + w = 0,一个可分离的一阶方程,给出 w = 1/x,于是 v = ln(x),第二解便是 y_2 = x ln(x)。这两者,x 与 x ln(x),是独立的——它们的朗斯基行列式是 x,在 x > 0 时非零——所以它们构成你所需的基。而这同一个 y_2 = v y_1 的想法,若推到受迫方程上而非齐次方程上,恰恰就是乔装打扮的参数变易法:降阶法是它那位只需一个解的祖先。

三者之间如何取舍

这三者不是对手;它们是一棵决策树,一旦你看清结构,选择几乎是机械的。决定性的问题是:我是否已经握有完整的齐次基?驱动项有多乖?按顺序问下来,对的工具自己就报到了。

  1. 你两个齐次解都有吗?若只有一个——通常是因为系数变化、没有特征方程——先用降阶法造出第二个。现在你有了完整的基 y_1、y_2,可以往下走了。
  2. 驱动项 g(x) 是多项式、指数、正弦/余弦,或它们的乘积吗?若是,待定系数法最快——猜一份带未知系数的副本,若与齐次解相撞(共振)就乘 x,再匹配。完全不需要积分。
  3. 驱动项是别的什么吗——正切、正割、对数、分式?那就用参数变易法这个万能后备。它要花你两个由朗斯基行列式搭起的积分,但它从不要求驱动项乖巧,也从不会交不出那个公式。
  4. 最后,组装。把齐次解加回去:y = C_1 y_1 + C_2 y_2 + y_p。直到此刻才套用初始条件去定死 C_1 和 C_2——套在完整的 y 上,绝不只套在 y_c 上。

退一步,留意这份统一。这里的每一种方法都是同一个手势——拿起你信得过的齐次解,让它们的常系数变成 x 的函数,把你已知的东西恰好弯折到能迎上驱动项。这单独一个想法,即齐次部分与特解部分的叠加,就是线性微分方程的全部架构,而且它毫无怨言地向上推广:同样的 y_c + y_p 分拆组织起高阶方程,统辖用矩阵指数求解的方程组,并在拉普拉斯变换把整个问题化成代数时再度现身。在这里把求 y_p 学透,你便掌握了受迫响应——在它将来出现的每一个地方。