ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

留数法:有理函数部分分式分解的高效计算技巧

留数法:有理函数部分分式分解的高效计算技巧 1. 从一道“积不出来”的积分题说起很多朋友在学高等数学或者复变函数的时候都遇到过一类让人头疼的积分分母是一个高次多项式分子是一个低次多项式。比如让你求∫ (x^2 1) / (x^4 5x^2 4) dx。你试了三角换元、试了分部积分发现都不好使。课本或者老师会告诉你这类积分有个标准解法——有理函数的部分分式分解。简单说就是把一个复杂的分式拆成几个简单的、我们“积得出来”的分式之和。这个想法很直观但真动手算起来尤其是当分母多项式次数比较高或者有重根、复根的时候确定那几个简单分式的系数就成了体力活。通常教材会教你“待定系数法”设出系数通分比较两边分子多项式的系数得到一个线性方程组然后去解这个方程组。这个方法普适性强但计算量随着次数升高呈指数增长解三元以上的方程组就很容易算错。有没有更聪明、更“优雅”一点的办法呢有的。这就是标题里提到的“留数法”。它把复变函数里求留数的技巧巧妙地应用到了实变函数的有理分式分解上能极大地简化系数的求解过程尤其是对于一次因式无论是否重根对应的系数几乎可以“秒杀”。今天我就结合自己多年教学和研究的经验把这套方法的原理、步骤和那些容易踩的坑给你掰开揉碎了讲清楚。无论你是正在备考的大学生还是需要处理信号系统、控制理论中传递函数分解的工程师掌握这个方法都能让你事半功倍。2. 有理函数部分分式分解到底要拆成什么样在讲“怎么算”之前我们必须先彻底搞清楚“要算什么”。有理函数的部分分式分解目标非常明确。假设我们有一个真分式的有理函数R(x) P(x) / Q(x)其中P(x)和Q(x)都是实系数多项式并且P(x)的次数低于Q(x)的次数如果不是需要先做多项式除法化出一个真分式。我们的任务是把R(x)写成一系列更简单分式的和。这些“更简单的分式”长什么样完全由分母Q(x)的因式分解决定。Q(x)在实数范围内可以分解为一次因式和不可约的二次因式的乘积。这里有个关键由于实系数多项式的复根成对出现所以那些复根对应的就是不可约的二次因式如x^2 px q, 其中p^2 - 4q 0。分解规则如下对于分母Q(x)的每个一次因式(x - a)^k即xa是 k 重实根 它对应着 k 个简单分式之和形式为A1/(x - a) A2/(x - a)^2 ... Ak/(x - a)^k其中A1, A2, ..., Ak是待定的常数。对于分母Q(x)的每个不可约二次因式(x^2 px q)^l对应一对 l 重复根 它对应着 l 个简单分式之和形式为(B1*x C1)/(x^2 px q) (B2*x C2)/(x^2 px q)^2 ... (Bl*x Cl)/(x^2 px q)^l其中B1, C1, ..., Bl, Cl是待定的常数。举个例子设Q(x) (x-1)^3 * (x2) * (x^21)^2。 那么对应的部分分式分解形式一定是P(x)/Q(x) A/(x-1) B/(x-1)^2 C/(x-1)^3 D/(x2) (ExF)/(x^21) (GxH)/(x^21)^2这里 A, B, C, D, E, F, G, H 就是我们需要确定的 8 个常数。传统的待定系数法就是通分后令分子P(x)等于通分后的分子比较x各次幂的系数得到 8 个方程然后解这个八元一次方程组。计算繁琐易出错。而留数法的核心思想是逐个击破。我可以想办法直接单独地把系数A求出来而不受其他 7 个系数的影响。同样地再单独求BC…… 这样就把一个大方程组拆成了多个独立的小问题。3. 留数法的核心原理隔离与极限留数法这个名字来源于复变函数中计算围道积分的一种方法。但在我们实变函数的语境下你可以把它理解为一套通过“乘以因式”和“取极限”来隔离目标系数的技巧。我们从一个最简单的场景开始理解其思想。3.1 单根情形一次因式一次幂假设分母Q(x)含有因式(x - a)且a是单根即不是重根。那么在部分分式分解中必然有一项是A/(x - a)。如何求 A技巧在于将原分式R(x) P(x)/Q(x)的两边同时乘以(x - a)。(x - a) * R(x) (x - a) * [A/(x - a) (其他所有项)]观察等式右边乘以(x - a)后A/(x - a)这一项变成了A。其他的所有项由于它们的分母都还含有(x - a)以外的因子所以当乘以(x - a)后这些项仍然含有(x - a)这个因子。现在关键的一步来了令x → a。右边第一项A是常数极限就是A。右边其他所有项因为都含有(x - a)因子当x → a时(x - a) → 0所以整个项的极限是 0。因此我们得到了一个极其简洁的公式A lim_{x→a} [ (x - a) * R(x) ]而且由于x a是Q(x)的一个根所以(x - a)也是Q(x)的因子。在求这个极限时通常可以直接约去分子分母的公因子(x - a)从而避免出现0/0型未定式直接代入x a计算。更进一步的简化如果Q(x) (x - a) * Q1(x)且Q1(a) ≠ 0那么(x - a) * R(x) (x - a) * [P(x) / ((x - a)*Q1(x))] P(x) / Q1(x)所以A lim_{x→a} [P(x) / Q1(x)] P(a) / Q1(a)这就是留数法求单根对应系数的最终实用公式。它意味着要求A你只需要1从分母Q(x)中挖掉(x - a)这个因子得到Q1(x)2计算P(a)/Q1(a)即可。实例演示分解R(x) (2x 1) / (x^2 x - 2)。 分母Q(x) x^2 x - 2 (x - 1)(x 2)。 设R(x) A/(x-1) B/(x2)。求A对应根a1。挖掉(x-1)Q1(x) (x2)。则A P(1)/Q1(1) (2*11) / (12) 3/3 1。求B对应根a-2。挖掉(x2)Q1(x) (x-1)。则B P(-2)/Q1(-2) (2*(-2)1) / (-2-1) (-3)/(-3) 1。 所以分解为1/(x-1) 1/(x2)。验算1/(x-1)1/(x2) (x2x-1)/((x-1)(x2)) (2x1)/(x^2x-2)正确。3.2 重根情形一次因式高次幂这是留数法真正显示威力的地方。假设分母有因式(x - a)^k对应分解项为A1/(x-a) A2/(x-a)^2 ... Ak/(x-a)^k。传统待定系数法在这里非常痛苦。但留数法提供了一套系统的求法其核心思想是通过多次“乘以高次幂因式”和“求导”来逐层剥离系数。我们以k3为例分解项为A/(x-a) B/(x-a)^2 C/(x-a)^3。如何求最高次幂的系数 C这最简单。将原式两边乘以(x - a)^3(x - a)^3 * R(x) A(x-a)^2 B(x-a) C (其他所有项)*(x-a)^3这里“其他所有项”的分母都不含(x-a)所以它们整体乘以(x-a)^3后当x→a时仍趋于0。而右边前两项都含有(x-a)因子在x→a时也趋于0。所以C lim_{x→a} [ (x - a)^3 * R(x) ]和单根类似通常可以约分后直接代入计算。如何求次高次幂的系数 B直接取极限不行了因为lim_{x→a} [ (x - a)^3 * R(x) ]已经得到了C而B被“淹没”在含有(x-a)的项里。我们需要“看到”B。 观察(x - a)^3 * R(x)我们把它记作F(x) (x - a)^3 * R(x)。 从等式F(x) A(x-a)^2 B(x-a) C ...可以看出如果我们对F(x)求一阶导数那么C是常数导数为0。B(x-a)求导得到B。A(x-a)^2求导得到2A(x-a)当x→a时此项为0。“其他所有项”的导数由于原项含有(x-a)^3因子其导数至少含有(x-a)^2因子当x→a时也为0。 因此我们有B lim_{x→a} [ d/dx [ F(x) ] ] lim_{x→a} F(x)如何求系数 A同理对F(x)求二阶导数B(x-a)的二阶导为0。A(x-a)^2的二阶导是2A。 所以A (1/2!) * lim_{x→a} [ d²/dx² [ F(x) ] ] (1/2!) * lim_{x→a} F(x)归纳出通用公式 对于因式(x - a)^k对应的分解项A1/(x-a) ... Ak/(x-a)^k其系数Aj(对应1/(x-a)^j的系数) 的计算公式为Aj (1/(k-j)!) * lim_{x→a} [ d^{k-j}/dx^{k-j} [ (x - a)^k * R(x) ] ]其中(x - a)^k * R(x)在计算前通常先进行约分化简得到一个在xa处连续甚至可导的函数G(x)然后对G(x)求导再取极限。实例演示分解R(x) x / [(x-1)^3 * (x1)]。 设R(x) A/(x-1) B/(x-1)^2 C/(x-1)^3 D/(x1)。 我们先处理重根x1的部分。 令G(x) (x-1)^3 * R(x) x / (x1)。这里约掉了(x-1)^3简化计算求C(对应1/(x-1)^3):C lim_{x→1} G(x) 1 / (11) 1/2。求B(对应1/(x-1)^2): 需要G(x)。G(x) x/(x1) 1 - 1/(x1)所以G(x) 1/(x1)^2。则B lim_{x→1} G(x) 1/(2^2) 1/4。求A(对应1/(x-1)): 需要G(x)。G(x) 1/(x1)^2 (x1)^{-2}所以G(x) -2(x1)^{-3}。则A (1/2!) * lim_{x→1} G(x) (1/2) * [-2/(2^3)] (1/2) * (-2/8) -1/8。再求单根x-1的系数D。用单根公式挖掉(x1)Q1(x) (x-1)^3。D P(-1)/Q1(-1) (-1) / (-2)^3 (-1)/(-8) 1/8。所以最终分解为(-1/8)/(x-1) (1/4)/(x-1)^2 (1/2)/(x-1)^3 (1/8)/(x1)。3.3 二次因式情形复根对对于分母中的不可约二次因式(x^2 px q)^l对应的分解项分子是(Bx C)的形式。留数法在这里依然有效但通常结合“复数根”来处理更为直接和统一。其思想是任何一个实系数二次因式(x^2pxq)在复数域内可以分解为(x - z)(x - \bar{z})其中z和\bar{z}是一对共轭复根。我们可以把问题暂时扩展到复数域对每一个复根z应用之前的一次因式留数法公式求出一个“复数域”的系数。然后利用共轭复根对应的系数也是共轭的这一性质将一对复数系数组合回一个实系数的二次分式。具体步骤将实有理函数R(x)视为复变量z的函数R(z)。对于二次因式(x^2pxq)^l对应的每一个复根z0设其重数为l在复数域内做部分分式分解会得到形如α/(z - z0)^m的项α是复数。对每个复根z0用留数法公式与实根情形完全一样求出其对应的复数系数α。对于一对共轭复根z0和\bar{z0}它们对应的系数α和\bar{α}也是共轭的。将共轭项相加α/(z - z0) \bar{α}/(z - \bar{z0})通过通分和化简必然可以合并为一个实系数的二次分式(Bx C)/(x^2pxq)。其中B 2 Re(α),C -2 Re(α*z0)(具体形式与α的表达式有关)。这种方法在理论上是优美的但在手工计算实数积分时对于单重的二次因式更常用的是一种“组合技巧”或直接使用实数的留数法变体对(x^2pxq)R(x)取x为二次方程根时的极限计算稍显复杂。对于大多数工程应用尤其是单重二次因式传统的待定系数法结合复数法或赋值法可能更直观。但留数法复数版在编程实现或处理高重数二次因式时具有系统性优势。4. 实战演练与经典题型剖析光说不练假把式。我们来看几个综合性的例子把留数法的各种技巧串起来用。4.1 例题一混合实根单根与重根分解R(x) (3x^3 - 2x^2 x - 5) / [(x-2)(x1)^2]。首先分母Q(x) (x-2)(x1)^2。所以分解形式为R(x) A/(x-2) B/(x1) C/(x1)^2步骤1求单根系数 A (对应根 x2)用单根留数法挖掉(x-2)Q1(x) (x1)^2。A P(2) / Q1(2) (3*8 - 2*4 2 - 5) / (3^2) (24-82-5)/9 13/9。步骤2求重根系数 C (对应根 x-1, 高次幂)用重根留数法求最高次项系数。令G(x) (x1)^2 * R(x) (3x^3 - 2x^2 x - 5) / (x-2)。C lim_{x→-1} G(x) (3*(-1)^3 - 2*(-1)^2 (-1) - 5) / (-1-2) (-3 -2 -1 -5)/(-3) (-11)/(-3) 11/3。步骤3求重根系数 B (对应根 x-1, 低次幂)用重根留数法求次高次项系数。需要计算G(x)在x-1的极限。 先化简G(x)G(x) (3x^3 - 2x^2 x - 5)/(x-2)。做多项式除法或直接调整3x^3 - 2x^2 x - 5 (x-2)(3x^2 4x 9) 13我们来验算(x-2)(3x^24x9) 3x^34x^29x -6x^2-8x-18 3x^3 -2x^2 x -18余数需要是13才能得到原式-5但-1813-5正确。所以G(x) 3x^2 4x 9 13/(x-2)。 求导G(x) 6x 4 - 13/(x-2)^2。 则B lim_{x→-1} G(x) 6*(-1) 4 - 13/(-3)^2 -6 4 - 13/9 -2 - 13/9 -18/9 - 13/9 -31/9。所以最终分解为(13/9)/(x-2) (-31/9)/(x1) (11/3)/(x1)^2。4.2 例题二涉及二次不可约因式分解R(x) (x^2 2) / [(x^2 1)(x - 1)]。分母Q(x) (x^21)(x-1)。x^21不可约对应一对共轭复根±i。分解形式为R(x) (Ax B)/(x^21) C/(x-1)方法一结合留数法与赋值法求单根系数 C对应根x1。挖掉(x-1)Q1(x)x^21。C P(1)/Q1(1) (12)/(11) 3/2。现在原式变为(x^22)/[(x^21)(x-1)] (AxB)/(x^21) (3/2)/(x-1)。两边乘以公分母(x^21)(x-1)得x^22 (AxB)(x-1) (3/2)(x^21)。为了求 A 和 B我们可以用赋值法。选择使计算简单的 x 值。令x0左边2右边(B)*(-1) (3/2)*1 -B 3/2。所以2 -B 3/2B 3/2 - 2 -1/2。令x1已用过。令x-1左边(-1)^223右边(A*(-1)B)*(-2) (3/2)*(11) (-AB)*(-2) 3 2A - 2B 3。代入B-1/23 2A -2*(-1/2) 3 2A 1 3 2A42A -1A -1/2。所以最终分解为[(-1/2)x - 1/2]/(x^21) (3/2)/(x-1) -(x1)/(2(x^21)) 3/(2(x-1))。方法二纯复数留数法展示思想对于二次因式(x^21) (x-i)(xi)我们考虑其一个根z0 i。 在复数域分解形式应为α/(x-i) \bar{α}/(xi) C/(x-1)。 用留数法求复数系数α视x为复数zR(z) (z^22)/[(z^21)(z-1)]。 对于根z0i挖掉因子(z-i)则Q1(z) (zi)(z-1)。α P(i)/Q1(i) (i^22) / [(ii)(i-1)] (-12) / [(2i)(i-1)] 1 / [2i(i-1)]。 化简分母2i(i-1) 2i^2 - 2i -2 - 2i。 所以α 1 / (-2 - 2i) -1/(2(1i))。有理化α -1/(2(1i)) * (1-i)/(1-i) -(1-i)/(2*(1^2 - i^2)) -(1-i)/(2*2) -(1-i)/4 (-1 i)/4。 其共轭\bar{α} (-1 - i)/4。 那么α/(x-i) \bar{α}/(xi) [(-1i)/4]/(x-i) [(-1-i)/4]/(xi)。 通分合并公分母为(x-i)(xi)x^21。 分子为[(-1i)/4]*(xi) [(-1-i)/4]*(x-i) (1/4)[(-1i)(xi) (-1-i)(x-i)]。 计算(-1i)(xi) -x - i ix i^2 -x - i ix -1 (-x-1) i(x-1)。(-1-i)(x-i) -x i - ix i^2 -x i - ix -1 (-x-1) - i(x-1)。 两者相加[(-x-1) i(x-1)] [(-x-1) - i(x-1)] -2x - 2。 所以α/(x-i) \bar{α}/(xi) (1/4)*(-2x-2)/(x^21) -(x1)/(2(x^21))。 这与方法一结果一致。可以看到复数法更具系统性但手工计算量较大。5. 留数法的优势、局限与实操心得经过上面的原理讲解和例题演示你应该能感受到留数法的威力了。我们来系统总结一下。5.1 留数法的核心优势隔离系数降低维度这是最大的优点。它将一个庞大的 n 元线性方程组分解为 n 个独立的一元问题。你不需要同时处理所有未知数可以一个一个地解决心理压力和计算复杂度大大降低。处理重根效率高对于 k 重根传统待定系数法需要解一个包含 k 个方程的子系统通常还和其他方程耦合。而留数法通过求导公式可以按部就班地求出所有系数步骤清晰尤其适合编程实现。公式统一易于记忆单根和重根的公式形式统一都是某种极限重根公式是单根公式的导数推广。一旦理解原理公式很容易记住。数值稳定性好在计算机运算中对于求数值解的情况直接解线性方程组可能面临病态矩阵问题。而留数法通过极限和求导往往数值稳定性更好。5.2 留数法的局限性及注意事项对二次因式复根的直接性不足如前所述对于实系数二次分式(BxC)/(x^2pxq)留数法在实数域内没有像一次因式那样直接的“代入即得”的公式。通常需要借助复数或者结合其他方法如赋值法、比较系数法来求解 B 和 C。这是留数法在手工计算时的一个小短板。需要预先知道分母的准确因式分解留数法强依赖于分母Q(x)的根或因子。你必须先进行因式分解在实数域或复数域才能应用相应的公式。如果多项式难以分解留数法也无能为力。求导计算可能繁琐对于高阶重根需要计算高阶导数。虽然公式清晰但手工计算G(x)的 n 阶导数可能并不轻松尤其是G(x)本身是一个有理函数时。这时可能需要结合多项式除法简化G(x)或者使用莱布尼茨公式小心计算。“挖掉因子”后的函数Q1(x)在根处不能为零这是单根公式A P(a)/Q1(a)成立的前提。如果Q1(a)0说明a是更高重数的根你需要按照重根来处理。例如对于(x-a)^k的因子你“挖掉”(x-a)^m(m≤k) 后剩下的Q1(x)在xa处必须非零否则不能直接代入。5.3 我的实操心得与技巧混合使用效率最高在实际解题中我强烈推荐混合策略。对于一次因式无论是单根还是重根优先使用留数法快速搞定。对于二次因式可以先用留数法求出所有一次因式对应的系数然后将这些已知项移到等式另一边简化原方程再用赋值法或比较系数法求解二次因式的系数。这样能最大化利用各种方法的优势。化简G(x)是重根计算的关键在计算重根系数时第一步一定是将(x-a)^k * R(x)尽可能化简。通常能约掉(x-a)的若干次幂得到一个更简单的函数往往是多项式或分子分母次数更低的有理函数然后再对其求导。直接对复杂分式求导是灾难。善用多项式除法当G(x)是一个假分式分子次数≥分母次数时先做多项式除法将其化为一个多项式加上一个真分式。因为多项式求导极其简单而真分式部分在求极限时可能直接趋于0如果分母在xa处非零。验算必不可少无论用多聪明的方法算完后一定要简单验算。最快捷的验算是将你分解后的所有分式通分相加看是否等于原函数。可以选一个简单的x值不是任何根代入两边验证。例如在之前的例题中可以令x0计算原式R(0)和分解式在x0的值看是否相等。理解本质而非死记公式留数法的本质是“乘以因子消除奇异性再通过极限或求导提取系数”。当你理解了lim_{x→a} (x-a)R(x)为什么能给出A时你就能自己推导出重根情况下的求导公式而不是死记硬背。这种理解能让你在遇到变体问题时灵活应对。有理函数的部分分式分解是微积分、线性系统分析、微分方程求解等多个领域的基石性工具。掌握留数法就像获得了一把锋利的瑞士军刀它能让你在面对复杂分式时从繁琐的方程组求解中解放出来更加从容和精准。希望这篇长文能帮你彻底打通这个知识点。下次再遇到那种“积不出来”的有理分式积分时不妨试试留数法感受一下这种“优雅暴力”的美妙。
返回列表