摘要:分析大學(xué)工科計(jì)算方法課程教學(xué)中存在的常見(jiàn)問(wèn)題,基于課程特點(diǎn),從計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)教學(xué)角度,研究計(jì)算方法課程的基本定位、教學(xué)內(nèi)容與重點(diǎn)、教學(xué)方式與講授順序,探討課程實(shí)踐教學(xué)的內(nèi)容與方式。
關(guān)鍵詞:計(jì)算方法;教學(xué);數(shù)值算法;實(shí)踐
文章編號(hào):1672-5913(2013)18-0069-04
中圖分類(lèi)號(hào):G642
0 引言
作為科學(xué)方法論的三大組成部分之一,科學(xué)計(jì)算在人類(lèi)生活中正扮演著日益重要的角色,而選用計(jì)算方法作為整個(gè)科學(xué)計(jì)算全過(guò)程中的一個(gè)重要環(huán)節(jié),是程序設(shè)計(jì)和對(duì)數(shù)值計(jì)算結(jié)果進(jìn)行分析的依據(jù)和基礎(chǔ)。計(jì)算方法課程作為工學(xué)本科專(zhuān)業(yè),尤其是計(jì)算機(jī)專(zhuān)業(yè)的一門(mén)重要選修課程,講授內(nèi)容包括常用的數(shù)值計(jì)算方法及其相關(guān)理論。通過(guò)該課程的學(xué)習(xí),為學(xué)生進(jìn)一步學(xué)習(xí)和解決各類(lèi)科學(xué)或工程實(shí)際問(wèn)題,培養(yǎng)自身的學(xué)科基本能力與創(chuàng)新能力奠定良好的基礎(chǔ)。
長(zhǎng)期以來(lái),計(jì)算方法課程教學(xué)存在著過(guò)分強(qiáng)調(diào)理論教學(xué),輕視實(shí)踐教學(xué),重視課堂教育,輕視算法設(shè)計(jì)與實(shí)現(xiàn)綜合訓(xùn)練,以及缺少與科學(xué)、工程實(shí)際相關(guān)的教學(xué)案例等傾向,教學(xué)效果不甚理想。因此,計(jì)算方法課程教學(xué)改革勢(shì)在必行。近幾年,筆者一直從事計(jì)算機(jī)專(zhuān)業(yè)本科生計(jì)算方法課程的教學(xué),在教學(xué)過(guò)程中,從教學(xué)內(nèi)容、教學(xué)方法及實(shí)踐教學(xué)等方面進(jìn)行改革與實(shí)踐,并取得了較好的效果,對(duì)該課程的教學(xué)有了較為深刻的認(rèn)識(shí)與體會(huì)。
1 計(jì)算方法課程的定位、內(nèi)容及教材選用
計(jì)算方法是從計(jì)算機(jī)的角度考察計(jì)算數(shù)學(xué),形成“面向計(jì)算機(jī)”的數(shù)值算法設(shè)計(jì)學(xué),它以數(shù)學(xué)問(wèn)題為對(duì)象,研究各種數(shù)值算法及其相關(guān)理論。對(duì)于計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,學(xué)習(xí)計(jì)算方法的主要目的在于運(yùn)用,即針對(duì)科學(xué)研究和工程設(shè)計(jì)中的實(shí)際問(wèn)題,通過(guò)建立數(shù)學(xué)模型,運(yùn)用理論設(shè)計(jì)相應(yīng)的算法,編制相應(yīng)的計(jì)算機(jī)程序,最終上機(jī)計(jì)算求出結(jié)果。因此,課程的主要任務(wù)是使學(xué)生掌握最常用、最基本的數(shù)值計(jì)算的基本概念、基本方法和基本理論。
計(jì)算方法課程包括插值方法、數(shù)值積分與數(shù)值微分、常微分方程的差分方法、非線性方程的求根、線性方程組的迭代法與直接法等內(nèi)容。它們構(gòu)成兩大模塊:①數(shù)值微積分模塊,討論將微積分方法化歸為代數(shù)問(wèn)題或解方程,包括插值方法、數(shù)值微積分和常微分方程的差分法;②方程(組)求解模塊,致力于討論方程(組)的解法,包括非線性方程求根、線性方程組的迭代法與直接法。課程具有以下特點(diǎn):借助計(jì)算機(jī)提供切實(shí)可行的數(shù)學(xué)算法,所提出的算法必須具有可靠的理論分析、理想的精確度、收斂且穩(wěn)定,誤差可以分析或估計(jì),計(jì)算復(fù)雜性好(該特點(diǎn)通過(guò)時(shí)間復(fù)雜性和空間復(fù)雜性兩個(gè)指標(biāo)衡量,即節(jié)省時(shí)間與空間存儲(chǔ)量),并通過(guò)數(shù)值實(shí)驗(yàn)證明算法行之有效。
課程內(nèi)容可安排在56課時(shí)內(nèi)完成,其中課堂講授40課時(shí),上機(jī)實(shí)驗(yàn)16課時(shí)。教材選用由華中科技大學(xué)出版社、王能超教授編寫(xiě)的《計(jì)算方法》。該教材完全摒棄了依據(jù)微積分知識(shí)設(shè)計(jì)算法的傳統(tǒng)做法,代之以幾種富于概括性的設(shè)計(jì)思想和方法原則,概念清晰,結(jié)構(gòu)編排由淺入深,分析問(wèn)題具有很強(qiáng)的啟發(fā)性。
2 計(jì)算方法的教學(xué)重點(diǎn)、方式與順序
2.1 教學(xué)重點(diǎn)
學(xué)習(xí)計(jì)算方法課程,不必追求數(shù)學(xué)理論的完整性與嚴(yán)密性,重要的是進(jìn)行算法的設(shè)計(jì),它是科學(xué)計(jì)算成敗的關(guān)鍵。合理地選擇算法是建立在正確的算法分析基礎(chǔ)之上,通過(guò)算法分析掌握算法的適用性、有效性、收斂性、可靠性和穩(wěn)定性,但對(duì)計(jì)算機(jī)專(zhuān)業(yè)學(xué)生這部分內(nèi)容可以不作為重點(diǎn)。課程講授的重點(diǎn)應(yīng)放在算法的設(shè)計(jì)與實(shí)現(xiàn)上,教會(huì)學(xué)生掌握各種算法的設(shè)計(jì)機(jī)理并靈活運(yùn)用其進(jìn)行算法的設(shè)計(jì)。
基于以上理念,在教學(xué)中我們合理設(shè)置了各部分內(nèi)容的側(cè)重點(diǎn)。
1)插值方法。
使學(xué)生明確插值過(guò)程實(shí)際是直接利用所給數(shù)據(jù)進(jìn)行加權(quán)平均,基于代數(shù)精度的概念將插值公式的設(shè)計(jì)化歸為確定平均化系數(shù)的代數(shù)問(wèn)題。教學(xué)中應(yīng)重點(diǎn)講授多項(xiàng)式插值,包括Lagrange插值及Hermite插值,在此基礎(chǔ)上使學(xué)生掌握通過(guò)線性插值的重復(fù)化得到高階插值公式的Aitken逐步插值算法與Neville逐步插值算法,并重點(diǎn)介紹分段插值的基本思想與公式。至于樣條插值,可不作考核要求。
2)數(shù)值積分與數(shù)值微分。
應(yīng)強(qiáng)調(diào)數(shù)值積分的基本思想是通過(guò)若干個(gè)求積節(jié)點(diǎn)上的函數(shù)值的加權(quán)平均生成平均高度,數(shù)值微分則是將導(dǎo)數(shù)計(jì)算化歸為若干個(gè)節(jié)點(diǎn)處函數(shù)值的加權(quán)平均。教師必須教會(huì)學(xué)生在盡可能高的代數(shù)精度目標(biāo)下進(jìn)行求積公式的設(shè)計(jì),且設(shè)計(jì)求積公式時(shí)可利用對(duì)稱(chēng)性原理減少待定參數(shù)。具體內(nèi)容以等距節(jié)點(diǎn)上的Newton-Cotes公式、非等距的Gauss公式為重點(diǎn),明確Gauss公式的精度較高,但需同時(shí)處理求積系數(shù)和求積節(jié)點(diǎn),并能利用對(duì)稱(chēng)性簡(jiǎn)化處理過(guò)程。對(duì)于固定步長(zhǎng)、變步長(zhǎng)的復(fù)化求積方法及Romgerg加速算法也應(yīng)給予足夠重視,而數(shù)值微分及其加速方法只簡(jiǎn)單介紹即可。
3)常微分方程的差分法。
重點(diǎn)介紹常用單步法的Euler方法和Runge-Kutta方法,線性多步法的Adams方法,它們又分為顯示和隱式兩種差分格式。具體實(shí)施中,使學(xué)生明確Euler方法的不同差分格式實(shí)際上是根據(jù)近似區(qū)間上導(dǎo)數(shù)方法的不同而得到,重點(diǎn)掌握顯式方法與隱式方法、兩步格式與梯形格式以及Euler預(yù)報(bào)校正系統(tǒng)。對(duì)于Runge-Kutta方法,關(guān)鍵在于尋求求解平均斜率的方法,重點(diǎn)掌握二階及經(jīng)典Runge-Kutta方法。為設(shè)計(jì)多步格式,需掌握如何將所給實(shí)際問(wèn)題化歸為數(shù)學(xué)問(wèn)題,將數(shù)學(xué)問(wèn)題化歸為代數(shù)問(wèn)題,并基于代數(shù)精度概念,具體地列出方程組。
4)非線性方程求根。
重點(diǎn)介紹根的存在性、根的范圍和根的精確化,明確其基本思想是將隱式的非線性化模型逐步顯式化、線性化。實(shí)際應(yīng)用中,應(yīng)通過(guò)運(yùn)用基本的算法設(shè)計(jì)技術(shù),舍棄高階小量,將難以處理的非線性方程加工成容易求解的線性化的校正方程,逐步校正所獲得的近似根,迭代誤差逐步縮小,以保證迭代過(guò)程的收斂性,并對(duì)每一步迭代出的新值與老值進(jìn)行加權(quán)平均(松弛),得出精度更好的改進(jìn)值。要求學(xué)生熟練掌握Newton法及一系列改進(jìn)的Newton方法。對(duì)于非線性方程組只需簡(jiǎn)單介紹Newton方法,但由于理論的復(fù)雜性,故不作考核要求。
5)線性方程組的迭代法和直接法。
對(duì)于迭代法,教會(huì)學(xué)生將線性方程組的求解過(guò)程加工成對(duì)角方程組或三角方程組求解過(guò)程的重復(fù)。重點(diǎn)介紹Jacobi公式與Gauss-Seidel公式,在此基礎(chǔ)上掌握超松弛迭代加速方法,以及通過(guò)矩陣分裂導(dǎo)出上述兩者方法的迭代矩陣。對(duì)于直接法,使學(xué)生掌握方法的核心在于利用矩陣分解技術(shù)通過(guò)運(yùn)算手續(xù)直接將所給線性方程組加工成某個(gè)三角方程組乃至對(duì)角方程組來(lái)求解,掌握利用求解過(guò)程的“追”手續(xù)與“趕”手續(xù)。重點(diǎn)講解Gauss消元法、列主元與全主元Gauss消元法、LU的Doolittle與Crout分解方法,然后使學(xué)生掌握通過(guò)LU手續(xù)利用追趕法求解三對(duì)角方程組、利用Cholesky及其改進(jìn)方法求解系數(shù)矩陣為對(duì)稱(chēng)正定陣的線性方程組。
2.2 教學(xué)方式
課程教學(xué)中,我們牢牢把握了1條主線、2類(lèi)基本方法和4種基本技術(shù),對(duì)學(xué)生進(jìn)行正確的引導(dǎo),使學(xué)生能舉一反三,快速掌握數(shù)值的校正量,要求校正方程具有逼近性和簡(jiǎn)易性;逐步求精是指繼續(xù)迭代與否取決于改進(jìn)值是否滿足精度要求,若不滿足,則用改進(jìn)值作為新的猜測(cè)值重復(fù)上述步驟。
(3)松弛技術(shù):松弛過(guò)程也是加速迭代的過(guò)程,即通過(guò)對(duì)兩個(gè)與目標(biāo)值精度相當(dāng)?shù)慕浦档募訖?quán)平均得到精度更高的改進(jìn)值,其設(shè)計(jì)機(jī)理可表述為優(yōu)劣互補(bǔ)、激濁揚(yáng)清。運(yùn)用松弛技術(shù)的關(guān)鍵是選取合適的松弛因子,當(dāng)近似值有優(yōu)劣之分時(shí),松弛因子一正一負(fù),松弛技術(shù)稱(chēng)為超松弛技術(shù)。
(4)二分技術(shù):它是縮減技術(shù)的延伸,也是一種高效算法的設(shè)計(jì)技術(shù),其設(shè)計(jì)機(jī)理變慢為快,即每一步使問(wèn)題的規(guī)模減半,規(guī)模按等比級(jí)數(shù)(1/2)遞減,直至規(guī)模變?yōu)?時(shí)終止計(jì)算。
2.3 教學(xué)順序
算法設(shè)計(jì)的基本方法與過(guò)程。
1 條主線是復(fù)雜問(wèn)題簡(jiǎn)單化,將復(fù)雜計(jì)算化歸為一系列簡(jiǎn)單計(jì)算的重復(fù)。
2 類(lèi)基本方法包括直接法與迭代法。它們均按照規(guī)??s減的原則進(jìn)行演化,主要區(qū)別在于直接法是正整數(shù)規(guī)模的有限縮減過(guò)程,而迭代法是實(shí)數(shù)規(guī)模的無(wú)窮縮減過(guò)程。
數(shù)值算法設(shè)計(jì)的基本與一般性技術(shù)(包括縮減技術(shù)、校正技術(shù)、超松弛技術(shù)和二分技術(shù))是直接法與迭代法的設(shè)計(jì)基礎(chǔ)。其中,二分技術(shù)是縮減技術(shù)的加速,超松弛技術(shù)是校正技術(shù)的優(yōu)化。
(1)縮減技術(shù):適用于通過(guò)有限步計(jì)算可直接得到問(wèn)題解的直接法,其設(shè)計(jì)機(jī)理為大事化小,小事化了。大事化小即通過(guò)設(shè)計(jì)結(jié)構(gòu)遞歸,將所考察的問(wèn)題加工成規(guī)模壓縮了的同類(lèi)問(wèn)題,使每一步加工后的問(wèn)題規(guī)模相比之前小1,最終達(dá)到規(guī)模遞減之目的;而小事化了則意味著問(wèn)題的規(guī)模變得足夠小,可直接計(jì)算或能方便地得出問(wèn)題的解。
(2)校正技術(shù):是指對(duì)于無(wú)法大事化小的問(wèn)題只能通過(guò)無(wú)限的逼近過(guò)程——迭代近似求解,其設(shè)計(jì)機(jī)理可概況為以簡(jiǎn)馭繁與逐步求精。以簡(jiǎn)馭繁是指通過(guò)構(gòu)造某個(gè)簡(jiǎn)化方程(校正方程)近似替代原先比較復(fù)雜的方程,以確定所給預(yù)報(bào)值
課程的講授順序應(yīng)科學(xué)安排,循序漸進(jìn)。
1)數(shù)值微積分模塊。
該模塊的3部分內(nèi)容都是從簡(jiǎn)單出發(fā)、基于平均化原則,都?xì)w結(jié)為某些離散函數(shù)值的加權(quán)平均,最終歸結(jié)為確定權(quán)系數(shù),將含有多個(gè)權(quán)系數(shù)的代數(shù)模型加工為每步確定一個(gè)松弛因子的遞推過(guò)程。
其中,插值方法講授函數(shù)的近似表示,由其構(gòu)造出的插值函數(shù)可充當(dāng)某種簡(jiǎn)單的近似函數(shù)。插值逼近是數(shù)值微積分方法的理論基礎(chǔ),如果用插值函數(shù)近似替代被積函數(shù),可導(dǎo)出數(shù)值求積公式。而數(shù)值微積分講授積分與微分的近似計(jì)算,基于數(shù)值求積公式可以導(dǎo)出差分格式,常微分方程的差分方法講授常微分方程的近似求解,形式上可表示為積分形式。作為承上啟下重要環(huán)節(jié)的常微分方程的差分方法是數(shù)值計(jì)算的核心內(nèi)容,其定解問(wèn)題包括初值問(wèn)題與邊值問(wèn)題,其中,初值問(wèn)題的隱式格式需要求解函數(shù)方程,邊值問(wèn)題的差分方法化歸為大型線性方程組。
2)方程(組)求解模塊。
該模塊的3部分內(nèi)容形成了一個(gè)有機(jī)的整體,進(jìn)行方程(組)求解所用的迭代方法是本模塊的基礎(chǔ),即都是將函數(shù)方程或線性方程組劃歸為一系列遞推算式。迭代方法不僅可用于非線性方程的求根(逐步線性化),而且還可進(jìn)行線性(非線性)方程組的求解。而線性方程組的迭代法與直接法互為反方法,它們分別對(duì)矩陣施行矩陣分裂(矩陣相加)與矩陣分解(矩陣相乘)手續(xù),基本的處理策略都是將所給的線性方程組化歸為三角方程組逐步逼近所求的解。
對(duì)于上述兩大模塊,數(shù)值微積分模塊討論將微積分方法化歸為代數(shù)問(wèn)題乃至于解方程,而方程(組)求解模塊致力于討論方程的解法。因此,課程的教學(xué)順序應(yīng)為:插值方法、數(shù)值積分與數(shù)值微分、常微分方程的差分方法、非線性方程的求根、線性方程組的迭代法與直接法。
3 計(jì)算方法課程實(shí)驗(yàn)環(huán)節(jié)的設(shè)計(jì)
實(shí)踐教學(xué)是計(jì)算方法課程教學(xué)內(nèi)容的重要組成部分。在教學(xué)中我們采取了以下措施:
1)精選實(shí)驗(yàn)內(nèi)容,注重提高解決實(shí)際問(wèn)題能力的培養(yǎng)。
實(shí)驗(yàn)的目的在于使學(xué)生熟悉數(shù)值算法的運(yùn)算過(guò)程,加深對(duì)基本理論的理解,并最終能用于解決科學(xué)、工程實(shí)際問(wèn)題。因此,在進(jìn)行實(shí)驗(yàn)內(nèi)容設(shè)計(jì)時(shí),我們將計(jì)算方法課程與其他學(xué)科相結(jié)合,精選一些貼近工程或科學(xué)實(shí)際的問(wèn)題,啟發(fā)引導(dǎo)學(xué)生積極思維,讓學(xué)生自己動(dòng)手,查閱文獻(xiàn),分析研究,建立模型,設(shè)計(jì)算法,編寫(xiě)程序并上機(jī)調(diào)試,以及分析運(yùn)行結(jié)果。這樣既加深了學(xué)生對(duì)算法的理解,同時(shí)培育了學(xué)生解決實(shí)際問(wèn)題的能力。
2)基于Matlab計(jì)算平臺(tái),深入引導(dǎo)學(xué)生理解算法內(nèi)涵。
為提高學(xué)習(xí)本課程的興趣,可借助一些數(shù)學(xué)軟件使問(wèn)題簡(jiǎn)單化,將學(xué)生的注意力從編程轉(zhuǎn)移到實(shí)際問(wèn)題的解決上來(lái)。實(shí)踐中,選用了Matlab作為實(shí)驗(yàn)平臺(tái),利用Maflab軟件平臺(tái)強(qiáng)大的計(jì)算功能與圖形處理功能,將復(fù)雜抽象的定義、理論與算法簡(jiǎn)單化、具體化,既能進(jìn)行數(shù)值計(jì)算,又能實(shí)現(xiàn)計(jì)算結(jié)果的可視化,取得較好的實(shí)驗(yàn)效果。
4 結(jié)語(yǔ)
計(jì)算機(jī)計(jì)算能力的提高需要借助于好的計(jì)算方法,計(jì)算方法課程致力于探索適合在計(jì)算機(jī)上使用的理論可靠、實(shí)現(xiàn)可行、計(jì)算復(fù)雜性好的數(shù)值算法之設(shè)計(jì)方法。針對(duì)計(jì)算機(jī)專(zhuān)業(yè)本科學(xué)生學(xué)習(xí)計(jì)算方法課程中存在的問(wèn)題,我們對(duì)課程進(jìn)行改革,以培養(yǎng)學(xué)生基本的數(shù)值算法設(shè)計(jì)與實(shí)現(xiàn)能力為核心目標(biāo),總結(jié)并提出了課程的教學(xué)重點(diǎn)、教學(xué)順序、教學(xué)方式方法,以及實(shí)踐教學(xué)環(huán)節(jié)應(yīng)達(dá)到的目標(biāo)。實(shí)踐表明,這種教學(xué)模式對(duì)于提高學(xué)生的學(xué)習(xí)主動(dòng)性和創(chuàng)新意識(shí),培養(yǎng)學(xué)生的程序設(shè)計(jì)能力和綜合應(yīng)用能力具有較好的作用。
參考文獻(xiàn):
[1]王能超,計(jì)算方法:算法設(shè)計(jì)及其Matlab實(shí)現(xiàn)[M],武漢:華中科技大學(xué)出版社,2010
[2]鄧建中,理工科計(jì)算方法課程教學(xué)中若干分歧問(wèn)題的我見(jiàn)[J],大學(xué)數(shù)學(xué),1992,8(2):84-86
[3]陳延梅,張池平,李道華,大學(xué)工科數(shù)學(xué)計(jì)算方法教學(xué)之探討[J],大學(xué)數(shù)學(xué),2005,21(2):29-31
[4]陳瑞林,徐定華,計(jì)算科學(xué)與工程學(xué)科視覺(jué)下的計(jì)算方法課程教學(xué)改革[J],浙江理工大學(xué)學(xué)報(bào),2012,29(6):933-937
[5]李大美,謝進(jìn),基于創(chuàng)新能力培養(yǎng)的計(jì)算方法課程改革[J],中國(guó)大學(xué)教學(xué),2007(4):8-9
[6]何亞麗,劉春風(fēng),數(shù)值計(jì)算方法課程中實(shí)驗(yàn)環(huán)節(jié)的設(shè)計(jì)[J],大學(xué)數(shù)學(xué),2008,24(1):9-12
(見(jiàn)習(xí)編輯:劉麗麗)