文档库

最新最全的文档下载
当前位置:文档库 > 建模实验1

建模实验1

淮阴工学院

数理学院数学建模与实验课程实验报告

实验名称系统仿真实验地点26#114 日期2016+-09-14

姓名丁文武班级计科1141 学号1144101116 成绩

【实验内容】

1、掌握用模拟的概念。

2、学习计算机模拟的基本过程与方法

【实验要求与任务】根据实验内容和步骤,完成以下实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论)

B饿狼追兔问题(提升题)

现有一只兔子、一匹狼,兔子位于狼的正西10M米处,假设兔子与狼同时发现对方并一起起跑,兔子往正北6M米处的巢穴跑(其中M为你的学号后两位+10),如下图1所示。而

狼在追兔子。已知兔子匀速奔跑且速度为12

建模实验1

米/秒,狼的速度是兔子的两倍。

图1 图2

(1)针对图1,使用计算机模拟该过程,并且画出兔子与狼的运动轨迹图形,并且回答兔子

能否安全回到巢穴?如果兔子被狼追到,请给出追到的时间以及位置,如果兔子安全回到巢穴,也请给出兔子安全回到巢穴所用的时间,以及此刻狼所在的位置。

程序代码:

clc

clear

format compact

M=26;

R=3*M;

Ax=0;

Ay=0;

Wx=10*M;

Wy=0;

dt=0.04;

v1=12;

v2=24;

d=1;%终止条件尽量小,d>v*dt T=0;

p=1;

while p T=T+dt;

x1=0;

y1=v1*T;

plot(x1,y1,'b*',Wx,Wy,'r*','LineWidth' ,2,'MarkerSize',2)

axis equal

axis([0 10*M 0 6*M])

hold on

pause(eps)

D=sqrt((x1-Wx)^2+(y1-Wy)^2);

if y1>=6*M

T;

Wxj;

Wyj;

break

end

建模实验1

if D<=d

T;

Wxj;

Wyj;

break

end

Wxj=Wx+v2*dt*(x1-Wx)/D; Wyj=Wy+v2*dt*(y1-Wy)/D; Wx=Wxj;

Wy=Wyj;

end

if D<=d

disp('兔子被狼逮到')

else

disp('兔子安全回到巢穴中') end 运行结果:

兔子安全回到巢穴中

建模实验1

(2) 如果兔子与巢穴之间有一个直径为6M米的圆形水池,如图2所示,兔子沿着圆弧ABC 奔跑,使用计算机模拟该过程,并且画出兔子与狼的运动轨迹图形,并且回答兔子能否安全回到巢穴?如果兔子被狼追到,请给出追到的时间以及位置,如果兔子安全回到巢穴,也请给出兔子安全回到巢穴所用的时间,以及此刻狼所在的位置

程序代码:

clc

clear

A=[0 0] %兔子

B=[260 0 ] %狼

R=78;

dt=0.04;

v1=12;v2=24;

d=0.5;

T=0;

p=1;

while p

plot(A(1),A(2),'r*',B(1),B(2),'k*','Li neWidth',2,'MarkerSize',10)

axis equal

axis([0 260 0 156])

hold on

pause(eps) %停顿

Dab=norm(A-B);

T=T+dt;

if Dab<=d

disp('狼追到兔子')

break

end

if T>=pi*R/v1

disp('兔子安全回到窝')

break

end

Axj=R*sin(v1*T/R);

Ayj=R*(1-cos(v1*T/R));

% Aj=A+v1*dt*(B-A)/Dab;

% Bxj=B(1)+v2*dt*(A(1)-B(1))/Dab; % Byj=B(2)+v2*dt*(A(1)-B(1))/Dab; Bj=B+v2*dt*(A-B)/Dab

A=[Axj Ayj];B=Bj;

end

运行结果:

狼追到兔子

建模实验1