资源描述
(完整版)matlab复变函数画图形
第四篇 计算机仿真
第二十一章 计算机仿真在复变函数中的应用
基于MATLAB语言的广泛应用,我们介绍的计算机仿真方法主要立足于对MATLAB 语言的仿真介绍,而其它的数学工具软件(MATHEMATIC,MATHCAD,MAPLE)的仿真方法是类似的.
本章将重点介绍使用MATLAB进行复数、复变函数的各类基本运算以及定理的验证;并介绍仿真计算留数、积分的方法;以及复变函数中Taylor级数展开,Laplace 变换和Fourier变换.
21。1 复数运算和复变函数的图形
21。1。1 复数的基本运算
1复数的生成
复数可由语句z=a+b*i 生成,也可简写成z=a+bi;另一种生成复数的语句是z=r*exp(i*theta),其中theta是复数辐角的弧度值, r 是复数的模.
2复矩阵的生成
创建复矩阵有两种方法.
(1)一般方法
例 21.1。1创建复矩阵的一般方法.
【解】仿真程序为
A=[3+5*I -2+3i i 5—i 9*exp(i*6) 23*exp(33i)]
%运行后答案为A =3。0000+5.0000i -2。0000+3.0000i 0+1。0000i
5。0000-1。0000i 8。6415—2。5147i -0。3054+22。9980i
(说明: %后为注释语句,不需输入)
(2)可将实、虚矩阵分开创建,再写成和的形式
例 21。1.2 将实、虚部合并构成复矩阵
【解】仿真程序为
re=rand(3,2);
im=rand(3,2);
com=re+i*im
%运行后答案为 com = 0.9501+0.4565i 0。4860+0。4447i
0.2311+0.0185i 0。8913+0。6154i
0.6068+0。8214i 0。7621+0。7919i
21。1。2 复数的运算
1 复数的实部和虚部
复数的实部和虚部的提取可由函数real和 imag 实现.调用形式如下:
real(z) 返回复数 z 的实部;
imag(z) 返回复数 z 的虚部。
2 共轭复数
复数的共轭可由函数conj实现.调用形式为:conj(z) 返回复数 z 的共轭复数.
3 复数的模与辐角
复数的模与辐角的求取由函数 abs 和angle实现.调用形式为:
abs(z) 返回复数 z 的模;
angle(z) 返回复数 z 的辐角.
例 21。1.1求下列复数的实部与虚部、共轭复数、模与辐角.
(1); (2); (3); (4).
【解】 a=[1/(3+2i) 1/i—3i/(1—i) (3+4i)*(2—5i)/2i i^8-4*i^21+i]
%a =0。2308 - 0.1538i 1.5000 - 2.5000i —3.5000 -13.0000i 1.0000 — 3.0000i
real(a)
%ans = 0.2308 1。5000 —3.5000 1.0000
(注明:凡ans 及其后面的内容均不需输入,它是前面语句的答案.本句ans 是real(a)的答案)
imag(a)
%ans = -0。1538 -2。5000 —13。0000 —3。0000
conj(a)
%ans =0.2308 + 0.1538i 1.5000 + 2。5000i —3。5000 +13。0000i 1.0000 + 3.0000i
abs(a)
%ans = 0。2774 2。9155 13。4629 3.1623
angle(a)
%ans =-0。5880 -1。0304 -1。8338 -1。2490
4 复数的乘除法
复数的乘除法运算由“*”和“/”实现.
5 复数的平方根
复数的平方根运算由函数 sqrt 实现.调用形式如下:
sqrt(z) 返回复数 z 的平方根值
6 复数的幂运算
复数的幂运算的形式是 z^n,结果返回复数 z 的 n 次幂.
7 复数的指数和对数运算
复数的指数和对数运算分别由函数 exp 和log实现.调用形式如下:
exp(z) 返回复数 z 的以 e 为底的指数值;
log(z) 返回复数 z 的以 e 为底的对数值。
例21.1.2 求下列式的值.
(1); (2).
【解】log(-10)
%ans= 2。3026 + 3。1416i
exp(pi/2* i)
%ans =0.0000+ 1.0000i
图21.1 复变函数的图形
21.1。3 复变函数的图形
1。整幂函数的图形
例 21.1。6 绘出幂函数 的图形。
【解】 z=cplxgrid(30);
cplxmap(z,z.^2);
colorbar('vert’);
title(’z^2’)
%(如图21。1所示)
图21.2 复变函数的图形
2. 根式函数的图形
例 21.1。7 绘出幂函数 的图形
【解】 z=cplxgrid(30);
cplxroot(2);
colorbar('vert');
title('z^{1/2}’ ) %(如图21.2)。
3。 复变函数中对数函数的图形
例 21.1.3 绘出对数函数的图形. 图21.3 对数函数
【解】
z=cplxgrid(20);
w=log(z);
for k=0:3
w=w+i*2*pi;
surf(real(z),imag(z),imag(w),real(w));
hold on
title(’Lnz')
end
view(—75,30) %(如图21.3)
例 21。1.4 计算机仿真编程实践:
若对应为的根,其中且取整数.试用计算机仿真编程验证下列数学恒等式 成立.
【解】仿真程序
n=round(1000*random('beta’,1,1))+1
% n=input('please enter n=’)
su=1;
sum=0;
for s=1:n
N(s)=exp(i*2*s*pi/n);
end
for k=1:n
for s=1:n
if s~=k
su=1/(N(k)-N(s))*su;
end
end
sum=sum+su;
su=1;
end
sum
%仿真验证结果为:n =735 sum =2.2335e-016 —5.1707e—016i
其中n的值为随机产生的整数,可见其和的实部和虚部均接近于零。
另一篇:
matlab表现复变函数(四维)的方法是用三维空间坐标再加上颜色,类似于地球仪用颜色表示海洋与高山。
单值函数:单叶
多值函数:多叶
matlab使用下列函数进行复变函数的做图:
cplxgrid:构建一个极坐标的复数数据网格
z=cplxgrid(m); %产生(m+1)*(2*m+1)的极坐标下的复数数据网格.最大半径为1的圆面
cplxmap:对复变函数做图
cplxmap(z,f(z),[optional bound]) %画复变函数的图形,可选项用以选择函数的做图范围
cplxmap做图时,以xy平面表示自变量所在的复平面,以z轴表示复变函数的实部,颜色表示复变函数的虚部
cplxroot:画复数的n次函数曲面
cplxroot(n) %画复数n次根的函数曲面,复数为最大半径为1的圆面
cplxroot(n,m) %画复数n次根的函数曲面,复数为最大半径为1的圆面,为(m+1)*(2m+1)的方阵
例1:画复数z^3的图形
z=3*cplxgrid(30);
cplxmap(z,z。^3);
colorbar
其结果如图
可见,自变量z的取值在水平面的半径小于3的园内。
cplxmap做图时,以xy平面表示自变量所在的复平面,以z轴表示复变函数的实部,颜色表示复变函数的虚部
由于函数为单页的,所以函数是单值的
例2:画复数(z—0。5)^0.5的图形
仿照cplxroot函数的程序,编程如下
m=20;
n=2;
r=(0:m)'/m;
theta=pi*(-m:m)/m;
z=r*exp(i*theta)—0。5;
w1=z。^(1/n);
subplot(2,2,1),surf(real(z),imag(z),real(w1),imag(w1));
colorbar
w2=w1。*exp(i*2*pi/n);
subplot(2,2,2),surf(real(z),imag(z),real(w2),imag(w2));
colorbar
subplot(2,1,2)
surf(real(z),imag(z),real(w1),imag(w1));
hold on
surf(real(z),imag(z),real(w2),imag(w2));
colorbar
如果仅使用 w1=z.^(1/n);,则所得结果为图(2,2,1)
可见,对于多值函数,MATLAB仅仅是对其主值进行计算。
例3:复变函数1/(1—z)的级数展开
复变函数1/(1-z)是级数展开中常用的一个函数.
当abs(z)〈1时,它的泰勒展开式为
1/(1—z)=求和(k=0,+无穷)z^k
当abs(z)〉1时,它的罗朗展开式为
1/(1—z)=求和(k=—无穷,-1)z^k
泰勒展开与罗朗展开的区别
在复变函数里面,一些函数无法被展开为泰勒级数,因为那里存在一些奇点。但是如果变量x是负指数幂的话,我们仍然可以将其展开为一个级数,这就是洛朗级数。
从形式上看,泰勒级数是只含正幂项和常数项。洛朗级数不仅包含了正数次数的项,也包含了负数次数的项。有时无法把函数表示为泰勒级数,但可以表示为洛朗级数。
可以认为泰勒级数是洛朗级数的一种特殊形式
m=30;
r=2*(0:m)'/m;
theta=pi*(-m:m)/m;
z=r*exp(i*theta)-0.5;
z(find(z==1))=nan;
z1=z;
z1(abs(z1)>=1)=nan;
w1=1;u1=1;
for k=1:100
u1=u1.*z1;
w1=u1+w1;
end
subplot(2,2,1)
cplxmap(z1,w1)
colorbar
z2=z;
z2(abs(z2)<=1)=nan;
w2=1./z2;u2=1./z2;
for k=1:100
u2=u2./z2;
w2=u2+w2;
end
subplot(2,2,2)
cplxmap(z2,—w2)
colorbar
subplot(2,2,3)
cplxmap(z,1./(1-z))
colorbar
temp1=caxis;
subplot(2,2,4)
cplxmap(z1,w1)
hold on
cplxmap(z2,—w2)
caxis(temp1)
axis([min(min(real(z))),max(max(real(z))),min(min(imag(z))),max(max(imag(z))),min(min(real(1./(1—z)))),max(max(real(1./(1—z))))])
colorbar
图(2,2,1)为泰勒展开,图(2,2,2)为罗朗展开
图(2,2,3)为matlab计算结果,图(2,2,4)为泰勒展开和罗朗展开的综合结果
展开阅读全文