用C语言写输入11个点的最小二乘法拟合直线计算工具
时间: 2023-06-28 15:10:07 浏览: 81
以下是用C语言实现输入11个点的最小二乘法拟合直线计算工具的代码,注释中有详细说明:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n = 11; // 点的个数
double x[11] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0}; // x坐标
double y[11] = {1.0, 2.0, 3.0, 4.0, 5.0, 5.5, 6.0, 7.0, 8.0, 9.0, 10.0}; // y坐标
double sum_x = 0.0, sum_y = 0.0, sum_xy = 0.0, sum_xx = 0.0;
for (int i = 0; i < n; i++) {
sum_x += x[i]; // 求x坐标和
sum_y += y[i]; // 求y坐标和
sum_xy += x[i] * y[i]; // 求x*y的和
sum_xx += x[i] * x[i]; // 求x*x的和
}
double a = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x); // 求a的值
double b = (sum_y - a * sum_x) / n; // 求b的值
printf("拟合直线方程为: y = %lfx + %lf\n", a, b); // 输出拟合直线方程
return 0;
}
```
使用时只需将x和y数组中的数据换成自己的数据即可。
阅读全文