第4章作业Word文档格式.docx
《第4章作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《第4章作业Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
![第4章作业Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/28/7f72c0fa-4a98-4b5c-b20d-109285955636/7f72c0fa-4a98-4b5c-b20d-1092859556361.gif)
32.9
47.6
84.7
利用上述数据,确定停车行驶距离随速度变化的函数关系,并估计使一辆以110km/h速度行驶的汽车停止下来需要行驶的距离。
题目分析:
停车距离=思考距离+刹车距离,根据题目中的数据,可得停车距离与速度的对应关系为:
停车距离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
%speed
%stoppingdistance
symslax;
m=length(X);
%thenumberofknownpoints
la=sym(0);
fori=1:
m
temp=sym(Y(i));
forj=1:
ifj~=i
temp=temp*(x-X(j))/(X(i)-X(j));
end
la=la+temp;
end
la=expand(la);
la=vpa(p,5)
计算得到的插值函数为:
将
代入插值函数,得停车距离的估计值为88.7m。
(该插值函数与五次多项式拟合结果相同)
使用MATLAB作该函数的图像
scatter(X,Y,'
ezplot(p,[20130])
图像如下所示:
分析:
可以看到,该插值函数是在各个节点处是不太光滑的,这不符合实际上的情况,在之后的三次样条插值法会对此作出改善。
Newton插值法
Newton插值法与Lagrange插值法计算结果是相同的,此处不再赘述,下面仅提供计算方法和MATLAB代码
%Newtoninterpolationpolynomial
symsfxx;
f=zeros(m,m);
f(:
1)=Y'
;
fori=2:
forj=i:
f(j,i)=(f(j,i-1)-f(j-1,i-1))/(X(j)-X(j-i+1));
p=f(1,1);
t=1;
i-1
t=t*(x-X(j));
p=p+f(i,i)*t;
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,代码如下
x=[3045607590120];
y=[10.620.832.147.464.3107.1];
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
t=20:
0.01:
130;
plot(x,y,'
*'
t,spline(x,y,t))
线性拟合
线性拟合的函数形式为
,在本题中,自变量为速度,因变量为停车距离。
根据最小二乘法的原理,拟合函数中各项系数的计算方法如下:
此时系数矩阵为
,
%linearfit
A=[msum(X);
sum(X)sum(X.^2)];
b=[sum(Y);
sum(X.*Y)];
coe=A\b%thevalueofcoefficient
计算结果为
,则线性拟合函数为
代入该拟合函数中,得停车距离的估计值为89.8m。
使用MATLAB作出该拟合函数的图像:
fplot('
-27.7900+1.0691*x'
[20130])
拟合的图形如下
二次多项式拟合
二次多项式拟合的函数形式为为
,同样根据最小二乘原则,函数中各项系数的方程如下所示:
利用MATLAB计算:
%quadraticpolynomialfit
A=[msum(X)sum(X.^2);
sum(X)sum(X.^2)sum(X.^3);
sum(X.^2)sum(X.^3)sum(X.^4)];
sum(X.*Y);
sum(X.^2.*Y)];
可解得
,则函数表达式为
代入该拟合函数中,得停车距离的估计值为91.6m。
-0.3650+0.1985*x+0.0058*x^2'
三次多项式拟合
原理同线性拟合和二次拟合,不再赘述,MATLAB代码如下:
%cubicpolynomial
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)];
sum(X.^2.*Y);
sum(X.^3.*Y)];
解得拟合函数为
代入该拟合函数中,得停车距离的估计值为82.8m。
作出三次多项式拟合函数的图像:
-2.3783+0.3011*x+0.0043*x^2+0'
在三次多项式拟合中,求系数的方程组的系数方程组的系数矩阵(即MATLAB代码中的A)的谱条件数为2.005*1014,显然此时已经是病态方程组,当拟合次数更高时,谱条件数更大,方程组也更加地病态。
从拟合的函数
可以看到,最高次项的系数已经为0了;
从图形中也可以看到,当x较大时,拟合曲线已经偏离了样本点,所以此时已经的拟合函数是没有意义的,或者说是不准确的。
小结:
各方法对速度为110km/h时的停车距离的估计值如下表所示:
方法
Lagrange/Newton插值法
三次样条插值法
估值
88.7
91.9
89.8
91.6
82.8
首先,三次多项式拟合及更高次数的多项式拟合是显然不合适的,前文已有说明,所以显然不能采用该方法。
对于本问题,由于对思考距离、停车距离的测量计算在实际操作中显然是有较大的误差的,而插值法将所取的测量值当做精确值来计算,保留了全部误差,所以结果可能有较大误差。
而拟合法的主要思想是逼近测量数据,使各数据点从总体上最贴近,不要求拟合曲线通过数据点,所以能够在一定程度上消除误差,得到更加客观的结果。
线性拟合和二次多项式拟合的图像如下所示,可以看出,二次拟合的函数曲线与数据点更为贴近,所以在本题中认为二次多项式拟合的估计结果91.6m为最佳估计值。