所以我试着做一个代码来模拟自由落体,除了代码从“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]
是:关键是
哪些是非零的
原因是你计算出加速度和时间步长的速度,第一步不是0,因此第一步的长度也不是
在第一个循环中,velocity1不是0,因此length1不是0
相关问题 更多 >
编程相关推荐