空间解析几何中二次曲面截痕法的动画演示

时间:2022-10-05 06:23:39

空间解析几何中二次曲面截痕法的动画演示

摘要:使用MATLAB,将二次曲面的平面截痕法通过动画的方式演示出来,加强了教学的生动性,增进了学生对典型二次方程及其对应曲面的理解同时锻炼了学生动手编程能力。

关键词:空间解析几何;二次曲面;截痕法;MATLAB;动画

中图分类号:G642文献标识码:A文章编号:1009-3044(2011)25-6297-05

Animation of Method of cut-off Mark on Quadric Surface Based on MATLAB

DU Wei

(Department of Applied Mathematics, Shanghai Finance University, Shanghai 201209, China)

Abstract: Using Matlab, method of cut-off Mark in quadric surface is taught off by the form of animation. Which will promote the understanding of quadric equation and Programming skills of students.

Key words: space analytic geometry; quadric surface; method of cut-off Mark; MATLAB; animation

《空间解析几何》是大学数学及相关理工专业一年级课程,其中的二次曲面部分教学通常用到平面截痕法对五个典型二次方程判断其对应的二次曲面形状。截痕方法的思想是先求出坐标平面的平行平面与曲面的截线方程,从而得到截线形状,最终所有的截线构成二次曲面。该方法对学生的空间想象能力提出较高的要求。然而在空间解析几何教材中,通常都已经绘出了各个二次方程对应的曲面形状,这导致学生看书时往往不通过思考直接在大脑里建立起二次方程与曲面的对应关系,平面截痕法得不到有效的训练。

MATLAB作为具有强大功能的数学软件,被越来越多的应用数学工作者使用。目前MATLAB普遍作为教学软件在《数学实验》课程中使用。笔者在教学中发现截痕法可以通过MATLAB用动画的形式生动地演示出来。这样,通过教师多媒体演示或者让学生上机亲自编写程序都能够促进二次曲面部分的理解掌握。

1 截痕法的编程思路

五种二次曲面分别为:椭球面,单叶双曲面,双叶双曲面,椭圆抛物面,双曲抛物面。用坐标平面平行的平面跟各个二次曲面相截得到对应的截线,利用MATLAB将平面与截线用不同颜色绘出,当平面顺着坐标轴方向平行移动时,将其对应的截线保留下来,最后所有的截线在MATLAB绘图框中构成对应的二次曲面。下面将就MATLAB实现二次曲面截痕法的过程进行详细说明。

2 截痕法MATLAB实现过程

2.1 椭球面

椭球面的标准方程是:

(1)

用XY平面的平行平面z=k(|k|≤c)与标准方程相截得截线方程为:

(2)

由(2)式知截痕是一个椭球,当k值在[-b,b]范围内变动时,所有对应的截线就构成椭球面,将截线中的x,y变量用极坐标表示,MATLAB程序如下:

clc

clear all

hold on

axis ([-8 8 -8 8 -8 8])

axis on

grid on

view([0.41780.22470.8803])

a=3;b=4;c=5;

x=-a-5:a+5;

y=-b-5:b+5;

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

Z=zeros(size(X))+c;

for i=1:100

if abs(Z(1))

h=mesh(X,Y,Z);

k=sqrt(1-(Z(1)).^2/c.^2);

Theta1=linspace(0,2*pi,50);

X1=a*k.*cos(Theta1);

Y1=b*k.*sin(Theta1);

Z1=zeros(length(X1))+Z(1);

g=plot3(X1,Y1,Z1,'b');

else

break;

end

Z=Z-1/4;

F(i)=getframe;

delete(h);

end

movie(F,2,30)

hold on

运行程序可看到随着k值从正减小至负,过平面z=k的各条截线动态地不断呈现出,最终构成整个椭球面,显示的画面如图1所示。

2.2 单叶双曲面

单叶双曲面的标准方程:

(3)

用XY平面的平行平面z=k与标准方程相截得截线方程为:

(4)

由式4知截痕是一个椭球,当k值在实数范围内变动时,所有对应的截线就构成单叶双曲面,将截线式(4)中的x,y变量用极坐标表示,MATLAB程序如下:

clc

clear all

hold on

axis ([-15 15 -15 15 -15 15])

axis on

grid on

view([0.41780.22470.8803])

a=3;b=4;c=5;

x=-a-5:a+5;

y=-b-5:b+5;

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

Z=zeros(size(X))+10;

for i=1:80

h=mesh(X,Y,Z);

k=sqrt(1+(Z(1)).^2/c.^2);

Theta1=linspace(0,2*pi,50);

X1=a*k.*cos(Theta1);

Y1=b*k.*sin(Theta1);

Z1=zeros(length(X1))+Z(1);

g=plot3(X1,Y1,Z1,'b');

Z=Z-1/4;

F(i)=getframe;

delete(h);

end

movie(F,2,30)

hold on

运行程序可得动态显示的最终画面如图2所示。

2.3 双叶双曲面

双叶双曲面的标准方程:

(5)

用XZ平面的平行平面y=k(|k|≥b)与标准方程相截得截线方程为:

(6)

由方程(2)知截线总是一个椭圆,当k值在(-∞,-b),(b,+∞)范围内变动时,所有对应的截线就构成双叶双曲面。将截线中的x,y变量用极坐标表示,可将每个截线在MATLAB中表示出来。动画演示的MATLAB程序如下:

clc

clear all

hold on

axis ([-25 25 -25 25 -25 25])

axis on

grid on

view([0.42470.17400.8885])

a=3;b=4;c=5;

colormap([0,0,0]);

x=-a-14:a+14;

z=-c-14:c+14;

[X,Z]=meshgrid(x,z);

Y=zeros(size(X))-b-10;

for i=1:110

Y=Y+1./4;

if abs(Y(1))>b

h=surf(X,Y,Z);

k=sqrt((Y(1)).^2/b.^2-1);

Theta1=linspace(0,2*pi,50);

X1=a*k.*cos(Theta1);

Z1=c*k.*sin(Theta1);

Y1=zeros(size(X1))+Y(1);

g=plot3(X1,Y1,Z1,'b');

else

h=surf(X,Y,Z);

end

F(i)=getframe;

delete(h);

% delete(g);

end

movie(F,2,30)

hold on

运行程序可得动态显示的最终画面如图3所示。

2.4 椭球抛物面

椭球抛物面的标准方程为:

(7)

用XY平面的平行平面z=k(k≥0)与标准方程相截得截线方程为:

(8)

由(8)式可知当k>0时,截线是椭圆,当k=0时,截痕就是原点,将截线中的x,y变量用极坐标表示,可将每个截线在MATLAB中表示出来。动画演示的MATLAB程序如下:

clear all

hold on

axis ([-15 15 -15 15 -15 15])

axis on

grid on

view([0.41780.22470.8803])

a=3;b=4;

x=-a-5:a+5;

y=-b-5:b+5;

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

Z=zeros(size(X))+10;

while Z(1)>=0

i=1;

h=mesh(X,Y,Z);

k=sqrt(Z(1));

Theta1=linspace(0,2*pi,50);

X1=a*k.*cos(Theta1);

Y1=b*k.*sin(Theta1);

Z1=zeros(length(X1))+Z(1);

g=plot3(X1,Y1,Z1,'b');

Z=Z-1/4;

F(i)=getframe;

i=i+1;

delete(h);

end

movie(F,2,30)

hold on

运行程序可得动态显示的最终画面如图4所示。

2.5 双曲抛物面

双曲抛物面的标准方程为:

(9)

用XY平面的平行平面z=k与标准方程相截得截线方程为:

(10)

由(10)式可知当k>0时,截线是实轴平行于X轴,虚轴平行于Y轴的双曲线,k

clc

clear all

hold on

axis ([-25 25 -25 25 -25 25])

axis on

grid on

a=4;b=4;

x=-a-17:a+17;

y=-b-17:b+17;

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

Z=zeros(size(X))+20;

view([0.38480.76270.5199])

for i=1:150

Z=Z-1/4;

if Z(1)>0

h=mesh(X,Y,Z);

Y1=y;

X1=a*sqrt(Z(1)+Y1.^2/b.^2);

Z1=zeros(size(X1))+Z(1);

g=plot3(X1,Y1,Z1,-X1,Y1,Z1);

else

if abs(Z(1))

h=surf(X,Y,Z);

y1=(b/a)*x;

y2=-(b/a)*x;

z1=zeros(size(x));

g=plot3(x,y1,z1,x,y2,z1);

else

h=surf(X,Y,Z);

X1=x;

Y1=b*sqrt(-Z(1)+X1.^2/a.^2);

Z1=zeros(size(X1))+Z(1);

g=plot3(X1,Y1,Z1,X1,-Y1,Z1);

end

end

F(i)=getframe;

delete(h);

end

hold on

运行程序可得动态显示的最终画面如图5所示。

3 结束语

该文针对传统二次曲面截痕法教学方式的不足,利用MATLAB软件将截痕法的思想以动画形式演示出来,帮助学生更好的理解了二次曲面方程及对应图形的关系,同时更重要的是学生在大一就能接触到计算软件编程,锻炼了动身能力,促进了《空间解析几何》与《数学实验》等课程的融合。

参考文献:

[1] 吕林根, 许子道. 解析几何(第三版)[M]. 北京:高等教育出版社,1987.

[2] 朱旭, 李换琴. MATALB软件与基础数学实验[M]. 西安:西安交通大学出版社,2008.

上一篇:如何指导学生进行“微机应用实习” 下一篇:运动模糊图像复原技术介绍