曲线拟合(curvefitti
g):工程实践中,用测量到的一些离散的数据
xiyii012m求一个近似的函数x来拟合这组数据,要求所得的拟合曲
线能最好的反映数据的基本趋势(即使x最好地逼近fx,而不必满足插值
原则。因此没必要取xiyi,只要使ixiyi尽可能地小)。
原理:给定数据点xiyii012m。求近似曲线x。并且使得近似曲线与fx的偏差最
小。近似曲线在该点处的偏差ixiyi,i12m。
常见的曲线拟合方法1使偏差绝对值之和最小
2使偏差绝对值最大的最小
3使偏差平方和最小
最小二乘法:
按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法称为最小二乘法。推导过程:
1设拟合多项式为:
xa0a1xakxk
f2各点到这条曲线的距离之和,即偏差平方和如下:
3问题转化为求待定系数a0ak对等式右边求ai偏导数,因而我们得到了:
4、把这些等式化简并表示成矩阵的形式,就可以得到下面的矩阵:5将这个范德蒙得矩阵化简后可得到
6也就是说XAY,那么AXX1XY,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。
fMATLAB实现:
MATLAB提供了polyfit()函数命令进行最小二乘曲线拟合。调用格式:ppolyfitxy
pspolyfitxy
psmupolyfitxy
xy为数据点,
为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s包括R(对x进行QR分解的三角元素)、df自由度)、
ormr残差)用于生成预测值的误差估计。psmupolyfitxy
在拟合过程中,首先对x进行数据标准化处理,以在拟合中消除量纲等影响,mu包含标准化处理过程中使用的x的均值和标准差。
polyval为多项式曲线求值函数,调用格式:ypolyvalpxyDELTApolyvalpxs
ypolyvalpx为返回对应自变量x在给定系数P的多项式的值。yDELTApolyvalpxs使用polyfit函数的选项输出s得出误差估计YDELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则YDELTA将至少包含50的预测值。如下给定数据的拟合曲线:x051015202530,y175245381480700860。解:MATLAB程序如下:x051015202530y175245381480700860ppolyfitxy2x10500530y1polyvalpx1plotxyrx1y1b运行结果如图1计算结果为:
p056140828711560即所得多项式为y05614x2008287x115560
f9
8
7
6
5
4
3
2
1
05
1
15
2
25
3
图1最小二乘法曲线拟合示例
对比检验拟合的有效性:
例:在0π区间上对正弦函数进行拟合,然后在02π区r