资源描述
实验7:图形绘制
一、 实验目的
1、 掌握绘制二维图形的常用函数。
2、 掌握绘制三维图形的常用函数。
3、 掌握绘制图形的辅助操作。
二、 实验内容
1、 已知,完成下列操作:
(1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。
x=0:0.1:2*pi; y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'r-',x,y2,'b:',x,y3,'g--')
(2)以子图形式绘制三条曲线。
x=0:0.1:2*pi;
>> subplot(2, 2, 1);
>> plot(x,y1);
>> y1=x.^2;
>> plot(x,y1);
>> subplot(2, 2, 3);
>> y2=cos(2*x);
>> plot(x,y2);
>> subplot(1, 3, 3);
>> y3=y1.*y2;plot(x,y3);
(2) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。
x=0:0.1:2*pi;
>> y1=x.^2;
>> subplot(1,3,1);
>> bar(x,y1,'r');
>> y2=cos(2*x);
>> subplot(1,3,2);
>> bar(x,y2,'g');
>> y3=y1.*y2;
>> subplot(1,3,3);
>> bar(x,y3,'b');
>> clear
>> x=0:0.1:2*pi;
>> y1=x.^2;
>> subplot(1,3,1);
>> stairs(x,y1,'r');
>> y2=cos(2*x);
>> subplot(1,3,2);
>> stairs(x,y2,'g');
>> y3=y1.*y2;
>> subplot(1,3,3);
>> stairs(x,y3,'b');
>> clear
>> x=0:0.1:2*pi;
>> y1=x.^2;
>> subplot(1,3,1);
>> stem(x,y1,'r');
>> y2=cos(2*x);
>> subplot(1,3,2);
>> stem(x,y2,'g');
>> y3=y1.*y2;
>> subplot(1,3,3);
>> stem(x,y3,'b')
>> subplot(1,3,1);
>> fill(x,y1,'r');
>> subplot(1,3,2);
>> fill(x,y2,'g');
>> subplot(1,3,3); fill(x,y3,'b');
2、 绘制极坐标曲线,并分析参数a,b,n对曲线形状的影响。
3、 分别用plot和fplot函数绘制函数的曲线,分析两曲线的差别。
%homework_7_3.m
x=0:pi/100:2*pi;
y=sin(1./x);
plot(x,y);
%homework_7_3_2_fplot.m
function y=homework_7_3_fplot(x)
y=sin(1./x);
%homework_7_3_2.m
fplot('homework_7_3_fplot',[0,7],1e-3);
4、 绘制函数曲面图和等高线图:
(1)
%homework_7_4_1_6.m
x=-pi:0.1:pi;
[x,y]=meshgrid(x);
z=(x.*x-2.*x).*exp(-x.*x-y.*y-x.*y);
surfc(x,y,z);
xlabel('x-轴'),ylabel('y-轴'),zlabel('z-轴');
title('三维mesh网格图');
(2)
%homework_7_4_2_1.m
x=-pi:0.1:pi;
[x,y]=meshgrid(x);
z=1./(1+sqrt((x-1).^2+y.^2))-1./(1+sqrt((x+1).^2+y.^2));
surfc(x,y,z);
xlabel('x-轴'),ylabel('y-轴'),zlabel('z-轴');
title('三维mesh网格图');
提示:绘制三维曲面图,首先要选定一个平面区域并在该区域产生网格坐标矩阵。在做本题之前,先分析并上机验证下列的命令执行结果。从中体会产生网格坐标矩阵的方法。
5、 绘制由下列参数方程表示的曲面图形(未绘制图形之前,你能看出其是什么图形吗?)
, 其中。
%homework_7_5_1.m
x=inline('(1+cos(u)).*cos(v)');
y=inline('(1+cos(u)).*sin(v)');
z=inline('sin(u)');
ezmesh(x,y,z);
title('轮胎面');
text(0,0,0,'origin');
xlabel('X'),ylabel('Y'),zlabel('Z');
grid;
6、 在一幅图上打印出函数sin(x)和cos(x)在[0,2p]区间上的图形,要求如下
1)sin(x)和cos(x)图形分别用红色的点划线和绿色星号打印;
2)坐标轴的窗口大小范围设为[-1,7]´[-1.5.1.5];
3)分别给x轴和y轴加上标注说明,图形加上名称;
4)给出图例说明标注;
5)在(3.3,1.1)处标上文字‘sin(x)’,用鼠标在cos(x)曲线的某点处标上文字‘cos(x)’;
6)给图形加上网格线。
7)回车后图形的坐标轴和网格线消失。y=sin(x);
%homework_7_6_1.m
x=0:pi/100:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'r-.',x,y2,'g*');
title('sin(x)和cos(x)在[0,2*pi]区间上的图形');
xlabel('X轴');
ylabel('Y轴');
text(3.3,1.1,'sin(x)');
gtext('cos(x)')
legend('sin(x)','cos(x)')
axis([-1,7,-1.5,1.5]);
grid on;
7、 使用正态分布的随机函数产生10000个随机数;统计-3到3之间每隔0.2间隔内落入的随机数个数,并打印出其频数图。
%homework_7_7.m
x=-3:0.2:3;
y=randn(1,10000);
hist(y,x);
8、 试打印出下列函数所表示的图像
1);
%homework_8_1.m
f=inline('exp(-x*y)-2*x*x+x*y-y+2');
ezplot(f,[-5,5]);
grid on;
2)
%homework_8_2.m
f=inline('(t*cos(2*pi*t))/(1+t*t)+1');
ezplot(f);
grid on;
3);
%homework_8_3.m
z=inline('real(sin(x+i*y))');
%real 取实部 imag 取虚部
ezplot(z);
grid on;
4)
%homework_7_8_4.m
x=inline('1+(3-cos(u))*sin(v)');
y=inline('1+(3-cos(u))*cos(v)');
z=inline('sin(u)');
ezmesh(x,y,z);
grid on;
9、 设函数试打印出下列图形:
1)打印函数的网格图和曲面图
网格图
%homework_7_9_1_1.m
z=inline('x*exp(-x*x-y*y)');
ezmesh(z);
title('网格图');
text(0,0,0,'origin');
xlabel('X'),ylabel('Y'),zlabel('Z');
grid;
曲面图
%homework_7_9_1_2.m
z=inline('x*exp(-x*x-y*y)');
ezsurf(z);
title('网格图');
text(0,0,0,'origin');
xlabel('X'),ylabel('Y'),zlabel('Z');
grid;
2)打印出函数的高度为v=[-0.4,-0.2,-.10,0.3,0.35]二维等值线图,并在图形上标出其高度。(提示:使用clable命令标高度)
%homework_7_9_2.m
v=[-0.4,-0.2,-.10,0.3,0.35];
x=-2:0.1:2;
y=-2:0.1:2;
[x,y]=meshgrid(x,y);
z=x.*exp(-x.*x-y.*y);
[c,v]=contour(z,v);
clabel(c,v);
title('二维等值线图');
xlabel('X'),ylabel('Y');
%axis([40,80,40,80]);
grid;
3)打印出函数有20条等值线的三维等值线图,
%homework_7_9_3.m
x=-2:0.1:2;
y=-2:0.1:2;
[x,y]=meshgrid(x,y);
z=x.*exp(-x.*x-y.*y);
contour3(z,20);
title('三维等值线图');
xlabel('X'),ylabel('Y'),zlabel('Z');
grid;
4)打印函数的伪彩色图。(提示使用Contourf(z))
%homework_7_9_4.m
x=-2:0.1:2;
y=-2:0.1:2;
[x,y]=meshgrid(x,y);
z=x.*exp(-x.*x-y.*y);
contourf(z)
title('伪彩色图');
xlabel('X'),ylabel('Y');
grid;
10、 Chebyshev 多项式的定义如下:
y = cos(m*cos-1x)
其中 x 的值介于 [-1, 1]。当 m 的值由 1 变化到 5,我们可得到五条曲线。请将这五条曲线画在同一张图上面,记得要使用 legend 指令来标明每一条曲线。
%homework_7_10.m
x=-pi:pi/100:pi;
y1=cos(1.*(1./cos(x)));
y2=cos(2.*(1./cos(x)));
y3=cos(3.*(1./cos(x)));
y4=cos(4.*(1./cos(x)));
y5=cos(5.*(1./cos(x)));
plot(x,y1,x,y2,x,y3,x,y4,x,y5);
legend('m=1','m=2','m=3','m=4','m=5');
%Chebyshev(y);
title('Chebyshev');
xlabel('X'),ylabel('Y');
grid;
%homework_7_10_1.m
x=linspace(-1,1)';
y=[];
for m=1:5
y=[y,cos(m*acos(x))];
end
plot(x,y);
legend('m=1','m=2','m=3','m=4','m=5');
axis image
11、 试写一函数 regStar(n),其功能为画出一个圆心在 (0, 0)、半径为 1 的圆,并在圆内画出一个内接正 n 星形,其中一顶点位于 (0, 1)。例如 regStar(7) 可以画出如下之正 7 星型:
%regStar(n)
%只能计算 n 为偶数
function regStar(n)
clf;
vertices=[1];
for i=1:n
step=2*pi*floor(n/2)/n;
vertices=[vertices,exp(i*step*sqrt(-1))];
end
plot(vertices,'-o');
hold on
theta=linspace(0,2*pi);
plot(cos(theta),sin(theta),'-r');
hold off
axis image
展开阅读全文