
3.3 复函数的奇点、极点与留数
3.3.1 奇点与极点的计算
这部分内容传统意义下属于“复变函数”类课程。在介绍留数概念之前,先介绍复变函数解析的概念。
定义3-12 若函数f(z)在复平面的区域内各点处均为单值,且其导数为有限值,则称f(z)在复平面内为解析的(analytic),单值函数上不解析的点称为奇点(singularity)。使得f(z)分母多项式等于零的奇点称为极点(pole)。
定义3-13 假设z=a为f(z)函数上的奇点,若存在一个最小整数m使得乘积(z−a)mf(z)在z=a点处解析,则称z=a为m重奇点。
特别地,如果给定函数f(z)的分母是由多项式形式给出的,则可以直接由函数[p,m]=poles(f)计算出f(z)的极点,如果极点个数大于1,则函数的极点由列向量p返回,极点的重数由向量m返回。如果想得出某个区域(a,b)内的极点,则可以调用下面的语句[p,m]=poles(f,a,b)。
例3-21 试求出函数的极点与重数。
解 从给出的f(z)函数可见,其分母是由多项式形式给出的,所以可以直接调用poles()函数求取其极点与重数,得出p=[1,0]T,m=[1,3]T,表明函数有两个极点z=1和z=0,其重数分别为1和3,这个结果与我们观测到的是完全一致的。

例3-22 试求出函数f(z)=1/(z sin z)的极点。
解 可以尝试下面的命令,不过会给出提示Unable to determine poles(无法确定极点),说明不能求出极点,其原因是函数的分母不是多项式,所以不能用这样的方法求函数的极点或奇点。
>> syms z; f(z)=1/z/sin(z); [p m]=poles(f)
由简单的数学知识可知,函数的奇点为kπ,k为整数。
3.3.2 复变函数的留数
在复变函数中,如果存在奇点,人们可能期望为这样的点定义出有效的有限函数值替代该点不存在的函数值。这些用来替代的函数值可以考虑用其留数的值替代。本节将给出留数的定义与求解公式,并介绍基于MATLAB的实际计算方法。
定义3-14 若z=a为复数函数f(z)的单奇点,则函数在该奇点处的留数(residue)可以定义为

定义3-15 若z=a为函数f(z)的m重奇点,该点的留数定义为

利用MATLAB的符号运算工具箱求留数的方法很简单。假设已知奇点a和重数m,则用下面的MATLAB语句自然可以求出相应的留数。

例3-23 试求出例3-21中函数f(z)的留数。
解 对原函数的分析可见,z=0是三重奇点,z=1是单奇点,故可以直接使用下面的MATLAB语句将这两个奇点处的留数分别求出。可以得出,z=0处的留数为,z=1处的留数为F2=e−2 sin(π/3+1)。

基于上述考虑,可以编写出一个新的函数residuesym(),同时求取给定复变函数的极点、重数与留数,其调用格式为[r,p,m]=residuesym(f,a,b),其中描述极点感兴趣区间的a和b可以略去。

例3-24 试求函数f(z)=(sin z−z)/z6的留数。
解 乍看该函数很容易认定z=0为6重奇点,所以用下面的语句很容易就可以求出该点处的留数值,其值为1/120,而极点的重数实际上为m=3。

不严格地说,从k=1开始尝试,能够使得成立的最小的k就是奇点的重数,记作m。可以考虑k=2,可见导数F1为无穷大量,所以再试验更大的k值。对此例子来说,k的最小值为m=3,留数的值F2仍然为1/120。试凑更大的k值,如k=20,也不会改变求出的留数值,F3=1/120。

可见,若选择的n值大于或等于奇点的实际重数,则可以正确得到该函数的留数。在一般应用时如果确定不了重数,则可选择一个较大的n值来求取留数。
例3-25 试求出例3-22函数的留数。
解 由于该函数的分母不是多项式,所以例3-22曾指出,不能用poles()函数求出函数的极点。分析该函数,因为sin z在z=0点的收敛速度和z是一样的,显然z=0点为f(z)的二重奇点,这时,相应的留数可以用下面语句求出,c0=0。

进一步分析给定函数f(z),可以发现该函数在z=±kπ处均不解析,其中k为正整数,且这些点是原函数的单奇点,可以对一些k值进行试探,求出它们的留数,最后将结果归纳成所需的公式。

对向量k=[−4,4,−3,3,−2,2,−1,1],可以得出留数分别为
c =[−1/(4π),1/(4π),1/(3π),−1/(3π),−1/(2π),1/(2π),1/π,−1/π]
综上,可以归纳出Res[f(z),kπ]=(−1)k/(kπ)。
事实上,如果利用MATLAB的整型变量定义,可以直接得出一致的结果。

值得指出的是,这个问题不适合使用residuesym()函数,因为其分母不是多项式,不能得出所有的极点,所以必须由留数的定义直接求解。