APP下载

基于MATLAB的空间解析几何教学案例研究

2024-09-12杨梦云

科技资讯 2024年15期

摘要:在空间解析几何教学过程中,常常存在绘图空间曲线和曲面的困难和缺乏直观性的问题。以MATLAB为基础,从计算功能、绘图功能和动态可视化三个方面探讨了空间解析几何教学的案例。利用MATLAB的内置函数求解多个几何问题的数值解,以及绘制空间曲面和曲线。此外,通过动态可视化方法直观地演示了二次曲面的平行截痕法,有助于学生更好地理解和感知二次曲面的形状和性质。本文旨在为教师和学生提供空间解析几何教学和学习的参考。

关键词:空间解析几何 MATLAB 二次曲面 平行截痕法

Case Studies of Space Analytical Geometry Teaching Based on MATLAB

YANG Mengyun

Hunan First Normal University, Changsha, Hu’nan Province, 410205 China

Abstract: In the teaching process of Space Analytic Geometry, difficulties and lack of intuitiveness often arise in drawing spatial curves and surfaces. In this paper, based on MATLAB, it explores cases in Space Analytic Geometry teaching from three aspects: computational functions, drawing capabilities, and dynamic visualization; It uses MATLAB's built-in functions to solve numerical solutions for multiple geometric problems, as well as to draw spatial curves and surfaces. Additionally, MATLAB's Dynamic Visualization methods are used to visually demonstrate the method of Cut-off Mark of quadratic surfaces. This approach aids students in better understanding and perceiving the shapes and properties of quadratic surfaces. This paper aims to provide a reference for teachers and students in the teaching and learning of Space Analytic Geometry.

Key Words: Space Analytic Geometry; MATLAB; Quadratic Surfaces; Method of Cut-off Mark

空间解析几何不仅是数学与应用数学专业中的一门基础课程,而且还是理工科高等数学课程的重要组成部分。它在培养学生空间想象能力和抽象思维能力上扮演着至关重要的角色[1-2]。然而,教师在讲授空间解析几何时,绘制复杂的空间图形往往是一项具有挑战性的任务。传统的黑板板书,不仅需要教师具备一定的绘画功力,而且绘制出来的图形往往缺乏直观性,也无法灵活地改变观察角度。通过引入MATLAB这一教学辅助工具可以使空间解析几何的教学内容能够更加直观、生动,进而提高学习兴趣和教学效果。

本文探讨了MATLAB在空间解析几何教学中的多元应用,着重突出其计算功能、绘图功能和动态可视化方面的优势。同时,还提供了一套可以免费获取的MATLAB代码,教师和学生可以根据实际的教学和学习需求对其进行调整和修改。本文中所涉及的MATLAB代码可在以下链接处获取:https://github.com/YangPhD84/Geometry。

1计算功能

MATLAB是一种功能强大的科学计算软件和编程语言[3]。它提供了许多内置函数,使得数学、科学和工程计算更加方便和高效。在空间解析几何中,可以利用MATLAB现有的内置函数计算多种几何问题的数值解,如向量的模、点积、叉积等基本运算。同样,可以使用这些基本运算的组合来求解混合积、异面直线的距离、直线和平面的交点和夹角等具体问题。

案例1:已知二直线和,试说明两直线为异面直线。

分析:由已知条件给定的两直线标准方程,可知直线的方向向量和定点,直线的方向向量和定点。两直线是否异面可通过计算混合积来判断。接下来,可以在MATLAB命令窗口直接输入或编写一个M脚本文件。

v1=[3,-1,2];v2=[1,-2,2];p1=[1,7,-4];p2=[1,-2,0];

mixed_product=dot(cross(v1,v2),p2-p1)%计算混合积

if mixed_product~=0

disp("这两条直线异面");

else

disp("这两条直线共面");

end

其中,函数dot和cross分别表示内积和外积运算,通过混合积的定义可知dot(cross(v1,v2),p2-p1)表示和这三个向量的混合积。

案例2:设直线的参数方程为,平面的方程为,求直线和平面的交点。

分析:本案例可使用MATLAB中的符号运算进行求解。首先使用syms定义符号对象,即直线参数方程的变量t。将直线参数方程和平面方程用符号表示式呈现,然后使用函数solve计算平面和直线交点对应的t值,最后利用subs计算出最终的交点坐标。对应的MATLAB程序为

syms t%符号变量

x=1+2*t; y=2-3*t; z=4*t;

plane_sym=3*x-2*y-z+1;

t_sol=double(solve(plane_sym,t))%直线和平面交点对应的t

x_sol=double(subs(x,t,t_sol));

y_sol=double(subs(y,t,t_sol));

z_sol=double(subs(z,t,t_sol));

fprintf("交点的坐标:(%4.2f,%4.2f,%4.2f).\n",x_sol,y_sol,z_sol);

其中,subs函数表示将符号表达式中的某些符号变量替换为指定的新的变量。常用调用方式为:subs(S,OLD,NEW)表示将符号表达式S中的符号变量OLD替换为新的值NEW。

2绘图功能

MATLAB独特的绘图功能和灵活的交互性,使它成为众多学术研究者绘图的首选工具。在绘制空间曲面方面,常见的方法是使用meshgrid函数生成坐标网格,再使用mesh或surf函数绘制平滑连续的曲面。在绘制空间曲线方面,plot3函数能够实现精确的绘制。除了基本的绘图功能,MATLAB具有良好的交互性。可以通过鼠标或输入命令来完成旋转、缩放和平移操作,进而从不同的角度观察曲面和曲线。

2.1绘制空间曲面

根据给定的曲面方程类型,可以采用不同的方法进行绘制[4-5]。如果曲面的方程是参数方程,可以使用meshgrid函数创建参数u、v的曲纹网格,并使用mesh或surf函数绘制图形。

案例3:以单叶双曲面的参数方程为例,使用mesh实现该曲面的MATLAB绘图。

a=2;b=3;c=4;%具体化a,b,c的值

u=linspace(-pi/2+0.01,pi/2-0.01,100);

v=linspace(0,2*pi,100);%网格化参数u,v

[u,v]=meshgrid(u,v);

x=a*sec(u).*cos(v);

y=b*sec(u).*sin(v);

z=c*tan(u);%单叶双曲面的参数方程

mesh(x,y,z);

axis([-10,10,-10,10,-10,10]);

其中,linspace函数的作用是生成线性间距向量。由于参数,在MATLAB代码中需要注意去掉区间的这两个端点。绘制完成的图形如图1所示。

将曲面的参数方程配合MATLAB函数mesh或surf来绘制并展示曲面的经纬线网格,学生可以更清晰地捕捉到曲面的特征和结构细节。这对于空间解析几何的学习来说是十分有用的。对于其他四种典型的二次曲面,包括椭球面、双叶双曲面、椭圆抛物面和双曲抛物面,只需替换相应的参数方程及其参数范围即可,详细的代码可在本文提供的Github网址中查阅。如果曲面的方程是标准方程,可以使用meshgrid函数创建自变量x、y、z的网格,并使用isosurface函数绘制图形。

案例4:以单叶双曲面的标准方程为例,使用isosurface实现该曲面的MATLAB绘制。

a=2;b=3;c=4;%具体化a,b,c的值

[x,y,z]=meshgrid(-10:0.1:10,-10:0.1:10,-10:0.1:10);

F=x.^2/a^2+y.^2/b^2-z.^2/c^2-1;%单叶双曲面的标准方程

p=patch(isosurface(x,y,z,F,0));

set(p,'FaceColor','green','EdgeColor','none','FaceAlpha',0.3);

camlight; grid on; view([80,30]);

使用isosurface函数绘制的单叶双曲面,如图2所示。isosurface函数真正实现了“所见即所得”的绘图体验。为了能从不同的角度呈现曲面,可以利用view函数来调整观察角度。同时,也可结合使用camlight或lighting函数,来创建更真实和高质量的三维视觉效果。

2.2绘制空间曲线

MATLAB提供了plot3函数用于绘制空间曲线。plot3(x,y,z)绘制由x、y、z连接的一组坐标,其中x、y、z指定为相同长度的向量。

案例5:圆柱螺线的参数方程为,使用plot3实现该曲线的MATLAB绘制。

radius=1;%圆柱半径

theta=linspace(0,5*pi,1000);

x=radius*cos(theta);

y=radius*sin(theta);

z=theta/pi;

plot3(x,y,z);%绘制圆柱螺线

3动态可视化

对于《五种典型的二次曲面》这一节内容,教师的讲授流程一般是先用标准方程来讨论二次曲面的对称性和分布范围,再利用平行截痕法来绘制截口图形,从而得到二次曲面的全貌。如果教师利用黑板绘制或使用PPT静态图呈现全过程,那学生对曲面的直观理解是十分有限。为了更好地提升学生对二次曲面的理解和展示平行截痕法,可以使用MATLAB动态图展示二次曲面与平行于坐标面的平面的交线。

案例6:设双叶双曲面的标准方程为。利用MATLAB动态展示平行截痕法。

分析:使用平行于xoy坐标平面的动平面去截该双叶双曲面。平面上将会呈现一条交线,随着平面的移动将产生一系列的交线,其中交线可以使用空间曲线的参数方程表示,并用plot3函数绘制。具体的动态演示MATLAB代码如下。

hold on;

grid on;

axis([-10,10,-10,10,-10,10]);

a=1;b=2;c=2;%双叶双曲面方程:(x/a)^2+(y/b)^2-(z/c)^2=-1

plane=surf([-10,10;-10,10],[-10,-10;10,10],[-10,-10;-10,-10],'FaceColor','green','FaceAlpha',0.3);%设置截平面

u=linspace(0,2*pi);

for k=-10:0.5:10

plane.ZData=[k,k;k,k];%更新平面高度

if (k/c)^2-1>=0

x=sqrt((k/c)^2-1)*a*cos(u);

y=sqrt((k/c)^2-1)*b*sin(u);

z=k*ones(size(x));

d=plot3(x,y,z,'r');%更新交线

end

view([30,30]);

drawnow;

pause(0.05);

end

将a、b、c赋为具体值,如a=1;b=2;c=2。动平面在z轴上移动的范围为[-10,10]。运行代码后,动平面与双叶双曲面将产生一系列的空间曲线。图4给出了部分动态截图。平行截痕法的另外两种情况是分别使用平行于yoz和zox坐标平面的动平面去截该双叶双曲面。实现过程与上述情况类似,具体MATLAB代码可查阅本文提供的Github网址。

4结语

本文通过从计算功能、绘图功能和动态可视化3个方面,详细呈现了MATLAB在空间解析几何中的多个具体教学案例。通过引入MATLAB编程和可视化工具,提供了一种新颖有效的教学方法,有助于学生理解空间解析几何概念。希望这些案例能够为教师提供更好的教学手段,提升学生的学习效果。

参考文献

[1] 唐雪芝.基于APOS理论的《高等数学》概念信息化教学模式设计与实践研究[D].昆明:云南大学,2020.

[2] 张纪平,沈晓斌,洪佳瑜,等.Matlab在绘制解析几何二次曲面图像的应用[J].科技风,2021(31):25-27.

[3] YANG M Y, LI Y H,WANG J X.Feature and Nuclear Norm Minimization for Matrix Completion[J].IEEE Transactions on Knowledge and Data Engineering, 2022, 34(5):2190-2199.

[4]马玉雯,潘朝毅.利用matlab将解析几何空间曲面可视化[J].内江科技,2020,41(10):36-38.

[5]张美恋.应用Matlab软件绘制二次直纹曲面[J].宁德师范学院学报(自然科学版),2020,32(1):86-90,99.