【Educoder python 作业答案】国防科技大学《大学计算机基础》Python入门-绘制炸弹轨迹 ※

【Educoder python 作业答案】国防科技大学《大学计算机基础》Python入门-绘制炸弹轨迹 ※

  • 第1关:绘制一个坐标点
  • 第2关:绘制n个坐标点
  • 第3关:绘制一条轨迹
  • 第4关:更简单的绘制一条轨迹
  • 第5关:绘制多条轨迹

第1关:绘制一个坐标点

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt     #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
for t in [10, 15, 20, 24]:
    xt = v0*t
    yt = h-1/2*g*t**2
    plt.ylim((0, 3000))
    plt.xlim((0, 5000))
    plt.grid('on')
    ######## begin ############
    # 请使用plot函数,绘制一个坐标点
    plt.plot(xt, yt, 'ro')
    ######## end ##############
    plt.savefig('./student result/%s秒后.png' % str(t))
    plt.close()

第2关:绘制n个坐标点

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt     #导入matplotlib.pyplot

h, v0, g = 3000, 200, 9.8
t, n = 0, 30        #n为要绘制的坐标点数量,假设为30
tmax = (2*h/g)**0.5
delta = tmax/(n-1)  #delta为相邻两时刻之间的间隔
while t<=tmax:      #t从0变到tmax,每次加delta
    ###### begin ##########
    # 请在此填写表达式,计算时间为t时,x轴与y轴的位置,并命名为xt与yt
    xt = v0*t  
    yt = h-1/2*g*t**2  
    ######### end ############
    plt.plot(xt,yt,'ro')
    t = t+delta
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result2/%s个点.png' % str(n))
plt.close()

第3关:绘制一条轨迹

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-')  
plt.grid('on')  
plt.axis([0, 5000, 0, h]) 
#### end ##############
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result3/轨迹.png')
plt.close()

第4关:更简单的绘制一条轨迹

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个点
delta = tmax/(n-1)  
T = [i*delta for i in range(n)]     #生成n个时刻  
########## end #################
xt = [v0*t for t in T]              #计算n个时刻的横坐标  
yt = [h-1/2*g*t**2 for t in T]      #计算n个时刻的纵坐标

plt.plot(xt, yt, 'r-')
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result4/轨迹.png')
plt.close()

第5关:绘制多条轨迹

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt     #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
for t in [10, 15, 20, 24]:
    xt = v0*t
    yt = h-1/2*g*t**2
    plt.ylim((0, 3000))
    plt.xlim((0, 5000))
    plt.grid('on')
    ######## begin ############
    # 请使用plot函数,绘制一个坐标点
    plt.plot(xt, yt, 'ro')
    ######## end ##############
    plt.savefig('./student result/%s秒后.png' % str(t))
    plt.close()

你可能感兴趣的:(Educoder实训,python)