[英]Modulating object's trajectory with Euler method in python
我嘗試使用Euler方法來調制對象的軌跡。 當我輸入45度時,看起來程序可以工作,但是使用其他任何值都無效(我不確定它是否可以在45度時工作,但至少看起來像軌跡)。 也許有人可以看到我在做什么錯,這是我的代碼:
import numpy as np
import matplotlib.pyplot as plt
dt=0.005 # step
t=0
X=[0]
Y=[0] # X and Y are arrays for storing coordinates
x=0
y=0
v=10 # initial velocity
F=100 # force given to object
m=10 # object's mass
r=1.5 # viscosity
alpha=float(input())
vx=v*np.cos(np.rad2deg(alpha)) # projections to axises
vy=v*np.sin(np.rad2deg(alpha))
Fx=F*np.cos(np.rad2deg(alpha))
Fy=F*np.sin(np.rad2deg(alpha))
while t<20: # Euler method
ax=(Fx-r*vx)/m # F=ma, F=-rv so a=(F-rv)/m
ay=(Fy-r*vy)/m
vx=vx+ax*dt
vy=vy+ay*dt
x=x+vx*dt
y=y+vy*dt
X.append(x)
Y.append(y)
t=t+dt
if y<0:
break
plt.plot(X,Y)
plt.autoscale(enable=True,axis='both',tight=None)
plt.xlabel(X)
plt.ylabel(Y)
plt.show()
輸入45度后會得到以下結果:
現在看來可以正常工作了,我忘了加F = mg:
ax=(Fx-r*vx)/m
ay=(Fy-r*vy-m*g)/m # g=9.8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.