趙 蕾
文華學院數(shù)學科學系 湖北武漢 430074
高等數(shù)學是高等院校理工類??粕匦薜闹匾碚摶A課,主要學習函數(shù)、一元和多元函數(shù)的微分學和積分學、常微分方程、空間解析幾何、線性代數(shù)和概率論的初步知識及其運用。學生掌握上述知識,能夠為學習后續(xù)課程奠定良好的數(shù)學基礎[1-2]。在實際教學中,教師主要是依據(jù)大綱要求,在課堂上對于數(shù)學基本概念、定理進行講解和推導,學生主動參與度較低。為提升教學質量,培養(yǎng)學生知識運用能力,把專業(yè)學習與動手實踐結合起來,全面提高人才培養(yǎng)的市場適應能力,改進教學方法和課程體系,將Matlab軟件引入高等數(shù)學教學。
Matlab是最近幾年應用廣泛、計算能力強大的數(shù)學計算軟件,幾乎涵蓋了高等數(shù)學中大部分計算,學生在大學一年級階段就可以得到Matlab編程和實踐能力的訓練,同時在實踐過程中促進理論知識的學習[3]。在教學中通過一些實際案例,讓學生在計算機中求極限、求函數(shù)的微分和積分、函數(shù)作圖、求解微分方程,這不僅幫助學生更好地理解了教材的知識和定理,又克服了高等數(shù)學內(nèi)容抽象、不直觀的不足,提升了教學效果,在實踐中激發(fā)了學生的學習興趣,同時提升了學生運用數(shù)學知識,解決數(shù)學問題能力[4-5]。
在Matlab中用comet命令生成動態(tài)曲線圖,輸入如下程序:
x=-10:0.01:10;
y=sin(x)./x;
comet(x,y)
axis([-10 10 -1 1.5]);
grid on
運行后,在Matlab中自動生成動態(tài)曲線圖(如圖1所示)。
圖1 函數(shù)的動態(tài)曲線圖
當學生從幾何上深刻感知函數(shù)值隨著自變量取值的變化,教師可以指導學生通過Matlab的limit命令直接計算函數(shù)的極限,進一步去計算其他函數(shù)的極限。
在Matlab中輸入如下程序:
syms x y;
y=sin(x)/x;
limit(y,x,0)
ans =
0
Matlab的diff命令可以直接計算函數(shù)的導數(shù),以函數(shù)y=x2為例:
例3:求函數(shù)y=x2在x=1處的導數(shù),并求出在該點處的切線方程。
在Matlab中輸入如下程序:
close all;clear all;clc;
syms x
y=x^2
symDf1=diff(y,x,1);%求解y=x^2的一階導數(shù)Symbolic function
df1=matlabFunction(symDf1);
df1(1)
得到y(tǒng)=x2在x=1處的導數(shù)值為2,通過點斜式方程,得到切線在該點的切線方程為y=2x-1。
由于y=x2在x=1處的導數(shù)值即為曲線在該點處切線的斜率,為了讓學生更好地理解導數(shù)的意義,我們選擇幾個點,通過x→1時割線的位置變化,直觀展示出割線的極限即為切線。
首先,通過Matlab程序,在x=1附近選擇6個點,分別為(0,0),(0.5,0.52),(0.99,0.992),(1.01,1.012),(1.5,1.52),(2,22),觀察x趨于1時,割線的位置變化情況(圖2),幫助學生理解導數(shù)的幾何意義,對切線是割線位置的極限有了更深的認識。
圖2 函數(shù)y=x2在6個點處的割線(虛線為切線)
從上圖可以觀察到,x越靠近1,割線越接近切線。進一步驗證了導數(shù)就是切線的斜率這一結論。
為了提升演示效果,還可以將割線位置接近切線的過程進行動態(tài)展示,我們將步長設置為0.1,逐步演示當自變量x從0趨向于1,以及x從2趨向于1時,割線的變化規(guī)律(見圖3、圖4、圖5)。
圖3 割線的動態(tài)展示(初始狀態(tài))
圖4 割線的動態(tài)展示(5次迭代后)
圖5 割線的動態(tài)展示(最終位置)
在動畫展示過程中,學生認識到曲線割線位置的極限即為切線,同時,更深刻地體會到了導數(shù)的幾何意義,導數(shù)是函數(shù)的局部性質,對于給定的函數(shù),當函數(shù)的自變量和取值都是實數(shù)的時候,它在某一點的導數(shù)就是該函數(shù)所代表的曲線在這一點上的切線斜率。通過Matlab的動畫演示,我們更清晰地看到數(shù)形之間的聯(lián)系,同時也大大提升了學生的積極性和興趣,提升了學習效果[8-9]。
積分是高等數(shù)學的一個核心概念,也是需要學生重點掌握的概念,在高等數(shù)學教學中,積分主要分為不定積分和定積分兩個部分,Matlab軟件功能強大,既可以求函數(shù)的不定積分,也可以計算函數(shù)在指定區(qū)間上的定積分。Matlab計算積分是通過int命令實現(xiàn)[7]。
在Matlab中輸入如下程序:
close all;clear all;clc;
syms x
y=x*exp(x^2)
int(y);
pretty(int(y))
當被積函數(shù)中包含由字母表示的數(shù)時,要通過Matlab的int(f,v)命令,計算函數(shù)f對變量v的不定積分。
在Matlab中輸入如下程序:
close all;clear all;clc;
syms x a
y1=1/((a^2+x^2))
y=int(y1,x);
pretty(y)
除了不定積分,Matlab軟件也可以計算定積分,通過Matlab的int(f,a,b)命令,求函數(shù)f在區(qū)間[a,b]上的定積分;當函數(shù)f包含由字母表示的數(shù),要通過Matlab的int(f,v,a,b)命令,計算函數(shù)f對變量v在區(qū)間[a,b]上的定積分。
在Matlab中輸入如下程序:
close all;clear all;clc;
syms x
y1=sin(x)
y=int(y1,0,pi);
對于初等函數(shù)來講,雖然原函數(shù)存在,但是其原函數(shù)不一定都是初等函數(shù),也不一定能夠用解析式表達,此時用符號解法計算定積分失效,我們可以通過數(shù)值積分去計算定積分的值[10]。
求定積分近似值的方法,教材上通常給出的是矩形法、梯形法和拋物線法(辛普森法),接下來就以一個例子來說明這三種辦法求解定積分近似值的過程[1]。
矩形法:
在Matlab中輸入如下程序:
dx=0.1;
x=0:dx:1;
y=4./(1+x.^2);
sum(y(1:length(x)-1)*dx)
梯形法:
拋物線法:
小曲邊梯形的曲邊通過拋物線近似,得到小曲邊梯形面積的近似值,進一步得到定積分的近似值,在新版本的Matlab軟件中可通過integral命令計算:
Matlab程序如下:
y=@(x)4./(1+x.^2);
val=integral(y,0,1,'RelTol',1e-8,'AbsTol',1e-13)
本例所給積分的精確值可以通過int命令直接計算得到:
下表展示了本例積分的精確值及不同數(shù)值積分方法計算處的積分值,可見,通過拋物線法(integral命令)得到的精確值最高。
不同數(shù)值積分方法得到的結果比較表
一元函數(shù)積分學是學好高等數(shù)學的基礎,在學習過程中,許多同學都會反映有點難度,教師在教授積分方法與技巧的同時,用Matlab軟件實現(xiàn)積分計算,不僅可以幫助學生掌握一些積分公式,還可以對積分的結果進行驗證。同時,對于復雜函數(shù)的積分,當原函數(shù)無法用初等函數(shù)表示時,我們?nèi)匀豢梢酝ㄟ^數(shù)值積分的方法,在Matlab軟件上計算出定積分值,在這個過程中加強了學生的學習積極性和學好高等數(shù)學的信心。
在實際問題中,往往要計算與多元函數(shù)有關的量,比如計算空間立體的體積、計算曲面面積等,即要把積分加以推廣。在高等數(shù)學教學中,二重積分是教學的重點也是難點。
當積分區(qū)域D為X-型區(qū)域時,即當區(qū)域為:
當積分區(qū)域D為Y-型區(qū)域時,即當區(qū)域為:
在Matlab軟件中可以計算重積分,所用到的命令仍然是int,當積分區(qū)域為X-型區(qū)域時,Matlab命令為int(int(f,y,φ1(x),φ2(x)),x,a,b),當積分區(qū)域為Y-型區(qū)域時,Matlab命令為int(int(f,x,ψ1(y),ψ2(y)),y,c,d)。下面以具體例子來說明二重積分的計算。
在Matlab中輸入如下程序:
syms x y
f=x*y;
int(int(f,y,0,1-x),x,0,1)
由于積分區(qū)域既是X-型區(qū)域也是Y-型區(qū)域,可以考慮用兩種不同的方法求解。
在Matlab中輸入如下程序:
syms x y
f=4-2*x-y;
int(int(f,y,-1,1),x,-2,2) 注:將積分區(qū)域看作X-型區(qū)域。
int(int(f,x,-2,2),y,-1,1) 注:將積分區(qū)域看作Y-型區(qū)域。
輸出結果均為32。
由此可見,Matlab僅僅用一些簡單的指令就可以計算重積分,二重積分的計算比一元函數(shù)的積分要復雜一點。通過Matlab軟件,學生可以直接得到積分值,大大提升了學生的課堂參與度,激發(fā)學生學習的興趣,對于計算機軟件的運用能力也得到了提升。
函數(shù)是微積分的研究對象,反映了客觀事物的內(nèi)在聯(lián)系,在科學研究和生產(chǎn)實際問題中,尋找事物間的函數(shù)關系非常重要,但很多情況下,函數(shù)關系不能直接得到,而是根據(jù)問題情境,列出未知函數(shù)及其導數(shù)的關系式,這樣的關系式即為微分方程,當未知函數(shù)為一元函數(shù)時,即為常微分方程。隨著科技進步與發(fā)展,物理、經(jīng)濟、金融、航空航天等眾多領域的問題都可以描述為常微分方程,因此它的運用也非常廣泛。在教學過程中,教師要引導學生不斷探索和發(fā)現(xiàn)生活中的數(shù)學問題,通過微分方程,建立數(shù)學模型去描述、分析和解決實際問題,提升數(shù)學知識的應用能力。
Matlab軟件求解常微分方程,得到微分方程的符號解,是通過dsolve命令實現(xiàn)的[11]。
在Matlab中輸入如下程序:
syms y(x)
y(x)=dsolve(diff(y,x)==2*x*y)
得到結果為y=Cex2。
例11:求微分方程y″+2y′+y=0滿足初始條件y(0)=4,y′(0)=-2的特解。
在Matlab中輸入如下程序:
syms y(x)
Dy=diff(y);
y(x)=dsolve(diff(y,x,2)+2* diff(y,x)+y==0,y(0)==4,Dy(0)==-2)
得到結果為y(x)=4e-x+2xe-x
在教學過程中,我們講到不同類型的微分方程,如可分離變量的微分方程、齊次方程、一階線性微分方程、二階常系數(shù)齊次線性微分方程等,對于不同類型的微分方程,有不同的解題方法,因此常微分方程既是教學重點,也是難點。Matlab功能強大,可以通過dsolve命令計算出微分方程的解析解,計算準確,運行效率高。將Matlab與高等數(shù)學教學結合起來,學生可以將手工計算的結果進行驗證,提升了教學質量和教學效果。
在??聘叩葦?shù)學教學中引入Matlab軟件,在保持原有教學體系不變的前提下,弱化定理的證明和邏輯推導,通過設計和專業(yè)知識相結合的案例,讓學生在實踐中學到了知識,即克服了教學內(nèi)容抽象、不直觀的不足,又讓學生逐步學會Matlab軟件使用和操作方法,增強了學生的實踐能力和應用能力,感知數(shù)學美,進一步增強學好數(shù)學的自信心。