用c语言实现一个应用到最小二乘法的程序
时间: 2023-05-18 20:07:19 浏览: 154
好的,以下是一个用C语言实现最小二乘法的程序:
#include <stdio.h>
#include <math.h>
#define MAX_POINTS 100
int main()
{
int n, i;
double x[MAX_POINTS], y[MAX_POINTS], sum_x = 0, sum_y = 0, sum_xy = 0, sum_x2 = 0;
double a, b;
printf("请输入数据点的个数(最多%d个):", MAX_POINTS);
scanf("%d", &n);
if (n <= 0 || n > MAX_POINTS) {
printf("输入的数据点个数不合法!\n");
return 1;
}
printf("请输入数据点的坐标(x,y):\n");
for (i = 0; i < n; i++) {
scanf("%lf %lf", &x[i], &y[i]);
sum_x += x[i];
sum_y += y[i];
sum_xy += x[i] * y[i];
sum_x2 += x[i] * x[i];
}
b = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x * sum_x);
a = (sum_y - b * sum_x) / n;
printf("拟合直线的方程为:y = %.2f x + %.2f\n", b, a);
return 0;
}
注意:这个程序只是一个简单的实现,可能存在一些精度问题,实际使用时需要根据具体情况进行调整。
阅读全文