王向东数学实验课本(可编辑)2-5

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

实验五 二元函数的图形

【实验目的】

1. 了解二元函数图形的制作。 2. 空间曲面等高线的制作。 3. 了解多元函数插值的方法。

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

【实验内容】

画出函数22y x z +=

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

【实验准备】

1.曲线绘图的MATLAB 命令

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

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

【实验方法与步骤】

练习1 画出函数22y x z +=

的图形,不妨将区域限制在]3,3[]3,3[),(-⨯-∈y x 。用

MATLAB 作图的程序代码为:

>>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的三维等高线, MA TLAB代码为:

>>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 =++2

2

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,1,3,4,5=====N d c b a 时的结果见图5.6, 当15,1,3,4,5=====N d c b i a 时的结果见图5.7, 当10,1.0,3,4,5=====N d c i b i a 时的结果见图5.8,

图5.6 椭球面

相关文档
最新文档