球反弹——状态方程

6 Ansichten(30天)的
利昂·埃利斯
利昂·埃利斯 我2022年4月15日
Bearbeitet: 乔恩 我2023年6月14日
美好的一天,我正在一个学生分配与实际模拟球弹跳。这是通过获得弹簧常数(K)和阻尼常数(b)的球与球的excelleration状态方程。状态方程:
而在空气中:马=毫克;因此= g
而压缩:马=毫克+ K * y + b * v;因此= - g + (K / m) * y + (b / m) * v, v是y方向上的速度。
而扩大:马=毫克+ K *。这* v;因此= - g + (K / m) * y - v (b / m) * (b / m) * v方向变化速度的改变方向。
我试着应用这些状态方程在代码来演示一个球的反弹在y方向上与时间,但没有运气。这是当前的代码我试图找到工作:
M = 0.057;
持有;
g = 9.81;
dt = 0.01;
e5 y2 = 0 (1, 1);
v = 0;
国旗= 0;
b = 4.1892;
K = 1.5276 e + 04;
%新的k值? ? ? ? ? ? ?
K2 = K;
y (1) = 1;
持有;
我= 2;
% BounceData追踪数据!
我= 2:长度(BounceData)
如果y(张)> 0
v =例如* dt;
(我)= y(张)+ v * dt;
国旗= 0;
情节(dt *(张),y(张),的r *);
持有;
结束
如果(标志= = 0 & & y(张)< = 0)
v = v + (- g - (b / M) * v - y (K2 / M) *(张))* dt;
(我)= y(张)+ v * dt;
标志= 1;
情节(dt *(张),y(张),的r *);
持有;
结束
如果(标志= = 1 & & y(张)< = 0.01)
v = v + v (g + (b / M) * + (K2 / M) * y(张))* dt;
(我)= y(张)+ v * dt;
国旗= 2;
情节(dt *(张),y(张),的r *);
持有;
结束
如果(标志= = 2 & & y(张)< = 0.01)
v = v + v (g + (b / M) * + (K2 / M) * y(张))* dt;
(我)= y(张)+ v * dt;
国旗= 0;
情节(dt *(张),y(张),的r *);
持有;
结束
xlim ([0, 4]);
ylim ([0, 2]);
结束
b和K值几乎已经确定。我在找一个图像这样:
但我得到这个:
建议/帮助将非常感激。提前谢谢!
1 Kommentar
Shrey Tripathi
Shrey Tripathi 我2023年6月14日
什么 BounceData 在您的代码中描述?它没有定义,请提供数据的格式,或其数据类型。

Melden您西奇,嗯祖茂堂kommentieren。

Antworten (1)

乔恩
乔恩 我2023年6月14日
Bearbeitet:乔恩 我2023年6月14日
首先我假设你被告知要使用简单的欧拉积分,如(n + 1) = y (n) + dy / dt * tStep,否则你可以使用例如MATLAB的ode求解器的。
给你使用欧拉集成,封包大小将需要使用一个更小的步骤,例如dt = 0.001
你不该阻尼项的符号切换基于是否压缩或膨胀,这将是考虑速度的符号。力产生的阻尼总是反对当前的发展方向。
你应该积累t、y numSteps 1中的数据向量,然后在您完成模拟的阴谋。
注意,当我试着修改上面的,我有一个衰减如预期反弹,但肝得健来休息后只有0.15 s, 4和反弹的幅度是打败。你似乎期望衰减时间更长,和更大的振幅。也许检查单位等质量,阻尼系数等
3 Kommentare
乔恩
乔恩 我2023年6月14日
Bearbeitet:乔恩 我2023年6月14日
糟糕,我只是意识到我没有从你y = 1的初始状态,这是纠正。请忽略我之前的评论振幅和持续时间
M = 0.057;
% % %推迟;
g = 9.81;
dt = 0.001;
tFinal = 4;
e5 y2 = 0 (1, 1);
v = 0;
国旗= 0;
b = 4.1892;
K = 1.5276 e + 04;
%新的k值? ? ? ? ? ? ?
K2 = K;
% % %等;
% % % = 2;
% BounceData追踪数据!
numSteps =圆(tFinal / dt);
t = 0 (numSteps, 1);% preallocate
y = 0 (numSteps, 1);% preallocate
y (1) = 1;
我= 2:numSteps
t (i) = t(张)+ dt;%增加时间向量
如果y(张)> 0
v =例如* dt;
(我)= y(张)+ v * dt;
国旗= 0;
% % %情节(dt *(张),y(张),r *);
% % %等;
结束
如果(标志= = 0 & & y(张)< = 0)
v = v + (- g - (b / M) * v - y (K2 / M) *(张))* dt;
(我)= y(张)+ v * dt;
标志= 1;
% % %情节(dt *(张),y(张),r *);
% % %等;
结束
如果(标志= = 1 & & y(张)< = 0.01)
% % % v = v + v (g + (b / M) * + (K2 / M) * y(张))* dt;
v = v + (- g - (b / M) * v - y (K2 / M) *(张))* dt;
(我)= y(张)+ v * dt;
国旗= 2;
% % %情节(dt *(张),y(张),r *);
% % %等;
结束
如果(标志= = 2 & & y(张)< = 0.01)
v = v + v (g + (b / M) * + (K2 / M) * y(张))* dt;
(我)= y(张)+ v * dt;
国旗= 0;
% %情节(dt *(张),y(张),r *);
% %等;
结束
% % % xlim ([0, 4]);
% % % ylim ([0, 2]);
结束
情节(t, y)

Melden您西奇,嗯祖茂堂kommentieren。

Kategorien

Mehr祖茂堂编程法登您在帮助中心文件交换

Produkte


版本

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的