一元线性最小二乘法c语言程序
时间: 2024-06-16 12:07:03 浏览: 101
一元线性最小二乘法是一种常用的回归分析方法,用于拟合一条直线来描述两个变量之间的关系。下面是一个简单的C语言程序示例,用于实现一元线性最小二乘法:
```c
#include <stdio.h>
// 定义结构体存储数据点
typedef struct {
double x;
double y;
} DataPoint;
// 计算一元线性最小二乘法拟合直线的斜率和截距
void linearRegression(DataPoint data[], int n, double *slope, double *intercept) {
double sumX = 0, sumY = 0, sumXY = 0, sumXX = 0;
// 计算各项累加和
for (int i = 0; i < n; i++) {
sumX += data[i].x;
sumY += data[i].y;
sumXY += data[i].x * data[i].y;
sumXX += data[i].x * data[i].x;
}
// 计算斜率和截距
*slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
*intercept = (sumY - *slope * sumX) / n;
}
int main() {
// 定义数据点数组
DataPoint data[] = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}};
int n = sizeof(data) / sizeof(data);
// 计算拟合直线的斜率和截距
double slope, intercept;
linearRegression(data, n, &slope, &intercept);
// 输出结果
printf("拟合直线方程为:y = %.2fx + %.2f\n", slope, intercept);
return 0;
}
```
这个程序通过定义一个结构体`DataPoint`来存储数据点的x和y值。`linearRegression`函数用于计算一元线性最小二乘法的斜率和截距,通过传入数据点数组和数据点个数,计算得到拟合直线的斜率和截距。最后在`main`函数中调用`linearRegression`函数,并输出拟合直线的方程。
阅读全文