本科毕业设计论文蹦极问题的数学模型和仿真.docx
《本科毕业设计论文蹦极问题的数学模型和仿真.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文蹦极问题的数学模型和仿真.docx(17页珍藏版)》请在冰豆网上搜索。
本科毕业设计论文蹦极问题的数学模型和仿真
蹦极问题的数学模型和仿真
摘要
蹦极(BungeeJumping),也叫机索跳,白话叫笨猪跳,是近些年来新兴的一项非常刺激的户外休闲活动。
跳跃者站在约40米以上(相当于10层楼)高度的桥梁、塔顶、高楼、吊车甚至热气球上,把一端固定的一根长长的橡皮条绑在踝关节处然后两臂伸开,双腿并拢,头朝下跳下去。
绑在跳跃者踝部的橡皮条很长,足以使跳跃者在空中享受几秒钟的“自由落体”。
当人体落到离地面一定距离时,橡皮绳被拉开、绷紧、阻止人体继续下落,当到达最低点时橡皮再次弹起,人被拉起,随后,又落下,这样反复多次直到橡皮绳的弹性消失为止,这就是蹦极的全过程。
蹦极问题主要涉及参与者的运动状态分析以及整个蹦极系统的安全考虑。
本文通过牛顿第二定律构建参与者的运动状态方程,然后在Simulink中搭建蹦极模型并仿真,仿真结果验证了数学模型的正确性。
根据这个模型,可以深入理解蹦极运动的一般规律,加深对蹦极系统安全性的领悟,并且可以将这种规律运用在生活的其他方面。
关键词
数学建模Simulink蹦极
前言
蹦极运动作为一种刺激的极限运动,通过蹦极可以体验到前所未有的自由、震撼,这也是蹦极一直吸引着大批参与者的原因。
由于这项运动的特殊性,相比于其他运动项目(比如过山车、摩天轮、漂流等),蹦极的危险系数也更大,每年发生的事故也经常见诸各种新闻媒体。
蹦极运动中,参与者的运动轨迹比较复杂,整体表现为振幅不断减小的往复运动,最后达到稳定位置,在稳定位置参与者重力等于弹力绳的拉力。
为了研究的方便,假设弹力绳一直处于线性拉伸区,也就是服从胡克定律。
由于参与者在蹦极时主要是头朝下,肢体运动相对于参与者的整体运动可以忽略,可以把运动中当成一个质点考虑。
Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。
为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI),这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
本文用来验证数学模型的正确性。
分析及推导
一、蹦极运动学分析
参与者从起跳台出发,离开起跳台后参与基本处于头朝下的状态,然后经过一段时间的往复运动最后达到稳定高度附近,结束蹦极,如图1所示。
由于蹦极环境的不同,有的在岸边的悬崖,有的在陆地上,如果在水边,最后参与者在弹力绳自然伸长位置(中间层)附近被拉起,如果在陆地就在地面被拉起。
我们假设参与者的起跳位置在
,也就是起跳台的位置,以中间层的位置高度为0。
如果弹力绳弹力太大,参与者可能降落的最低位置可能达到地面,如果,到达地面的速度的比较快,这会有安全隐患。
假设中间层到地面的高度为h。
在参与者蹦极的过程中,主要受到重力、弹力绳的拉力,空气阻力。
其中弹力绳处于松弛状态时没有拉力,弹力绳处于拉伸状态时拉力与拉伸长度成正比。
空气阻力主要与速度有关。
图1蹦极运动示意图
假设参与者的位置是x,中间层向下为正。
于是参与者初始位置是
,地面位置是-h。
由于弹力绳没有突破弹力极限,弹力绳一直服从胡可定律。
(1)
其中
表示弹力绳弹力。
k表示弹力绳的弹性系数,弹性系数越大,参与在在同样的拉伸长度下受到的拉力越大。
假设参与者质量是m,当地的重力加速度是g,则参与者受到的重力是
(2)
参与受到的空气阻力主要与参与者速度
有关,通过查阅相关资料,了解到空气阻力
近似满足下面关系式
(3)
其中
,
表示空气摩擦系数,可以看出摩擦系数越大,速度越大,则空气阻力越大。
假设参与者的加速是a,根据牛顿第二定律,可以得到如下关系式
(4)
假设参与者初始速度是
,则参与的速度和位置满足如下关系
(5)
综合公式
(1)~(4)得
参与在降落的过程中,由于空气阻力的影响,整体的机械能逐渐减小。
参与者降落的过程中,参与者的重力势能转换成弹力绳的弹性势能和与空气摩擦的内能。
参与者上升的过程中,弹力绳的弹性势能转换成参与者的重力势能和与空气摩擦的内能。
由于机械能的逐渐较小,参与每次往复运动下降的最大距离逐渐减小。
参与者在多次往复运动后达到一个稳定高度,此时参与者速度为0,重力和弹力绳拉力相等,参与者处于二力平衡状态。
一般参与者往复运动幅度很小是,工作人员会拉起参与者解开拉力绳,结束蹦极运动。
稳定高度
满足如下关系式
(6)
从蹦极跳系统的数学描述中可得知,此系统为一典型的具有连续状态的非线性系统。
设中间层距离地面为50m,即h=50;蹦极者的起始位置-30m,即
=-30;蹦极者起始速度为0,即
=0。
其余参数k=20,a2=a1=1;m=70kg,g=9.8m/s2。
下面将建立蹦极跳系统的仿真模型,并在如上的参数下对系统进行仿真,分析此蹦极跳系统对体重为70kg的蹦极者而言是否安全。
二、Simulink仿真验证
蹦极模型是典型的连续时间动态变化过程,参与者由于空气阻力的作用,一直于幅度逐渐减小的往复运动,本文搭建如下图2所示的Simulink仿真模型。
其中力学方程模块,主要输入重力、弹力绳拉力和空气阻力,输出参与者的合外力,然后经过1/m的增益模块,得到参与者加速度a。
加速度a经过积分模块,得到参与者速度v。
速度v经过积分模块得到参与者位置,初始位置是
,然后通过scope模块输出显示。
上面这个位置是相对于中间层的位置,经过与地面和中间层的距离h作差,得到参与者相对于地面的高度。
图2Simulink仿真模型
模型的核心模块是弹力计算部分和空气阻力计算部分。
弹力计算模块主要通过一个switch模块实现,当位置信号x小于0时,弹力计算模块输出0,表示弹力绳处于松弛状态;当位置信号x大于0,弹力绳处于拉伸状态,弹力计算模块输出弹力kx。
空气阻力由两部分组成,第一部分是
,第二部分是
,其中第二部分主要通过一个自定义函数实现。
将前文的变量赋值到工作空间,方面Simulink调用,使用的初始化变量代码如下:
m=70;%参与者质量
g=9.8;%重力加速度
a1=1;%空气摩擦系数1
a2=1;%空气摩擦系数2
h=50;%中间层和地面距离
k=20;%弹力绳弹性系数
x0=30;%参与者初始位置
Simulink仿真时间设置为500秒,仿真步长设置为
秒的固定步长,采用龙格库塔ode4算法,如图3所示。
仿真后得到的参与者位置信号和相对地面位置信号分别如图4和图5所示,可以看到对地位置出现了小于0的情况,参与者会有安全威胁。
图3仿真设置界面
图4位置信号
图5对地位置信号
通过改变弹力绳的弹性系数可以得到不同状态的对地位置信号,然后观察得到满足安全要求的弹力绳弹性系数。
仿真结果如图6所示,其中弹性系数k分别等于20、23、26、29,可以看到随着弹性系数的增加,参与者的对地位置的最小值越来越大,其中当k=26时,最低位置大于0,蹦极系统是安全的。
图6不同弹性系数的运动变化曲线
三、蹦极的安全性
前面初步探讨了在几种不同的弹性系数的拉力绳的作用下,参与者的运动轨迹,k=26和k=29时,参与的对地位置的最小值都是大于0的,可以保证蹦极系统的安全。
下面探讨在不同的初始位置和不同参与者质量,蹦极系统的安全性。
假设弹力绳的弹性系数k=20。
当参与者质量分别是70kg,75kg,80kg,85kg时,参与者运动变化曲线如图7所示。
图7不同质量的参与者运动变化曲线
可以看出随着参与者质量的增加,参与者蹦极降落的最低位置越来越低,往复运动的幅度变化不大。
通过多次试验不同质量的参与者,比较降落最低位置,得到降落最低位置与参与者质量的变化关系,如图8所示。
可以看出最低位置与质量成负相关关系,质量越大,最低位置越低。
图8中总共做了10次测试,对应的参与者质量分别是70kg,73.3kg,76.6kg,80kg,83.3kg,86.6kg,90kg,93.3kg,96.6kg,100kg,得到对应的蹦极参与者的最低位置分别是,-9.60m,-12.32m,-15.03m,-17.74m,-20.44m,-23.14m,-25.84m,-28.53m,-31.21m,-33.90m。
可以观察到参与者质量与最低位置近似满足线性关系。
图8降落最低位置与参与者质量的变化关系
通过matlab拟合工具箱cftool拟合质量和最低位置的关系可以得到,两者之间的精确表达式。
拟合采用的是一次多项式,拟合结果如下:
fitresult=
LinearmodelPoly1:
fitresult(x)=p1*x+p2
Coefficients(with95%confidencebounds):
p1=-0.81(-0.8114,-0.8085)
p2=47.07(46.94,47.19)
Goodnessoffit:
SSE:
0.002957
R-square:
1
AdjustedR-square:
1
RMSE:
0.01923
表明拟合多项式的一次项系数是-0.81,置信区间是(-0.8114,-0.8085),常数项系数是47.07,置信区间是(46.94,47.19),即最低位置
。
10次试验的的残差(实际的最低位置与拟合的最低位置的差)变化曲线如图9所示。
可以看出残差在(-0.02,0.03)之间,拟合误差特别小,均方根误差rmse=0.01923,可以认为最低位置随参与者质量线性递减。
图9残差变化曲线
为了保证蹦极系统的安全性
,得到参与者质量
,说明在弹力绳弹性系数k=20的情况下,参与者质量小于58.1111kg时,参与者才不会接触地面,发生安全事故。
上面
的情况显然不适合实际情况,一般参与者的质量往往会出现质量大于58.1111的情况。
为了保证参与者的体重范围相对大,假设参与者的最大质量是120kg,下面通过改变弹力绳的弹性系数得到保证安全的最小弹性系数。
为了研究方便,将Simulink模型中的对地位置信号通过outport模块输出,如图10所示。
每次试验之后,如果最低位置不小于0就得到满足要求的最小弹性系数,否则将弹力绳的弹性系数加1,直到满足要求。
Matlab运行这下面这段循环语句后得到k=45。
也就是当弹力绳的弹性系数大于45时,可以保证整个蹦极系统的安全性。
循环代码如下:
%%得到码子参与者质量m等于120kg时的弹力绳的最低弹性系数
clear,clc
m=70;%参与者质量
g=9.8;%重力加速度
a1=1;%空气摩擦系数1
a2=1;%空气摩擦系数2
h=50;%中间层和地面距离
k=20;%弹力绳弹性系数
x0=30;%参与者初始位置
m=120;
k=20;
whilem>1
[t,x,y]=sim('Bengji',[050]);%初始y表示参与者对地位置信号
k=k+1;
ifmin(y)>0
break
end
end
k
图10对地位置outport示意图
通过上面的计算得到了蹦极系统的安全条件,参与者质量越小,弹力绳弹性系数越大,最低位置越高,安全性越大。
结论
通过观察图4所示的位置信号,可以看到参与者的位置处于幅度逐渐减小的往复运动,这与前面的推理吻合。
稳定阶段的位置信号如图7所示,可以看出稳定值在34.3左右。
根据前面的结论参与者稳定位置
,结论也刚好吻合。
图7稳定状态的位置信号
参与者的运动轨迹在不考虑空气阻力变化的情况下,主要与弹力绳的弹性系数有关。
弹性系数越大,参与者下降缓冲的效果越明显,感受到的“束缚”也越明显,但是这样可以保证下降的最低高度不接触地面,从而保证安全。
对于本文假设的蹦极系统,当起跳高度是-30m,中间层和地面距离50m,参与者最高质量不大于120kg的情况下,弹力绳的弹性系数最小为45才能保证整个蹦极运动的安全。
参考文献
[1]华东师范大学第一届研究生数学建模赛题(2007.5.25)
[2]赵也非,周自力,孙晶,《蹦极的数学建模及龙格-库塔法求解方法》,2007
[3]向导科技编著,《MATLABv6.0程序设计与实例应用》,中国铁道出版社
附录:
1.完整代码:
%%变量初始化
m=70;%参与者质量
g=9.8;%重力加速度
a1=1;%空气摩擦系数1
a2=1;%空气摩擦系数2
h=50;%中间层和地面距离
k=20;%弹力绳弹性系数
x0=30;%参与者初始位置
%%不同参与者质量的运动变化曲线
figure('color','w')
str='rgbc';
form=70:
5:
85
[t,x,y]=sim('Bengji',[050]);
plot(t,y,'color',str((m-65)/5))
holdon
end
grid
legend('m=70','m=75','m=80','m=85')
xlabel('时间')
ylabel('对地位置')
title('不同参与者质量的运动变化曲线')
%%质量vs最低位置
figure('color','w')
str='rgbc';
xx=linspace(70,100,10);
yy=xx;
fori=1:
10
m=xx(i);
[t,x,y]=sim('Bengji',[050]);
yy(i)=min(y);
end
figure('color','w')
plot(xx,yy,'ro',xx,yy,'b')
grid
xlabel('质量')
ylabel('最低位置')
title('质量vs最低位置')
%%拟合最低位置和质量的关系
[xData,yData]=prepareCurveData(xx,yy);
%Setupfittypeandoptions.
ft=fittype('poly1');
opts=fitoptions(ft);
opts.Lower=[-Inf-Inf];
opts.Upper=[InfInf];
%Fitmodeltodata.
[fitresult,gof]=fit(xData,yData,ft,opts);
%Plotfitwithdata.
figure('Name','untitledfit1');
h=plot(fitresult,xData,yData);
legend(h,'最低位置vs.质量','一次函数拟合','Location','NorthEast');
%Labelaxes
xlabel('质量');
ylabel('最低位置');
gridon
%绘制残差图
h=plot(fitresult,xData,yData,'residuals');
legend(h,'残差','0误差线','Location','NorthEast');
%%得到码子参与者质量m等于120kg时的弹力绳的最低弹性系数
clear,clc
m=70;%参与者质量
g=9.8;%重力加速度
a1=1;%空气摩擦系数1
a2=1;%空气摩擦系数2
h=50;%中间层和地面距离
k=20;%弹力绳弹性系数
x0=30;%参与者初始位置
m=120;
k=20;
whilem>1
[t,x,y]=sim('Bengji',[050]);
k=k+1;
ifmin(y)>0
break
end
end
k
2.硬件环境
Windows10+Matlab2013a