段 敏
(湖南交通職業(yè)技術(shù)學(xué)院,湖南 長沙 410132)
公共數(shù)學(xué)課程作為高職院校理工科專業(yè)必修的基礎(chǔ)課程,教學(xué)的核心目標(biāo)之一就是培養(yǎng)和發(fā)展學(xué)生的數(shù)學(xué)分析思維和工程問題建模能力[1]。然而,由于理論知識具有高度抽象性,現(xiàn)有大學(xué)數(shù)學(xué)課程教學(xué)普遍偏重計算能力的培養(yǎng)而忽視學(xué)生數(shù)學(xué)分析思維的培養(yǎng)。在這種教學(xué)模式下培養(yǎng)出來的學(xué)生往往不知道如何將實際問題轉(zhuǎn)化成數(shù)學(xué)模型問題加以分析和解決,缺乏運用數(shù)學(xué)知識進(jìn)行分析的思維,在解決復(fù)雜的實際問題時數(shù)學(xué)建模能力不足。
隨著計算機軟件技術(shù)的飛速發(fā)展,數(shù)學(xué)課程教學(xué)也逐漸引入計算機進(jìn)行輔助,并針對其進(jìn)行了大規(guī)模的教學(xué)改革實驗。數(shù)學(xué)實驗課在1988年最早由美國雷斯勒技術(shù)學(xué)院開展實施。我國對數(shù)學(xué)實驗課的探索始于1997年,國防科技大學(xué)首次在課堂上開展了數(shù)學(xué)實驗教學(xué),由此開始了數(shù)學(xué)教學(xué)改革。依托該項目,李尚志教授編寫了教材《數(shù)學(xué)實驗》[2]。在這之后,眾多高校開始關(guān)注數(shù)學(xué)課堂改革。然而,在現(xiàn)階段高職院校普遍缺少數(shù)學(xué)實驗課程的現(xiàn)狀下,如何將具有大量抽象理論的大學(xué)數(shù)學(xué)課程內(nèi)容生動化、簡單化,調(diào)動學(xué)生學(xué)習(xí)興趣與積極性,成為了數(shù)學(xué)公共課程教學(xué)改革面臨的難題[3]。
本文提出把《高等數(shù)學(xué)》《復(fù)變函數(shù)》等高職院校公共數(shù)學(xué)課程教學(xué)過程和MATLAB、Python等高級語言程序設(shè)計軟件結(jié)合起來,借助數(shù)學(xué)建模工具強大的數(shù)值計算、分析與圖像處理功能,顯化實際問題的分析過程和解決過程,實現(xiàn)數(shù)學(xué)抽象理論的可視化教學(xué),幫助學(xué)生提高數(shù)學(xué)分析思維,提高教學(xué)效果,培養(yǎng)學(xué)生解決復(fù)雜實際問題的能力。
MATLAB由美國MathWorks公司開發(fā)維護,至今已有近40年的發(fā)展,其在矩陣計算和算法開發(fā)方面功能強大,而且能夠為用戶提供高級可視化工具[4]。作為一款數(shù)值計算軟件,MATLAB因其眾多優(yōu)點備受師生推崇,在數(shù)學(xué)建模、矩陣計算方面尤其受到人們的喜愛。MATLAB內(nèi)含大量函數(shù)庫,可隨時調(diào)用,不需要大量且繁瑣的編程過程。與其他編程軟件相比較而言,對數(shù)學(xué)語言的親和性更顯得其編程語言的簡潔優(yōu)雅[5]。
Python軟件最早是由來自荷蘭的Gudio van Rossum于1989年創(chuàng)建開發(fā)的,由于該軟件具有良好的交互性,又是開源語言,拓展性能好,近年來熱度越發(fā)高漲,深受用戶歡迎[6]。Python是一種功能性強、語法簡單,在數(shù)學(xué)、物理、人工智能等各個領(lǐng)域都有廣泛應(yīng)用的編程語言。其中,Sympy庫是用來進(jìn)行科學(xué)計算的核心,它能夠基于符號計算體系高效完成多項式計算。Sympy庫能夠?qū)崿F(xiàn)多種復(fù)雜計算,具有操作簡單、應(yīng)用性強的特點,常被用來求解方程,尤其在計算涉及復(fù)雜數(shù)學(xué)建模問題的微分方程時常常成為首選。
計算機技術(shù)的發(fā)展日新月異。近年來,大數(shù)據(jù)技術(shù)被廣泛運用于各行業(yè)領(lǐng)域,熟練掌握一門編程語言已經(jīng)成為從事數(shù)據(jù)分析、數(shù)據(jù)挖掘、大數(shù)據(jù)分析、人工智能等崗位工作的標(biāo)配。社會對學(xué)生編程能力的要求日益提高,逐漸從加分項演變成必修項。因此,在大學(xué)階段很有必要對學(xué)生進(jìn)行編程教育。
從教學(xué)的角度來看,教師要考慮學(xué)習(xí)效果和實際應(yīng)用效果,通過建模、仿真及可視化等一系列流程,能夠使學(xué)生深入思考數(shù)學(xué)原理,親自動手開展實踐以解決問題,一舉兩得。從學(xué)生的角度來看,學(xué)生對編程語言的掌握并非一朝一夕可以實現(xiàn),在熟悉數(shù)學(xué)知識的基礎(chǔ)上開展編程的基礎(chǔ)學(xué)習(xí),對專業(yè)知識、編程知識體系的構(gòu)建都很有好處,能夠鍛煉學(xué)生的思考能力和實踐能力。
教學(xué)效果因教師和學(xué)生而異。很多情況下,教師難以兼顧所有的學(xué)生,特別是在學(xué)生就業(yè)選擇各不相同的背景下,教師對課程深度和知識難度的把控很大程度上會直接影響學(xué)生的學(xué)習(xí)積極性。
通過MATLAB、Python等高級程序設(shè)計語言的圖像功能演示復(fù)雜函數(shù)理論與圖形,能夠使學(xué)生克服學(xué)習(xí)抽象理論的畏難心理,有利于學(xué)生理解和對比。教師從可視化圖形入手,由簡單知識過渡到數(shù)學(xué)原理,將理論知識以嚴(yán)謹(jǐn)?shù)皇в腥さ姆绞秸宫F(xiàn)出來,能夠極大程度煥發(fā)學(xué)生的自主學(xué)習(xí)熱情,同時兼顧學(xué)生的基礎(chǔ)差異,改善了數(shù)學(xué)課程理論教學(xué)的枯燥性。
大學(xué)數(shù)學(xué)課程有3個顯著特性:抽象性較高、使用性廣泛、邏輯性嚴(yán)密。在課堂教學(xué)中教師往往只注重講解理論知識,忽略與實際應(yīng)用相結(jié)合,使得學(xué)生無法獲取更多的感性認(rèn)識,從而在理論的深度與應(yīng)用的廣度上不能很好地結(jié)合。課堂教學(xué)不夠生動形象,導(dǎo)致學(xué)生解決實際問題的能力較弱。
數(shù)學(xué)課程教學(xué)以數(shù)學(xué)理論知識為主干內(nèi)容,以建模工具的實例化演示為輔助,一方面通過數(shù)學(xué)專業(yè)軟件實現(xiàn)復(fù)雜函數(shù)可視化教學(xué),另一方面通過數(shù)學(xué)建模軟件的使用培養(yǎng)學(xué)生的建模意識和編程能力。數(shù)學(xué)建模是實際問題的理想化,是聯(lián)系實際問題和數(shù)學(xué)語言的媒介。推動數(shù)學(xué)教學(xué)改革能夠間接提升學(xué)生數(shù)學(xué)建模能力,輔助學(xué)生向?qū)I(yè)領(lǐng)域發(fā)展。
以函數(shù)y=sin(1/x)、y=x*sin(1/x)的極限為例,對初學(xué)者來說求解這兩個函數(shù)的極限是比較抽象的。這兩個函數(shù)分別涉及到無窮大和無窮小及有界函數(shù)極限的知識,在常規(guī)教學(xué)實踐中很難用語言或者板書解釋清楚。通過python的可視化展示,學(xué)生可以清晰地了解該函數(shù)的分布情況,對理解極限的概念很有幫助。
Python程序如下:
結(jié)果見圖1。x趨向于0時,函數(shù)值是在-1和1之間來回震蕩,越靠近0頻率越高,但是不會趨近于0,因為是一直在越來越快地振蕩,永不停止,極限不存在。x趨向于無窮,1/x趨向于0,sin(1/x)趨向于0,函數(shù)極限為0。
圖1 函數(shù)y=sin(1/x)的圖形
結(jié)果見第21圖2。x趨向于0時,f(x)在0上下震蕩并逐漸趨于0,極限為0。x趨向于無窮時,1/x趨向于0,f(x)趨向于1。
圖2 函數(shù)y=x*sin(1/x)的圖形
復(fù)變函數(shù)部分的內(nèi)容較為晦澀難懂,其自變量和函數(shù)值中均包含復(fù)數(shù),在圖形繪制方面難度很大,特別是要在三維空間中對上述4個實、復(fù)數(shù)進(jìn)行表示,更凸顯了人們思維的局限性。在處理這部分時,MATLAB用顏色深度來處理第四維數(shù)據(jù)的變化,即采用3維+1維的形式具象化復(fù)變函數(shù),xoy面表示自變量復(fù)平面,z軸表示復(fù)變函數(shù)的實部,顏色深度代表其虛部。
例:利用MATLAB作出復(fù)變函數(shù)f(z)=z5+z2+1的圖像。
MATLAB程序如下:
結(jié)果見圖3。
圖3 復(fù)變函數(shù)f(z)=z5+z2+1的圖像
對于某些解析函數(shù),Taylor展開的方式方法雖然很多,但是計算較繁雜,而且Taylor展開式的結(jié)果也不一定很滿意,但是在MATLAB的幫助下,這些工作就會很簡單,調(diào)用函數(shù)就可以對其進(jìn)行任意項的Taylor展開。
例:設(shè)f(z)=sin(z2/(z-1)),求f(z)在z=3處的前五項Taylor展開式。
MATLAB程序如下:
結(jié)果:
基于高級程序設(shè)計語言強大的繪圖功能,教師不需要在課堂上進(jìn)行冗長的數(shù)學(xué)理論推導(dǎo),只需要引導(dǎo)學(xué)生分析討論解決問題的思路和處理方法,數(shù)學(xué)運算可交給數(shù)學(xué)專業(yè)軟件去進(jìn)行,不但減輕了教師的負(fù)擔(dān),而且有利于學(xué)生理解函數(shù)的概念及培養(yǎng)學(xué)生對于數(shù)學(xué)建模軟件的應(yīng)用能力,無論是對學(xué)生課程理論知識的學(xué)習(xí),還是對學(xué)生數(shù)學(xué)能力和建模能力的提高都具有重要意義和實用價值。