[关闭]
@amaoaaaa 2017-10-19T15:35:31.000000Z 字数 1748 阅读 105

work_4th chapter 2 NO 2.10

St: Wenya Wu 201530102016 WHU

"Generalize the program developedffor the previous problrm so that it can deal with situations in which the target is at a different altitude than the cannon. Consider cases in which the target is higher and lower than the cannon. Also investigate how the minimum firing velocity required to hit the target varies as the altitude of the target is varied."


综述

  • 本题旨在改变target的位置,寻求最佳初射角度使得cannon shell以最小初速度击中不同位置的target.设置不同target的位置是首要任务.
  • 但不妨加入空气阻力以及空气密度随海拔高度的变化.

公式及思路说明

欧拉法的计算公式




中可变的量有常数空气密度

计算过程

  • 选定炮弹发射初始值(初始速度、发射角度等)及时间间隔Δt
    无阻力的形式:
    设置初始速度,分别做出发射角度为30°,45°,60°,无阻力情况下的轨迹
  • 确定落点位置(以位置作为循环语句的截至条件)
    无阻力的情况 (代码)
    photo
  • 设置阻力的形式(两种密度随高度变化的模式)

    1. 阻力系数为常数时,分别设置不同阻力系数,初速度,初射方向45°,质量保持
      (代码)
      photo
    2. 空气密度按等温模型,已知
      由于量级很大,所以在低海拔时与阻力系数为常数的情况并基本无差别,增大初射速度和角度之后,出现明显差异。(代码)
      低海拔:
      photo
      高海拔:
      photo
      3.空气密度按绝热模型,与等温模型的情形类似(代码)
      photo
  • “击中target”的最初设想:

    1. 确定target的位置,例如设定为
    2. 循环条件变为当前坐标值与target的位置差大于等于0.5m;
    3. 确保持发射初始速度不变,设置角度列表(30°至60°,每次增加1);
    4. 利用For循环嵌套while循环的方式计算出每个角度对应的轨迹距离target的最小值,组成列表delta,之后再建立列表theta记录每次For循环的角度,画出theta-delta图像,求出最小值对应的
      (代码)但这个方案完全失败了!!!!
      (一开始参考了丁冬冬学长求最远不同初射条件下最远射程的代码,基本上除了在while循环里面添加了距离的列表之外基本没有区别,但不知道为什么运行结果中,最小距离的列表始终只有一个固定值,有感觉while循环根本就没执行,但这个固定值又很奇怪,计算过也不像是循环没有执行之类的。。搞不定啊。。。
      同样,考虑固定发射角度,改变初速度时又遇到问题,希望是用距离来选定,但。。。failed
      更不用说要怎样达到最终的目的:再明确target的位置情况下找出最小出射速度和与之相应的发射角度了。。。设想是三层的循环嵌套,先筛选出每个角度对应的“可达目标速度”,之后再对比这些速度看哪个最小。。。事实是。。。循环语句都写不出来。。。想太多。。。)
      以下是失败的结果图:
      image
  • 最终还是选择了手动改变出射速度和角度,以坐标x值小于target的x坐标为while循环条件,每次计算出最小距离,再对比。。。
    设置target
    在保持出射速度为50m/s的前提下:出射角度为°时距离target最近:
    image
    在保持出射角度为45°的前提下:出射速度为m/s时距离target最近:
    image

总结

本次作业完成的仍不理想,尤其没有达到最终目标:明确target位置的情况下确定最小出舍速度,但自己循环语句写的都有问题,更不用谈好几个循环的嵌套了。。。
唉。。。
真的菜鸟,就像我一样

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注