張建勇++陳亮++陳雨兒++王建鵬
摘要:高等數(shù)學(xué)教學(xué)的改革受到國內(nèi)各高校的重視。本文在傳統(tǒng)的教學(xué)基礎(chǔ)上,以微分方程一章為例,結(jié)合Matlab設(shè)計課堂教學(xué)內(nèi)容和形式。這種教學(xué)設(shè)計是對傳統(tǒng)教學(xué)的有益補(bǔ)充,同時還可以激發(fā)學(xué)生學(xué)習(xí)高等數(shù)學(xué)的興趣。
關(guān)鍵詞:微分方程;數(shù)值解;Matlab;教學(xué)設(shè)計
中圖分類號:G642.41 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2014)52-0168-02
一、引言
微分方程是一門獨(dú)立的數(shù)學(xué)學(xué)科,有完整的理論體系,是描述動態(tài)系統(tǒng)最常用的數(shù)學(xué)工具,也是很多科學(xué)與工程領(lǐng)域數(shù)學(xué)建模的基礎(chǔ)[1]。在高等數(shù)學(xué)課程中,重點(diǎn)介紹了線性和低階特殊的微分方程的解析解的求法。這些解法中體現(xiàn)了降階、復(fù)雜問題簡單化等數(shù)學(xué)思想[2]。
微分方程在幾何、力學(xué)和物理等實際問題中具有廣泛的應(yīng)用,學(xué)生可以在該部分的學(xué)習(xí)中,感受到應(yīng)用數(shù)學(xué)建模的理論和方法解決實際問題的魅力。實際上能夠能夠求得解析解的微分方程并不多,所以數(shù)值解就顯得尤為重要。利用數(shù)學(xué)軟件對微分方程的解進(jìn)行數(shù)值模擬,是對微分方程求解的有益補(bǔ)充。Matlab[3]是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,在數(shù)值計算方面具有獨(dú)特的優(yōu)勢。本文以可降階的二階微分方程為例,簡單地介紹了Matlab在微分方程教學(xué)中的輔助作用,同時這種教學(xué)設(shè)計方式可以推廣到其他章節(jié)。
二、教學(xué)目標(biāo)和教學(xué)手段等
該部分的教學(xué)目標(biāo)是掌握三種特殊形式的二階微分方程的降階求解方法,同時樹立降階和利用微分方程建立模型的數(shù)學(xué)思想。在現(xiàn)階段由于計算機(jī)軟件技術(shù)的發(fā)展,可以加上“了解或利用Matlab求解微分方程”這一個新的目標(biāo)。教學(xué)形式仍然是講授為主,教學(xué)手段是多媒體教學(xué)加上Matlab軟件。
三、教材上的內(nèi)容
對于不同的高等數(shù)學(xué)教材來說,該部分的內(nèi)容幾乎沒有差別。這里只是簡單提及一下。
針對三種特殊的微分方程y''=f(x)、y''=f(x,y')、y''=f(y,y'),采用降階的思想,即令y'=p,對于前兩種形式的微分的微分方程,再令y''=p'實現(xiàn)降階。對于最后一種形式,為了防止一個微分方程中出現(xiàn)兩個未知函數(shù),在y'=p的基礎(chǔ)上,令y''=p■,實現(xiàn)降階,并求得到方程的解。運(yùn)用教材中的求解方法,可以得到微分方程解的顯式或隱式表達(dá)式。Matlab可以求解顯式解。重要的是,在無法獲得解析解的時候,可以通過Matlab進(jìn)行數(shù)值模擬[4,5]。接下來主要介紹如何在本節(jié)中使用Matlab軟件。
四、結(jié)合Matlab的教學(xué)
1.顯式解。Matlab可以求得顯式解,但無法獲得隱式解。通常情況下顯式解的命令調(diào)用格式為:
s=dsolve(eqn,cond,Name)
其中eqn表示微分方程,cond是初始條件,Name是方程中的自變量。如下面的例1。
例1.求解微分方程(1+x■)■-2x■=0.
在command窗口輸入以下代碼:
y=dsolve('(1+x^2)*D2y-2*x*Dy=0','x')
求得結(jié)果為:
y=C2+(C3*x*(x^2+3))/3
該解可以很明顯的看出來是:
y=C■+■C■x(x■+3)
如果顯示的代碼很復(fù)雜,可以通過命令latex(),再結(jié)合mathtype把結(jié)果顯示成公式的形式。以該題為例,Latex(y)顯示為:
\mathrm{C2}+\frac{\mathrm{C3}\,x\,\left(x^2+3\right)}{3}
然后在word中鍵入兩個$,將上述代碼拷貝到$$中間,如下
$\mathrm{C2}+\frac{\mathrm{C3}\,x\,\left(x^2+3\right)}{3}$
在mathtype中找到Toggle TeX,點(diǎn)擊,得到公式為:
C2+■
這與降階法得到的結(jié)果一致,同時將代碼轉(zhuǎn)化為公式的方法比Matlab自帶的simple()命令更具有實用性。
2.數(shù)值解。在無法求得解析解的時候,數(shù)值解顯得尤為重要。微分方程的數(shù)值解法有多種,可以根據(jù)數(shù)值計算理論,如Euler方法,如自己編寫代碼,可以直接調(diào)用Matlab自帶的命令,如ode45()等,也可以通過Simulink進(jìn)行仿真計算。通常情況下,采用Matlab自帶的函數(shù)來求解微分方程。
為說明數(shù)值方法的有效性,下面討論一個可以求得解析解的例題。一方面該例題反映了微分方程在數(shù)學(xué)建模中的應(yīng)用,另一方面對數(shù)值解和解析解進(jìn)行比較。
例2.設(shè)位于坐標(biāo)原點(diǎn)的甲艦向位于x軸上點(diǎn)A(1,0)處的乙艦發(fā)射導(dǎo)彈,導(dǎo)彈頭始終對準(zhǔn)乙艦。如果乙艦以最大的速度v0(常數(shù))沿平行于y軸的直線行駛,如圖1。導(dǎo)彈的速度是5v0,求導(dǎo)彈運(yùn)行的曲線方程。
根據(jù)題意建立微分方程如下:
(1-x)y''=■■y(0)=0;y'(0)=0
通解為:
y=-■(1-x)■+■(1-x)■+■.
利用Matlab求其數(shù)值解,令y■=y,y■=y',將方程化為一階微分方程組:
y■'=y■y■'=■■/(1-x)
建立m文件如下:
clc
x0=0;xf=0.9999;
[x,y]=ode45('eq1',[x0 xf],[0 0]);
plot(x,y(:,1),'k.','LineWidth',2);
hold on
x1=x0:0.01:xf;
y_sim=-5/8*(1-x1).^(4/5)+5/12*(1-x1).^(6/5)+5/24;
plot(x1,y_sim,'k-','LineWidth',2)
axis([0 1.1 0 0.25])
hold on
y1=0:0.01:2;
plot(1,y1,'k-^');
legend('數(shù)值解','解析解','乙艦逃跑線路')
grid on
function dy=eq1(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1/5*sqrt(1+y(1)^2)/(1-x);
利用Matlab軟件求解如圖2。從圖2中可以看到,數(shù)值解和解析解吻合的非常好,在一般實際工程問題中,數(shù)值解完全能滿足精度的要求。
五、總結(jié)
這種課堂教學(xué)的設(shè)計的優(yōu)點(diǎn),第一,它能夠豐富課堂教學(xué)內(nèi)容,在不改變原有講授知識的情況下,可以讓學(xué)生感受到高等數(shù)學(xué)在現(xiàn)代計算機(jī)水平下散發(fā)出的新的魅力。第二,這種設(shè)計有力地推動了高等數(shù)學(xué)的教學(xué)改革,激發(fā)了學(xué)生的學(xué)習(xí)熱情和興趣,對數(shù)值方法和數(shù)學(xué)模型的學(xué)習(xí)可以提高學(xué)生應(yīng)用數(shù)學(xué)知識解決實際問題的能力。
但是傳統(tǒng)的高等數(shù)學(xué)的教學(xué)中有較多的公式、定理的推導(dǎo),它在培養(yǎng)學(xué)生的邏輯思維能力、逐步了解和掌握相應(yīng)的數(shù)學(xué)思想等方面有不可替代的位置。所以,這種教學(xué)設(shè)計在課堂中所占比重不能過大,否則會造成不良的教學(xué)效果。
參考文獻(xiàn):
[1]王高雄,周之銘,朱思銘.常微分方程[M].北京:高等教育出版社,2006.
[2]吳贛昌.高等數(shù)學(xué)[M].北京:中國人民大學(xué)出版社,2011.
[3]張志涌,楊祖櫻.MATLAB教程R2012a[M].北京航空航天大學(xué)出版社,2010.
[4]孫燮華.齊次微分方程通解的計算機(jī)求解[J].中國計量學(xué)院學(xué)報,2001,12(3):1-6.
[5]葉紅衛(wèi).淺談Matlab在高等手續(xù)微積分計算中的應(yīng)用[J].電腦知識與技術(shù),2009,5(5):1169-1170.endprint