为下一个循环使用循环的上一个值

2024-10-04 03:22:48 发布

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

我是一个非常新的编码和我目前正试图使一个火箭飞行模型。在模型中需要计算火箭的速度,但因此我需要知道由火箭速度决定的空气阻力。所以我的问题是,我试图计算一个值,我需要这个值本身。我对这个问题的解决办法是取以前的速度值来确定空气阻力并计算新的速度。我的h(身高)也需要这样做

速度=((火箭筒-(火箭筒阻力+火箭筒重力)/m)t

这是我用来计算速度的公式

F\结果=F\火箭-(F\阻力+F\重力)

T0 = 288.15 #temperature needed for the air density
q1 = -0.0065 #constant
e = 2.718281828459
p0 = 101325 #base pressure
g = 9.80665 # gravity 
R = 287.00 # gas constant
G = 6.67259 * (10 ** -11) # gravity constant
m1 = 5.972 * (10 ** 24) #mass earth
m2 = 0.070 #mass rocket (mini plastic rocket)
rAarde = 6371000 #radius earth
Cw = 0.14
A = 0.00053913
F_Rocket = 0.22
t = 0 # this is time

while t <= 50: #the while loop is expressed in time
    T1 = T0 + q1 * (h - h0)
    print('T1 = ', T1, 'K')
    p1 = p0 * ((T1 / T0) ** ( -g / (q1 * R)))
    rho1 = p1 / (R * T1)
    F_Drag = 0.5 * A * Cw * rho1 * (v_old ** 2) # This v needs to be one from the previous loop, I will also need some starting point
    v_new = ((F_Rocket - (F_Drag + F_Gravity) / m) * t
    h_new = v_old * t
    F_Gravity = G * ((m1 * m2) / (rAarde + h_old))
    print(Drag1, 'N')
    print(rho1, 'Kg m^-3')
    print(p1, 'pa')
    t += 1;

我只需要得到前面答案的值,就像在递归公式中一样。如果有人能告诉我怎么把它编码,那就太好了


Tags: the模型编码速度oldt1printconstant
1条回答
网友
1楼 · 发布于 2024-10-04 03:22:48

while loop之外初始化速度变量(vel)。只有在计算F_Drag之后才将其更新为新值

vel = 0   # pick an appropriate starting value

while t <= 50:
   ....
   F_Drag = 0.5 * A * Cw * rho1 * (vel ** 2)        
   vel = ((F_Rocket - (F_Drag + F_Gravity) / m) * t
   ....

现在,每次进入循环vel都将是先前为F_Drag计算的值,然后使用F_Rocket公式更新它

相关问题 更多 >