软件编程
位置:首页>> 软件编程>> C#编程>> C#最小二乘法拟合曲线成直线的实例

C#最小二乘法拟合曲线成直线的实例

作者:yangzm996  发布时间:2021-10-23 16:20:47 

标签:C#,最小二乘法,曲线,直线

最小二乘法拟合曲线成直线

效果

  • 拟合前

C#最小二乘法拟合曲线成直线的实例

  • 拟合后

C#最小二乘法拟合曲线成直线的实例

传入X轴和Y轴的数据,得到新的Y轴数据。

将X值数据和拟合后的Y轴数据绑带即可。

/// <summary>
       /// 最小二乘法/线性回归,得到新的点
       /// </summary>
       /// <param name="Points"></param>
       /// <param name="err"></param>
       /// <returns></returns>
       private List<double> LinearRegression(List<double> PointsX, List<double> PointsY)
       {
           List<double> Result = null;
           if (PointsX.Count < 2 || PointsY.Count < 2 || PointsX.Count != PointsY.Count)
           {
               return Result;
           }
           double Averagex = 0, Averagey = 0;
           for (int i = 0; i < PointsX.Count; i++)
           {
               Averagex += PointsX[i];
               Averagey += PointsY[i];
           }
           Averagex /= PointsX.Count;
           Averagey /= PointsX.Count;
           double Numerator = 0, Denominator = 0;
           for (int i = 0; i < PointsX.Count; i++)
           {
               Numerator += (PointsX[i] - Averagex) * (PointsY[i] - Averagey);
               Denominator += (PointsX[i] - Averagex) * (PointsX[i] - Averagex);
           }
           double K = Numerator / Denominator;
           double B = Averagey - K * Averagex;
           List<double> temp = new List<double>();
           foreach (var item in PointsX)
           {
               temp.Add(K * item + B);
           }
           Result = temp.ToList();
           return Result;
       }

来源:https://blog.csdn.net/weixin_39448579/article/details/128582213

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com