杨厚平 王洪兰
摘要:数学是一门工具化的科学语言,我们用数学解决很多问题。然而在学习数学的同时,有很多空间曲面难以用手工画出它们的图形。例如:有一些多元函数,对于其图形却难以用人工画出。而MATLAB的绘图语言正是解决这种难题的最好工具,方便并且直观。
关键词:多元函数 MATLAB语言 绘图
0 引言
高职数学教学中,讲授空间曲面与曲线这个内容时,总感到“虚”,不直观、具体,利用Matlab强大的绘图功能,可方便地展示空间曲面与曲线。
1 Matlab绘图功能
Matlab绘图功能非常强大,这里只介绍几个常用函数的调用,抛砖引玉,希望对空间解析几何及多元函数部分的教学有所帮助。
1.1 产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:
x=a:d1:b;y=c:d2:d;
[X,Y]=meshgrid(x,y);
语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。
1.2 绘制三维曲面的函数 surf函数和mesh函数的调用格式为:
mesh(x,y,z,c)
surf(x,y,z,c)
一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。
1.3 标准三维曲面 sphere函数的调用格式为:
[x,y,z]=sphere(n)
cylinder函数的调用格式为:
[x,y,z]= cylinder(R,n)
MATLAB还有一个peaks函数,称为多峰函数,常用于三维曲面的演示。
2 Matlab绘图案例
2.1 空间曲面的三维网线图与三维曲面图 案例1、函数z=10-2x2-y2的三维网线图。
用MATLAB作图的程序为
clear; x=-1:0.1:1;
y=-1:0.1:1; [X,Y]=meshgrid(x,y);
Z=10-2*X.^2-Y.^2; mesh(X,Y,Z);
title('空间曲面')
运行结果(略)。
案例2、函数z=xy的三维曲面图。
用MATLAB作图的程序为
clf
ezsurf('x*y','circ'); shading flat;
view([-18,28]) title('空间曲面')
运行结果(略)。
2.2 旋转曲面 案例3、画出函数y=的图形,其中(x,y)∈[-3,3]×[-3,3]。
用MATLAB作图的程序为
clear; x=-3:0.1:3;
y=-3:0.1:3; [X,Y]=meshgrid(x,y);
Z=sqrt(X.^2+Y.^2); mesh(X,Y,Z);
运行结果(略)。
案例4、曲线r=5+cosx 0≤x≤3π绕x轴旋转而形成的旋转曲面。
用MATLAB作图的程序为
x=0:pi/20:pi*3; r=5+cos(x);
[a,b,c]=cylinder(r,30); mesh(a,b,c)
title('旋转曲面')
运行结果(略)。
案例5:绘制母线方程为y=2+sinx的旋转曲面(空心)
用MATLAB作图的程序为
x=0:pi/10:2*pi;
y=2+sin(x);
[x,y,z]=cylinder(y,30);
mesh(x,y,z)
title('旋转曲面')
运行结果(略)。
2.3 柱面 案例6、绘制柱面x-1+y-2-9=0。
用MATLAB作图的程序为
[x,y,z]=cylinder([3,3],20); x1=x+1;
y1=y+2; z1=z;
surf(x1,y1,z1)
运行结果(略)。
2.4 二次曲面 案例7、二次曲面的函数如下=d讨论参数a,b,c对其形状的影响。
用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 z1(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');%X,Y,Z轴的说明
hold off %停止
运行结果(略)。
案例8、椭球面的绘制。
用MATLAB作图的程序为
ellipsoid(1,2,3,5,4,3,20)%椭球面绘制函数
运行结果(略)。
案例9、绘制双叶双曲面。
用MATLAB作图的程序为
a=5;b=4;c=10;
[x,y]=meshgrid(-20:1:20,-20:1:20);
z=sqrt(c*(1+x.^2/a^2+y.^2/b^2));
mesh(z)
hold on
mesh(-z)
运行结果(略)。
2.5 二元函数的图象,二元函数的定义域 案例10、作出函数z=xy的图形
用MATLAB作图的程序同案例2。
运行结果(略)。
2.6 偏导数的几何意义 案例11、函数z=2-2x2-y2在点(0.5,0.5)处的偏导数的几何意义。
用MATLAB作图的程序为
clear; x=-1:0.1:1;
y=-1:0.1:1; [X,Y]=meshgrid(x,y);
Z=2-2*X.^2-Y.^2; mesh(X,Y,Z);
运行结果(略)。
图1、2分别是函数z=2-2x2-y2在点(0.5,0.5)处对x、y的偏导数。
参考文献:
[1]于万波编著.基于MATLAB的计算机图形与动画技术[M].清华大学出版社,2007-6.
[2]赵静,但琦主编.数学建成模与数学试验[M].高教出版社,2009-1.
[3]薛定宇,陈阳泉著.高等应用数学问题的MATLAB求解[M].清华大学出版社,2008-3.
基金项目:湖南省高等学校教育科学研究项目(12C1081)。