使用MATLAB编写一个函数文件,解决如下问题:急需答案,谢过。
考虑一个体积忽略不计的物体,该物体从h米高的位置进行初速度为零的自由落体运动,当它接触到地面后立刻被反弹,反弹时地面按比例d(d<1)吸收该物体的一部分速度,当物体的速度...
考虑一个体积忽略不计的物体,该物体从h米高的位置进行初速度为零的自由落体运动,当它接触到地面后立刻被反弹,反弹时地面按比例d(d<1)吸收该物体的一部分速度,当物体的速度小于0.01m/s时认为物体处于停止运动,整个过程忽略所有其它外力的影响。
(1)请问该物体由开始下落到处于静止状态,一共反弹了多少次?一共需要多少时间?
(2)请画出物体高度随时间变化的曲线图,标明坐标名称。
(3)请生成一个能够表达这一物理现象的动画效果。 展开
(1)请问该物体由开始下落到处于静止状态,一共反弹了多少次?一共需要多少时间?
(2)请画出物体高度随时间变化的曲线图,标明坐标名称。
(3)请生成一个能够表达这一物理现象的动画效果。 展开
2个回答
展开全部
这是我写的程序,所有问题都有回答,但不一定完善, 若有问题请指出。
%————————————————————
h=10; %初始高度h,设为10米,可自行设置
d=0.2; %吸收比例d,设为0.2,可自设
g=9.8; %重力加速度g
int=40; %每次弹起路程的采样次数,可自设。
H(1)=h; %第一次撞击地面经历的距离
T(1)=(2*H(1)/g)^0.5; %第一次撞击地面经历的时间
%模拟第一次撞击的过程
%-----------------------------------
i=1:int;
t=T(1).*(i-1)/int; %时间分段
height=H(1)-g*t.^2/2; %每个时段的高度
plot(t,height) %画出第一次撞击地面的过程
hold on
V=g*T(1); %第一次撞击地面时的速度
TT=T(1); %从最初开始下落到第一次撞击经历的时间
%---------------------------------------
%用Height和Ttt记录整个自由落体-反弹过程的时间和高度数据
%----------------------------------------
Height(1:int)=height;
%-----------------------------------------
%反弹后,第二次自由落体的数据
k=2;
V=(1-d)*V; %反弹速度,吸收率为d
T(k)=2*V/g; %从第k-1次撞击到第k次撞击间,自由落体的时间
H(k)=g*(T(k)/2)^2/2; %第k次反弹的高度
N=1; %记录反弹次数
while V>0.01
i=1:2*int; %由于反弹后在空中经历上下两段路程,所以变成2*int
t=TT+T(k).*(i-1)/2/int;
tc=TT+T(k)/2;
height=H(k)-g*(t-tc).^2/2;
plot(t,height)
hold on
Height((2*int*(k-2)+1+int):(2*int*(k-1)+int))=height;
TT=TT+T(k); %记录到第k次反弹时经历的总时间
k=k+1;
N=N+1;
V=(1-d)*V;
T(k)=2*V/g;
H(k)=g*(T(k)/2)^2/2;
end
N %显示最终的反弹次数。
TT %显示最终的总时间。
xlabel('t/s')
ylabel('h/m')
%下面是动画效果。注意再次运行时,请关闭所有图像窗口。
figure(2)
L=length(Height);
for i=1:L/8 %仅显示前1/8的动画,全部显示完太费时间
plot(Height(i),'o');
axis([0,2,0,10]);
pause(0.0001)
end
%————————————————————
h=10; %初始高度h,设为10米,可自行设置
d=0.2; %吸收比例d,设为0.2,可自设
g=9.8; %重力加速度g
int=40; %每次弹起路程的采样次数,可自设。
H(1)=h; %第一次撞击地面经历的距离
T(1)=(2*H(1)/g)^0.5; %第一次撞击地面经历的时间
%模拟第一次撞击的过程
%-----------------------------------
i=1:int;
t=T(1).*(i-1)/int; %时间分段
height=H(1)-g*t.^2/2; %每个时段的高度
plot(t,height) %画出第一次撞击地面的过程
hold on
V=g*T(1); %第一次撞击地面时的速度
TT=T(1); %从最初开始下落到第一次撞击经历的时间
%---------------------------------------
%用Height和Ttt记录整个自由落体-反弹过程的时间和高度数据
%----------------------------------------
Height(1:int)=height;
%-----------------------------------------
%反弹后,第二次自由落体的数据
k=2;
V=(1-d)*V; %反弹速度,吸收率为d
T(k)=2*V/g; %从第k-1次撞击到第k次撞击间,自由落体的时间
H(k)=g*(T(k)/2)^2/2; %第k次反弹的高度
N=1; %记录反弹次数
while V>0.01
i=1:2*int; %由于反弹后在空中经历上下两段路程,所以变成2*int
t=TT+T(k).*(i-1)/2/int;
tc=TT+T(k)/2;
height=H(k)-g*(t-tc).^2/2;
plot(t,height)
hold on
Height((2*int*(k-2)+1+int):(2*int*(k-1)+int))=height;
TT=TT+T(k); %记录到第k次反弹时经历的总时间
k=k+1;
N=N+1;
V=(1-d)*V;
T(k)=2*V/g;
H(k)=g*(T(k)/2)^2/2;
end
N %显示最终的反弹次数。
TT %显示最终的总时间。
xlabel('t/s')
ylabel('h/m')
%下面是动画效果。注意再次运行时,请关闭所有图像窗口。
figure(2)
L=length(Height);
for i=1:L/8 %仅显示前1/8的动画,全部显示完太费时间
plot(Height(i),'o');
axis([0,2,0,10]);
pause(0.0001)
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询