最小二乘法 直線擬合 推薦方法

2021-09-10 19:10:41 字數 689 閱讀 5108

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...