分享

MATLAB笔记之复数以及基本复数函数二维视角(2d)图形绘制

 星光闪亮图书馆 2022-05-24 发布于江苏

                     

所谓二维视角/俯视角,都指的是复数在复平面的表现形式——而四维属性,采用复数实部作为颜色选值来实现~

一般复数的2d图形绘制

以下代码可以直接复制实现~

x = linspace(-1,1,30); % linspace的作用——依次获取等间隔的第一个参数到第二个参数的一系列值,个数由第三个参数决定(返回一个行向量)——闭区间
y = linspace(-1,1,30); % 这个取值,只会影响格子大小而已
[x,y] = meshgrid(x,y); % meshgrid返回一个二维网格的矩阵数据
z = x + y*1i; % 说明一下,在matlab中,你输入*i或者*1i,最后再用的时候,其实他也不过是按照实部虚部作图/计算而已
figure;
% 我们先画一下当前的三维复数图
mesh(x,y,imag(z),real(z)); %参数第一第二分别是x,y值,其次,是我们需要显示的复数的虚部作为z值,以实部作为颜色取值
axis([-3,3,-3,3]); % 这个函数方法设置可以保证z轴默认为零,和图形打开时默认的x,y轴长度
% axis,使得我们能够从二维视角观看复数图形
grid off;% 取消栅格(就是那些格子)
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % set设置属性中,第一个参数为对象,也就是对谁设置属性,其后都是键对值
% 也就是,'xtick’,(-3,3),为一个键对值
% 添加标题
title("复数四维·俯角观查图像");
% 添加坐标轴标签——就是给坐标轴名字
xlabel("实部");
ylabel("虚部");
box off;
% 取消边框

效果:
在这里插入图片描述
在这里插入图片描述

一般复数的平移图形~(即一个复数加另一个复数实现在复平面的平移)

原理是:mesh的反复画图(只改变复平面x,y的值,这里不要改变后两个参数哦)——将几次平移的图形保留下来

x = linspace(-1,1,30); % linspace的作用——依次获取等间隔的第一个参数到第二个参数的一系列值,个数由第三个参数决定(返回一个行向量)——闭区间
y = linspace(-1,1,30); % 这个取值,只会影响格子大小而已
[x,y] = meshgrid(x,y); % meshgrid返回一个二维网格的矩阵数据
z = x + y*1i; % 说明一下,在matlab中,你输入*i或者*1i,最后再用的时候,其实他也不过是按照实部虚部作图/计算而已
figure;
% 我们先画一下当前的三维复数图
mesh(x,y,imag(z),real(z)); %参数第一第二分别是x,y值,其次,是我们需要显示的复数的虚部作为z值,以实部作为颜色取值
axis([-3,3,-3,3]); % 这个函数方法设置可以保证z轴默认为零,和图形打开时默认的x,y轴长度
% axis,使得我们能够从二维视角观看复数图形
grid off;% 取消栅格(就是那些格子)
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % set设置属性中,第一个参数为对象,也就是对谁设置属性,其后都是键对值
% 也就是,'xtick’,(-3,3),为一个键对值
% 添加标题
title("复数四维·俯角观查图像");
% 添加坐标轴标签——就是给坐标轴名字
xlabel("实部");
ylabel("虚部");
box off;
% 取消边框
% 需要平移就以下操作即可(既然是平移,是二维属性变化,所以设置x,y值就可以了,其它值应该保持不变)
z1 = z +(3+3*1i); % 平移第一次
mesh(real(z1),imag(z1),imag(z),real(z)); % 移动一下看,不然,可能一个视图看不到
%也可以滚动鼠标滑轮,往下滑动放下视图,不过可能需要先点击一下图片
hold on; % 保留图形,不知道之后还有没有,所以每一次后边加一个
z2 = z +(3+(-3)*1i); % 平移第二次
mesh(real(z2),imag(z2),imag(z),real(z));
hold on;
z3 = z +((-3)+3*1i); % 平移第三次
mesh(real(z3),imag(z3),imag(z),real(z));
hold on;
z4 = z +(-3+(-3)*1i); % 平移第四次
mesh(real(z4),imag(z4),imag(z),real(z));
hold on;

效果:
在这里插入图片描述

补充几个复数以及复数函数的俯视图

复数的余弦函数的俯视图像(cos(z))

% cos(z)的图像
clear,clc;
x = linspace(-pi,pi*2/5,100); % cos(z),与z的开角有关的是x
y = linspace(-pi,pi,100); % y控制伸展
[x,y] = meshgrid(x,y);
z = x + y.*1i;
% 取前面的z值为基础,得到一个新的复数
% zcs = cos(z); % 注意哦,要点乘,不然会出现和值,而不是矩阵数据
zcs = (exp(1i.*z)-exp(1i.*(-z)))./2;
% figure,新建一个图形界面显示
figure;
mesh(real(zcs),imag(zcs),imag(zcs),real(zcs)); % 设置图像参数要在显示函数(mesh/plot等)之后
axis([-3,3,-3,3]); % 设置坐标轴默认值
grid off; % 关闭栅格
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % 设置当前图框
title("cos(z)的图像"); % 标题
xlabel("实部"); % 坐标轴标签
ylabel("虚部"); %
box on; % 边框显示
hold on;
colorbar('vert')

效果:
在这里插入图片描述

1/z的俯视图像

% 1/z的图像
clear,clc;
x = linspace(-pi,pi,100); % cos(z),与z的开角有关的是x
y = linspace(-pi,pi,100); % y控制伸展
[x,y] = meshgrid(x,y);
z = x + y.*1i;
% 取前面的z值为基础,得到一个新的复数
zx2 = 1./abs(z).*exp(-1i.*angle(z));
% zx2 = 1./z; % 注意哦,要点乘,不然会出现和值,而不是矩阵数据
% figure,新建一个图形界面显示
figure
mesh(real(zx2),imag(zx2),imag(zx2),real(zx2)); % 设置图像参数要在显示函数(mesh/plot等)之后
% 调用之前的配置过来用就好了(copy前面的)
axis([-3,3,-3,3]); % 设置坐标轴默认值
grid off; % 关闭栅格
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % 设置当前图框
title("1/z的图像"); % 标题
xlabel("实部"); % 坐标轴标签
ylabel("虚部"); %
box on; % 边框显示
hold on;

效果:
在这里插入图片描述

z/(1+z)的俯视图像

% z/(1+z)的图像
clear,clc;
x = linspace(-20,20,100);
y = linspace(-20,20,100);
[x,y] = meshgrid(x,y);
z = x + y.*1i;
zc_y = sqrt((z.*(-z)+(-z).*1)./(1-z.*z));
figure
mesh(real(zc_y),-imag(zc_y),imag(zc_y),real(zc_y));
axis([-3,3,-3,3]);
grid off;
set(gca,'xtick',(-3:3),'ytick',(-3:3));
title("z/(1+z)的图像");
xlabel("实部");
ylabel("虚部");
box on;
hold on;
colorbar('vert')

效果:
在这里插入图片描述
在这里插入图片描述

exp(x + iy)的俯视图像

% exp(x + iy)的图像
clear,clc;
x = linspace(-pi,pi,34); % cos(z),与z的开角有关的是x
y = linspace(-9*pi/10,9*pi/10,34); % y控制伸展
[x,y] = meshgrid(x,y);
z = x + y.*1i;
% 取前面的z值为基础,得到一个新的复数
zx = exp(real(z)).*exp(imag(z)*1i); % 注意哦,要点乘,不然会出现和值,而不是矩阵数据
% figure,新建一个图形界面显示
figure
mesh(real(zx),imag(zx),imag(zx),real(zx)); % 设置图像参数要在显示函数(mesh/plot等)之后
% 调用之前的配置过来用就好了(copy前面的)
axis([-3,3,-3,3]); % 设置坐标轴默认值
grid off; % 关闭栅格
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % 设置当前图框
title("exp(x + iy)的图像"); % 标题
xlabel("实部"); % 坐标轴标签
ylabel("虚部"); %
box on; % 边框显示
hold on;

效果:
在这里插入图片描述
在这里插入图片描述

z^3的俯视图像

% z^3的图像
clear,clc;
x = linspace(-pi,pi,34); % cos(z),与z的开角有关的是x
y = linspace(-pi,pi,34); % y控制伸展
[x,y] = meshgrid(x,y);
z = x + y.*1i;
% 取前面的z值为基础,得到一个新的复数
zy2 = z.^3; % 注意哦,要点乘,不然会出现和值,而不是矩阵数据
% figure,新建一个图形界面显示
figure
mesh(real(zy2),imag(zy2),imag(zy2),real(zy2)); % 设置图像参数要在显示函数(mesh/plot等)之后
% 调用之前的配置过来用就好了(copy前面的)
axis([-3,3,-3,3]); % 设置坐标轴默认值
grid off; % 关闭栅格
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % 设置当前图框
title("z^3的图像"); % 标题
xlabel("实部"); % 坐标轴标签
ylabel("虚部"); %
box on; % 边框显示
hold on;

效果:
在这里插入图片描述

z/(x^2+2*y)的俯视图像

clear,clc;
x = linspace(-2,2,60); % cos(z),与z的开角有关的是x
y = linspace(-2,2,60); % y控制伸展
[x,y] = meshgrid(x,y);
z = x + y.*1i;
% 取前面的z值为基础,得到一个新的复数
zcy = z./(x.^2+y.*2); % 注意哦,要点乘,不然会出现和值,而不是矩阵数据
% figure,新建一个图形界面显示
figure
mesh(real(zcy),imag(zcy),imag(zcy),real(zcy)); % 设置图像参数要在显示函数(mesh/plot等)之后
axis([-3,3,-3,3]); % 设置坐标轴默认值
grid off; % 关闭栅格
set(gca,'xtick',(-3:3),'ytick',(-3:3)); % 设置当前图框
title("z/(x^2+2*y)的图像"); % 标题
xlabel("实部"); % 坐标轴标签
ylabel("虚部"); %
box on; % 边框显示
hold on;
colorbar('vert')

效果:
在这里插入图片描述

总结

绘制复数二维复平面图形——就是画三维的俯视图,取复数实部为颜色参数值。

绘制这样的图形可以理解成——花两个平面图形:x,y一个,imag(z),real(z)对应一个——使用mesh绘制得到~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约