最小二乘法拟合数据c语言
时间: 2023-08-26 18:07:18 浏览: 80
好的,关于最小二乘法拟合数据的问题,下面是一段示例的 C 代码,可供参考:
```c
#include <stdio.h>
int main() {
int n; // 数据个数
printf("请输入数据个数n:");
scanf("%d", &n);
double x[n], y[n]; // 保存数据的数组
printf("请输入数据:\n");
for (int i = 0; i < n; ++i) {
scanf("%lf %lf", &x[i], &y[i]);
// 读取数据对(x[i], y[i]),其中%lf表示读取double类型的数据
}
double sx = 0, sy = 0, sxy = 0, sx2 = 0; // 一些统计量
for (int i = 0; i < n; ++i) {
sx += x[i];
sy += y[i];
sxy += x[i] * y[i];
sx2 += x[i] * x[i];
}
double a = (n * sxy - sx * sy) / (n * sx2 - sx * sx); // 拟合直线的斜率
double b = (sy - a * sx) / n; // 拟合直线的截距
printf("拟合直线的方程为:y = %.2f * x + %.2f\n", a, b);
return 0;
}
```
以上代码通过最小二乘法计算了从输入的数据中【拟合直线的】斜率和截距。我们不知道当前问题是否仅限于此类问题,如果需要更多的信息,请告诉我。
阅读全文