python基础练习三
第三题
已知某型迫击炮发射初速度为300m/s, 炮弹飞行过程中无动力,不考虑空气阻力,重力加速度取9.8m2/s。在不同的角度下,炮弹落地的时间与飞行的位置都不一样。本题通过编程绘制角度分别为[30, 45, 60, 75]度时的炸弹轨迹。其中函数calBombT\frace(theta)计算炮弹飞行过程中n个位置坐标,时间样本为均匀分配。你的任务是补充完整该程序代码。
计算逻辑示例如下(编程时不需要取整):
当角度为为30度时,炸弹空中飞行时间约为30.6s,
若取5个均匀的时间样本,分别约为[ 0, 7.6, 15.3, 22.9, 30.6 ]
则对应的x坐标则为[0,1988, 3976, 5964, 7953]
对应的y坐标则为[ 0, 860,1147, 860, 0 ]
代码实现
def calBombTrace(theta):
v0, g, n = 300, 9.8, 30
theta_d = np.radians(theta) #因numpy中cos、sin的输入为弧度值,故先将theta从度转换为弧度
v0_x = v0*np.cos(theta_d) #炮弹水平初速度
v0_y = v0*np.sin(theta_d) #炮弹垂直初速度
tmax = 2*v0_y/g #落地时间,即v0_y*t-0.5gtt=0的解
t = np.linspace(0, tmax, n) #n个时刻
xt = v0_x*t #n个时刻的横坐标
yt = v0_y*t-1/2*g*t**2 #n个时刻的纵坐标
return xt, yt
for theta in [30, 45, 60, 75]:
# 调用函数,得到theta返回的值,并存储到xt与yt变量
xt,yt=calBombTrace(theta)
plt.plot(xt, yt)
plt.grid('on')
plt.axis([0, 10000, 0, 5000])
plt.savefig('./src/step4/res/轨迹.png')
plt.close()
print([round(x,6) for x in xt])
print([round(x,6) for x in yt])
相关推荐
matplotlibTrain (1).html python-matplotlib的一些小练习——东北大学大数据班数据挖掘实训Python基础三
python-matplotlib的一些小练习——东北大学大数据班数据挖掘实训Python基础三 题目:练习使用matplotlib 包中的方法绘图。 1.通过pandas包将数据scmd_CalculationData.csv读入,从中取出winddirection和windspeed1这2个字段,绘制风速与风向的散点图(风向为横轴,风速为y轴)。(要求:有标题(风速与风向的函数)、横纵坐标的标题、设置网格,保存图片文件命名为1风速与风向的函数.png) 2.通过pandas包将数据scmd_CalculationData.csv读入,从中取出windspeed1、power_max、power_min、power和power_dev这5个字段,绘制功率特性的散点图(风速为x轴,其他为y轴)。(要求:有标题(功率特性散点图)、横纵坐标的标题、图例、设置网格,保存图片文件命名为2功率特性散点图.png) 3.通过pandas包将数据bz_df_wt.csv读入,从中取出bin_bz_fs<=20的数据,然后取出实际风速bin_bz_fs和实际功率bin_bz_power;再读入bzglqx.csv取出保证风速fs和保证功率gl,绘制功率曲线的对比图(一张图中绘制,横轴为风速,纵轴为功率)。(要求:有标题(实测与设计功率曲线对比)、横纵坐标的标题、图例、设置网格,保存图片文件命名为3实测与设计功率曲线对比.png)
Python编程 基础练习(三)
python编程 基础训练 1. 根据输入的日期,计算该日期是这一年的第几天 2. 猜数游戏 3.输入一组数到列表nums,请找到列表中任意两个元素相加能够等于9的元素,形成一个元组,使其小数在前大数在后,如:(2,7),(1,8)。重复的元组元素只保留一个,结果按元组第一个元素从小到大顺序输出 4. 求输入一组数据的平均值、方差、中位数 5. 打印九九乘法表 6. 求方程的解
Python程序设计基础教程思考与练习三.pdf
思考与练习三 1. 在例 3-2 里, 把判定条件 ch=='y' or ch=='Y'写成 ch = 'y' or ch = 'Y'对吗? 2.假定初始时有 x=5、y=8,有程序段 如下: if (y == 8): if (x == 5): print ("@ @ @ @ @\n"); else: printf ("# # # # #\n"); printf ("$ $ $ $ $\n"); printf ("& & & & &\n"); 编写者忘记了应该在什么地方缩进和回 退位置。 在不准移动语句上下顺序的前提下, 调整语句的缩进和回退位置,使上述程序段 输出以下 3 种不同的结果: (1)@ @ @ @ @ $ $ $ $ $ & & & & & (2)@ @ @ @ @ (3)@ @ @ @ @ & & & & & 3.利用 for 循环和函数 range(),编写 一个程序,求数值 1~10 的和。 4.利用 for 循环和函数 range(),编写 一个程序,求 2~100(包含 100)的所有 偶数之和(注意函数 range()里对终值 stop 的设置) 。 5.在例
python基础练习题100.pdf
python基础练习题100
python练习题100题.zip_KBL_Python 练习册_Python初学习题_python习题_python计算题
这是我初学Python时的练习,有题目,有代码,适合初学者练习


