用MATLAB复变实践函数展开及留数

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、函数的泰勒级数展开Taylor级数开展在复变函数中有很重要的地位,如分析复变函数的解析性等。函数)(xf在0xx点的Taylor级数开展为!3/)0)(0(!2/)0)(0()0)(0(0)(3^2^xxxfxxxfxxxfxxf在MATLAB中可由函数taylor来实现。taylor泰勒级数展开)(ftaylor返回f函数的五次幂多项式近似。),(nftaylor返回1n次幂多项式。),(aftaylor返回a点附近的幂多项式近似。这里的taylor展开式运算实质上是符号运算,因此在MATLAB中执行此命令前应先定义符号变量zxsyms,,否则MATLAB将给出出错信息!例1、求下列函数在指定点的Taylor级数展开式。(1)1/z2,z0=-1;(2)tan(z),z0=pi/4;(3)sinz/z,z0=0解:在Matlab中实现为:symsztaylor(1/z^2,-1)ans=3+2*z+3*(z+1)^2+4*(z+1)^3+5*(z+1)^4+6*(z+1)^5taylor(tan(z),pi/4)ans=1+2*z-1/2*pi+2*(z-1/4*pi)^2+8/3*(z-1/4*pi)^3+10/3*(z-1/4*pi)^4+64/15*(z-1/4*pi)^5taylor(sin(z)/z,10)ans=1-1/6*z^2+1/120*z^4-1/5040*z^6+1/362880*z^8从(3)的展开式可知彼知已z=0是sinz/z的可去奇点。例2、求zezf)(在0z处的泰勒级数symsz;f=exp(z);taylor(f,z,8)%z这里的8是展开的项数ans=1+z+1/2*z^2+1/6*z^3+1/24*z^4+1/120*z^5+1/720*z^6+1/5040*z^7taylor(f,z)%展开的默认值是6项ans=1+z+1/2*z^2+1/6*z^3+1/24*z^4+1/120*z^5下面的程序画出了指数函数ze及其泰勒展式的图形:subplot(1,2,1);z=5*cplxgrid(30);cplxmap(z,exp(z))title('复变函数e^z的图形')subplot(1,2,2);w=1;u=1;fork=1:15u=u.*z./k;w=w+u;endcplxmap(z,w)title('e^z泰勒展式的图形')图5复变函数ze及其泰勒展式的图形注意,在实轴的正方向上的曲面就是我们熟悉的实数的指数函数曲线的图像。ze的泰勒展式是kkzzke0!1图5中ze泰勒展式的图形是等式右边15项求和的结果。例2指数函数ze的泰勒级数展开式(多项对比)解:通过泰勒级数定理的计算可以容易求出znzennz0!,通过图形演示可以验证其展开式的正确性Matlab语句:figurez=5*cplxgrid(30);subplot(2,2,1);cplxmap(z,exp(z));title('原函数');f1=1;u1=1;fork=1:5u1=u1.*z;j=factorial(k);v1=u1./j;f1=f1+v1;endsubplot(2,2,2);cplxmap(z,f1);title('5项展开式')f2=1;u2=1;fork=1:9u2=u2.*z;j=factorial(k);v2=u2./j;f2=f2+v2;endsubplot(2,2,3);cplxmap(z,f2);title('9项展开式')f3=1;u3=1;fork=1:16u3=u3.*z;j=factorial(k);v3=u3./j;f3=f3+v3;endsubplot(2,2,4);cplxmap(z,f3);title('16项展开式')图形结果:图6例2指数函数多项对比图形从图形中可以看出当n越大,即泰勒级数展开项数越多,对原函数的拟合效果越好,同时,用泰勒级数来近似计算函数值越准确。但是,如果展开过高的项数,将导致程序运算过于复杂。该函数泰勒展开16项求和的效果就很好。3.洛朗级数展开例3求函数z11的级数展开式。解:复变函数z11是级数展开中常用的一个函数,这也是一个倒数函数,且在1z处不解析。根据泰勒级数定理和洛朗定理可知:当1z时,它的泰勒展开式是1110zzznn当1z时,它的洛朗展开式是1111zzznnM文件如下:m=30;r=(0:2*m)'/m;theta=pi*(-m:m)/m;z=r*exp(i*theta);z(find(z==1))=NaN;figure(1)cplxmap(z,1./(1-z));title('1/(1-z)');colorbar('vert');z1=z;z1(abs(z1)=1)=NaN;f1=1;u1=1;fork=1:100u1=u1.*z1;f1=f1+u1;endfigure(2)subplot(1,2,1);cplxmap(z1,f1);title('1/(1-z)的泰勒展开');z2=z;z2(abs(z2)=1)=NaN;f2=1./z2;u2=1./z2;fork=1:100u2=u2./z2;f2=f2+u2;endfigure(2)subplot(1,2,2);cplxmap(z2,-f2);title('1/(1-z)的洛朗展开')图8复变函数z11图形图9为z11的泰勒展式图形与洛朗展式图形。图9复变函数z11的泰勒展式与洛朗展式图形从图9中可以看出,泰勒级数展开图形和洛朗级数展开图形的结合就是对原函数z11的图形拟合。二、留数有理函数是一类能求出原函数的重要函数类,其依据就是它有部分分式展开。设s的有理分式为:nnnnnnnnasasasbsbsbsbsAsBsF221122110(1)式中niai,,2,1和njbj,,2,1的某些值可能为零。对有理函数的展开方法一般使用待定系数法,即通过解一组线形方程组来确定系数。MATLAB将按下式形式给出sF的部分分式展开式sknpsnrpsrpsrsF2211,(2)其中sk为余项。在MATLAB的行向量中,num和den分别表示sF分子和分母的系数,即num=[nbbb10],den=[naa11]MATLAB中有理函数部分分式展开语句命令为:[r,p,k]=residue(num,den),其中r是部分分式的系数数组,也是留数数组,p是极点数组,k是余项。例1求下列函数的部分分式展开式2450351026523911234234zzzzzzzzzF解:对该问题函数有MATLAB程序:num=[111395226];den=[110355024];[r,p,k]=residue(num,den)结果:r=1.00002.5000-3.00000.5000p=-4.0000-3.0000-2.0000-1.0000k=1则得:115.02335.2412450351026523911234234zzzzzzzzzzzzzF从结果中可以看出该函数的极点分别为:-4,-3,-2,-1;其对应的留数分别为:14Refs,5.23Refs,32Refs,5.01Refs如果sF中含重极点,则部分分式展开将包括下列诸项qjpsqjrjpsjrjpsjr112式中jp为一个q重极点。例2求下列函数的部分分式展开式32164zzzzF解:首先要将zF分母展开为多项式,matlab的信号处理工具箱中求卷积的函数conv可以用来进行多项式乘积,以免幂次数过高,手工展开不便。zF分母展开的M文件程序functionduoxiangshi(a,n)%a为分母多项式的系数,n为(n+2)次幂b=conv(a,a);fori=1:nb=conv(b,a);endb数据输入a=[1,1];n=1;duoxiangshi(a,n)结果:b=1331之后进行部分分式展开,MATLAB程序为num=[146];den=[1331];[r,p,k]=residue(num,den)结果;r=1.00002.00003.0000p=-1.0000-1.0000-1.0000k=[]所以可得3232131211164zzzzzzzF,本例的余项k为零。由结果可知,1z是该函数的3级极点,留数为11Refs。当函数有重极点时,对同一个极点0z存在多个展开系数r,这几个r中只有与相同极点中第一个对应的r是10zz的系数,即与极点0z对应的留数,其余的不是留数。当分母出现nnnpmasascsbs11的情况时,只需先对mbs和pcs分别展开,之后利用conv进行多项式乘积,再与nnnasas11的系数求和即可。当zf是有理分式的情形时,可以使用Matlab中的函数residue,巧妙的运用该函数,可以求出有理分式的留数。当zf的形式不是有理分式时,求函数在极点0z处的留数方法只能是先判断极点的重数,然后利用Matlab的符号运算功能进行计算。2.利用留数计算公式求留数例3:求出函数)2)(1(zzezfz在孤立奇点处的留数解:首先判断该函数的极点,11z和22z分别是zf的1重极点,再根据1lim!11Re01100nzfzzdzdnzfsnnnzz进行留数求解。在指令窗输入以下指令:symsz;f=exp(z)/((z-1)*(z-2));r1=limit(f*(z-1),z,1)r1=-exp(1)r2=limit(f*(z-2),z,2)r2=exp(2)例5:求5cos1)(zzzf在孤立奇点处的留数在指令窗输入以下指令:symsz;f=(1-cos(z))/z^5;r=limit(diff(f*z^5,z,4)/prod(1:4),z,0)r=-1/243.留数计算在实积分中的应用根据柯西留数定理,我们可以更巧妙的求解一类积分——闭圈积分。对于一些三角有理函数的积分以及与有理函数相关的两类广义积分,我们同样可以借助于留数来进行巧妙的求解。例6.求积分dzzzzzfC125这里C是圆周沿逆时针方向的2z。解:从该函数的表达式可以看出被积函数有两个孤立奇点01z和12z,且它们都在C的内部,可以求得该函数的两个留数1B和2B,再通过求和运算,可以求出该函数的积分。求解闭圈积分的M文件程序:functionliushu1(f,z0,n,Z)%f为所求函数,z0为极点,n为阶数,Z为闭圈范围symsz;P=diff((z-z0)^n*f,n-1);Q=limit(P,'z',z0);N=factorial(n-1);B=Q/N;ifz0=abs(Z)f0=2*pi*i*B;elseendf0在指令窗输入以下指令:symsz;f=(5*z-2)/(z*(z-1));z1=0;z2=1;n=1;Z=2;liushu1(f,z1,n,Z);liushu1(f,z2,n,Z)结果:f0=4*i*pi;f0=6*i*pi;因此,iiidzzzzzfC1064125。例7:求积分dxx114解:设114zzf,该函数的孤立奇点为014z,也就是-1的4个根。除此之外,在其余点都是解析的,我们可以知道-1的4个根

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功