1. 引言
《高等数学》作为理工科关键公共必修课,其空间解析几何里的五类二次曲面,在多元函数微积分中应用广泛。然而,不少同学后续面对涉及二次曲面的计算时,因难以将三元二次方程与曲面形状对应,缺乏空间想象感而不知所措。因此,教学中着力培养学生的空间想象与绘图能力,对筑牢微积分学习根基极为关键。
随着计算机技术的飞速发展,各类设计软件不断涌现。MATLAB以其卓越的绘图与程序设计功能脱颖而出,能够生成极为逼真的二次曲面动态图,并轻松保存为AVI格式,可无缝插入PPT中播放。教师运用这一优势,在课堂上直观展示,能极大地提升学生的兴趣,显著增强教学效果,助力学生理解知识,其源代码更能促进学生学习程序语言。
在教育领域持续创新的当下,诸多学者已借助先进软件,对二次曲面教学展开了深入探索。如刘兴元、何宜军[1]基于Mathematica软件,巧妙地探讨了截痕法和伸缩法在二次曲面教学中的应用;度巍[2]则借助MATLAB的强大功能,成功实现了二次曲面截痕法的动态演示;洪晓芬[3]利用MATLAB动画制作原理将高等数学中的一些抽象函数的图形及二次曲面的形成过程动态而直观地进行展示。受这些研究成果的启发,笔者结合教学实践中发现学生存在的问题,充分利用MATLAB软件精心制作AVI动态图,用以生动演示椭圆锥面与椭圆抛物面这两类常见却又极易混淆的标准二次曲面的动态形成过程。下文将从两类曲面的标准方程、参数方程形式不同,截痕法以及伸缩法作图过程不同展开介绍。
2. 标准方程及参数方程形式不同
2.1. 椭圆锥面
标准方程:
参数方程:
其中,
,
。
2.2. 椭圆抛物面
标准方程:
参数方程:
其中,
,
。
或
其中,
,
。
3. 图形特征(截痕)不同
截痕法,即用坐标面和平行于坐标面的平面去截曲面,考察它们的交线(截痕)的形状,加以综合,从而了解曲面的全貌。本文针对椭圆锥面和椭圆抛物面,用三类平行于坐标面的平面分别去截相应曲面,研究其截痕形状。
3.1. 椭圆锥面
① 用与XOY面平行的平面
与椭圆锥面相交截得交线方程为:
由上式知:当
时,截痕是椭圆,其长轴和短轴分别是
、
;当
时,截痕就是坐标原点,如图1所示。
Figure 1. Intersection curve of the elliptic cone and the plane
图1. 椭圆锥面与平面
相交的截痕
② 用与YOZ面平行的平面
与椭圆锥面相交截得交线方程为:
由上式知:当
时,截痕是平行于YOZ面的直线(不相交),当
时,截痕就是过坐标原点的两条相交直线,如图2 (左侧)所示。
Figure 2. Intersection curve of the elliptic cone and the planes
and
图2. 椭圆锥面与平面
及平面
相交的截痕
③ 用与ZOX面平行的平面
与椭圆锥面相交截得交线方程为:
同理,由上式知:当
时,截痕是平行于ZOX面的直线(不相交),当
时,截痕就是过原点的两条相交直线,如图2 (右侧)所示。
3.2. 椭圆抛物面
① 用与XOY面平行的平面
与椭圆抛物面相交截得交线方程为:
由上式知:当
时,截痕是椭圆,其长轴和短轴分别是
、
;当
时,截痕就是坐标原点,如图3所示。
② 用与YOZ面平行的平面
与椭圆抛物面相交截得交线方程为:
由上式知:当
时,截痕是与YOZ面平行的平面上的抛物线,其顶点不过坐标原点;当
时,截痕是YOZ面上顶点在坐标原点的抛物线,如图4 (左侧)所示。
③ 用于ZOX面平行的平面
与椭圆抛物面相交截得交线方程为:
由上式知:当
时,截痕是与ZOX面平行的平面上的抛物线,其顶点不过坐标原点;当
时,截痕是ZOX面上顶点在坐标原点的抛物线,如图4 (右侧)所示。
Figure 3. Intersection curve of the elliptic cone and the plane
图3. 椭圆抛物面与平面
相交的截痕
Figure 4. Intersection curve of the elliptic paraboloid and the planes
and
图4. 椭圆抛物面与平面
及平面
相交的截痕
4. 伸缩变形方式不同
伸缩变形法是探究曲面形状时颇为便捷的一种手段。在本文中,针对椭圆锥面与椭圆抛物面这两种曲面,提出一种构建方式:先使坐标面上的特定曲线绕坐标轴旋转,从而形成旋转曲面,接着对所得到的旋转曲面实施伸缩变形操作,最终获取目标椭圆锥面与椭圆抛物面。
4.1. 椭圆锥面
椭圆锥面的形成方式不唯一,本文仅展示ZOX坐标面上的直线
,先绕
轴旋转,生成旋转曲面——圆锥面,再沿
轴方向伸缩
倍,得到椭圆锥面
的过程,AVI动态图的MATLAB程序如下。在MATLAB命令窗口输入:scalable_ellipse_cone(3,5,4),即可分别生成直线
、圆锥面及椭圆锥面,如图5所示。
Figure 5. Stretching method for generating elliptical cones
图5. 生成椭圆锥面的伸缩法
function scalable_ellipse_cone(a,b,u)
aviobj=VideoWriter('scalable_ellipse_cone.avi'); open(aviobj);
hold on
r=-u:0.1:u;
t=0:0.2:2*pi+0.2;
[T,R]=meshgrid(t,r);
X=a*cos(T).*R;
Y=a*sin(T).*R;
Z=R;
l=a*u;
axis([-l,l,-l,l,-u,u]); hold on;
view(-37.5,60);%
quiver3(0,0,0,-a,0,0,2.2,'k','filled','LineWidth',1.8);
quiver3(0,0,0,0,-b,0,2.5,'k','filled','LineWidth',1.8);
quiver3(0,0,0,0,0,u,3,'k','filled','LineWidth',1.8);
text(0,-0.8,2*u,'Z');
text(0,-2*b,0.2,'Y');
text(-2*a,1,0.4,'X');
axis off;
hold on;
set(gcf,'color',[1 1 1]); n=size(Z,2);
plot3(X(:,1),Y(:,1),Z(:,1),'r');
title('z=x/a \rightarrow 圆锥面 \rightarrow 椭圆锥面','FontSize',20,'Color','k');
text(l,0,u,' \leftarrow z=x/a');
set(gcf,'color',[1 1 1]);
currFrame = getframe(gcf);
writeVideo(aviobj,currFrame);
drawnow;
pause(10);
for i=2:n
surf(X(:,i-1:i),Y(:,i-1:i),Z(:,i-1:i));
pause(0.5);
drawnow;
set(gcf,'color',[1 1 1]);
currFrame = getframe(gcf);
writeVideo(aviobj,currFrame);
drawnow;
end
pause(10);
l=l*b/a;
axis([-l,l,-l,l,-u,u]); hold on;
pause(5);
for i=2:n
surf(X(:,i-1:i),b/a*Y(:,i-1:i),Z(:,i-1:i));
pause(5);
set(gcf,'color',[1 1 1]);
currFrame = getframe(gcf);
writeVideo(aviobj,currFrame);
drawnow;
end
close(aviobj);
4.2. 椭圆抛物面
Figure 6. Stretching method for generating elliptical paraboloid
图6. 生成椭圆抛物面的伸缩法
椭圆抛物面的形成方式不唯一,本文仅展示ZOX坐标面上的曲线
,先绕
轴旋转,生成旋转抛物面,再沿
轴方向伸缩
倍,得到椭圆抛物面
的过程,AVI动态图的MATLAB程序如下。在MATLAB命令窗口输入:elliptic_parabolic(3,5,4),即可分别生成曲线
、旋转抛物面及椭圆抛物面,如图6所示。
function elliptic_parabolic(a,b,u)
aviobj=VideoWriter('scalable_ellipse_paraboloid.avi');
open(aviobj);
r=0:0.2:u;
t=0:0.2:2*pi+0.2;
[T,R]=meshgrid(t,r);
X=a*cos(T).*R;
Y=a*sin(T).*R;
Z=ones(size(T)).*R.^2;
l=a*u;
axis([-l,l,-l,l,-u,u]);
hold on;
view(-37.5,60);
quiver3(0,0,0,-a,0,0,2.2,'k','filled','LineWidth',1.8);
quiver3(0,0,0,0,-b,0,2.5,'k','filled','LineWidth',1.8);
quiver3(0,0,0,0,0,2,u,'k','filled','LineWidth',1.8);
text(0,-0.8,2*u,'Z'); text(0,-2*b,0.2,'Y');text(-2*a,1,0.4,'X');
axis off; hold on; set(gcf,'color',[1 1 1]); n=size(Z,2);
plot3(X(:,1),Y(:,1),Z(:,1),'r');
title('z=x^2/a^2 \rightarrow 旋转抛物面 \rightarrow 椭圆抛物面','FontSize',20,'Color','k');
set(gcf,'color',[1 1 1]);
currFrame = getframe(gcf);
writeVideo(aviobj,currFrame);
drawnow;
pause(10);
for i=2:n
surf(X(:,i-1:i),Y(:,i-1:i),Z(:,i-1:i));
pause(0.5);
drawnow;
set(gcf,'color',[1 1 1]); %
currFrame = getframe(gcf);
writeVideo(aviobj,currFrame);
drawnow;
end
pause(10);
for i=2:n
surf(X(:,i-1:i),b/a*Y(:,i-1:i),Z(:,i-1:i));
pause(5);
set(gcf,'color',[1 1 1]);
currFrame = getframe(gcf);
writeVideo(aviobj,currFrame);
drawnow;
end
close(aviobj);
5. 结论
综上所述,通过对椭圆锥面和椭圆抛物面在标准方程、参数方程、图形截痕以及伸缩变形方式等多方面的深入剖析,并借助MATLAB的强大功能制作AVI动态图辅助教学,取得了显著成效。在教学过程中,学生能够直观地看到两类曲面的动态形成过程,极大地增强了教学内容的直观性。这种创新教学方法有效激发了学生的学习积极性,有助于学生轻松区分椭圆锥面和椭圆抛物面,从而提升了他们的空间想象能力。学生在面对二次曲面相关问题时,分析与解决问题的能力也得到锻炼,能够扎实掌握相关知识,为后续多元函数微积分等课程的学习筑牢基础。未来,可进一步探索MATLAB在更多复杂二次曲面教学中的应用,不断优化教学方法,提升教学质量。
基金项目
西安石油大学课程思政示范课项目:高等数学I;西安石油大学2024年度“立德树人”研究课题(LD202426);西安石油大学2020年度校级一流课程建设项目——高等数学。