我有一项功能,意在模拟骨干的轨迹,基本考虑是电梯和拖拉。 弱肉体上的部队是电梯、拖拉和重力。 它有一个预先确定的发射角,即“theta_0”(指确定速度的角角)和角,其中描述了与横向“β”相对的星体。 之后,它每次都使用一个坡道来计算位置、加速速度和速度。 它把这些内容汇编在自己的清单中。 如果胎面达到(y[-1]<0),则停止模拟。 最后,我只希望交回分别称为x和 y的x和 y职位清单。 然而,这似乎并未奏效。 我略去了一些变数,这些变数在我的代码中较早界定,以保持该职位为比值。 职能中所看到的每个变量都应加以核算。
def trajectory(x_0,y_0,theta_0,v_0, r):
vx_0 = v_0*(math.cos(theta_0))
vy_0 = v_0*(math.sin(theta_0))
A = (math.pi*r**2)
ax_0 = 0
ay_0 = -1*g
t = [0]
x = [x_0]
y = [y_0]
vx = [vx_0]
vy = [vy_0]
ax = [ax_0]
ay = [ay_0]
for i in range(STEPS):
theta = math.atan(vy[i]/vx[i])
alpha = beta_0 - theta
CD = (0.085 + 3.30*(alpha - (-0.052))**2)
CL = (0.13 + 3.09*alpha)
t.append(t[i]+DT)
x.append(x[i]+vx[i]*DT)
y.append(y[i]+vy[i]*DT)
vx.append(vx[i]+ax[i]*DT)
vy.append(vy[i]+ay[i]*DT)
drag = float(((-1/2)*RHO*A*CD*alpha*vx[i]**2))
drag_x = float((drag*math.cos(theta)))
drag_y = float((drag*math.sin(theta)))
lift = float(((-1/2)*RHO*A*CL*alpha*vx[i]**2))
lift_x = float((lift*math.cos(theta)))
lift_y = float((lift*math.sin(theta)))
ax.append((1/m)*(-1*lift_x - drag_x))
ay.append((1/m)*(-m*g + lift_y - drag_y))
if y[-1]<0:
del(y[-1])
del(x[-1])
del(vx[-1])
del(vy[-1])
del(ax[-1])
del(ay[-1])
break
return x,y
trajectory(x_0,y_0,theta_0,v_0,r)
print (x)
上面的法典在试图打印时,将重复“x”这一错误。 如果我把X和 y的打印说明放在这一职能中,那么,这些声明是印刷的,但我想提出我的结果,因此,我需要选择把名单归还给我。 我知道该法典还有其他问题,但我现在不担心这些问题,我只想知道造成这一错误的原因是什么。 感谢!