这是我的图表。这个图表似乎不合理。虽然我努力设置vydot值的不同标志,但这不能正常工作。
from pylab import*
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import numpy as np
g=10
m=1
k=0.01
y=zeros([2])
vy0=0
vydot=200
vx0=0
vxdot=200
y[0]=vy0
y[1]=vydot
x=zeros([2])
x[0]=vx0
x[1]=vxdot
t=linspace(0,1000,5000)
def fy(y,t):
g0=y[1]
g1=-k*y[1]
return array([g0,g1])
def fx(z,t):
g0=-x[1]
g1=-k*(x[1])-g
return array([g0,g1])
ans1=odeint(fy,y,t)
ans2=odeint(fx,x,t)
ydata=(ans1[:,])
xdata=(ans2[:,])
plt.plot(ydata,xdata)
show()"""
答案 0 :(得分:0)
在空气中,与液体相反,子弹不仅沿着其路径移动体积,而且还增加了与速度成比例的被置换的空气分子的脉冲。因此阻力是
vn=sqrt(vx²+vy²)
dragx = -k*vn*vx
dragy = -k*vn*vy
因此使用
def f(z,t):
x,y,vx,vy = z
vn = sqrt(vx*vx+vy*vy)
return array([vx, vy, -k*vn*vx, -k*vn*vy-g ])
对于第一个概述,请考虑没有拖动的问题。然后解决方案是
x(t) = vx*t = 200m/s*t
y(t) = vy*t-g/2*t² = 200m/s*t - 5m/s²*t²
在x坐标y(t)=0
处t=2*vy/g
再次遇到 2*vx*vy/g = 8000m
。高度为t=vy/g
的{{1}}达到最大高度。