美文网首页个人专题Python建模与NLP工具癖
Python数学建模极简入门(六)--差分方程组

Python数学建模极简入门(六)--差分方程组

作者: dalalaa | 来源:发表于2016-11-28 19:46 被阅读468次

    前面已经讲过了差分方程,那差分方程组是个啥就不用我介绍了吧。

    今天为大家带来一个差分方程组解实际问题的例子:

    特拉法尔加海战

    背景介绍来自于百度百科--特拉法尔加海战

    此战中,法西联合舰队主帅为维尔纳夫,英国舰队主帅为纳尔逊。

    开战初期,法西联合舰队有战列舰33艘,可谓势均力敌,英国有战列舰27艘。两个舰队战力差距并不大,甚至法西联军还有一定优势。

    但是最后的结果却是法西联军大败,从此一蹶不振。

    我们来分析一下,究竟是为什么会出现这样的结果:

    1. 我们假设所有战斗均是刚正面,没有偷袭。转换成数值之后即是:每一阶段战斗中每一方战舰损失量都是对方的5%(分数值也是有意义的,表示有一艘或多艘战舰不能全力以赴地参加战斗);
    2. 不死不休,每次战斗兼职的标志为某一方军舰数量少于2;

    法西联军舰队分为三个战斗编组,编组A有3艘战舰;编组B有17艘战舰;编组C有13艘战舰。

    而英军方面,纳尔逊选择的策略是先用13艘战舰去进攻旗舰编组A;战斗之后,留存下来的军舰加上备用的14艘军舰一起去迎战编组B;最后所有剩下的战舰去迎战编组C。


    第一战

    首先来分析第一次战斗,即英军13艘战舰迎战法西联军旗舰编组A:
    在第n个阶段的战斗之后,各方剩余的战舰数量为:
    ![](http://latex.codecogs.com/gif.latex?\Large B_{n+1} = B_n - 0.05F_n)
    ![](http://latex.codecogs.com/gif.latex?\Large F_{n+1} = F_n - 0.05B_n)
    Python代码如下:
    <code>
    import matplotlib.pyplot as plt
    import matplotlib
    def Battle(BritishWarship,FrenchWarship):
    Britain = []
    France = []
    count = []
    stage = 0
    Britain.append(BritishWarship)
    France.append(FrenchWarship)
    count.append(0)
    while FrenchWarship > 2:
    BritishWarship = BritishWarship - 0.05 * FrenchWarship
    FrenchWarship = FrenchWarship - 0.05 * BritishWarship
    stage += 1
    Britain.append(BritishWarship)
    France.append(FrenchWarship)
    count.append(stage)
    plt.scatter(count,Britain)
    #plt.scatter(count,France)
    plt.show()
    Battle(13,3)
    </code>

    图像如下:

    英国战舰 法西战舰

    英国战舰数量:13->12.85->12.73
    法西战舰数量:3->2.36->1.72


    第二战

    英国舰队数量:14 + 12.73 = 26.73
    法西舰队数量:1.72 + 17 = 18.72

    结果如下:

    英国战舰 法国战舰

    英国战舰数量:26.73->25.79->24.92->24.11->23.36->22.67->22.04->21.46->20.94->20.46->20.04->19.67->19.35->19.07->18.85->18.67->18.54
    法西战舰数量:18.72->17.43->16.18->14.97->13.81->12.67->11.57->10.50->9.45->8.43->7.42-> 6.44->5.47->4.52->3.58->2.64->1.72


    第三战

    哈哈,第三战结果如何呢??

    ** 实际上当时法国在第二战之后就将C编队的13艘战舰全部撤回了法国 。**

    如果打下去结果如何,小伙伴们可以自己算一下,很简单的。

    这种军事策略这样分析看起来很简单,就像田忌赛马一样,以强搏弱。

    相关文章

      网友评论

      本文标题:Python数学建模极简入门(六)--差分方程组

      本文链接:https://www.haomeiwen.com/subject/utlopttx.html