
上QQ阅读APP看书,第一时间看更新
4.3 数据拟合
与数据插值类似,数据拟合的目的也是用一个较为简单的函数g(x)去逼近一个未知的函数f(x)。利用已知测量的数据(xi,yi)(i=1,2,…,n),构造函数y=g(x),使得误差δi=g(xi)﹣f(xi)(i=1,2,…,n)在某种意义上达到最小。
一般用得比较多的是多项式拟合,所谓多项式拟合是利用已知测量的数据(xi,yi)(i=1,2,…,n),构造一个m(m<n)次多项式p(x):

使得拟合多项式在各采样点处的偏差的平方和最小。
在MATLAB中,用polyfit函数可以实现最小二乘意义的多项式拟合。polyfit拟合函数求的是多项式的系数向量。该函数的调用格式为

其中,p为最小二乘意义上的n阶多项式系数向量,长度为n+1;x和y为数据点向量,要求是等长的向量;S为采样点的误差结构体,包括R、df和normr分量,分别表示对x进行QR分解为三角元素、自由度和残差。
【例4-14】 在MATLAB中,用polyfit函数实现一个4阶和5阶多项式,在区间[0,3π]内逼近函数f(x)=e﹣0.5xsinx,利用绘图的方法,比较拟合的4阶多项式、5阶多项式和f(x)的区别。
程序代码如下:

程序运行结果如下,图4-6是4阶多项式和5阶多项式拟合f(x)函数的比较结果。


图4-6 4阶多项式和5阶多项式拟合f(x)函数
由上述例题结果可知,用高阶多项式拟合f(x)函数的效果更好,误差小,更加逼近实际函数f(x)。