摘要:在空間解析幾何教學(xué)過程中,常常存在繪圖空間曲線和曲面的困難和缺乏直觀性的問題。以MATLAB為基礎(chǔ),從計算功能、繪圖功能和動態(tài)可視化三個方面探討了空間解析幾何教學(xué)的案例。利用MATLAB的內(nèi)置函數(shù)求解多個幾何問題的數(shù)值解,以及繪制空間曲面和曲線。此外,通過動態(tài)可視化方法直觀地演示了二次曲面的平行截痕法,有助于學(xué)生更好地理解和感知二次曲面的形狀和性質(zhì)。本文旨在為教師和學(xué)生提供空間解析幾何教學(xué)和學(xué)習(xí)的參考。
關(guān)鍵詞:空間解析幾何 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
空間解析幾何不僅是數(shù)學(xué)與應(yīng)用數(shù)學(xué)專業(yè)中的一門基礎(chǔ)課程,而且還是理工科高等數(shù)學(xué)課程的重要組成部分。它在培養(yǎng)學(xué)生空間想象能力和抽象思維能力上扮演著至關(guān)重要的角色[1-2]。然而,教師在講授空間解析幾何時,繪制復(fù)雜的空間圖形往往是一項具有挑戰(zhàn)性的任務(wù)。傳統(tǒng)的黑板板書,不僅需要教師具備一定的繪畫功力,而且繪制出來的圖形往往缺乏直觀性,也無法靈活地改變觀察角度。通過引入MATLAB這一教學(xué)輔助工具可以使空間解析幾何的教學(xué)內(nèi)容能夠更加直觀、生動,進(jìn)而提高學(xué)習(xí)興趣和教學(xué)效果。
本文探討了MATLAB在空間解析幾何教學(xué)中的多元應(yīng)用,著重突出其計算功能、繪圖功能和動態(tài)可視化方面的優(yōu)勢。同時,還提供了一套可以免費獲取的MATLAB代碼,教師和學(xué)生可以根據(jù)實際的教學(xué)和學(xué)習(xí)需求對其進(jìn)行調(diào)整和修改。本文中所涉及的MATLAB代碼可在以下鏈接處獲取:https://github.com/YangPhD84/Geometry。
1計算功能
MATLAB是一種功能強大的科學(xué)計算軟件和編程語言[3]。它提供了許多內(nèi)置函數(shù),使得數(shù)學(xué)、科學(xué)和工程計算更加方便和高效。在空間解析幾何中,可以利用MATLAB現(xiàn)有的內(nèi)置函數(shù)計算多種幾何問題的數(shù)值解,如向量的模、點積、叉積等基本運算。同樣,可以使用這些基本運算的組合來求解混合積、異面直線的距離、直線和平面的交點和夾角等具體問題。
案例1:已知二直線和,試說明兩直線為異面直線。
分析:由已知條件給定的兩直線標(biāo)準(zhǔn)方程,可知直線的方向向量和定點,直線的方向向量和定點。兩直線是否異面可通過計算混合積來判斷。接下來,可以在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
其中,函數(shù)dot和cross分別表示內(nèi)積和外積運算,通過混合積的定義可知dot(cross(v1,v2),p2-p1)表示和這三個向量的混合積。
案例2:設(shè)直線的參數(shù)方程為,平面的方程為,求直線和平面的交點。
分析:本案例可使用MATLAB中的符號運算進(jìn)行求解。首先使用syms定義符號對象,即直線參數(shù)方程的變量t。將直線參數(shù)方程和平面方程用符號表示式呈現(xiàn),然后使用函數(shù)solve計算平面和直線交點對應(yīng)的t值,最后利用subs計算出最終的交點坐標(biāo)。對應(yīng)的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))%直線和平面交點對應(yīng)的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("交點的坐標(biāo):(%4.2f,%4.2f,%4.2f).\n",x_sol,y_sol,z_sol);
其中,subs函數(shù)表示將符號表達(dá)式中的某些符號變量替換為指定的新的變量。常用調(diào)用方式為:subs(S,OLD,NEW)表示將符號表達(dá)式S中的符號變量OLD替換為新的值NEW。
2繪圖功能
MATLAB獨特的繪圖功能和靈活的交互性,使它成為眾多學(xué)術(shù)研究者繪圖的首選工具。在繪制空間曲面方面,常見的方法是使用meshgrid函數(shù)生成坐標(biāo)網(wǎng)格,再使用mesh或surf函數(shù)繪制平滑連續(xù)的曲面。在繪制空間曲線方面,plot3函數(shù)能夠?qū)崿F(xiàn)精確的繪制。除了基本的繪圖功能,MATLAB具有良好的交互性。可以通過鼠標(biāo)或輸入命令來完成旋轉(zhuǎn)、縮放和平移操作,進(jìn)而從不同的角度觀察曲面和曲線。
2.1繪制空間曲面
根據(jù)給定的曲面方程類型,可以采用不同的方法進(jìn)行繪制[4-5]。如果曲面的方程是參數(shù)方程,可以使用meshgrid函數(shù)創(chuàng)建參數(shù)u、v的曲紋網(wǎng)格,并使用mesh或surf函數(shù)繪制圖形。
案例3:以單葉雙曲面的參數(shù)方程為例,使用mesh實現(xiàn)該曲面的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);%網(wǎng)格化參數(shù)u,v
[u,v]=meshgrid(u,v);
x=a*sec(u).*cos(v);
y=b*sec(u).*sin(v);
z=c*tan(u);%單葉雙曲面的參數(shù)方程
mesh(x,y,z);
axis([-10,10,-10,10,-10,10]);
其中,linspace函數(shù)的作用是生成線性間距向量。由于參數(shù),在MATLAB代碼中需要注意去掉區(qū)間的這兩個端點。繪制完成的圖形如圖1所示。
將曲面的參數(shù)方程配合MATLAB函數(shù)mesh或surf來繪制并展示曲面的經(jīng)緯線網(wǎng)格,學(xué)生可以更清晰地捕捉到曲面的特征和結(jié)構(gòu)細(xì)節(jié)。這對于空間解析幾何的學(xué)習(xí)來說是十分有用的。對于其他四種典型的二次曲面,包括橢球面、雙葉雙曲面、橢圓拋物面和雙曲拋物面,只需替換相應(yīng)的參數(shù)方程及其參數(shù)范圍即可,詳細(xì)的代碼可在本文提供的Github網(wǎng)址中查閱。如果曲面的方程是標(biāo)準(zhǔn)方程,可以使用meshgrid函數(shù)創(chuàng)建自變量x、y、z的網(wǎng)格,并使用isosurface函數(shù)繪制圖形。
案例4:以單葉雙曲面的標(biāo)準(zhǔn)方程為例,使用isosurface實現(xiàn)該曲面的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;%單葉雙曲面的標(biāo)準(zhǔn)方程
p=patch(isosurface(x,y,z,F(xiàn),0));
set(p,'FaceColor','green','EdgeColor','none','FaceAlpha',0.3);
camlight; grid on; view([80,30]);
使用isosurface函數(shù)繪制的單葉雙曲面,如圖2所示。isosurface函數(shù)真正實現(xiàn)了“所見即所得”的繪圖體驗。為了能從不同的角度呈現(xiàn)曲面,可以利用view函數(shù)來調(diào)整觀察角度。同時,也可結(jié)合使用camlight或lighting函數(shù),來創(chuàng)建更真實和高質(zhì)量的三維視覺效果。
2.2繪制空間曲線
MATLAB提供了plot3函數(shù)用于繪制空間曲線。plot3(x,y,z)繪制由x、y、z連接的一組坐標(biāo),其中x、y、z指定為相同長度的向量。
案例5:圓柱螺線的參數(shù)方程為,使用plot3實現(xiàn)該曲線的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動態(tài)可視化
對于《五種典型的二次曲面》這一節(jié)內(nèi)容,教師的講授流程一般是先用標(biāo)準(zhǔn)方程來討論二次曲面的對稱性和分布范圍,再利用平行截痕法來繪制截口圖形,從而得到二次曲面的全貌。如果教師利用黑板繪制或使用PPT靜態(tài)圖呈現(xiàn)全過程,那學(xué)生對曲面的直觀理解是十分有限。為了更好地提升學(xué)生對二次曲面的理解和展示平行截痕法,可以使用MATLAB動態(tài)圖展示二次曲面與平行于坐標(biāo)面的平面的交線。
案例6:設(shè)雙葉雙曲面的標(biāo)準(zhǔn)方程為。利用MATLAB動態(tài)展示平行截痕法。
分析:使用平行于xoy坐標(biāo)平面的動平面去截該雙葉雙曲面。平面上將會呈現(xiàn)一條交線,隨著平面的移動將產(chǎn)生一系列的交線,其中交線可以使用空間曲線的參數(shù)方程表示,并用plot3函數(shù)繪制。具體的動態(tài)演示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);%設(shè)置截平面
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]。運行代碼后,動平面與雙葉雙曲面將產(chǎn)生一系列的空間曲線。圖4給出了部分動態(tài)截圖。平行截痕法的另外兩種情況是分別使用平行于yoz和zox坐標(biāo)平面的動平面去截該雙葉雙曲面。實現(xiàn)過程與上述情況類似,具體MATLAB代碼可查閱本文提供的Github網(wǎng)址。
4結(jié)語
本文通過從計算功能、繪圖功能和動態(tài)可視化3個方面,詳細(xì)呈現(xiàn)了MATLAB在空間解析幾何中的多個具體教學(xué)案例。通過引入MATLAB編程和可視化工具,提供了一種新穎有效的教學(xué)方法,有助于學(xué)生理解空間解析幾何概念。希望這些案例能夠為教師提供更好的教學(xué)手段,提升學(xué)生的學(xué)習(xí)效果。
參考文獻(xiàn)
[1] 唐雪芝.基于APOS理論的《高等數(shù)學(xué)》概念信息化教學(xué)模式設(shè)計與實踐研究[D].昆明:云南大學(xué),2020.
[2] 張紀(jì)平,沈曉斌,洪佳瑜,等.Matlab在繪制解析幾何二次曲面圖像的應(yīng)用[J].科技風(fēng),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].內(nèi)江科技,2020,41(10):36-38.
[5]張美戀.應(yīng)用Matlab軟件繪制二次直紋曲面[J].寧德師范學(xué)院學(xué)報(自然科學(xué)版),2020,32(1):86-90,99.