物体下降100米。它需要多长时间才能下降100米

时间:2012-03-31 22:11:54

标签: python math physics

我需要用基于重力影响空气阻力的python代码来解决这个问题 y“= g - (1/70)*(y')^ 2,g = 9.8,y(0)= 0,y'(0)= 0

我使用Euler-Heun方法解决了类似的问题 y“= y - (1/10)* y',y(0)= 0,y'(0)= 1,[0,无穷大]

我如何修改我要解决的第一个空气阻力下降问题?有什么建议吗?

h= 0.0001
y = 0.0
t = 0.0
v = 1.0

while y >= 0:
    ym = v*h+y
    vm = v - h*(y +v*0.1)
    y = y + 0.5*h*(v+vm)
    v = v - 0.5*h*(y + ym + 0.1*(v + vm))
    t += h

    error = abs(1.0 - y/ym)
    if error > 1.0e-8:
        h*=0.1
    if error < 1.0e-10: 
        h*=1.1

        print y, v, t

注意:我也试过一个简单的euler方法,但错误不够准确

delta_t = .000001  #time step size
y = 0.         #initial height
g = 9.8        #gravitational acceleration
t = 0.         #initial time
y_prime = 0.   #initial velocity
y_2_prime = g  #initial acceleration

while y < 100:
    y = y_prime * delta_t + y
    y_prime = y_2_prime * delta_t + y_prime 
    y_2_prime = g - 0.014285714* y_prime**2
    t = t + delta_t 
print t

1 个答案:

答案 0 :(得分:3)

你可以使用Runge-Kutta方法,它基本上是一个更高阶的Euler方法。您可以查看Wikipedia以获取更多相关详细信息。这很常见,所以你不应该在谷歌搜索它并找到一些关于如何实现它的好例子。

还有其他方法,但大多数人(至少那些开始ODE整合的人)就像Runge-Kutta。