数学实验报告.docx

上传人:b****7 文档编号:25644409 上传时间:2023-06-11 格式:DOCX 页数:25 大小:128.29KB
下载 相关 举报
数学实验报告.docx_第1页
第1页 / 共25页
数学实验报告.docx_第2页
第2页 / 共25页
数学实验报告.docx_第3页
第3页 / 共25页
数学实验报告.docx_第4页
第4页 / 共25页
数学实验报告.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数学实验报告.docx

《数学实验报告.docx》由会员分享,可在线阅读,更多相关《数学实验报告.docx(25页珍藏版)》请在冰豆网上搜索。

数学实验报告.docx

数学实验报告

数学建模实验报告

 

学院:

材料科学与工程

 

班级:

材料91

 

组员:

樊啸09021011

黄胜09021014

雷子健09021015

 

一、实验问题

如图所示,有一只猎狗在B点位置发现了一只兔子在正东北方向距离它200米的地方O处,此时兔子开始以8米/秒的速度向正西北方距离为120米的洞口A全速跑去,假设猎狗在追赶兔子的时候始终朝着兔子的方向全速奔跑,按要求完成下面的实验:

⑴问猎狗能追上兔子的最小速度是多少?

⑵选取猎狗的速度分别为15、18米/秒,计算猎狗追上兔子时跑过的路程和时间。

⑶画出猎狗追赶兔子奔跑的曲线图。

二、数学推导

用计算机仿真法对上述问题进行模拟、分析和研究。

⑴设置时间步长为dt,兔子速度为8米/秒,猎狗速度为b(b在程序中输入一设定值,我们先选用了18),兔子的初始位置在坐标原点,猎狗的初始位置在(-100

,-100

)。

由t1时兔子和猎狗的位置坐标计算兔子和猎狗在t2=t1+dt时的坐标(x1,y1)和(x2,y2):

x1=-4

t

y1=4

t

x2=x2(t1)+bdt

y2=y2(t1)+bdt

⑶计算兔子与猎狗之间的距离

d=

如果d小于事先设定的距离,则退出循环,否则让时间产生一个步长,返回到第二步继续进入下一次循环。

⑷当循环成功退出后,说明点(x1,y1)和(x2,y2)之间的距离小于设定的猎狗追上兔子的距离,循环终止时的时间t即为猎狗追上兔子所用的时间。

说明:

在回答第一小问时,通过多次输入b的值,直至找到使t等于15的b(15=120/8,为兔子跑到洞口所需的时间,此时的b为猎狗的最小速度)。

三、实验程序及结果

b=16.75

D=0.5

dt=0.2

t=0

holdon

ezplot('x',[-100*sqrt

(2),0])

ezplot('-x',[-60*sqrt

(2),0])

axis([-100*sqrt

(2)0-100*sqrt

(2)60*sqrt

(2)])

axisequal

x1=0;y1=0;x2=-100*sqrt

(2);y2=-100*sqrt

(2)

whilesqrt((x1-x2)^2+(y1-y2)^2)>D

t=t+dt

x1=-4*sqrt

(2)*t

y1=4*sqrt

(2)*t

x2=x2+b*dt*(-4*sqrt

(2)*t-x2)/sqrt((-4*sqrt

(2)*t-x2)^2+(4*sqrt

(2)*t-y2)^2)

y2=y2+b*dt*(4*sqrt

(2)*t-y2)/sqrt((-4*sqrt

(2)*t-x2)^2+(4*sqrt

(2)*t-y2)^2)

plot(x1,y1,'r.',x2,y2,'g.')

pause(0.1)

end

b

t

s=t*b

 

运行结果:

(1)b=

16.7500

D=

2

dt=

0.2000

t=

0

……

t=

15.0000

经试验得,狗的速度为16.75时,追赶上兔子的时间为15s,正好是兔子跑到洞口的时间。

即狗的最小速度为16.75m/s

(2)将b=15带入输入程序计算,则时间为正无穷,即此速度下猎狗追不到兔子

 

(3)将b=18输入程序计算,结果如下

b=

 

18

D=

 

2

dt=

 

0.2000

t=

 

0

y2=

 

-141.4214

t=

 

0.2000

t=

 

0.4000

t=

 

0.6000

t=

 

0.8000

t=

 

1

t=

 

1.2000

t=

 

1.4000

t=

 

1.6000

t=

 

1.8000

t=

 

2.0000

t=

 

2.2000

t=

 

2.4000

t=

 

2.6000

t=

 

2.8000

t=

 

3.0000

t=

 

3.2000

t=

 

3.4000

t=

 

3.6000

t=

 

3.8000

t=

 

4.0000

t=

 

4.2000

t=

 

4.4000

t=

 

4.6000

t=

 

4.8000

t=

 

5.0000

t=

 

5.2000

t=

 

5.4000

t=

 

5.6000

t=

 

5.8000

t=

 

6.0000

t=

 

6.2000

t=

 

6.4000

t=

 

6.6000

t=

 

6.8000

t=

 

7.0000

t=

 

7.2000

t=

 

7.4000

t=

 

7.6000

t=

 

7.8000

t=

 

8.0000

t=

 

8.2000

t=

 

8.4000

t=

 

8.6000

t=

 

8.8000

t=

 

9

t=

 

9.2000

t=

 

9.4000

t=

 

9.6000

t=

 

9.8000

t=

 

10.0000

t=

 

10.2000

t=

 

10.4000

t=

 

10.6000

t=

 

10.8000

t=

 

11.0000

t=

 

11.2000

t=

 

11.4000

t=

 

11.6000

t=

 

11.8000

t=

 

12.0000

t=

 

12.2000

t=

 

12.4000

t=

 

12.6000

t=

 

12.8000

t=

 

13.0000

t=

 

13.2000

t=

 

13.4000

b=

 

18

t=

 

13.4000

s=

 

241.2000

此时追赶时间为13.4s,猎狗跑过的距离为241.2m

⑷猎狗追赶兔子曲线图如下(b等于18):

 

二:

现要在一旷野区域举行一场车赛,为了了解环形赛道的路况,现对一选手比赛情况进行监测。

该选手从A地出发向东到B,在经C、D回到A地,(如图)。

现从选手出发开始计时,每隔15min观测其位置,所得相应各点坐标如下表(假设其体力是均匀分配的):

clf;clear

x1=[0.24.966.559.7113.1716.2318.3620.5323.1526.4928.2329.130.6530.9231.6733.0334.3535.0137.5];

y1=[6.665.284.685.192.346.945.559.865.283.873.042.883.682.382.062.582.161.456];

plot(x1,y1,'k.','markersize',15);

axis([-540045])

grid;holdon

t1=0.2:

0.01:

37.5;

u1=spline(x1,y1,t1);

plot(t1,u1)

p1=sqrt(diff(t1).^2+diff(u1).^2);

x2=[0.21.84.906.519.7313.1816.2018.9220.5023.2325.5628.3129.4530.0030.9231.6733.3134.2335.8137.5];

y2=[6.6619.8924.5234.8240.5437.6741.3830.0019.6814.5618.8618.5522.6618.2815.0613.4211.867.689.456];

plot(x2,y2,'k.','markersize',15);

t2=0.2:

0.01:

37.5;

u2=spline(x2,y2,t2);

plot(t2,u2)

p2=sqrt(diff(t2).^2+diff(u2).^2);

L=sum(p1)+sum(p2);

fprintf('L=%.2f\n',L)

以上为模拟路线源代码L=175.90km

 

 

z=f(x,y)是位移形状曲线,仅以此是无法求出速度的哦。

但如果已知x,y均为事件t的函数,那就可以求解了。

可以先求出各个速度分量再合成,即:

>>vx=diff(x,t);

>>vy=diff(y,t);

>>vz=diff(f(x,y),t);

>>v=sqrt(vx^2+vy^2+vz^2)

 

题中数据是每隔15分钟观测所得,对于车道上量不同的点之间的距离的近似:

d1=sum(vx);d2=sum(vy);d=d1-d2

那么,这两点间的平均速度可为:

v=d/0.25=4*d(km/h).

 

求解:

三次样条插值法

对于n+1个给定点的数据集{xi},我们可以用n段三次多项式在数据点之间构建一个三次样条。

如果

表示对函数f进行插值的样条函数,那么需要:

插值特性,S(xi)=f(xi)

样条相互连接,Si-1(xi)=Si(xi),i=1,...,n-1

两次连续可导,S'i-1(xi)=S'i(xi)以及S''i-1(xi)=S''i(xi),i=1,...,n-1.

由于每个三次多项式需要四个条件才能确定曲线形状,所以对于组成S的n个三次多项式来说,这就意味着需要4n个条件才能确定这些多项式。

但是,插值特性只给出了n+1个条件,内部数据点给出n+1?

2=n?

1个条件,总计是4n?

2个条件。

我们还需要另外两个条件,根据不同的因素我们可以使用不同的条件。

其中一项选择条件可以得到给定u与v的钳位三次样条,

另外,我们可以设

这样就得到自然三次样条。

自然三次样条几乎等同于生成样条设备的曲线。

在这些所有的二次连续可导函数中,钳位与自然三次样条可以得到相对于待插值函数f的最小震荡。

如果选择另外一些条件,

可以得到周期性的三次样条。

如果选择,

可以得到完整三次样条。

样条插值所得曲线能比较好的连接已知道的数据点,既有效地回避了插值中的龙格现象,又是连续光滑的用此曲线近似描述已知数据点的变化规律,应该说能较好的进行数据点之间的预测分析和求值。

在matlab中样条插值命令为:

y=spline(x1,y1,t)。

 

在本次试验中,所得速度v是利用近似方法求得,并不是在确切的时间点时的速度的精确值,所以当用光滑的曲线近似v-t变化规律时最好不让曲线穿过求得数据点,所以这里描绘v-t曲线时用曲线拟合的方法。

程序源代码和运行结果如下:

clear;clc;clf;

x=[0.24.966.559.7113.1716.2318.3620.5323.1526.4928.2329.130.6530.9231.6733.0334.3535.0137.5];

y=[6.665.284.685.192.346.945.559.865.283.873.042.883.682.382.062.582.161.456];

subplot(1,2,1)

plot(x,y,'k.','markersize',15)

axis([040045]);

grid;holdon

t=0.2:

0.01:

37.5;

u=spline(x,y,t);

s1=trapz(t,u);

p=sqrt(diff(t).^2+diff(u).^2);

l1=sum(p);

v=[];

fori=1:

18

v(i)=4*sqrt((x(i+1)-x(i))^2+(y(i+1)-y(i))^2);

ifv(i)>30

a=find(t

t(a)=NaN;

a=find(t>x(i+1));

t(a)=NaN;

plot(t,u,'r-')

elseifv(i)<12

a=find(t

t(a)=NaN;

a=find(t>x(i+1));

t(a)=NaN;

plot(t,u,'k-')

else

a=find(t

t(a)=NaN;

a=find(t>x(i+1));

t(a)=NaN;

plot(t,u,'b-')

end

t=0.2:

0.01:

37.5;

end

x1=[0.21.84.906.519.7313.1816.2018.9220.5023.2325.5628.3129.4530.0030.9231.6733.3134.2335.8137.5];

y1=[6.6619.8924.5234.8240.5437.6741.3830.0019.6814.5618.8618.5522.6618.2815.0613.4211.867.689.456];

holdon

plot(x1,y1,'k.','markersize',15)

u=spline(x1,y1,t);

s2=trapz(t,u);

p=sqrt(diff(t).^2+diff(u).^2);

l2=sum(p);

fori=19:

37

v(i)=4*sqrt((x1(39-i)-x1(38-i))^2+(y1(39-i)-y1(38-i))^2);

ifv(i)>30

a=find(t

t(a)=NaN;

a=find(t>x1(39-i));

t(a)=NaN;

plot(t,u,'r-')

elseifv(i)<12

a=find(t

t(a)=NaN;

a=find(t>x1(39-i));

t(a)=NaN;

plot(t,u,'k-')

else

a=find(t

t(a)=NaN;

a=find(t>x1(39-i));

t(a)=NaN;

plot(t,u,'b-')

end

t=0.2:

0.01:

37.5;

end

s=s2-s1;

l=l1+l2;

fprintf('s=%.4f,l=%.4f\n',s,l)

t=0.125:

0.25:

9.125;

subplot(1,2,2)

holdon

axis([09.5045])

grid

plot(t,v,'k.','markersize',25)

p=polyfit(t,v,3);

a=0:

0.01:

9;

s=polyval(p,a);

holdon

plot(a,s,'k-','linewidth',2)

车道长度:

l=175.9035;

所围区域面积:

s=733.0783。

图1:

模拟比赛车道的曲线(彩图见附录)

三、对选手的建议:

赛前熟悉一下路况,大致了解在车道上的那些路段的大概情况(是平整沙土路,坑洼碎石路还是松软泥泞路),不同的路况有不同的速度限制以保证选手的人身安全。

在平整沙土路可以保持大于30km/h的时速,在坑洼碎石路保持12-30km/h的时速,在松软泥泞路要保持低于12km/h的时速,这样既能以最快的速度完成比赛,又不会发生安全事故。

clear;clc;clf;

x=[0.24.966.559.7113.1716.2318.3620.5323.1526.4928.2329.130.6530.9231.6733.0334.3535.0137.5];

y=[6.665.284.685.192.346.945.559.865.283.873.042.883.682.382.062.582.161.456];

subplot(1,2,1)

plot(x,y,'k.','markersize',15)

axis([040045]);

grid;holdon

t=0.2:

0.01:

37.5;

u=spline(x,y,t);

s1=trapz(t,u);

p=sqrt(diff(t).^2+diff(u).^2);

l1=sum(p);

v=[];

fori=1:

18

v(i)=4*sqrt((x(i+1)-x(i))^2+(y(i+1)-y(i))^2);

ifv(i)>30

a=find(t

t(a)=NaN;

a=find(t>x(i+1));

t(a)=NaN;

plot(t,u,'r-')

elseifv(i)<12

a=find(t

t(a)=NaN;

a=find(t>x(i+1));

t(a)=NaN;

plot(t,u,'k-')

else

a=find(t

t(a)=NaN;

a=find(t>x(i+1));

t(a)=NaN;

plot(t,u,'b-')

end

t=0.2:

0.01:

37.5;

end

x1=[0.21.84.906.519.7313.1816.2018.9220.5023.2325.5628.3129.4530.0030.9231.6733.3134.2335.8137.5];

y1=[6.6619.8924.5234.8240.5437.6741.3830.0019.6814.5618.8618.5522.6618.2815.0613.4211.867.689.456];

holdon

plot(x1,y1,'k.','markersize',15)

u=spline(x1,y1,t);

s2=trapz(t,u);

p=sqrt(diff(t).^2+diff(u).^2);

l2=sum(p);

fori=19:

37

v(i)=4*sqrt((x1(39-i)-x1(38-i))^2+(y1(39-i)-y1(38-i))^2);

ifv(i)>30

a=find(t

t(a)=NaN;

a=find(t>x1(39-i));

t(a)=NaN;

plot(t,u,'r-')

elseifv(i)<12

a=find(t

t(a)=NaN;

a=find(t>x1(39-i));

t(a)=NaN;

plot(t,u,'k-')

else

a=find(t

t(a)=NaN;

a=find(t>x1(39-i));

t(a)=NaN;

plot(t,u,'b-')

end

t=0.2:

0.01:

37.5;

end

s=s2-s1;

l=l1+l2;

fprintf('s=%.4f,l=%.4f\n',s,l)

t=0.125:

0.25:

9.125;

subplot(1,2,2)

holdon

axis([09.5045])

grid

plot(t,v,'k.','markersize',25)

p=polyfit(t,v,3);

a=0:

0.01:

9;

s=polyval(p,a);

holdon

plot(a,s,'k-','linewidth',2)

二、实验心的

在解决实际问题时首先应该建立合适的数学模型,然后求解。

在解决本次实验问题时,感谢刘老师对我们的亲切指导。

我们首先仿照缉私艇追击走私船的例子建立了数学模型,我们第一次尝试的方法是求解析解,但是发现用这种方法时,建立的二阶微分方程十分复杂,后续的推导和计算都比较困难,所以我们采用了计算机仿真法。

经过多次分析,修改,最终得出结论。

但是结果还有一定的缺陷,希望在以后的学习和复习中能够努力,解决好存在的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1