曲线拟合〔curve-fitting〕:
工程实践中,用测量到的一些离散的数据
{(x , y ),i 0,1, 2,...m}求一个近似的函数(x) 来拟合这组数据,要求所得的拟合曲
线能最好的反映数据的根本趋势〔即使 ( ) 最好地逼近 f x ,而不必满足插值
= y ,只要使 (x ) y 尽可能地小〕。
给定数据点
{(x , y ),i 0,1, 2,...m}
按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为
最小二乘法。
推导过程:
1. 设拟合多项式为:
2. 各点到这条曲线的距离之和,即偏差平方和如下:
3. 问题转化为求待定系数a ... 对等式右边求a 偏导数,因而我们得到了:
4、 把这些等式化简并表示成矩阵的形式,就可以得到下面的矩阵:
5. 将这个范德蒙得矩阵化简后可得到:
6. 也就是说 X*A=Y,那么 A = (X'*X)-1*X'*Y,便得到了系数矩阵 A,同时,我们也
就得到了拟合曲线。
MATLAB 提供了 polyfit〔〕函数命令进行最小二乘曲线拟合。
调用格式:p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)
[p,s,mu]=polyfit(x,y,n)
x,y 为数据点,n 为多项式阶数,返回 p 为幂次从高到低的多项式系数向量 p。x
必须是单调的。矩阵 s 包含 R〔对 x 进行 QR 分解的三角元素〕、df(自由度〕、
normr(残差〕用于生成预测值的误差估量。
[p,s,mu]=polyfit(x,y,n)在拟合过程中,首先对 x 进行数据标准化处理,以在拟合
中排除量纲等影响,mu 包含标准化处理过程中使用的 x 的均值和标准差。
polyval( )为多项式曲线求值函数,调用格式: y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)
y=polyval(p,x)为返回对应自变量 x 在给定系数 P 的多项式的值。
[y,DELTA]=polyval(p,x,s) 使用 polyfit 函数的选项输出 s 得出误差估量 Y DELTA。