最小二乘法进行曲线拟合

最近遇到了曲线拟合的问题,查了一些资料。

比如说下面这个图,曲线比较不平滑,高频成分比较多,不适合进行数学分析。所以可以通过最小二乘法进行多项式拟合。

1.jpg

所谓的拟合其实就是把上面的曲线表示成多项式的形式:

NumberedEquation1.gif

而这个多项式和该曲线的对应各点的距离最短。表示成公式就是这样:

NumberedEquation2.gif

为了求得符合条件的a值,对等式右边求偏导数:

Inline4.gif
Inline7.gif
Inline10.gif

将等式左边进行一下化简,然后应该可以得到下面的等式:

Inline11.gif
Inline14.gif
Inline17.gif

把这些等式表示成矩阵的形式,就可以得到下面的矩阵:

NumberedEquation3.gif

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

NumberedEquation4.gif

也就是说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;

最后看看曲线拟合的效果:

线性拟合|二次项拟合

四次项拟合|八次项拟合

Leave a Reply

Your email address will not be published. Required fields are marked *

*


7 - three =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>