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,因此第一个长度都不是
所以我正在尝试制作一个模拟自由落体的代码,除了代码从“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,因此第一个长度都不是