下面是一个使用 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 和截距 b
double 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::c

最低0.47元/天 解锁文章
4641

被折叠的 条评论
为什么被折叠?



