1. 最小二乘法
首先舉個例子。
針對線性最小二乘法即直線擬合,如下圖(來自維基百科)所示:
根據已有的資料(圖中的點),來做出一條最貼近資料發展趨勢的直線。
通過這條直線,我們可以對未來的資料進行**,因為基本會落在這條直線附近。
當然了,最小二乘法不只是直線,還可以是曲線,本文不討論。
2. 求解直線方程
我們現在要做的,就是求解直線方程。
假設已知有n個點,設這條直線方程為: y = a·x + b
其中,a和b的計算公式如下:
3. 演算法**
#define default_eps 1e-15
status leastsquarelinearfit(double *x, double *y, const int num, double *a, double *b)
denominator = (num * sum_xsquared - sum_x * sum_x);
if ( fabs(denominator) <= default_eps )
*a = (num * sum_xy - sum_x * sum_y) / denominator;
*b = (sum_xsquared * sum_y - sum_x * sum_xy) / denominator;
return 0;
}
最小二乘法 直線擬合
功能描述 利用最小二乘法求斜率 xytopx 截距 方法1 xytopy 斜率 ncount 點數 void min2method double xytopy,double xytopx,int x,int y,int ncount graphics.drawline pen,point x i y...
最小二乘法擬合直線 c 程式
point.h class point point類的宣告 float getx float gety friend float linefit point l point,int n point 友元函式 int型變數為點數 private 私有資料成員 float x,y end of poin...
C 最小二乘法直線擬合演算法
測試資料 x2 3456 y0.22 0.38 0.55 0.65 0.70 terminal 粗體為輸出,其它為輸入 請輸入樣本點的數目 5 請輸入樣本點的坐標。x,y 2,0.22 x,y 3,0.38 x,y 4,0.55 x,y 5,0.65 x,y 6,0.70 x bar 4 y bar...