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