网站大量收购闲置独家精品文档,联系QQ:2885784924

狼追击兔子的问题.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
狼追击兔子的问题

狼追击兔子的问题 1.1 问题重述与分析 狼追击兔子问题是欧洲文艺复兴时代的著名人物达.芬奇提出的一个数学问题。当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。狼在追赶过程中所形成的轨迹就是追击曲线。狼是否会在兔子跑回洞穴之前追赶上兔子? 为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。 1.2 变量说明 :兔子的速度(单位:码/秒) :狼与兔子速度的倍数; :狼的速度(单位:码/秒),显然有 :狼追击兔子的时刻(t=0时,表示狼开始追兔子的时刻) :在时刻t,兔子跑过的路程(单位:码), :在时刻t,狼跑过的路程(单位:码), Q:表示在时刻t时,兔子的坐标 P:表示在时刻t时,狼子的坐标 1.3 模型假设 狼在追击过程中始终朝向兔子; 狼追击兔子的轨迹看作是一条光滑的曲线,即将动点P的轨迹看作一条曲线,曲线方程表示为。 1.4 模型建立 (一)建模准备 以t=0时,兔子的位置作为直角坐标原点,兔子朝向狼的方向为x轴正向; 则显然有兔子位置的横坐标。 对狼来说,当x=100,y=0,即 在t=0刚开始追击时,狼的奔跑方向朝向兔子,此时即x轴负方向, 则有 (二)建立模型 1、追击方向的讨论 由于狼始终朝向兔子,则在狼所在位置P点过狼的轨迹处的切线方向在y轴上的截距为。 设切线上的动点坐标为(X,Y),则切线方程为 (1) 在(1)中,令X=0,则截距。 此时。 则此时截距等于兔子所跑过的路程,即: , 从而可得 (2) 2、狼与兔子速度关系的建模 在t时刻,兔子跑过的路程为 (3) 由于狼的速度是兔子的r倍,则狼跑的路程为 (4) 狼跑过的路程可以用对弧长的曲线积分知识得到,如下。 (5) 联立(2)、(4)、(5)得 (6) 对(6)两边求对x的导数,化简得 (7) 微分方程(7)式的初始条件有: 3、是否追上的判断 要判定狼是否追上兔子, 可以通过(7)式判定。 对(7)式, 当x=0,如果计算求解得到,则视为没有追上; 当x=0,如果计算求解得到,则视为兔子被追上; 1.5 模型求解 由微分方程得到其Matlab函数 function yy=odefunlt(x,y) %以狼在追击过程中的横坐标为自变量 yy(1,1)=y(2); yy(2,1)=sqrt(1+y(2).^2)./(2.*x); 主程序: tspan=100:-0.1:0.1;%以狼的x坐标为自变量 y0=[0 0]; %下面只知道狼是否追上兔子,但是不易推得兔子刚刚到达窝边时,狼与兔之间的距离 [T,Y] = ode45(odefunlt,tspan,y0); n=size(Y,1); disp(狼的坐标(x=0.1)) disp(Y(n,1))%通过追击曲线计算当狼的横坐标为0.1(即tspan=0.1)时,狼的纵坐标 1.6 模型结果与分析 运行结果: 狼的坐标(x=0.1) 62.1932 通过上面运行结果可知,狼并没有追上兔子。 1.7 思考题 通过上面的结果已经知道狼并没有追上兔子。那么兔子跑回窝边时,狼与兔子之间的距离是多少?上面的程序不能解决此问题,那么用什么办法解决呢? (一)解决思路 可以对狼与兔子的追击过程通过计算机进行模拟,然后从模拟结果获取。 模拟程序如下,程序文件名sim_langtu.m: function sim_langtu %《狼兔追击问题》 %(离散模拟) %这里没有具体考虑狼、兔的具体速度 %主要通过二者的速度倍速关系及方向向量奔跑过程 Q=[0 0];%兔子坐标 P=[100 0];%狼坐标 PQ=Q-P;%狼兔方向向量 step =1;%模拟步长:兔子奔跑的距离,step越小就越精确 count = 60/step;%以兔子的奔跑距离划分 PQ=PQ/norm(PQ)*step;%归一化,单位向量 trackP=P; trackQ=Q; for k=1:count; P = P + 2*PQ;%2倍速度 Q = Q + step*[0 1];%[0 1]为兔子奔跑方向的单位方向向量 PQ = Q - P; trackP(1+k,:)=P; trackQ(1+k,:)=Q; PQ=PQ

文档评论(0)

daoqqzhuan3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档