張麗麗
(河南財經(jīng)政法大學(xué) 數(shù)學(xué)與信息科學(xué)系,河南 鄭州 450002)
科學(xué)計算能力是二十一世紀(jì)人才不可或缺的,它是數(shù)學(xué)與計算機(jī)有機(jī)結(jié)合的結(jié)果,其核心內(nèi)容是以現(xiàn)代化的計算機(jī)及數(shù)學(xué)軟件為工具,以數(shù)學(xué)模型為基礎(chǔ)進(jìn)行模擬研究。同時,它也成為數(shù)學(xué)科學(xué)本身發(fā)展的源泉和途徑之一。高等教育中如何培養(yǎng)學(xué)生的科學(xué)計算能力正日益受到關(guān)注,已成為當(dāng)前教育改革的核心和焦點之一[1]。
目前,國內(nèi)高校一般都將數(shù)值分析列入自然科學(xué)和工程技術(shù)的教學(xué)計劃之中,以期培養(yǎng)學(xué)生的科學(xué)計算能力。數(shù)值分析是作者主講的課程之一,結(jié)合自己的教學(xué)情況,下面就如何在教學(xué)中培養(yǎng)學(xué)生的科學(xué)計算能力談一談自己的體會。
科學(xué)計算能力就是利用計算工具和軟件解決學(xué)習(xí)、科研和實際應(yīng)用中出現(xiàn)的計算問題的能力。與傳統(tǒng)的科學(xué)計算編程語言C和Fortran相比,Matlab簡單易學(xué),編程簡潔,它既有結(jié)構(gòu)化的控制語句,又有面向?qū)ο缶幊痰奶匦裕绦蛳拗撇粐?yán)格,自由度大,程序移植性很好。而且,Matlab的數(shù)據(jù)可視化功能強(qiáng)大,繪圖簡單,界面友好,繪出的圖形細(xì)膩、空間感強(qiáng),這是傳統(tǒng)編程語言無法比擬的[2]。所以,我們在數(shù)值分析的教學(xué)中采用Matlab軟件來實現(xiàn)算法,可以把主要精力放在算法的步驟上,而非算法的各個細(xì)節(jié),這樣有助于學(xué)生從整體上把握算法,掌握算法的核心和要點。例如,列主元Gauss消去法的Matlab程序如下:
此程序要求系數(shù)矩陣A非奇異.程序中(2)-(23)為消元過程,具體劃分是(3)-(8)為選列主元過程,(9)-(14)為行交換過程,(15)-(22)為每一步的消元過程;(24)-(31)為回代過程;(32)-(35)是輸出結(jié)果的代碼。因為不需要定義變量,程序編寫自由度大,上述列主元Gauss消去法程序簡潔易懂、一目了然。又因為可以面向?qū)ο缶幊?,選主元、行交換、消元和回代過程等算法要點在程序中也都很詳細(xì)地呈現(xiàn)了出來。
教師在教學(xué)過程中將算法的步驟和流程圖講解清楚之后,將相應(yīng)的Matlab程序展示給學(xué)生,講解程序每一部分的功能和要點,并將計算過程和計算結(jié)果演示給學(xué)生。講解過程中最重要的是,要將如何應(yīng)用Matlab軟件和所學(xué)算法解決實際問題的方法教給學(xué)生,讓學(xué)生成為利用計算機(jī)和軟件進(jìn)行科學(xué)計算的能手。
在數(shù)值分析的教學(xué)中,理論脫離實際的問題仍然存在。通過課堂教學(xué),學(xué)生能夠掌握各種數(shù)值方法的基本思想、算法流程和理論分析,也通過做一些練習(xí)題來認(rèn)識算法。不過,這些練習(xí)題一般規(guī)模很小且脫離實際問題,并不能真正地培養(yǎng)學(xué)生的科學(xué)計算能力。因此,課堂教學(xué)時引入一些規(guī)模較大且密切聯(lián)系實際的問題,不僅能夠激發(fā)學(xué)生的學(xué)習(xí)興趣、培養(yǎng)學(xué)生的創(chuàng)新精神,而且能夠培養(yǎng)學(xué)生的科學(xué)計算能力。為了突出教學(xué)主旨,所選問題要簡明扼要,易于闡述清楚,與教學(xué)內(nèi)容能夠有機(jī)地融合在一起。例如,在擬合和插值這一部分,我們可以考慮以下這個問題:
正確的車與車之間的跟隨距離對于安全駕駛很重要。文獻(xiàn)[3]中給了一組車速與停止距離的數(shù)據(jù),見表1。其中汽車的速度為v(英里/小時),司機(jī)的反應(yīng)距離為dr(英尺),剎車距離為db(英尺),則總的停止距離為d=dr=db。
表1 停止距離的觀測數(shù)據(jù)和預(yù)測數(shù)據(jù)
?
假設(shè)從司機(jī)決定需要停車到剎車起作用的時間里車輛繼續(xù)以常速行駛,則司機(jī)的反應(yīng)距離dr與速度v成比例dr∝v。假定是緊急停車且整個停車過程中作用的是最大的剎車力F,則剎車力所做的功Fdb應(yīng)等于動能的變化mv2。而剎車力F一般與車的質(zhì)量m成比例,所以剎車距離與速度之間的關(guān)系為。
用最小二乘法進(jìn)行擬合,可以得到司機(jī)的反應(yīng)距離dr與速度v的比例系數(shù)為
剎車距離db與速度平方v2的比例系數(shù)為
從而總的停止距離d的模型為
總之,所選問題應(yīng)該重點突出,起到點睛作用,既能激發(fā)學(xué)生的創(chuàng)造精神和興趣,又能與算法密切銜接,培養(yǎng)學(xué)生的科學(xué)計算能力。
目前,學(xué)校有環(huán)境優(yōu)越的機(jī)房供教學(xué)和上機(jī)實驗,大部分學(xué)生也都擁有個人計算機(jī)。上機(jī)實驗的硬件方面不成問題。要想真正激發(fā)學(xué)生的興趣,培養(yǎng)他們的科學(xué)計算能力,關(guān)鍵是選一些簡單的、與所學(xué)算法密切相關(guān)的實際問題,讓他們自己動手,建立簡單的數(shù)學(xué)模型,設(shè)計算法步驟,編寫程序,分析計算結(jié)果。例如,在微分方程的數(shù)值解法這一章,可以給學(xué)生這樣一個問題:某個銀行的利息是按復(fù)利進(jìn)行計算的,也就是說在計算復(fù)利時,所得的利息作為本金繼續(xù)產(chǎn)生利息。設(shè)初期存款為1000元,年利率為5%。為了吸引存款人,銀行設(shè)置了計算復(fù)利的幾種不同期限:半年期、按季度和按月。銀行聲明它的復(fù)利是連續(xù)計算的,請建立相應(yīng)的微分方程模型,并分別用Euler方法和改進(jìn)的Euler方法計算存款在10年內(nèi)的增長情況。
這個問題的數(shù)學(xué)模型很簡單,但是計算量大,需要借助計算機(jī)來完成。在求解過程中,學(xué)生將繁雜的計算任務(wù)編寫成程序提交給計算機(jī)來完成,一點鼠標(biāo)結(jié)果就出來了,學(xué)生從中能夠感受到利用所學(xué)算法解決實際問題的快樂,能激發(fā)他們進(jìn)一步學(xué)習(xí)的愿望,有利于培養(yǎng)他們的創(chuàng)新精神和科學(xué)計算能力。
總的來說,數(shù)值分析是一門理論算法抽象、應(yīng)用廣泛、實用性強(qiáng)的學(xué)科。單純地講解各種算法的基本原理、計算步驟和理論分析,教學(xué)也就流于紙上談兵,學(xué)生也會覺得枯燥無味、失去興趣。為了避免這種現(xiàn)象,我們將數(shù)學(xué)建模的思想引入課堂教學(xué),用Matlab軟件實現(xiàn)算法,并且讓學(xué)生上機(jī)實驗解決實際問題。通過這些措施,激發(fā)了學(xué)生的學(xué)習(xí)興趣,加深了學(xué)生對算法和理論的理解,提高了學(xué)生的科學(xué)計算能力,教學(xué)質(zhì)量得以提高。
[1]蔡大用,白峰杉.高等數(shù)值分析[M].北京:清華大學(xué)出版社,1997.
[2]張志涌.精通 MATLABR2011a[M].北京:北京航空航天大學(xué)出版社,2011.
[3]F.R.Giordano,M.D.Weir,W.P.Fox.數(shù)學(xué)建模(英文版)[M].北京:機(jī)械工業(yè)出版社,2003.