Python: 列表的第一项不是从 0 开始

Python: List's first term does not start at 0

所以我正在尝试制作一个模拟自由落体的代码,除了代码从“1”而不是“0”开始外,它几乎全部完成了。我的代码是:

def simulateFreeFall(mass,deltaT,simulationTime):
    acceleration = 9.81
    velocity = 0
    length = 0
    velocity1 = 0
    length1 = 0
    times = []
    l = []
    v = []
    a = []
    x = 0
    timeStep = simulationTime / deltaT
    while x < timeStep:
        elapsedTime = deltaT * x 
        Dvelocity = acceleration * deltaT
        velocity1 = Dvelocity + velocity
        velocity = velocity1
        v.append(velocity1)
        a.append(acceleration)
        Dlength = velocity1 * deltaT
        length1 = Dlength + length
        length = length1
        l.append(length1)
        times.append(elapsedTime)
        x += 1
    plt.plot(times, l, 'rs')
    plt.title("Free Fall - No Friction")
    plt.xlabel("Time")
    plt.ylabel("Fall Length")
    plt.grid(True)
    plt.show()
    print(l[0])

simulateFreeFall(70,0.01,60)

当我 运行 代码列表“ l ”中的第一个长度是 0.000981 而不是 0 时,我不确定我做错了什么,从技术上讲它应该在 0.01 之后开始秒。

您可以使用一些打印件来对此进行调试。通过在流程中使用 print,您可以看到发生了什么。

没什么奇怪的,l[0] 是:

l[0] = length1 = Dlength + length = velocity1 * deltaT + lenght = 
= (Dvelocity + velocity ) * deltaT + lenght 

关键是

Dvelocity = acceleration * deltaT

非零

第一次循环中velocity1不为0,所以length1不为0

原因是你根据加速度和你的时间步计算速度,这在第一步中不是 0,因此第一个长度都不是