許亮,程慶慶,王寧,劉一
(上海理工大學 光電信息與計算機工程學院,上海 200093)
MATLAB 實際是Matrix 和Laboratory 兩個英文單詞的組合,因此又稱矩陣實驗室,起源于20 世紀70 年代,后發展為由美國MathWorks 公司出品的成熟商業數學軟件。它以簡單易學、代碼高效、強大的并行處理和圖形能力風靡全球。如今,MATLAB 已成為一個極其重要的數學工具。
MATLAB 的創始人之一、第一版MATLAB 軟件的作者Cleve Moler,在新墨西哥大學教授線性代數和數值分析期間,為降低學生使用當時最先進的矩陣運算函數庫EISPACK 和LINPACK 的學習成本,開發了MATLAB。可見MATLAB 自誕生之日起就與輔助教學密不可分。當前,理工類學生習慣記憶課本知識,而缺乏對知識的理解和靈活應用能力。因此,如何培養學生將實際問題抽象成相應的數學模型并使用MATLAB編程對問題進行分析的能力和興趣,已成為教育界關注的問題之一。本文將從教育研究的角度出發,探討如何帶領學生學習MATLAB 編程,培養學生使用MATLAB 編程來輔助學習,使學生從仿真計算中逐步積累信心和興趣,最終引導學生探索科研成果。
為了幫助學生更好地掌握MATLAB 編程,教授基礎語法和函數庫是必不可少的。學習MATLAB 基礎語法是學生入門的第一步,但對許多學生來說也是最枯燥的一步。這主要是因為MATLAB 的基礎語法相對復雜,需要大量的記憶和練習。這其中包括基本語句、語法和數據類型等。此外,由于很難直接將這些基礎語法與實際問題聯系起來,因此往往缺乏趣味性。因此,如何寓教于樂對授課教師是一大挑戰[1]。
在這個階段,教師應該首先用一些生活中比較常見的例子來比喻MATLAB基礎語句的運行邏輯。例如,可以將MATLAB 中的數組類比為一臺取款機,數組中的每個元素代表不同的銀行賬戶,每個賬戶上都有一定的余額。當我們想要讀取數組中特定元素的值時,就好比在取款機上輸入相應的賬戶號碼,如果想查看第三個賬戶的余額,可使用以下語句:balance=account(3)。在MATLAB 中,這條語句可以將數組account中第三個元素的值賦給變量balance。通過模擬從賬戶中取走100 元錢的過程,學生可以學習如何定義變量和數組、如何執行基本算術運算以及如何使用條件語句等。類比取款機的存取款操作流程,可以幫助學生理解MATLAB 中基礎語句的執行邏輯,使學習MATLAB 基礎語法更加形象生動。
此外,學生還可以利用MATLAB 官方文檔中的示例代碼更加有效地自主學習。在文檔中,學生不僅可以利用搜索功能快速查找所需的信息,而且很多函數都會提供示例代碼,這些代碼可以幫助學生更好地理解函數的功能和使用方法。學生可以嘗試運行這些示例代碼,探索不同的輸入參數對函數的影響,從而加深對函數的理解。
在完成上述內容學習后,學生應該對MATLAB 的基礎語法和函數庫有了一定的了解。由于高等數學和專業的物理知識通常具有較強的抽象性,運算過程也往往非常復雜,因此學生可能會感到難以理解從而產生畏難心理。例如,在電磁學中,時變電磁場相互耦合的物理過程[2];在數學物理方法中,通過求解點源產生的場來推導出實際源產生的場的格林函數法、基于勒讓德多項式的高斯-勒讓德積分法[3];以及被廣泛應用于物理學和工程領域的鞍點法等[4]。在教學中,教師首先應向學生展示如何使用MATLAB 編程將課本上的公式可視化,并對其中的幾何/物理圖景進行描述,使學生產生一個感性的圖像認識[5]。其次再指導學生自己動手來實現這一過程,從感性認識上升到理性認識。在傳統的教學模式下,學生往往會認為自己已經理解了所學知識,但在實際動手過程中,很容易暴露出對知識點一些細節理解不足。這種方法也方便教師有針對性地講解與補充相關知識。最后,通過調整重要參數,學生可以直觀地感受到該參數對結果的顯著影響。利用MATLAB 將抽象的問題具像化,有助于學生更好地理解數學概念,并顯著提高他們的學習興趣和課程的教學效果[6]。
理論知識可以通過課堂講解、課外閱讀等方式進行學習,而實踐技能則需要通過實際編程操作才能掌握。教師應該讓學生在理解理論知識的基礎上,通過實際操作來掌握相關技能,這樣可以加深學生對MATLAB 編程的理解和掌握程度。目前,MATLAB 教學多以課本中的經典示例為主,然而,學習這些經典示例的過程通常缺乏趣味性,很難激發學生的學習熱情[7]。因此,在高等教育中,教育工作者應該改變統一流程和標準的傳統教學方法,更多地關注每個學生的興趣點,來引導他們將所學知識應用到實際問題中。高質量的人才培養離不開扎實的實踐教學,這就要求教師具有豐富且廣泛的工程實踐經驗[8]。
另外,教師在引入示例時必須要考慮到示例的趣味性、挑戰性以及多樣性。這些示例要有足夠的挑戰性,以激發學生好奇心并產生學習動力,同時還要讓學生親身體驗不同技術的應用,難度不能太大,以免打擊學生的自信心,特別是當示例與學生的專業不直接相關時。例如:對于喜愛音樂的學生,教師可以引導他們使用傅立葉變換對自己喜愛的音樂進行頻譜分析,通過調制音樂的頻譜來觀察不同頻段對音樂的影響,從而使學生更深入地理解信號與系統課程中所學到的傅立葉變換、采樣定理、濾波器等重要知識;對于喜愛科技的學生,教師可以引導學生對三體問題、電偶極子模型以及多光束干涉等重要的基礎理論知識進行仿真計算[9],讓學生更深入地理解混沌系統對初值條件的敏感性、天線/微觀粒子如何輻射電磁波信號以及5G基站如何通過波束成形的方法來增強信號的強度和傳輸距離。此外,幾乎所有的工程類學科都將越來越多地融入機器學習和AI 方法,教師可以引導學生使用深度學習對圖像進行分類,使學生了解AI 技術;類似的還有視頻/圖像處理、編/解碼以及數據可視化等方面內容有待教師探索[10]。這些只是簡單的示例,教師可以根據自己的教學需要和學生的實際情況,設計更為具體和實際的問題,以培養學生獨立解決問題的能力[11-12]。在整個MATLAB 教學過程中,教師主要扮演引導者的角色,鼓勵學生自主學習MATLAB官方文檔,在學生遇到問題的時候提供一些可能有用的函數或數學方法,而不是直接告訴學生答案。在激發學生興趣的同時,培養學生應用MATLAB編程解決問題的能力。教師的主要任務是為學生指明前進的方向,而將學習的主動權交還學生。
課本上的知識往往會滯后于現代科學和技術的發展,這可能會使一些學生感到困惑,不知道這些知識的實際用處在哪里,從而影響他們學習的積極性。因此,教師應該根據學生的專業需求,提供適合的科研論文,并引導學生使用MATLAB 編程來復現論文中相對簡單的結果,或直接參與科研項目,承擔一些相對簡單的工作[13]。通過有針對性地布置編程任務并注重對學生實踐操作過程的監督和指導,可以鍛煉學生運用MATLAB 編程解決科學前沿問題的能力,教師對學生操作中出現的錯誤及時糾正,使學生掌握正確的操作方法。同時,在閱讀論文的過程中,學生也可以對自己專業的前沿發展方向有更加清晰的認識[14]。
以光學相關專業為例,學生可以使用MATLAB 對渦旋光束的光場分布和相位分布進行仿真,從中了解未來光通信技術的發展方向;也可以對基于干涉的全光邏輯門進行仿真,了解下一代計算設備核心部件硅光芯片的發展。在實際的科研項目中,MATLAB 可以被用于數據處理、數值計算、仿真模擬等方面。在這一過程中,學生可以進一步掌握MATLAB 編程的實際應用技能,并通過科研項目提升自己的科研能力和實踐能力。
本文強調了MATLAB 在高等教育中的價值,并討論了如何通過多種教學方法來培養學生使用MATLAB解決實際問題的興趣和能力。首先,可以利用日常生活中的例子來激發學生的學習興趣,提供MATLAB 官方文檔,幫助學生自主學習基礎語法和函數庫,從而使學生奠定良好的編程基礎。其次,將MATLAB 教學融入基礎課程的講解,通過形象的演示和描繪書本知識的幾何/物理圖景,并從動手操作中了解學生的認知缺陷,通過針對性的講解,提高學生的學習效果。
總的來說,MATLAB 是一個非常有用的數學工具,可以幫助教師和學生更好地理解和應用書本中的各種概念。鍛煉和提高學生對使用MATLAB 編程解決實際問題的能力和興趣,需要教師精心運用多種教學方法和巧妙設計教學實例。在課程教學中注重實例教學,將理論教學與實際問題相結合,帶領學生了解行業前沿的科研成果以及個性化教學等,都可以有效提高學生的學習熱情,幫助學生達成學習目標。