APP下载

Matlab绘图在数学教学中的应用

2013-04-29杨厚平王洪兰

关键词:绘图

杨厚平 王洪兰

摘要:数学是一门工具化的科学语言,我们用数学解决很多问题。然而在学习数学的同时,有很多空间曲面难以用手工画出它们的图形。例如:有一些多元函数,对于其图形却难以用人工画出。而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)。

猜你喜欢

绘图
数码绘图
数码绘图
数码绘图
数码绘图
数码绘图
来自河流的你
“禾下乘凉图”绘图人
一丘之貉
一板三眼
基于HTML5 Canvas绘图技术应用