小球弹跳及MATLAB实现

您所在的位置:网站首页 玛雅气球弹跳动画图片 小球弹跳及MATLAB实现

小球弹跳及MATLAB实现

2024-07-17 13:54| 来源: 网络整理| 查看: 265

 问题:弹跳球初始高度为 10 m 10m 10m,初始速度向上为 15 m / s 15m/s 15m/s,随后在重力作用下自由落体运动。每次撞击地面会弹起,弹起的速度是落地速度的0.8倍。求: 1、弹跳球何时停止 2、 弹跳球第100次撞击地面时的时间和行驶路程。 3、用plot绘制弹跳球位置随时间的变化图。 4 、使用plot绘制弹跳球速度随时间的变化图。 结果如下图所示: 在这里插入图片描述

 首先是小球运动的动力学公式: v = v 0 + a t v=v_0+at v=v0​+at x = v 0 t + 1 2 a t 2 x=v_0t+{1\over2}at^2 x=v0​t+21​at2 ∇ x = 1 2 a t 2 \nabla x={1\over2}at^2 ∇x=21​at2 l = ∑ ∇ x l=\sum{\nabla x} l=∑∇x  其实真正的公式部分就只有这些,剩下的就主要是编程的问题,而编程中主要是画图的问题。我们首先要明确一个问题,虽然时间是连续的,求的应该也是一个连续的过程,但其实就是我们编程求的是一个一个点,是离散的,不是一个连续的过程。就比如求得当 ∇ t = 1 \nabla t=1 ∇t=1, t = 0 , 1 , 2 , 3 … … t=0,1,2,3…… t=0,1,2,3……时,求得 x ( t ) , l ( t ) , v ( t ) x(t),l(t),v(t) x(t),l(t),v(t)。但是当t的间隔越来越小时, ∇ t = 0.1 \nabla t =0.1 ∇t=0.1, t = 0 , 0.1 , 0.2 … … t=0,0.1,0.2…… t=0,0.1,0.2……则就可近似看成连续的函数。  设速度竖直向下为正方向,则 v 0 = − 15 m / s v_0=-15m/s v0​=−15m/s,设初始高度 h 0 = 10 m h_0=10m h0​=10m,设反弹系数 k = 0.8 k=0.8 k=0.8,设重力加速度 g = 9.8 m / s 2 g=9.8m/s^2 g=9.8m/s2,设初始行驶路程 l 0 = 0 m l_0=0m l0​=0m,设撞击地面的次数为 c o u n t count count。

clc,clear; h0=10;%初始高度为10m v0=-15;%以竖直向下为正方向,初速度为-15m/s l0=0;%行驶路程 g=9.8;%加速度 k=0.8;%反弹系数 count=0;%撞击地面的次数

 我们需要用矩阵记录每时刻小球的速度,高度,行驶的路程,经过的时间。

h(1)=h0;%记录每刻小球高度 v(1)=v0;%记录每刻小球速度 l(1)=l0;%记录每刻小球路程 t=0;%记录每刻小球路程 i=0;%记数

 下面就是小球运动的核心代码。但是其中有一个问题,就是由于我们求得的是下一时刻的小球状态,如果在这一段时间内小球发生碰撞应该怎么办? 在这里插入图片描述

 我的解决方法就是判断下一段时间小球是否要碰地,若要碰地,则改变 ∇ t \nabla t ∇t,使小球在 t n = t n − 1 + ∇ t t_n=t_{n-1}+\nabla t tn​=tn−1​+∇t时刻正好碰地。 在这里插入图片描述

while 1 i=i+1; t=0.05;%设置时间间隔为0.05s if count==100 %如果撞地次数为100次,退出 break end %在撞地前 if h(i)-(v(i)*t+g*t^2/2)5 %在图中留下五个小球 delete(h1(i-1))%删除前第一个小球,并将小球大小设为25 h1(i-1) = line('Color','b','Marker','.','MarkerSize',25);%画小球的不同大小 set(h1(i-1),'xdata',0,'ydata',h(i-1)); delete(h1(i-2))%删除前第二个小球,并将小球大小设为20 h1(i-2) = line('Color','b','Marker','.','MarkerSize',20); set(h1(i-2),'xdata',0,'ydata',h(i-2)); delete(h1(i-3))%删除前第三个小球,并将小球大小设为15 h1(i-3) = line('Color','b','Marker','.','MarkerSize',15); set(h1(i-3),'xdata',0,'ydata',h(i-3)); delete(h1(i-4))%删除前第四个小球,并将小球大小设为10 h1(i-4) = line('Color','b','Marker','.','MarkerSize',10); set(h1(i-4),'xdata',0,'ydata',h(i-4)); delete(h1(i-5)) end


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3