最小二乘法进行曲线拟合
March 7, 2010 Leave a Comment
最近遇到了曲线拟合的问题,查了一些资料。
比如说下面这个图,曲线比较不平滑,高频成分比较多,不适合进行数学分析。所以可以通过最小二乘法进行多项式拟合。

所谓的拟合其实就是把上面的曲线表示成多项式的形式:
![]()
而这个多项式和该曲线的对应各点的距离最短。表示成公式就是这样:
![]()
为了求得符合条件的a值,对等式右边求偏导数:
![]()
将等式左边进行一下化简,然后应该可以得到下面的等式:
![]()
把这些等式表示成矩阵的形式,就可以得到下面的矩阵:

将这个范德蒙得矩阵化简后可得到:

也就是说X*A=Y,那么A = (X’*X)-1*X’*Y,便可以解得系数A矩阵了,下面看一下matlab程序。
构造Y矩阵:
Y=[219.5000,218.7778,219.0000,218.0000,218.5000,217.5000……]‘;
构造X矩阵:
x=1:n;
x=x’;
x=repmat(x,1,k);
expo=1:k;
expo=repmat(expo,n,1);
X=x.^expo;
X=[ones(n,1),X];
解出A矩阵:
a=inv(X’*X)*X’*Y;
最后看看曲线拟合的效果:
线性拟合|二次项拟合
四次项拟合|八次项拟合



