@cyy652415049
2016-04-08T19:18:52.000000Z
字数 5052
阅读 5464
作者:陈洋遥
学号2013301020169
更新时间:20160403
本次作业是为编写程序解决抛体运动问题。抛体运动是我们熟知的经典问题,在不计入空气阻力时,其运动方程十分简单,可以直接积分求解;但若引入空气阻力,则使抛体的运动方程变得十分复杂,一般只能数值的求解;特别是当计及空气阻力形式与海拔高度等复杂因素的关系时,抛体运动方程将更加复杂,我们将利用欧拉方法求解其运动方程。
另外,研究抛体运动对于炮弹轨迹、姿态问题具有重要意义。为使模型简化,我们暂不考虑炮弹的大小,只将其作为抛体质点处理,并利用此模型研究炮弹飞行射程对初速和发射角的依赖关系。我们利用数值方法计算靶位任意时欲命中靶所需的初速度或发射角,并估计命中靶位所需的最小初速度。相应的习题由课本Problem2.9和2.10给出。
抛体运动是牛顿运动方程处理力学问题的典范。在不计入空气阻力的情况下,抛体只受到重力,因而其运动规律由牛顿运动方程给出
上面的方程形式较为复杂,适宜用数值方法求解,我们这里使用课本上介绍的欧拉法来求解上面的方程。将二阶方程降阶,并将微分近似以差分代替,即得到近似描述抛体运动的四个代数方程
运动方程的解
空气阻力使得抛体(这里不妨取作炮弹)的运动情况变得复杂,但并不会为数值求解炮弹的抛体运动带来多大麻烦。我们利用欧拉法求解炮弹抛体运动的差分方程即可得到炮弹运动的解,程序在github中给出(ch2_projectile_20160402.py)。我们取炮弹初速度为,抛射角时绘出其运动图像如下图1左图所示。
图1 有空气阻力时的抛物运动
计算时,初速度取700m/s,发射角度取45°,来研究数值解对步长的依赖性,以及有、无空气阻力时解的差别
数值收敛性分析
由于我们仅仅对方程进行数值求解,而数值步长是决定解的好坏的决定性因素。如背景中所说,过长的步长将会使解显著偏离真实运动,而过长的步短则会使计算缓慢。我们逐步减小步长取值,直到解不显著依赖于步长选取为止,如上图1中图所示。我们取步长分别为 , , , , ,可以发现随着步长减小,抛体运动轨迹形态逐渐发生变化,当步长取到 和时,两者轨迹不再有明显差别,因此可以断定
恒定出射速度时的中靶问题
下面就先考虑炮弹出膛速度恒定,而炮队位置和靶位任意给定时,以何种抛射角发射才能命中目标的问题。我们仍然利用欧拉法求解炮弹抛体运动的差分方程得到炮弹运动的解,程序在github中给出(ch2_projectile_target_20160403.py)。我们还是取炮弹初速度为时给定不同炮队位置和靶位的计算结果,如下图2所示。由具体计算和对图分析可以得到
python
的计算精度即可。 图2 恒定出射速度时的中靶问题
计算时,初速度取700m/s,设置不同的靶位以及炮弹出射位置,来获取发射所需要的出射角度
出膛速度可变时最小发射速度问题
若炮弹的出膛速度可以变化,则可以寻找一个最小的出膛速度来命中目标,这样可以节省火药。我们仍然利用欧拉法求解炮弹抛体运动的差分方程得到炮弹运动的解,程序在github中给出(ch2_projectile_target_minvelocity.py)。这里,我们不仅要对炮弹的初速度进行扫描,还要对炮弹的发射角进行扫描,以求得命中靶位的最小所需发射速度及相应的发射角,如下图3所示
图2 出膛速度可变时最小发射速度问题
计算时,初速度和发射角均不确定,通过类似“二分法”的方法,逐次缩小扫描范围,来获得发射所需初速度和抛射角
可以看到,对于任意靶位,当炮弹出射速度可以变化时,仍然可以扫描各种发射情况(初速度、发射角)来命中目标所需最小发射速度及相应的发射角,这里,因为要对发射的两个参数同时扫描,因而命中的圆周误差上限是,要提高精度只需增加扫描迭代次数和计算精度即可。
本次作业讨论了空气阻力存在时炮弹飞行轨迹问题,讨论了欧拉法解炮弹轨迹问题的数值解收敛性问题,分析了有、无空气阻力时炮弹轨迹差异,并将此方法联系到实际的辅助精确打击系统,分别给出了炮弹出膛速度确定时发射角问题,炮弹出膛速度不定时最小抛射速度问题。本程序的方法和结果将对炮弹发射问题具有一定的借鉴意义。
[1] 计算物理;Nicholas J. Giordano, Hisao Nakanishi
[2] 数值分析;李庆阳,王能超
[3] 常用数学符号的LaTex表示方法,http://www.mohu.org/info/symbols/symbols.htm
[4] matplotlib-绘制精美的图表,http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html