張麗麗
(河南財經政法大學 數學與信息科學系,河南 鄭州 450002)
科學計算能力是二十一世紀人才不可或缺的,它是數學與計算機有機結合的結果,其核心內容是以現代化的計算機及數學軟件為工具,以數學模型為基礎進行模擬研究。同時,它也成為數學科學本身發展的源泉和途徑之一。高等教育中如何培養學生的科學計算能力正日益受到關注,已成為當前教育改革的核心和焦點之一[1]。
目前,國內高校一般都將數值分析列入自然科學和工程技術的教學計劃之中,以期培養學生的科學計算能力。數值分析是作者主講的課程之一,結合自己的教學情況,下面就如何在教學中培養學生的科學計算能力談一談自己的體會。
科學計算能力就是利用計算工具和軟件解決學習、科研和實際應用中出現的計算問題的能力。與傳統的科學計算編程語言C和Fortran相比,Matlab簡單易學,編程簡潔,它既有結構化的控制語句,又有面向對象編程的特性,程序限制不嚴格,自由度大,程序移植性很好。而且,Matlab的數據可視化功能強大,繪圖簡單,界面友好,繪出的圖形細膩、空間感強,這是傳統編程語言無法比擬的[2]。所以,我們在數值分析的教學中采用Matlab軟件來實現算法,可以把主要精力放在算法的步驟上,而非算法的各個細節,這樣有助于學生從整體上把握算法,掌握算法的核心和要點。例如,列主元Gauss消去法的Matlab程序如下:


此程序要求系數矩陣A非奇異.程序中(2)-(23)為消元過程,具體劃分是(3)-(8)為選列主元過程,(9)-(14)為行交換過程,(15)-(22)為每一步的消元過程;(24)-(31)為回代過程;(32)-(35)是輸出結果的代碼。因為不需要定義變量,程序編寫自由度大,上述列主元Gauss消去法程序簡潔易懂、一目了然。又因為可以面向對象編程,選主元、行交換、消元和回代過程等算法要點在程序中也都很詳細地呈現了出來。
教師在教學過程中將算法的步驟和流程圖講解清楚之后,將相應的Matlab程序展示給學生,講解程序每一部分的功能和要點,并將計算過程和計算結果演示給學生。講解過程中最重要的是,要將如何應用Matlab軟件和所學算法解決實際問題的方法教給學生,讓學生成為利用計算機和軟件進行科學計算的能手。
在數值分析的教學中,理論脫離實際的問題仍然存在。通過課堂教學,學生能夠掌握各種數值方法的基本思想、算法流程和理論分析,也通過做一些練習題來認識算法。不過,這些練習題一般規模很小且脫離實際問題,并不能真正地培養學生的科學計算能力。因此,課堂教學時引入一些規模較大且密切聯系實際的問題,不僅能夠激發學生的學習興趣、培養學生的創新精神,而且能夠培養學生的科學計算能力。為了突出教學主旨,所選問題要簡明扼要,易于闡述清楚,與教學內容能夠有機地融合在一起。例如,在擬合和插值這一部分,我們可以考慮以下這個問題:
正確的車與車之間的跟隨距離對于安全駕駛很重要。文獻[3]中給了一組車速與停止距離的數據,見表1。其中汽車的速度為v(英里/小時),司機的反應距離為dr(英尺),剎車距離為db(英尺),則總的停止距離為d=dr=db。

表1 停止距離的觀測數據和預測數據

?
假設從司機決定需要停車到剎車起作用的時間里車輛繼續以常速行駛,則司機的反應距離dr與速度v成比例dr∝v。假定是緊急停車且整個停車過程中作用的是最大的剎車力F,則剎車力所做的功Fdb應等于動能的變化mv2。而剎車力F一般與車的質量m成比例,所以剎車距離與速度之間的關系為。
用最小二乘法進行擬合,可以得到司機的反應距離dr與速度v的比例系數為

剎車距離db與速度平方v2的比例系數為

從而總的停止距離d的模型為


總之,所選問題應該重點突出,起到點睛作用,既能激發學生的創造精神和興趣,又能與算法密切銜接,培養學生的科學計算能力。
目前,學校有環境優越的機房供教學和上機實驗,大部分學生也都擁有個人計算機。上機實驗的硬件方面不成問題。要想真正激發學生的興趣,培養他們的科學計算能力,關鍵是選一些簡單的、與所學算法密切相關的實際問題,讓他們自己動手,建立簡單的數學模型,設計算法步驟,編寫程序,分析計算結果。例如,在微分方程的數值解法這一章,可以給學生這樣一個問題:某個銀行的利息是按復利進行計算的,也就是說在計算復利時,所得的利息作為本金繼續產生利息。設初期存款為1000元,年利率為5%。為了吸引存款人,銀行設置了計算復利的幾種不同期限:半年期、按季度和按月。銀行聲明它的復利是連續計算的,請建立相應的微分方程模型,并分別用Euler方法和改進的Euler方法計算存款在10年內的增長情況。
這個問題的數學模型很簡單,但是計算量大,需要借助計算機來完成。在求解過程中,學生將繁雜的計算任務編寫成程序提交給計算機來完成,一點鼠標結果就出來了,學生從中能夠感受到利用所學算法解決實際問題的快樂,能激發他們進一步學習的愿望,有利于培養他們的創新精神和科學計算能力。
總的來說,數值分析是一門理論算法抽象、應用廣泛、實用性強的學科。單純地講解各種算法的基本原理、計算步驟和理論分析,教學也就流于紙上談兵,學生也會覺得枯燥無味、失去興趣。為了避免這種現象,我們將數學建模的思想引入課堂教學,用Matlab軟件實現算法,并且讓學生上機實驗解決實際問題。通過這些措施,激發了學生的學習興趣,加深了學生對算法和理論的理解,提高了學生的科學計算能力,教學質量得以提高。
[1]蔡大用,白峰杉.高等數值分析[M].北京:清華大學出版社,1997.
[2]張志涌.精通 MATLABR2011a[M].北京:北京航空航天大學出版社,2011.
[3]F.R.Giordano,M.D.Weir,W.P.Fox.數學建模(英文版)[M].北京:機械工業出版社,2003.