Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        7年前关闭。
                                                                                            
                
        
我需要使用基于重力受空气阻力影响的假设的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


注意:我也尝试了一种简单的欧拉方法,但是错误不够准确

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

最佳答案

您可以使用Runge-Kutta方法,该方法基本上是高阶Euler方法。您可以检查Wikipedia以获得更多详细信息。这确实很常见,因此您不必在Google上进行搜索并找到一些实现它的良好示例,就不会遇到任何麻烦。

还有其他方法,但是大多数人(至少是那些开始进行ODE集成的人)都像Runge-Kutta。

关于python - 物体掉落100 m。下降到100m需要多长时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9960150/

10-11 17:03