matlab实验案例 预测战争模型

2019-08-30 14:02

实验案例 预测战争模型

在第一次世界大战期间,F.W.Lanchester提出了预测战争结局的数学模型。根据战争的不同特性,他给出了三种作战模型。在建立模型时,简化了许多因素,模型变得简单,但仍有一定的实际意义。

现考虑X、Y两方孤立交战的部队,双方均无增援部队的情况。希望为这场战斗建立一个数学模型,应用这个模型达到如下目的:

1.预测哪一方将获胜?

2.估计获胜的一方最后剩下多少士兵?

3.计算失败的一方开始时必须投入多少士兵才能赢得这场战斗? 4.战斗的持续时间。

假定X部队t时刻存活的士兵数为x(t),而Y部队在t时刻存活的士兵数为y(t),将x(t)与y(t)都看作连续变量。并假定双方所有士兵不是战死就是活着参加战斗,即不考虑俘虏和伤员。

关于双方的作战伤亡情况,一种合理的假设是,在Δt时间内,X部队被杀死的士兵数Δx将取决于Δt的长短,以及在Δt起始时刻与其交战的Y部队的士兵数。假定是一种正比关系,即

Δx=-ayΔt

其中a是一个常数,,代表了Y部队的战斗力,称为“杀伤率”,更明确地说,a是Y部队的一个士兵在单位时间内杀死X部队的名士兵数。类似地,对于Y部队有

Δy-axΔt

令Δt?0,得到两个微分方程

dx??ay, ( a>0) dtdy??bx, ( b>0) dt从而得到联立微分方程组如下:

?dx(a?0),?dt??ay,??dy??bx,(b?0) (6.3.4) ??dty(0)?y0.?x(0)?x0,?? 对联立微分方程组(6.3.4)中的任一方程进行积分,直接求出方程的解是很困难的也无必要。

根据作战的实际背景,可以分析出以下几点:方程组里的变量满足x≥0,y≥0,有唯一平衡点(0,0); x(t),y(t)都是递减函数,且随着x,y的减小,其衰减速度也在降低。

在我们的模型中,若有一方部队的士兵数为零,就标志着战斗的结束。 将两个方程相除消去时间变量t,得

dybx? dxayybxd x可分离变量 ayd?对两边积分得到

ay2bx2c?? 222或者 ay?bx?c

代入初始条件,有

22ay02?bx02?c

22 a(y2?y0)?b(x2?x0) (6.3.5)

在相平面(xy平面)上,轨线是双曲线的一部分。

为预测何方部队获胜,将剩下多少士兵,先考虑一种特殊情况。战斗开始时双方投入兵力满足 ay0?bx0,解曲线方程(6.3.5)化为

bx a方程的轨线是一条过原点,斜率为b/a的直线,称为等战斗力直线。这种情况下,战斗将无情地从(x0,y0)点进行到(0,0)点,表明这是一场势均力敌的,导致相互毁灭的战争。

22若ay0,可从相位图观察到点(x0,y0)位于等战斗力直线的左上方,?bx022 ay2?bx2 或 y?可以判断Y部队将获胜,在轨线方程中令y=0可以验证这个结论,若令x=0 , 得

22y?(ay0?bx0)/a,

即为根据模型预测出的Y部队获胜时的幸存士兵数。

如果战败的一方希望转败为胜,那么开始他们应投入多少兵力呢? 现假设双方初始兵力分别为x0=10000,y0=5000,,假设在一个小时(单位时间)内每个Y部队的士兵杀死0.15个X部队士兵,而X部队的每个士兵在一个小时内杀死0.1个Y部队士兵,则方程组(6.3.4)为

?dx?dt??0.15y,??dy???0.1x,(6.3.6) ?dt,y(0)?y0?5000,?x(0)?x0?10000??22)2?3.75?106,bx0?0.1?(10000)2?10?106,有 由于ay0?0.15?(500022bx0?ay0?0,模型预测X部队将获胜,Y部队若要获胜最初投入兵力y0必须

b2b20.1122满足y0?x0,即应满足:y0?x0??100002??108或 y0>8165。

aa0.153怎样估算战斗的持续时间不太容易,现在先不去求解方程组,用分析方法做

出估计。

dy??0.1x0??1000, dtt?0意味着战斗开始时Y部队的士兵以每小时1000人的速度被歼灭,如果一直持续这种速度,仔细思考实际情不会如此,因为X部队的士兵数也在减少,故战斗至少持续5000/1000=5(小时)。

战斗结束时X部队余下的士兵数为

22(bx0?ay0)/b?10?106?3.75?106?7906名。

此时,Y军队士兵被歼灭的速度为 dy??0.1?7901??790.1 dt结束 这是Y部队士兵被歼的最慢速度,若保持不变,有

y =-790.1t + 5000,

令y=0, 解得t=5000/790.1≈6.32小时,应为Y部队被歼灭的最长时间。分析结果表明,战斗会持续5~6.32小时,取中间值约为5.7小时。

通过求解微分方程组可得到确切的答案。将方程组(6.3.6)的第一个方程

两边微分,得

?2dy?2??0.15,?dtdt? dy???0.1x.??dtd2x?0.015x?0 dtdx把其中的第二个方程代入第一方程,有

二次积分得到方程的解为

x?Ae0.015t?Be?0.015t,t≥0, (6.3.7)

其中A和B是积分常数,代入初始条件x0=10000,y0=5000,并令t=0,有

A+B=10000 (6.3.8)

对解函数(6.3.7)两边求导

dx?0.015[Ae0.015t?Be?0.015t],t≥0 dt1dx1dx 因 y?? y0??

0.15dt0.15dtt?00.015(A?B) (6.3.9) 0.15 联立求解(6.3.8)和(6.39),解得A≈1938.14,B≈8061.86。

在任意时刻Y军队的士兵数为

1dxy(t)??

0.15dt 5000?y0???0.015[1938.14e0.015t?8061.86e?0.015t],t≥0, 0.152t0.015b??4.16,解得t≈5.82小时,证明我们前面估算 令y=0 ,算得ea的战斗持续时间相当准确。

前面已得出Y部队要赢得这场战斗,开始时必须再增加3165名士兵。假定战斗开始后的某个时刻到达增援部队(如空降伞兵),设在任一时刻使Y部队战斗力发生改变从而赢得胜利所需的增援人数为N ,则

?N?可以算出以下结果 战斗持续时间t(小时) 增援士兵数N(个)

bx?y?a0.1x?y 0.0150 1 2 3 4 5 3165 3577 4043 4570 5166 5839

1.1 基础

1.1.1 数值微分举例

dy?f(t) 微分方程dt则可得

dy?f(t)dt

则利用微分一阶近似计算(即泰勒一阶展式):

dy?f(t)?t?y(t??t)?y(t)

y(t??t)?y(t)?f(t)?t 特别的,若令ti?1?ti??t,

y(ti?1)?y(ti)?f(ti)?t

1.2 战斗模型的求解

要讨论的问题:

1. 这个模型怎么理解?

2. 模型怎么求解?(解析解还是数值解)

3. 结果的图形表示:采用哪些图形来表现结果?

1.2.1 运行情况1(a=0.4,b=0.10,delta_t = 0.3)

观察战斗持续了多长时间?

给定一组数据后图形(随时间t的变化):

给定一组数据后图形(X,Y军队数量对比图):


matlab实验案例 预测战争模型.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:历史学习困境及其原因与学生的应对策略

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: