4. 拉普拉斯逆变换:部分分式展开法

好,咱们接着聊。前面我们把连续世界的微分方程变成了拉普拉斯域里的代数方程,爽是爽了,但问题来了——算出来的结果是个复变函数,怎么变回时域信号?

说白了,拉普拉斯逆变换就是要把 F(s) 变回 f(t)。数学上有个复变积分公式,但说实话,我做了十几年信号处理,几乎没用过那个公式。实际工程里,我们用的方法就一个——部分分式展开法

核心思想:把复杂的 F(s) 拆成一堆简单分式的和,每个简单分式对应一个已知的时域信号。查表就行。

4.1 为什么是部分分式?

你想想看,拉普拉斯变换表里就那么几个基本对:

  • 1/s → 阶跃信号 u(t)
  • 1/(s+a) → 指数衰减 e^{-at}u(t)
  • ω/(s²+ω²) → 正弦信号 sin(ωt)u(t)
  • ……

实际系统传函往往是 F(s) = N(s)/D(s),分子分母都是多项式。直接查表?查不到。但如果我们把它拆成上面这些基本形式的线性组合,那逆变换就是查表加线性叠加。

我在项目中遇到过一个问题:一个高阶滤波器的传函,直接做逆变换算出来一堆指数项混在一起,根本看不出物理意义。拆成部分分式后,每个极点对应一个模态,哪个模态衰减快、哪个振荡频率高,一目了然。

4.2 部分分式展开的三种情况

做部分分式展开,关键看分母 D(s) 的根——也就是系统的极点。分三种情况:

4.2.1 单实根(最简单的情况)

假设 F(s) = (s+3)/(s²+3s+2)。分母因式分解:(s+1)(s+2)。两个单实根:-1 和 -2。

展开形式:

F(s) = A/(s+1) + B/(s+2)

求系数 A 和 B。方法很简单——留数法

A = (s+1)F(s)|_{s=-1} = (s+3)/(s+2)|_{s=-1} = 2/1 = 2
B = (s+2)F(s)|_{s=-2} = (s+3)/(s+1)|_{s=-2} = 1/(-1) = -1

所以:

F(s) = 2/(s+1) - 1/(s+2)

查表:

f(t) = 2e^{-t}u(t) - e^{-2t}u(t)

嗯,这里要注意:留数法求系数时,一定要把因子约干净再代入。我刚开始学的时候经常犯这个错,代入时忘了约分,结果算出来系数全错。

4.2.2 重根(稍微麻烦点)

假设 F(s) = 1/(s+1)²(s+2)。分母有重根 -1(二阶)和单根 -2。

展开形式:

F(s) = A/(s+1)² + B/(s+1) + C/(s+2)

求系数:

A = (s+1)²F(s)|_{s=-1} = 1/(s+2)|_{s=-1} = 1
C = (s+2)F(s)|_{s=-2} = 1/(s+1)²|_{s=-2} = 1

B 怎么求?不能直接代了。用求导法:

B = d/ds[(s+1)²F(s)]|_{s=-1} = d/ds[1/(s+2)]|_{s=-1} = -1/(s+2)²|_{s=-1} = -1

所以:

F(s) = 1/(s+1)² - 1/(s+1) + 1/(s+2)

查表:

f(t) = te^{-t}u(t) - e^{-t}u(t) + e^{-2t}u(t)

个人经验:重根情况我建议用待定系数法配合留数法一起用。先求最高次重根的系数(直接代),再求单根系数(直接代),剩下的用待定系数法解方程。这样不容易出错。

4.2.3 共轭复根(振荡的来源)

假设 F(s) = (s+1)/(s²+2s+5)。分母的根:-1 ± 2j。共轭复根。

展开形式有两种处理方式:

方式一:拆成两个一阶复分式

F(s) = A/(s+1-2j) + B/(s+1+2j)

系数也是共轭的。算出来再合并,能得到正弦余弦形式。

方式二(我推荐):配方法

F(s) = (s+1)/((s+1)²+4)

直接查表:

f(t) = e^{-t}cos(2t)u(t)

你看,配方法多快。我一般优先用配方法,实在配不了才拆复根。

避坑指南:我曾经在配方法上栽过跟头。注意分子必须配成 (s+α) 或者常数,才能直接查表。如果分子是 s+3 而分母是 (s+1)²+4,要拆成 (s+1)+2,然后分成两项:

F(s) = (s+1)/((s+1)²+4) + 2/((s+1)²+4)

第一项对应 e^{-t}cos(2t),第二项对应 e^{-t}sin(2t)。千万别直接套!

4.3 部分分式展开的完整流程

我总结了一个标准流程,照着做基本不会错:

  1. 检查真分式:如果分子阶数 ≥ 分母阶数,先做多项式除法,化成真分式 + 多项式
  2. 因式分解分母:找出所有极点(实根、重根、复根)
  3. 写展开形式:每个极点对应一项,重根对应多项
  4. 求系数:留数法 + 待定系数法
  5. 查表逆变换:逐项查表,叠加得到 f(t)

举个例子:假设 F(s) = (2s²+5s+5)/(s³+3s²+4s+2)

分母因式分解:(s+1)(s²+2s+2) = (s+1)((s+1)²+1)

展开:F(s) = A/(s+1) + (Bs+C)/((s+1)²+1)

求系数:A=1, B=1, C=2

所以:F(s) = 1/(s+1) + (s+1)/((s+1)²+1) + 1/((s+1)²+1)

逆变换:f(t) = e^{-t} + e^{-t}cos(t) + e^{-t}sin(t)

4.4 知识体系图

下面这张图把部分分式展开法的核心逻辑串起来了。我建议你把它记在脑子里,以后遇到拉普拉斯逆变换,按图索骥就行。

部分分式展开法知识体系 F(s) = N(s)/D(s) 真分式? 多项式除法 化成真分式+多项式 因式分解分母 D(s) 找出所有极点 单实根 A/(s+p₁) 形式 留数法求系数 重根 A/(s+p)ⁿ 形式 求导法/待定系数 共轭复根 配方法优先 或拆复根合并 查表 → f(t) 逐项逆变换,线性叠加

4.5 几点补充

关于数值计算:实际工程中,高阶系统的部分分式展开用手算太痛苦。我一般用 MATLAB 的 residue() 函数或者 Python 的 scipy.signal.residue()。但理解原理很重要——至少你得知道它算出来的是什么意思。

关于物理意义:每个极点对应系统的一个固有模态。实极点对应指数衰减/增长,复极点对应振荡。展开系数(留数)决定了这个模态在输出中的权重。我在做振动分析时,就是靠这个判断哪个模态贡献最大。

关于稳定性:所有极点实部为负 → 系统稳定。只要有一个极点实部为正 → 系统发散。这个判断在控制系统中极其重要。

我的习惯:拿到一个传函,先看极点分布。心里大概就有数了——这个系统是稳还是不稳,响应是快还是慢,有没有振荡。然后再去做逆变换,验证自己的判断。

好了,部分分式展开法就讲到这里。说白了就是拆、算、查、叠四个字。多练几道题,你就能找到感觉。


公众号:蓝海资料掘金营,微信deep3321