最小二乘法C++代码
时间: 2024-03-21 18:36:48 浏览: 107
最小二乘法是一种常用的回归分析方法,用于拟合数据点到一个函数曲线的最佳拟合线。下面是一个简单的最小二乘法的C++代码示例:
```cpp
#include <iostream>
#include <vector>
// 最小二乘法函数
void leastSquares(const std::vector<double>& x, const std::vector<double>& y, double& a, double& b) {
int n = x.size();
double sumX = 0.0, sumY = 0.0, sumXY = 0.0, sumXX = 0.0;
for (int i = 0; i < n; ++i) {
sumX += x[i];
sumY += y[i];
sumXY += x[i] * y[i];
sumXX += x[i] * x[i];
}
double avgX = sumX / n;
double avgY = sumY / n;
double numerator = sumXY - n * avgX * avgY;
double denominator = sumXX - n * avgX * avgX;
a = numerator / denominator;
b = avgY - a * avgX;
}
int main() {
std::vector<double> x = {1.0, 2.0, 3.0, 4.0, 5.0};
std::vector<double> y = {2.0, 3.0, 4.0, 5.0, 6.0};
double a, b;
leastSquares(x, y, a, b);
std::cout << "拟合直线方程为:y = " << a << "x + " << b << std::endl;
return 0;
}
```
这段代码实现了最小二乘法的函数`leastSquares`,通过传入x和y的数据点集合,计算出拟合直线的斜率a和截距b。在`main`函数中,我们给出了一个简单的示例数据集,然后调用`leastSquares`函数计算出拟合直线的参数,并输出结果。
阅读全文