董少光
(佛山科學技術學院物理與光電工程學院 廣東 佛山 528000)
經典物理是高等院校物理類專業非常重要也是非常難學的專業基礎課.在日常的經典物理教學過程中,學生普遍反映該課程中的某些物理概念離現實生活非常遙遠,理解起來也非常抽象、枯燥和晦澀難懂,還有些物理概念和物理規律學生難以靈活掌握以及很難理解其具體的實際運用.很多學生在學習經典物理時感到心理壓力很大,教師在教學過程中也感到非常棘手和茫然.因此,對經典物理課程的課堂教學模式進行相應的改革和探索更好的教學方式具有非常現實的指導意義.
在以往的經典物理課堂教學過程中,教師特別注重培養學生嚴格、嚴密、嚴謹的科學素質,要求學生擁有扎實的物理基礎理論知識功底[1].但是,在目前的經典物理教學過程中往往存在以下3個突出的問題:一是學生所學的經典物理主要是以復雜的高等數學知識推導的物理基礎理論知識為主,而學生往往由于高等數學知識掌握得不夠扎實或不夠熟練,導致學習或理解復雜物理問題的效果不理想;二是在經典物理的教學過程中,學生不太容易聽得懂比較抽象復雜的物理問題,或者課堂上似乎聽得懂,但課后作業卻很難獨自揣摩明白并準確求解;三是學生不太能理解經典物理教學內容中某些難度較大的物理概念或物理規律背后所隱含的物理意義,不太容易將這些物理概念和物理規律與生活中對應的實際問題結合起來進行研究分析[2].
在經典物理的課堂教學過程中,教師普遍認為學生對經典物理問題中含有一些復雜的高等數學公式不能自如地處理是學習物理概念和掌握物理規律時感到困難的主要原因[3].如果教師能恰當地使用MATLAB軟件的可視化程序,就可以將很多用復雜高等數學公式表達的物理公式轉變為直觀形象的二維、三維視圖或動態仿真圖.學生對某些復雜經典物理問題的理解就可以由抽象的理性思維轉變為容易接受的感性思維.這樣的教學方式可以大大減輕學生在學習經典物理過程中面對繁瑣復雜的高等數學公式產生的心理障礙或心理壓力,可以很好地提高學生對復雜經典物理問題的深入領悟和物理意義的透徹理解.當然也就較好地提高了學生學習經典物理的興趣和積極性,提高了教師講授經典物理的課堂教學質量以及教學效果等等.
MATLAB是一款面向科學計算、數據可視化以及交互式程序設計的工程軟件,具有強大的數據計算功能,簡單易學易懂,編程效率高,在工程計算和數值分析領域有著十分廣泛的應用[4].如果在經典物理的課堂教學過程中應用MATLAB軟件的可視化程序進行輔助教學,適當地使用MATLAB軟件中可視化程序繪出二維或三維視圖,制作可視化的動態模擬仿真圖像,就可以將抽象復雜的經典物理問題具體化、形象化、可視化乃至模擬仿真化,再結合經典物理中的某些物理理論對這些復雜經典物理問題進行深入的分析,就可以很好地降低學生在學習經典物理過程中遇到復雜問題時的恐懼心理,就能夠提升學生對經典物理課程內容中某些晦澀難懂的物理理論的感性認識,并更好地分析物理現象產生的本質和原因,進一步激發學生對經典物理的學習興趣.更重要的是通過經典物理這門專業基礎課程的學習,可以很好地培養學生良好的創新意識和科學素質,提高學生的動手操作能力和創新實踐能力[5].
經典物理是學生最早利用高等數學知識解決實際生活問題的專業基礎課,涉及的知識面非常廣,主要包括力學、熱學、聲學、光學、電磁學、原子物理等多個學科[6].在經典物理的課堂教學過程中,根據經典物理課程的特點,教師特別注重培養學生處理復雜物理問題的能力、動手實踐操作的能力、科學計算模擬的能力、科學分析概括的能力等等[7].教師在經典物理的課堂教學過程中,對復雜的物理教學內容適當地應用MATLAB軟件的可視化程序進行動態模擬仿真,讓學生在不需要在實驗室做實物實驗的情況下,就可以直觀地觀察到某些特殊的物理現象或物理變化過程,讓學生體會到學習經典物理課程并非真的是枯燥乏味的,反而是非常生動有趣和容易理解接受的.
為了使學生能夠很好地掌握抽象的、難以理解的經典物理復雜問題的物理概念和物理規律,在經典物理的教學過程中,教師利用MATLAB軟件的可視化程序將這些物理概念和物理規律用直觀生動的動態仿真圖像表示出來.MATLAB的可視化程序是基于數組和有關特定函數,運行相關程序得到的視圖,該視圖是對物理概念和物理規律的定量描述,而不是普通意義的示意圖[8].因此可以定量地分析物理概念和物理規律中所涉及的各個因素對某個物理量產生的各種影響,這種教學模式是傳統的教學模式根本不可能做到的.
在經典物理的教學過程中,剛性小球在地面上連續彈跳問題是學生難以理解的質點運動學問題.利用MATLAB軟件的可視化程序對剛性小球的運動過程進行動態仿真模擬,就能直觀顯示剛性小球彈跳的水平距離與反彈系數、速率比這兩個參數之間的變化關系,從而更容易理解剛性小球在彈跳運動過程中所隱含的物理運動規律.
【例1】一個剛性小球以水平速度v0從高為h處拋出,與地面發生碰撞后繼續向前跳躍.假設小球在水平方向沒有受到摩擦,在豎直方向碰撞后的速率與碰撞前的速率之比為k(k<1),k稱為反彈系數.求小球到靜止時運動的時間和水平距離.小球的水平速率與第一次反彈的速率之比為一常數,對于不同的反彈系數,小球的運動軌跡有什么特征?
解析:小球與地面碰撞后做斜拋運動,在水平方向是勻速直線運動,在豎直方向是上拋運動,小球每次與地面碰撞后的速率為
vi=kiv0
(1)
小球第i次做斜拋運動的方程為
xi=xi0+vixti
(2)
(3)
其中ti是小球第i次斜拋運動的時間,xi0是小球第i次斜拋運動的水平初始位置.
小球第i次做斜拋運動的時間為
(4)
小球彈跳的總時間為
(5)
反彈系數決定小球彈跳的總時間.
小球彈跳的水平總距離為
(6)
算法:取平拋高度h為距離單位,取平拋時間T0為時間單位,取v0為速度單位,則小球做平拋運動的無量綱方程為
(7)
(8)

小球第i次做斜拋運動的無量綱方程為
(9)
(10)

(11)

(12)
小球彈跳的水平距離可表示為
(13)
小球彈跳的水平總距離由反彈系數和速率比決定,反彈系數和速率比是可調節參數.
MATLAB可視化程序如下所示:
%平拋小球在地面上跳躍的軌跡的主程序
clear
%清除變量
vx=0.1;
%速率比
k=0.9;
%反彈系數
fun(vx,k)
%調用函數文件畫軌跡
fun(vx,0.8)
%調用函數文件畫軌跡
%平拋小球在地面上跳躍的軌跡的函數文件
function fun(vx,k)
if k>=1 return,end
%如果速率比
大于1則返回
tm=(1+k)/(1-k);
%運動時間
xm=2*vx*tm;
%最遠的距離
figure
%創建圖形窗口
plot([0,xm],[0,0],′LineWidth′,3)
%畫
地平線
grid on
%加網格
axis equal
%使坐標間隔相等
axis([0,xm,0,1])
%坐標范圍
fs=16;
%字體大小
title(′平拋小球在地面上跳躍的軌跡′,′FontSize′,fs)
%標題
xlabel(′水平距離itx/h′,′FontSize′,fs)
%橫坐標標簽
ylabel(′豎直高度ity/h′,′FontSize′,fs)
%縱坐標標簽
txt=[′速率比itv_x/v m_0:′,num2str (vx)];
%水平速率與平拋落地速率比文本
txt=[txt ′,反彈系數:′,num2str(k)];
%反彈系數文本
text(0,0.5,txt,′FontSize′,fs)
%顯示
速率比文本
txt=[′itT m=′,num2str((1+k)/(1-k)),′(2ith/g m)^{1/2}′];
%運動時間字符串
txt=[txt ′,itX m=′,num2str(xm),′ith′];
%連接運動距離
text(xm/4,0.8,txt,′FontSize′,fs)
%顯示
運動時間
dt=0.001;
%時間間隔
tm=1;
%平拋時間
t=0:dt:tm;
%平拋的時間向量
x=2*vx*t;
%平拋的橫坐標
y=1-t.^2;
%平拋的縱坐標
i=0;
%斜拋次數清零
hold on
%保持圖像
while tm>0.01
%斜拋時間較大則循環
comet(x,y)
%畫彗星式軌跡
plot(x,y,′LineWidth′,2)
%補畫軌跡
i=i+1;
%斜拋次數
tm=2*k.^i;
%斜拋運動時間
t=0:0.001:tm;
%時間向量
x=x(end)+2*vx*t;
%橫坐標
y=2*k^i*t-t.^2;
%縱坐標
end
%結束循環
當小球水平速率與平拋落地速率之比取0.1,反彈系數取0.9時,小球的運動時間為19T0,水平運動的總距離為3.8h,運動軌跡如圖1所示.

圖1 平拋小球在反彈系數為0.9的運動軌跡
當小球水平速率與平拋落地速率之比仍取0.1,但反彈系數取0.8時,小球的運動時間為9T0,水平運動的總距離為1.8h,運動軌跡如圖2所示.

圖2 平拋小球在反彈系數為0.8的運動軌跡
這樣我們就可以得出,在水平速率與平拋落地速率之比一定時,反彈系數越小,小球運動時間越短,水平運動的總距離也越短.在反彈系數一定時,小球運動時間不變,水平速率與平拋落地速率之比越大,水平運動的總距離也越長.從圖中可直觀看到小球的運動軌跡及小球彈跳水平總距離,物理過程非常清晰和直觀,學生也非常容易理解物理過程.
在經典物理的教學過程中,均勻鏈條從光滑桌面上下落的問題也是學生難以理解的質點動力學問題之一.通過利用MATLAB軟件可視化程序對均勻鏈條在下落過程中下落部分的運動過程進行動態模擬仿真繪圖,就能直觀地顯示均勻鏈條下落部分的位移和速度變化規律,從而更容易理解和接受均勻鏈條在下落過程中的物理運動規律.
【例2】一鏈條長為l,放在光滑的桌面上,其中長為b的一段處于下垂狀態,如圖3所示.鏈條從靜止開始運動,求鏈條的運動規律,并求鏈條滑出桌面的時間和速度各為多少?

圖3 鏈條下落的示意圖
解析:由牛頓第二定律和牛頓第三定律以及數學的微積分和初始條件可以求得,鏈條下落的時間與高度的關系為
(14)
鏈條下落長度(高度)的規律為
(15)
當鏈條完全滑出桌面時,所需要的時間為
(16)
鏈條的速度為
(17)
對以上的解析式進行約化處理,令
取約化時間
再取約化長度
約化速度
其中
則鏈條的長度和速度分別為
y*=b*cosht*v*=b*sinht*
(18)
當鏈條全部滑出桌面時所需要的時間可表示為

(19)
鏈條全部滑出桌面時對應的速度可表示為
(20)
取初始下垂的長度b為參數向量,取時間t為自變量向量,形成矩陣來計算鏈條下滑的長度和速度,用矩陣畫線法畫出鏈條長度和速度的曲線族,作出的圖像如圖4和圖5所示.

圖4 均勻鏈條下落過程中離開桌面長度的變化規律

圖5 均勻鏈條下落過程中下落速度的變化規律
MATLAB可視化程序如下所示:
% 均勻鏈條從光滑桌面上滑下來的運動規律曲線
clear
%清除變量
b=0.1:0.1:0.7;
%b與l的比值向量
y=0:0.01:1;
%鏈條滑過的長度y
與l的比值向量
[B,Y]=meshgrid(b,y);
%化為矩陣
Y(Y
%使不符合條件的
元素為非數
T=acosh(Y./B);
%求時間
%T(imag(T)~=0)=nan;
%將復數
改為非數
V=B.*sinh(T);
%求速度
V=sqrt(Y.^2-B.^2);
%求速度(同上)
figure
%創建圖形窗口
plot(T,Y,′LineWidth′,2)
%畫長度曲線族
plot(T(:,1),Y(:,1),′o-′,T(:,2),Y(:,2),′d-′,T(:,3),Y(:,3),′s-′,...
T(:,4),Y(:,4),′p-′,T(:,5),Y(:,5),′h-′,T(:,6),Y(:,6),′^-′,...T(:,7),Y(:,7),′v-′)
%畫長度曲線族
fs=16;
%字體大小
xlabel(′itt/t m_0′,′FontSize′,fs)
%時
間比標簽
ylabel(′ity/l′,′FontSize′,fs)
%長度比標簽
title(′均勻鏈條從桌面上無摩擦滑下的長度′,′FontSize′,fs)
%加標題
grid on
%加網格
n=length(b);
%比值個數
legend([repmat(′itb/l m=′,n,1),num2str(b′)],4)
%加圖例
text(1.5,0.1,′itt m_0=(itl/g m)^{1/2}′,′FontSize′,fs)
%加時間單位文本
tm=max(T);
%求運動時間
text(tm,ones(size(tm)),num2str(tm′,2),′FontSize′,fs)
%標記時間
axis tight
%帖軸
hold on
%保持圖像
stem(tm,ones(size(tm)),′--′)
%畫桿圖
figure
%創建圖形窗口
plot(T,V,′LineWidth′,2)
%畫速度曲線
plot(T(:,1),V(:,1),′o-′,T(:,2),V(:,2),′d-′,T(:,3),V(:,3),′s-′,...
T(:,4),V(:,4),′p-′,T(:,5),V(:,5),′h-′,T(:,6),V(:,6),′^-′,...
T(:,7),V(:,7),′v-′)
%畫速度曲線族
xlabel(′itt/t m_0′,′FontSize′,fs)
%時間
比標簽
ylabel(′itv/v m_0′,′FontSize′,fs)
%速
度比標簽
title(′均勻鏈條從桌面上無摩擦滑下的速度′,′FontSize′,fs)
%加標題
legend([repmat(′itb/l m=′,n,1),num2str(b′)],4)
%加圖例
grid on
%加網格
text(1.5,0.1,′itv m_0=(itgl m)^{1/2}′,′FontSize′,fs)
%速度單位文本
vm=max(V);
%求最終速度
text(tm,vm,num2str(vm′,3),′FontSize′,fs)
%標記最終速度
hold on
%保持圖像
plot([zeros(size(tm));tm],[vm;vm],′--′,′LineWidth′,2)
%畫水平線
b=0.1:0.01:1;
%b與l的比值向量
tm=acosh(1./b);
%全部滑下的時間
vm=sqrt(1-b.^2);
%全部滑下的速度
plot(tm,vm,′--′,′LineWidth′,2)
%畫全部滑下的速度和時間曲線
在經典物理的教學過程中,利用MATLAB軟件的數值模擬可視化可以使學生理解物理概念和物理規律變得輕松.例如利用MATLAB軟件的可視化程序可以使經典物理中的剛性小球彈跳問題和均勻鏈條下滑過程的位移和速度變化問題變得生動、直觀、形象.利用MATLAB軟件的可視化程序可以將涉及的物理規律的模擬結果以動態變化圖形的方式呈現.從這些可視化的動態圖形中,學生很容易理解物理規律以及物理量之間的變化趨勢,更好地理解該物理規律產生的原因或條件.利用MATLAB軟件的可視化程序可以使經典物理的教學在一定的程度上減輕了教師課堂教學難度,同時也降低了復雜的高等數學計算過程對學生理解物理概念和物理規律的干擾.這種輔助教學手段如果利用得當的話,一定可以提高教師經典物理的課堂教學效果,激發教師的教學激情,更重要的是激發學生學習經典物理的積極性和興趣,快速提升學生的科學理論素質和科學領悟能力.