我试图找出垂直随着阻力下降的球形粒子的垂直速度Vy如何随时间t而变化。我想生成一个值列表,列出从发布时间到某个t_max以及绘制Vy与时间之间的几个时间点的Vy。
我给出的解决ΔVy的等式是:
dVy = -g*dt - (b/m)*Vy*dt
“代码应该询问m,g,b和Δt的值。一旦定义了这些值,代码应该为每个时间t提供一系列Vy值。”
到目前为止,这是我的尝试:
import numpy as np
import matplotlib.pyplot as plt
import math
g = 9.81 #acceleration due to gravity
b = 1.6*10**-8 #linear drag coefficient
m = 1.04*10**-9 #mass of particle
dt = 10**-3 #time step
t_max = 10 #final time
t = 0 #initial time
Vy = 0 #initial velocity
t_list = [t]
Vy_list = [Vy]
dVy = -g*dt - (b/m)*Vy*dt
while t <= t_max:
t += dt
Vy += dVy
t_list.append(t)
Vy_list.append(Vy)
print(t, Vy)
plt.plot(t_list, Vy_list)
plt.show()
我不确定它产生的值是否正确,考虑到无论我将质量设置为什么尺寸,速度的变化都保持不变,因为我预计它会对速度产生相当大的影响,因为无限小质量。
我承认我正在复制一个解决方案,这个解决方案是为了一个完全不同的问题而给我的,但我是否正确地认为一个while循环是要走的路?
答案 0 :(得分:1)
您需要在while循环中更新dVy:
while t <= t_max:
dVy = -g*dt - (b/m)*Vy*dt
t += dt
Vy += dVy
否则它将是一个常数,而不会像你期望的那样随时更新。