李阳娟,林金忠
(莆田学院 工程实训中心,福建 莆田 351100)
实验教学是许多学科教学中不可或缺的重要环节之一,由于传统实验需要在特定实验室中配合特定人员和特定器材进行,具有时间和空间上的限制,而且部分实验由于过程短暂难以观察,因此通过计算机设计一整套虚拟实验系统,模拟真实实验环境的实验过程,显得尤为重要[1-3].
文章利用MATLAB GUI 设计了一套力学碰撞实验虚拟系统.MATLAB软件具有强大的数据分析、科学计算和图像处理功能,其用户图形界面(GUI模块)设计界面友好、人机交流方便.碰撞实验是力学研究的重要对象,具有过程短暂和状态变化明显等特点.通过MATLAB GUI 设计的力学碰撞虚拟实验系统,可以通过动画再现碰撞过程,有助于直观认识并理解整个实验过程[4-6].
图1 力学碰撞实验模型
力学碰撞实验模型如图1所示,模型主要由两个部分构成,一个是小球,另一个是弹簧块.实验过程:小球从高度为h0的位置自由下落,与弹簧上端的木块发生碰撞,之后木块向下运动并压缩弹簧;小球与木块碰撞后在竖直方向上运动,如果不考虑整个系统的摩擦力因素,那么小球和木块的运动会一直持续下去.
以上力学碰撞实验模型的运动过程可以分成两部分:
1)不受外力时,以木块的位置为原点(木板厚度不计),竖直方向为y轴,重力加速度为g,小球和木块的质量分别为m1,m2,小球和木块的位置记作y1,y2为小球自由落体的初始高度,k为弹簧的劲度系数,根据牛顿第二定律,合力F合=ma,建立小球与木块碰撞瞬间之外的运动微分方程如下所示[7]:
(1)
(2)
2)碰撞过程应符合动能定理和动量定理,由于碰撞过程短暂,因此可以忽略碰撞瞬间小球和木块的高度变化,碰撞方程[8]:
(3)
其中v1和v1t为小球碰撞之前和之后的速度,v2和v2t为木块碰撞之前和之后的速度,令y3t=v1t,y4t=v2t,代入方程组(3)之后得到方程:
(4)
化简求解,得:
(5)
小球与弹簧块的运动过程分为两个部分:碰撞之前,通过基本的受力分析以及位移、速度等关系得到方程组(1);碰撞之后,根据动量守恒定律以及机械能守恒定律得到方程组(3).
首先根据给定的初值,主要包括小球下落高度h0,弹簧劲度系数k,小球和木块的质量m1和m2,MATLAB GUI程序进入方程组(1);小球与木块碰撞后进入方程组(3),如此便得到了小球与木块第一次碰撞的所有过程,因为实验中忽略阻力的作用,所以,碰撞之后,程序重新进入到方程组(1),再开始一个新的循环.理论上讲,这将是一个无限循环的过程,可以通过设置小球与木块的碰撞次数来避免程序进入死循环,文章限定碰撞次数为25次.
力学碰撞实验的问题变成求解碰撞前后两个部分的微分方程组,即方程组(1)和方程组(3).
下面对力学碰撞实验的MATLAB GUI设计进行具体说明:
1)设定力学碰撞系统的初值,主要包括小球下落高度h0,弹簧劲度系数k,小球和木块的质量m1和m2.
2)开启事件判断功能,进入25个循环,系统限定小球与木块碰撞次数为25次.通过判断是否满足y1-y2=0来判断系统是否发生了碰撞.先求解未发生碰撞时小球与木块的方程组(1),如果发生了碰撞,则停止计算方程组(1),转为计算方程组(3).之后将碰撞后的数据作为新的初始值,重新进行方程组(1)的求解.
利用MATLAB的绘图函数line画出初始状态的图像,给line函数的属性EraseMode模式赋值xor,让静止的图片运动起来,可以产生动画的效果.具体实现过程为:先以正弦函数画出小球振动模型初始图像,再用set函数将求解得到的值赋给x,y,最后加上drawnow函数命令完成动画.力学碰撞实验MATLAB GUI模型如图2所示.
为了验证虚拟实验系统的准确性,文章分别对各种不同初始值情况下的碰撞过程进行验证,以下所得碰撞过程位移图中,标识“1”代表碰撞过程小球的位移曲线,标识“2”代表碰撞过程弹簧块的位移曲线,具体仿真结果如下:
初始值m1=0,m2=30,h0=50,k=60,碰撞过程位移图如下:
图2 MATLAB GUI模型图3 m1为0时的碰撞过程位移图
由图3可知,若小球质量为0,碰撞过程中小球被弹飞而弹簧块的位移基本没有变化.
初始值m1=900,m2=30,h0=50,k=60, 碰撞过程位移图如3.
由图4可知,由于小球质量远远大于弹簧块的质量,整个碰撞运动过程表现为小球的下落过程.
初始值m1>m2时,即m1=50,m2=30,h0=50,k=60,碰撞过程位移图如图5.
图4 m1远大于m2时的碰撞过程位移图图5 m1大于m2时的碰撞过程位移图
初始值m1=m2时,即m1=50,m2=50,h0=50,k=60,碰撞过程位移图如图6.
初始值m1 图6 m1等于m2时的碰撞过程位移图图7 m1小于m2时的碰撞过程位移图 碰撞实验是力学研究的重要对象,具有过程短暂和状态变化明显等特点.文章利用MATLAB GUI 设计了一套力学碰撞实验虚拟系统,通过演示动画使实验过程及结果可视化,同时通过修改实验系统的初始值设置,就可以快速获得不同条件下的实验结果,无需增加任何硬件耗材,较好地克服了传统实验时间及空间上的限制,大大提高了实验效率.3 结束语