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

求解初值问题

把整个微分方程一举变换,看着每个导数塌缩成 s 的幂,而初始条件分文不取地自动归位,再解出由此得到的代数式,最后用部分分式求逆。一套干净的配方,取代了你为常系数常微分方程学过的每一个猜测花招。

一举变换整个微分方程

在上一篇指南里,你挣得了让整台机器运转的那一条规则:导数的变换把时间里的求导,变成 s 域里乘以 s,并顺手把起始值一并拖了出来。写明白便是 L{y'(t)} = s Y(s) - y(0),再用一次给出 L{y''(t)} = s^2 Y(s) - s y(0) - y'(0)。y 上的每一撇都化作 Y 上的一个 s 的幂,每用一次便抖落一块初始数据到明面上。本篇只做一件事:把那条规则对准一个真正的初值问题,并把答案从另一头走出来。

取一个具体的问题,并在整篇指南里都盯着它:y'' + 3 y' + 2 y = 0,其中 y(0) = 2 且 y'(0) = -3。在你早先那一级,你会这样进攻它——写下一个特征方程,求出它的根,组成一个指数的一般组合,直到最末了才靠强加初始条件钉死两个常数。拉普拉斯方法把这个次序倒了过来,倒得几乎不公平:初始条件在最最第一步就进去了,而到末了再也没有什么松动的常数要去追。

把 L 作用到每一项,借线性逐项进行。y'' 变成 s^2 Y(s) - s y(0) - y'(0);3 y' 变成 3(s Y(s) - y(0));2 y 变成 2 Y(s);而右端为零,便仍是零。趁着容易,此刻就把数值 y(0) = 2 与 y'(0) = -3 代进去。变换后的方程读作 s^2 Y - 2 s - (-3) + 3(s Y - 2) + 2 Y = 0,整理成 (s^2 + 3 s + 2) Y(s) - 2 s - 3 = 0。请注意,任何地方都不再剩下一个导数——只有 s 与 Y(s),被朴素的算术拴在一起。

初始条件分文不取地进入

在刚刚发生的事上停一停,因为这是方法核心处那个安静的奇迹。经典做法给出一个布满任意常数的*通*解,而初始条件是个事后补办——一个你在最末了去解、好钉死那些常数的、单独的小线性方程组。这里,y(0) 与 y'(0) 这两个值压根不是事后补办。它们是自动走进来的,由分部积分在生出导数法则时掉下来的那个边界项所携带。变换不懂得如何忘掉它们;变换一个导数这一举动本身,就把起始数据交到你手里,在你解出任何东西之前,便已烤进了方程。

有一件事值得看清楚:乘在 Y(s) 上的那个多项式 (s^2 + 3 s + 2) 并非巧合——它是这个常微分方程的特征多项式,只是换了顶帽子。旧方法要你把那多项式置零、求它的根;新方法把它整个保留,并去除以它。它的根 s = -1 与 s = -2 仍是戏眼所在,但如今它们是作为 Y(s) 的*极点*现身的——也就是分母变零之处——而每个极点都将在最终答案里恰好交给你一个指数。同样的物理、同样的数,只是从另一页读出来罢了。

解出代数,再用部分分式求逆

现在是那个轻松的中段。从 (s^2 + 3 s + 2) Y(s) - 2 s - 3 = 0,就像你中学时孤立 x 一样孤立出 Y(s):Y(s) = (2 s + 3)/(s^2 + 3 s + 2)。这就是整个「s 域解」。其中没有微积分,也再没什么要积分的——整个微分方程已溶解成一个多项式之比。剩下唯一的任务,是爬回桥那头:找出那个变换恰为这个 F(s) 的关于 t 的函数。这趟回程就是拉普拉斯逆变换,而对一个多项式之比,它几乎总是用一种技术来完成。

这种技术就是部分分式分解——正是你在卷一里初遇、用来驯服有理被积函数的那套代数,如今改派作求逆的主力。把分母分解:s^2 + 3 s + 2 = (s + 1)(s + 2)。部分分式的要点在于,一个架在若干因式之积上的笨拙的单一分式,可以拆成若干简单块之和,一个因式一块:(2 s + 3)/((s + 1)(s + 2)) = A/(s + 1) + B/(s + 2)。我们之所以这么拆,恰恰因为每一个简单块 A/(s - a) 都是*可辨认的表项*——它是某个指数的变换——而那个揉在一起的分式,在表里什么都对不上。

Y(s) = (2 s + 3) / ((s + 1)(s + 2)) = A/(s + 1) + B/(s + 2)

Clear denominators:   2 s + 3 = A (s + 2) + B (s + 1)

Cover-up at s = -1:   2(-1) + 3 = A(-1 + 2)  ->  1 = A      ->  A = 1
Cover-up at s = -2:   2(-2) + 3 = B(-2 + 1)  -> -1 = -B     ->  B = 1

  Y(s) = 1/(s + 1) + 1/(s + 2)

Read each piece backward off the table  ( 1/(s - a)  <->  e^{a t} ):

  1/(s + 1) = 1/(s - (-1))  ->  e^{-t}
  1/(s + 2) = 1/(s - (-2))  ->  e^{-2 t}

  y(t) = e^{-t} + e^{-2 t}

Check:  y(0) = 1 + 1 = 2  (matches),  y'(0) = -1 - 2 = -3  (matches).
完整的求逆:用「遮盖法」捷径拆成表大小的若干块,再把每一块读回为一个指数。底部那两个验算确认初始条件早已满足——我们从未去解任何额外的常数。

退后一步,欣赏这条走完的路线。系数 A 与 B 是用遮盖法得出的:要找压在因式 (s + 1) 上的那个权重,就在除该因式自身之外的一切里令 s = -1(那个能杀掉该因式的值),把数读出来便是。随后每一个干净的块 1/(s - a) 都直接从你的变换对表里被认成 e^{a t},再由线性把各块加回去。最终答案 y(t) = e^{-t} + e^{-2 t} 早已服从两个初始条件——你可以验,但不必验,因为它们在第一步就被封了进去。

配方,以及每样配料的用处

那个演算的例子是有意做得朴素的,好让骨架透出来。这便是那骨架,用拉普拉斯变换求解初值问题的通用配方。它对任意阶的线性常系数方程——二阶、四阶、随便几阶——以及右端任何你写得出其变换的驱动项 f(t),都原封不动地奏效。

  1. 变换每一项。把 L 作用到两边,借线性逐项进行。每个导数都化作 s 的幂乘 Y(s);导数法则把初值 y(0)、y'(0)、…… 自动落进方程。立刻代入已知的数。
  2. 解出 Y(s)。你现在有了一个再无导数的普通代数方程。两边同除以那个特征多项式,把 Y(s) 单独解出来——一个 s 的多项式之比,即 s 域里的答案。
  3. 分解。把分母分解,用部分分式将 Y(s) 拆成若干简单块之和,一个因式一块,尺寸正好对得上变换表里的条目。
  4. 求逆并组装。把每一块反着从表里读成 t 的函数——指数、正弦、余弦——再加起来。那个和 y(t) 就是唯一解,其初始条件已经对了。

有两条精细之处要揣在兜里,因为真实问题会拿它们砸你。当分母有一个*重*因式如 (s + 1)^2,分解需要在它之上放两项,A/(s + 1) + B/(s + 1)^2;后者求逆得到的不是光秃秃的指数,而是 t e^{-t},这恰恰就是重根如何在经典的阻尼振子故事里造出一个「t 乘指数」。而当分母有一个在实数上不可分解的*不可约二次式*如 s^2 + omega^2,你不要硬把它掰开——你配方,把它对上正弦与余弦那对,从而在 t 里给出振荡。重根造出类似共振的增长;复根造出余响。

什么为真、假设了什么、它到哪里为止

值得诚实地说清楚它为何奏效、又到哪里为止,好让你出于正当的理由去信它。这方法的全部支点在于,那条导数法则是*线性*的、且心里装着*常系数*:它之所以能把 d/dt 干净地换成乘以 s,唯独因为前头的系数不依赖 t。一旦某个系数随 t 变化——像 t y'' + y' = 0 这样的方程——变换 t y'' 这类乘积,给出的就不再是干净的 s 的幂,而是一个*对 s 的导数*,那套利落的代数便垮了。对真正非线性的方程,y^2 的变换并不是变换的平方,桥便整个塌掉。这是一件用于线性、常系数问题的精密仪器。

最后,看看你比起旧办法究竟得到了什么,因为这不止是一条捷径。经典路线把一个受迫问题拆成一个齐次部分加一个特解部分,用待定系数去猎那个特解,再把一切与初始条件相调和——这是三项各别的本领。拉普拉斯配方把这一切熔成一条直线计算:驱动 f(t) 与初始数据一同骑进同一个变换后的方程,而单单一个 Y(s) 就已带着固有响应与受迫响应两者,配比正确。后面几篇指南把这同一台机器延伸到「会开会关」或「作为瞬时冲击袭来」的驱动——那正是经典方法真正变得痛苦、而变换依旧轻松自如的情形。