黃姣茹,陳超波,高嵩
(西安工業(yè)大學 電子信息工程學院,陜西西安 710021)
數(shù)值計算在科學研究、工程實踐中被廣泛應用,特別是在計算機時代,適應計算機的新算法大量涌現(xiàn),可以說數(shù)值計算進入了研究、應用和發(fā)展的新時期[1]。《計算方法》作為一門講授數(shù)值計算基本理論和方法的課程,研究的是如何利用計算機求實際工程中各種數(shù)學問題的數(shù)值解。因其較強的實用性,該課程已經成為各高校數(shù)學專業(yè)與計算機科學與技術、軟件工程、自動化等工科專業(yè)的一門專業(yè)基礎必修課。
隨著應用型人才培養(yǎng)工作的逐步推進,面向工科專業(yè)的課程重在培養(yǎng)學生綜合運用所學知識解決實際工程科學問題的能力[2-4]。《計算方法》作為一門理論與實踐結合的課程,需要學生能夠通過分析實際工程問題建立相應的數(shù)學模型,能夠根據(jù)不同算法的適用范圍,選取合適的算法對構造的數(shù)學模型進行數(shù)值求解,能夠通過編寫算法的相關程序運用計算機進行求解。目前,針對工科專業(yè)學生開設的《計算方法》課程,主要涉及“非線性方程求根”“線性方程組求解”“牛頓插值法”“數(shù)值積分”“一階微分方程的初值問題求解”等算法的基本理論及程序設計。由于現(xiàn)有課程教學內容涉及過多基本理論和算法的推導,在教學過程中出現(xiàn)了注重課堂理論教學忽略實踐應用的情況,偏離了工科專業(yè)應用型人才的培養(yǎng)目標[5-7]。本文通過對目前課程教學現(xiàn)狀的分析,以淡化理論推導強化實踐應用為指導思想,嘗試在《計算方法》課程的理論教學與實踐教學兩方面進行改革。
為順應應用型人才培養(yǎng)的要求,《計算方法》需要工科專業(yè)的學生能夠理解各種數(shù)值方法提出的工程背景,掌握重要數(shù)值計算方法的設計思路,并能利用軟件編程解決實際工程問題,然而,當前的課程教學現(xiàn)狀如下:
《計算方法》中涉及的各類數(shù)值計算方法本身具有很強的工程背景,而現(xiàn)有課程教學過程中重在講解常用數(shù)值計算方法的基本原理和具體實現(xiàn)步驟,在公式推導、定理證明及程序實現(xiàn)上花費了過多的時間,對各類數(shù)值算法的問題來源、應用范圍和優(yōu)勢及不足的分析不夠具體,對如何根據(jù)實際情況選擇合適算法以及改善算法性能等實際運用重視不夠,導致工科專業(yè)領域涉及的數(shù)值計算問題在課堂中沒有得到充分體現(xiàn),學生在課程學習結束之后,只會生搬硬套用公式做題,卻不知道如何運用數(shù)值計算方法去解決本專業(yè)以及工程中實際的計算問題,存在理論教學內容與實際應用聯(lián)系不緊密的問題。另一方面,由于課程教學內容多而學時分配少,在教學過程中教師通常是“滿堂灌”,缺少相應的啟發(fā)與引導,學生往往處于被動接受的狀態(tài),而且整個理論教學環(huán)節(jié)主要通過板書和多媒體課件的形式完成,課本上的例題也多數(shù)通過講授直接給出結果,教學手段略顯單一,導致學生感覺上課過程十分枯燥,課堂參與的積極性和主動性都不高。
《計算方法》是利用計算機求解各種數(shù)學問題的課程,在工科專業(yè)開設重在鍛煉學生利用數(shù)值計算方法編程解決實際工程問題能力。現(xiàn)有實驗內容的設置較為陳舊,還停留在對算法本身的理論驗證方面,沒有很好地結合工程案例。以筆者所在學院為例,目前開設的實驗有:“非線性方程求根”“線性方程組求解”“牛頓插值法”“數(shù)值積分”“一階微分方程的初值問題求解”等,雖然分配了較多課時,但學生只是按照指定算法完成編程。然而在解決實際工程問題中,往往需要先將具體問題抽象為數(shù)學問題,即建立了能描述或等價代替實際問題的數(shù)學模型后,才能繼而為該數(shù)學問題選擇合適的計算方法,最后才是編程實現(xiàn)。此外,實驗手段的選取也較為落后,目前所用仍是一些數(shù)學處理功能較弱、語言結構復雜的高級語言,如C語言等。一方面,這些編程語言不能很好地通過可視化的圖形直觀地展示各種算法的優(yōu)劣勢。另一方面,學生在程序設計時,往往會因為一些小小的語法錯誤導致程序無法正常執(zhí)行,從而花費更多時間在代碼形式上的糾錯方面,而忽略了算法自身的性能分析和改進。
針對以上教學現(xiàn)狀結合課程自身的特點,從理論教學和實踐環(huán)節(jié)兩方面提出如下改革措施。
(1)以實際案例驅動教學。
《計算方法》作為專業(yè)基礎課,為了更好為以后的專業(yè)課學習奠定基礎,需要充分結合本專業(yè)實際,從工程背景出發(fā),采取實際案例驅動教學的模式,將學生學習的側重點放到對實際的案例分析和求解上,通過對問題的分析,引出相應數(shù)值計算方法的工程由來(出發(fā)點)、主要解決思路和基本實現(xiàn)流程,同時為了增加算法講授的直觀性,每個算法都引入流程圖,以軟件編程演示算法,淡化教材中復雜、繁瑣的理論證明和公式推導,側重在實際中如何使用算法解決問題,讓學生在應用的同時完成對算法原理的學習,避免了枯燥、繁雜的理論說教。這樣,不僅增加了學生學習的積極性,而且有利于提升學生的綜合分析和解決實際問題的能力,同時也從根本上回答“學習這門課有什么用”的問題。
以插值法為例,筆者在教學的過程中從汽車安全剎車距離的問題出發(fā),引出車速和安全剎車距離之間函數(shù)關系具體表達式未知的實際情況,讓學生討論如何確定任意給定車速對應的安全剎車距離。隨后,給出一組車速和對應剎車距離的實際采集數(shù)據(jù),引入插值法的由來,講述Lagrange插值法,通過演示運行算法程序,發(fā)現(xiàn)如果增加一個車速-剎車距離的采樣數(shù)據(jù),對應的Lagrange插值基函數(shù)要重新計算,進一步引入具有繼承性的牛頓差商插值法,在后續(xù)在講述中,考慮等間隔車速-剎車距離的數(shù)據(jù)采集情況,引出牛頓差分插值法,考慮到代數(shù)插值階次過高導致龍格現(xiàn)象,講授分段插值法。在整個插值法章節(jié)內容的講解過程中,始終圍繞最初的汽車安全剎車距離問題,講述各種插值算法,并分析它們各自的優(yōu)劣性和適用范圍,使學生了解插值法能夠解決哪些實際問題的同時,還能夠根據(jù)具體情況從多種方案中選取最合適的解決方案,課堂的實際反饋效果良好。
(2)采用靈活多樣的教學手段。
充分發(fā)揮線上+線下混合式教學的優(yōu)勢。考慮到課堂時間有限,對部分復雜的算法推導及數(shù)學證明,可以提前以文檔或視頻的形式發(fā)放到線上教學平臺供學生學習,這樣學生可以在課前主動參與到課程學習中。在線下的課堂教學中,可以通過與學生交流溝通,了解其線上學習后的難點,從而進行有針對性的講授,提高了學生的學習效率。這種混合式教學方式表面上看教師課堂上講的部分減少了,實際上卻能夠更好地解決學生的困惑,起到了事半功倍的效果。
以實際的操作演示為主。在算法設計和性能分析過程中,避開單純枯燥的理論講解,教師可以提前編好程序(可預設一些常見的小錯誤),在課堂上運行演示,學生可以直觀地看到算法運行的結果,此時可以從結果出發(fā),引導學生分析各種算法的適用條件、優(yōu)勢劣勢以及改進思路。同時,通過故意設置的一些錯誤,可以激發(fā)學生共同參與解決問題的興趣和熱情,學生在此過程中更好地領會了算法程序編寫過程中應注意的技巧和細節(jié)。
改變傳統(tǒng)的教師“滿堂灌”。教師在課堂上作為引導者,嘗試讓學生作為角參與到整個教學環(huán)節(jié)中。比如,每章內容教師可以只講授其中的一到兩種經典方法,其他的算法由學生以分組匯報的形式完成。匯報過程中,由組長講授算法原理,副組長演示程序,在演示過程中,提問其他組員。這樣,學生在課前會主動查閱文獻,完成算法理論的學習和整理,準備講授需要的資料。這個過程讓學生對課程內容有更深入地理解,同時也能更好地參與到課堂中。
(1)層次化的實驗內容設置。
為了加強學生對常用數(shù)值方法的理解與掌握,提高學生應用算法編程解決實際工程問題的能力,將上機實驗內容分為兩大模塊:側重數(shù)值計算方法理論驗證的基礎性實驗和側重解決實際工程問題的綜合性實驗。
前者主要針對理論教學中涉及的某些特定算法,進行相關實驗內容的設置。實驗題目主要來源于課本中的例題,或者課后的練習題。這類實驗屬于數(shù)值方法的純理論仿真驗證,要求每個學生單獨完成實驗內容。目的是讓學生掌握課堂上講授的理論知識,熟悉編程軟件中涉及的相關命令、函數(shù),能夠逐漸掌握基本算法的編程實現(xiàn)。
后者主要針對常用數(shù)值算法在實際中的應用,進行相關實驗內容的設置。收集設計實驗題目的途徑多樣,可以結合本專業(yè)實際的工程項目,可以源自教師負責的科研項目,也可以從其他專業(yè)的經典數(shù)值計算案例和以往的數(shù)學建模比賽題目中挑選,設計適用于本課程的實驗項目。這類實驗內容具有一定的綜合性,采取小組合作的方式完成實驗,同時為避免一人包攬的情況,要求每個組員有明確的分工。目的在于讓學生了解《計算方法》課程的實際工程應用,鍛煉學生分析實際問題、建立數(shù)學模型、選擇合適算法、編寫程序和結果分析等方面的能力。同時,有利于培養(yǎng)學生的團隊合作能力及溝通交流的能力,能夠最大化發(fā)揮實驗的效果。
(2)選用專業(yè)的數(shù)值計算軟件。
在軟件選取上,可以考慮使用具有完善的數(shù)據(jù)可視化功能、簡單易學的語法結構、調試方便實用、易于擴充等優(yōu)勢的專業(yè)軟件代替C語言等。一方面,可以很好地通過可視化的圖形直觀地展示各種算法的結果,分析算法的適用條件和優(yōu)劣勢;另一方面,學生在程序設計時不會再因為一些小小的語法錯誤而花費更多時間在糾錯上,能夠將節(jié)省下來的上機實踐時間用于算法自身的性能分析和改進。MATLAB作為一種數(shù)值計算、分析能力強大的專業(yè)類應用軟件,擁有豐富的數(shù)據(jù)類型和結構、友好的面向對象、快速的可視圖形、眾多的數(shù)學和數(shù)據(jù)分析資源及應用開發(fā)工具。在工程計算與數(shù)值分析、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等工程領域都具有廣泛的應用,已成為國際公認的優(yōu)秀工程應用開發(fā)環(huán)境。但MATLAB的符號計算能力較弱,其符號計算來自另一個通用數(shù)學工具軟件MAPLE,并且可以在MATLAB中很方便地實現(xiàn)MAPLE的調用。同樣MAPLE具有很強大的符號計算功能,而數(shù)值計算能力弱,但在MAPLE中能很方便地實現(xiàn)MATLAB的調用。如果學生能同時掌握這兩個常用的軟件工具,就可以在MATLAB和MAPLE的交互平臺上解決一般的數(shù)學計算問題,從而為解決復雜的工程應用問題和研究問題提供一種有效的手段。
針對《計算方法》課程教學現(xiàn)狀,從理論教學與實踐教學兩方面提出一些改革措施,強調算法的實際應用,淡化相關理論證明和公式推導,目的在于提升工科專業(yè)學生運用所學理論知識綜合分析和解決實際工程問題的能力。