基本的Python弹球问题(可能还有嵌套循环?)

2024-04-25 13:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里要实现的是,创建一个球下落和反弹的轨迹,这个运动的方程是y,每次球反弹时,vu0变成e*vu0,或者之前的3/4。我开始计算y(t)而不反弹,让y为负,然后轨迹的负部分将被一个新的以反弹开始的轨迹所取代,它的vu 0将是之前的3/4,然后重复直到没有负的y值。(我尝试了一个嵌套循环,但我还没有真正弄清楚如何使用,我们不必使用嵌套循环,但我真的没有看到其他方法)。最后,我想用函数下面的t\u测试生成一个包含球的所有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))

Tags: 方法函数intestforreturn轨迹def
1条回答
网友
1楼 · 发布于 2024-04-25 13:20:16

下面是一个简单的模拟例子,一个球从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()

绘图 Simulation

相关问题 更多 >