簡體   English   中英

在Python中使用Euler方法調制對象的軌跡

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM