matlab实验五

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五曲面绘图

【实验目的】

1.了解二元函数图形的制作。

2.空间曲面等高线的制作。

3.学习掌握MATLAB软件有关的命令。

【实验内容】

画出函数2

2y

=的图形,并画出其等高线。

x

z+

【实验准备】

1.曲线绘图的MATLAB命令

MATLAB中主要用mesh,surf命令绘制二元函数图形。

可以用help mesh, help surf查阅有关这些命令的详细信息

【实验方法与步骤】

练习1画出函数2

2y

=的图形,不妨将区域限制在

z+

x

-

x。用MATLAB作图的程序代码为:

(-

y

)

]3,3

,

[

]3,3

[

>>clear;

>>x=-3:0.1:3; %x的范围为[-3,3]

>>y=-3:0.1:3; %y的范围为[-3,3]

>>[X,Y]=meshgrid(x,y); %将向量x,y指定的区域转化为矩阵X,Y

>>Z=sqrt(X.^2+Y.^2); %产生函数值Z

>>mesh(X,Y,Z)

结果如图5.1。图5.1是网格线图,如果要画完整的曲面图,只需将上述的MATLAB 代码mesh(X,Y,Z)改为surf(X,Y,Z), 结果如图5.2

图5.1 锥面图5.2 锥面

要画等高线,需用contour,contour3命令.其中contour为二维等高线, contour3为三维等高线,如画图5.1的三维等高线, MATLAB代码为:>>clear;

>>x=-3:0.1:3;

>>y=-3:0.1:3;

>>[X,Y]=meshgrid(x,y);

>>Z=sqrt(X.^2+Y.^2);

>>contour3(X,Y,Z,10) %画10条等高线

>>xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') %三个坐标轴的标记>>title('Contour3 of Surface') %标题

>>grid on %画网格线

结果如图5.3.

图5.3 等高线

如画图5.1的二维等高线, MATLAB代码为:

>>clear; x=-3:0.1:3; y=-3:0.1:3;

>>[X,Y]=meshgrid(x,y); Z=sqrt(X.^2+Y.^2);

>> contour(X,Y,Z,10)

>>xlabel('X-axis'),ylabel('Y-axis')

>>title('Contour of Surface')

>>grid on

结果如图5.4.

图5.4 等高线

如果要画1=z 的等高线,则用命令

>>clear; x=-3:0.1:3; y=-3:0.1:3;

>>[X,Y]=meshgrid(x,y); Z=sqrt(X.^2+Y.^2);

>> contour(X,Y,Z,[1 1])

结果如图5.5。

图5.5 等高线

练习1中,函数值22y x z +=可简单算出。在有些情况下,函数值),(y x f z =不能简单算出。这是因为x 和y 的值可能是非均匀间隔的甚至是随机分布的,也

可能使用了不同的坐标系,比如非长方形的网。出现这些情况时,MATLAB 中的函数griddata 就用来产生经查值后的均匀间隔数据以作图。

练习2 二次曲面的方程如下

d c

z b y a x =++22

2222 讨论参数c b a ,,对其形状的影响。

本练习的关键在于如何作出三维曲面图形,特别注意在给定y x ,值求z 时,若有开方运算,一是会出现虚数,二是对实数也有正负两个解。为了使虚数不出现在绘图中,采用了一种技巧,就是将虚数都换成非数(NaN). MATLAB 代码为:

>>a=input('a='); b=input('b='); c=input('c=');

>>d=input('d='); N=input('N='); %输入参数,N 为网格线数目

>>xgrid=linspace(-abs(a), abs(a),N); %建立x 网格坐标

>>ygrid=linspace(-abs(b), abs(b),N); %建立y 网格坐标

>>[x,y]=meshgrid(xgrid,ygrid); %确定N N ⨯个点的x,y 网格坐标

>>z=c*sqrt(d-y.*y/b^2-x.*x/a^2); u=1; %u=1,表示z 要取正值

>>z1=real(z); %取z 的实部z1

>>for k=2:N-1 %以下7行程序的作用是取消z 中含虚数的点

>>for j=2:N-1

if imag(z(k,j))~=0 z1(k,j)=0; end

if all(imag(z([k-1:k+1],[j-1:j+1])))~=0 za(k,j)=NaN; end

end

end

>>surf(x,y,z1), hold on %画空间曲面

>>if u==1 z2=-z1; surf(x,y,z2); %u=1时加画负半面axis([-abs(a),abs(a), -abs(b), abs(b), -abs(c), abs(c)]);

end

>>xlabel('x'),ylabel('y'),zlabel('z')

>>hold off

运行程序,当20

d

=N

c

b

a时的结果见图5.6,

=

=

,3

,4

,5=

=

,1

当15

d

=N

=

c

b i

a时的结果见图5.7,

,5=

,1

,3

,4

=

=

当10

d

=N

=

c i

b i

a时的结果见图5.8,

,5=

,1.0

=

,3

,4

=

图5.6 椭球面

相关文档
最新文档