多项式拟合
1 数表的拟合计算
所谓拟合是指寻找一条平滑的曲线,最不失真地去表现测量数据。
反过来说,对测量的实验数据,要对其进行公式化处理,也就是用一种计算方法,构造一个函数来近似表达数表的函数关系。
由于函数构造方法的不同,有许多的逼近方法,机械设计中常用最小平方逼近(最小二乘法理论)来实现曲线的拟合。
根据该理论可推导出计算公式,而MATLAB 在此数学基础上用一个函数命令polyfit 即可实现,命令格式为:
),,(n y x polyfit p =
式中:x 、y 为已知数据,n 为拟合多项式的阶次,p 为返回所得多项式的系数向量,通常多项式拟合中阶数越大,拟合的精度就越高。
例1:在工程技术中,通过实验获得一组)(i i x f y =实验数据如下表1:
表1 实验实测数据
下面程序分别设1=n ,2=n 进行一阶和二阶的拟合,结果如图1所示。
% 曲线拟合(Curve fitting )
x=[0,1,2,3,4,5,6,7,8,9]
y=[0.0,1.2,3.8,8.5,17.1,20.2,34.8,45.0,67.6,85.0]
%绘实验节点数据
plot(x,y,'*r')
hold on
grid
%绘一阶拟合曲线
p1=polyfit(x,y,1)
py1=polyval(p1,x)
plot(x,py1,'g')
hold on
grid
%绘二阶拟合曲线
p2=polyfit(x,y,2)
py2=polyval(p2,x)
plot(x,py2,'b')
grid
hold on
图1 曲线拟合
根据所编制的程序,在MATLAB 的工作空间可得: 1=n 时,]4545.23188
.3[1-=p ,线性拟合得一条直线,即直线方程式为: 4545.23188.31-=x y 2=n 时,]4773.08358
.11648
.0[2-=p ,拟合得一条二次曲线,即曲线方程式为: 4773.08358.11648.022-+=x x y。