您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 猎狗追兔子数学实验报告
数学实验报告—猎狗追赶兔子模型实验一.实验问题有一只猎狗在B点位置发现了一只兔子在正东北方距离它200米的地方O处,此时兔子开始以8米/秒的速度向正西北方距离为120米的洞口A全速跑去,假设猎狗在追赶兔子的时候始终朝着兔子的方向全速奔跑,用计算机仿真法等多种方法完成下面的实验:(1)问猎狗能追上兔子的最小速度是多少?(2)在猎狗能追上兔子的情况下,猎狗跑过的路程是多少?(3)画出猎狗追赶兔子奔跑的曲线图。(4)假设在追赶过程中,当猎狗与兔子之间的距离为30米时,兔子由于害怕,奔跑的速度每秒减半,而猎狗却由于兴奋奔跑的速度每秒增加0.1倍,在这种情况下,再按前面的(1)—(3)完成实验任务。一.问题的分析模型求解(1)求解析解有方程:{dp√1+p2=rdxx,p(c)=0解该变量分离方程得p+√1+p2=(xc)r,等价地亦可转换为P-√1+p2=−(cx)r从而可得{dydx=12[(xc)r−(cx)r]y(c)=01)当r1时,方程的解为y=c2[11+r(xc)r−11−r(cx)1−r]+cr1−r2,此为猎狗追赶兔子的路线函数。当x=0时,猎狗追上兔子,猎狗走过的距离为y=cr1−r2,追赶时间为t=ya=cra(1−r2)=bc(b2−a2).2)当r=1时,方程的解为Y=12(x2−c22c−clnxc),3)当r1时,方程的解为y=c2[11+r(xc)1+r+1r−1(cx)r−1]−𝑐𝑟𝑟2−1,(2)用MATLAB软件求解析解在MATLAB软件命令窗中执行命令Dsolve(‘Dy=1/2*((x/c)^r-(c/x)^r)’,’y(c)=0’,’x’)得方程的解析解为ans=1/2*exp(-r*(log(c)-log(x)))*c^r*(1/c)^r/(r+1)*x+1/2*exp(r*(log(c)-log(x)))/((-1+r)*x-1/2*c*(-(1/c)^r*c^r+c^r*(1/c)^r*r+r+1)/(r^2-1)(3)用MATLAB软件求数值解先生成初值问题的函数文件。Functiony=hs(t,y)Y=8/18*((t/3)^(8/18)-(3/t)^(8/18))保存为hs.m,然后在MATLAB软件命令窗中用二三阶龙格——库塔算法计算初值问题的数值解。执行命令Ode23(‘hs’,200,0.0005,0)若选用四五阶龙格——库塔算法解初值问题,则执行命令Ode45(‘hs’,200,0.0005,0)最终得到猎狗的坐标。此次问题可以选用计算机仿真饭显然可以将事件坐标转换到第一象限内,设兔子初始位置O为(0,0),运动方向为沿x轴正方向,速度为a。洞口A坐标为(0,120)。猎狗初始位置B为(200,0),运动速度为b。𝐭=𝒕𝒌时兔子坐标为(0,tzy),猎狗坐标为(lgx,lgy)。追赶的方向可以用方向余弦表示:cos𝛼𝑘=0−𝑙𝑔𝑥√(0−𝑙𝑔𝑥)2+(𝑎∗𝑡𝑘−𝑙𝑔𝑦)2,sin𝛼𝑘=𝑎∗𝑡𝑘−𝑙𝑔𝑦√(0−𝑙𝑔𝑥)2+(𝑎∗𝑡𝑘−𝑙𝑔𝑦)2,取时间步长为Δt,则在时刻t+Δt时,猎狗位置可表示为𝒍𝒈𝒙𝒌+𝟏−𝒍𝒈𝒙𝒌=∆𝒍𝒈𝒙𝒌=𝒃∆𝒕𝐜𝐨𝐬𝜶𝒌,𝒍𝒈𝒚𝒌+𝟏−𝒍𝒈𝒚𝒌=∆𝒍𝒈𝒚𝒌=𝒃∆𝒕𝐬𝐢𝐧𝜶𝒌。仿真算法:第一步:设置时间步长为Δt,速度a,b,猎狗跑过的路程s初始化为0,初始位置;第二步:由𝒕𝒌猎狗与兔子的位置坐标计算二者在𝒕𝒌+𝟏=𝒕𝒌+∆𝒕时的坐标(𝒍𝒈𝒙𝒌+𝟏,𝒍𝒈𝒚𝒌+𝟏)和(𝒕𝒛𝒙𝒌+𝟏,𝒕𝒛𝒚𝒌+𝟏):𝒍𝒈𝒙𝒌+𝟏=𝒍𝒈𝒙𝒌+𝒃∆𝒕𝑡𝑧𝑥−𝑙𝑔𝑥√(𝑡𝑧𝑥−𝑙𝑔𝑥)2+(𝑡𝑧𝑦+𝑎∗∆𝑡−𝑙𝑔𝑦)2,𝑙𝑔𝑦𝑘+1=𝑙𝑔𝑦𝑘+𝑏∆𝑡𝑡𝑧𝑦+𝑎∗∆𝑡−𝑙𝑔𝑦√(𝑡𝑧𝑥−𝑙𝑔𝑥)2+(𝑡𝑧𝑦+𝑎∗∆𝑡−𝑙𝑔𝑦)2,𝑡𝑧𝑘+1=0,𝑡𝑧𝑦𝑘+1=𝑡𝑧𝑦𝑘+𝑎∗∆𝑡,并在图中标出改点。𝒔𝒕𝒌+𝟏=𝒔𝒕𝒌+𝒂∗∆𝒕。第三步:计算猎狗与兔子之间的距离𝒅𝒌=√(𝒍𝒈𝒙𝒌+𝟏−𝒕𝒛𝒙𝒌+𝟏)𝟐+(𝒍𝒈𝒚𝒌+𝟏−𝒕𝒛𝒚𝒌+𝟏)𝟐,如果𝒅𝒌小于事先设定的距离(就是认为猎狗追上兔子之间的距离),则退出循环,否则让时间产生一个步长,返回第二步继续进行下一次循环。第四步:当循环成功退出后,𝒕𝒛𝒚𝒌+𝟏为兔子被捉时跑过的距离,通过改变猎狗的速度b使其等于120,此时的b即为猎狗能追上兔子的最小速度,𝒔𝒕𝒌+𝟏为猎狗跑过的路程,由第二步中所标出的点构成的图即为够追兔子奔跑的曲线图。2.问题(4)的分析过程与前三问类似,只需在第三步中增加一个对𝒅𝒌的判断,当𝒅𝒌小于等于30米时,Δt每增加一秒分别对a、b进行一次修正,即a=a/2,b=1.1*b。三.程序设计的流程1.取时间步长为0.1,当猎狗与兔子相距小于等于0.3米时视为追上。问题(1)~(3)的程序(此为对猎狗速度b进行多次修正后的程序):当猎狗速度为15m/s时:c=200;a=8;b=15;lgxb=[];lgyb=[];tzxb=[];tzyb=[];d=1;dt=0.1;t=0;lgx=c;lgy=0;tzx=0;tzy=0;holdonaxis([0,200,0,150])title('猎狗追兔子')text(0,120,'洞口A')text(200,0,'B')text(0,0,'O')while(sqrt((lgx-tzx)^2+(lgy-tzy)^2)d)t=t+dt;lgx=lgx-b*dt*lgx/sqrt(lgx^2+(a*t-lgy)^2);lgxb=[lgxb,lgx];lgy=lgy+b*dt*(a*t-lgy)/sqrt(lgx^2+(a*t-lgy)^2);lgyb=[lgyb,lgy];tzy=a*t;tzyb=[tzyb,tzy];endlgxb;lgyb;tzyb;tzxb=zeros(length(tzyb));plot(lgxb,lgyb,'m*',tzxb,tzyb,'c*')gtext('猎狗')gtext('兔子')当猎狗速度为18m/s时:c=200;a=8;b=18;lgxb=[];lgyb=[];tzxb=[];tzyb=[];d=1;dt=0.1;t=0;lgx=c;lgy=0;tzx=0;tzy=0;holdonaxis([0,200,0,150])title('猎狗追兔子')text(0,120,'洞口A')text(200,0,'B')text(0,0,'O')while(sqrt((lgx-tzx)^2+(lgy-tzy)^2)d)t=t+dt;lgx=lgx-b*dt*lgx/sqrt(lgx^2+(a*t-lgy)^2);lgxb=[lgxb,lgx];lgy=lgy+b*dt*(a*t-lgy)/sqrt(lgx^2+(a*t-lgy)^2);lgyb=[lgyb,lgy];tzy=a*t;tzyb=[tzyb,tzy];endlgxb;lgyb;tzyb;tzxb=zeros(length(tzyb));plot(lgxb,lgyb,'m*',tzxb,tzyb,'c*')gtext('猎狗')gtext('兔子')2.问题(4)的程序(此为对猎狗速度b进行多次修正后的程序);a=8;b=15.4;dt=0.1;t=0;s=0;D=30;d=1;e=0;lgx=200;lgy=0;tzx=0;tzy=0;holdonaxis([0,200,0,150])title('猎狗追兔子')text(0,120,'洞口A')text(200,0,'B')text(0,0,'O')while(sqrt((lgx-tzx)^2+(lgy-tzy)^2)d)if(sqrt((lgx-tzx)^2+(lgy-tzy)^2)D)t=t+dt;lgx=lgx-b*dt*lgx/sqrt(lgx^2+(a*t-lgy)^2);lgy=lgy+b*dt*(a*t-lgy)/sqrt(lgx^2+(a*t-lgy)^2);tzy=tzy+a*dt;plot(lgx,lgy,'r*',tzx,tzy,'b*')pause(0.1)elset=t+dt;if(e==0||e==1)a=a/2;b=1.1*b;e=0;ende=e+dt;lgx=lgx-b*dt*lgx/sqrt(lgx^2+(tzy+a*dt-lgy)^2);lgy=lgy+b*dt*(tzy+a*dt-lgy)/sqrt(lgx^2+(tzy+a*dt-lgy)^2);tzy=tzy+a*dt;plot(lgx,lgy,'r+',tzx,tzy,'b+')pause(0.1)ends=s+b*dt;endgtext('猎狗')gtext('兔子')lgx,lgy,tzx,tzy,t,s四.上机实验的结果与结论1.问题(1)~(3):lgx=0.0110lgy=118.9382tzx=0tzy=119.2000t=14.9000s=253.300结论:(1)猎狗能追上兔子的最小速度是17米/秒;(2)在猎狗能追上兔子的情况下,猎狗跑过的路程是253.3米;(3)猎狗追赶兔子奔跑的曲线图2.问题(4):lgx=-0.0026lgy=119.24tzx=0tzy=119.2000t=16.0000s=249.7880结论:猎狗追赶兔子奔跑的曲线图如下:五.实验的总结与体会通过这次实验,我们小组人员对微分方程的模型实验有一定的了解,由于此实验和之前的缉私船追赶走私船实验基本相同,只是将实验的坐标轴进行旋转即可,所以整体实验过程都比较简单,小组人员都对其表示比较熟悉。
本文标题:猎狗追兔子数学实验报告
链接地址:https://www.777doc.com/doc-1540949 .html