1、基于 matlab 对复变函数与积分变量的研究姓名:徐庆学号:101044113单位:北京林业大学工学院自动化 10-1内 容 摘 要:复变函数与积分变量这门课程作为自动化专业的专业基础课程,对于后继课程有着极其重要的意义,但在学习过程中,很多量的求解需要繁琐的计算步骤与复杂的计算过程。同时,作为一种抽象的函数,复变函数一般来说很难用具体图像来描绘其信息。Matlab 作为一款功能强大的科学计算软件,利用一些编程语句可以很轻松的解决上述问题。例如,利用 matlab 可以对一个复常数进行基本的求模,求幅角,求实部、虚部的运算。更进一步地,还可以求复数的指数、对数,对复数进行三角运算。在对于复变
2、函数的研究中,可以求解复变函数的留数,并用来求复变函数的积分,对复变函数进行泰勒级数展开。在积分变换方面,可以对函数进行傅里叶变换、逆变换,进行拉普拉斯变换、逆变换。在编程化的语句中,可以对同一类的问题进行统一的解决。关键字:复变函数 积分变量 matlab 语句 运算结果目 录1 matlab 在复常数中的应用 31.1 Matlab 中对单个复常数的简单运算 .31.2 Matlab 中对于单个复常数进行复杂的运算 41.3Matlab 中对于两个复常数之间进行乘法、除法运算 .62.利用 matlab 对函数进行泰勒级数展开 73 matlab 在留数和积分中的应用 73.1 利用 ma
3、tlab 计算复变函数的留数 .73.2 在 matlab 中,利用留数定理求解复变函数的积分 84 利用 matlab 对信号做傅氏、拉氏变换 94.1 利用 matlab 对信号做傅里叶变换 94.2 利用 matlab 对信号做拉普拉斯变换 105 利用 matlab 绘制复变函数 .111 matlab 在复常数中的应用1.1 Matlab 中对单个复常数的简单运算在 matlab 中,生成复数的形式分为两种:代数形式(如 z=x+y*i)与指数形式(如z=r*exp(theta i),其中 r 为模长,theta 为幅角的弧度值) 。 【1 】 例如生成复常数3+4i,和 ,具体语句
4、如下: A=3+4*i,2*exp(i* )。此外,还可以对单个复常数进行24 4取模、去幅角、求共轭复数运算,调用形式如下,取模:abs(x) ,取幅角:angle( x) ,求共轭:conj(x)。举例,计算复数 z= 的模、幅角和共轭复数。11+i解:a=1/(1+i), abs(a), angle(a), conj(a)。1.2 Matlab 中对于单个复常数进行复杂的运算在 matlab 中可以利用一些语句完成对于单个复常数进行幂运算,指数、对数运算,三角运算。对复数进行幂运算的语句为 ,结果便返回 x 的 n 次幂;对复数进行指数运算、对数运算的语句为 exp(x),log(x),
5、结果便返回 x 以 e 为底的指数和对数。并且,利用语句 sin(x),cos(x)可以直接得出 x 的正弦、余弦值(求解其他三角函数值的公式见表一) 。举例如下:已知复数 a= ,求 、 、 、cos a。1+1 13 解:a=(1+i)/(1-i) a(1/3) exp(a) log(a) cos(a)。表一函数名 函 数 功 能 函数名 函 数 功 能)sin(x返回复数 的正弦函数值x)sin(xa返回复数 的反正弦值xco返回复数 的余弦函数值 co返回复数 的反余弦值)ta(x返回复数 的正切函数值x)ta(x返回复数 的反正切值xc返回复数 的余切函数值 c返回复数 的反余切值)
6、sec(x返回复数 的正割函数值x)sec(xa返回复数 的反正割值x返回复数 的余割函数值 返回复数 的反余割值)sinh(x返回复数 的双曲正弦值x)coth(x返回复数 的双曲余切值xco返回复数 的双曲余弦值 se返回复数 的双曲正割值)ta(x返回复数 的双曲正切值x)(cx返回复数 的双曲余割值x1.3Matlab 中对于两个复常数之间进行乘法、除法运算在 matlab 中,两个复数之间的乘法、除法可以通过“*” 、 “/”来实现。举例如下:已知 a=1+ i ,b=2 ,计算 a*b , 。3 24 解:a=1+sqrt(3)*i b=2*sqrt(2)*exp(pi/4*i)
7、a*b a/b。但需要注意的是, ()/5i 相当于()/(5*i),但不等于( )/5*i 。2.利用 matlab 对函数进行泰勒级数展开设函数 f(z)在区域 D 内解析,z 0 为 D 内一点,R 为 z0 到 D 的边界上各点的最短距离,则当|z-z0|R 时,f(z)可展开为幂级数 f(z)= ,其中 Cn= ,n=0,1,2,.=0(z0) 1!()(0)研究函数的泰勒级数对于模拟信号与数字信号之间的转化有着非常重要的作用。在平时求解时,利用常见函数的泰勒展开来推导,或者利用逐项积分与逐项求导来展开一般函数为最常见的方法,但这种方法能展开的函数有限,而且需要一定记忆的基础,因此还
8、是存在一些缺点。但是在 matlab 中,对任意函数做泰勒展开就变得非常容易,需要用到 taylor 函数,其中 taylor(f,z,n)表示返回 n-1 次幂多项式,taylor(f,z,a)表示返回 a 点附近的幂多项式近似,taylor(r,x)表示使用独立变量代替函数 findsym(f)。 3举例,求 f(z)= 在 z=0 的邻域内的泰勒展开。112解:syms z f=1/(1-z-z2) taylor(f,z,0)3 matlab 在留数和积分中的应用3.1 利用 matlab 计算复变函数的留数根据留数的定义,设 Z0 是解析函数 f(z)的孤立奇点,我们把 f(z)在 Z
9、0 处的洛朗展开式中负一次幂项的系数 C-1 称为 f(z)在 Z0 出的留数,记作 Resf(z),z,即 Resf(z),z=C-1。 【2】 在 matlab 中利用 residue()函数可以求出任意复变函数的孤立奇点以及在该点处的留数值。格式如下:r,p,k=residueb,a。其中 r 代表返回函数的留数,p 代表返回函数的孤立奇点,k 代表返回复变函数中两个多项式比值的部分分式展开的直接项,如果没有重根,则向量 B 和 A 为分子、)()()2()1()( sKnPsRsPsRAB分母以 s 降幂排列的多项式系数,留数返回为向量 R、极点在向量 P 的位置,直接项返回到向量 K
10、。极点的数目 。如果)()(1)(lengthletAlegthn,则直接项系数为空;否则)()(AlengthBlet。如果存在 M 重极点即有1)(letK则展开项包括以下形式)1()(mjPj mjPsRjsRjs )()()(2 ),(,KPRresiduAB有 3 个输入变量和 2 个输出变量,函数转换部分因式展开还为系数为 B 和 A 的多项式比的形式。 【4】 b 代表所要研究的复变函数的分子函数,在输入时可以按照降幂顺序只键入每一项的系数,a 代表所要研究的复变函数的分母函数,输入方法与 b 相同。举例:求下面函数的留数 f(z)= 。+22解:r,p,k=residue(1,
11、2,1,-1,0)因此 Resf(z),1= 3 Resf(z),0=-2 。3.2 在 matlab 中,利用留数定理求解复变函数的积分根据留数定理,设函数 f(z)在区域 D 内除有限个孤立奇点 z1,z2,z3,zn 外处处解析,C 是 D内包围各奇点的一条正向简单闭曲线,那么 。 【2】 我们知道,()=2=1(),当求得一个复变函数的留数之后,可以利用公式很容易得出复变函数的积分,在 matlab 中实现过程如下,试计算|=2(+1)r,p,k=residue(1,1,1,0)可见,在积分区域内函数有两个留数-1 和 1,因此结果为 2*(1-1)=0 。4 利用 matlab 对信
12、号做傅氏、拉氏变换4.1 利用 matlab 对信号做傅里叶变换人们在研究问题的时候,为了使问题的性质更清楚,更便于分析问题或者使问题的求解更方便,更便于解决问题,常常采用某种手段将问题进行转换,从另一个角度进行处理与分析,这就是变换。而对于傅里叶变换,是一种对连续时间函数的积分变换,即通过某种积分运算,把一个函数化为另一个函数,同时还具有对称形式的逆变换,它既能简化计算,如求解微分方程、化卷积为乘积等等,又具有非常特殊的物理意义,因而在许多领域被广泛地应用,而在此基础上发展起来的离散傅里叶变换,在当今数学时代更是显得尤为重要。【2】 在 matlab 中,F=fourier(f) 返回以默认
13、独立变量 x 对符号函数 f 的 Fourier 变换,默认返回 的函数。如果 ,则 fourier 函数返回 t 的函数 F=F(t)。定义 F( )int(f(x) ,-inf,inf)为对 x 的积分,F=fourier(f,v)以 v 代替默认值 的 Fourier 变换,且有 fourier(f,v)等价于 F(v)=int(f(x) , -inf,inf)。 【5】举例:求函数 f(t)=sin t 在- 到 的傅里叶变换。解:t=-pi:0.01:pi;a=sin(t);b=fft(a);subplot(211);plot(t,a);subplot(212);plot(b);4.
14、2 利用 matlab 对信号做拉普拉斯变换傅里叶变换在对信号进行分析时存在局限性,因而人们针对这些不足进行了改进,大体上分为两个方面,其一是提高它对问题的刻画能力,如窗口傅里叶变换、小波变换等;其二是扩大它本身的适用范围。我们知道,傅里叶变换是建立在傅里叶积分基础上的,一个函数除要满足狄氏条件外,一般说来还要在(- ,+ )上绝对可积,才有古典意义下的傅里叶变换,而绝对可积是一个相当强的条件,即使是一些简单的函数(如线性函数、正弦与余弦函数等)都不满足此条件,引入 函数后,傅里叶变换的适用范围被拓宽了许多,使得 “缓增”函数也能进行傅里叶变换,但对于以指数级增长的函数仍无能为力。另外,进行傅
15、里叶变换必须在整个实轴上有定义,但在工程实际问题中,许多以实际那 t 作为自变量的函数在 t0 时是无意义的,或者是不需要考虑的,因此在使用傅里叶变换处理问题时,具有一定的局限性。因此,人们定义了拉普拉斯变化:设函数 f(t)是定义在0,+ 上的实值函数,如果对于参数 s= +j ,积分 F(s)= 在复平面 s 的某一域内收敛,则称 F(s)为 +0 ()f(t)的拉普拉斯变换。 【2 】在 matlab 中,利用 Laplace 函数可以很方便的求解一个信号的拉普拉斯变换。定义变量 t后,定义关于 t 的时间函数 f(t),利用语句 laplace(f),可以得出所求函数的拉普拉斯变换。举
16、例:试求函数 f(t)=sin t * 的拉普拉斯变换。解:syms t;f =sin(t)*exp(t);laplace(f)ans =5 利用 matlab 绘制复变函数Matlab 软件很重要的一个功能便是绘制函数图象,那么复变函数作为一种抽象的函数,能否利用 matlab 绘制出来呢?我们以函数 y=i +1 为例绘制一下这个函数的图象。2解:a=i;b=0;c=1;ymin=input(ymin: );ymax=input(ymax: );x1=0;x2=0;y=0;z1=0;z2=0;r1=0;r2=0;cp=c;for q=ymin:.01:ymaxc=cp-q;if q=ymi
17、ny(1)=q;r1=(-b+(b2-4*a*c).5)/2/a;r2=(-b-(b2-4*a*c).5)/2/a;x1(1)=real(r1);x2(1)=real(r2);z1(1)=imag(r1);z2(1)=imag(r2);elsey(length(y)+1)=q;r1=(-b+(b2-4*a*c).5)/2/a;r2=(-b-(b2-4*a*c).5)/2/a;x1(length(x1)+1)=real(r1);x2(length(x2)+1)=real(r2);z1(length(z1)+1)=imag(r1);z2(length(z2)+1)=imag(r2);endendp
18、lot3(x1,z1,y,b:,LineWidth,2);hold on;plot3(x2,z2,y,b:,LineWidth,2);hold off;xlabel(x);ylabel(z);zlabel(y);grid;【5 】总结:复变函数与积分变换这门课程对于后续学习信号处理时具有非同寻常的意义,matlab 作为一款强大的数学处理软件,可将复杂的数学问题利用程序语句简单化。将matlab 与复变函数与积分变换结合起来,可以更加方便、快捷地解决更多实际中的问题。因此,在今后的研究中,我们要学会更好地利用这两种工具并将它们很好的结合起来,这样才会使研究更加简单,解决更多实际应用中的问题。引用文献:【1 】 Matlab 在复变函数中的应用 华中科技大学数学系【2 】 复变函数与积分变换 华中科技大学数学系【3 】 安庆师范学院学报 2003 年第一期 保形变换在 matlab 环境下的设计与实现【4 】 昌吉学院学报 2006 年第三期 用 matlab 求留数【5 】 内蒙古民族大学学报:自然科学版 2009 年第二期 基于 matlab 的图象处理系统的设计与实现