3.某轰炸机在h=3km的高空以200m/s的速度水平匀速飞行,到达A点是投下一枚无动力炸弹,不考虑空气阻力,重力加速度g的值取9.8,我们可以通过如下公式得到炸弹在任意时候的位置。
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
n = 30
xt, yt = [], []
tmax = (2*h/g)**0.5
delta = tmax/(n-1)
for i in range(n):
t = delta*i
xt.append(v0*t)
yt.append(h-1/2*g*t**2)
#### begin ###########
# 请使用plot函数绘制一条线
plt.plot(xt,yt,'r-')
#### end ##############
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result3/轨迹.png')
plt.close()
使用Python的特性与numpy库, 简化绘制炸弹飞行的轨迹的方法。
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g, n = 3000, 200, 9.8, 30
tmax = (2*h/g)**0.5
########### begin ##############
# 请使用numpy的linspace函数,在[0, tmax]上平均取30个点
t = np.linspace(0, tmax, n) #在[0, tmax]上平均取n个点
########## end #################
xt = v0*t #计算n个点的横坐标
yt = h-1/2*g*t**2 #计算n个点的纵坐标
plt.plot(xt, yt, 'r-')
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result4/轨迹.png')
plt.close()
5.某轰炸机在高空匀速飞行,到达A点是投下一枚无动力炸弹,不考虑空气阻力,重力加速度g的值取9.8,我们可以通过如下公式得到炸弹在任意时候的位置。
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
def calBombTrace(h, v0):
g, n = 9.8, 30
tmax = (2*h/g)**0.5
t = np.linspace(0, tmax, n)
xt = v0*t
yt = h-1/2*g*t**2
##### begin ############
# 函数bia返回xt,yt
return xt, yt
###### end #############
H, V0 = [3000, 2000], [200, 260]
for h in H:
for v0 in V0:
xt, yt = calBombTrace(h, v0)
plt.plot(xt, yt)
plt.grid('on')
plt.axis([0, 6500, 0, 3000])
plt.savefig('./student result5/轨迹.png')
plt.close()