王向东数学实验课本(可编辑)2-5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 椭球面