我要在此处实现的目标是创建一个球下落并弹回的轨迹,该运动的方程式为y,每次球反弹时,v_0变为e * v_0或之前的3/4。我先计算y(t)而不会跳动,让y变为负值,然后轨迹的负部分将被以反弹开始的新轨迹替换,其v_0为之前的3/4,然后重复直到没有负y值为止。 (我尝试了一个嵌套循环,但是我还没有真正弄清楚如何,我们不必使用嵌套循环,但是我真的看不到另一种方式)。最终,我想使用函数下方的t_test生成一个球的所有y数组。
def traj_y_bounce(t, v_0, y_0=0, e=0.75):
y = y_0 + v_0 * t - (1/2)*g*(t**2)
return y
# for i in range(len(y)):
# while y[i] < 0:
# y[i] ==
# return y
#t_test = np.linspace(0,5,10)
#print(traj_y_bounce(t_test, 4))
最佳答案
这是一个从高度h掉落的球的简单模拟示例
def traj_y_bounce(tmax, v0, y0, e0=0.75):
g = 9.9 # meters/s/s
y = [y0] # heights over time
dt = 0.01 # integrate in hundredths of a second
v = v0
t = 0
while t <= tmax:
if y[-1] <= 0 and v < 0:
v = -e0*v # reflect off ground
v = v - g*dt # integrate velocity
y.append(y[-1] + v*dt) # integrate position
t = t + dt # integrate time
return y
y = traj_y_bounce(5, 0, 10)
%matplotlib notebook
import matplotlib.pyplot as plt
plt.plot(y, linewidth=4, label='height')
plot.show()
情节