西安交通大学数学实验报告
第三步:计算狗与兔子之间的距离
若距离小于设定的距离或时间超过15s,则退出循环,否则让时间产生一个步长,返回到第二步进入下一次循环. 第四步:
第一小题时,若在某一速度下,距离无法小于设定距离,则将速度加0.05,重新返回第二步,否则输出此时速度即为最小速度。
第二小题时,若距离小于设定距离,则输出时间,否则输出-1,即无法追上兔子。
三.
程序设计
第一问,求狗的最小速度,运行过程如下: vd=0; vr=8;
dogxb=[];dogyb=[];rabbitxb=[];rabbityb=[]; d=0.1; dt=0.1;
rabbitx=0;rabbity=0;
dogx=-100*sqrt(2);dogy=-100*sqrt(2);
while(sqrt((dogx-rabbitx)^2+(dogy-rabbity)^2)>d)
t=0;rabbitx=0;rabbity=0;dogx=-100*sqrt(2);dogy=-100*sqrt(2); vdog=vdog+0.1;
while(sqrt((dogx-rabbitx)^2+(dogy-rabbity)^2)>d&&t<=15) t=t+dt;
dogx=dogx+vd*dt*(rabbitx-dogx)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogxb=[dogxb,dogx];
dogy=dogy+vd*dt*(rabbity-dogy)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogyb=[dogyb,dogy];
rabbitx=rabbitx-vr*dt/sqrt(2); rabbitxb=[rabbitxb,rabbitx]; rabbity=rabbity+vr*dt/sqrt(2); rabbityb=[rabbityb,rabbity]; end end vdog dogxb; dogyb; rabbitxb; rabbityb;
plot(dogxb,dogyb,rabbitxb,rabbityb,'*')
6
电气工程学院 电气工程与自动化专业 电气12 崔彧菲
西安交通大学数学实验报告
第二问,当vdog=15m/s时运行过程如下: vd=15; vr=8;
dogxb=[];dogyb=[];rabbitxb=[];rabbityb=[]; d=0.1; t=0; dt=0.1;
rabbitx=0;rabbity=0;
dogx=-100*sqrt(2);dogy=-100*sqrt(2);
while(sqrt((dogx-rabbitx)^2+(dogy-rabbity)^2)>d) t=t+dt;
dogx=dogx+vd*dt*(rabbitx-dogx)/sqrt((rabbitx-dogx)^2+(rabbity-电气工程学院 电气工程与自动化专业 电气12 崔彧菲
7
西安交通大学数学实验报告
dogy)^2);
dogxb=[dogxb,dogx];
dogy=dogy+vd*dt*(rabbity-dogy)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogyb=[dogyb,dogy];
rabbitx=rabbitx-vr*dt/sqrt(2); rabbitxb=[rabbitxb,rabbitx]; rabbity=rabbity+vr*dt/sqrt(2); rabbityb=[rabbityb,rabbity]; end
if(t>15) t=-1; end t
dogxb; dogyb; rabbitxb; rabbityb;
plot(dogxb,dogyb,rabbitxb,rabbityb,'*')
8
电气工程学院 电气工程与自动化专业 电气12 崔彧菲
西安交通大学数学实验报告
第三问,当vdog=18m/s时运行过程如下: vd=18; vr=8;
dogxb=[];dogyb=[];rabbitxb=[];rabbityb=[]; d=0.1; t=0; dt=0.1;
rabbitx=0;rabbity=0;
dogx=-100*sqrt(2);dogy=-100*sqrt(2);
while(sqrt((dogx-rabbitx)^2+(dogy-rabbity)^2)>d) t=t+dt;
dogx=dogx+vd*dt*(rabbitx-dogx)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogxb=[dogxb,dogx];
dogy=dogy+vd*dt*(rabbity-dogy)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogyb=[dogyb,dogy];
rabbitx=rabbitx-vr*dt/sqrt(2); rabbitxb=[rabbitxb,rabbitx]; rabbity=rabbity+vr*dt/sqrt(2); rabbityb=[rabbityb,rabbity]; end
if(t>15) t=-1; end t
dogxb; dogyb; rabbitxb;
电气工程学院 电气工程与自动化专业 电气12 崔彧菲
9
西安交通大学数学实验报告
rabbityb;
plot(dogxb,dogyb,rabbitxb,rabbityb,'*')
10
电气工程学院 电气工程与自动化专业 电气12 崔彧菲