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,无穷大]
我如何修改解决空气阻力下降的第一个问题?有什么建议么?
注意:我也尝试了一种简单的欧拉方法,但是错误不够准确
想改善这个问题吗? 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