实验二:MATLAB软件绘图
练习二
1. 绘制下列函数的图形.
(1),(x,y)属于矩形区域[-2,2]* [-2,2];
这里需要说明一点,对于(0,0,0)此点,在原函数中是一个nan,所以只需添加上一个(0,0,0)即可。
ezmesh('x*y/(x^2+y^2)',[-2,2])
hold on
plot3(0,0,0)
(2)
ezmesh('(1+x+y)^2',[-10,10])
(3);
ezmesh('sqrt(x^2+y^2)',[-10,10])
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
axis auto
(4)绕z轴旋转得到的旋转曲面.
t=0:0.1:1;
r=t.^2+1;
figure(1)
[x,y,z]=cylinder(r,20);
mesh(x,y,z)
hold on
mesh(x,y,-z)
hidden off
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
在这里我们特别地说明一下这个cylinder所产生的矩阵的特点,当我们令t为t=0:0.5:1时,我们看所产生的z矩阵是什么(在这里为了节省空间,我们取cylinder中的n为4)
0 0 0 0 0
0.5000 0.5000 0.5000 0.5000 0.5000
1.0000 1.0000 1.0000 1.0000 1.0000
这个时候我们再令t=0:0.5:2,所产生的z矩阵为:
0 0 0 0 0
0.2500 0.2500 0.2500 0.2500 0.2500
0.5000 0.5000 0.5000 0.5000 0.5000
0.7500 0.7500 0.7500 0.7500 0.7500
1.0000 1.0000 1.0000 1.0000 1.0000
我们发现此时的最大值并不为2,仍然是1,但是步长缩短了,变成了原来的一半了。
当我们令t=-1:0.5:1时,所产生的z矩阵仍和上面的一样,所以这时我们要是随便的取t的范围,所得到的并不是我们想要的图形。我们会发现不论t的范围为何值,所画的图形都是在(-1,1)范围内。所以如果你取的t范围在(0,1)之间,这时候的图形是不会画错的。
但是,如果我想要画更大范围内的图形该怎么办呢?
我认为应该 取t的范围在0到某个区间,末尾的值是k,在画图时要mesh(x,y,k*z)即可。(但不要忘了如果要看负区间的图形,我们要加上mesh(x,y,-k*z))
2 .分别用指令mesh,meshc ,meshz 绘制函数,在矩形区域[-8,8]×[-8,8]上的图形(可用help命令查找这些命令的用法).
x=-8:0.01:8;
[X,Y]=meshgrid(x,x);
Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
subplot(2,2,1) mesh(X,Y,Z)
subplot(2,2,2)
meshc(X,Y,Z)
subplot(2,2,3)
meshz(X,Y,Z)
hidden off
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
区别:mesh绘制的就是一个普通的网格图,而meshc绘制的是带有等高线的网格图(在底部),meshz绘制的是带有帷幕的网格图。
3.绘制下列空间区域图形
(1)由,围成;
x=-10:0.01:10;
y=x;
[xx,yy]=meshgrid(x,y);
zz=(xx.^2+yy.^2)/2;
m=find(zz<1);
zz(m)=nan;
surf(xx,yy,zz)
shading interp
hidden off
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
(2)由 ,围成;
t=0:0.01:2*pi;
x=1+cos(t);
y=sin(t);
z=sqrt(2.*x);
xx=[x;x];
yy=[y;y];
zz=[z;5.*ones(size(z))];
mesh(xx,yy,zz)
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
我们来总结一下对于这种柱体的画法:首先,如果要是单纯的画一个柱体,我们直接用ezmesh或ezsurf搞定。但是如果要对该柱体进行裁剪修改,ezmesh就不太好处理了,我们需要进行创建数组或者矩阵并对其进行修改,这时我们要注意只需要确定两个截面上的点即可。以此题为例,我们只需要z=sqrt(2*x)这个截面和z=c(c为常数,且比较大)这两个面上的点即可。
(3)由围成;
t=0:0.05:2*pi;
x=cos(t);
y=0.5*sin(t);
z=1-x-y;
m=find(z<0);
z(m)=nan;
x(m)=nan;
y(m)=nan;
xx=[x;x];
yy=[y;y];
zz=[z;zeros(size(z))];
surfc(xx,yy,zz)
shading interp
(4)围成;
x=-5:0.01:5;
y=x;
[xx,yy]=meshgrid(x,y);
z1=sqrt(xx.^2+yy.^2);
zz=sqrt(abs(4-xx.^2-yy.^2));
zzz=zz;
xx(zzz
(5)由;
有点疑惑,这个区间到底是哪个?(恳求高人指点)
ezsurf('x+y')
hold on
ezmesh('0','y','z')
hold on
ezmesh('x','1','z')
hold on
ezmesh('0')
hold on
ezmesh('x')
虽然这道题我们并没有完美的解决,但是这里我们要学会如何画一个简单的平面。
4. 在空间直角坐标系中画出球坐标系的三个基本坐标面:=常数,φ=常数,=常数.
首先,我们要对球坐标的三个基本平面有所了解。当ρ,θ或φ分别为常数时,可以表示如下特殊曲面:ρ= 常数,即以原点为心的球面;θ= 常数,即以原点为顶点、z轴为轴的圆锥面;φ= 常数,即过z轴的半平面。(一条直线将一个平面分为两部分,每一部分为一个半平面)
我们不妨以点(1,π/3,π/3)为例。
[x,y,z]=sphere(50);
z(z<0)=nan;
mesh(4*x,4*y,4*z)
hidden off
xx=[0;0;sqrt(3)];
yy=[0;0;3];
zz=[2;0;2];
hold on
fill3(xx,yy,zz,[0 0 0.8])
t=0:0.01:4;
r=sqrt(3).*t;
[x0,y0,z0]=cylinder(r,50);
hold on
mesh(x0,y0,4*z0)
axis equal
5. 在空间直角坐标系中画出两个球面和相交的图形.
显然,两球相交的面为一个平面:z=1;
ezmesh('1')
6. 试用cylinder 命令绘制圆锥面、旋转椭球面和旋转抛物面。
t=0:0.01:2;
r=2*t;
[x,y,z]=cylinder(r);
subplot(2,2,1)
mesh(x,y,z)
R=sqrt(1-t.^2./4);
[xx,yy,zz]=cylinder(R);
subplot(2,2,2)
mesh(xx,yy,2*zz)
hold on
mesh(xx,yy,-2*zz)
axis equal
rr=sqrt(t);
[x0,y0,z0]=cylinder(rr);
subplot(2,2,3)
mesh(x0,y0,z0)
7. 画出下面的特殊函数的曲面,并观察极值点的个数
ezmesh('(2*x^2-1.05*x^4+x^6)/(6-x*y+y^2)',[-3,3])
axis auto
(2)Rastrigin函数:,;
ezsurf('x^2+y^2-cos(18*x)-cos(18*y)',[-1,1])
shading flat
极值点个数为121个。(这个结果显然不是数出来的,由于过于复杂,我使用了AI问答,他告诉我是121个,doge。)
8. 在直角坐标系中绘制球被圆柱面截得的部分曲面.
r = 0:0.01:1;
t = 0 : 0.01 : 2*pi;
[r, t] = meshgrid(r, t);
x = 1 + r .* cos(t);
y = r .* sin(t);
z=sqrt(4-x.^2-y.^2);
mesh(x,y,z)
hold on
mesh(x,y,-z)
总结:画部分截面该如何画呢?以此题为例,首先,需要织一张网,这张网是这个截面在xoy上的 投影,那么如何去形成这个圆形的网格呢?需要用r和θ形成,然后再去形成z的矩阵即可。
9. 在直角坐标系中绘制球面与圆柱面, 和并用find命令将圆柱面中的球面部分或球面中的圆柱面部分“挖空”。
r = 0:0.01:2;
t = 0 : 0.01 : 2*pi;
[r, t] = meshgrid(r, t);
x = r .* cos(t);
y = r .* sin(t);
m=find(x.^2+y.^2<1);
x(m)=nan;
y(m)=nan;
z=sqrt(abs(4-x.^2-y.^2));
m1=find(y.^2+z.^2<1);
y(m1)=nan;
z(m1)=nan;
m2=find(x.^2+z.^2<1);
x(m2)=nan;
z(m2)=nan;
mesh(x,y,z)
hold on
mesh(x,y,-z)
推荐下一篇文章:数学实验第三版(主编:李继成 赵小艳)课后练习答案(三)(1)(2)https://blog.csdn.net/2301_80199493/article/details/135999384?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135999384%22%2C%22source%22%3A%222301_80199493%22%7D
本答案均由作者自己编写,由于时间原因,难免出现些许错误,还请大家多多指正。