☰
拉普拉斯变换解微分方程:s域五步法、初值陷阱与系统函数
2026/11/2 20:47:03 网站建设 项目流程

看到“用拉普拉斯变换解微分方程”这个标题点进来的人,多半正处于两种情况之一:要么是在信号与系统第六章做题时,被一个二阶方程卡了半小时,时域法求齐次解、配特解、代初值,算到最后发现符号错了;要么是刚学完拉氏变换的性质,知道有这么一条路,但真到动手时,不知道该从哪一步落笔。这个内容属于信号与系统的核心解题工具,也是后续系统函数、稳定性分析、电路暂态计算的共同底座,适合正在学第六章的学生、需要复习的考研人,以及工程上要做线性系统响应估算的从业者参考。我把它拆成三层来讲:第一层说明白为什么非要把微分方程搬到 s 域,第二层把每个环节的坑挖出来,第三层给可以直接照着抄的完整流程、案例和代码验证脚本。你只要跟着动手算两道题,这套方法就能固定下来。

1. 时域法能算的,为什么非要把方程搬到s域

1.1 先把时域解法的痛点亮出来

线性常系数微分方程的时域解法,流程是通的:写特征方程、求特征根、定齐次解形式、根据激励类型猜特解、代入定系数、联立初始条件解待定系数。一阶方程还好,两道方程跑一遍十分钟。但题目稍微复杂一点,麻烦就成倍增长。

我印象很深的一类题,方程右边是 (e^{-2t}u(t)),左边是三阶,特征根一实两复。齐次解要写三项,特解还得判断 (-2) 是不是特征根(如果是,要乘 (t))。到了代初始条件那一步,三个未知数联立三个方程,其中两项带着 (\cos) 和 (\sin),手算基本靠运气。

更根本的麻烦在于:时域解法把“初始条件”和“激励类型”这两件事搅在一起处理。初始条件决定齐次解的系数,激励决定特解的形式,但两者最终要通过联立才能定下来,中间不能分开。这意味着你无法回答一个工程上非常常见的问题:如果这个系统初始状态是零,只有输入,输出长什么样?如果输入是零,只有初始储能,输出又长什么样?

拉普拉斯变换之所以在信号与系统里占据这么重的分量,核心就在于它把这两件事彻底撕开了。s 域里,响应会被自动拆成两部分相加,一部分只跟初始条件有关,另一部分只跟激励有关,各自独立计算,互不干扰。这就是零输入响应和零状态响应的来源,也是后面讲系统函数 (H(s)) 的伏笔。

还有一点,时域法对“激励不连续”这件事非常敏感。比如方程右边是冲激 (\delta(t)),或者是一个在 (t=0) 跳变的阶跃,特解形式根本猜不出来,得用匹配法单独处理 (t=0) 附近的跳变。拉氏变换对这类奇异激励是天然的免疫,因为 (\delta(t)) 的象函数就是 1,阶跃的象函数就是 (1/s),进了 s 域全变成普通代数式。

1.2 拉氏变换到底“降”了什么维

很多人背了“微分性质”这条公式,但没意识到它在做什么。我打个比方:时域里的微分算子 (d/dt) 就像一把刀,每作用一次,函数就掉一层“光滑度”,你得同时盯着函数值和导数值。到了 s 域,(d/dt) 变成了乘以 (s),再加上一个由初始条件组成的修正项。刀变成了乘法,这就是降维。

具体写出来是这样一组关系:

[ \mathcal{L}[y'(t)] = sY(s) - y(0^-) ] [ \mathcal{L}[y''(t)] = s^2Y(s) - s,y(0^-) - y'(0^-) ]

注意这两个式子的结构:前面是纯代数项,后面是从 0 到 (n-1) 阶初值的加权和。也就是说,微分方程取完变换之后,所有的导数都消失了,剩下一个关于 (Y(s)) 的一次代数方程。原本的微分方程求解问题,被翻译成了“解一元一次方程 + 求逆变换”两件事。解一元一次方程有多简单不用多说,真正的工作量全部落在逆变换上,而那是一个纯代数技巧问题,跟微积分没关系了。

这个转换还有一个附带好处:解的适用范围自动是 (t \ge 0)。因为单边拉氏变换的积分下限是 (0^-),它天然只关心 (t \ge 0) 的行为,(t<0) 的部分根本不进入计算。这刚好匹配因果系统的实际情形,物理系统在激励施加之前的状态由初始条件描述,施加之后才由方程描述。

1.3 这套方法的边界:什么时候不要勉强套用

说清楚适用范围比吹优点更要紧。拉普拉斯变换解微分方程,本质上要求方程是线性、常系数、有限阶的。三个条件缺一个,这套流程就会失效或者退化。

变系数方程不行。比如方程里出现 (t,y'(t)) 这种项,取变换之后会得到 (-d(sY(s))/ds),微分方程变成了 s 域的微分方程,等于换了个地方继续解微分方程,没有收益。非线性方程更不行,(y^2) 或者 (y\cdot y') 取变换之后是卷积,代数方程直接变成积分方程,比原题还难。

时变激励的处理也有限制。单边拉氏变换默认信号在 (t<0) 恒为零,所以方程右边写成 (f(t)) 时,实际含义是 (f(t)u(t))。如果激励在 (t=0) 之前就存在(比如一个从 (-\infty) 就接通的直流源),严格来说要用双边变换,或者手动把初始条件改成 (0^-) 时刻的状态再算。工程上更常见的做法是:把所有 (t<0) 的历史全部折算进 (0^-) 时刻的初值里,只算 (t \ge 0) 的演化。这也是为什么教材反复强调初始条件要写在 (0^-) 上,后面会展开讲这个坑。

还有一个容易忽略的场景:如果只需要稳态响应,用相量法或者频率响应更省事,没必要跑一遍完整逆变换。拉氏变换的价值在于它能一次给出全时段解,包括暂态过程,如果你只要稳态,那是杀鸡用牛刀。

2. 开工前的家底盘点:三样东西必须背到条件反射

2.1 常用变换对与基本性质速查表

逆变换能不能算出来,全靠对变换对的熟悉程度。真正做题时,你不会去查积分表,都是从记忆里直接调。下面这张表是必须滚瓜烂熟的底子:

时域 (f(t)), (t\ge0)s 域 (F(s))备注
(\delta(t))(1)冲激,最基础
(u(t))(1/s)阶跃
(t,u(t))(1/s^2)斜坡
(e^{-at}u(t))(1/(s+a))单实极点
(t^n e^{-at}u(t))(n!/(s+a)^{n+1})重极点来源
(\cos(\omega t)u(t))(s/(s^2+\omega^2))共轭虚极点
(\sin(\omega t)u(t))(\omega/(s^2+\omega^2))共轭虚极点
(e^{-at}\cos(\omega t)u(t))((s+a)/[(s+a)^2+\omega^2])左半平面共轭极点
(e^{-at}\sin(\omega t)u(t))(\omega/[(s+a)^2+\omega^2])同上
(e^{-at}t^n u(t))(n!/(s+a)^{n+1})阻尼振荡衰减包络

性质方面,解微分方程真正高频用到的就四条:线性、微分、s 域平移、s 域微分。s 域平移 (\mathcal{L}[e^{at}f(t)] = F(s-a)) 是处理阻尼正弦的关键,s 域微分 (\mathcal{L}[tf(t)] = -dF(s)/ds) 在处理重极点逆变换和含 (t) 激励时用得上。时域平移 (\mathcal{L}[f(t-t_0)u(t-t_0)] = e^{-st_0}F(s)) 主要在电路题里遇到延迟激励时用。

提示:这张表不要靠死记,靠“推”。比如 (e^{-at}\sin(\omega t)) 那条,从 (\sin(\omega t)) 出发做 s 域平移就能得到,记错的时候现推一遍比硬回想更可靠。

2.2 微分性质里的初始条件:0- 还是 0+

这是整套方法里最容易出错、也最容易被教材一句话带过的地方。我把它单独拎出来讲透。

单边拉普拉斯变换的定义是 (F(s) = \int_{0^-}^{\infty} f(t)e^{-st}dt),下限是 (0^-),不是 (0^+)。这个下限的选择是有讲究的:(0^-) 表示“激励施加之前的那一瞬间”。对于包含电容电感的电路,激励在 (t=0) 接入时,电容电压可能在 (t=0) 这一刻发生跳变(比如冲激电流充电),用 (0^-) 的初值才能保证微分性质严格成立。

如果题目给的初值是 (y(0^+)),那要小心了。微分性质里的 (y(0^-)) 和你手上的 (y(0^+)) 未必相等。对于连续函数,两者一样,没有区别。但如果方程右端含冲激,(y) 在 (t=0) 处会跳变,这时候必须做一次换算:从 (0^-) 的状态出发列方程,或者用 (0^+) 的条件但把冲激激励单独抽出来做匹配。

我的实际处理原则是:只要题目给出的是 (y(0^-))、(y'(0^-)) 这种带负号的初值,一律直接用微分性质的原始形式,不做任何换算。只有当题目说“系统初始已储能,(t=0) 时刻开关动作”这种物理描述时,才需要自己判断跳变。

还有一处同样容易出错:如果方程右端本身带着激励的导数,比如 (y' + 2y = f'(t)),取变换时右端要用微分性质,变成 (sF(s) - f(0^-))。这里的 (f(0^-)) 很容易被当成 0 直接扔掉,尤其是题目里没显式给出激励初值的时候。默认 (f(0^-)=0) 只在 (f(t)) 是 (u(t)) 乘以某个函数、且该函数在 0 处有界时才成立,遇到 (\delta(t)) 这类激励就要重新想。

2.3 逆变换的主要战场:部分分式展开的花样

从 (Y(s)) 回到 (y(t)),绝大部分情况下靠的是部分分式展开加查表。这个技巧本身不难,但花样不少,我按出现频率排一下。

第一类是单实极点,最常见。设 (Y(s) = N(s)/D(s)),(D(s)) 的根 (p_1, p_2, \ldots, p_n) 互不相同,那么

[ Y(s) = \sum_{i=1}^{n}\frac{K_i}{s-p_i}, \quad K_i = \left.(s-p_i)Y(s)\right|_{s=p_i} ]

这个遮蔽法(也叫留数法)比通分比较系数快得多,尤其是分母阶数高于三阶的时候。手算时我习惯在草稿上把分母因式写在一边,然后逐个“遮住”对应因子算系数,速度快而且不容易漏。

第二类是一对共轭复极点,比如 (s^2+2s+5=0) 的根是 (-1\pm 2j)。这时候不要硬套单实极点的公式去算复数留数,虽然能算对,但最后还要合并成实数形式,中间一步错全盘皆输。更稳的做法是配方:把分母配成 ((s+\alpha)^2+\omega^2),再把分子拆成 ((s+\alpha)) 的倍数加常数,直接对应 (e^{-\alpha t}\cos\omega t) 和 (e^{-\alpha t}\sin\omega t) 两项。

第三类是重极点,也就是分母里有 ((s-p)^k) 这种因子。展开形式是

[ \frac{K_{k}}{(s-p)^k} + \frac{K_{k-1}}{(s-p)^{k-1}} + \cdots + \frac{K_1}{s-p} ]

系数求法有两种:通分后比较系数(稳但慢),或者用求导公式

[ K_{j} = \frac{1}{(k-j)!}\left.\frac{d^{k-j}}{ds^{k-j}}\left[(s-p)^k Y(s)\right]\right|_{s=p} ]

考场上二阶重极点最常见,实际上只需要算两个系数:最高次项的系数用遮蔽法直接取,低一次项的系数用求导。我一般两种方法都过一遍,互相验证,代价是多写两行。

还有一类容易被忽略的:假分式。如果分子阶数大于等于分母阶数,必须先做多项式长除法,把多项式部分分离出来。多项式部分对应的是冲激函数及其各阶导数。比如 (F(s) = (s^2+2)/(s+1)),长除得 (s-1+3/(s+1)),逆变换是 (\delta'(t)-\delta(t)+3e^{-t}u(t))。

注意:解微分方程时,只要方程右端没有激励的导数项,且初始条件都是有限值,得到的 (Y(s)) 一般自动是真分式,不会遇到这种情况。假分式主要出现在已知系统函数 (H(s)) 求冲激响应、或者激励含高阶导数的时候。别因为平时不常见就忘了这一条。

3. 五步法走通一道完整题

3.1 标准流程拆解与每一步的检查点

我把整个流程固定成五步,每步都配一个检查动作,这样即使算错也能第一时间发现,不至于一路错到底。

第一步,写清方程和初值。把微分方程连同 (y(0^-))、(y'(0^-)) 一起抄到纸上,右边激励显式写成带 (u(t)) 的形式。检查点:确认方程对 (t\ge0) 成立,确认初值符号是负号。

第二步,两边取单边拉氏变换。逐项套微分性质,把 (y) 的各阶导数换成 (s) 的多项式乘 (Y(s)) 减去初值项。检查点:(n) 阶导数的展开项数应该是 (n+1) 项,包括 (s^nY(s)) 和 (n) 个初值项,逐项数一遍,漏一项后面全崩。

第三步,整理成 (Y(s)=\cdots) 的形式。把含 (Y(s)) 的项合并,把不含 (Y(s)) 的项移到等号右边,两边除以 (s) 的多项式。检查点:合并后的多项式应该正好是微分方程左端对应的特征多项式 (s^2+3s+2) 之类,如果不是,说明某一步的系数抄错了。

第四步,部分分式展开。先确认是真分式,再按极点类型选方法。检查点:展开后各项系数之和,等于原式在 (s\to\infty) 时的行为(真分式应为零,可以用这个粗验)。

第五步,逐项逆变换并写适用范围。查表得到每项对应的时域函数,全部相加,末尾标注 (t\ge0) 或乘 (u(t))。检查点:用初值定理 (y(0^+)=\lim_{s\to\infty}sY(s)) 核对一遍,看跟题目给的初值是否吻合。

这五步里,真正耗时间的是第四步,最容易出错的是第二步和第五步。我自己的经验是,第二步出错多半是初值项符号搞反,第五步出错多半是忘了乘 (u(t)) 或者把 (\sin) 和 (\cos) 的系数配错。

3.2 完整案例:二阶方程带两个非零初值

拿一道最典型的题走一遍,方程是

[ y''(t) + 3y'(t) + 2y(t) = e^{-t}u(t), \quad y(0^-)=1,\ y'(0^-)=0 ]

第一步,抄题,确认初值。

第二步,两边取变换。左端逐项来:

[ \mathcal{L}[y''] = s^2Y(s) - s\cdot 1 - 0 = s^2Y(s) - s ] [ \mathcal{L}[y'] = sY(s) - 1 ] [ \mathcal{L}[y] = Y(s) ]

右端 (\mathcal{L}[e^{-t}u(t)] = 1/(s+1))。

合起来:

[ s^2Y(s) - s + 3sY(s) - 3 + 2Y(s) = \frac{1}{s+1} ]

第三步,整理。把 (Y(s)) 的系数提出来:

[ (s^2+3s+2)Y(s) = \frac{1}{s+1} + s + 3 ]

这里的 (s+3) 就是从初值项移过来的 (s) 和 (3)。注意符号:(-s-3) 移到右边变成 (+s+3),这一步据我观察是错误高发区,很多人写成 (s-3)。

分母因式分解:(s^2+3s+2=(s+1)(s+2))。所以

[ Y(s) = \frac{1}{(s+1)^2(s+2)} + \frac{s+3}{(s+1)(s+2)} ]

这里已经能看出响应的拆分结构了:第一项完全由激励产生,对应零状态响应;第二项完全由初值产生,对应零输入响应。这个观察很重要,第 5 节会展开。

第四步,分别展开。

第二项比较简单,设

[ \frac{s+3}{(s+1)(s+2)} = \frac{A}{s+1} + \frac{B}{s+2} ]

遮蔽法:(A = (s+3)/(s+2)|{s=-1} = 2/1 = 2),(B = (s+3)/(s+1)|{s=-2} = 1/(-1) = -1)。

第一项有重极点,设

[ \frac{1}{(s+1)^2(s+2)} = \frac{C}{s+1} + \frac{D}{(s+1)^2} + \frac{E}{s+2} ]

(E) 用遮蔽法:(E = 1/(s+1)^2|_{s=-2} = 1)。

(D) 用遮蔽法:(D = 1/(s+2)|_{s=-1} = 1)。

(C) 用求导法,对应 ((s+1)^2) 因子的一次项:

[ C = \left.\frac{d}{ds}\left[\frac{1}{s+2}\right]\right|{s=-1} = \left.-\frac{1}{(s+2)^2}\right|{s=-1} = -1 ]

也可以通分比较 (s^2) 系数:左边分子 (s^2) 系数为 0,右边通分后 (s^2) 系数是 (C+E),所以 (C=-E=-1),两种方法一致。

汇总:

[ Y(s) = \left[-\frac{1}{s+1}+\frac{1}{(s+1)^2}+\frac{1}{s+2}\right] + \left[\frac{2}{s+1}-\frac{1}{s+2}\right] ]

合并同类项,(1/(s+2)) 两项正好抵消,剩下

[ Y(s) = \frac{1}{s+1} + \frac{1}{(s+1)^2} ]

第五步,逆变换查表:(1/(s+1)\to e^{-t}u(t)),(1/(s+1)^2 \to te^{-t}u(t))。所以

[ y(t) = (1+t)e^{-t}u(t) ]

验算:(y(0)=1),符合;(y'(t) = -te^{-t}),(y'(0)=0),符合;代回原方程,(y''+3y'+2y = e^{-t}),也成立。这道题漂亮的地方在于,零输入响应和零状态响应在 (s) 域里有一部分互相抵消了,导致最终结果形式极简。如果你在时域做,是看不到这个结构的。

3.3 完整案例:冲激激励与状态跳变

第二道题换个类型,测一测对 (0^-) 和 (0^+) 的理解:

[ y'(t) + 2y(t) = \delta(t), \quad y(0^-)=1 ]

取变换,左端 (sY(s)-1+2Y(s)),右端 (\mathcal{L}[\delta(t)]=1)。整理得

[ (s+2)Y(s) = 2 \Rightarrow Y(s) = \frac{2}{s+2} ]

逆变换 (y(t)=2e^{-2t}u(t))。

这个结果值得细看。(y(0^-)=1),但 (y(0^+)=2),中间跳了 1。跳变量是哪来的?就是对冲激激励做一次积分的结果:(\int_{0^-}^{0^+}\delta(t)dt=1)。如果你用 (0^+) 的初值去列方程,就必须知道跳变后的值是 2,而 2 恰恰是要求的东西,形成循环。这就是为什么单边拉氏变换的非零下限要定在 (0^-):它绕开了这个循环,让初值可以事先给定。

用初值定理验证一下:(\lim_{s\to\infty}sY(s)=\lim 2s/(s+2)=2),等于 (y(0^+))。这个方法在考场上非常好用,两秒钟就能判断结果对不对。

再补一个细节:如果方程右端是 (2\delta(t)),跳变量就是 2,(y(0^+)) 变成 3,(Y(s)=3/(s+2)),一切都跟着线性变化。这说明冲激激励对状态的作用完全是“叠加”的,可以用这个规律快速估算结果量级。

3.4 完整案例:共轭复极点怎么不写错符号

第三道题专门练复极点:

[ Y(s) = \frac{s+3}{s^2+2s+5} ]

分母配方:(s^2+2s+5=(s+1)^2+4),所以 (\alpha=1),(\omega=2)。

关键一步是把分子改写成含 ((s+1)) 的形式:(s+3=(s+1)+2)。于是

[ Y(s) = \frac{s+1}{(s+1)^2+2^2} + \frac{2}{(s+1)^2+2^2} ]

第一项对照表直接得 (e^{-t}\cos 2t)。第二项分子是 2,而 (\sin) 那一项的分子应该是 (\omega=2),正好匹配,得 (e^{-t}\sin 2t)。结果:

[ y(t) = e^{-t}(\cos 2t + \sin 2t),u(t) ]

如果分子是 (s+4),就要写成 ((s+1)+3),第二项变成 (\frac{3}{2}\cdot\frac{2}{(s+1)^2+4}),系数是 (3/2),对应 ((3/2)e^{-t}\sin 2t)。这个“除以 (\omega)”的动作是最常见的漏项点,我见过太多人直接写成 (3e^{-t}\sin 2t)。

提示:配方法算完之后,回头检查分子常数的量纲和系数。标准形式是 ((s+\alpha)/[(s+\alpha)^2+\omega^2]) 和 (\omega/[(s+\alpha)^2+\omega^2]),第二项分子必须正好是 (\omega),多出来的部分要写成系数放在前面。

3.5 结果自检的四个手段

算完了不检查,等于白算。我手上有四个手段,成本都很低。

手段一,初值定理。(y(0^+)=\lim_{s\to\infty}sY(s))。真分式情况下,这个极限等于分子最高次系数除以分母最高次系数。拿它跟题目给的初值对一下,能抓出大部分代数错误。

手段二,终值定理。当 (sY(s)) 的极点全在左半开平面(允许 (s=0) 处一个一阶极点)时,(y(\infty)=\lim_{s\to0}sY(s))。这个能检验稳态值。注意前提条件,如果系统有右半平面极点,终值定理不适用,用了会得出荒谬结论。

手段三,代回原方程。把 (y(t)) 求两阶导代回去,看右端是否等于激励。这个方法最可靠,但手算成本高,一般只用在高阶题或者结果可疑的时候。

手段四,量纲与量级估算。用 (t=0) 和 (t\to\infty) 两个端点看函数形态是否合理。比如一道时间常数 (\tau=0.5) 的一阶题,解出来的指数应该是 (e^{-2t}) 而不是 (e^{-0.5t}),指数上的系数跟特征根直接挂钩,看一眼就知道对不对。

4. 踩坑记录与排错手册

4.1 高频错误速查表

这部分是我整理做题记录时归纳出来的,基本上覆盖了八成的失分点:

现象根本原因修正动作
结果初值对不上微分性质中初值项符号写反重写 (n) 阶导数展开式,逐项核对
部分分式系数算不对遮蔽法漏乘因子或代入算错用通分比较系数交叉验证
复极点结果系数偏大分母少除以 (\omega)对照标准形式重配
重极点逆变换少了一项只算了最高次项系数补齐 (1/(s-p)^{k-1}) 到 (1/(s-p)) 全部项
出现 (\delta'(t)) 觉得是错的没做长除法,假分式直接展开先长除分离多项式部分
稳态值算出来发散有右半平面极点却用了终值定理检查 (sY(s)) 极点位置
时间函数缺 (u(t))只写表达式不管适用范围统一在末尾乘 (u(t))
激励变换漏了初值项右端含 (f'(t)) 时忘了 (f(0^-))右端同样套微分性质

4.2 部分分式展开的三个翻车现场

第一个现场:重极点只算一半。有一道题 (Y(s)=1/[(s+2)^2(s+3)]),很多人展开成 (\frac{A}{s+2}+\frac{B}{s+3}),把 ((s+2)^2) 当成一个整体。正确形式必须包含 (\frac{C}{(s+2)^2}),否则通分后分母阶数不足,系数怎么算都对不上。判断方法很简单:展开式的分母通分后必须等于原分母,项数少一项,阶数就少一阶。

第二个现场:复极点硬算复数留数。理论上没错,但算完之后要用欧拉公式合并,中间涉及复数共轭的一堆符号,出错概率极高。我建议一律走配方法路线,把复数运算降到零。

第三个现场:假分式直接展开。有人拿到 (Y(s)=(2s^2+3s+1)/(s^2+s)) 就开始遮蔽法,结果算出 (A=0) 之类莫名其妙的东西。先看分子分母阶数,相等就长除。这道题长除得 (2+\frac{s+1}{s(s+1)}=2+\frac{1}{s}),逆变换 (2\delta(t)+u(t))。如果你不做长除,直接展开会得到 (2+\frac{1}{s}) 或者别的形式,但思路是乱的。

4.3 初值条件张冠李戴与假分式漏项

初值条件这块,最典型的错误是拿 (y(0^+)) 代进 (0^-) 的位置。举个具体的:方程 (y'+3y=2\delta(t)),题目如果只告诉你“系统初始状态为 0”,那 (y(0^-)=0),代进去得 (Y(s)=2/(s+3)),(y(0^+)=2)。但如果题目说“初始状态为 0,且已知 (y(0^+)=0)”,那题目本身有问题——冲激必然导致跳变,不可能还是 0。遇到这种描述,要回去看是不是激励其实不是冲激,或者初值给的是跳变之后的值。

假分式漏项的问题,在“已知 (H(s)) 求冲激响应”这类题里特别突出。比如 (H(s)=\frac{s^2+1}{s^2+2s+1}),长除得 (1-\frac{2s}{s^2+2s+1}),前面那个 1 对应 (\delta(t)),不能丢。这个 (\delta(t)) 项在物理上代表系统的直通路径,很多实际系统(比如运算放大器的同相放大结构)确实有这一项,丢了它,响应在 (t=0) 处就少了一个冲激。

还有一个隐藏得比较深的坑:激励含 (t) 的幂次时,很多人直接用 (1/s^2) 之类的公式,但忘了题目可能是 (te^{-t}u(t)) 这种带阻尼的,这时候要用 s 域平移,得 (1/(s+1)^2)。区分方法是看激励里有没有指数因子,有就平移,没有就直接查表。

4.4 用代码交叉验证的实操脚本

手算容易错,用代码验一遍是性价比最高的做法。Python 的 sympy 能直接做拉氏逆变换,下面这段我平时放在笔记里,改两个符号就能用:

import sympy as sp s, t = sp.symbols('s t') Y = 1/(s + 1) + 1/(s + 1)**2 y = sp.inverse_laplace_transform(Y, s, t) print(sp.simplify(y)) # 输出 (t + 1)*exp(-t)*Heaviside(t)

Heaviside(t)就是 (u(t)),所以结果是 ((t+1)e^{-t}u(t)),跟手算一致。如果结果里出现DiracDelta,说明你算出了冲激项,通常意味着分母阶数配错了或者初值代错了。

更省事的做法是让 sympy 直接解方程,跳过分部分:

y = sp.Function('y') eq = sp.Eq(y(t).diff(t, 2) + 3*y(t).diff(t) + 2*y(t), sp.exp(-t)) sol = sp.dsolve(eq, y(t), ics={y(0): 1, y(t).diff(t).subs(t, 0): 0}) print(sp.simplify(sol))

注意这里的ics里我写的是y(0)而不是y(0-),sympy 没有 (0^-) 的概念,它按连续函数处理,对这道题没有影响。但如果方程右端含冲激,dsolve处理起来会比较别扭,这时候还是老实手算 s 域。

想要数值验证,用 scipy 走一遍仿真:

import numpy as np from scipy.integrate import solve_ivp def rhs(t, z): y, dy = z return [dy, np.exp(-t) - 3*dy - 2*y] sol = solve_ivp(rhs, [0, 5], [1.0, 0.0], t_eval=np.linspace(0, 5, 200)) # 把 sol.y[0] 跟解析解 (1+t)*exp(-t) 画在一起对比

两条曲线重合,说明手算结果没错。这个小习惯在考试周特别有用,做完一道题花两分钟验一下,比事后反复怀疑自己强得多。

5. 从会做题到会看系统

5.1 s域解里那些“免费”隐藏信息

做完题别急着合上本子。(Y(s)) 这个表达式里藏着的信息,比 (y(t)) 多得多。

把 (Y(s)) 按来源拆开,会得到一个固定结构:

[ Y(s) = \underbrace{\frac{\text{初值多项式}}{\text{特征多项式}}}{\text{零输入}} + \underbrace{\frac{\text{激励象函数}}{\text{特征多项式}}}{\text{零状态}} ]

两个部分共用同一个分母,也就是特征多项式。这个分母的根就是系统的自然频率,决定了响应的“形状”(指数衰减率、振荡频率)。激励只影响系数,不影响形状。这解释了一个反直觉的现象:不管输入是什么,一个线性时不变系统的暂态过程总是那几种指数和振荡的组合,区别只在于各成分的权重。

更实用的是,当你只关心零状态响应时,可以直接写 (Y_{zs}(s)=H(s)F(s)),其中 (H(s)=1/D(s))((D(s)) 是特征多项式),这就是系统函数。反过来,如果你知道一个系统的冲激响应,就掌握了它的全部信息。这个视角是第六章通向第七章的桥。

还有极点位置和稳定性的对应关系:全部极点在左半开平面,系统稳定;有极点在右半平面,响应发散;极点在虚轴上(一阶),临界等幅振荡。这些结论在 s 域里一眼就能看出来,而在时域里要靠判断指数项是否趋于零。做题时顺便看一眼极点位置,等于免费做了一次稳定性分析。

5.2 和系统函数、稳定性的衔接

我学到这一章时有个疑惑:既然拉氏变换解方程这么机械,为啥教材还要花大力气讲系统函数。后来做题多了才明白,两者其实是同一件事的两个视角。

给定微分方程,取零初始条件的变换,直接得到 (H(s) = Y(s)/F(s)),就是输出象函数比输入象函数。这等于说,系统函数本质上就是“把微分方程搬进 s 域后的那个系数比”。这个定义比“冲激响应的拉氏变换”更容易记,因为不用绕道冲激。

有了 (H(s)),求任何输入的响应就变成三件事:写出 (F(s))、乘起来、逆变换。如果输入是阶跃,就是乘 (1/s);如果是正弦,可以用 (s=j\omega) 直接算频率响应,连逆变换都省了。这种“一个函数打天下”的效率,是拉氏变换方法真正的价值所在。

顺带说一句考试策略:第六章的题,如果只要求响应表达式,五步法就够了;如果题目顺便问“系统是否稳定”“稳态响应是什么”,那就是在考 (H(s)) 的极点分布和终值定理。这两类问法经常绑在一起出现,提前把对应关系整理清楚,考试时不用现想。

5.3 手算时的几个提速小动作

最后分享几个纯操作层面的习惯,跟理论无关,但能省不少时间。

草稿纸上先用横线把五个步骤的位置划出来,避免写着写着把某一步挤到角落。取变换那一步,我会把每个导数的展开项单独写一行,比如 (s^2Y-s y_0-y_1) 这样带下标的简写,等整理的时候再代具体数值,这样不容易漏项。

部分分式展开时,系数算完立刻在原式旁边标个小勾,全部标完再逆变换。遇到过太多次算到最后一个系数发现前面某个漏了,回头重找很花时间。

逆变换写完之后,用初值定理扫一眼,这一步只要十秒。如果对不上,优先检查复极点的 (\omega) 系数和重极点是否漏项,这两个地方出问题的概率最高。

还有一点想提醒:遇到分母因式分解不出来的情况(比如 (s^2+s+1) 这种判別式小于零),不要慌,配方走复极点路线就行,别去硬求根。教材里这类题出现频率不低,配方是唯一稳妥的路。

我个人在实际做题和带人复习中的体会是,拉普拉斯变换解微分方程这套流程,前二十道题会觉得步骤繁琐,超过三十道之后就会形成肌肉记忆,看到方程就知道极点大概什么形态、响应是衰减还是振荡、需不需要处理重根。真正难的不是流程本身,而是初值那一步的严谨性和部分分式的熟练度。把这两块单独拎出来多练十几遍,剩下的都是体力活。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询