王小才 画图试验之马鞍面
淮阴工学学院
数理学院 数学实验课程 实验报告
实验名称 Matlab绘图 姓名 王小才 日期 2012-08-23
【实验目的及意义】
[1]熟悉MATLAB曲面绘图命令;
[2] 掌握MATLAB绘制平面图
[3] 掌握MATLAB绘制空间曲面图;
[4] 掌握MATLAB图形处理命令。
通过该实验的学习,使学生能灵活应用MATLAB软件绘制一些常见的函数图像。
【实验内容】
一、 画出马鞍面在xy平面投影是单位圆~并且去掉马鞍面的1/4部分。
解答: 方法一:用for循环把去掉部分z的值设置为NaN。
方法二:采用极坐标方法直接画出需要画的区域~即把要画的区域用极
坐标生成网格~然后极坐标转化为平面坐标。
下面程序采用的是方法二, 方法二程序耗时少。 程序命令
% 画马鞍面 z=ax^2-by^2
a=3;
b=4;
rho=0:0.01:1;
theta=0:0.01:3/2*pi;
[Rho,Theta]=meshgrid(rho,theta);
%用极坐标生成网格
x=Rho.*cos(Theta);
y=Rho.*sin(Theta); %极坐标转化为平面坐标 z=a*x.^2-b*y.^2;
mesh(x,y,z)
%马鞍面去掉1/4的部分
hold on
t = 0:0.02: 2*pi;
u = sin(t);
v = cos(t);
plot(u, v, 'm', 'linewidth', 2.5)
s = linspace(0, 1, 50); plot(s, 0*s, 0*s, -s, 'b', 'linewidth', 2)
sx = 0:0.05:1;
sy = 0*sx;
sz=a*sx.^2-b*sy.^2 stem3(sx,sy,sz)
sy = -1:0.05:0;
sx = 0*sy;
sz=a*sx.^2-b*sy.^2 stem3(sx,sy,sz)
t = 0:0.02: 2*pi;
u1 = sin(t);
v1 = cos(t);
rz=-4*ones(size(u1));
plot3(u1, v1, rz,'m', 'linewidth', 2.5)
s = linspace(0, 1, 50);
rho=1;
theta=0:0.01:3/2*pi;
[Rho,Theta]=meshgrid(rho,theta);
x=Rho.*cos(Theta);
y=Rho.*sin(Theta);
z=a*x.^2-b*y.^2;
n=length(x);
for i = 1: n
z1=-4:0.01:z(i);
x1=x(i)*ones(size(z1));
y1=y(i)*ones(size(z1));
plot3(x1,y1,z1,'y')
end
view(-30, 30)
title('A Part of surface z=ax^2-by^2', 'fontsize', 16) xlabel('x','FontName','Times New Roman','FontSize',14) ylabel('y','FontName','Times New Roman','FontSize',14,'Rotation',0)
zlabel('z','FontName','Times New Roman','FontSize',14) set(gca,'FontName','Times New Roman','FontSize',14) 运行结果:
去掉边界的效果: