李陽(yáng)娟,林金忠
(莆田學(xué)院 工程實(shí)訓(xùn)中心,福建 莆田 351100)
實(shí)驗(yàn)教學(xué)是許多學(xué)科教學(xué)中不可或缺的重要環(huán)節(jié)之一,由于傳統(tǒng)實(shí)驗(yàn)需要在特定實(shí)驗(yàn)室中配合特定人員和特定器材進(jìn)行,具有時(shí)間和空間上的限制,而且部分實(shí)驗(yàn)由于過(guò)程短暫難以觀察,因此通過(guò)計(jì)算機(jī)設(shè)計(jì)一整套虛擬實(shí)驗(yàn)系統(tǒng),模擬真實(shí)實(shí)驗(yàn)環(huán)境的實(shí)驗(yàn)過(guò)程,顯得尤為重要[1-3].
文章利用MATLAB GUI 設(shè)計(jì)了一套力學(xué)碰撞實(shí)驗(yàn)虛擬系統(tǒng).MATLAB軟件具有強(qiáng)大的數(shù)據(jù)分析、科學(xué)計(jì)算和圖像處理功能,其用戶圖形界面(GUI模塊)設(shè)計(jì)界面友好、人機(jī)交流方便.碰撞實(shí)驗(yàn)是力學(xué)研究的重要對(duì)象,具有過(guò)程短暫和狀態(tài)變化明顯等特點(diǎn).通過(guò)MATLAB GUI 設(shè)計(jì)的力學(xué)碰撞虛擬實(shí)驗(yàn)系統(tǒng),可以通過(guò)動(dòng)畫再現(xiàn)碰撞過(guò)程,有助于直觀認(rèn)識(shí)并理解整個(gè)實(shí)驗(yàn)過(guò)程[4-6].
圖1 力學(xué)碰撞實(shí)驗(yàn)?zāi)P?/p>
力學(xué)碰撞實(shí)驗(yàn)?zāi)P腿鐖D1所示,模型主要由兩個(gè)部分構(gòu)成,一個(gè)是小球,另一個(gè)是彈簧塊.實(shí)驗(yàn)過(guò)程:小球從高度為h0的位置自由下落,與彈簧上端的木塊發(fā)生碰撞,之后木塊向下運(yùn)動(dòng)并壓縮彈簧;小球與木塊碰撞后在豎直方向上運(yùn)動(dòng),如果不考慮整個(gè)系統(tǒng)的摩擦力因素,那么小球和木塊的運(yùn)動(dòng)會(huì)一直持續(xù)下去.
以上力學(xué)碰撞實(shí)驗(yàn)?zāi)P偷倪\(yùn)動(dòng)過(guò)程可以分成兩部分:
1)不受外力時(shí),以木塊的位置為原點(diǎn)(木板厚度不計(jì)),豎直方向?yàn)閥軸,重力加速度為g,小球和木塊的質(zhì)量分別為m1,m2,小球和木塊的位置記作y1,y2為小球自由落體的初始高度,k為彈簧的勁度系數(shù),根據(jù)牛頓第二定律,合力F合=ma,建立小球與木塊碰撞瞬間之外的運(yùn)動(dòng)微分方程如下所示[7]:
(1)
(2)
2)碰撞過(guò)程應(yīng)符合動(dòng)能定理和動(dòng)量定理,由于碰撞過(guò)程短暫,因此可以忽略碰撞瞬間小球和木塊的高度變化,碰撞方程[8]:
(3)
其中v1和v1t為小球碰撞之前和之后的速度,v2和v2t為木塊碰撞之前和之后的速度,令y3t=v1t,y4t=v2t,代入方程組(3)之后得到方程:
(4)
化簡(jiǎn)求解,得:
(5)
小球與彈簧塊的運(yùn)動(dòng)過(guò)程分為兩個(gè)部分:碰撞之前,通過(guò)基本的受力分析以及位移、速度等關(guān)系得到方程組(1);碰撞之后,根據(jù)動(dòng)量守恒定律以及機(jī)械能守恒定律得到方程組(3).
首先根據(jù)給定的初值,主要包括小球下落高度h0,彈簧勁度系數(shù)k,小球和木塊的質(zhì)量m1和m2,MATLAB GUI程序進(jìn)入方程組(1);小球與木塊碰撞后進(jìn)入方程組(3),如此便得到了小球與木塊第一次碰撞的所有過(guò)程,因?yàn)閷?shí)驗(yàn)中忽略阻力的作用,所以,碰撞之后,程序重新進(jìn)入到方程組(1),再開始一個(gè)新的循環(huán).理論上講,這將是一個(gè)無(wú)限循環(huán)的過(guò)程,可以通過(guò)設(shè)置小球與木塊的碰撞次數(shù)來(lái)避免程序進(jìn)入死循環(huán),文章限定碰撞次數(shù)為25次.
力學(xué)碰撞實(shí)驗(yàn)的問(wèn)題變成求解碰撞前后兩個(gè)部分的微分方程組,即方程組(1)和方程組(3).
下面對(duì)力學(xué)碰撞實(shí)驗(yàn)的MATLAB GUI設(shè)計(jì)進(jìn)行具體說(shuō)明:
1)設(shè)定力學(xué)碰撞系統(tǒng)的初值,主要包括小球下落高度h0,彈簧勁度系數(shù)k,小球和木塊的質(zhì)量m1和m2.
2)開啟事件判斷功能,進(jìn)入25個(gè)循環(huán),系統(tǒng)限定小球與木塊碰撞次數(shù)為25次.通過(guò)判斷是否滿足y1-y2=0來(lái)判斷系統(tǒng)是否發(fā)生了碰撞.先求解未發(fā)生碰撞時(shí)小球與木塊的方程組(1),如果發(fā)生了碰撞,則停止計(jì)算方程組(1),轉(zhuǎn)為計(jì)算方程組(3).之后將碰撞后的數(shù)據(jù)作為新的初始值,重新進(jìn)行方程組(1)的求解.
利用MATLAB的繪圖函數(shù)line畫出初始狀態(tài)的圖像,給line函數(shù)的屬性EraseMode模式賦值xor,讓靜止的圖片運(yùn)動(dòng)起來(lái),可以產(chǎn)生動(dòng)畫的效果.具體實(shí)現(xiàn)過(guò)程為:先以正弦函數(shù)畫出小球振動(dòng)模型初始圖像,再用set函數(shù)將求解得到的值賦給x,y,最后加上drawnow函數(shù)命令完成動(dòng)畫.力學(xué)碰撞實(shí)驗(yàn)MATLAB GUI模型如圖2所示.
為了驗(yàn)證虛擬實(shí)驗(yàn)系統(tǒng)的準(zhǔn)確性,文章分別對(duì)各種不同初始值情況下的碰撞過(guò)程進(jìn)行驗(yàn)證,以下所得碰撞過(guò)程位移圖中,標(biāo)識(shí)“1”代表碰撞過(guò)程小球的位移曲線,標(biāo)識(shí)“2”代表碰撞過(guò)程彈簧塊的位移曲線,具體仿真結(jié)果如下:
初始值m1=0,m2=30,h0=50,k=60,碰撞過(guò)程位移圖如下:
圖2 MATLAB GUI模型圖3 m1為0時(shí)的碰撞過(guò)程位移圖
由圖3可知,若小球質(zhì)量為0,碰撞過(guò)程中小球被彈飛而彈簧塊的位移基本沒(méi)有變化.
初始值m1=900,m2=30,h0=50,k=60, 碰撞過(guò)程位移圖如3.
由圖4可知,由于小球質(zhì)量遠(yuǎn)遠(yuǎn)大于彈簧塊的質(zhì)量,整個(gè)碰撞運(yùn)動(dòng)過(guò)程表現(xiàn)為小球的下落過(guò)程.
初始值m1>m2時(shí),即m1=50,m2=30,h0=50,k=60,碰撞過(guò)程位移圖如圖5.
圖4 m1遠(yuǎn)大于m2時(shí)的碰撞過(guò)程位移圖圖5 m1大于m2時(shí)的碰撞過(guò)程位移圖
初始值m1=m2時(shí),即m1=50,m2=50,h0=50,k=60,碰撞過(guò)程位移圖如圖6.
初始值m1 圖6 m1等于m2時(shí)的碰撞過(guò)程位移圖圖7 m1小于m2時(shí)的碰撞過(guò)程位移圖 碰撞實(shí)驗(yàn)是力學(xué)研究的重要對(duì)象,具有過(guò)程短暫和狀態(tài)變化明顯等特點(diǎn).文章利用MATLAB GUI 設(shè)計(jì)了一套力學(xué)碰撞實(shí)驗(yàn)虛擬系統(tǒng),通過(guò)演示動(dòng)畫使實(shí)驗(yàn)過(guò)程及結(jié)果可視化,同時(shí)通過(guò)修改實(shí)驗(yàn)系統(tǒng)的初始值設(shè)置,就可以快速獲得不同條件下的實(shí)驗(yàn)結(jié)果,無(wú)需增加任何硬件耗材,較好地克服了傳統(tǒng)實(shí)驗(yàn)時(shí)間及空間上的限制,大大提高了實(shí)驗(yàn)效率.3 結(jié)束語(yǔ)