最小二乘法:
原理:
用各个离差的平方和M=Σ[yi-(axi+b)]^2 (i = 1...n)最小来保证每个离差的绝对值都很小。
为求其最小值,可用函数M对a、b求偏导,并令偏导数为0。
整理得(Σxi^2)a+(Σxi)b=Σxiyi;(Σxi)a+nb=Σyi。解出a,b。
a = (n * Σxiyi - Σxi * Σyi) / (n * Σxi^2 - (Σxi)^2);
b = (Σxi * Σxiyi - Σxi^2 * Σyi) / ((Σxi)^2 - Σxi^2 * n);
拟合:
对给定数据点{(Xi,Yi)}(i=0,1,…,m),在取定的函数类Φ 中,求p(x)∈Φ ,使误差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。从几何意义上讲,就是寻求与给定点 {(Xi,Yi)}(i=0,1,…,m)的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。
最小二乘法的Matlab实现 ① 一次函数 使用polyfit(x,y,1) ②多项式函数 使用 polyfit(x,y,n),n为次数 拟合曲线 x=[0.5,1.0,1.5,2.0,2.5,3.0], y=[1.75,2.45,3.81,4.80,7.00,8.60]。 解:MATLAB程序如下: x=[0.5,1.0,1.5,2.0,2.5,3.0]; y=[1.75,2.45,3.81,4.80,7.00,8.60]; p=polyfit(x,y,2) x1=0.5:0.05:3.0; y1=polyval(p,x1); plot(x,y,'*r',x1,y1,'-b') 计算结果为: p =0.5614 0.8287 1.1560 即所得多项式为y=0.5614x^2+0.08287x+1.15560
③非线性函数 使用 lsqcurvefit(fun,x0,x,y)
转自:百度百科。