部分分式展开法
Posted ljxtt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部分分式展开法相关的知识,希望对你有一定的参考价值。
部分分式展开法
引入
从高中学习数列的时候,我们曾经学过裂项法来将一个多项式分式裂开成多个一次分式相加的形式。
例如这样:
[
dfrac{1}{(x - 1)(x + 1)} =dfrac{1}{2}( dfrac{1}{x - 1} - dfrac{1}{x + 1})
]
当分母的次数是二次的时候,我们能比较容易地猜出来答案是怎么样的。但如果式子是这样的:
[
f(x) = dfrac{1}{(x - a_0)(x - a_1)cdots(x - a_n)}
]
分母次数大于 (2) ,或者不给出具体的 (a_i) 的时候,我们就很难通过猜根的方法来得到答案了。
观察
为了得到一个通用的裂项方法,我们先来观察一下式子:
[
f(x) = dfrac{1}{(x - a_0)(x - a_1)cdots(x - a_n)} = dfrac{b_0}{x-a_0} + dfrac{b_1}{x-a_1} + cdots+dfrac{b_n}{x-a_n}
]
其中 (b_i) 都是常数。
显然,我们的目标是得到一系列的系数 (b_0, b_1, cdots b_n) ,那我们要怎么去得到系数呢?
如果我们把系数 (b_i) 当成一系列的未知数,那么其实这是不是一个 (n) 元方程?分别代入 (n) 个不同的 (x) 的值,就可以得到 (n) 个不同的方程,组成一个 (n) 元一次方程组。
不过,难道我们要用高斯消元去解这 (n) 个方程???我们再仔细思考一下,什么样的方程组比较好解?
假如,当每个方程都只含一个变量 (b_i) 的时候,就是一个普通的一元一次方程,通过移项,我们就可以得到 (b_i) 的值了。
那么接下来的关键,就是找到一个特殊的值 (x_i) ,去消去 (b_i) 外的其他的 (b) 的值了。
解决
为了在代入 (x_i) 的值的时候消去除 (b_i) 以外的 (b) 的值,我们可以先保证 (b_i) 的系数里没有 (x) 。
那么这就启发我们,可以两边乘以 (b_i) 的系数的分母 (x- b_i) 。
当 (i = 0) 时,式子两边同时乘以 (x - b_0) ,那么便有如下的式子:
[
egin{align}
dfrac{1}{(x - a_0)(x - a_1)cdots(x - a_n)} &= dfrac{b_0}{x-a_0} + dfrac{b_1}{x-a_1} + cdots+dfrac{b_n}{x-a_n} \dfrac{1}{(x - a_1)(x - a_2)cdots(x - a_n)} &= b_0 + dfrac{b_1}{x-a_1}(x-a_0)+ dfrac{b_2}{x-a_2}(x-a_0) + cdots+dfrac{b_n}{x-a_n}(x-a_0)
end{align}
]
我们再令 (x = a_0),就可以得到其实 (b_0) 的值:
[
b_0 = dfrac{1}{(a_0 - a_1) (a_0 - a_2) cdots (a_0 - a_n)} = prod_{i = 1}^ndfrac{1}{a_0 - a_i}
]
同理,当我们要求 (b_i) 的时候,就有:
[
b_i = prod_{j = 0, j
e i}^ndfrac{1}{a_i - a_j}
]
至此,我们就可以很轻易地得到任意 (b_i) 的值了。这就是部分分式展开式法。
注意
分子系数不为1
有时候,我们会遇到要裂项的式子里,分子不是 (1) ,也就是要裂项的式子如下:
[
f(x) = dfrac{g(x)}{(x - a_0)(x - a_1) cdots (x - a_n)}
]
其中 (g(x)) 为一个多项式( (g(x)) 次数要低于 (n) )。
其实通过上面的手法,我们可以知道,通过一样的手法,来得到答案。但为什么我要单独拿出来说呢?
因为这里涉及到一个可不可以用部分分式展开的点,也就是我上面加粗的内容。
试想一下,我们要得到一个这样的答案:
[
dfrac{b_0}{x-a_0} + dfrac{b_1}{x-a_1} + cdots+dfrac{b_n}{x-a_n}
]
通过通分,我们可以很明显地看到,分子的次数最高就是 (n - 1),也就是当 (g(x)) 的次数高于 (n - 1) 的时候,我们就不可用这个方法来得到 (b_i) 了。
分母拆不成一次项相乘
由代数基本定理我们可以知道,任意一个多项式,都可以拆分为多个一次或者二次项相乘。所以我们只需要考虑分母为二次的时候的情况就行了。
对于二次项来说,分为三种情况:
- 有两个不同实数解
- 有两个共轭复数解
- 有两个相同实数解
对于1,2两种来说,我们可以用同样的方法来得到上面的答案。但是对于第三种来说,就拆不成两个一次的形式相加了。我们需要转变一下裂项的结果。
假如二次项如下:
[
dfrac{p(x - a)+q}{(x - a)^2}
]
那么通过拆分,我们可以得到:
[
dfrac{p}{x - a} + dfrac{q}{(x - a)^2}
]
也就是说,当分母里含有一个有两个相同实数解的二次项的时候,需要将二次项拆开成如上的形式。
练习
- (dfrac{x + 4}{x^3 + 3x^2+2x})
- (dfrac{x + 3}{(x + 1) ^3(x + 2)})
小技巧:求得各个系数后,可以令 (x) 等于一个还没算过的值进行校验等式两边是否相等。
(习题出自信号与《线性系统分析第四版》(吴大正主编))
答案
- (dfrac{2}{x}-dfrac{3}{x + 1} + dfrac{1}{x + 2})
- (dfrac{2}{(x + 1) ^3} - dfrac{1}{x + 1}+dfrac{1}{x + 1}-dfrac{1}{x + 2})
------------恢复内容结束------------
以上是关于部分分式展开法的主要内容,如果未能解决你的问题,请参考以下文章
《DSP using MATLAB》Problem 4.24
《DSP using MATLAB》Problem 4.26
C#,码海拾贝(06)——连分式(Continued Fraction)曲线插值算法,《C#数值计算算法编程》源代码升级改进版