□ 李 曄 李艷晴
數學實驗是高等學校迎接21世紀數學教學改革的一門新課程,它將數學知識、數學建模和計算機應用三者有機結合在一起,使學生可以深入理解數學的基本概念、基本理論,熟悉常用數學軟件,這樣既培養了學生進行數值計算和數據處理的能力,也培養了學生應用數學知識建立數學模型、解決實際問題的能力,同時使學生真正做到了“學數學,用數學”,激發了學生學習數學的興趣[1]。隨著教學改革的不斷深入,許多高校都在積極探討數學實驗的課程建設[2~3]、教學內容和教學方法[4]。實踐表明,數學實驗的重要性越來越被人們認識到,其研究方法也逐漸滲透到高校各大課程中。常微分方程求解是《數學實驗》課程中的教學重點以及教學難點之一,本文根據多年教學經驗,結合實際教學情況,探討了數學實驗課程中常微分方程求解的講授方法。
(一)借助實際案例提出問題,激發學生興趣。教師在教學過程中,將數學建模思想融入到數學實驗教學當中[5],根據學生的知識基礎提出問題,給出實驗問題的背景介紹。比如,以實際案例“緝私艇追擊走私船”出發,抓住學生胃口,吸引學生眼球,讓學生帶著問題而入,從而引出本節內容。這樣不僅能讓學生對建模思想有初步了解,培養學生創新能力,而且有助于加強學生的求知欲,提高學生的學習興趣。
(二)由淺入深,由表及里,介紹龍格庫塔法的思想。所謂數值方法,是將連續的微分方程的初值問題離散化為差分方程的初值問題,用差分方程的解近似代替微分方程的解[6]。常用的微分方程的數值解法有歐拉法、梯形公式、龍格庫塔方法。本章主要是用龍格庫塔方法編程序求解。為了便于學生掌握,由淺入深,由表及里,先從簡單的方法(歐拉法、梯形公式)入手,然后導出龍格庫塔方法。
微分方程的初值問題:

假設(1)式的解存在并且唯一(即?(x,y)在矩形區域R={(x,y)|x0≤x≤xn,y0≤y≤yn}上連續,且關于 y 滿足 Lipschitz條件)。
把定義域n等分,對微分方程y'=?(x,y)在第i個小區間[xi,xi+1]上積分得:

對于(2)式中的定積分,用不同的數值方法(左矩形公式、右矩形公式、復合梯形公式)求解,便得到不同的求解常微分方程的數值方法(向前歐拉公式、向后歐拉公式、梯形公式)。
如,用左矩形公式求(2)中的定積分,得:
y(xi+1)≈y(xi)+h?(xi,y(xi))
又有 yi+1=y(xi+1),yi≈y(xi),所以 yi+1=y+h?(xi,yi),i=0,1,…,即向前歐拉公式。顯然,步長越小,結果越精確。
同理,用右矩形公式求(2)中的定積分,得y(xi+1)≈y(xi)+h?(xi+1,y(xi+1)),即向后歐拉公式,這是隱式格式,求解時需采用預測校正方法,即先用向前歐拉法提供初值,然后再用向后歐拉公式迭代,計算公式為:

用復合梯形公式求定積分,得數值解的計算公式為:

綜上,歐拉公式在計算(2)中的定積分時只用到了一個點(左端點或右端點)處的導數值(即?(x,y)值);梯形公式用了兩個點(左、右端點)的導數值;在此基礎上,在小區間[xi,xi+1]上多取幾個點,計算這些結點處的導數值,然后作這些導數值的線性組合,構造近似公式,這就是龍格庫塔法的基本思想。
常用的龍格庫塔法有二級二階R-K方法


在介紹各種數值方法時,可用Matlab進行仿真,把每一步迭代結果動態的反映到圖像中,將抽象的算法直觀地呈現在學生面前,加深學生的理解,激發學生的興趣。
(三)用Matlab編程序求解。例:所求微分方程初值問題為,用龍格庫塔法求解的程序為:
編寫函數文件exf:

編寫主程序:

運行結果見圖1。

圖1 數值解與解析解

圖2 simulink模塊連接圖
(四)建立Simulink模塊連接圖,進行比較式教學。首先建立方程的simulink模型,保存為 aa2.mdl,見圖2。運行仿真:

仿真畫出y及其導數的圖像,結果同圖1。
由上,simulink不需要學生對算法有很深的了解,只需畫出模塊連接圖,就可以將結果可視化。而且,模擬是交互的,學生可以快速改變參數,并立刻得到相應的結果,該方法的優點是簡單、快速、直觀,對于初學者來說更容易掌握。

圖3 Lorenz混沌吸引子三維相圖
(五)引入科學前沿問題,開拓學生視野。隨著科學技術的發展,長期不變的實驗教學已不能滿足教學需要,所以應將新的科研成果融入教學中,讓學生掌握科學前沿知識,這樣可以豐富教學內容,開拓學生視野,活躍學生思想,培養創新意識,從而提高教學質量。
本章內容其中一個重要的應用就是混沌系統的求解。混沌是非線性動力學系統中特有的一種運動形式,廣泛存在于自然界,如生物學、物理、化學、電子學、信息學科以及技術科學、社會科學等各種領域。混沌是學者們研究的學術前沿問題之一。其中研究的最為深入的是Lorenz系統,其狀態方程為:

式中 a=10,b=30,c=8/3,給定初始條件為 x(0)=0,y(0)=ε,z(0)=0,其三維相圖見圖3。給初始值一個微小擾動,然后求解觀察,會發現兩次計算結果完全不同,這就是混沌系統對初始條件的高度敏感性(失之毫厘,差之千里),稱之為蝴蝶效應。
Lorenz方程是沒有解析解的,如果要手工繪出其圖形很困難,但是用Matlab仿真,其效果和直觀性是非常好的,便于學生理解與掌握。
另外,在繪制洛倫茲系統的相圖時,可以固定參數a,c,令b從0到30變化,進一步觀察相圖,初步引入分岔的概念,如此有利于激發學生的求知欲,為日后的進一步研究奠定基礎。
對于常微分方程數值解的講授,首先提出實際案例,讓學生帶著問題而入,激發學生求知欲;然后介紹算法,理論與實踐相結合;再用Matlab仿真,主要介紹兩種方法(龍格庫塔法以及Simulink仿真)求解,結果表明:兩種方法各有優點,前者幫助學生理解算法理論;后者從繁瑣的算法中解脫出來,簡單、直觀,只需要畫出模塊連接圖就可得到結果;最后引入科學前沿問題——混沌系統的求解,開拓了學生的視野,提高了學生興趣,培養了創新意識,使教學質量上了一個新臺階。
[1]艾冬梅,李艷晴,張麗靜等.MATLAB與數學實驗[M].北京:機械工業出版社,2010
[2]楊韌,謝海英,楊光崇.注重能力培養的數學實驗課程建設探索[J].大學數學,2013,29(3):9 ~11
[3]陳慧.數學實驗課程教學改革研究[J].中國大學數學,2007,12:35 ~36
[4]楊夷梅,楊玉軍.Matlab教學中的方法與實踐[J].中國電力教育,2008,127:59 ~60
[5]韋程東,高揚,陳志強.在常微分方程教學中融入數學建模思想的探索與實踐[J].數學的實踐與認識,2008,38(20):228~233
[6]劉欽圣,張曉丹,王兵團.數值計算方法教程[M].北京:冶金工業出版社,1998