这篇文章主要介绍了怎么使用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;
}
关于“怎么使用C#最小二乘法拟合曲线成直线”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么使用C#最小二乘法拟合曲线成直线”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。