300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 最小二乘法-直线拟合-推荐方法

最小二乘法-直线拟合-推荐方法

时间:2019-10-21 05:59:18

相关推荐

最小二乘法-直线拟合-推荐方法

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)

{

int i = 0;

double denominator = 0.0;

double sum_xsquared = 0.0;

double sum_y = 0.0;

double sum_x = 0.0;

double sum_xy = 0.0;

for (i = 0; i < num; ++i)

{

sum_xsquared += x[i] * x[i];

sum_y += y[i];

sum_x += x[i];

sum_xy += x[i] * y[i];

}

denominator = (num * sum_xsquared - sum_x * sum_x);

if ( fabs(denominator) <= DEFAULT_EPS )

{

return -1;

}

*a = (num * sum_xy - sum_x * sum_y) / denominator;

*b = (sum_xsquared * sum_y - sum_x * sum_xy) / denominator;

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。