最小二乘法-直线拟合-C语言
最小二乘法是一种数学统计方法,它通过最小化误差的平方和来寻找数据的最佳函数匹配。具体来说,它用于解决曲线拟合问题,即找到一个函数,使得该函数在给定数据点上的误差(通常是垂直距离)的平方和最小。这种方法广泛应用于数据分析和机器学习等领域,特别是在处理线性回归问题时,最小二乘法是一种非常有效且常用的方法。

假设已知有N个点,设这条直线方程为: y = a·x + b
其中,a和b的计算公式如下:

推导过程见:最小二乘法公式_百度百科 (baidu.com)
算法代码如下:
//------------------------------------------------------------- //功能 : 最小二乘法直线拟合 y = a·x + b, 计算系数a 和 b //参数 : x -- 横坐标的数组 // y -- 纵坐标的数组 // num 是数组包含的元素个数,x[]和y[]的元素个数必须相等 // a,b 都是返回值 //返回 : //------------------------------------------------------------- void leastSquareLinearFit(float x[], float y[], int num, float *a, float *b) { float sum_x2 = 0.0; float sum_y = 0.0; float sum_x = 0.0; float sum_xy = 0.0; for (int i = 0; i < num; i++) { sum_x2 += x[i] * x[i]; sum_y += y[i]; sum_x += x[i]; sum_xy += x[i] * y[i]; } *a = (num * sum_xy - sum_x * sum_y) / (num * sum_x2 - sum_x * sum_x); *b = (sum_x2 * sum_y - sum_x * sum_xy) / (num * sum_x2 - sum_x * sum_x); }
浙公网安备 33010602011771号