建模实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮阴工学院
数理学院数学建模与实验课程实验报告
实验名称系统仿真实验地点26#114 日期2016+-09-14
姓名丁文武班级计科1141 学号1144101116 成绩
【实验内容】
1、掌握用模拟的概念。
2、学习计算机模拟的基本过程与方法
【实验要求与任务】根据实验内容和步骤,完成以下实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论)
B饿狼追兔问题(提升题)
现有一只兔子、一匹狼,兔子位于狼的正西10M米处,假设兔子与狼同时发现对方并一起起跑,兔子往正北6M米处的巢穴跑(其中M为你的学号后两位+10),如下图1所示。而
狼在追兔子。已知兔子匀速奔跑且速度为12
米/秒,狼的速度是兔子的两倍。
图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
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 运行结果:
兔子安全回到巢穴中
(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
运行结果:
狼追到兔子