蔣濤 蔣戎戎
摘 要:在我國教學體制逐步改革的背景下,越來越多的人關注我國的大學教育。偏微分方程數值解作為一門專業基礎課,其數值算法的編程實踐教學也受到了廣泛關注。本文采用C++語言對偏微分方程數值算法的實踐教學應用策略進行分析,首先介紹了偏微分方程數值解的應用背景;其次概括了該課程傳統實踐教學模式存在的瑕疵;最后從三個方面描述了采用C++語言在偏微分數值算法實踐教學中的優點,其主要優點在于C++語言在偏微分方程數值解算法實現中較Matlab語言具有較高運算效率和算法精度的可控性。
關鍵詞:偏微分方程數值解 C++語言 算法實踐教學
中圖分類號:G642 文獻標識碼:A 文章編號:1674-098X(2019)03(c)-0194-02
偏微分方程數值解[1]是信息與計算科學專業(信科專業)的一門專業基礎課,該課程是結合數值計算方法和計算機編程對偏微分方程求近似解。偏微分方程數值解主要介紹了求解偏微分方程數值計算的方法[2],分析了有限差分法的性質、有限元離散方法的性質以及其他一些性質,討論了收斂性、穩定性、誤差估計等問題,提供了不同深度的算例。
在對算例進行編程時,常用的編程語言有C++語言和Matlab語言[3]。Matlab中的內置算法,因其簡單,可以直接調用受到了很多學生的青睞;但在一些復雜的算例求解中,C++的循環運算效率和算法精度相對較高,更適合用于對偏微分方程數值算法實踐教學[4]。
1 編程語言再偏微分方程數值解傳統實踐教學模式中應用背景
從課程的結構和內容來看,偏微分方程數值解涉及的計算問題多而復雜,大多數都和生物、化學、物理等問題息息相關。近年來數值求解的規模越來越大,已逐步滲透到物理、化學、生物等現代科學與工程的各領域中。在對具體算例進行求解時,會借助計算機編程軟件,則C++和Matlab的應用也越來越廣泛,Matlab的內置算法,C++強大的編程語言,都具有很廣泛的實際應用背景,且能結合該課程中的理論、方法處理某個特定領域中產生的實際課題。
在傳統實驗教學過程中,由于Matlab有很多的內置算法,在編程時只需直接調用,教師為了學生能更熟悉算例的分析求解,使用Matlab進行實踐教學。隨著算例難度的加深,Matlab的內置算法無法修改,在對復雜問題的求解時,有時會出現精度很低的問題。C++的編程語言十分強大,同時也能較使用Matlab更好鍛煉學生的計算機動手能力,但需要自己設計算法,對學生的編程能力要求很高,部分學生無法達到要求。由于C++語言較Matlab語言本身就有一定的難度,在實踐教學中的難度也隨之增加,故而教師就放棄采用C++語言進行實踐教學。
2 采用C++語言進行實踐教學
2.1 加強基礎理論與實踐的結合
目前,國內大多數偏微分方程數值解課程的教材都是首先概括關于偏微分方程的一些基本概念;其次介紹有限差分方法的一些相關概念,以及雙曲型方程、拋物型方程、橢圓型方程的差分方法;最后介紹有限元離散方法和其他一些課題。傳統教學模式中,教師每周上完理論課,布置課后作業,學生獨立上機完成。但部分學生缺乏自主學習能力,大大降低了學習效果。現在00后已步入高校,呆板的傳統教學模式不再適用,純理論分析讓其感到枯燥乏味,從而失去對學習的興趣。然而,師生互動會調動課堂氣氛,吸引學生對學習的興趣。故采用C++輔助課堂實踐教學,適當的修改教學大綱,增設實驗課,培養學生對編程的興趣。從一些簡單的算例著手,逐步增加難度,以此來鞏固理論知識,加強學生的動手能力,增強學生的自信心。
2.2 加強C++語言在偏微分方程數值求解過程中的應用
引入C++語言的課堂不再單調,學生面對的不再是枯燥的定理證明、公式推導,而是數值求解方法、計算機編程過程以及結果的展示。教師在授課時適當地插入一些簡單的數值算例,引發學生的思考,激起學生對學習的興趣。
2.3 采用C++語言的優點
隨著科技的發展,現在計算機軟件越來越多,對于信科專業的學生而言,主要用C++語言和Matlab語言對數值算法進行編程,而采用C++語言相對于Matlab語言的主要優點有:
(1)運算效率。Matlab語言在循環運算中的效率相對較低。
(2)算法精度的可控性。Matlab語言中的內置算法固定無法修改,有時對復雜問題的求解時會出現精度很低的問題;而C++語言是自己定義變量,對精度有一定的可控性。
(3)Matlab語言中有很多內置算法,在對算法進行編程時可直接調用;C++語言則需要自己設計算法,進行調試編譯。在多維問題中,Matlab語言中的內置算法會出現一些弊端,但C++功能比較強大,有靈活的編程語言。
相應地,在運用C++語言編寫程序時,對學生也有一定的要求:
(1)要具備扎實的數學基本功,掌握計算機的一些相關基礎理論和基本知識;
(2)能熟練使用計算機,掌握一些常見的算法分析,具備超強的編程能力;
(3)熟練使用偏微分方程數值解中的理論、方法以及技能處理某個特定領域中產生的實際課題;
(4)了解信息科學與計算科學的相關理論,對技術及應用的發展也要做一定的了解;
(5)具備查詢文獻檢索以及資料的技能,有一定的科研能力和軟件開發能力。
因此,采用C++語言對偏微分方程數值算法進行實踐教學,先對算例進行分析,再編寫程序,不但可以增強學生的專業知識,還可以提升學生的C++編程能力。
3 結語
在實踐教學中,由于Matlab語言在循環運算中的效率比較低,其內置算法無法修改,在對復雜問題的求解時易出現精度很低的問題;但C++語言功能比較強大,有靈活的編程語言,尤其在多維問題中優勢明顯。選用C++語言對偏微分方程數值解進行實踐教學,這對傳統教學模式的改變有一定的促進作用。加強C++語言在偏微分方程數值求解過程中的應用,對教師的“教”和學生的“學”都有一定的幫助,且為學生日后熟練使用計算機解決相關問題打下良好基礎。
參考文獻
[1] 陸金甫,關治.偏微分方程數值解法[M].北京:清華大學出版社,2004.
[2] 常峰.有關孤立波的幾類偏微分方程的數值解法[D].山東大學,2011.
[3] 陳榮榮.C++與Matlab的基本語法比較[J].電腦編程技巧與維護, 2011(14):32-34.
[4] 徐亞博.球面上偏微分方程的數值求解研究[D].中北大學,2005.
[5] 楊素香.幾類偏微分方程的數值分析[D].山東師范大學,2005.
[6] 王海林,徐珊,宋論兵,等.偏微分方程數值解法的研究[J].赤峰學院學報:自然科學版,2012,28(18):1-2.
[7] 吳強,朱曉臨,王壽城.淺談“偏微分方程數值解”教學中的實踐性教學環節[J].大學數學,2014,30(S1):5-8.
[8] 江山,凌智,孫美玲.強化實踐與應用數值分析創新型教學的探究[J].高教學刊,2015(3):17-18,20.
[9] 鄒永魁.偏微分方程數值解課程的思索[J].科技信息,2012(9):200-201.