mathematica软件解决实际问题——田忌赛马

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用mathematica解田忌赛马

一、问题描述:我国古代有“齐王赛马”的典故,说的是战

国时代的齐王与其大将田忌赛马,双方约定各出上、中、下3个等级的马匹进行比赛,这样共赛马3次,每次比

赛的败者付给胜者一百金。已知在同一等级马的比赛

中,齐王之马稳操胜券,但田忌的上、中等级的马可以

分别胜齐王的中、下等级的马。还是同样的马匹,由于

调换一下比赛的出场顺序,就得到转败为胜的结果。二、问题分析:在《运筹学基础》里我们学过对策论来解决

这类问题

通过对比发现,齐王获胜机会有5次,而田忌仅仅只有一次,此为运筹学对策论解释。。

三、问题求解:在mathematica里,编写一下程序:

上马 = 3;

中马 = 2;

下马 = 1; (“比赛时就是比马的速,大者获胜”)

单挑[甲马_Integer, 乙马_Integer] :=

Which[甲马 > 乙马, 甲胜, 甲马 < 乙马, 乙胜, True, 平局];(“齐威王、田忌决定的赛马出场次序”)

齐威王队 = {上马, 中马, 下马};

田忌队 = {下马, 上马, 中马};

MapThread[单挑, 齐威王队, 田忌队]

(“完整的比赛函数,它给出最然是哪个齐获胜”)比赛[{甲队名称_String, 甲队_}, {乙队名称_String, 乙队_}] :=

Module[{结果}, 结果 = MapThread[单挑, 甲队, 乙

队];

Which[Count[结果, 甲胜] > Count[结果, 乙胜], 甲

队名称 <> "胜利!",

Count[结果, 甲胜] < Count[结果, 乙胜], 乙队名称

<> "胜利!", True, "平局"]];

比赛[{"田忌队", 田忌队}, {"齐威王队", 齐威王

队}]

运行程序及结果如截图:

最终用mathematica求出比赛结果。

相关文档
最新文档