欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > c++最小二乘法

c++最小二乘法

2025/4/9 19:54:16 来源:https://blog.csdn.net/SmartGridequation/article/details/147019598  浏览:    关键词:c++最小二乘法

 下面是一个使用 C++ 实现最小二乘法的示例代码,最小二乘法用于拟合线性回归模型 y = ax + b。

#include <iostream>
#include <vector>// 定义最小二乘法函数
std::pair<double, double> leastSquares(const std::vector<double>& x, const std::vector<double>& y) {int n = x.size();double sumX = 0.0, sumY = 0.0, sumXY = 0.0, sumX2 = 0.0;// 计算所需的总和for (int i = 0; i < n; ++i) {sumX += x[i];sumY += y[i];sumXY += x[i] * y[i];sumX2 += x[i] * x[i];}// 计算斜率 a 和截距 bdouble a = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);double b = (sumY - a * sumX) / n;return std::make_pair(a, b);
}int main() {// 示例数据std::vector<double> x = {1, 2, 3, 4, 5};std::vector<double> y = {2, 4, 6, 8, 10};// 调用最小二乘法函数std::pair<double, double> result = leastSquares(x, y);double a = result.first;double b = result.second;// 输出结果std::cout << "拟合直线方程: y = " << a << "x + " << b << std::endl;return 0;
}    

代码解释

  1. leastSquares 函数:该函数接受两个 std::vector<double> 类型的参数 x 和 y,分别表示自变量和因变量的数据点。在函数内部,首先计算 x 的总和 sumX、y 的总和 sumY、x 与 y 乘积的总和 sumXY 以及 x 的平方和 sumX2。然后根据最小二乘法的公式计算斜率 a 和截距 b,并将它们作为 std::pair<double, double> 类型的结果返回。
  2. main 函数:定义了示例数据 x 和 y,调用 leastSquares 函数进行最小二乘法拟合,得到斜率 a 和截距 b,并将拟合直线方程输出到控制台。

你可以将示例数据替换为你自己的数据,以进行不同数据集的拟合。

 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词