本文中所有不定积分都省略常数项。不同小节的相同字母没有关系。
部分分式分解
一般微积分书上都会讲有理函数的部分分式分解,以及如何用这种方法算有理函数的不定积分。方法如下:假设
是给定的有理函数,其中
是多项式。先用多项式除法,令
,其中
是多项式,
,这样
。
的不定积分很好求,所以只需考虑
。由代数基本定理,在
上分母可以因式分解成
的形式,其中
。然后通过解线性方程组可以把部分分式分解
中的系数都算出来。下面对每一项做不定积分:如果分母是一次多项式的幂,有
如果分母是二次多项式的幂,有递推式(
)
以及
的情况
但是,实际操作中这种方法并不好用。主要问题是对于一个实际问题,给定的
,分母的多项式可能没有根式解,或者即使有根式解也很难运算。比如
虽然很明显等于
,它却不能用上面的方法计算。还有,如果某个多项式方程你算出来根式解等于
,你能对它进行正确的运算吗(比如,做除法):
所以,我们需要更好的方法。
无平方因子分解
《微积分学教程》中讲了一种把不定积分的有理函数部分分离出来的方法。注意到由递推式(2)可得
其中
是多项式,
是常数,而由(3)式,最后一个积分不包含有理部分。可以把所有有理部分加起来,把剩下的积分也加起来,得到
,其中
,并且
。算出这个分解式不需要对
因式分解,因为
。得到
以后就可以用解线性方程的方法算出
。
下面讲另一种算法,虽然速度比上面的方法慢,但它更容易推广到多元函数的情况(以后会讲)。首先,我们把多项式
分解为无平方因子的多项式的乘积:
。这个分解可以如下计算:显然有
,所以
,可得
,这样
。对
递归执行这方法即可依次算出
。
可以用多项式除法从
里去掉一个多项式,使得剩下的有理函数满足
、
。如果
,那么
本身就是无平方因子的多项式,由部分分式展开,
的不定积分就是一些对数函数之和,不是有理函数。下面假设
。设
,那么
,所以可以用扩展Euclid算法找两个多项式
使得
,其中
。这等价于
。这样我们就从
中分离出了一个有理函数的导数,剩下
还未处理。递归使用这个方法不断降低分母的次数,就能把
的不定积分中有理函数的部分去掉。
这个算法有一种优化。还是设
。如果
,那么
已经是无平方因子的多项式了。否则,令
,
,
,
,就有
是多项式。用因式分解容易验证
,所以
。因此可以用扩展Euclid算法找两个多项式
使得
。这等价于
。为了递归执行这个算法,我们不需要算出
的整个无平方因子分解,因为
;对分母
,多项式
以及
都是我们已经算出来的。这个递归实现中每次操作对分母降低的次数比前一段的算法每次操作降低的次数多很多,所以效率更高。这个方法还有一个优点就是它可以直接推广到任意UFD的情况,而解线性方程组的方法只适用于一个域。
例题1:计算
。
第一次操作:
,
,
,
,
。扩展Euclid算法给出
,
,所以分离出第一个有理函数是
。
第二次操作:
,
,
(结束),
。扩展Euclid算法给出
,
,分离出第二个有理函数是
。
所以
。
最小域扩张
现在我们还剩下一个有理函数
,其中
,且
是无平方因子多项式。如果在复数域上部分分式分解,就有
。
当然,我们不能这样计算,因为这些
可能表示不出来。所以现在的问题是如何找一个最小的域扩张使得不定积分可以在这个扩张中表示出来。例如,不定积分
的分母没有根式解,但在扩张
中不定积分可以写成初等函数。
注意到这些系数
可以用根
的有理函数表示出来:在(4)式中两边乘
,再令
,就得到
。实际上还可以用多项式表示:因为
,可以用扩展Euclid算法找两个多项式
使得
,代入
即得
。
先考虑一个简单情况:
在域
上不可约,其中
包含所有的系数
。设域扩张
包含所有的根
。对每个根
都存在同构
使得
。把这个同构应用到等式
上可得
,所以每个系数都相等。这样就有
。
对于一般情况,如果不定积分能被域
中的初等函数表示,那么
必须包含所有系数
(因为可以把多项式在复数域中分解,得到一个有这些系数的部分分式分解,而部分分式分解(4)是唯一的)。这些系数是多项式
的根(
是常数)。令
为最小的包含这个多项式所有根的域,那么在
中
可以分解为
的乘积,并且在这些多项式上
的部分分式分解是
,因此不定积分是
。
注意这个求和是对
的不同根求和(也就是对
的根求和)。另一方面,如果我们算不出
的根,那么我们就表示不出
的不定积分。
然而
的根有可能很复杂,导致这个方法里的gcd很难算,所以必须找一种办法避免这个操作,直接得出gcd值的简单表示(就像
形式的表示比
形式的表示简单)。
结式子矩阵
现在我们不想算(5)式中包含
的表达式
,但可以把
替换为变量
然后在UFD
中计算
。这里和域中不一样,因为不能在
中做除法,每次多项式除法时必须先乘上一个系数:
,其中
是
的首项系数,
。所以我们的Euclid算法是带系数的:
,其中
,并且
,其中
代表“差一个常数”(也就是
)。把这个变成扩展Euclid算法,就能找到多项式
以及系数
使得
,其中
、
,
。这关系可以看成关于
系数的线性方程组,利用Cramer法则可作出如下定义:(下文中所有未定义变量,例如
,都设为0)
设
。定义
展开最后一行可得
,其中
,
。如果把
替换成它们的展开形式,可得
(
习题:为什么
从0开始?
),其中
从此式可看出
,而上面的
是结式的推广。
下面我们来研究
在Euclid算法中的变化。设
,其中
,
,
,
,
,
。方程
写成矩阵形式就是(未定义的变量,例如
,设为0)
可以适当减少一些行,使左边这个矩阵的第一列更像(6)式中包含
那些列:
对
成立。这方程把左边的矩阵第一列(也就是(6)式中矩阵的第
列)表示成了方程里出现的其它列(一个包含
的列和(6)式中
个包含
的列)的线性组合,可以用这些线性组合替换(6)式里所有的包含
的列,从而把
表示成一个包含
的行列式:
我们可以确定前面的
实际上等于
,但我们现在不需要。从这行列式可得出
。
代入Euclid算法,就有
,以及对于所有其它
都有
。
下面设
和
中
的次数更高的那个多项式为
,另一个为
,然后利用Euclid算法得到
。设
,
为
的
重根,
。因为
,所以
。并且,存在
使得
。这样在
中
就整除
。对
都有
,所以在
中
,因此
;不等式取等号时有
。
假设
。设
为满足
、对任意
有
的环同态。自然地定义环同态
满足
。显然有
、
。这样由
的行列式定义就有
。设
为对
在
中做Euclid算法得到的最后一个多项式,那么
是
次多项式,由(7)式可得
。因此
,我们推出
。由(7)式,存在
使得
。这个
是唯一的,因为
是单调递减的。设从
中除掉所有系数的gcd得到多项式
,
满足
、
,等式两边应用
可得
。因为
所有系数的gcd等于1,
,所以
。
这样就借用
中的Euclid算法计算出了
对应的多项式,而无需在Euclid算法中带
计算。
例题2:计算
。
这里分母是无平方因子多项式。用Euclid算法计算出
对此多项式进行无平方因子分解,得
。由上面的讨论,我们应该找
的Euclid算法中次数为3的多项式。做Euclid算法:
第1步:
,其中
。
第2步:
,其中
这是上面讨论中的
。这多项式所有系数的gcd等于
,除掉之后我们得到
。代入
,其中
,可得
。所以
Laurent级数
上面的方法给出了一个最小的可以表示出不定积分的域扩张。如果不需要追求这个“最小”,有一种简单方法在复数域中计算一个给定有理函数
的部分分式分解,也就是求出
中的多项式
,其中
是无平方因子分解,
。
设
,多项式
。对
求导可得
,所以在
点有
。
设多项式
、
、
,那么只需要求
的Laurent级数。对
求导可得
,其中
是多项式。
代入
,
得
这里分子、分母的多项式我们都已经能算出来了。为了把这个变成多项式的形式,可用扩展Euclid算法求出满足
、
的多项式
,再令
即可。
在
点的Laurent级数就是
总结
- 对于简单的积分,比如分母的因式分解已经给定的情况,用部分分式分解算积分效率最高。
- 如果分母没有明显的分解,可以先从不定积分里分出一个有理函数,把分母降低次数到无平方因子多项式。
- 如果仍然没有明显的分解,可以先找出能表示不定积分的最小域扩张。
- 下面可以用Euclid算法把不定积分表示成一个对
的所有根的求和式,里面涉及的多项式都可以计算。
- 有一个简单方法可以直接算出在复数域中的部分分式分解,无需因式分解。
习题
1. 计算
2. 计算
参考文献
- Г. М. Фихтенго́льц, Курс дифференциального и интегрального исчисления.
- E. Hermite, Sur l'intégration des fractions rationelles. Nouvelles Annales de Mathématiques (2eme série), 11:145–148, 1872.
- D. Mack, On rational integration. Research Report UCP-38, Department of Computer Science, University of Utah, 1975.
- B. M. Trager, Algebraic factoring and rational function integration. Proceedings of SYMSAC'76, 219–226, 1976.
- D. Lazard and R. Rioboo. Integration of rational functions: Rational computation of the logarithm part. Journal of Symbolic Computation, 9:113–116, 1990.
- M. Bronstein and B. Salvy. Full partial fraction decomposition of rational functions. Proceedings of ISSAC'93, 157–160, 1993.
- W. S. Brown and J. F. Traub. On Euclid's Algorithm and the Theory of Subresultants. Journal of the ACM, 18(4):505–514, 1971.