最小二乘法-直线拟合-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);
}                

 

参考博文:最小二乘法-直线拟合-C代码实现_用最小二乘法拟合直线方程-CSDN博客

posted @ 2024-12-25 16:20  v亮仔v  阅读(517)  评论(0)    收藏  举报