楊健



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