Python:List的第一个术语不是从0开始的

2024-09-24 00:25:17 发布

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

所以我试着做一个代码来模拟自由落体,除了代码从“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秒后开始。你知道吗


Tags: 代码pltlengthtimesappendvelocitytimestepacceleration
3条回答

你可以用一些指纹来调试这个。通过沿着流程使用print,您可以看到正在发生的事情。你知道吗

没有什么奇怪的事情发生,l[0]是:

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

关键是

Dvelocity = acceleration * deltaT

哪些是非零的

原因是你计算出加速度和时间步长的速度,第一步不是0,因此第一步的长度也不是

在第一个循环中,velocity1不是0,因此length1不是0

相关问题 更多 >