运用matlab解决如下问题?

根据侦察,发现离我军大炮阵地水平距离 10km 的前方有一敌军的坦克群, 现欲发射炮弹摧
毁敌军坦克群。问题可简化为单门大炮对移动坦克的精确射击问题.假设炮弹发射速度可控
制在 0.2km/s 至 0.6km/s 之间. 在上述假设下,研究下列问题:
(1) 假定坦克在大炮前方 10km 处静止不动,炮弹发射的初速度为 0.32km/s, 请确
定发射角击中坦克,并画出炮弹运行动态轨迹图.
(2) 假定坦克在大炮前方 10km 处以每小时 50km 向大炮方向前进, 此时应如何
选择发射速度和角度,能够在最短时间内摧毁敌军坦克?
要求写出matlab代码。

题主的第一问,即炮弹运动轨迹问题,可以这样来处理:

1、根据炮弹运动轨迹的参数方程

x=v0*t*cosα

y=v0*t*sinα-0.5*g*t^2

消去t,求得 y(x)的表达式,即

y=x*tan(alpha)-0.5*g*(x/(v0*cos(alpha)))^2;

2、根据已知条件,

v0=0.32e3; %km/s

x=10e3; %km

使用vpasolve函数,求出alpha(发射角),即

alpha=vpasolve(y==0,[0,+inf]); %36.668°

3、利用x的参数方程,求得发射炮弹达到10km处的时间tm,即

tm=x/(v0*cos(alpha))

4、使用linspace函数,将t【t0,tm】分割成若干个等份,如50等份

t=linspace(t0,tm,50);

5、计算t对应的x、y值

6、使用plot函数,绘制炮弹运行动态轨迹图,即

plot(x,y)

xlabel('x(t)'),ylabel('y(t)')

7、完善上述代码,运行后得到如下运行动态轨迹图

追问

那么一开始是否是要将t和alpha作为变量?可以放出完善后的代码吗?我在将t和alpha作为变量输入后依旧无法通过plot函数输出图像。

追答

一开始只有alpha作为变量,用y=x*tan(alpha)-0.5*g*(x/(v0*cos(alpha)))^2;求出alpha

追问

十分感谢解答,但是在计算后不应该是会有两个角度符合条件吗,一个是36度即求出来的,另一张是53度,为什么在这里只能得出36度而筛掉了53度?

追答

这可能是vpasolve函数的bug

温馨提示:答案为网友推荐,仅供参考
相似回答