夏麗莉 趙靜翔 馬余全
(北京信息科技大學(xué)理學(xué)院 北京 100192)
大學(xué)物理是理工科專業(yè)的一門必修基礎(chǔ)課,通常在大學(xué)一年級的下學(xué)期開始學(xué)習(xí).課程幾乎涵蓋了物理學(xué)中的所有主要研究領(lǐng)域,具體內(nèi)容涉及到力學(xué)、熱學(xué)、振動、波動和光學(xué)、電磁學(xué)、相對論和量子物理學(xué)[1]. 教學(xué)重點在于培養(yǎng)學(xué)生的實踐能力和持續(xù)的創(chuàng)新能力,使學(xué)生獲得嚴謹?shù)膶W(xué)術(shù)研究習(xí)慣.
大學(xué)物理課程研究內(nèi)容豐富,研究范圍廣泛[2,3],一般來說,大學(xué)物理的學(xué)習(xí)有如下兩個特點:
(1)研究對象的運動狀態(tài)變化通常更加一般化(變力沿曲線做功、剛體轉(zhuǎn)動對應(yīng)的各種能量計算等等);
(2)注重探究系統(tǒng)的本質(zhì),要求學(xué)生能夠定性或定量分析產(chǎn)生某種物理現(xiàn)象的原因.
相比于高中物理中特殊情況下的處理方法,大學(xué)物理中出現(xiàn)了比較抽象的概念,而且大部分章節(jié)的學(xué)習(xí)要求熟練掌握高等數(shù)學(xué)的微積分和矢量的知識.所以,相對于理工科其他專業(yè)課程的學(xué)習(xí),大學(xué)物理的學(xué)習(xí)需要學(xué)生具有更強的邏輯分析能力和空間思維能力.學(xué)生創(chuàng)新能力培養(yǎng)也要基于這兩方面能力的提升.在大學(xué)物理的教學(xué)過程中,如何培養(yǎng)學(xué)生的邏輯分析能力和空間思維能力是我們教學(xué)過程中的主要任務(wù).大部分學(xué)生認為物理模型的演化過程不直觀,同時解析求解常微分(偏微分)方程也讓大家望而生畏,這也是大學(xué)物理的學(xué)習(xí)過程中學(xué)生面臨的兩方面困難.
一直以來,科學(xué)計算模擬是科學(xué)研究的一種重要的手段[4~6].將計算機的優(yōu)勢廣泛應(yīng)用到大學(xué)物理的教學(xué)中,這是很多教師正在施行或即將實施的教學(xué)手段.同時,基于培養(yǎng)創(chuàng)新型人才的目標(biāo),大部分理工科院校的大學(xué)生需要具備能夠利用計算機語言編寫簡單的程序代碼實現(xiàn)專業(yè)知識學(xué)習(xí)的能力.鑒于此,本文將Matlab輔助教學(xué)方式應(yīng)用到大學(xué)物理的教學(xué)中.通過兩個具體例子闡述如何將Matlab的圖像和符號計算的優(yōu)勢應(yīng)用到大學(xué)物理的學(xué)習(xí)過程中,從而解決學(xué)生面臨的困難,在一定程度上實現(xiàn)培養(yǎng)創(chuàng)新型人才的目標(biāo).
Matlab的融入使大學(xué)物理的教學(xué)具有以下特點:
(1)Matlab中編程語言簡單易學(xué),而且有很多已經(jīng)編好的程序塊,可以直接調(diào)用,能求解方程的解析解,對于沒有解析解的問題,通過給定初值或邊界條件,同樣能得到數(shù)值解.有利于學(xué)生理解基本物理概念,同時能夠直接應(yīng)用到實際問題中,理論聯(lián)系實際,更準(zhǔn)確地理解基本概念.
(2)對于不同的知識點,我們都能找到相應(yīng)的應(yīng)用模型,根據(jù)物理模型的特點和數(shù)學(xué)知識,能夠建立系統(tǒng)的狀態(tài)方程,然后運用數(shù)學(xué)知識解出解析解.然而,解析解的數(shù)學(xué)形式準(zhǔn)確但不夠直觀,如果引入Matlab輔助工具數(shù)值模擬系統(tǒng)的狀態(tài),可以動態(tài)地給出研究對象的發(fā)展趨勢和各階段的特征.
用Matlab數(shù)值模擬系統(tǒng)的狀態(tài)和動態(tài)變化對理解物理規(guī)律和運用物理知識具有直接的促進作用[7].一方面,直觀的圖片和動畫信息能夠使學(xué)生的注意力集中,讓晦澀難懂的直接講述變?yōu)橛幸馑嫉闹庇^感受,增強學(xué)生的學(xué)習(xí)積極性.另一方面,對于很多非線性且沒有解析解的物理模型,我們?nèi)匀豢梢酝ㄟ^輔助工具完成求解數(shù)值解,并能夠預(yù)測系統(tǒng)的發(fā)展趨勢,這對于擴展學(xué)生的知識面和直觀理解更復(fù)雜的物理問題具有積極的作用.
這里我們分為兩部分說明Matlab符號計算和數(shù)值模擬在物理教學(xué)中的應(yīng)用.對于符號計算,大學(xué)物理中一般用于求解常微分或部分偏微分方程(組)的解析解.在講解機械振動部分內(nèi)容時,我們引入線性簡諧振子的模型,其數(shù)學(xué)建模是非線性常微分方程,當(dāng)擺角足夠小時可以簡化為線性模型,此線性微分方程有解析解,我們利用Matlab符號計算能夠快速得到其解析解.對于數(shù)值模擬,我們用非線性諧振子的例子,非線性諧振子的數(shù)學(xué)模型沒有解析解,文中通過數(shù)值模擬同樣能夠給出此模型的特征和演化趨勢.
相比于中學(xué)物理,大學(xué)物理中很多的物理過程需要在微積分和求解微分方程的基礎(chǔ)上給出分析過程.大學(xué)物理的第一部分力學(xué)涉及到很多變速曲線運動,大學(xué)一年級第一學(xué)期,學(xué)生已經(jīng)學(xué)習(xí)完高等數(shù)學(xué)的微積分求解,因此,大部分的高校都將大學(xué)物理課程的教學(xué)安排在大學(xué)一年級的第二學(xué)期開設(shè).但是,微積分還沒有具體應(yīng)用于空間曲線和曲面,對于剛體部分涉及到面積分和體積分的求解,相對復(fù)雜.特別到了振動部分,需要學(xué)生求解二階微分方程(線性或非線性),傳統(tǒng)手算只能解決簡單問題,相對復(fù)雜的如非線性高階微分方程很難求解,而借助機器求解能夠幫助學(xué)生從繁重的數(shù)學(xué)計算中解脫出來[8].
Matlab作為一種計算工具,具有強大的符號計算能力.內(nèi)部嵌有多種函數(shù),大學(xué)物理中常用的主要有:創(chuàng)建變量函數(shù)(sym 函數(shù))、求微分函數(shù)(diff)、求積分函數(shù)(int)、解代數(shù)方程(組)函數(shù)(solve)、解常微分方程函數(shù)(dsolve)等等[5,9].我們以機械振動的諧振子模型為例探討Matlab在學(xué)習(xí)理論過程中起到的作用.對于一維線性諧振子,通過牛頓第二定律建立簡諧振子動力學(xué)方程,方程的形式是二階常微分方程,對于最簡單的一維線性諧振子,假設(shè)振子的質(zhì)量是m,彈簧的勁度系數(shù)為κ,其動力學(xué)方程可表示為
(1)
式(1)中x是任意時刻質(zhì)點相對于平衡位置的位移.這類方程的解的形式是
x=Acos(ωt+φ)
(2)
y=dsolve(f1, f2, … , fm) %默認的自變量為t
y=dsolve(f1, f2, … , fm,‘x’) %指明自變量為x
其中,字符串型變量fi既可以描述微分方程,又可以代表初始條件或邊界條件.如果我們給定無量綱化方程中彈簧振子的質(zhì)量和勁度系數(shù)的大小分別為1,可以通過直接引用dsolve()函數(shù):
? y=dsolve('D2x+x=0')
求得方程的通解:
y =C2*cos(t) + C3*sin(t)
如果給定初始條件x(0)=1,v(0)=0,通過直接引用dsolve()函數(shù):
? y=dsolve('D2x+x=0','x(0)=1','Dx(0)=0','t')
可以得到方程的特解:
y =cos(t)
這里我們直接應(yīng)用Matlab給出諧振子模型的通解和特解,求解過程邏輯清晰且效率高.在講述機械振動物理模型時,如果我們利用機器符號計算,可以很快得到方程的解,這樣計算過程消耗的時間幾乎可以忽略,諧振動方程的由來非常清晰:由牛頓第二定律給出系統(tǒng)的動力學(xué)方程,通過求解動力學(xué)方程,得到系統(tǒng)的運動學(xué)方程.當(dāng)然這個例子相對簡單,如果物理模型復(fù)雜,理論推導(dǎo)的過程中出現(xiàn)復(fù)雜的符號運算,學(xué)生不能順利得到計算結(jié)果,勢必會對結(jié)論的推導(dǎo)過程產(chǎn)生疑問,從而影響學(xué)生理解物理規(guī)律及其深層次的物理意義.
在機械振動的分析過程中,通常要分析質(zhì)點相對于平衡點的位移隨時間的變化趨勢,如果基于符號計算得到方程的解,在此基礎(chǔ)上可以直接畫出解曲線:
? t =0:.01:100;
x = cos(t);
plot(t,x)
對于線性諧振子式(1),可以直接從系統(tǒng)的微分方程出發(fā),通過Matlab符號計算的結(jié)果給出解曲線,但是如果是非線性諧振子,沒有解析解,那么我們也可以通過數(shù)值模擬得到系統(tǒng)的解曲線.
非線性諧振子的動力學(xué)方程可表示為
(3)
這里我們采用適用于一般的微分方程的數(shù)值解法,即如果系統(tǒng)的方程不能用一階顯式微分方程組給出,以下的代碼同樣適用.具體代碼如下:
clear all
t=[0:0.1:500];
x0=[1 0];
[t,xx]=ode23('xiezhenzi_ode',t,x0);
format long
plot(t,xx(:,1));
xlabel('time'),title('x')
function dy=xiezhenzi_ode(t,y)
a=0.1
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=-a*sin(y(1));
圖1給出了非線性諧振子的軌跡曲線,這里的function函數(shù)文件是一個獨立的文件,是Matlab中用于解微分方程的功能函數(shù),主函數(shù)可以調(diào)用這類函數(shù),類似的功能函數(shù)還有很多,我們可以根據(jù)需要調(diào)用,方便快捷.在講述非線性諧振子時,我們通過數(shù)值模擬系統(tǒng)的軌跡,可以很直觀地解釋非線性諧振子的運動趨勢,并能夠分析位移、速度、加速度和時間的關(guān)系,而且可以在不同初始條件探索振子的運動規(guī)律,體現(xiàn)初始條件對系統(tǒng)整體運動形態(tài)的影響.對于類似的新理論,我們都可以簡單地引入Matlab數(shù)值模擬,學(xué)生通過觀察圖像易于接受給定的結(jié)論,為探究未知領(lǐng)域提供基礎(chǔ),有利于培養(yǎng)學(xué)生的創(chuàng)新思維.
圖1 非線性諧振子的軌跡
本文采用Matlab簡單數(shù)值計算融入物理教學(xué)的方式,從模擬經(jīng)典力學(xué)的簡單物理模型入手,應(yīng)用到波動和光學(xué)的學(xué)習(xí)中,最后形成一系列的典型模型的數(shù)值模擬小程序.讓學(xué)生從直觀圖片和動畫中理解概念,探究物理現(xiàn)象的本質(zhì).一定程度上避免了繁瑣的符號計算和數(shù)學(xué)推導(dǎo),增加了學(xué)生學(xué)習(xí)物理的興趣和自信心.同時,緊緊圍繞我校培養(yǎng)高素質(zhì)創(chuàng)新型人才的目標(biāo),通過對Matlab的學(xué)習(xí),學(xué)生可以自己模擬簡單物理模型,并培養(yǎng)分析數(shù)據(jù)和總結(jié)結(jié)果的能力,使學(xué)生掌握了一種編寫程序代碼的技能,這也是科學(xué)研究必備的學(xué)術(shù)素質(zhì).