c语言最小二乘法拟合
时间: 2023-08-10 15:02:36 浏览: 58
最小二乘法是一种常用的数据拟合方法,通过最小化误差的平方和来找到数据的最佳函数匹配。在C语言中,可以使用以下代码实现最小二乘法拟合:
```c
#include <stdio.h>
// 定义最小二乘法拟合函数
void leastSquaresFit(int n, double x\[\], double y\[\], double *slope, double *intercept) {
double sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0;
// 计算各项和
for (int i = 0; i < n; i++) {
sumX += x\[i\];
sumY += y\[i\];
sumXY += x\[i\] * y\[i\];
sumX2 += x\[i\] * x\[i\];
}
// 计算斜率和截距
*slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
*intercept = (sumY - *slope * sumX) / n;
}
int main() {
// 示例数据
int n = 5;
double x\[\] = {1, 2, 3, 4, 5};
double y\[\] = {2, 4, 6, 8, 10};
// 调用最小二乘法拟合函数
double slope, intercept;
leastSquaresFit(n, x, y, &slope, &intercept);
// 输出结果
printf("拟合直线的斜率为: %lf\n", slope);
printf("拟合直线的截距为: %lf\n", intercept);
return 0;
}
```
这段代码通过计算最小二乘法的公式,求得拟合直线的斜率和截距。在示例中,给定了5个数据点,x和y分别表示自变量和因变量的值。最后,通过调用`leastSquaresFit`函数,计算得到拟合直线的斜率和截距,并输出结果。
#### 引用[.reference_title]
- *1* *2* *3* [最小二乘法线性拟合及其代码实现(C语言)](https://blog.csdn.net/m0_64770246/article/details/125691073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]