10909数学建模应用MATLAB建模的一个例子.docx
- 文档编号:9136758
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:16
- 大小:52.67KB
10909数学建模应用MATLAB建模的一个例子.docx
《10909数学建模应用MATLAB建模的一个例子.docx》由会员分享,可在线阅读,更多相关《10909数学建模应用MATLAB建模的一个例子.docx(16页珍藏版)》请在冰豆网上搜索。
10909数学建模应用MATLAB建模的一个例子
应用MATLAB的一个例子
——数学也是一门技术
王天顺整理
本来想用“数学也是一门技术”作题目,主要是基于两点,一是从数学的应用角度,它的确具备了作为一门技术的特征,这也就是今天我要通过一个例子要表达的;二是咱们在座的大多数都是从事职业教育的老师,不知道我理解得是不是正确,职业教育与普通教育的区别是较为侧重于教授技术,我主观上感觉这个题目和大家的关系更紧密一些。
但是,这个题目有点太大了!
和领导商量了一下还是换个题目吧。
首先可以证明:
数学确是一门技术,比如说要从技术的定义入手,流行的做法是:
查查《辞海》,查查相关的如《科学学辞典》和《科技辞典》等等,看看他们是怎样给技术定义的;其次,论述一下数学的确是符合这些定义的。
实际上,我也确实查阅过这些资料,可以说没有问题,一定可以找到证据证明这个论断!
注:
“技术”一词的中文解释有两种,一种是以《辞海》为代表的解释,把技术定义为:
(1)泛指根据生产实践经验和自然科学原理而发展成的各种工艺操作方法与技能;
(2)除操作技能外,广义的还包括相应的生产工具和其他物质设备,以及生产的工艺过程或作业程序、方法。
另一种是以《科学学辞典》和《科技辞典》为代表的解释,把技术定义为:
是为社会生产和人类物质文化生活需要服务的,供人类利用和改造自然的物质手段、智能手段和信息手段的总和。
可见,“技术”一词所包含的内容除了有形的物化形态之外,还包括无形的智能形态方面。
无形的智能形态的技术是客观存在的,在某种意义上说,这方面技术的作用并不亚于物化形态的技术,更不能为物化形态技术所取代(背景资料)。
因此,有关“技术”的涵义,有人概括为:
指的是有形的物化技术和无形的智能技术的总和。
当然,容易想到我们把数学看作一门技术,可能更多的是从技术的无形“智能形态”角度论述的。
我想这只是他的一个方面,今天先给各位介绍的是一个例子,展现他的另一个方面,用数学(包括相关的软件)去解决一个实际问题,其过程就像“传统的”、物化形态的技术一样;其次,结合上述例子,探讨有关数学建模及相关培训指导工作的一般原则和步骤,谈一点个人对此项工作的认识;最后,介绍我校的这些年数学建模培训工作的一些具体做法。
一、足球比赛中的吊门问题
1.问题:
只考虑如下的因素:
球与球门的距离为a,守门员与球门的距离为b(假设在调门过程中,守门员不能移动),球门高h,守门员最大摸高H,球出脚的初速度为
,与水平方向的夹角为
(称为初射角).针对下列数据求能吊门成功的
,h=2.44m,H=3.20m,
,重力加速度g=10m/s2,针对下列几组数据分别给出具体能吊门成功的相应初射角范围,要求精度在小数点后第4位。
(1)a=6m,b=1m;
(2)a=10m,b=3m;
(3)a=20m,b=5m;
2.问题分析
(1)在不考虑空气阻力的情况下,抛射体的运动轨迹是抛物线:
想象一下,只要角度合适,一般情况下应该吊门成功,但是如何去找合适的范围呢?
(2)这不同于找一个角度值(注,并不是归结为求一元二次方程的根!
,因为这里是求
,而不是求x,所以是一般的非线性方成),而是一个范围!
当然,也可把问题整理成两个方程求根问题:
一个方程是求吊门成功的最小角度,一个方程是球吊门成功的最大角度(注意,有可能落地弹入球门,要考虑反弹入门的情况)。
(3)有了使用方便的数学软件,可以先进行分析并将分析过程直观显示。
I.对于第一组数据,吊门成功的最小角度1.53697(为弧度,下同),对应的时间大约在4.9281秒,最大角度1.53787,对应的时间是5.0627秒,相比球与守门员及与球门的距离,显然守门员有足够的时间移动,因此调门是不会成功的!
这显然是因为,三者之间的距离导致,要想吊门成功,就必须角度很大,运行时间很长!
v=30;g=10;
h=2.44;H=3.2;
a=6;b=1;
l=a-b;L=a*1.1;
x=0:
0.01:
L;
foralpha=1.5368:
0.00001:
1.538
[y,tfinal]=paosheti1(x,alpha,v,g);
tH=l/(v*cos(alpha));
plot(l,H,'r+',a,h,'r+'),holdon,
plot(x,y),grid,
holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(tH)]),pause
end
II.同上,对于第二组数据,吊门成功的最小角度1.51437,对应的时间大约在4.1374秒,最大角度1.51587,对应的时间大约在4.2503秒。
v=30;g=10;
h=2.44;H=3.2;
a=10;b=3;
l=a-b;L=a*1.1;
x=0:
0.01:
L;
foralpha=1.5138:
0.00001:
1.5164
[y,tfinal]=paosheti1(x,alpha,v,g);
tH=l/(v*cos(alpha));
plot(l,H,'r+',a,h,'r+'),holdon,
plot(x,y),grid,
holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(tH)]),pause
end
III.对于第三组数据,吊门成功的最小角度1.45718,对应的时间大约在4.4103秒,最大角度1.46022,对应的时间大约是4.531秒。
v=30;g=10;
h=2.44;H=3.2;
a=20;b=5;
l=a-b;L=a*1.1;
x=0:
0.01:
L;
foralpha=1.4566:
0.00001:
1.4605
[y,tfinal]=paosheti1(x,alpha,v,g);
tH=l/(v*cos(alpha));
plot(l,H,'r+',a,h,'r+'),holdon,
plot(x,y),grid,
holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(tH)]),pause
end
IV.其中用到的函数如下
function[y,t]=paosheti1(x,alpha,v,g)
y=x*tan(alpha)-x.^2*g/(2*v^2*(cos(alpha))^2);
t=2*v*sin(alpha)/g;
xmax=v*cos(alpha)*t;
n=length(x);
fori=1:
n
ify(i)<0
xx=x(i)-xmax;
y(i)=xx*tan(alpha)-xx.^2*g/(2*v^2*(cos(alpha))^2);
end
end
3.问题假设
(1)不考虑空气阻力;要考虑!
(2)不考虑守门员在球运行过程中的移动;考虑,这可能使这些假设中最易考虑的!
(3)球落地是完全弹性的(解释与(5)不矛盾),只考虑仅有一次触地反弹的情况;
(4)只考虑越过守门员头顶的吊门,即出球点与守门员连成一线延伸到球门这样一个直线方向,不考虑从守门员侧面吊门的情况;
(5)将球看作是数学上的一个点;
(6)不考虑球的旋转,实际比赛时,旋转是很重要的!
(7)球的质量为一个单位。
4.问题求解
(1)当水平路程达到球门时,只要竖直方向小于球门高度,列出相应的角度值满足的方程,解之即可得到。
下面的步骤就不细说了,是一个典型的非线性方程求根问题,但应该指出,前面的分析过程也还是有一定的指导意义,如对根的初步位置(实际上可以得到相当精度的根的位置)的判断;补充用牛顿迭代法求此根!
(2)由于列方程求解通常也需要做近似计算(如开方等),得到的结果也是近似的!
从这个意义上说,前面用来分析的方法实际上也是一个好的求解方法。
此时,取适当小的扫描步长,可视精度要求而定,当然某些环节是用肉眼观察得到的。
此处可取步长为0.00001或0.00002;
5.结果分析
(1)随着球与球门的距离,及守门员与球门的距离的变化,从第一组数据、到第二组、到第三组,所求得的初射角的范围越来越大,这是合理的!
(2)所的结果是在相当理想情况下得到的,如果将实际中守门员的移动因素考虑进去,只能建议射门者尽可能接近于最小成功角度吊门!
甚至简单的判断就可以看出,一个训练有素的守门员,在4、5秒的时间里完全可以合理移动,将踢过来的球挡住,因次,上述理想情况下得到的结论,实际上是不可能成立的!
有些因素必须考虑进去,即应该修改假设!
(3)进一步研究的方向,是更一般化,就需要修改假设,哪一条也不容易!
选一个较为简单的,假设守门员可以移动。
(4)
6.考虑有空气阻力的情况
(1)假设只考虑x方向受空气阻力的影响,并假设空气阻力与速度成正比,比例系数为k=0.4(实验验证,此系数越大,球飞行的时间越短,似乎越真实!
放在后面分析问题时用)。
此时,x作为时间t的函数
满足二阶常微分方程初值问题:
,
(1)
,
(2)
问题
(1)、
(2)的解为
为简单起见,假设精度只要求到小数点后的第二位,这样角度步长只需要取到0.001。
(2)针对第三组数据,计算的最小角度为1.268,守门员移动时间为2.7771秒,最大角度1.28,时间2.9897秒。
v=30;k=0.4;g=10;
h=2.44;H=3.2;
a=20;b=5;
l=a-b;L=a*1.1;
foralpha=1.2:
0.001:
1.3%1.5425%pi/2-eps
Th=-log(1-a*k/(v*cos(alpha)))/k;
T=Th*1.2;
t=0:
0.01:
T;
[x,y]=paosheti2(t,alpha,v,k,g);
TH=-log(1-l*k/(v*cos(alpha)))/k;
plot(l,H,'r+',a,h,'r+'),holdon,
plot(x,y),grid,
holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(TH)]),pause
end
function[x,y]=paosheti2(t,alpha,v,k,g)
x=v*cos(alpha)*(1-exp(-k*t))/k;
y=v*sin(alpha)*t-g*t.^2/2;
n=length(t);
t0=2*v*sin(alpha)/g;%thetimewhentheballdowntoground
xt0=v*cos(alpha)*(1-exp(-k*t0))/k;
vxt0=v*cos(alpha)*exp(-k*t0);
vyt0=v*sin(alpha);
vt0=sqrt(vxt0^2+vyt0^2);
fori=1:
n
ift(i)>t0
tt=t(i)-t0;
x(i)=xt0+vt0*cos(alpha)*(1-exp(-k*tt))/k;
y(i)=vt0*sin(alpha)*tt-g*tt^2/2;
end
end
(3)结果有点问题,即反弹后的角度不应该是
了,前面的结果是错的!
应该以落地时的情况换算出反射角。
应该修改抛射体函数:
paosheti2(t,alpha,v,k),换成paosheti22(t,alpha,v,k)。
针对第三组数据,计算的最小角度为1.268,守门员移动时间为2.7771秒,最大角度是1.27,时间是2.8101秒。
v=30;k=0.4;g=10;
h=2.44;H=3.2;
a=20;b=5;
l=a-b;L=a*1.1;
foralpha=1.2:
0.001:
1.3%1.5425%pi/2-eps
Th=-log(1-a*k/(v*cos(alpha)))/k;
T=Th*1.2;
t=0:
0.01:
T;
[x,y]=paosheti22(t,alpha,v,k,g);
TH=-log(1-l*k/(v*cos(alpha)))/k;
plot(l,H,'r+',a,h,'r+'),holdon,
plot(x,y),grid,
holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(TH)]),pause
end
function[x,y]=paosheti22(t,alpha,v,k,g)
x=v*cos(alpha)*(1-exp(-k*t))/k;
y=v*sin(alpha)*t-g*t.^2/2;
n=length(t);
t0=2*v*sin(alpha)/g;%thetimewhentheballdowntoground
xt0=v*cos(alpha)*(1-exp(-k*t0))/k;
vxt0=v*cos(alpha)*exp(-k*t0);
vyt0=v*sin(alpha);
vt0=sqrt(vxt0^2+vyt0^2);
alpha1=atan(vyt0/vxt0);
fori=1:
n
ift(i)>t0
tt=t(i)-t0;
x(i)=xt0+vt0*cos(alpha1)*(1-exp(-k*tt))/k;
y(i)=vt0*sin(alpha1)*tt-g*tt^2/2;
end
end
y方向也应该考虑空气阻力的影响,因为,反弹的高度依然是上一个波段的高度,这不对!
而且,看上去应该考虑有多次反弹的情况!
问题是到底该先考虑守门员的移动还是这两个问题!
(4)假设x,y两个方向均受空气阻力的影响,此时,如同(3),
仍然满足问题
(1)和
(2),函数
应满足二阶常微分方程初值问题:
(3)
,
(4)
其中,m=1。
易得问题(3)、(4)的解为
程序如下
v=30;k=0.4;g=10;
h=2.44;H=3.2;
a=20;b=5;
l=a-b;L=a*1.1;
foralpha=1.2:
0.001:
1.3%1.5425%pi/2-eps
Th=-log(1-a*k/(v*cos(alpha)))/k;
T=Th*1.2;
t=0:
0.01:
T;
[x,y]=paosheti3(t,alpha,v,k,g);
TH=-log(1-l*k/(v*cos(alpha)))/k;
plot(l,H,'r+',a,h,'r+'),holdon,
plot(x,y),grid,
holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(TH)]),pause
end
function[x,y]=paosheti3(t,alpha,v,k,g)
x=v*cos(alpha)*(1-exp(-k*t))/k;
y=(v*sin(alpha)+g/k)*(1-exp(-k*t))/k-g*t/k;
n=length(t);
t00=2.;
tt0
(1)=t00;
tb=1;
ii=1;
while(abs(tb)>1e-5)
tt0(ii+1)=tt0(ii)-paoshetiy(tt0(ii),alpha,v,k,g)/dpaoshetiy(tt0(ii),alpha,v,k,g);
tb=tt0(ii+1)-tt0(ii);
ii=ii+1;
if(ii>20)error('numb.ofiter.is30times');
end
end
t0=tt0(ii);
y0=(v*sin(alpha)+g/k)*(1-exp(-k*t0))/k-g*t0/k;
xt0=v*cos(alpha)*(1-exp(-k*t0))/k;
vxt0=v*cos(alpha)*exp(-k*t0);
vyt0=(v*sin(alpha)+g/k)*exp(-k*t0)-g/k;
vt0=sqrt(vxt0^2+vyt0^2);
alpha1=atan(abs(vyt0/vxt0));
%alpha
fori=1:
n
ift(i)>t0%
tt=t(i)-t0;
x(i)=xt0+vt0*cos(alpha1)*(1-exp(-k*tt))/k;
y(i)=(vt0*sin(alpha1)+g/k)*(1-exp(-k*tt))/k-g*tt/k;
end
end
针对第三组数据,计算的最小角度为1.239,守门员移动时间为2.3797秒,最大角度是1.248,时间是2.4889秒。
(5)考虑守门员可以移动的情况,假设守门员倒着移动的速度是
守门员到球门的距离是时间的函数
。
v=30;k=0.4;g=10;
h=2.44;H=3.2;
a=20;b0=5;u0=2;
l0=a-b0;L=a*1.1;
foralpha=1.25:
0.001:
1.3%1.5425%pi/2-eps
Th=-log(1-a*k/(v*cos(alpha)))/k;
T=Th*1.2;
t=0:
0.1:
T;
[x,y]=paosheti4(t,alpha,v,k,g);
nn=length(t);
forj=1:
nn
xx=x(1:
j);
yy=y(1:
j);
ll0=l0+u0*t(j);
ifll0>a
l(j)=a;
else
l(j)=ll0;
end
TH=-log(1-l(j)*k/(v*cos(alpha)))/k;
%plot(),
plot(xx,yy,'bo',l(j),H,'r+',a,h,'ro'),grid,pause
end
%holdoff
title(['足球比赛中的吊门','初射角=',num2str(alpha,6),...
'守门员的移动时间=',num2str(TH)]),pause
end
function[x,y]=paosheti4(t,alpha,v,k,g)
x=v*cos(alpha)*(1-exp(-k*t))/k;
y=(v*sin(alpha)+g/k)*(1-exp(-k*t))/k-g*t/k;
n=length(t);
%t00=2*v*sin(alpha)/g%thetimewhentheballdowntoground,hereweshouldsolve
%anonlineareq.i.e.y=0
%t0=fsolve(@paoshetiy,t00)%参数传递有问题,如,alpha是不断变化的如何传递?
%有一个办法:
就是在这个地方现编一段程序,求方程的根!
t00=2.;
tt0
(1)=t00;
tb=1;
ii=1;
while(abs(tb)>1e-5)
tt0(ii+1)=tt0(ii)-paoshetiy(tt0(ii),alpha,v,k,g)/dpaoshetiy(tt0(ii),alpha,v,k,g);
tb=tt0(ii+1)-tt0(ii);
ii=ii+1;
if(ii>20)error('numb.ofiter.is30times');
end
end
ii;
t0=tt0(ii);
y0=(v*sin(alpha)+g/k)*(1-exp(-k*t0))/k-g*t0/k;
xt0=v*cos(alpha)*(1-exp(-k*t0))/k;
vxt0=v*cos(alpha)*exp(-k*t0);
vyt0=(v*sin(alpha)+g/k)*exp(-k*t0)-g/k;
vt0=sqrt(vxt0^2+vyt0^2);
alpha1=atan(abs(vyt0/vxt0));
%alpha
fori=1:
n
ift(i)>t0%现在的问题是这个条件一直不满足!
从tt0=3后的语句就没用!
tt=t(i)-t0;
x(i)=xt0+vt0*cos(alpha1)*(1-exp(-k*tt))/k;
y(i)=(vt0*sin(alpha1)+g/k)*(1-exp(-k*tt))/k-g*tt/k;
end
end
针对第三组数据,且守门员移动速度为
,计算的能使球进入球门的最小角度为1.239,球运行的时间为4.2682秒,能使球进入球门的最大角度是1.248,球运行时间是4.5914秒(但,此时守门员已回来了)。
相当于验证了,(守门员可以移动时)前面的分析的结果是否能成立(即吊门成功)。
不难看出,如果攻门一方球一出脚,守门员就向球门方向移动的话,吊门是不可能成功的,除非守门员移动的速度很慢,如,
。
当然,实际比赛中,守门员的移动并不是对方球一出脚就开始的,而是有一个判断、反应的滞后时间!
也就是说,即使守门员移动的快一些,还是有可能吊门成功的!
这一点本方法没有考虑!
(6)
7.
8.
9.问题的研究过程分析
该问题与一般的高等数学教科书上的应用题不同:
(1)条件给的较为模糊,需要自己分析使之明确化,有些条件要有初步的中间结果后才能较为明确;
(2)有些因素要通过假设强行使之简化、理想化,如此才能或更便于求解;
(3)整个过程,边想边试边出结果,类似一种实验,称为数学实验;
二、关于数学建模教学
1.所谓数学建模,就是设计数学模型的过程。
而数学模型是采用形式化语言近似表达现象特征的一种数学结构。
概括地说,数学建模教学主要包括3个方面:
一是如何对实际问题适当简化后寻找出主要变量及变量之间的关系(即模型);二是如何利用数学工具处理这个模型;三是对整个过程的回顾与反思(即归纳、总结)。
第一方面包括:
(1)理解问题;
(2)简化假设;(3)建立模型。
第二方面包括:
(4)求解模型;(5)检验模型。
2.这其中,我们应该明确几个问题:
(1)数学建模的过程有一定的步骤,但并非所有的建模过程都要经过这些步骤,有时各步骤之间的界限也不那么分明,不应拘泥于形式而应以“问题解决”为主要目的。
(2)实际上,分析解决实际问题的过程就是数学建模的过程。
(3)数学建模作为“问题解决”的一个过程,它更完整地表现了学数学和用数学的关系,给学生再现了用数学知识解决一个实际问题的全过程,是一个对本科生来讲难得一遇的科研实战训练,这对身处信息时代的学生今后的学习和工作是大有裨益的。
三、关于数学建模竞赛培训(我们的做法及一点体会)
1.注意培养“双向”翻译的能力,因为数学建模首先要用数学的语言把实际问题翻译、表达成确切的数学问题。
再通过数学处理,得到数学问题的解。
最后还需要把数学问题的解还原为实际问题的解(非数学语言表述出来),即,实际问题
数学问题,数学问题的解
实际问题的解。
这“双向”翻译的能力恰是应用数学的基本能力。
值得注意的是,遇到实际问题时,用什么方法通常是对问题的充分研究分析后的自然选择,不要试图非要用上什么什么你认为很神奇的方法!
2.培养学生具有一定的想象力、联想力、洞察力和创造能力,因为学生面对的建模是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10909 数学 建模 应用 MATLAB 一个 例子
![提示](https://static.bdocx.com/images/bang_tan.gif)