Matlab建模训练3 图形绘制
一、学习二维平面图形的描绘方法
plot函数表
函数 | 功能 |
plot(Y,’s’) | 以向量Y为纵坐标,Y的元素下标为横坐标,作数值图。S用来指定线型和颜,可缺省。 |
plot(X,Y,’s’) | 当X,Y都是n维向量时,绘制以X,Y为横、纵坐标向量的曲线。当X为n维向量,Y为n×s或s×n矩阵时,绘制以X为横坐标向量的s条曲线。 |
plot(x1,y1,’s1’,s2,y2,’s2’,…) | 每个三元组(x1,y1,’s1’)绘制一条曲线。 |
绘图参数
符号 | 颜 | 符号 | 形状 |
b | 蓝 | . | 点 |
k | 黑 | + | 加号 |
r | 红 | - | 实线 |
图形的标注
函数 | 功能 |
xtable(‘str’) | 标注横坐标轴 |
ytable(‘str’) | 标注纵坐标轴 |
title(‘str’) | 标注图形标题 |
极坐标作图
类型 | 函数 | 功能 |
数值图 | polar(,r,’s’) | 绘制极角,极径r的极坐标曲线,s表示线形、颜 |
函数图r=f() | ezpolar(f,[a,b]) | 绘制极坐标函数r=f()在区间上的曲线,默认区间是 |
1、 在同一窗口绘制正、余弦函数的图形。
2、绘制三叶玫瑰线r=sin(3)
3、绘制分段函数的图形。
二、学习空间曲线的绘制
数值作图
函数 | 功能 | 备注 |
plot3(X,Y,Z’s’) | 绘制以X,Y,Z的对应分量为坐标的三维曲线 | X,Y,Z是同维向量或同维矩阵(矩阵的列数条曲线),s是线型、颜 |
Plot(X1,Y1,Z1,’s1’,’X2,Y2,Z2,’s2’) | 每四个数组Xi,Yi,Zi,’si’,绘制一条曲线 | Xi,Yi,Zi是同维向量 |
符号函数作图
函数 | 功能 |
ezploy3(x,y,z) | 在默认区域上绘制x=x(t),y=y(t),z=z(t)的图形 |
ezploy3(x,y,z,[a,b]) | 在区间上绘制x=x(t),y=y(t),z=z(t)的图形 |
ezploy3(x,y,z,[a,b],’animate’) | 同上,且产生动画绘制效果 |
1、绘制三维螺旋线
2、 绘制空间曲线
三、学习空间曲面的绘制
数值作图
函数 | 功能 |
mesh(Z) | 以Z矩阵的列、行下标为自变量x,y的值,画网格图 |
mesh(X,Y,Z) | 以矩阵X,Y,Z为坐标的网格图 |
meshz(X,Y,Z) | 同上,在网格下方绘制等高线 |
surf(Z) | 同mesh(Z),绘制三维表面图 |
surf(X,Y,Z) | 绘制以矩阵X,Y,Z为坐标的表面图 |
surfc(X,Y,Z) | 绘制表面图及等高线 |
例 绘制函数的图形,观察4个子图的不同特征。
[X,Y]=meshgrid(-4:0.2:4);
Z=X.*sin(sqrt(X.^2+Y.^2));
subplot(2,2,1)
mesh(Z)
subplot(2,2,2)
mesh(X,Y,Z)
subplot(2,2,3)
surf(X,Y,Z)
subplot(2,2,4)
surfc(X,Y,Z)
符号函数作图
函数 | 功能 |
ezmesh(f) | 在默认区域上画z=f(x,y)的网格图 |
ezmesh(f,[a,b]) | 在上画z=f(x,y)的网格图 |
ezmesh(f,[a,b,c,d]) | 在上画z=f(x,y)的网格图 |
ezmesh(f,[a,b,c,d],’circ’) | 在圆域(圆心为,半径)上画同上网格图 |
ezmesh(x,y,z) | 在上画由参数方程x=x(s,t),y=y(s,t),z=z(s,t)确定的网格图 |
ezmesh(x,y,z,[a,b]) | 在上画同上网格图 |
ezmesh(x,y,z,[a,b,c,d]) | 在上画同上网格图 |
ezmesh(x,y,z,[a,b,c,d],’circ’) | 在圆域上画同上网格图 |
ezmesh(f,[a,b]) | 画带等高线的三维网格图 |
若自变量不是x,y,自变量的取值顺序按字母顺序排列。
ezsurf命令彩表面图,调用格式与ezmesh相同。
view函数
函数 | 功能 |
view(az,el) | 通过方位角、俯视角设置视点 |
view([x,y,z]) | 通过直角坐标设置视点 |
view(2) | 设置二维图形的视角,默认 |
view(3) | 设置二维图形的视角,默认 |
例 分别用命令ezmesh()和ezsurf()作函数z=xy的图形,并观察4个子图的不同特征。
程 序 | 运 行 结 果 |
syms x y z=x*y; subplot(2,2,1) ezsurf(z,[-2,2]) subplot(2,2,2) ezmesh(z,[-2,2],'circ') subplot(2,2,3) ezsurf(z,[0,4,-1,4]) subplot(2,2,4) ezmesh(z,[0,4,-1,4],'circ') | |
例 绘制函数的图形,并在各坐标设置点观察图形。
程 序 | 运 行 结 果 |
z='x*exp(-x^2-y^2)'; subplot(2,2,1) ezsurf(z) subplot(2,2,2) ezsurf(z) view([1,0,0]) [az1,el1]=view subplot(2,2,3) ezsurf(z) view([0,1,0]) [az2,el2]=view subplot(2,2,4) ezsurf(z) view([0,0,1]) [az3,el3]=view | az1 =90 el1 =0 az2 =180 el2 =0 az3 =0 el3 =90 |
二维符号等高线图
函数 | 功能 |
ezcontour(f) | 在默认区域上画z=f(x,y)的等高线图 |
ezcontour(f,[a,b]) | 在上画z=f(x,y)的等高线图 |
ezcontour(f,[a,b,c,d]) | 在上画z=f(x,y)的等高线图 |
ezcontour(…,n) | 绘制z=f(x,y)的个网格的等高线图,n的默认值是60 |
ezcontourf(…,n) | 绘制z=f(x,y)的个网格的经过填充的等高线图 |
二维数值等高线图
函数 | 功能 |
contour(z) | 绘制矩阵Z的二维等高线,x,y坐标由z的列、行下标确定 |
contour(z,n) | 绘制同上等高线,指定等高线为n条,缺省值是8 |
contour(z,v) | 绘制z的等高线,等高线位于向量v指定的值处,等高线的条数为length(v) |
contour(X,Y,Z) | 绘制z的二维等高线,若X,Y是向量,则X,Y确定坐标轴的范围;若X,Y是矩阵,则X(1,:)和Y(:,1)确定坐标轴的范围 |
contour(X,Y,Z,’s’) | 同上,s指定线型、颜 |
c=contour(…) | 绘制等高线,并返回等高线矩阵c,其中(…)表示上述各类参数 |
contourf(X,Y,Z) | 绘制填充二维等高线 |
contour3绘制三维等高线,调用格式同contour
例 绘制函数的二维等高线和填充等高线。
程 序 | 运 行 结 果 |
z='sin(x)+cos(x+y)'; figure(1) ezsurf(z,[-pi/2,pi/2]) figure(2) subplot(1,2,1) ezcontour(z,[-pi/2,pi/2]) subplot(1,2,2) ezcontourf(z,[-pi/2,pi/2]) | |
例 绘制多峰函数,在上的图形以及二维等高线、二维填充等高线和三维等高线的图形。
程 序 | 运 行 结 果 |
x=linspace(-pi,pi,50); [X,Y]=meshgrid(x); Z=3.*(1-X).^2.*exp(-X.^2-(Y+1).^2)-10*(X./5-X.^3-Y.^5).*exp(-X.^2-Y.^2)... -1/3.*exp(-(X+1).^2-Y.^2); figure(1) surf(X,Y,Z) title('多峰函数') | |
程 序 | 运 行 结 果 |
figure(2) c=contour(X,Y,Z,8); clabel(c) title('多峰函数标注高度的二维等高线') | |
程 序 | 运 行 结 果 |
figure(3) contourf(X,Y,Z,12) title('多峰函数的二维等高线') | |
程 序 | 运 行 结 果 |
figure(4) contour3(X,Y,Z,16) grid off title('多峰函数的三维等高线') | |
梯度
函数 | 功能 | 说明 |
[Fx,Fy]=gradiend(F,h) | 求二元函数的梯度 | F是函数的数值矩阵,h是步长,默认值为1 |
quiver(x,y,u,v,s) | 在xOy平面上画(u,v)表示的箭头 | S是箭头的长度 |
例(1)绘制曲面z=x2+y2的图形和等高线的图形;(2)绘制梯度的图形;(3)绘制从点(1,2)出发的梯度线;(4)将等高线、梯度、梯度线绘制在同一图形窗口。
解:用等长的折线段来模拟梯度线。设步长t,从点pk(xk,yk)出发,沿梯度方向前进t得到点Pk+1(xk+1,yk+1),即
连接P0,P1,P2,…,即得梯度线的图形。
1 绘制曲面与等高线
程序:
[X,Y]=meshgrid(-6:0.5:6);
Z=X.^2-Y.^2;
subplot(2,2,1)
surfc(Z)
2 绘制梯度的图形程序:
程序:
[FX,FY]=gradient(Z,0.5);
subplot(2,2,2)
quiver(X,Y,FX,FY,0.8)
3 绘制从点(1,2)出发的梯度线
程序:
subplot(2,2,3)
syms x y
f=x^2-y^2;
fd=[diff(f,x) diff(f,y)];
t=0.025;
x0=ones(1,100);
y0=x0*2;
for i=1:100
fd0=subs(fd,{x,y},{x0(i),y0(i)});
x0(i+1)=x0(i)+fd0(1)/sqrt(fd0(1)^2+fd0(2)^2)*t;
y0(i+1)=y0(i)+fd0(2)/sqrt(fd0(1)^2+fd0(2)^2)*t;
end
plot(x0,y0)
4 将等高线、梯度、梯度线绘制在同一图形窗口
程序:
subplot(2,2,4)
plot(x0,y0,'r',x0(1),y0(1),'r*')
hold on
contour(X,Y,Z,10,'b')
hold on
quiver(X,Y,FX,FY,0.9)
matlab等高线填充颜hold off
运行结果为:
练习:
编程作下列曲面绘图:
1用平面曲线r=2+cos(t)+sin(t),t∈(0,π)绘制旋转曲面
2用直角坐标绘制双曲抛物面曲面网线图,z2=xy (-3<x<3,-3<y<3)
3用直角坐标绘制曲面表面图, (-5<x<5,-5<y<5)
4用直角坐标绘制修饰过的光滑曲面曲面:z4=sin(x)-cos(y) x与y 的取值在(-π,π)
5用连续函数绘图方法绘制曲面,x[-2pi,2pi], y[-2pi,2pi],并作图形修饰。
6、绘制在定义域x=[-2,2],y=[-2,2]内的曲面。(利用meshgrid)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论