c++最小二乘法代码
·
最小二乘法是一种数学方法,用于拟合数据并找到最佳拟合直线或曲线。下面是一个C语言代码实现最小二乘法的例子:
#include <stdio.h>
#include <math.h>
// 用于存储数据点
struct Data {
double x;
double y;
};
// 用于计算最小二乘法拟合结果
void leastSquares(int n, struct Data data[], double *a, double *b) {
double sumx = 0.0, sumy = 0.0, sumx2 = 0.0, sumxy = 0.0;
for (int i = 0; i < n; i++) {
sumx += data[i].x;
sumy += data[i].y;
sumx2 += pow(data[i].x, 2);
sumxy += data[i].x * data[i].y;
}
*b = (n * sumxy - sumx * sumy) / (n * sumx2 - pow(sumx, 2));
*a = (sumy - (*b) * sumx) / n;
}
int main() {
int n = 6;
struct Data data[6] = { {1,2.1}, {2,2.9}, {3,4.2}, {4,5.1}, {5,6.8}, {6,7.9} };
double a, b;
leastSquares(n, data, &a, &b);
printf("a = %lf, b = %lf\n", a, b);
return 0;
}
更多推荐
所有评论(0)