傅守忠,令 鋒,孔麗英,夏 艷,王肖義,張會琴
(肇慶學院 數(shù)學與統(tǒng)計學院,廣東 肇慶 526061)
數(shù)值分析或計算方法是理工科許多專業(yè)開設的基礎課,它們都是講授利用計算機求解各種數(shù)學問題數(shù)值解的課程[1-3],內(nèi)容包括:求各種問題數(shù)值解的方法,主要是計算公式的構(gòu)造;在計算機上的算法實現(xiàn);方法的收斂性、穩(wěn)定性和誤差分析.對于與數(shù)學相關(guān)的專業(yè),該課程是數(shù)學理論與實際應用之間的橋梁,是數(shù)學模型課的必要準備,也是程序設計課的鞏固延續(xù);對于非數(shù)學相關(guān)的專業(yè),該課程是由高等數(shù)學和線性代數(shù)延伸出的必要數(shù)學工具.
許多人說“數(shù)值分析”也叫“計算方法”,這種說法實際上是不對的.盡管它們研究的內(nèi)容看似相同,但“計算方法”的重點在“方法”的實現(xiàn)和應用,而“數(shù)值分析”的精髓在理論“分析”.換言之,計算方法著重講每一類問題要“怎么算”,數(shù)值分析關(guān)鍵在討論各種數(shù)值計算的方法“為什么行”.它們的聯(lián)系與區(qū)別同數(shù)學分析與高等數(shù)學、高等代數(shù)與線性代數(shù)的聯(lián)系與區(qū)別類似.因此在數(shù)學與應用數(shù)學、信息與計算科學等以“數(shù)學分析”和“高等代數(shù)”為基礎的專業(yè)應當開設“數(shù)值分析”,而物理、電子、機械等其它以“高等數(shù)學”和“線性代數(shù)”為基礎的專業(yè)應當開設“計算方法”.
應用型本科院校的大多數(shù)學生入學基礎不夠雄厚,進入大學后,學習不夠積極主動,常有課堂上聽不懂老師所講或無法及時消化吸收的情況,而課余時間利用率也較低,不能及時復習彌補,因此,應用型本科院校的多數(shù)學生,包括數(shù)學專業(yè)的學生,數(shù)學分析和高等代數(shù)或高等數(shù)學和線性代數(shù)等數(shù)學基礎很不扎實.
程序設計由算法設計和編寫程序代碼組成,其中算法設計是關(guān)鍵,有了算法的流程,只需要針對不同計算機語言的語法和結(jié)構(gòu),就能輕松地編寫出相應的程序代碼.算法設計需要較好的邏輯推理和演算基礎,這本該是數(shù)學類專業(yè)學生的強項,但數(shù)學基礎的欠缺也限制了許多學生的算法設計能力,加之好多學生把學習程序設計的重點放在某些特定計算機語言的語法上,一定程度上造成許多學生只會驗證書上現(xiàn)有的程序,而不會設計程序.有些專升本的學生甚至沒學過任何計算機語言.
計算方法的理論教學至少需要54 學時,而數(shù)值分析則至少需72 學時,實驗教學需再另加課時或由學生自主完成.受一些通識課和實踐課等新型課程的擠壓,現(xiàn)在專業(yè)基礎課和專業(yè)主干課的課時都大幅減少.以我校為例,數(shù)學學院開設的數(shù)值分析僅有40 學時的理論課,外加16 學時的實驗課.而我校近年教學改革,將每節(jié)課縮短成40 分鐘,所以實際的理論課相當于僅有32~36 學時;有些非數(shù)學專業(yè),只有32 課時的理論課.對于基礎較差且自學能力不夠強的應用型本科院校的學生,這些課時相對有點偏少.
近年來許多學校都在搞教材建設,備選教材看似很多,但適合應用型本科院校使用的教材很少.重點院校特別是數(shù)學學院教師編寫的傳統(tǒng)《數(shù)值分析》教材,都側(cè)重于理論分析,對數(shù)學基礎要求較高,很少講如何在計算機上具體實現(xiàn);一般院校教師,特別是非數(shù)學專業(yè)教師編寫的《計算方法》教材,多數(shù)忽略了理論分析,僅注重在某種具體計算機語言中的程序?qū)崿F(xiàn),甚至連為什么“兩個相近的數(shù)相減會損失有效數(shù)字”和“兩個相差太大的數(shù)相加,大數(shù)會‘吃掉’ 小數(shù)”這些與計算機工作原理關(guān)聯(lián)的一些簡單的數(shù)學理論也沒講清楚.還有些教材所用數(shù)學理論是錯誤的或不嚴謹?shù)模灰灿行┙滩乃o的程序,沒有與原始數(shù)值計算方法對應,學生調(diào)試運行這些程序時,只知其然,不知其所以然,不能通過實驗課鞏固復習相關(guān)的理論知識.
鑒于上述實際情況,我們的數(shù)值分析和計算方法課都精選最基本的內(nèi)容講授,數(shù)值分析課的內(nèi)容也僅間于數(shù)值分析與計算方法之間,或者說是只在計算方法的基礎上加入少量的分析.在制定課程教學大綱時,嚴格明確各知識點分屬“掌握”、“熟悉”和“了解”中的哪個層次:其中屬于“掌握”層次的是要求必須學會的基本內(nèi)容,上課時作為重點進行精講,也是課程考核的重點,約占卷面分數(shù)的75%~80%;屬于“熟悉”層次的是要求盡量學會的拓展內(nèi)容,課堂上泛講,基礎較好的學生可通過課后復習進一步理解掌握,考核中占較小的比例,約占15%~20%,也是區(qū)分學生成績是優(yōu)良還是合格的主要內(nèi)容;屬于“了解”層次的是僅需要簡單認知的內(nèi)容,課上只簡單介紹其基本思想,便于一些成績較好的學生能夠更容易通過自學學懂這些內(nèi)容,考核時也只占極小的比例,僅占3%~5%.
課堂上采用多媒體和板書結(jié)合的方式講授.基本概念、定理敘述和相關(guān)圖形用多媒體課件演示,公式推導、定理證明和簡單計算過程仍用板書講解.多媒體演示是為了節(jié)省書寫所占用的時間,而板書推導能使學生更容易跟著教師的講課思路學會所講的內(nèi)容.由于大多數(shù)例題中的數(shù)據(jù)都是比較復雜的小數(shù),手工計算很費時,所以對于通過迭代或遞歸求解的問題,講授完相應的理論并對例題構(gòu)造出計算公式后,都借助Excel的公式自動復制功能演示其求解過程,使學生對所講的數(shù)值方法能有直觀的認識,這對學習相關(guān)理論和編程實現(xiàn)都有很大的幫助.
為了讓學生既能完成課程必要的數(shù)值計算方法的程序演算,又能使程序設計能力有所提升,我們將實驗分成3類.
第一類是設計型的,學生自己完成流程設計和相應代碼編寫,比如解非線性方程的簡單迭代法和解線性方程組的Gauss消元法等.
第二類是驗證型的,我們給出完整的流程圖及對應的Matlab語言版和C++語言版的源程序,學生只需讀懂流程圖就基本能理解對應的源程序了,然后通過自己輸入程序和運行,就能進一步理解該數(shù)值計算方法,同時程序設計和調(diào)試能力也會有所提高.比如計算多項式的直接算法與秦九韶算法的比較,其中涉及到統(tǒng)計各算法在計算機上的運行時間,這部分的程序大多數(shù)學生不會編寫;又如解線性方程組的LU分解法,其中涉及到讀取數(shù)據(jù)文件和數(shù)據(jù)的存儲格式等手段,多數(shù)學生還沒有掌握。因此這些實驗我們都給出完整的程序資料.
第三類是完善填空型的,給出源程序的基本框架,將相應數(shù)值方法中的關(guān)鍵步驟留空,讓學生通過填空來完成程序.比如數(shù)值積分中的Romberg算法等,對這些問題,學生自主完成自頂向下的算法設計會有一定困難,我們將頂層的結(jié)構(gòu)設計好,讓學生只完成底層部分的設計.這樣做可以適當降低實驗的難度,使更多學生能順利完成這些實驗并從中有所收獲.
習近平總書記在全國高校思想政治工作會議上強調(diào),要把思想政治工作貫穿教育教學全過程,各類課程都要與思想政治理論課同向同行,形成協(xié)同效應,把立德樹人作為教育的根本任務[4,5].
在第一節(jié)課的課程介紹中,講到數(shù)值計算方法求得的是實際問題的近似數(shù)值解,而非精確的解析解時,我們會融入航空航天及氣象預報等現(xiàn)代科技領域的一些實際問題.比如會介紹神州飛船返回就是在忽略空氣阻力等假設下,計算降落在主著陸場中心點時,需要在近地軌道的什么位置開始制動.但實際降落的位置總有偏離,這些誤差是數(shù)值計算不可避免的.隨著科技的進步,我們會盡力縮小這些誤差,像北斗導航系統(tǒng)已經(jīng)可以提供誤差不超過10 m甚至厘米級的定位.以此可以培養(yǎng)學生認真做事的科學精神,樹立學生的愛國主義思想.
在講授Newton 迭代法和數(shù)值積分時,分別融入“劉徽割圓”中“以直代曲”和分割近似計算的逼近思想.在講授方程組消元法時,會介紹約于公元1世紀就成書的《九章算術(shù)》中的“方程術(shù)”,它就是在有了分數(shù)的概念,且僅能用漢字描述數(shù)字的情況下,利用算籌進行的類似于“Gauss消元法”的計算方法.當時我國還沒有小數(shù)的概念,也沒有阿拉伯數(shù)字這樣的簡單數(shù)字符號,但計算的思想和方法較西方同類方法要早近兩千年.講授插值法時,會介紹我國南北朝計算地球每天圍繞太陽公轉(zhuǎn)的角度方法,其實當時人們認為是太陽在地面的上空運動,計算的是太陽相對地球轉(zhuǎn)過的角度,從幾何學的觀點看,這兩個角度是相等的.我國的天文學家已發(fā)現(xiàn)每天轉(zhuǎn)過的角度不同,由于技術(shù)手段無法測出每天的中心值,就測每個節(jié)氣的中心值,然后用插值的方法估算每天的中心值.隋朝的劉焯為提高計算的精確度,又發(fā)明了二次等間距內(nèi)插法,其實就是一種特殊的Newton 插值法.融入這些中國古代數(shù)學方法的元素,使學生進一步了解我國古代的許多數(shù)學思想和方法比西方相應的思想方法早了幾百到上千年,可激發(fā)學生為實現(xiàn)中華民族偉大復興而奮斗的熱情.
解方程組的Gauss-Seidel迭代法是在Jacobi迭代的基礎上,是以新產(chǎn)生的分量值代替上一步迭代向量中對應的舊分量值進行迭代的改進方法.在Jacobi迭代“漸近”收斂時,Gauss-Seidel迭代的收斂速度會更快,這會使學生產(chǎn)生兩個錯覺:“Jacobi迭代收斂時Gauss-Seidel迭代也一定收斂”,且“Gauss-Seidel迭代總比Jacobi迭代收斂快”.在講授解方程組的迭代法的收斂性時,通過兩個具體的例子說明,二者的收斂性間沒有關(guān)聯(lián),再分析當Jacobi 迭代“進退交替式”收斂時,Gauss-Seidel 迭代可能發(fā)散.這里融入了“宏觀與微觀”的辯證法思想,即Jacobi迭代宏觀上收斂,但微觀上,迭代得到的新值的精確度可能比迭代前的舊值更差,此時以新代舊的效果會變差,由此也說明“差之毫厘謬以千里”的道理,培養(yǎng)學生養(yǎng)成認真做事的習慣.
其實,在思政教育方面,身教勝于言傳.教師認真?zhèn)浜貌⒅v好每節(jié)課,細心批改學生的作業(yè)和實驗報告,都是對學生最好的思政教育,對培養(yǎng)學生認真嚴謹?shù)墓ぷ鲬B(tài)度,都很有效.甚至于俯身撿起地上的粉筆頭和擦拭干凈講臺及電腦上的灰塵等,也是對學生進行愛護公物和勤儉節(jié)約等優(yōu)良傳統(tǒng)教育的直接體現(xiàn).
教學中因材施教,使學生學會基本的內(nèi)容,了解更多的知識;實驗中量體裁衣,使學生在實驗課上都能有收獲,并有所提高.教師要不斷提升自己的專業(yè)知識水平和思想素養(yǎng),才能在教書的同時細雨潤物般育人,為社會主義建設和中華復興培育出專業(yè)能力和政治思想都合格的人才.