周茂瑛,王 班
(杭州電子科技大學(xué)機械工程學(xué)院,浙江 杭州310018)
伴隨著計算機的產(chǎn)生和發(fā)展,數(shù)值計算獲得了廣泛的關(guān)注和研究,并得以大規(guī)模應(yīng)用于工程實踐中。數(shù)值計算主要關(guān)注利用有效位數(shù)有限的計算機對數(shù)學(xué)問題進行近似求解的理論和相應(yīng)的方法,目的是在充分考慮數(shù)值算法的誤差、收斂性和穩(wěn)定性的情況下,在盡可能少的計算資源消耗下實現(xiàn)特定數(shù)學(xué)問題的求解。數(shù)值計算的基本理論與算法和工程實踐問題的結(jié)合,對工程實踐的發(fā)展起到了不可估量的作用。由此,目前“數(shù)值計算方法”課程已經(jīng)成為了工科機械、電子和計算機等類別專業(yè)普遍開設(shè)的一門課程。
在現(xiàn)行的課程體系中,“數(shù)值計算方法”定位為一門數(shù)學(xué)基礎(chǔ)課[1],主要講解數(shù)值計算的基礎(chǔ)概念,并介紹基本的數(shù)值算法和算法設(shè)計思路。而隨著計算機在工程實踐中的地位變得越來越不可或缺,這一定位使得目前的“數(shù)值計算方法”課程教學(xué)存在諸多問題。首先,過于強調(diào)理論分析的內(nèi)容組織方式使得教和學(xué)難度都很大,學(xué)生學(xué)習(xí)效果不佳。其次,目前的課程教學(xué)內(nèi)容與工程實踐結(jié)合不夠,教和學(xué)與工程實踐脫節(jié)。再次,受到課時限制,理論教學(xué)、實踐案例和計算機編程的結(jié)合是目前課程教學(xué)的難點。因此,有必要結(jié)合工程實踐,對該課程的教學(xué)進行一定的改革,提高課程的教學(xué)效果,反映工程實踐特點。
綜上所述,“數(shù)值計算方法”在工科的課程體系中有重要作用,而面向工科類專業(yè)的“數(shù)值計算方法”課程教學(xué)過程中存在許多問題和不足。
本文首先分析了造成這些問題的原因,然后根據(jù)新工科建設(shè)對學(xué)生能力培養(yǎng)的要求,提出對應(yīng)的教學(xué)改革方案,并針對機械工程學(xué)科的實際增加課程中的實踐內(nèi)容,以期能夠通過本課程的學(xué)習(xí),加深和提高學(xué)生利用計算機解決工程問題的認識水平。
在目前新工科建設(shè)的大環(huán)境下,產(chǎn)業(yè)需求和技術(shù)發(fā)展對“數(shù)值計算方法”課程有著重要影響,而學(xué)生在教學(xué)過程中的主體作用也越來越受到重視。針對這一變化,筆者們梳理了目前“數(shù)值計算方法”課程的教學(xué)過程中存在的諸如教學(xué)內(nèi)容內(nèi)在聯(lián)系不足、教學(xué)內(nèi)容與工程實踐脫節(jié)、教學(xué)方式單一和與編程教學(xué)結(jié)合不足等問題。
目前“數(shù)值計算方法”課程一般采用的教學(xué)大綱所包含的教學(xué)內(nèi)容單元包括數(shù)值計算的誤差及其傳播、非線性方程求解、線性方程組求解、函數(shù)的插值與擬合、數(shù)值微分與數(shù)值積分和求解常微分方程等部分[2]。課程內(nèi)容無法有效覆蓋工程中常見的問題,缺乏一些重要的知識單元。除了“誤差及其傳播”外,其他的知識單元之間不存在明顯的邏輯關(guān)系。不同知識單元都是相對完整的研究體系,可以在知識的深度和廣度上進行拓展。這一特點使得學(xué)生在學(xué)習(xí)過程中很難形成一條主線,很容易在不同知識單元之間疲于奔命,使得教和學(xué)的效果都不理想,教師和學(xué)生都很被動。
首先,“數(shù)值計算方法”課程的教學(xué)內(nèi)容長期沒有更新,對工程實踐中的案例幾乎沒有介紹。這種教學(xué)內(nèi)容的設(shè)計和編排客觀上不利于工科類專業(yè)學(xué)生的學(xué)習(xí)。其次,與“數(shù)值計算方法”緊密關(guān)聯(lián)的數(shù)學(xué)建模,主要關(guān)注如何將工程實踐問題轉(zhuǎn)化為數(shù)學(xué)問題,是數(shù)值計算的前置步驟。而目前工科類專業(yè)本科課程中沒有專門的數(shù)學(xué)建模必修課程,導(dǎo)致學(xué)生在學(xué)習(xí)課程時難以結(jié)合工程實踐形成合理的知識體系。這種背景的缺失影響了教學(xué)效率。再次,工科類大部分專業(yè)并不會開設(shè)算法設(shè)計與分析的專業(yè)課程,更不會涉及算法的計算機實現(xiàn)等內(nèi)容,使得學(xué)生無法深入了解各類數(shù)值計算算法的具體性能和優(yōu)缺點。
目前“數(shù)值計算方法”課程定位為一門理論課程,包含大量的定理推導(dǎo)和證明。這導(dǎo)致目前一般采用靜態(tài)演示的教學(xué)方式,使得學(xué)生喪失了學(xué)習(xí)主動性,只能被動地接受灌輸,學(xué)習(xí)興趣低。
另外,目前依然采用傳統(tǒng)的閉卷考試模式,考查內(nèi)容以抽象的數(shù)學(xué)問題為主,考察學(xué)生對基本理論的熟悉程度。這一考核方式也在客觀上固化了學(xué)生對“數(shù)值計算方法”課程的認知,無法有效引導(dǎo)學(xué)生結(jié)合工程實踐對“數(shù)值計算方法”課程進行學(xué)習(xí)。
“數(shù)值計算方法”中所涉及到的算法需要借助于編程軟件進行展現(xiàn),但是目前根本不重視編程實現(xiàn)環(huán)節(jié)。一方面,數(shù)值計算算法的實現(xiàn)依賴于所選用的編程語言多種多樣,使得學(xué)生學(xué)習(xí)負擔(dān)加重。此外,目前本課程的學(xué)時配備不足以支撐同時對數(shù)值計算算法和編程語言進行講解。另一方面,目前的編程實操內(nèi)容都過于簡潔,一般由教師擬定幾個簡單的與教學(xué)內(nèi)容相關(guān)的數(shù)學(xué)問題,要求學(xué)生通過小修小補的編程進行求解。在這種情況下,學(xué)生容易陷入特定編程語言的學(xué)習(xí),也容易使得學(xué)生的編程成為變相的習(xí)題求解過程。
針對上文提到的目前在“數(shù)值計算方法”課程中所存在的一些問題,充分考慮工科類專業(yè)的實際情況,從以下方面進行教學(xué)改革探索。
考慮到“數(shù)值計算方法”課程主要涉及到對連續(xù)模型的求解,可以將所涉及到的知識單元分為四個模塊:誤差分析、數(shù)值逼近、數(shù)值代數(shù)和數(shù)值微分方程。誤差分析主要針對基于有限位數(shù)計算機的數(shù)值計算分析其可能產(chǎn)生的各類誤差及其分析方法。其中涉及到數(shù)值計算的基本概念和數(shù)值算法的評價方法。數(shù)值逼近主要涉及不同的數(shù)學(xué)對象在計算機程序中的近似描述方法,包括數(shù)值積分、數(shù)值微分和函數(shù)的擬合和插值等。數(shù)值求根主要介紹非線性方程和線性方程組的求根問題,并介紹與矩陣特征值相關(guān)的計算算法。數(shù)值微分方程是一個綜合的模塊,主要介紹常微分方程和偏微分方程的數(shù)值求解。
考慮到目前許多工科專業(yè)對計算機相關(guān)課程涉及不足,在考慮課程內(nèi)容改革時,筆者們有意識地將這些內(nèi)容結(jié)合在一起,采用分組探索和集中實驗的方式來對傳統(tǒng)的課堂知識講解[3]進行輔助,以期提高綜合教學(xué)效果。
分組探索主要分為教師講解介紹和學(xué)生自主探索兩個部分。在教師講解部分,教師會結(jié)合工程實踐問題,引導(dǎo)學(xué)生建立數(shù)學(xué)模型,并指出建模過程中所采用的假設(shè)等。在學(xué)生探索部分,教師提出探索性問題,要求學(xué)生進行自主的分組探索和分析。最終,學(xué)生需要形成解決方案,形成課程設(shè)計報告等文檔,對探索結(jié)果進行展示和總結(jié)。
集中實驗的關(guān)注點在于學(xué)生結(jié)合編程語言進行數(shù)值計算的能力,要求學(xué)生對某一個抽象的數(shù)學(xué)問題進行編程求解,并最終形成實驗報告等文檔,對所解決的問題進行展示。這一過程強調(diào)的是學(xué)生對算法的靈活運用,希望能夠提高學(xué)生對計算機程序的應(yīng)用能力。
數(shù)值算法的最終反映是計算機程序。學(xué)生學(xué)習(xí)的關(guān)鍵是對于所學(xué)習(xí)的問題和對應(yīng)的數(shù)值計算算法有一個總體認識。因此,筆者們希望在教學(xué)過程中引入交互文本語言。這種語言的好處是可以將程序的執(zhí)行過程融入到課程演示文本中。這樣,在課堂講解的過程中可以有效融入程序編寫和演示的流程。一方面,可以利用這個機會在不影響正常教學(xué)流程的基礎(chǔ)上向?qū)W生教授統(tǒng)一的編程語言,解決學(xué)生學(xué)習(xí)新的編程語言的諸多不便之處。另一方面,能夠?qū)崟r地向?qū)W生展示不同的算法的實際執(zhí)行效果,從而能夠更好地向?qū)W生進行講解。
在考核方式上,壓縮期末理論考試的比例,增加探索和實驗環(huán)節(jié),關(guān)注學(xué)生解決問題的能力,引導(dǎo)學(xué)生關(guān)注數(shù)值計算方法的理論在工程實踐中的應(yīng)用。此外,將程序類作業(yè)引入日常教學(xué),要求學(xué)生利用編程語言完成作業(yè),并設(shè)置一定的開放性作業(yè),考察學(xué)生自由運用所學(xué)知識和技能的能力。最后,應(yīng)該在條件允許的情況下允許學(xué)生進行開放性作品展示,激發(fā)學(xué)生的創(chuàng)新動力。
本文針對目前“數(shù)值計算方法”的課程教學(xué)中存在的問題,以增強學(xué)生的分析和解決工程實踐問題的能力為目標(biāo),結(jié)合工程實踐問題和交互式編程語言,強調(diào)數(shù)值計算與編程語言的結(jié)合,提出了一些教學(xué)改革措施,希望學(xué)生能夠在學(xué)習(xí)數(shù)值計算方法的過程中充分了解其在工程實踐中的應(yīng)用,培養(yǎng)其創(chuàng)新精神,提高其創(chuàng)新能力。