欧拉方法模拟终端速度不收敛?

时间:2017-03-12 19:52:08

标签: python-3.x

根据标题,我试图在Python 3中模拟跳伞运动员的体面。 我需要在运动体上使用Euler方法。图表绘制速度没有显示趋于终端速度的迹象,所以我显然做了一些非常错误的事情! enter image description here

对于故障查找,我已将t和速度值列表打印到屏幕上。下面是代码,对于返回值列表的函数,然后绘制它们。

def Euler_n2l(y_ini,v_yini):

    delta_t=float(input("Type time interval size (in s): "))
    t_n=0
    t_list=[0]
    y_list=[]
    v_list=[v_yini]

    #Calculating k from the specified parameters for: drag      coefficient, cross-sectional area and air density.
    k=(userC*rho0*ca)/2

    while (y_ini>0):                #Ending the simulation when the ground is reached
                t_n += delta_t
                v_yini -= delta_t*(9.81+((k/m)*(v_yini)**2))
                y_ini += delta_t*v_yini
                t_list.append(t_n)
                y_list.append(y_ini)
                v_list.append(v_yini)

                if y_ini < 0:
                    del t_list[-2:]
                    del y_list[-1]
                    del v_list[-2:]


     return t_list,y_list,v_list 

ca=0.96         #Approximation for an average human cross sectional area=1.6*0.6 m^2
userC=float(input("Type a value for the drag coefficient, C_d. Sensible values are from ~1.0 - 1.3: "))
rho0=1.2    #Value given the instruction for ambient temperature and pressure
m=80    #approx weight of a man in Kg

output=Euler_n2l(39000,0)
t_list,y_list,v_list=output


plt.plot(t_list,v_list)
plt.xlabel("$Time (s)$", size=12)
plt.ylabel("$Speed (m/s)$", size=12)
plt.show()

0 个答案:

没有答案