基于Matlab平臺的水力學教學模式探索論文
一、引言
在水力學這一學科中,會涉及一些復雜的水力計算問題,如非線性高次方程求根問題。這類問題不存在根的解析表達式,普通教材只介紹查圖法、圖解試算法,過程繁瑣,且精度較低。還有一類限于課程學時只能筆算的問題,如明渠非均勻流水面線計算。由于筆算的重復性,學生對此類問題沒有興趣,也沒有進一步探究的學習動力。如今這些問題完全可以借助數值計算方法和計算機解決,這需要工程人員具備數值計算和程序編寫的雙重能力。
目前多數土木工程專業都開設“數值計算方法”和“計算機程序語言設計”課程!皵抵涤嬎惴椒ā币詴窘虒W為主,涉及的數值計算以課后練習為主,基本依靠筆算完成。對于程序設計語言選擇問題,由于窗口編程為現代程序語言的主流,土木工程專業盲目追趕這一潮流,設置了VB、VC之類的程序設計課程。因為缺乏指導,學生的興趣點在于如何創建一個漂亮的對話框,如何應付計算機等級考試。后續課程也沒有將這兩門課程與土木工程專業緊密結合,學生沒有實踐的機會,因此這一問題成為土木工程專業的薄弱環節。
土木工程專業的學生今后需從事工程設計工作,因此學生應具備解決實際工程計算,并根據計算結果分析實際問題的能力。如果能夠找到一條“水力學”與這兩門課程相結合的教學模式,學生的這種能力必然得到鍛煉。
二、“水力學”的教學改革平臺
VB這類窗口編程語言優勢在于強大的軟件開發功能,窗口編程過程復雜,提供的函數有限,實現一個簡單的計算需花費很大的精力,不適合工程計算。Matlab軟件是以矩陣計算為基本運算的語言,其中內置大量的數值計算函數,具有強大的圖形功能,編程效率可大大提高,是工程人員實現科學構想的快捷途徑。Matlab語法簡單,非常靈活,初學者可在較短的時間內掌握。既可以象BASIC一樣編寫最基本的程序,也可以運用內置函數直接計算。例如可編寫一段矩陣求和的程序,也可用求和函數sum直接計算。在Matlab系統中,教師既可授予學生編寫程序解決水利計算的方法,也可綜合訓練學生分析和解決問題的能力,為土木工程領域培養高素質人才。Matlab已成為歐美國家理工科院校的主要教學軟件,國內一些院校也開始進行Matlab的教學應用實踐,取得了不錯的教學效果。因此,Matlab可將“數值計算方法”、“計算機程序語言設計”和“水力學”整合在一起,成為“水力學”課程教學改革的平臺。
三、Matlab應用于“水力學”的教學思想
(1)內置函數的引入
向學生介紹內置函數時,不應只限于介紹此函數的代入格式,還應講授此函數所涉及的算法。簡單的函數可以在教師指導下讓學生自己查閱“數值計算方法”教材,對于復雜的函數最低標準也應講清算法的基本思想。只有這樣學生在應用內置函數時,才能對計算結果充滿信心,出現問題后知道如何處理。學生僅限于用內置函數進行簡單計算是違背高等教育理念的,應注重其綜合應用能力的培養,讓Matlab切實成為學生解決實際工程問題的有效工具。
(2)計算程序的編寫
以高次非線性方程計算為例,學生只應用fzero函數計算,對以數值方法求解高次非線性方程的過程必然理解不深。在引導學生編寫二分法、牛頓迭代法的程序,解決了一些水力計算的高次方程問題后,必然加深了學生的理解。
(3)不同算法的橫向比較
任何算法均不是萬能的,在講述同一類問題的各種算法時,應明確各種算法的應用范圍及性能。學生在解決不同問題時,會自覺地考慮這些因素,選擇恰當的算法計算。解決同一問題時,比較選擇不同的方法,學生的分析問題能力可得到鍛煉。
(4)挖掘Matlab語言的圖形功能
Matlab語言具有強大的圖形功能,例如繪制某一函數的圖線,二維數據或三維數據的可視化,這些功能均可成為水力計算的有效工具。
四、Matlab應用于水力學的教學模式
目前以教師為主的講授法仍然是主流的授課方法,片面強調系統的學科知識,均遵循“由淺入深,由表及里”教學思想,教學過程很單一,忽視了學生的問題解決能力和學習策略的培養。學生由于長時間處于接受學習狀態,大腦極易疲勞,缺乏發現知識的快樂感,因此對所學課程沒有興趣,對自己的各種潛質,諸如學習能力、問題解決能力和創造能力等,缺乏了解,很難對個人今后的發展充滿信心。
20世紀90年代的建構主義教學理論被譽為“教育心理學的一場革命”。它強調從復雜問題入手,自上而下教學,學生在教師的幫助下發現新知識,這種過程更符合解決實際工程問題的一般模式。這是一個探索與建構的過程,通過大量的協作學習,學生之間可示范正確的思維方式,暴露和挑戰彼此的錯誤觀念,因此更容易促進發現和理解復雜的概念和知識,同時幫助學生掌握獨立解決問題的技能。Matlab軟件解決水力計算問題具有典型的應用特征,因此可嘗試把這種教學思想引入。
結合水力計算的教學實際,筆者使用了一種基于案例教學的“倒敘式”教學方法。教師首先提供綜合性較強的案例,它應涵蓋教師所要講授的多種水力計算問題。不是象傳統方法一樣把各種計算方法首先呈現出來,再通過練習強化訓練,而是學生通過分析案例,確定解決目標問題的子問題,設法將這些問題逐一解決。在這一過程中,教師需選擇適當的方式講授案例所涉及的水力計算問題。學生分析案例的過程以小組為單位,要求學生討論以下內容并記錄:(1)待解決的問題是什么?(2)此問題可分解幾個子問題或幾個分步驟解決?(3)子問題或分步驟又需要哪些資料和策略。(4)所遇問題的實質是什么?如何解決?在這一過程中,教師根據各小組的表現給予效果評價。若采用課堂教學法,“倒敘式”教學方法必然需要很多時間,參考國外的一些成功的教學案例,比如建構主義的經典案例———賈斯珀系列,可通過網絡課堂解決。根據教學進程,教師在網絡論壇上發布問題,組織學生在網上展開討論。學生可將教師所設問題的解決方案及時在論壇公布,也能夠及時了解問題的解決進程。同時,教師需對討論結果及時予以反饋和指導,并且靈活安排教學內容。
五、Matlab解決水力計算的教學實踐
筆者根據我校的教學大綱,編寫了下面的教學案例,進行水力計算教學試驗。此案例涉及高次非線性方程求根問題和水面線計算問題,整個教學過程都是以學生為主體推進的,體現了前述的教學理念。在進行Matlab解決實際水力計算的教學之前,學生應已具備明渠的基礎理論知識和Matlab編程的基礎知識。
[水力計算教學案例]閘門下游為一水平渠道,其后連接另一底坡i=0.03的長渠,但斷面形狀和尺寸不變。渠道斷面均為矩形,底寬b=10m,糙率n=0.025,已知通過流量Q=80m3/s,閘下收縮斷面c-c處水深0.68m。水平段長度L=60m,試計算渠道的水面線(閘門至收縮斷面cc的水平距離忽略不計)
引導學生討論得到下列內容:
(1)水面線類型與水平渠段的長短有關,因此可確定核心問題是研究渠道長度對水面線的影響。
(2)需定性繪制水平段和陡渠的水面線,可前提是渠道的臨界水深和正常水深需計算得出。
(3)臨界水深和正常水深已知后,分析得出受渠長限制,可能發生3種典型的水面線。
(4)為確定水面線類型,需判別是否發生水躍,關鍵問題為c0線是否穿越k-k線至緩流區。
(5)若發生水躍,需判別水躍的類型(包括臨界式水躍、淹沒式水躍和遠驅式水躍),及相應的水面線構成。
(6)若不發生水躍,判別是水面線②還是③,計算變坡處的水深是關鍵。
在討論得出內容(1)和(2)學生會聯想到“明渠”中介紹的試算法和查表法,這時教師可引入“高次非線性方程求數值解”問題,指導學生課下復習“數值計算方法”中求解高次方程的二分法和牛頓法,要求學生以小組為單位設計計算函數,編寫簡單的求解高次非線性方程的程序。同時教師要介紹Matlab的內置函數fzero求解高次非線性方程根的方法,并引導學生對三種方法比較。學生解決此問題后,也掌握了一種求解非線性方程根的方法。
上述6項內容全部得出后,學生很自然會提出水面線的計算問題,程序如何編寫。在水力學的'“明渠”中已講授了計算水面線的分段求和法,因此教師可以“水面線計算”為專題,指導學生復習這部分內容并編寫水面線計算程序,達到解決水面線計算的目的。然后學生用自編程序,解決本案例所遇問題。計算結果表明,60m的水平渠段不會發生水躍,則需計算變坡處的水深,判別是②還是③。經討論學生發現,若已知渠道尺寸、底坡和一端控制水深,求一定長度渠道末端的水深,用分段求和法不能直接求出,用前面講到的簡單函數的求根方法很困難。教師給予提示,將“函數”的外延擴大,指導學生定義一個變坡處水深的函數關系,用二分法求解。
上述案例將多種水力計算融合在一起,教學過程以學生不斷發現的問題推進教學進程,教師不僅指導學生學習相關的水力計算方法,而且促使學生學習解決實際工程問題的一般方法。
六、教學實踐效果
我院“水力學”課程組配合齊清蘭教授主編的“十一五”規劃教材《水力學》(編入了Matlab解決水力計算的內容),以網絡論壇為輔助手段,進行基于Matlab平臺的水力學教學改革實踐。由于教學過程新穎,學生始終抱有極大興趣去發現學習。連續兩屆本科學生的教學反饋證明這種教學模式是成功的,學生在以下幾方面均有不同程度的進步:
(1)促使學生深入理解水力學的基礎理論。對于許多水力學理論,學生由于能夠通過程序分析計算,因此可以深入理解其內涵。比如明渠恒定非均勻流水面線計算,通過計算同一渠道多種邊界下的水面線,可深入理解同一渠道的多種水面線趨勢問題。
(2)促使學生深入理解數值計算理論。相對于《數值計算方法》課程的純習題訓練的教學效果,通過Matlab平臺,將數值計算方法與實際工程的水力計算問題相結合,學生可更深入的理解某些數值計算方法,比如二分法、牛頓法。
(3)促使學生解決問題的科學思維方式形成。由于Matlab內置函數很多,編程快捷,數值結果可實現可視化,所以學生可分析計算綜合性較強的工程問題。在解決問題的過程中,學生解決問題的科學思維方式得到訓練。在畢業設計中,學生面對問題,不會象以往一樣無所適從,而是按照科學解決問題的一般步驟去分析解決問題。
(4)促使學生編程能力提高。由于計算機語言課程與本專業的工程問題直接相關,因此明確的目的性與強烈的成就感促使學生積極地編寫程序解決實際問題。經過這樣的訓練后,學生的程序設計能力明顯提高。在畢業設計中,學生也會自主地應用Matlab解決所涉及到的科學計算問題。
七、結語
(1)Matlab引入水力學教學,可將《數值計算方法》、《水力學》和《程序設計》課程有機地整合在一起,促使學生對三門課程的基礎理論深入理解,與此同時,學生應用Matlab解決工程計算的綜合能力得到鍛煉。
(2)教學案例可將幾類水力計算問題融合在一起,根據教學進程教師分專題展開教學,教學內容更具有針對性。
(3)“倒敘式”教學過程以學生不斷發現的問題推進教學進程,教師僅起輔助指導作用。學生以解決實際問題為目的去學習,整個學習過程是個能動學習的過程。
(4)案例教學所需的教學過程很長,課堂學時無法實施教學。網絡論壇可將課堂教學延伸至課外,起到教學監督和反饋的作用。
【基于Matlab平臺的水力學教學模式探索論文】相關文章: