基于MATLAB GUI的碰撞实验虚拟系统设计

2020-03-31 01:50李阳娟林金忠
关键词:木块方程组小球

李阳娟,林金忠

(莆田学院 工程实训中心,福建 莆田 351100)

0 引言

实验教学是许多学科教学中不可或缺的重要环节之一,由于传统实验需要在特定实验室中配合特定人员和特定器材进行,具有时间和空间上的限制,而且部分实验由于过程短暂难以观察,因此通过计算机设计一整套虚拟实验系统,模拟真实实验环境的实验过程,显得尤为重要[1-3].

文章利用MATLAB GUI 设计了一套力学碰撞实验虚拟系统.MATLAB软件具有强大的数据分析、科学计算和图像处理功能,其用户图形界面(GUI模块)设计界面友好、人机交流方便.碰撞实验是力学研究的重要对象,具有过程短暂和状态变化明显等特点.通过MATLAB GUI 设计的力学碰撞虚拟实验系统,可以通过动画再现碰撞过程,有助于直观认识并理解整个实验过程[4-6].

1 力学碰撞实验理论模型

图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)

2 力学碰撞实验虚拟系统设计

小球与弹簧块的运动过程分为两个部分:碰撞之前,通过基本的受力分析以及位移、速度等关系得到方程组(1);碰撞之后,根据动量守恒定律以及机械能守恒定律得到方程组(3).

首先根据给定的初值,主要包括小球下落高度h0,弹簧劲度系数k,小球和木块的质量m1和m2,MATLAB GUI程序进入方程组(1);小球与木块碰撞后进入方程组(3),如此便得到了小球与木块第一次碰撞的所有过程,因为实验中忽略阻力的作用,所以,碰撞之后,程序重新进入到方程组(1),再开始一个新的循环.理论上讲,这将是一个无限循环的过程,可以通过设置小球与木块的碰撞次数来避免程序进入死循环,文章限定碰撞次数为25次.

2.1 力学碰撞实验虚拟系统算法设计

力学碰撞实验的问题变成求解碰撞前后两个部分的微分方程组,即方程组(1)和方程组(3).

下面对力学碰撞实验的MATLAB GUI设计进行具体说明:

1)设定力学碰撞系统的初值,主要包括小球下落高度h0,弹簧劲度系数k,小球和木块的质量m1和m2.

2)开启事件判断功能,进入25个循环,系统限定小球与木块碰撞次数为25次.通过判断是否满足y1-y2=0来判断系统是否发生了碰撞.先求解未发生碰撞时小球与木块的方程组(1),如果发生了碰撞,则停止计算方程组(1),转为计算方程组(3).之后将碰撞后的数据作为新的初始值,重新进行方程组(1)的求解.

2.2 力学碰撞实验虚拟系统演示动画实现方法

利用MATLAB的绘图函数line画出初始状态的图像,给line函数的属性EraseMode模式赋值xor,让静止的图片运动起来,可以产生动画的效果.具体实现过程为:先以正弦函数画出小球振动模型初始图像,再用set函数将求解得到的值赋给x,y,最后加上drawnow函数命令完成动画.力学碰撞实验MATLAB GUI模型如图2所示.

2.3 力学碰撞实验虚拟系统仿真结果分析

为了验证虚拟实验系统的准确性,文章分别对各种不同初始值情况下的碰撞过程进行验证,以下所得碰撞过程位移图中,标识“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时的碰撞过程位移图

3 结束语

碰撞实验是力学研究的重要对象,具有过程短暂和状态变化明显等特点.文章利用MATLAB GUI 设计了一套力学碰撞实验虚拟系统,通过演示动画使实验过程及结果可视化,同时通过修改实验系统的初始值设置,就可以快速获得不同条件下的实验结果,无需增加任何硬件耗材,较好地克服了传统实验时间及空间上的限制,大大提高了实验效率.

猜你喜欢
木块方程组小球
深入学习“二元一次方程组”
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
《二元一次方程组》巩固练习
小球进洞了
小球别跑
小球别跑
怎样数出小木块的个数
巧用方程组 妙解拼图题
“挖”出来的二元一次方程组
错在哪里