数值计算实习报告Word文档下载推荐.docx
《数值计算实习报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数值计算实习报告Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
【6】黄有谦,计算方法。
北京,高等教育出版社,1981
实习内容
前言、问题描述、具体理论知识点、具体实例、程序清单、程序实现的核心代码、小组成员分工合作清单。
实习过程
1、数值结果
2、出现的问题,解决方法及体会
评价
1.写实验报告,占20%
2.按照教学计划的实验:
现场编程序,演示计算结果,占60%
3.将计算结果用数学软件作图和分析,占10%
4.与教学内容相关、自由选题或参与教师科研的选题,占10%
2012年12月日
——实习内容以及过程
前言:
吊射是球员在距离球门很远的一种射门方式,一般是看到对方门将站位靠前或者注意力有所分散时做吊射选择,由于足球在空中运行时间较长,可以给守门员反应的时间较长,需要精确的脚法才能成功,因此在职业比赛中出现吊射的情况很罕见,但吊射往往能起到出其不意,打破僵局的作用。
吊射的运动轨迹与弹道轨迹相似,可能的影响因素有球与球门的距离a,守门员与球门的距离b,球门高h,守门员最大接球高度H,球在空中飞行时间t,球出脚的初速度v,与水平方向的夹角alpha(初射角)。
问题的提出与分析
考虑如下的因素:
球与球门的距离为a,守门员与球门的距离为b,球门高h,守门员最大摸高H,球出脚的初速度为v,与水平方向的夹角为alpha(称为初射角).给定,h=2.44m,H=3.20m,v=30m/s,重力加速度g=10m/s2
提出问题:
针对下列几组数据分别给出能吊门成功的相应初射角范围,画出最小及最大角度的运动轨迹。
要求精度在小数点后至少第3位。
(所给数据见计算结果)。
·
a=6m,b=1m;
a=10m,b=3m;
a=20m,b=5m。
问题分析:
1.先考虑最简单情形,即不考虑空气阻力等…,此时,球的运动轨迹是抛物线,如果守门员不动,总有合适的角度使吊门成功。
2.这不是求一个角度值,而是求一个范围!
通常的思路是把问题整理成两个方程求根问题:
一个方程是求吊门成功的最小角度,一个方程是求吊门成功的最大角度。
3.有可能落地弹入球门,要考虑反弹入门的情况。
直观分析:
1.最简单情形,抛射体的运动轨迹为抛物线方程如下
2.借助于使用方便的数学软件,可直观地看到各种初射角对应的抛射体运动的轨迹图形。
最简情形
程序:
v=30;
g=10;
h=2.44;
H=3.2;
a=6;
b=1;
l=a-b;
L=a*1.01;
%1.01表示进入门里
x=0:
0.01:
L;
%对x采样
i1=floor(a/0.01)+1;
i2=floor((a-b)/0.01)+1;
alpha=1.5368:
0.00001:
1.538;
n=length(alpha);
fori=1:
n;
[y,tfinal]=paosheti1(x,alpha(i),v,g);
tH=l/(v*cos(alpha(i)));
%从射门到球到守门员位置的时间
ify(i1)>
=h|y(i2)<
=H;
success(i)=0;
else
success(i)=1;
end
plot(l,H,'
r+'
a,h,'
),holdon,
plot(x,y),grid,holdoff
title(['
足球比赛中的吊门'
'
初射角='
num2str(alpha(i),6),...
'
守门员的移动时间='
num2str(tH)]),pause
end
figure
(2)
plot(alpha,success)
程序抛射体轨迹函数(算法):
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;
%第一次落地前最大飞行X向距离
n=length(x);
n
ify(i)<
0%判断是落地后进门
xx=x(i)-xmax;
y(i)=xx*tan(alpha)-xx.^2*g/(2*v^2*(cos(alpha))^2);
%计算落地后进门的后半段轨迹
end
运行结果:
1.对于第一组数据,吊门成功的最小角度1.5369(为弧度,下同),对应的时间大约在4.9179秒,最大角度1.53791,对应的时间是5.0689秒;
最小角度:
最大角度
2.对于第二组数据,吊门成功的最小角度1.51441,对应的时间大约在4.1403秒,最大角度1.5159,对应的时间大约在4.2526秒;
最大角度:
3.对于第三组数据,吊门成功的最小角度1.457,对应的时间大约在4.4033秒,最大角度1.4603,对应的时间大约是4.5343秒
最大角度:
初步结果分析以及问题的再分析
1.遵循由简单到一般的建模原则,先考虑简单情形,得到初步结果,以此为基础,发现问题、分析问题,找到求解思路,并逐步将问题一般化,甚至可以发现逐步一般化的顺序(还是由简到繁,先将哪些方面使之更一般化,如空气阻力、守门员移动);
2.结果有一定的合理性;
3.从近似计算角度分析,在允许的精度范围内,如上的“作图——观察——调整”不失为一种求解方法;
注:
相比球与守门员及与球门的距离,注意守门员移动的时间,显然守门员有足够的时间移动,因此吊门是不会成功的!
原因在于将问题假设得过于简单化、理想化了!
修改假设应是下一步必须考虑的。
小结:
最简情形之假设:
1.不考虑空气阻力;
2.不考虑守门员在球运行过程中的移动;
3.球落地是完全弹性的,只考虑仅有一次触地反弹形成的吊门情况;
4.只考虑越过守门员头顶的吊门,即出球点与守门员连成一线延伸到球门这样一个直线方向,不考虑从守门员侧面吊门的情况;
5.将球看作是数学上的一个点;
6.不考虑球的旋转,实际比赛时,旋转是很重要的!
7.球的质量为一个单位。
有空气阻力的情形
(一)——仅x方向考虑空气阻力
Ø
假设只考虑x方向受空气阻力的影响;
假设空气阻力与速度成正比,比例系数为k=0.4。
此时,x(t)满足如下的微分方程初值问题
问题的解问题的解
飞行轨迹:
飞行到守门员位置的时间tH:
飞行到球门线位置的时间TH:
空气阻力的情形
(一)
(为了考虑时间不足,现在只针对第三组a=20;
b=5时的情况,下同)
程序
k=0.4;
h=2.44;
a=20;
b=5;
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:
T;
[x,y]=paosheti2(t,alpha,v,k,g);
TH=-log(1-l*k/(v*cos(alpha)))/k;
),holdon,
plot(x,y),grid,
holdoff
title(['
num2str(alpha,6),...
num2str(TH)]),pause
end
算法2:
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);
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;
%返回抛物体轨迹(考虑空气阻力)
%第一次落地前X向最大飞行距离
%第一次落地X向飞行速度
%第一次落地Y向飞行速度
%第一次落地飞行速度大小
t0%判断是落地后进门
%计算落地后进门的后半段轨迹
空气阻力的情形
(一)的结果及分析改进
1前面结果有问题,反弹后的角度不应该是alpha了,应该以落地时的情况计算出新反射角。
2.修改抛射体函数:
将paosheti2(t,alpha,v,k,g),换成paosheti22(t,alpha,v,k,g)。
算法2修改如下得到算法22
function[x,y]=paosheti22(t,alpha,v,k,g)
%thetimewhentheballdowntotheground
alpha1=atan(vyt0/vxt0);
x(i)=xt0+vt0*cos(alpha1)*(1-exp(-k*tt))/k;
y(i)=vt0*sin(alpha1)*tt-g*tt^2/2;
%返回抛物体轨迹(考虑空气阻力、反弹角度)
%计算反弹角度
空气阻力的情形
(一)的进一步结果及分析改进
针对第三组数据,计算的最小角度为1.2684,守门员移动时间为2.7836秒,最大角度是1.2807,时间是3.0032秒;
结果仍有问题:
反弹前后的两波高度一样;
解决的办法是再考虑y方向也有空气阻力。
有空气阻力的情形
(二)
——x、y方向均考虑空气阻力
假设x,y两个方向均受空气阻力的影响;
此时,x(t)仍满足同上的常微分方程初值问题
y(t)满足如下的常微分方程初值问题
问题的解
[x,y]=paosheti3(t,alpha,v,k,g);
算法:
function[x,y]=paosheti3(t,alpha,v,k,g)
%返回抛物体轨迹(考虑空气阻力)
y=(v*sin(alpha)+g/k)*(1-exp(-k*t))/k-g*t/k;
t00=2.;
%在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'
);
t0=tt0(ii);
%收敛到零点,第一次落地前最大飞行时间
y0=(v*sin(alpha)+g/k)*(1-exp(-k*t0))/k-g*t0/k;
%应为0或接近0
vyt0=(v*sin(alpha)+g/k)*exp(-k*t0)-g/k;
alpha1=atan(abs(vyt0/vxt0));
y(i)=(vt0*sin(alpha1)+g/k)*(1-exp(-k*tt))/k-g*tt/k;
%私有函数(为求解t0定义的两个私有函数)
functiony=paoshetiy(t,alpha,v,k,g)
functiondy=dpaoshetiy(t,alpha,v,k,g)
dy=(v*sin(alpha)+g/k)*exp(-k*t)-g/k;
空气阻力情形
(二)的结果分析及改进
1.针对第三组数据,计算的最小角度为1.2394,守门员移动时间为2.3843秒,最大角度是1.2482,时间是2.4914秒
2.有必要考虑守门员可以移动的情形。
心得体会
为期四天的数值计算方法上机实习已经接近尾声,尽管时间很短,却让我们获益良多,这次实习让我们理解到团队合作的好处,不懂的地方大家一起研究,分工合作明确,提高了实验的速度同时也让我们学到了很多。
首先,做什么事都不可能一蹴而就,必要的准备和持之不懈的努力,以及敢于面对失败,愈挫愈勇的精神。
编程问题是非常繁琐的,要想正确的编出程序,必须要在充分了解matlab语言程序的基础上透彻的分析题目的的要求和目的,在进行程序的编程,然而在编程的过程中不可避免的要面临诸多的困难和阻碍,想要一下子就变出正确的程序几乎不可能,面对错误也不要失去耐心,寻根纠结,发现并改正错误,最终取得成功。
其次,我们要注意要虚心求教,人并不是万能的,我们总有一些知识漏点,或者一些不能察觉的错误,这时我们就需要向别人求教,当局者迷,旁观者清,别人能过客观的知名自己的错误,让自己茅塞顿开。
通过每次计算机上机学习,我们会更加了解matlab语言的相关知识,理解和巩固matlab语言的理论,熟悉和了解matlab语言的具体编程方法。
这对我们将来到社会工作将会有莫大的帮助。
同时上机更能让我们知道,只要你努力,任
何东西都不会太难。
只要努力,就会有所收获。