实验案例 预测战争模型
在第一次世界大战期间,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军队数量对比图):