python中用Euler方法调整目标轨迹

2024-04-27 04:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用欧拉方法来调整物体的轨迹。当我输入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度时得到的结果:

Screenshot


Tags: toimportalphaobject轨迹asnpdt