Matlab课程设计

发布 2022-10-01 01:50:28 阅读 6888

绪论。1.1 课题的背景。

在科技日益发展的今天,数学不仅在我们生活的各个方面发挥着重要的作用,而且无论人类在太空宇宙还是海底地层所得到的任何成果都离不开数学精确地计算和**。相同的,在军事领域,瞬息万变的战场上,任何一丝差错都将造成惨重的后果,因此,在优化战略方针,以最低代价获取最大战果,亦或在危机时刻巧妙摆脱困境中,充分借助数学模型起到了至关重要的作用。为了充分展示数学模型的效果,我们将借助导弹追踪问题来**简单的数学模型的方法。

在这一过程中,我们将重点侧重于用matlab对导弹和舰艇运动轨迹的模拟,来反映整个运动过程。并在这个基础上,**舰艇的最佳逃逸角度。

1.1.1 误差**与分类。

用计算机解决科学计算问题首先要建立数学模型,它是被描述的实际问题进行抽象、简化而得到的,因而是近似的。我们把数学模型与实际问题之间出现的这种误差称为模型误差。具体包括:

1.截断误差。

当数学模型不能得到精确解时,通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差或方法误差[1]。

2.舍入误差。

有了求解熟悉问题的计算公式后,用计算机作数值计算时,由于计算机的字长有限,原始数据在计算机上会产生误差,计算机过中又可能产生新的误差,这种误差成为舍入误差[1]。

3.本实验课题特有的误差。

针对导弹追踪这一问题,由于使用的时间这参量无法做到连续变化,取定的时间步长受计算机性能的限制而无法做到充分精确而产生的误差。另外,在判定导弹击中的条件也受计算机性能的限制而与实际问题产生不可避免的误差。

1.2 研究的目的。

1. 通过课题的研究,了解掌握并matlab的使用方法,和运用。

2. 巩固对matlab的学习。

3. 体验数学模型在实际运用过程中的效果和作用。

4. 通过课题的研究,锻炼思维、设计和创新能力。

针对导弹追踪问题的研究。

2.1 课题内容与研究方法。

a方导弹基地发现正北120km处海面有敌对方舰只正以90km/h的速度向正东方行驶,该基地立即发射导弹跟踪追击。已知导弹速度为 450km/h ,导弹的制导系统能使导弹在任何时刻都对准敌舰飞行。

1) 试模拟导弹与敌舰的运动轨迹,根据模拟结果,导弹在何时何处击中敌舰?

2) 如果在a方发射导弹的同时,敌舰的预警设备能立即察觉,它马上以 135km/h 的速度沿垂直于导弹飞行的方向逃逸。模拟导弹与敌舰的运动轨迹,根据模拟结果,导弹在何时何处击中敌舰?

3) 如果敌舰的速度不变,它的运动方向与导弹飞行方向成多大夹角时有利于其逃逸?

问题的总体思路是取定时间步长,然后使用迭代法来模拟导弹和舰艇的运动路线。只要取定的时间步长精度足够高,那么整个模拟与实际情况就越吻合。

2.2 问题的细致分析和设计计算。

2.2.1 问题一。

在敌舰未发现导弹袭来的情况下,模拟运动轨迹。这一部分的设计思路比较简单,舰艇方向固定始终向右行驶,导弹方向始终指向舰艇,并且我们易知其方向向量始终在第一象限,与x轴正向方向夹角:

余弦值ccos1)

正弦值ssin2)

导弹点的移动3)

导弹点的移动4)

取定时间步长h=0.0001,设导弹坐标为点(x,y),导弹点分别在每一个时间步长之内其x(k)和y(k)产生一个与速率相应的位移长度,(x(k),y(k))每运动一个时间步长之后,变为点(x(k+1),y(k+1)),并循环。舰艇是以90km/h匀速向东行驶,定位坐标(90*k*h,120),由于导弹方向时刻指向舰艇,我们判定当导弹的纵坐标达到120时,导弹击中舰艇。

matlab程序**如下:

clear;clc;

h=0.0001时间步长。

k=1;t(1)=0;x(1)=0;y(1)=0; %初始值。

while y<=120

x(k+1)=x(k)+450*h/sqrt(1+((120-y(k))/90*t(k)-x(k)))2导弹x(k)标位移。

y(k+1)=y(k)+450*h/sqrt(1+((90*t(k)-x(k))/120-y(k)))2导弹y(k)标位移。

t(k+1)=h*k; %时间累计。

k=k+1;

endplot(x,y,x(1):0.05:x(end),120作图。

x=x(end输出。

y=y(end);

t=t(end);

得到运行结果:

x = 17.5281

y = 120.0140

t = 0.1945

图2.2.1-1追击过程。

由图2.2.1-1得到轨迹和**的运行结果,可见导弹在距离a基地向东约17.5公里,向北约120公里处,约0.19小时后击中舰艇。

2.2.2 问题二。

在a方发射导弹的同时,敌舰的预警设备能立即察觉,它马上以 135km/h 的速度沿垂直于导弹飞行的方向逃逸。模拟导弹与敌舰的运动轨迹,根据模拟结果,导弹在何时何处击中敌舰?

这一问是建立在上一部分的基础上进行研究,整体思路与之相似,仍然采用时间迭代法进行模拟。但由于舰艇开始逃逸并垂直于导弹方向,两者的运动轨迹则更发杂,原本只需要考虑的坐标点变成了两个,并且要求更高的时间精度。在此,基于导弹高速的飞行速率,我们取定时间步长h=0.

000003即千分之1.03秒,并以当舰艇和导弹之间距离小于1米时,我们判定导弹击中舰艇。

我们确定导弹和舰艇的坐标分别为(x1(k),y1(k))和(x2(k),y2(k)),我们定义ccos和ssin分别为导弹方向和x轴夹角的余弦值和正弦值(不考虑正负),并在其后以x1(k)和x2(k)以及y1(k)和y2(k)的关系确定正负。为避免两点出现水平和竖直时的情况,我们以将导弹移动百万分之一个单位来避免0分母的发生。

导弹的移动与上一部相同(见公式(1)(2)(3)(4)) 设其x轴正向方向夹角余弦值为ccos,正弦值为ssin。而舰艇则有很大的变化。

舰艇点的水平移动。

舰艇点的竖直移动。

而由集合关系我们可以得到。

matlab程序**如下:

clear;clc;

h=0.000003时间步长。

k=1;t(1)=0;x1(1)=0;y1(1)=0;x2(1)=0;y2(1)=120时间、坐标的初值。

while sqrt((x1(k)-x2(k))^2+(y1(k)-y2(k))^2)>0.001判定导弹击中的条件。

if x1(k)-x2(k)==0消除0分母。

x1(k)=x1(k)-0.000001;

elseif y1(k)-y2(k)==0,y1(k)=y1(k)-0.000001;

end ccos=1/sqrt(1+((y2(k)-y1(k))/x2(k)-x1(k)))2导弹方向和水平夹角的余弦值。

ssin=1/sqrt(1+((x2(k)-x1(k))/y2(k)-y1(k)))2导弹方向和水平夹角的正弦值。

x1(k+1)=x1(k)+450*h*ccos*(x2(k)-x1(k))/abs(x2(k)-x1(k));x1(k)向x1(k+1)增量。

y1(k+1)=y1(k)+450*h*ssin*(y2(k)-y1(k))/abs(y2(k)-y1(ky1(k)向y1(k+1)增量。

x2(k+1)=x2(k)+135*h*ssin*(y2(k)-y1(k))/abs(y2(k)-y1(kx2(k)向x2(k+1)增量。

y2(k+1)=y2(k)+135*h*ccos*(x2(k)-x1(k))/abs(x2(k)-x1(k))*1; %y2(k)向y2(k+1)增量。

t(k+1)=h*k; %时间累计。

k=k+1;

endplot(x1,y1,x2,y2作图。

x1=x1(end);

y1=y1(end);

x2=x2(end);

y2=y2(end);

t=t(end);

x1,y1,x2,y2,t

得到运行结果:

x1 =33.0281

y1 =110.0920

x2 =33.0276

y2 =110.0916

t =0.2667

图2.2.2-1整个导弹追击的过程图2.2.2-2在30km~35km的放大显示。

图2.2.2-3 在33.00km~33.06km的放大显示图2.2.2-3 放大到33.024km~33.032km的显示。

这一程序的运行十分复杂,需要高效能cpu作支持才能得到结果,由于硬件设备的限制和**优化的不足,整个运算在千分之1.03秒和1米的精确度下经过2分45秒的计算才得到结果。matlab作图如下所示,由于这一问题涉及到的运**像十分复杂,因此我们将它逐步放大显示追击的细致过程。

观察图2.2.2-1到图2.

2.2-4,其中在图2.2.

2-4中我们能看到,此时的坐标的精确度已经精确到0.001公里即1米的距离,而两条曲线的终端余力已经小于0.001,由我们最初的定义可知导弹在此时击中舰艇。

再联系之前运行得到的结果,我们可以得出如下结论:导弹约在坐标(33.028,110.

092)处经过0.267小时击中舰艇。

2.2.3 问题三。

如果敌舰的速度不变,它的运动方向与导弹飞行方向成多大夹角时有利于其逃逸。

这一问题又是在上部分的基础上的高阶应用,我们可以看到其中的难度。在这个程序的设计中,仍然继续采用时间迭代法,但在这里它已不再是主角了。要靠计算机找到最佳的逃逸角度p,需要从0度开始以,并取定相应的角度步长,直到为止。

至此找到的最佳角度的精确度还和角度步长相关。

每取定一个角度q值,就采取一次类似于上一步骤的模拟,。。这样,在q取完所有夹角步长后,得到recordbestq的即为最佳逃逸角。

MATLAB课程设计

1 求被控对象传递函数g s 的matlab描述。num 789 6312 11835 den 1 14 56 64 0 0 gs tf num,den transfer function 789 s 2 6312 s 11835 s 5 14 s 4 56 s 3 64 s 2 2 求被控对象脉冲...

MATLAB课程设计

课程设计。题目 matlab计算器。姓名 班级 学院 专业 完成时间。1总体设计。该计算器程序主要是matlab来制作,界面主要由四个静态文本框 21个运算按钮和两个动态文本框组成。实现的运算功能有四则运算 加 减 乘 除。而且添加了括号使人们使用时更加简单。这些计算功能主要调用了matlab的自定...

MATLAB课程设计

matlab课程设计。如图所示,为测量系统的示意图,它由两个能相互转动的连杆,角度编码器和滚轮等组成。o1为固定点,o2点为转动点,o3点为滚轮的中心,连杆的有效长度分别为l1和l2。任一位置时,连杆1相对于某基准位置的角度为 1,两连杆的相对角度为 2。其中对于 1,取垂直方向为基准线,在基准线左...