第4章作业.docx
- 文档编号:8108768
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:12
- 大小:184.07KB
第4章作业.docx
《第4章作业.docx》由会员分享,可在线阅读,更多相关《第4章作业.docx(12页珍藏版)》请在冰豆网上搜索。
第4章作业
第4章作业
题目描述:
停车过程中汽车行驶的距离包括大脑反应过程中行驶的距离和刹车过程中行驶的距离,两者都是速度的函数,如下表所示:
速度km/h
30
45
60
75
90
120
思考m
5.6
8.5
11.1
14.5
16.7
22.4
刹车m
5.0
12.3
21.0
32.9
47.6
84.7
利用上述数据,确定停车行驶距离随速度变化的函数关系,并估计使一辆以110km/h速度行驶的汽车停止下来需要行驶的距离。
题目分析:
停车距离=思考距离+刹车距离,根据题目中的数据,可得停车距离与速度的对应关系为:
速度km/h
30
45
60
75
90
120
停车距离m
10.6
20.8
32.1
47.4
64.3
107.1
在MATLAB中作出这6个点的散图
%thescatterplot
X=[3045607590120];%thespeed
Y=[10.620.832.147.464.3107.1];%thestoppingdistance
set(0,'defaultfigurecolor','w');%setthebackgroundcolortowhite
scatter(x,y,'*b')
xlabel('Speed(km/h)')
ylabel('Stoppingdistance(m)')
holdon
图形如下:
下面分别使用插值法和拟合法两类方法对一辆以110km/h速度行驶的汽车停止下来需要行驶的距离作出预测。
Lagrange插值法
n次基本插值多项式为:
Lagrange插值多项式取
为基函数,令其权重系数为
,则插值函数如下:
本题中一共有6个点,故采用5次插值。
MATLAB代码如下
%Lagrangepolynomial
formatlong
X=[3045607590120];%speed
Y=[10.620.832.147.464.3107.1];%stoppingdistance
symslax;
m=length(X);%thenumberofknownpoints
la=sym(0);
fori=1:
m
temp=sym(Y(i));
forj=1:
m
ifj~=i
temp=temp*(x-X(j))/(X(i)-X(j));
end
end
la=la+temp;
end
la=expand(la);
la=vpa(p,5)
计算得到的插值函数为:
将
代入插值函数,得停车距离的估计值为88.7m。
(该插值函数与五次多项式拟合结果相同)
使用MATLAB作该函数的图像
X=[3045607590120];
Y=[10.620.832.147.464.3107.1];
set(0,'defaultfigurecolor','w');
scatter(X,Y,'*b')
holdon
ezplot(p,[20130])
xlabel('Speed(km/h)')
ylabel('Stoppingdistance(m)')
图像如下所示:
分析:
可以看到,该插值函数是在各个节点处是不太光滑的,这不符合实际上的情况,在之后的三次样条插值法会对此作出改善。
Newton插值法
Newton插值法与Lagrange插值法计算结果是相同的,此处不再赘述,下面仅提供计算方法和MATLAB代码
%Newtoninterpolationpolynomial
%Lagrangepolynomial
formatlong
X=[3045607590120];%speed
Y=[10.620.832.147.464.3107.1];%stoppingdistance
symsfxx;
m=length(X);%thenumberofknownpoints
f=zeros(m,m);
f(:
1)=Y';
fori=2:
m
forj=i:
m
f(j,i)=(f(j,i-1)-f(j-1,i-1))/(X(j)-X(j-i+1));
end
end
p=f(1,1);
fori=2:
m
t=1;
forj=1:
i-1
t=t*(x-X(j));
end
p=p+f(i,i)*t;
end
p=expand(p);
p=vpa(p,5)
三次样条差值
设f(x)是区间[a,b]上的一个二次连续可微函数。
在区间上给定一组节点:
,设函数:
满足条件:
(1)S(x)在区间[a,b]上存在二阶(m-1阶)的连续导数;
(2)每个子区间[xi−1,xi]上Si(x)都是一个不高于3次(m次)的多项式;
(3)满足插值条件S(xi)=f(xi),i=0,…,n。
则称S(x)为函数f(x)关于节点x0、x1、…、xn的三次(m次)样条插值函数,简称三次(m次)样条。
由于三次样条曲线有连续的一阶和二阶导数,比较符合实际情况,因此主要采取三次样条插值。
使用MATLAB内置函数csape,代码如下
formatlong
x=[3045607590120];%speed
y=[10.620.832.147.464.3107.1];%stoppingdistance
pp=csape(x,y,'second')%usenaturalboundaryconditions
co=pp.coefs
symst
s1=co(1,1)*(t-30)^3+co(1,2)*(t-30)^2+co(1,3)*(t-30)+co(1,4)
s2=co(2,1)*(t-45)^3+co(2,2)*(t-45)^2+co(2,3)*(t-45)+co(2,4)
s3=co(3,1)*(t-60)^3+co(3,2)*(t-60)^2+co(3,3)*(t-60)+co(3,4)
s4=co(4,1)*(t-75)^3+co(4,2)*(t-75)^2+co(4,3)*(t-75)+co(4,4)
s5=co(5,1)*(t-90)^3+co(5,2)*(t-90)^2+co(5,3)*(t-90)+co(5,4)
最终解得样条函数为
将
代入插值函数
中,得停车距离的估计值为91.9m。
使用MATLAB作该插值函数的图像:
%CubicSplineInterpolation
x=[3045607590120];%speed
y=[10.620.832.147.464.3107.1];%stoppingdistance
t=20:
0.01:
130;
plot(x,y,'*',t,spline(x,y,t))
set(0,'defaultfigurecolor','w');%setthebackgroundcolortowhite
xlabel('Speed(km/h)')
ylabel('Stoppingdistance(m)')
图像如下所示:
线性拟合
线性拟合的函数形式为
,在本题中,自变量为速度,因变量为停车距离。
根据最小二乘法的原理,拟合函数中各项系数的计算方法如下:
此时系数矩阵为
,
%linearfit
X=[3045607590120];%speed
Y=[10.620.832.147.464.3107.1];%stoppingdistance
m=length(X);%thenumberofknownpoints
A=[msum(X);sum(X)sum(X.^2)];
b=[sum(Y);sum(X.*Y)];
coe=A\b%thevalueofcoefficient
计算结果为
,则线性拟合函数为
将
代入该拟合函数中,得停车距离的估计值为89.8m。
使用MATLAB作出该拟合函数的图像:
X=[3045607590120];%thespeed
Y=[10.620.832.147.464.3107.1];%thestoppingdistance
set(0,'defaultfigurecolor','w');%setthebackgroundcolortowhite
scatter(X,Y,'*b')
xlabel('Speed(km/h)')
ylabel('Stoppingdistance(m)')
holdon
fplot('-27.7900+1.0691*x',[20130])
拟合的图形如下
二次多项式拟合
二次多项式拟合的函数形式为为
,同样根据最小二乘原则,函数中各项系数的方程如下所示:
利用MATLAB计算:
%quadraticpolynomialfit
X=[3045607590120];%speed
Y=[10.620.832.147.464.3107.1];%stoppingdistance
m=length(X);%thenumberofknownpoints
A=[msum(X)sum(X.^2);sum(X)sum(X.^2)sum(X.^3);sum(X.^2)sum(X.^3)sum(X.^4)];
b=[sum(Y);sum(X.*Y);sum(X.^2.*Y)];
coe=A\b%thevalueofcoefficient
可解得
,则函数表达式为
将
代入该拟合函数中,得停车距离的估计值为91.6m。
使用MATLAB作出该拟合函数的图像:
X=[3045607590120];%thespeed
Y=[10.620.832.147.464.3107.1];%thestoppingdistance
set(0,'defaultfigurecolor','w');%setthebackgroundcolortowhite
scatter(X,Y,'*b')
xlabel('Speed(km/h)')
ylabel('Stoppingdistance(m)')
holdon
fplot('-0.3650+0.1985*x+0.0058*x^2',[20130])
三次多项式拟合
原理同线性拟合和二次拟合,不再赘述,MATLAB代码如下:
%cubicpolynomial
X=[3045607590120];%speed
Y=[10.620.832.147.464.3107.1];%stoppingdistance
m=length(X);%thenumberofknownpoints
A=[msum(X)sum(X.^2)sum(X.^3);
sum(X)sum(X.^2)sum(X.^3)sum(X.^4);
sum(X.^2)sum(X.^3)sum(X.^4)sum(X.^5);
sum(X.^3)sum(X.^4)sum(X.^5)sum(X.^6)];
b=[sum(Y);sum(X.*Y);sum(X.^2.*Y);sum(X.^3.*Y)];
coe=A\b%thevalueofcoefficient
解得拟合函数为
将
代入该拟合函数中,得停车距离的估计值为82.8m。
作出三次多项式拟合函数的图像:
X=[3045607590120];%thespeed
Y=[10.620.832.147.464.3107.1];%thestoppingdistance
set(0,'defaultfigurecolor','w');%setthebackgroundcolortowhite
scatter(X,Y,'*b')
xlabel('Speed(km/h)')
ylabel('Stoppingdistance(m)')
holdon
fplot('-2.3783+0.3011*x+0.0043*x^2+0',[20130])
分析:
在三次多项式拟合中,求系数的方程组的系数方程组的系数矩阵(即MATLAB代码中的A)的谱条件数为2.005*1014,显然此时已经是病态方程组,当拟合次数更高时,谱条件数更大,方程组也更加地病态。
从拟合的函数
可以看到,最高次项的系数已经为0了;从图形中也可以看到,当x较大时,拟合曲线已经偏离了样本点,所以此时已经的拟合函数是没有意义的,或者说是不准确的。
小结:
各方法对速度为110km/h时的停车距离的估计值如下表所示:
方法
Lagrange/Newton插值法
三次样条插值法
线性拟合
二次多项式拟合
三次多项式拟合
估值
88.7
91.9
89.8
91.6
82.8
首先,三次多项式拟合及更高次数的多项式拟合是显然不合适的,前文已有说明,所以显然不能采用该方法。
对于本问题,由于对思考距离、停车距离的测量计算在实际操作中显然是有较大的误差的,而插值法将所取的测量值当做精确值来计算,保留了全部误差,所以结果可能有较大误差。
而拟合法的主要思想是逼近测量数据,使各数据点从总体上最贴近,不要求拟合曲线通过数据点,所以能够在一定程度上消除误差,得到更加客观的结果。
线性拟合和二次多项式拟合的图像如下所示,可以看出,二次拟合的函数曲线与数据点更为贴近,所以在本题中认为二次多项式拟合的估计结果91.6m为最佳估计值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业