我在这里尝试实现的是创建一个球落下并反弹回来的轨迹,运动的方程是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))发布于 2019-10-08 13:41:59
这是一个从高度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()绘图

https://stackoverflow.com/questions/58280477
复制相似问题