原文作者,Alex Doak,伦敦大学学院流体力学博士。

翻译作者,溦之洸茫,哆嗒数学网翻译组成员。

校对,我是崔小白。

希腊:留克特拉 (公元前371年)

出于对至高权力的渴望,古希腊的各城邦总是在不断经历战火的洗礼。在一阵短暂的和平后,当时的霸权斯巴达公然挑战底比斯的政治地位。由于底比斯拒绝解散由其主导重建的彼奥提亚邦联同盟(Boeotian Confederacy),斯巴达对其宣战。底比斯城以及她的盟友聚集了7200名重装步兵(hoplites),由将军埃帕米侬达(Epaminondas)率领,来到了留克特拉的地界,在那里等待他们的是9600名斯巴达重装步兵。

此时斯巴达国王克莱奥姆波洛图斯(Cleombrotus)情绪十分阴郁,尽管近期在军事上有过胜利,然而在前往留克特拉的行军路上已经显现了凶兆,尤其是因为献祭给神灵的动物被狼吃了。然而在对手下各个将军进行询问之后,发现他们都确信斯巴达能够取得胜利。现在他召唤你这个奇怪的旅行者,希望通过你的惊人洞察力帮助他分析未来。

一对一战斗及兰彻斯特线性律

在所有的数学建模中,如果希望得到有意义的结果,我们必须理解所模拟战斗过程的基本机制。在这个例子中,我们需要对古希腊战争有更好的了解。希腊城邦的部队主要是有重装步兵组成。在战斗中,这些人采用的是‘臭名昭著’的方阵队列:士兵们组成数排密集的横向队列,手持长矛和盾牌迎击他们的敌人。每一支部队同时前行,最勇敢和最有战斗经验的军人是在前排,这样才能保证行进的队伍不会减速和逃窜。两军接触后,盾牌互砸,长矛互戳,血肉横飞,尸横遍野……最终,在经受一定的兵力损失后,一方的队形完全崩溃,士兵开始大量逃窜,最终不可避免地被击败。

对于这一类的战斗,兰彻斯特首次给出了一个简单的模型,他假设军队的交战是由一对一的形式进行的。也就是说,每名士兵只和与他对应的那一名敌军士兵交战,没有参与打斗的士兵在后排静静等待着他们战斗回合的到来。假设军队数量在时间t内是连续的。斯巴达军队士兵数S(t)及底比斯军队士兵数T(t)的变化率可以表示为:
 

其中,N指的是在某一时间双方各自的交战人数。我们已知克莱奥姆波洛图斯国王的方阵是由希腊重步兵组成的标准12排方阵,那么第一排就有9600/12=800人。同时,克莱奥姆波洛图斯国王认为底比斯军队为了避免侧翼被包抄,会采用同是每排800人的9排的方阵来迎击自己的军队。古希腊时期战斗的一个典型特点是伤亡相对较低,我们可以假设如果任意一方士兵数不足以维持6排阵列(即T<4800或S<4800),士兵就会产生恐慌情绪进而逃窜。

K_T和K_S分别表示两只军队的战斗力。如果K_T=1 (K_T表示K的下标是T,下文相应情况类似),意味着单位时间内,每一位在战斗的底比斯士兵都杀死了一名斯巴达士兵;如果K_T=0,表明没有底比斯士兵杀死斯巴达人。兰切斯特杀伤率(Lanchester attrition rates ,即K_T和K_S)不一定要为常数:它们可以是与时间有关的(战斗进行过程中士兵会变疲劳),或是依赖于S和T的数值(以寡敌众会扼杀士兵的希望,或是使它们更加拼命战斗)。不过,为了简单起见,我们认为这两个参数是常数。

那么问题来了:战斗中底比斯人的表现要比对手斯巴达人好出多少才能保证自己取得胜利?

我们建立的耦合系统非常容易求解,用(1)式除以(2)式,得到

对上式积分,并将S与T的初值带入,得到

请注意,上述方程体现了军队中士兵数和他们总的战斗力是呈线性关系的(即著名的兰彻斯特线性律)。这是因为我们采用了一对一的战斗模型假设。底比斯要取得胜利,换言之在某一时间t^*(t^*表示t的下标是*,下文相应情况类似),S(t^*)=4800且T(t^*)>4800,将S(t)=4800带入方程(4),并重新写出T的表达式,代入T(t)>4800,可以得到底比斯取得胜利的条件为

将这些信息呈给克莱奥姆波洛图斯国王,你除了看到他的自信之外并不能提供什么帮助:斯巴达人是当时最勇猛的战士,尽管他的盟军并不是这种最高质量的军队,那也没有理由认为他们会比底比斯的彼奥提亚联合军“弱”两倍。(译者注:这里的弱两倍指K_S/K_T<0.5,也就是K_T/K_S>2)

远程的战斗:瞄准火力和兰彻斯特平方律

尽管希腊战场主要是重步兵的舞台,双方军队还是会拥有一些轻装部队(通常来说是非希腊籍的雇佣兵),他们被称为轻装步兵,(peltasts,此文文中可理解为远程步兵)。他们携带标枪和投石索,在战斗中向敌人投掷射击。轻步兵主要用于袭扰敌人两翼,除了几个非常特殊的战例之外,他们对战局不起决定作用。同样,我们让斯巴达的500名轻步兵与底比斯1000名轻步兵交锋,看看会发生什么。

在这种场合下,我们用到的模型是兰切斯特瞄准火力模型。斯巴达轻步兵P(t)及底比斯轻步兵Q(t)的变化率可以表示为:
 

这是因为标枪手间的战斗不再是一对一了。相反地,所有士兵可以在同一时间向敌人射击。(译者注:这里的“一对一”不是强调是否是两个人的单打独斗,而是指同一时间能够向敌人攻击的人数,在前面(1)、(2)方程的耦合系统中,某一时刻在进攻敌人的人数为定值N,(5)、(6)方程中这个值是此时刻尚存的人数。这也就是线性律和平方律的本质区别所在。)因此,P的死亡率等于向他们射击的Q的数值乘以一个系数α。同样,这里的变量α_Q不一定为常数,通常来讲在非瞄准射击的情况下,它是与P(即Q可以攻击的目标数)成正比的。简单起见,我们依然认为这两个参数为常数。

将(5)式除以(6)式,得到

通过分离变量法解微分方程,并带入初始条件,得到

人数与总战斗力由线性关系变成了平方关系,这就是著名的兰彻斯特平方律。从这个等式中我们可以看出,数量要比质量更重要。比敌方人数少一半的斯巴达轻步兵的战斗效率要达到敌方的四倍(α_P/α_Q>4)才能与其打成平手。这些等式是在1916年第一次世界大战时推导出的,或许可以解释当时的人们对军事的一些想法。

战斗当天

部队:这是战斗中的一个传统,因为士兵的左手绑着盾牌,前进中他们会有向右偏移的趋势,将精锐部队放在右翼可以遏制这种趋势。埃帕米侬达将自己的精锐部队放在左翼,这样以来他可以尽快消灭斯巴达军队的精锐,以免拖到后期己方在人数上的劣势会成为大问题。

吃完早餐并享用了一点葡萄酒之后,克莱奥姆波洛图斯国王和他的军队来到了留克特拉的开阔平地。国王和他最勇猛的战士位于右翼。可以看到远处的底比斯人正在缓缓接近,扬起一阵尘土。遭遇战首先在两军的轻步兵之间展开,此时两军的重步兵间还有一段距离。随着底比斯军队的靠近,克莱奥姆波洛图斯国王发现不对劲:底比斯人不按套路出牌,在斯巴达军队的右翼方向聚集了一个50排的队列。这50排队列冲到了克莱奥姆波洛图斯国王所在的位置。开始并没什么作用:残酷的战斗是在前排进行的,正如兰彻斯特线性律,双方都死伤惨重。然而随着战斗的进行,很显然50人纵深的底比斯军队不可能被仅仅12排的斯巴达人打败。目睹了斯巴达精锐部队一点点消亡并最终溃散,斯巴达的友军也开始效仿,竞相逃离战场,尽管在此时他们面对的敌人数还是比己方少的。和很多斯巴达士兵一样,克莱奥姆波洛图斯国王也被杀死了,斯巴达在希腊的统治地位画上了一个血腥的句号。

对模型的一点说明

兰彻斯特方程是人口种群建模中非常简单的一个例子,在对很多其他‘捕食者-猎物相互作用系统(其中最经典的要算是狐狸和兔子)’的建模中也有类似的方程。当然完全不必局限于两个“物种”,“物种”也不一定非要为有生命的有机体。

这些方程看上去太简单了,以至于他们并不能真正反映战争的形态。其中最突出的弱点就是兰彻斯特杀伤率。把一支军队的能力简化为一个不依赖于时间和空间的常数,这个假设真的很难被人认可。况且,该模型还要求两方军队都是同类的(也就是说所有部队在计算中都要被认为是一致的)。同时,这也反映了埃帕米侬达的精明之处:他并不把敌人简单地看作清一色的9600名重步兵,而是看作一小队斯巴达人加上一大堆没什么大用的盟友。依靠“擒贼先擒王”的策略,埃帕米侬达在军队人数上的劣势就不是什么问题了。正如J-K Anderson所说:“战场上双方军队中相当大的一部分和观众没什么区别”。

尽管这个模型有着缺陷,但是平方律揭示了瞄准火力模型比一对一模型更加有趣的特性。在瞄准火力的攻击情况下,将人数较多的军队分为两部分,让人数较少的军队逐次和这两部分军队交战,那么人数较少的军队也会取得胜利。这种战术会在线性律的模型下失效:如果斯巴达的盟友并未逃离战场,那么历史可能会被重新书写!

我们是谁:

MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!

扫描二维码

关注更多精彩

扒一扒那些叫欧拉的定理们(九)——群论观点下的欧拉公式初步

Si Stebbins Stack中的数学与魔术(十一)——《Woody on Stebbins》作品赏析

袁亚湘院士上《开讲啦》变数学魔术啦!

如果道具不能检查,那就毁了它!(二)——一般道具篇

利息浅谈(七)——万物皆投资

点击阅读原文,往期精彩不错过!

血腥杀戮:数学建模还原古战场相关推荐

  1. 数学建模还原纸片matlab程序,碎纸片的拼接复原问题大学生数学建模全国一等奖论文.doc...

    碎纸片的拼接复原问题 摘要 为解决碎纸片的拼接复原问题,我们通过定义差异度指数.高度差,建立0-1规划模型,使用聚类分析.MATLAB搜索算法和人工干预等相结合,得到了所有附件复原序号和复原图片. 针 ...

  2. 简述数学建模的过程_数学建模研究过程指导:从高中数学体会数学概貌和数学建模...

    说明:此文稿为朱浩楠老师于2018年11月-12月北京地区联校数学建模活动的课题研究阶段中,每天一篇发布给各课题组的研究方法指导文件的汇总.为方便更多的同学参考使用,现调整为正序后通过遇见数学微信公众 ...

  3. (一)准备阶段 2019年研究生数学建模D题《汽车行驶工况构建》

    2019年研究生数学建模比赛,我们组选择的是D题目--<汽车行驶工况构建>. 选题分析 其实题目一发下来后,基本确定了这几个题目的已知条件.难易程度.问题结果要求等等,具体分析画了个思维导 ...

  4. 视频智能去水印:从数学建模到工程实现

    罗伟 网易资深研发工程师 先后参与KMS流媒体服务器及NTS分布式任务处理系统的开发 作者简介 大部分时候,为了表明作品来源,我们需要对拍摄制作的图片或者视频加上水印logo.不过,我们有时候也需要对 ...

  5. 论参加数学建模比赛的正确姿势

    论参加数学建模比赛的正确姿势 0前言 1摘要 2数学建模的相关研究基础 3合理的参赛姿势 4 实验 5 结论 0前言 小万是某211研究生在读,本科期间无任何相关竞赛经历,高考和考研数学也只是同辈中的 ...

  6. 数据预处理 拉依达准则 matlab,数学建模数据预处理.doc

    数据预处理 摘要 目前,大量研究工作都集中于数据挖掘算法的探讨,而忽略了对数据预处理的研究.事实上,数据预处理对数据挖掘十分重要,而且必不可少.要使数据挖掘出有效的知识,必须为其提供干净,准确,简洁的 ...

  7. 第二十四天:2019年第九届MathorCup高校数学建模挑战赛A题

    之前发了一篇文章,审核未通过- 不过没有关系,释然又双叒叕回来啦!这个暑假,数模.算法.名著.高数.英语都是不可辜负的哟! 今天是释然发题解的第二十三天,以后经常会和大家分享学习路上的心得,希望和大家 ...

  8. 数学建模重要算法简介及算法实现

    一.蒙特卡洛算法 1,定义:蒙特卡洛算法是以概率和统计的理论.方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解,故又称随机抽样法或统计 ...

  9. 灰色预测之GM(1,1),教你快速上手数学建模!

    灰色预测之GM(1,1)GM(1,1)GM(1,1),教你快速上手数学建模! 前言:在参加数学建模比赛时经常需要大家做预测,而我们常用的预测模型有回归分析预测模型.自回归移动平均模型.灰色系统预测模型 ...

最新文章

  1. 爱奇艺的架构到底有多牛?
  2. 开发日记-20190615 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  3. 【Linux 内核 内存管理】Linux 内核堆内存管理 ③ ( CPU 计数器瓶颈 | per-CPU 计数器 | Linux 内核 percpu_counter 结构体源码 )
  4. 如何做好性能压测(一)丨压测环境设计和搭建
  5. Linux下创建动态库与使用
  6. 如何设置Fedora默认从命令行启动?
  7. centos7 安装MyCli MySQL 客户端
  8. Mongodb密码安全设置
  9. 检测到 LoaderLock Message Microsoft.DirectX.dll”正试图在 OS 加载程序锁内执行托管代码。...
  10. 学习记录-操作系统知识(1)
  11. Robot Framework(十四) 扩展RobotFramework框架——创建测试库
  12. openjudge1.2
  13. RGB转YCbCr422_BT709颜色空间转换仿真
  14. 【DL】第3章 使用词嵌入计算文本相似度
  15. 电容单位F法拉、mF毫法、纳法nF、皮法pF之间是如何转换
  16. 如何键盘锁定计算机,如何锁定电脑键盘或鼠标防止误操作
  17. Unity Shader学习-单张纹理
  18. 转]自己开心一下!!!很轻松的~
  19. MySQL入门系列:查询简介(二) 过滤数据
  20. CentOS8下载及设置安装源(最新设置)

热门文章

  1. CURL伪造IP和来路,还可以进行投票
  2. JS 文件上传/下载
  3. android 选择年月日历,Android_java万年历,获取该年月日历表,这篇文章应用java技术输入年份 - phpStudy...
  4. oracle vm virtualbox 增加硬盘空间,virtualbox增大虚拟磁盘空间的方法
  5. win2012 r2 php mysql,在Windows Server2012 R2上安装WordPress PHP和MYSQL
  6. Linux下如何用命令查看内存占用情况!(建议收藏)
  7. 从零开始实现 Spring Boot 简易读写分离,其实也不难嘛!
  8. 1、什么是Internet
  9. Linux_脚步命令
  10. 花几十万在城隍庙“元宇宙“烧香祈福:都是什么人?图个啥?