吳 濤,王世芳
(1.武漢工程大學(xué) 光電信息與能源工程學(xué)院,武漢 430205;2. 湖北第二師范學(xué)院 物理與機電工程學(xué)院,武漢 430205)
大學(xué)物理作為高等理工科學(xué)校重要的通識性課程,在大學(xué)生科學(xué)素質(zhì)的培養(yǎng)中具有重要地位。作為具有顯著工科背景的高等學(xué)校,在推進“新工科”和“雙一流”建設(shè)的背景下,把科學(xué)計算語言深度融入大學(xué)物理理論與實踐課程的教學(xué),在培養(yǎng)學(xué)生工程技能和計算思維方面可以起到重要啟蒙和推動作用?;ヂ?lián)網(wǎng)與信息技術(shù)的發(fā)展已經(jīng)極大的改變了傳統(tǒng)的教學(xué)模式,產(chǎn)生了例如對分課堂[1]、翻轉(zhuǎn)課堂[2]和混合式課堂[3]等多種教學(xué)模式,移動網(wǎng)絡(luò)終端學(xué)習(xí)和在線教學(xué)成為當今大學(xué)生獲取知識的常態(tài)。大學(xué)物理作為一門公共基礎(chǔ)課程在這場新時代的教學(xué)模式變革中一直走在前列,積累了大量的在線教學(xué)資源,打造了一批從慕課到金課的在線示范課程。[4]-[7]現(xiàn)代物理學(xué)呈現(xiàn)出理論物理、實驗物理、計算物理三足鼎立的格局,而計算機的普及和發(fā)展也大力促進了大學(xué)物理圖形化、可視化教學(xué)手段的應(yīng)用。在互聯(lián)網(wǎng)時代計算機語言的重要性已經(jīng)毋庸置疑,是每一個本科生的必備技能。如何利用好現(xiàn)有資源和現(xiàn)代教育技術(shù),在層出不窮的現(xiàn)代科學(xué)計算語言中選擇一門切合學(xué)生實際情況的語言與大學(xué)課程教學(xué)進行深度融合,在國家“新工科”教育形勢下培養(yǎng)學(xué)生計算技能、工程思維和科學(xué)素養(yǎng)具有重要的實際意義。
在大學(xué)物理的學(xué)習(xí)中,學(xué)生普遍反映最大的障礙就是覺得物理概念抽象、難懂,理論推導(dǎo)和公式繁多,物理圖像不清晰,不能學(xué)以致用。為了解決這些突出問題并響應(yīng)國家“新工科”和“雙一流”專業(yè)建設(shè)的號召,筆者提出了以Python語言為基礎(chǔ),充分利用自由、開源、免費的基于該語言的第三方庫vpython為主要工具對大學(xué)物理進行三維動態(tài)可視化的教學(xué)改革措施。這可以從根本解決學(xué)生對大學(xué)物理學(xué)習(xí)的畏懼心理,提高其學(xué)習(xí)興趣,進而為培養(yǎng)新時代創(chuàng)新人才打下一定的基礎(chǔ)。利用科學(xué)計算語言與軟件以圖形化、可視化的手段展現(xiàn)數(shù)學(xué)公式蘊含的物理圖像,使其變得直觀、形象,使學(xué)生獲得生動感性的認識,縮小理論與實際的差距,讓學(xué)生更加深刻的理解物理思想,形成物理圖像,可以極大的提高學(xué)生學(xué)習(xí)積極性和能動性。通過讓學(xué)生參與到利用物理原理和數(shù)學(xué)計算工具解決具體實際問題,該教學(xué)模式對學(xué)生形成計算思維、培養(yǎng)工程技能,使學(xué)生能夠?qū)W以致用、理論聯(lián)系實際起到重要作用,能夠激發(fā)學(xué)生學(xué)習(xí)興趣,切實提高教學(xué)效果。
Python語言是目前最流行的語言之一,簡單易學(xué),而基于Python語言的大量自由、免費、開源軟件、科學(xué)計算擴展庫最近幾年得到了飛速發(fā)展。Python語言及其眾多的擴展庫所構(gòu)成的開發(fā)環(huán)境十分適合工程技術(shù)、科研人員處理實驗數(shù)據(jù)、制作圖表,甚至開發(fā)科學(xué)計算應(yīng)用程序,基于Jupyter-Lab/Notebook交互式教學(xué)平臺,可以無縫導(dǎo)入大量的、豐富的第三方庫來實現(xiàn)大學(xué)物理的三維可視化教學(xué),尤其是利用vpython庫可以快速創(chuàng)建三維場景和動畫,該庫有大量內(nèi)置的函數(shù)和類可用來實現(xiàn)大學(xué)物理教學(xué)中各種實體對象的創(chuàng)建,例如帶電的小球,通以電流的導(dǎo)線等,利用較少的代碼便可以快速編程實現(xiàn)物理過程與圖像三維可視化展示。最近,中國農(nóng)業(yè)大學(xué)的研究者劉玉穎等在大學(xué)物理教學(xué)中引入vpython對剛體的三維運動,[8]天體的軌道運動[9]以及點電荷體系的靜電場與電荷在電場中的運動[10]進行了三維模擬,獲得了很好的教學(xué)展示效果。在大學(xué)物理交互式、可視化在線教學(xué)中,Matlab、Mathematica和origin等商業(yè)軟件完全可以由Python語言及其豐富的且更新速度很快、不斷發(fā)展進步的第三方庫所替代。
Jupyter-lab平臺能夠?qū)⒄f明文檔、公式、多媒體音視頻、Python程序代碼、圖表和圖形動畫都整合在一個文檔中,這一特點非常適合在公式和圖形繁多的大學(xué)物理在線教學(xué)中使用。運用這一平臺,教師可以方便的編寫大學(xué)物理課程教案、演示圖表和動畫,甚至進行公式推導(dǎo)演算,將理論與計算機實踐操作相結(jié)合,指導(dǎo)學(xué)生實現(xiàn)人機互動式、圖形化教學(xué)。該教學(xué)平臺在大學(xué)物理在線教學(xué)中具有以下優(yōu)勢:(1)Jupyter-lab和Python語言具有強大的計算生態(tài)支持,通過網(wǎng)絡(luò)只需要使用pip install命令加上庫名就可以安裝大量豐富的第三方庫,非常方便快捷。例如通過安裝第三方庫vpython后便可以快速的創(chuàng)建大學(xué)物理中各種三維的物理模型動畫和教學(xué)場景,為形象化教學(xué)創(chuàng)造了條件。(2)平臺采用Python語言交互式編程,可以隨時修改參數(shù),重新運行程序,所見即所得的觀察方式方便學(xué)生自己動手從程序運行和調(diào)試中獲取知識,讓學(xué)生成為學(xué)習(xí)的主體并實現(xiàn)人機互動式的教學(xué)模式成為可能,可以充分調(diào)動學(xué)生的學(xué)習(xí)積極性。(3)在Jupyter-lab平臺Python程序運行的可視化結(jié)果可以在代碼下方實時顯示出來,文字、公式、圖表、動畫和視頻都在一個界面中顯示,且能自由修改顏色、字體大小、圖表尺寸和動畫演示速度等,且支持折疊功能,這一點非常有利于教師清晰的展示理論知識點和重難點。(4)該平臺可以安裝在個人電腦上,支持window、mac和linux等操作系統(tǒng),同時也支持搭建遠程服務(wù)器,允許多用戶同時遠程登陸并進行學(xué)生權(quán)限管理,在任何時候都可以通過網(wǎng)絡(luò)連接服務(wù)器實現(xiàn)教學(xué),提供了多樣選擇性。(5)最好的學(xué)習(xí)是在做中學(xué),在教學(xué)中引導(dǎo)學(xué)生利用Python語言進行編程實踐實現(xiàn)大學(xué)物理圖形化,在學(xué)習(xí)物理理論知識的過程中,同時也為學(xué)生訓(xùn)練計算思維、工程技能提供了載體和實際應(yīng)用場景,為培養(yǎng)學(xué)生理論聯(lián)系實際,解決實際問題的能力提供良好的環(huán)境與平臺。
Jupyter-lab作為基于web的集成開發(fā)環(huán)境,利用它可以方便地編寫教案和制作授課課件。筆者基于Jupyter-lab平臺開展了大學(xué)物理交互式在線教學(xué)的實踐與探索,下面僅舉兩例來說明該教學(xué)模式的構(gòu)建過程。第一個例子是在簡諧振動的教學(xué)中,可以利用vpython庫并編程進行完整的教學(xué)展示,首先構(gòu)建了簡諧振動的三維場景,給出了簡諧振動方程的理論推導(dǎo)、數(shù)值求解及其擴展應(yīng)用、振動曲線的動態(tài)繪制,基于vpython對簡諧振動的旋轉(zhuǎn)矢量法描述進行了編程動畫展示,并進一步基于旋轉(zhuǎn)矢量法動態(tài)分析了振動的合成與分解,得出了拍的形成和李薩如圖的動態(tài)展示,最后給出了復(fù)雜振動的傅里葉分析合成圖。在本文物理圖像場景和振動曲線的展示中,利用第三方庫vpython豐富的內(nèi)置三維形體對象,包括彈簧振子、長方體、小球和箭頭就可以構(gòu)建出水平彈簧振子的三維運動場景,并通過python程序代碼設(shè)置彈簧倔強系數(shù)和小球受到的線性回復(fù)力,就可以自由方便的控制簡諧振動小球的三維動態(tài)運動展示,并動態(tài)同步的在畫布上畫出振動曲線,讓學(xué)生直觀、生動的獲取簡諧振動的運動圖景。具體編程實踐中,動畫展示部分可以采用for循環(huán),也可以采用while語句,通過修改三維實物對象的pos屬性參數(shù)從而實現(xiàn)實物運動模擬仿真的實景動畫效果。
圖1給出了基于Jupyter-lab平臺的簡諧振動教學(xué)內(nèi)容與動畫展示截圖,利用Jupyter-lab的內(nèi)容折疊隱藏功能,圖1(a)展示了簡諧振動的全部教學(xué)內(nèi)容截圖。圖1(b)給出了第一個部分內(nèi)容的隱藏內(nèi)容截圖,可以看出包含有Markdown編輯文字和LaTeX公式區(qū),Python代碼區(qū)和三維動畫場景及畫布區(qū)。圖1(c)給出了基于vpython繪制的簡諧振動描述的動態(tài)動畫截圖。集成在Jupyter-lab平臺上的Markdown工具能夠支持廣泛使用的LaTex公式編輯語法,對復(fù)雜的物理公式與公式推導(dǎo)具有優(yōu)秀的展示效果。Python代碼區(qū)支持語法高亮和代碼補全等功能,可以方便學(xué)生閱讀和修改代碼,具有很好的互動效果。三維動畫場景及畫布區(qū)能夠通過程序進行自由控制展示效果,特別是基于vpython的動畫場景輸出能夠利用鼠標實現(xiàn)旋轉(zhuǎn)、移動、放大和縮小等各種功能,方便學(xué)生從不同的角度進行觀察,同時也增強了學(xué)習(xí)過程的互動性和趣味性。
圖1 基于Jupyter-lab平臺的簡諧振動教學(xué)內(nèi)容與動畫展示截圖
第二個教學(xué)實例是在大學(xué)物理分子熱運動的教學(xué)中,理想氣體與分子熱運動的物理圖景發(fā)生在三維空間,而且微觀粒子不斷的發(fā)生頻繁碰撞,其運動狀態(tài)隨時間發(fā)生變化,運動情況非常復(fù)雜,但是在熱平衡的時候分子運動速率表現(xiàn)出統(tǒng)計規(guī)律性。這些抽象的物理概念是大學(xué)物理課程學(xué)習(xí)的關(guān)鍵,但是這些過程的可視化、圖像化不易從實驗中獲得,為了讓學(xué)生掌握這些概念,就可以借助vpython模擬物理過程還原物理圖景,加速學(xué)生的理解和掌握。圖2給出了基于vpython分子熱運動三維動態(tài)模擬結(jié)果與分析,其中圖2(a)給出了分子熱運動的vpython三維動態(tài)模擬動畫截圖,圖2(a)中還給出了代表性紅色小球表示的特定氣體分子的無規(guī)則熱運動軌跡,圖2(b)以柱狀圖的形式給出了分子速率分布模擬的統(tǒng)計結(jié)果和麥克斯韋速率分布律的理論曲線。值得指出的是,圖2(b)中的柱狀圖是通過模擬硬球碰撞的過程統(tǒng)計得出在不同時刻對應(yīng)的不同速率區(qū)間的分子個數(shù),隨著時間的推移,通過圖中的柱狀圖的形式可以動態(tài)的顯示分子的運動速率分布會越來越接近麥克斯韋速率分布律,可以通過圖形動態(tài)的展示兩者逐漸趨于一致,最后仿真模擬的分子熱運動速率分布統(tǒng)計結(jié)果和紅色的麥克斯韋速率分布律理論曲線吻合的很好,讓學(xué)生從微觀的角度有更加直觀的認識和理解。對該教學(xué)的程序代碼,可以引導(dǎo)學(xué)生進一步進行修改,例如可以編程統(tǒng)計計算出微觀粒子的平均自由程和平均碰撞頻率,這也是大學(xué)物理教材中接下來的章節(jié)內(nèi)容,這些可以作為課外作業(yè)留給學(xué)生思考和完成。在教學(xué)實踐中,學(xué)生普遍反映基于Jupyter-lab平臺的教學(xué)模式形象、生動,在學(xué)習(xí)掌握理論知識的同時提高了計算機應(yīng)用水平,顯示出良好的教學(xué)效果。實踐表明,該教學(xué)模式提供了促進學(xué)生物理概念理解與物理圖像建立的新手段,對提高學(xué)生學(xué)習(xí)興趣,培養(yǎng)學(xué)生計算思維,為“新工科”教學(xué)模式改革提供了新的途徑。
圖2 基于vpython分子熱運動三維動態(tài)模擬結(jié)果與分析
Jupyter-lab平臺作為一種新興的交互式教學(xué)平臺,通過導(dǎo)入vpython庫開展三維可視化編程模擬各種物理過程,除了特別適合大學(xué)物理教學(xué)外,還可以滿足不同學(xué)科領(lǐng)域的教學(xué)需求,在國外高校的互動式教學(xué)中有較廣泛的應(yīng)用。從教學(xué)試點和實踐來看,學(xué)生通過vpython的編程模擬能力的訓(xùn)練后,可以應(yīng)用他們獲得的技能應(yīng)用到其它物理或?qū)W科問題上,作出了很多令人耳目一新的物理現(xiàn)象的模擬結(jié)果。學(xué)生在學(xué)習(xí)的過程中,雖然需要投入較多的精力完成課后編程作業(yè),但是對做出來的成果非常有成就感,也能幫助他們更深刻的理解物理圖景和物理公式背后的物理意義。但是,我國在Jupyter-lab平臺應(yīng)用于互動式教學(xué)方面與國外相比,起步時間略晚,內(nèi)容上限于編程語言的互動教育,特別是在大學(xué)物理互動式教學(xué)應(yīng)用上還很少見,在具體實際操作中還不夠成熟,擬解決的主要問題體現(xiàn)在如下幾點:(1)精選符合學(xué)生實際能力水平和各模塊內(nèi)容難易適當?shù)哪軌蛉谌雟python數(shù)值仿真的大學(xué)物理教學(xué)課堂演示內(nèi)容,并編寫程序。(2)在教學(xué)中引導(dǎo)并培養(yǎng)學(xué)生自覺使用科學(xué)計算語言解決物理教材中遇到問題的意識和能力,形成計算思維,培養(yǎng)工程意識和工程能力。(3)在教學(xué)實踐中,整理出一套適合理工科高校大學(xué)物理各模塊與Jupyter-lab平臺相融合的教學(xué)內(nèi)容,并形成比較規(guī)范的教學(xué)流程和教學(xué)體系。(4)探索和完善基于Python語言與vpython三維動態(tài)模擬的大學(xué)物理模塊化“新工科”教學(xué)模式,建立評價學(xué)生學(xué)習(xí)效果與培養(yǎng)質(zhì)量的指標與考核體系。