顧旭東 王市委 張援農
摘要科學計算方法是一門面向理工科本科生的、具有廣泛用途的專業(yè)基礎課程,主要涉及線性及非線性方程的求解、插值與擬合、數值積分和微分方程的求解等過程所需的數值理論和方法。計算機技術的提升和算法的創(chuàng)新推動著科學計算的迅猛發(fā)展,因此科學計算方法課程的教學方法也應及時調整以適應當前本科生教育。文章以科學計算方法本科生課程的開設作為實踐基礎,從理論和實驗教學兩個方面對教學方法進行了探討。針對當前本科生教育發(fā)展的需求,結合科學計算方法課程的特點,所探討的方法在教學活動中的得以運用,提升了學生的自主學習興趣,提高了學習效率,而且能夠學以致用,取得了良好的教學效果。
關鍵詞 教學方法;科學計算;探討與研究
中圖分類號:G424文獻標識碼:ADOI:10.16400/j.cnki.kjdk.2023.12.038
科學計算是指應用計算機,基于適當的數值方法編寫程序求解科學研究和工程技術中所遇到的數學問題。在現(xiàn)代科學和工程技術中,經常會遇到大量復雜的數學計算問題,且用一般的計算工具來解決非常困難,而用科學計算來處理卻非常容易[1-2]。在我國“東數西算”大戰(zhàn)略的背景下,運用科學計算解決科學研究和工程技術發(fā)展中遇到的關鍵性問題,顯得尤為重要,有望帶來巨大的經濟效益,同時帶動科學技術本身發(fā)生根本性變化。
科學計算主要包括建立數學模型、建立求解的計算方法和計算機實現(xiàn)三個階段。建立數學模型是指依據學科理論對所研究的對象確立一系列的量化關系,即數學公式或方程[3-4]。數學模型一般包含連續(xù)變量,如微分、積分、偏微分方程等,這些不能在計算機上直接處理。為此,需要進行離散化處理,即把問題化為包含有限未知數的離散形式,然后尋找數值求解方法。計算機實現(xiàn)包括編制程序、調試、運算和結果分析等一系列步驟[4-5]。依據數值算法,使用程序語言(如C/C++、Fortran和MATLAB)和軟件工具編寫程序并調試。之后的工作主要依靠高性能計算資源和數據分析處理系統(tǒng)作為支撐,從而完成求解過程。在科學計算中需要物理、數學與計算機等多學科的充分交叉融合,做到物理建模、計算方法、并行算法、軟件研制和高性能計算機等方面的有機結合。
科學計算方法是一門面向理工科本科生,具有實際用途的專業(yè)基礎課程,主要涉及線性/非線性和偏微分/微分方程的求解、插值與擬合、數值微積分等基本的數值理論和方法。隨著計算機技術的發(fā)展,在數值計算課程教學方法上出現(xiàn)越來越多的探討,為課程教學提供了有益的參考[6-16]。本文以科學計算方法本科生課程開設的具體實踐為基礎,從理論和實驗教學兩個方面探討教學方法,有助于對科學計算方法的本科生教學提供有意義的指導和參考。
1科學計算方法課程安排
在新工科培養(yǎng)方案中,科學計算方法等專業(yè)基礎課程的學時被進一步壓縮,安排的授課時間減少三分之一。在科學計算方法有限的學時中,按照4:3的比例,我們開展理論教學32個學時,實驗教學24個學時。理論教學主要包含預備知識、非線性方程解法、線性方程組的數值解法、差值與多項式逼近、曲線擬合、數值積分、微分方程求解和偏微分方程數值解,共計8個部分。實驗教學為集中時段內的上機實驗,其目的是在進一步鞏固科學計算的方法和原理的基礎上,掌握如何通過計算機編程完成特定科學計算任務并實現(xiàn)結果的輸出。為減少編程和上機實驗的難度,選擇MATLAB語言作為科學計算方法教學的支撐,可以滿足從算法的實現(xiàn),到結果的圖形化輸出等需求。使用了國外計算機科學教材系列叢書中的《數值方法MATLAB版》為本課程的教材,緊跟當前國際上本科生科學計算方法的教學內容水準。
2科學計算方法課程教學方法探討
2.1理論教學方法
科學計算方法理論教學重點講授科學計算所涉及的方法和原理,主要目的是讓學生掌握計算中需要用到的解方程、數據插值和擬合以及數值積分等相關技能。針對有一定學習基礎的理工本科生,相對于傳統(tǒng)的理論教學方法,科學計算方法理論教學作了如下四個方面的嘗試:
①嘗試對教學順序作出適當改變,以利于用分類、對比的方法進行理論教學。重新劃分了知識點,梳理了授課內容,制訂了詳細的授課方案。
②嘗試在與計算機編程有關的講解中,重點介紹程序編寫、表達式和語法上相對于C語言的差異,側重于數據的格式化文件輸出和結果的圖形化輸出。
③嘗試結合實際案例對知識點進行詳細講解,引導學生從更深層次思考該課程的作用和意義,提高學生的興趣和學習積極性。
④嘗試在數值計算核心算法講解中,重點介紹原理以及實現(xiàn)途徑,結合流程圖展示程序實現(xiàn)的步驟,詳細分析核心程序代碼,明確編程規(guī)范。
在滿足科學計算方法教學大綱要求的前提下,基于以上理論教學方法對教學思路進行了如下的調整:
①為了能夠在既定的課時里完成教學任務,達到教學目標,首先適當改變課程教學順序,對知識點進行了重新劃分,如圖2(p118)所示。在此基礎之上,對授課內容進行了重新梳理,制訂了詳細的授課方案。在解方程部分,把非線性方程、線性方程、微分方程和偏微分方程的數值算法調整在一起,依次講授,既把它們之間的區(qū)別清晰地講授清楚,又特別指出它們之間的聯(lián)系;插值和擬合放在一起進行詳細講授,使學生掌握數據分析和處理的基本方法;積分部分在數值計算中也占有非常重要的地位,由易到難,從五個部分分別進行講授。盡管教學順序與教材目錄排序不一致,但是通過分類、對比的方法進行上述教學活動,顯著提高了教學成效。
②授課的對象為具有C/C++編程語言基礎和計算機編程思維的理工本科生,因此在講授MATLAB基礎的時候,重點介紹程序編寫、表達式和語法上相對于C語言的差異;另外,重點講授計算結果在MATLAB中的輸出方法,包含數據的格式化文件輸出和結果的圖形化輸出,為后續(xù)科學計算方法的上機實現(xiàn)打好基礎。
③結合實際案例對知識點進行詳細講解,提高學生的學習興趣,鞏固相關的知識點,下面以三個具體知識點的講授方法為例詳細給予說明:
④往往計算機編程的程序算法與科學計算的理論方法不完全一致,這給學生的學習帶來一定的困難,甚至出現(xiàn)學生在良好地掌握了理論方法后,依然在構建編程算法的時候“無從下手”。本課程最終需要落實到數值計算核心算法的講解,同時注重結合算法流程圖,講授算法的具體實現(xiàn)過程。一方面增強學生對算法的深入理解,另一方面可以為后續(xù)的上機實驗作好準備。主要涉及算法具體為求解非線性方程的二分法、牛頓法和割線法,求解線性方程的三角分解法和迭代法,解微分方程的歐拉法、休恩法和龍格庫塔法,解偏微分方程的差分方法,用于插值的拉格朗日和牛頓法,用于擬合的曲線擬合和樣條函數法,以及用于積分的梯形、辛普森、布爾、組合積分和龍貝格法。針對每一種核心算法,給出對應的實現(xiàn)流程圖,分析程序算法每一個步驟與理論方法的對應關系,培養(yǎng)學生的編程思維能力。
2.2實驗教學方法
當前學科的發(fā)展和人才培養(yǎng)的要求,給本科生實驗教學提出了新的任務和要求。其指導方針是借鑒世界一流大學拔尖人才培養(yǎng)博雅型教育和研究型學習的理念,依托學科優(yōu)勢和高水平的師資隊伍,貫徹寬口徑、厚基礎、強能力的方針,大膽探索,逐步形成具有顯著特色的培養(yǎng)模式。為了達到上述目標,科學計算方法的實驗教學也做出積極的改變,采取了與以往本科生實驗明顯不同的教學方法。實驗教學相對于理論教學更加開放和靈活,因此以任務驅動的方法來進行。以計算方法實踐為目的,將實驗內容依據知識點以及它們之間的聯(lián)系分解為若干子任務,明確每個任務的基本要求,給予學生自由選題的機會。這種方式有利于學生將本課程所學的科學計算方法和其他課程所學的數學、物理方法及編程等知識進行綜合運用。與具體問題情景相聯(lián)系,有利于激發(fā)學生的實踐熱情和創(chuàng)造力,并培養(yǎng)學生“發(fā)現(xiàn)問題―分析問題―解決問題”的能力。
實驗需要針對具體的問題使用算法編程實現(xiàn),并且給出數值結果。要求學生學會模塊化編程的思想,把每一個核心算法編寫成函數,在編寫主程序時調用核心算法函數,運行得到結果。在此過程中,學生可以把編寫的函數與MATLAB函數庫中具有同樣功能的函數運行結果作對比,確保所寫核心算法的正確性。實驗評價以任務完成情況作為主要依據,學生需要提交詳細的實驗報告,包含代碼、運行結果和小結。具體的做法是根據實驗教學目標,擬定實驗任務,分別對應方程求解、插值與擬合以及積分的相關知識點。要求學生能夠獨立完成每一項任務,可以查閱課本、講義,也可以參考網絡課程資料,但是知識點相關算法代碼必須自己編寫。在上機實驗過程中,充分發(fā)揮學生的“主體”地位,實驗教師圍繞任務目標來展開指導,學生獨立完成具體的子任務來達成實踐目標。
3結論
在深化本科生教學活動改革的背景下,為適應本科生科學計算方法教學的新的要求,我們在具體的教學中作了諸多有益的嘗試。以本科生科學計算方法課程開設的具體實踐為基礎,本文從理論教學和實驗教學兩個方面探討所運用的教學方法。上述方法已成功運用到具體的教學活動中,取得了很好的教學效果:
①學生對科學計算方法課程產生了濃厚的學習興趣,直接提高了學生出勤率和學習的效率,在壓縮了學時之后仍然能夠在規(guī)定的時間內有效地掌握既定知識點。
②學生能夠把所學的知識及時運用于科學研究、畢業(yè)設計等后續(xù)的工作之中,學以致用,取得了良好的反響。
綜上所述,隨著當前大學生心理和素質的變化,在理工科科學計算方法教學活動的過程中通過一些有益的教學方法的調整,能夠有效解決當前教學過程中面臨的“死氣沉沉,照本宣科”的狀態(tài),促使學生對本課程產生濃厚的學習興趣,愿意在算法原理的學習到實踐編程上投入學習時間,優(yōu)質高效地掌握科學計算方法。更重要的是學生可以學以致用,能夠在面臨具體問題時,運用該課程所涉及的計算方法來解決。當然,未來需要授課老師們依據形勢的變化,豐富更多的案例,并進行更多的嘗試和努力,共同推進科學計算方法的本科生教學活動。
*通訊作者:顧旭東
參考文獻
[1]李慶揚.科學計算方法基礎[M].北京:清華大學出版社,2006
[2]John H. Mathews.數值方法(MATLAB版)(第四版)(Numerical Methods Using MATLAB Fourth Edition,國外計算機科學教材系列)[M].北京:電子工業(yè)出版社,2017.
[3]劉欽圣.數值方法教程[M].北京:冶金出版社,1998.
[4]關治.數值分析基礎[M].北京:高教出版社,1998.
[5]白峰杉.數值計算引論[M].北京:高等教育出版社,2010.
[6]謝治州.“數值分析”實驗教學的實踐與探索[J].實驗室研究與探索,2010,29(5):133-136.
[7]謝冰,魯興舉.信息化手段在"數值分析方法"教學中的應用探索[J].教育教學論壇,2022(17):157-160.
[8]溫和,滕召勝,唐求,等.可視化教學方法在電氣信息類數值分析課程中的應用[J].計算機教育,2010(19):151-153.
[9]方春華.數值分析課程教學方法與手段的實踐與認識[J].湖南理工學院學報(自然科學版),2016,29(2):92-94.
[10]閔杰,李義寶.高?!稊抵捣治觥氛n程組合式教學方法探索研究[J].高教論壇,2010(6):72-74.
[11]金煒楓.課程參與式教學研究——以《土木工程數值分析方法》為例[J].教育,2020(21):47.
[12]別敦榮.大學教學方法創(chuàng)新與提高高等教育質量[J].清華大學教育研究,2009,30(4):95-101,118.
[13]代麗嫻.《數值分析方法》課程教學改革探討[J].教育與職業(yè),2006(26):135-137.
[14]何滿喜.數值分析課程教學的幾點體會及研究[J].中國大學教學, 2011(3):54-55,49.
[15]胡嘉瑜.卓越教學視角下大學理論教學問題及對策研究[D].重慶:西南大學,2020.
[16]孟凡.本科研究性教學的理論與實踐研究——以華中科技大學江建軍教授的教改實踐為例[D].湖北:華中科技大學,2007.