数学软件 Matlab —— 二维平面作图 —— 三维空间作图
本讲主要内容 二维平面作图 三维空间作图 符号作图 Matlab 绘图过程/原理
手工作图 如何画出 y=sin(x) 在 [0, 2] 上的图像?
Matlab 作图 手工作图 Matlab 作图 例: 找点: x = 0, pi/4, pi/3, pi/2, pi, ... 求值: y = sin(0), sin(pi/4), sin(pi/3), ... 描点:在坐标系中画出这些离散点 连线:用直线或曲线连接这些点,得到函数的大致图形 Matlab 作图 找点: x=[0:pi/10:2*pi]; 求值: y=sin(x); 描点、连线:使用 Matlab 提供的绘图函数 plot 例: x=0:pi/10:2*pi; y=sin(x); plot(x,y);
二维作图命令 平面曲线绘图命令: plot plot(x,y) 例:作 y = cos(x) 在 [0, 4] 上的图像 x=0:pi/10:4*pi; y=cos(x); plot(x,y);
二维作图命令 平面曲线绘图命令: plot plot(y) 例: 绘制向量 y 的线性图 即以下标为横坐标,y 的分量为纵坐标,等价于: x=[1:length(y)]; plot(x,y); 例: y=[0,0.4,0.8,1.0,0.9,6.1]; plot(y); 思考:plot(y) 与 plot(x,y) 有什么区别?
图形的属性 指定点和线的属性 plot(x,y,str) 例: 红色、虚线、 点用加号表示 例: x=0:pi/20:2*pi; plot(x,cos(x),'r+:'); 蓝色、间断线、 点用圆圈表示 x=0:pi/20:2*pi; plot(x,cos(x),'bo--'); 颜色,线型,点标记:可以全部指定,也可以部分指定,顺序任意
点和线的基本属性 help plot 线型 点标记 颜色 - 实线 : 虚线 -. 点划线 -- 间断线 空白(不画线) . 点 o 小圆圈 - 实线 : 虚线 -. 点划线 -- 间断线 空白(不画线) . 点 o 小圆圈 x 叉子符 + 加号 * 星号 s 方格 d 菱形 ^ 朝上三角 v 朝下三角 > 朝右三角 < 朝左三角 p 五角星 h 六角星 y 黄色 m 洋红/magenta c 青色/cyan r 红色 g 绿色 b 蓝色 w 白色 k 黑色
标题和坐标轴标注 title(str) xlabel(str) ylabel(str) 例: 添加标题 添加坐标轴标注 xlabel(str) ylabel(str) 例: x=0:pi/20:2*pi; plot(x,cos(x)); title('y=cos(x) 的图像'); xlabel('x 轴'); ylabel('y 轴');
绘制多个函数图像 在同一个绘图窗口绘制多个图像 plot(x1,y1, x2,y2, ...) 也可以同时指定每条曲线的属性 plot(x1,y1,str1, x2,y2,str2, ...) 另一中实现方法:hold on 例: x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); plot(x,y1, x,y2); hold on plot(x1,y1,str1) plot(x2,y2,str2) ... hold off hold on; plot(x,y1); plot(x,y2);
图例 直观方法:可以直接在绘图窗口进行编辑 legend(str1,str2, ...) 例: text(x,y,str) 添加图例 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,'bo-', x,y2,'ks--'); legend('sin(x)','cos(x)') 在任何指定的地方添加文本 text(x,y,str) 将 str 放到由 (x,y) 坐标指定的地方 直观方法:可以直接在绘图窗口进行编辑
划分绘图窗口 划分绘图窗口 subplot(m,n,p) 例: 将一个绘图窗口分割成 mn 个子区域,并 按行 从左至右 依次编号 ,p 表示第 p 个绘图子区域。 例: x=-pi:pi/20:pi; subplot(2,2,1); plot(x,sin(x)); subplot(2,2,2); plot(x,cos(x)); subplot(2,2,3); plot(x,x.^2); subplot(2,2,4); plot(x,exp(x));
其他相关命令 显示网格 保留当前绘图窗口中的图像 新建绘图窗口/选取绘图窗口 关闭绘图窗口 grid on / grid off hold on / hold off 新建绘图窗口/选取绘图窗口 figure(n) 关闭绘图窗口 close / close all
本讲主要内容 二维平面作图 三维空间作图 符号作图 Matlab 绘图过程/原理 三维曲线 空间曲面
三维曲线 三维曲线绘图命令 : plot3 plot3(x,y,z) 设三维曲线的参数方程为:x=x(t),y=y(t),z=z(t), 则其图形可由下面的命令绘出: plot3(x,y,z) 例:三维螺旋线 t=0:pi/10:10*pi; x=sin(t); y=cos(t); z=2*t; plot3(x,y,z); plot3 只能绘制用参数方程表示的三维曲线 plot3 的用法与 plot 类似
三维曲面示例
三维曲面 绘制曲面的网格图 mesh(X,Y,Z) 例: 绘制由矩阵 X,Y,Z 所确定的曲面的网格图 [X,Y]=meshgrid(-3:1/8:3); Z=peaks(X,Y); mesh(X,Y,Z);
三维曲面绘制过程 绘制空间曲面 z = z(x,y) 网格图的步骤: (1) 对 x 的取值区域和 y 的取值区域进行分割, 得到离散的点 (xij, yij),这些离散的点称为网格点 (2) 这些网格点构成了网格矩阵,即矩阵 X 和 Y (3) 计算 z 在这些网格点上的函数值,即可得矩阵 Z (4) 调用 Matlab 的绘图命令 mesh 绘出曲面图形 怎样得到网格矩阵 X 和 Y ? —— 利用 Matlab 的网格生成函数: meshgrid
网格生成函数 [X,Y]=meshgrid(x,y) 网格生成函数 x,y 是分别对 x 取值区域和 y 取值区域进行分割后 得到的向量 若 y = x, 则可简写为:[X, Y]=meshgrid(x)
墨西哥帽子 例:绘制墨西哥帽子 a = 8 时的曲面图形 x 方向与 y 方向可以取不同的步长 注意要使用数组运算 [X,Y]=meshgrid(x,y); r=sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; mesh(X,Y,Z); +eps? x 方向与 y 方向可以取不同的步长 注意要使用数组运算
meshc 和 meshz 其它网格曲面绘制函数:meshc、meshz 使用方式与 mesh 相同,在 mesh 基础上增加等高线
Mesh 绘图 显式方程绘图: x=a:h1:b; y=c:h2:d; % 区域划分 [X,Y]=meshgrid(x,y); % 生成网格 Z=z(X,Y); % 计算网格上的函数值 mesh(X,Y,Z); % 调用绘图命令 参数方程绘图: u=a:h1:b; v=c:h2:d; % 区域划分 [U,V]=meshgrid(u,v); % 生成网格 X=x(U,V); Y=y(U,V); Z=z(U,V); % 计算函数值 mesh(X,Y,Z); % 调用绘图命令
Mesh 绘图举例 例:绘制马鞍面 显式方程绘图 x=-2:0.1:2; y=-3:0.1:3; [X,Y]=meshgrid(x,y); Z=X.^2/4-Y.^2/9; mesh(X,Y,Z);
Mesh 绘图举例 例:绘制椭圆抛物面 参数方程绘图 t=0:pi/20:2*pi; r=0:0.1:5; [T,R]=meshgrid(t,r); X=3*R.*cos(T); Y=4*R.*sin(T); Z=R.^2; mesh(X,Y,Z);
曲面作图其它命令 空间曲面其它作图命令 surf(X,Y,Z) sphere(n) 绘制带颜色的表面图 (surface),参数含义同 mesh 注:mesh 绘制网格图,surf 绘制着色表面图 sphere(n) 绘制单位球面,n 代表网格的多少 注:sphere 只能画单位球面!
surf 作图举例 surf mesh [X,Y]=meshgrid(-8:0.5:8); r=sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; surf(X,Y,Z); surf mesh
sphere 作图 sphere; >> sphere(60); >> axis equal; 如果没有给出 n 的值, 则系统默认为 n=20
坐标轴控制 坐标轴控制命令 axis([xmin,xmax, ymin,ymax, zmin,zmax]) 作用:指定坐标轴的显示范围 axis on/off % 显示/不显示坐标轴 其它调用方式: axis auto 自动,使得图形的坐标满足图中的一切元素 axis equal 各坐标轴采用等长刻度 axis square 使绘图区域为正方形 axis manual 以当前的坐标限制图形的绘制(多图时) ... ... 更多用法参见联机帮助:help axis
图像的着色方案 图形的着色方案 colormap(s) s 为字符串,表示所采用的色系,常用的值有 颜色映象 相应的颜色系 autumn 红黄色系 gray 线性灰色系 cool 青和洋红色系 pink 柔和色系 ... ... 更多参见联机帮助: help colormap
绘图小结 平面曲线绘图: (1) 绘图区域划分 X=a:h:b; (2) 计算分割点上的函数值 y=f(x); % (3) 调用 Matlab 绘图命令 plot(x,y);
绘图小结 三维曲面绘图: (1) 绘图区域划分 x=a:h1:b; y=c:h2:d; (2) 生成网格 [X,Y]=meshgrid(x,y); (3) 计算在网格点上的函数值 Z=z(X,Y); % 数组运算 (4) 调用 Matlab 绘图命令 mesh(X,Y,Z);
绘图小结 三维曲面参数方程绘图: (1) 绘图区域划分 u=a:h1:b; v=c:h2:d; (2) 生成网格 [U,V]=meshgrid(u,v); (3) 计算在网格点上的函数值 X=x(U,V); Y=y(U,V); Z=z(U,V); % 数组运算 (4) 调用 Matlab 绘图命令 mesh(X,Y,Z);
本讲主要内容 二维平面作图 三维空间作图 符号作图 Matlab 绘图过程/原理
二维曲线 ezplot 二维曲线符号绘图函数 ezplot(f(x),[a,b]) ezplot(f(x,y),[a,b,c,d]) 绘制 y = f (x) 在区域 a x b 上的图形 ezplot(f(x,y),[a,b,c,d]) 绘制 f (x, y) = 0 在区域 a x b, c y d 上的图形 ezplot(x(t),y(t),[a,b]) 绘制 x = x(t), y = y(t) 在区域 a t b 上的图形
二维曲线 ezplot ezplot(f(x)) ezplot(f(x,y)) ezplot(x(t),y(t)) 缺省的绘图区间为 [-2, 2] ezplot(f(x)) 绘制 y = f (x) 在区域 -2 x 2 上的图形 缺省的绘图区间为 [-2, 2] ezplot(f(x,y)) 绘制 f (x, y) = 0 在区域 -2 x, y 2 上的图形 缺省的绘图区间为 [0, 2] ezplot(x(t),y(t)) 绘制 x = x(t), y = y(t) 在区域 0 t 2 上的图形
ezplot 作图 ezplot('sin(x)'); ezplot('sin(x)',[-pi,pi]); 符号作图时要注意使用 单引号!
Matlab 符号作图 空间曲线符号作图 ezplot3(x(t),y(t),z(t),[a,b]) 绘制空间曲线:x = x (t) , y = y (t) , z = z (t) , a t b 缺省的绘图区间为 [0, 2] ezplot3(x(t),y(t),z(t)) 绘制空间曲线:x = x (t) , y = y (t) , z = z (t) , 0 t 2 例: ezplot3('2*t','sin(t)','cos(t)',[0,20])
Matlab 符号作图 空间曲面符号绘图函数: ezmesh、ezsurf ezsurf 的用法 与 ezmesh 相同 ezmesh(z(x,y),[a,b,c,d]) ezsurf 的用法 与 ezmesh 相同 ezmesh(z(x,y),[a,b]) ezmesh(z(x,y))
Matlab 符号作图 空间曲面符号绘图函数: ezmesh、ezsurf ezmesh(x(s,t),y(s,t),z(s,t),[a,b,c,d]) ezmesh(x(s,t),y(s,t),z(s,t),[a,b]) ezmesh(x(s,t),y(s,t),z(s,t))
本讲主要内容 二维平面作图 三维空间作图 符号作图 Matlab 绘图过程/原理
曲线作图过程 基本原理:点 线,即先画点,后连线 例: 一、画点 x=0:pi/5:2*pi; plot(x,sin(x),'.') 二、连线 x=0:pi/5:2*pi; plot(x,sin(x),'r.-') 三、加密 x=0:pi/20:2*pi; plot(x,sin(x),'r.-')
三维曲面作图 先画点,后连线,构成曲面网格图 点: 线: 分别沿 x 方向和 y 方向 连接这些点即可得到
上机作业 1、用 plot 函数在一个坐标系下绘制以下函数的图形: y1 用黑色间断线点标记为星号 y2 用红色实线点标记为小方格 2、教材第 54 页 6、7 、 8 上机要求: 将完成每题所用的命令写入文件 m03.m