楊健
摘要:該文針對高等數(shù)學(xué)課程具有概念抽象、理論深奧等特點(diǎn),提出在課堂教學(xué)過程中融入Matlab軟件進(jìn)行探究式教學(xué)研究,通過若干具體實(shí)例來分析研究如何利用Matlab軟件進(jìn)行相關(guān)教學(xué),通過軟件引導(dǎo)學(xué)生直觀理解高等數(shù)學(xué)的抽象概念,同時促使學(xué)生學(xué)習(xí)一定的編程技巧,掌握利用Matlab程序語言化簡課程中的一些煩瑣的計(jì)算過程,鍛煉動手能力。
關(guān)鍵詞:高等數(shù)學(xué);Matlab軟件;課堂教學(xué);探究式教學(xué)
中圖分類號 G642? ? ?文獻(xiàn)標(biāo)識碼 A
文章編號:1009-3044(2022)18-0155-04
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
在當(dāng)代大學(xué)中,高等數(shù)學(xué)課程受眾廣泛,應(yīng)用普遍,為理工科甚至文科相關(guān)專業(yè)學(xué)生學(xué)習(xí)相應(yīng)專業(yè)課程提供數(shù)學(xué)工具和思想,給后續(xù)學(xué)好相關(guān)專業(yè)課程提供強(qiáng)大支撐。然而,高等數(shù)學(xué)本身作為一門重要數(shù)學(xué)課程,有著邏輯嚴(yán)密,概念抽象,理論性強(qiáng),定理深奧不易理解,計(jì)算復(fù)雜等特點(diǎn)。這對一般的非數(shù)學(xué)專業(yè)學(xué)生來說,對課程特點(diǎn)的適應(yīng)具有一定的難度。然而,Matlab軟件集數(shù)值運(yùn)算、符號運(yùn)算和圖形操作于一體,同時擁有多個專業(yè)工具箱,是一款具有可視化強(qiáng)、計(jì)算高效、功能豐富、操作簡便、簡單易學(xué)等特點(diǎn)的交互式系統(tǒng)軟件[1]。無論對于應(yīng)用工程人員,還是科研技術(shù)專家,都是一款強(qiáng)大而便捷的工具軟件。若能抽出課堂的一部分篇幅,將Matlab軟件有效合理地融入高等數(shù)學(xué)的教學(xué)中,讓學(xué)生了解軟件的相關(guān)功能,學(xué)會編寫相應(yīng)算法程序,使高等數(shù)學(xué)中抽象的定義、定理及相關(guān)概念通過圖形數(shù)據(jù)的方式直觀具體地展現(xiàn)出來,讓學(xué)生深刻了解概念中的細(xì)微之處,就能化解學(xué)生在學(xué)習(xí)中的一些困惑和難題,這樣既能讓學(xué)生深刻理解高數(shù)中難懂的概念、知識點(diǎn),省去一些繁雜的計(jì)算過程,同時也引導(dǎo)學(xué)生學(xué)習(xí)一款實(shí)用軟件,練習(xí)了編程技巧,提高利用所學(xué)抽象知識分析解決實(shí)際問題的能力。
本文將結(jié)合以下若干具體實(shí)例,闡述如何在高等數(shù)學(xué)教學(xué)過程中巧妙地融入Matlab軟件使用,利用軟件的圖形顯示和數(shù)據(jù)演算,將高等數(shù)學(xué)中一些概念的細(xì)微特點(diǎn)展示出來,利用Matlab軟件強(qiáng)大的符號計(jì)算功能,將一些煩瑣而又程序化的計(jì)算過程進(jìn)行簡化,節(jié)省計(jì)算時間,把更多的精力轉(zhuǎn)移到對概念、方法、思想的學(xué)習(xí)和掌握中來,從而引導(dǎo)學(xué)生進(jìn)行探索式學(xué)習(xí)[2,3,4]。
1 Matlab軟件融入無窮小量概念的教學(xué)過程
無窮小量是一個抽象的概念,嚴(yán)格的數(shù)學(xué)定義是:在自變量某一變化過程中,以0為極限的變量或者函數(shù)[5]。教師在教授過程中往往會舉出很多例子來加以闡述,但是仍有很多學(xué)生對概念理解不夠深刻,從而導(dǎo)致在使用過程中,經(jīng)常發(fā)生錯誤,比如,在做分式計(jì)算時為何0不能作分母而有時無窮小可以,無窮小量與有界量的乘積還是無窮小量,又如,無限多個無窮小不一定是無窮小,很多學(xué)生只是簡單記住定義和結(jié)論,但在理解上依然存在困擾。因此,我們結(jié)合Matlab軟件的圖形可視化功能,將這個抽象概念轉(zhuǎn)化為具體實(shí)例給學(xué)生展現(xiàn)其特征。
案例1 編寫Matlab程序,觀察當(dāng)[x→+∞]時,函數(shù)[f(x)=1x]趨于0的極限過程。
Matlab程序如下:
clear
x=10:100:10000
n=length(x)
for i=1:n
f(i)=1/x(i);
end
plot(x,f)
axis([0 10000 -0.1 0.1])
title('無窮小量趨勢圖')
還可以利用軟件,計(jì)算并列出一些數(shù)據(jù)進(jìn)行對比觀察,讓學(xué)生增加直觀印象,如下表1是當(dāng)[x]取值較大時對應(yīng)函數(shù)[f(x)]取值的幾組數(shù)據(jù):
從上述圖1和表1的結(jié)果中,引導(dǎo)學(xué)生觀察無窮小量只是一個隨著自變量的變化趨勢而無限接近0的動態(tài)量,而不是永遠(yuǎn)等于0的量,這就把無窮小和一個很小的量的本質(zhì)區(qū)別很清晰地對比出來了。
案例2 觀察當(dāng)[x→+∞]時,無窮小量[1x]與有界量[sinx]的乘積[sinxx]的變化趨勢。
Matlab程序如下:
clear
x=0:40:10000
n=length(x)
for i=1:n
f(i)=sin(x(i))/x(i);
end
plot(x,f)
axis([0 10000 -0.08 0.08])
title('無窮小量乘以有界量的趨勢圖')
以下表2是當(dāng)[x]取值很大時,列舉出的函數(shù)[sinxx]的對應(yīng)幾組數(shù)據(jù):
從上述圖2和表2的結(jié)果中,引導(dǎo)學(xué)生觀察無窮小量乘以一個有界量是一個從0的左右兩邊無限趨近0的一個過程量,所以該乘積在自變量的這種趨勢下也是無窮小量。
2 MAtlab軟件融入積分定義的教學(xué)過程
一元函數(shù)積分學(xué)在高等數(shù)學(xué)甚至整個分析數(shù)學(xué)中具有重要的地位,準(zhǔn)確深刻地理解定積分的定義能夠?qū)罄m(xù)學(xué)習(xí)重積分、曲線積分和曲面積分,或者勒貝格積分、黎曼-斯蒂爾斯積分等打下堅(jiān)實(shí)的基礎(chǔ)。
2.1 Matlab軟件融入到不定積分教學(xué)過程
從高等數(shù)學(xué)教材中知道,函數(shù)的不定積分是一族導(dǎo)數(shù)相同的函數(shù)集,在教學(xué)過程中會發(fā)現(xiàn),對一些函數(shù)求不定積分時,利用不同的積分方法將會出現(xiàn)不同表達(dá)式的結(jié)果,雖然在課堂中教師都會給學(xué)生解釋它們之間相差一個常數(shù),但是有一大部分學(xué)生依然存在疑惑。為了幫助學(xué)生消除疑慮,我們可以利用Matlab軟件對某一函數(shù)不定積分的不同解析表達(dá)式進(jìn)行數(shù)值表示,并且用圖形來進(jìn)行對比。
案例3 利用不同方法,計(jì)算不定積分[1cosxdx]。
在文獻(xiàn)[6]中,對于本題,通過不同的計(jì)算方法得到兩個完全不同的表達(dá)式,分別為[ln(sec(x)+tan(x))+C]和[12ln1+sin(x)1-sin(x)+C],根據(jù)不定積分的定義,我們知道這兩個解都是正解,而其中[ln(sec(x)+tan(x))]和[12ln1+sin(x)1-sin(x)]或者相等或者相差一個常數(shù)。具體如何,接下來,利用Matlab軟件畫圖來進(jìn)一步驗(yàn)證。
Matlab程序如下:
clc
clear
x=0:pi/100:pi/2-1
f1=log(1+sin(x))-log(cos(x));
f2=0.5*(log(1+sin(x))-log(1-sin(x)));
plot(x,f1,'-*',x,f2)
legend('ln(sec(x)+tan(x))','1/2(ln(1+sin(x))-ln(1-sin(x)))')
從圖3中對兩個函數(shù)曲線進(jìn)行對比,可以看出這兩個表達(dá)式其實(shí)是相同的函數(shù)。
2.2 Matlab軟件融入到定積分教學(xué)過程
教材中對于定積分的定義篇幅較長,敘述復(fù)雜,共包含分割、近似計(jì)算、求和,、取極限四個部分,復(fù)雜的公式推導(dǎo)和證明往往讓學(xué)生不能很好地理解相應(yīng)的思想。我們通過結(jié)合Matlab軟件將定義證明的幾個部分編寫成相關(guān)的算法,引導(dǎo)學(xué)生自主分析算法的特點(diǎn),并且以相應(yīng)數(shù)據(jù)和圖像清晰感受到是如何進(jìn)行分割,近似計(jì)算,求和,取極限,最后得到定積分的計(jì)算結(jié)果。這能夠幫助學(xué)生擺脫繁雜的公式推導(dǎo),簡易地理解概念,也讓學(xué)生在這個過程提高學(xué)習(xí)的熱情和成就感。
案例4 設(shè)函數(shù)為[f(x)=1x],利用定義計(jì)算定積分[25f(x)dx][7]。
Matlab程序(利用矩形公式進(jìn)行求解):
clear
a = 2;b = 5;N = 1000;
h = (b-a)/N;? ?%分割區(qū)間[a,b]
x = a:h:b;? ?%每個節(jié)點(diǎn)的自變量取值
f = @(x)1./x;? ?%被積函數(shù)
y=x;
for i = 2 : N+1
y(i) = f((x(i)+x(i-1))/2);? %利用兩個節(jié)點(diǎn)中的中點(diǎn)對應(yīng)的函數(shù)值來近似計(jì)算。
end
f1 = h * sum(y(1:end))? %求和和取極限過程
f2 = log(5)-log(2)? %標(biāo)準(zhǔn)正確值
error = abs(f1-f2)? %誤差
這里可以得到[25f(x)dx]標(biāo)準(zhǔn)結(jié)果為0.9163,當(dāng)N取10000時,數(shù)值結(jié)果為0.9169。可以說明數(shù)值結(jié)果還是相當(dāng)準(zhǔn)確。
進(jìn)一步通過讓學(xué)生對上述程序的N進(jìn)行修改,并觀察誤差的變化情況。從而去理解定積分算法中為什么要求[limλ→0](這里的[λ=max0
可以進(jìn)一步利用軟件,給出下表列出幾組數(shù)據(jù):
并且可以通過Matlab軟件的畫圖功能,以曲線的形式來更加形象展示出定積分的極限過程,結(jié)果見圖4。
Matlab軟件畫圖程序如下:
clear
N=[10 30 50 80 100 500 800 1000 5000 10000];
f=[1.5155 1.1162 1.0363 0.9913 0.9763 0.9283 0.9238 0.9223 0.9175 0.9169];
f_exact = 0.9163*ones(size(f));
error = [0.5992 0.1999 0.1200 0.0750 0.06 0.0120 0.0075 0.006 0.0012 0.0006];
subplot(1,2,1)
plot(N,f,'--bo')
hold on
plot(N,f_exact,'r')
axis([0 10000 0.5 2])
legend('數(shù)值結(jié)果','精確結(jié)果')
title('數(shù)值結(jié)果與精確結(jié)果對比圖')
subplot(1,2,2)
plot(N,error,'-*')
axis([0 10000 -0.2 0.7])
legend('誤差')
title('誤差結(jié)果圖')
3 Matlab軟件融入P級數(shù)的教學(xué)
P級數(shù)是級數(shù)中一類較為特殊級數(shù),學(xué)生一般只是通過老師在上課中的理論證明其收斂,在教學(xué)過程,學(xué)生往往會認(rèn)為級數(shù)的[limn→∞an=0]是收斂的,對于其中的P級數(shù)的不收斂情況很多學(xué)生是存在疑惑的。對于這個疑惑我們用理論很難給學(xué)生一個直觀的解釋,所以可以利用Matlab軟件,讓學(xué)生清晰看到其結(jié)果,讓學(xué)生理論結(jié)合實(shí)踐更清晰去認(rèn)識P級數(shù)斂散性。
案例5 討論P(yáng)級數(shù)[n=1∞1np=1+12p+13p+…+1np+…]的斂散性,其中[p>0]為常數(shù)[8]。
Matlab程序:
p1 = symsum(1/n,n,1,inf);? %當(dāng)p=1時,即為調(diào)和級數(shù)
p2 = double(symsum(1/n^(1.2),n,1,inf));? %當(dāng)p=1.2時,P級數(shù)的結(jié)果
p3 = symsum(1/n^2,n,1,inf);? ? ?%當(dāng)p=2時,P級數(shù)的結(jié)果
%% 下面分別為p=0.3,p=0.6,p=0.9,p=2的P級數(shù)圖像對比
k1=0.3; k2=0.6; k3=0.9; k4=2
sum1=[]; sum2=[]; sum3=[]; sum4=[]; sum5=[];
for m=10:1000:100010
for i=1:m
b1(i)=1/i^(k1); sumb1=sum(b1);
b2(i)=1/i^(k2); sumb2=sum(b2);
b3(i)=1/i^(k3); sumb3=sum(b3);
b4(i)=1/i^(k4); sumb4=sum(b4);
end
sum1=[sum1,sumb1]; sum2=[sum2,sumb2];
sum3=[sum3,sumb3]; sum4=[sum4,sumb4];
end
p03=sum1; p06=sum2; p09=sum3; p2=sum4;
m=10:1000:100010;
subplot(2,2,1); plot(m,p03); title('p=0.3')
subplot(2,2,2); plot(m,p06); title('p=0.6')
subplot(2,2,3); plot(m,p09); title('p=0.9')
subplot(2,2,4); plot(m,p2);title('p=2')
程序輸出結(jié)果:
p1 = Inf
p2 = 5.591582441177751
p3 = pi^2/6
從上述的結(jié)果可以具體得到,當(dāng)P級數(shù)的[p>1]時為收斂的,當(dāng)[p=1]時,得到的結(jié)果為Inf(表示無窮大),所以調(diào)和級數(shù)是發(fā)散的。同時從圖5中我們也可以看到,當(dāng)[p<1]時,級數(shù)和隨著n變大而變大,說明其斂散性是發(fā)散的。而當(dāng)[p=2]時,n達(dá)到一定大時,其和將保持不變,這也說明其斂散性是收斂的。
4 Matlab的可視化功能融入三重積分計(jì)算
三重積分的計(jì)算是高等數(shù)學(xué)中的一個難點(diǎn)問題,首先由于三維的積分區(qū)域很難具體地以圖形的形式給出,所以學(xué)生在確定積分區(qū)域存在困難,其次計(jì)算過程相對復(fù)雜,容易出錯,要求對定積分的方法掌握比較扎實(shí)。而Matlab軟件可以較為容易畫出相應(yīng)的積分區(qū)域,可以準(zhǔn)確用具體的圖像表現(xiàn)出來,讓學(xué)生清晰看到三重積分的積分區(qū)間,這樣使得計(jì)算三重積分變得簡單易理解。
案例6 計(jì)算三重積分[Ωzdv],其中積分區(qū)域[Ω]是由圓錐面[z=x2+y2]和圓柱面[x-12+y2=1]與平面[z=0]所圍成的閉區(qū)域[9]。
分析:我們可以通過以下程序清晰的給出上述的積分區(qū)間圖形,讓學(xué)生具體形象的看到三重積分的積分區(qū)域。
Matlab程序:
clear
x = 0:0.1:2; y = -1:0.1:1; [x,y] = meshgrid(x,y);
z_1 = sqrt(x.^2+y.^2);
t=linspace(0,2*pi,length(x));
x1=sin(t)+1;y1=cos(t);
z1=linspace(0,2.1,length(z_1));
X=meshgrid(x1); Y=meshgrid(y1); Z=[meshgrid(z1)]';
surf(x,y,z_1);%錐面上半部分
hold on;
z_0=zeros(size(z_1));
surf(x,y,z_0);%錐面下半部分
hold on;
mesh(X,Y,Z)%圓柱面
text(1,-1,1,'\leftarrow 柱面','Color','red','FontSize',18)
text(1,0,1.9,'\leftarrow 錐面','Color','red','FontSize',18)
xlabel('x'); ylabel('y'); zlabel('z'); axis equal
易知,圖6所確定的積分區(qū)域
[Ω=r,θ,z0≤z≤r,0≤r≤2cos(θ),-π2≤z≤π2],所以,該三重積分可以寫為[Ωzdv=Ωzrdrdθdz=-π2π2dθ02cosθrdr0rzdz=3π4]。
5 結(jié)語
在高等數(shù)學(xué)的傳統(tǒng)課堂教學(xué)中,存在很多理論證明和公式推導(dǎo),這使其課堂教學(xué)過程變得枯燥,同時也額外增加了概念知識的抽象性,學(xué)生常常難以理解,而對于非數(shù)學(xué)專業(yè)學(xué)生而言,復(fù)雜抽象的理論證明和推導(dǎo)并不是主要內(nèi)容,更為客觀的教學(xué)目標(biāo)是讓學(xué)生準(zhǔn)確理解概念的內(nèi)在含義,掌握典型的計(jì)算方法,學(xué)習(xí)精巧的數(shù)學(xué)思想,并且能夠利用數(shù)學(xué)知識解決專業(yè)問題和實(shí)際問題的能力。通過充分利用當(dāng)代先進(jìn)的教學(xué)條件,在高等數(shù)學(xué)課堂中融入Matlab軟件,就能夠彌補(bǔ)傳統(tǒng)教學(xué)中存在的這些不足,由此提高學(xué)生對高等數(shù)學(xué)的興趣和熱情,調(diào)動學(xué)生的學(xué)習(xí)主動性和積極性,另一方面,也使學(xué)生能夠熟悉Matlab的使用規(guī)則,掌握一款實(shí)用性的工具軟件,相信這對高等數(shù)學(xué)課堂教學(xué)質(zhì)量和提高課程的實(shí)際應(yīng)用效果具有重要的實(shí)踐意義。
參考文獻(xiàn):
[1] 劉衛(wèi)國.MATLAB程序設(shè)計(jì)與應(yīng)用[M].3版.北京:高等教育出版社,2017.
[2] 楊然.Matlab符號計(jì)算在高等數(shù)學(xué)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].現(xiàn)代職業(yè)教育,2019(28):202-203.
[3] 李永芳.基于MATLAB軟件的高等數(shù)學(xué)實(shí)驗(yàn)教學(xué)[J].高教學(xué)刊,2017(6):79-80.
[4] 兀松賢.基于MATLAB的高等數(shù)學(xué)可視化輔助教學(xué)[J].喀什大學(xué)學(xué)報(bào),2016,37(6):52-54.
[5] 吳克義,蘭德新.高等數(shù)學(xué)(上冊)[M].北京:北京郵電大學(xué)出版社,2021.
[6] 同濟(jì)大學(xué)數(shù)學(xué)系.高等數(shù)學(xué)附冊學(xué)習(xí)輔導(dǎo)與習(xí)題選解:同濟(jì)·第七版[M].北京:高等教育出版社,2014.
[7] 劉二根,王廣超,朱旭生.MATLAB與數(shù)學(xué)實(shí)驗(yàn)[M].北京:國防工業(yè)出版社,2014.
[8] 姜景連,吳克義,蘭德新.高等數(shù)學(xué)(下冊)[M].北京:北京郵電大學(xué)出版社,2021.
[9] 吳贛昌.微積分:經(jīng)管類 簡明版[M].2版.北京:中國人民大學(xué)出版社,2008.
【通聯(lián)編輯:梁書】