猎狗追击兔子问题

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

dy/dx=tan At 这样就可以求得一条 At1 (0,y1)E 与f(x)近似的折线(就是常 微分方程中学得欧拉折线), At2 当时间步长△t取得足够小时, O兔子起始位置 可以认为这条折线就是f(x).
(0,y2)F
y=f(x)
D(X2,Y2)
(X1,Y1)C
A(100,0) x
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
function sequient(m,n) Y=zeros(m,n); y=zeros(m,n); X=zeros(m,n); x=zeros(m,n); v=10;A=1;B=0;T=0.01; Y(m,1)=0;y(m,1)=0;X(m,1)=100; for i=1:(n-1) A=X(m,i)./sqrt(X(m,i).^2+(Y(m,i)-y(m,i)).^2); B=(y(m,i)-Y(m,i))./sqrt(X(m,i).^2+(Y(m,i)-y(m,i)).^2); X(m,i+1)=X(m,i)-2*v*T*A; Y(m,i+1)=Y(m,i)+2*v*T*B; y(m,i+1)=y(m,i)+v*T; if(X(m,i+1)<X(m,i)) continue; else break; end end plot(X,Y,'r') hold on plot(x,y,'b'); hold off legend('ÁÔ¹·×·»÷·Ïß','ÍÃ×ÓÌÓÅÜ·Ïß'); k=find(X<0); text(X(k),Y(k),'O','Color','magenta'); text(X(k),Y(k),' ÁÔ¹·×·µ½ÍÃ×ӵĵã'); Yt=Y(k) grid on; box on; axis equal
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
问题分析: 由题意得,这是一道数学追击问题。 模型: 假设兔子沿直线逃回巢穴,而猎狗始终追击方向始终朝 向兔子。即猎狗追击路线为一条曲线。 兔子逃跑路线
y B (0,60)
Biblioteka Baidu巢穴
y=f(x)
猎狗追击路线
A(100,0) x O兔子起始位置
猎狗追击路线:y=f(x),速度:2v,t时刻位置为(Xt,Yt); 兔子逃跑路线:x=0,速度:v, t时刻位置为(0,yt); 由模型得:猎狗t时刻追击方向与水平方向的夹角At满足: tanAt= (Yt-yt)/(Xt-0); cosAt=-Xt/sqrt(Xt2+(Yt-yt)2); sinAt=(yt-Yt)/ Xt/sqrt(Xt2+(Yt-yt)2) 设时间步长为△t,则在t+△t时,狗的位置 ,可表示为: y B (0,60) Xt+1=Xt-(2*v* △t)*cosAt; 巢穴 Yt+1=Yt+(2*v* △t)*sinAt; (0,yt) yt=yt+v* △t; y=f(x) y0=0;Y0=0;X0=100; 显然,当猎狗追上兔子时 At Xt=0;此时在比较Yt与B点的纵坐标 (Xt,Yt) A(100,0) 大小,若Yt大于60则追不上,若Yt小 x 于或等于60则能追上。 O兔子起始位置
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
#include<stdio.h> #include<math.h> void main() { double Y[10000],X[10000],y[10000],T=0.01,v=10,sinA,cosA;//T为时间步长取:0.01 y[0]=0;Y[0]=0;X[0]=100;//X[i],y[i],Y[i]表示i时刻的坐标点 for(int i=0;;i++) { sinA=(y[i]-Y[i])/sqrt(X[i]*X[i]+(y[i]-Y[i])*(y[i]-Y[i])); cosA=X[i]/sqrt(X[i]*X[i]+(y[i]-Y[i])*(y[i]-Y[i])); X[i+1]=X[i]-2*v*T*cosA; Y[i+1]=Y[i]+2*v*T*sinA; y[i+1]=y[i]+v*T; if(X[i+1]<=0)//X[i]第一次小于或等于0时追到兔子,根据此时Y[i]是否大于 60判断猎狗能否在兔子到达巢穴之前追到它 { if(Y[i+1]<=60)printf(“猎狗在%f米时 能够追上兔子!\n",Y[i+1]); else printf(“猎狗在兔子回巢穴前不能追上兔子!"); break; } } } 运行结果大概为在66.699946米时,猎狗能追上兔子。(取兔子实际速度约为10m/s) 2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
猎狗起始位置
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
如图所示,f(x)上每一点的切线为此时刻兔子与猎狗位置的连 线。 这样就可以得到f(x)上 每一点的斜率,即:f’(xt)=tanAt;
y B (0,60)
巢穴
又由题可知: y0=f(x0)=100; y0=f(x0)=100
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
结果是:兔子回巢,猎狗扫兴而归。。。
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
猎狗追兔子问题
开始跑!
2009级信息与计算科学专业、统计专业 级信息与计算科学专业、 级信息与计算科学专业
题目: 题目:狗追兔子问题
y B (0,60) y=f(x) h x A(100,0)
O
现有一只兔子, 现有一只兔子,一 只猎狗, 只猎狗,兔子位于猎狗 的正西100米处。假设兔 米处。 的正西 米处 子与猎狗同时发现对方 并一起起跑, 并一起起跑,兔子往正 米处的巢穴跑, 北60米处的巢穴跑,而 米处的巢穴跑 猎狗在追兔子, 猎狗在追兔子,已知兔 子、猎狗是匀速跑且猎 狗的速度是兔子的两倍。 狗的速度是兔子的两倍。 问题是兔子能否安全逃 回到巢穴? 回到巢穴?
相关文档
最新文档