数学实验报告Word格式文档下载.docx
《数学实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数学实验报告Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
2012年04月10日
实验一非线性方程(组)求解
一、实验目的
1.熟悉MATLAB软件中非线性方程组的求解命令及其用法
2.掌握求非线性方程近似根的常用数值方法——迭代法
二、实验问题
第一题
有一艘宽为5m的长方形驳船欲驶过某河道的直角弯,经测量知河道的宽度为10m和12m,如图11.9所示.试问,要驶过该直角弯,驳船的长度不能超过多少米?
(误差<
0.001m)
方法一:
如图所示,设参数为θ,船长L,由几何关系知:
此式中,L的值随θ的变化而变化,要使船身能通过直角弯道,则L的最小值即为所求船舶的最长长度,下面用matlab画出函数相应图形,并在给定区间上求出该最小值,程序如下:
设河道的长和宽分别为a和b,船宽为c,船长为L;
L=inline('
(b+a/tan(t)-c/sin(t))/cos(t)'
'
t'
a'
b'
c'
);
x=[0:
0.01:
pi/2];
newplot;
axis([0,pi/2,0,100]);
holdon;
%a=10,b=12,c=5
y=[];
fori=xy=[y,L(i,10,12,5)];
end
plot(x,y);
%a=12,b=10,c=5//调换a和b的值,重新做出图像。
fori=xy=[y,L(i,12,10,5)];
函数图像如下:
由图可知,ab的顺序不影响函数最小值的位置,且该最小值位于区间(0.5,1)上。
f='
(12+10/tan(x)-5/sin(x))/cos(x)'
[x,fval]=fminbnd(f,0.5,1)//求(0.5,1)上的最小值,结果如下:
故L的最小值约为21.0372m
方法二:
以弯道的一边建立直角坐标系,另一边的交点坐标为(12,10),则L1的方程为y=kx-12k+10,由船宽为5米可知,另一边L2的方程为y=kx-12k+10-5
求出L2与x,y轴交点,则L=(10-12x-5
)
做出函数图像:
f=inline('
(10-12*x-5*(1+x^2)^(1/2))*(1+1/x^2)^(1/2)'
fplot(f,[-1,3])
;
[x,fval]=fminbnd(f,-1,0)//求出在(-1,0)的最小值,结果如下:
故L的最大长度约为21.0372m
三、实验总结与体会
1.更加了解了MATLAB软件的用法。
2.学会了编写matlab程序,能够将自己在草稿纸上建立的模型写到matlab程序中。
3.分析算法和调试程序的过程培养了我的逻辑思维能力。
实验二缉私艇追赶走私船模型试验
一.实验目的
1.学会用MATLAB软件求解微分方程的初值问题.
2.了解微分方程数值解思想
3.学会根据实际问题建立简单微分方程数学模型
4.了解计算机数据仿真,数据模拟的基本方法
二.实验过程及结果分析
第一步:
设施时间步长△t,速度vdog,vrabbit及初始位置
=0,
Xd=-
,Xr=-
第二步:
由tk时狗与兔子的位置坐标计算狗与兔子在
=tk+△t时的坐标(
)和(
):
第三步:
计算狗与兔子之间的距离
若距离小于设定的距离或时间超过15s,则退出循环,否则让时间产生一个步长,返回到第二步进入下一次循环.
第四步:
第一小题时,若在某一速度下,距离无法小于设定距离,则将速度加0.05,重新返回第二步,否则输出此时速度即为最小速度。
第二小题时,若距离小于设定距离,则输出时间,否则输出-1,即无法追上兔子。
三.程序设计
第一问,求狗的最小速度,运行过程如下:
vd=0;
vr=8;
dogxb=[];
dogyb=[];
rabbitxb=[];
rabbityb=[];
d=0.1;
dt=0.1;
rabbitx=0;
rabbity=0;
dogx=-100*sqrt
(2);
dogy=-100*sqrt
(2);
while(sqrt((dogx-rabbitx)^2+(dogy-rabbity)^2)>
d)
t=0;
vdog=vdog+0.1;
d&
&
t<
=15)
t=t+dt;
dogx=dogx+vd*dt*(rabbitx-dogx)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogxb=[dogxb,dogx];
dogy=dogy+vd*dt*(rabbity-dogy)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
dogyb=[dogyb,dogy];
rabbitx=rabbitx-vr*dt/sqrt
(2);
rabbitxb=[rabbitxb,rabbitx];
rabbity=rabbity+vr*dt/sqrt
(2);
rabbityb=[rabbityb,rabbity];
vdog
dogxb;
dogyb;
rabbitxb;
rabbityb;
plot(dogxb,dogyb,rabbitxb,rabbityb,'
*'
第二问,当vdog=15m/s时运行过程如下:
vd=15;
dogx=dogx+vd*dt*(rabbitx-dogx)/sqrt((rabbitx-dogx)^2+(rabbity-dogy)^2);
if(t>
15)
t=-1;
t
第三问,当vdog=18m/s时运行过程如下:
vd=18;