c语言实现曲线拟合的最小二乘法
时间: 2023-09-11 21:04:56 浏览: 120
最小二乘法是一种常见的曲线拟合方法,可以用来确定一条曲线,使得该曲线距离一组给定数据点的误差平方和最小。
下面是一个简单的C语言程序,实现了最小二乘法的曲线拟合:
```c
#include <stdio.h>
#include <math.h>
#define N 10 // 数据点的数量
double x[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 数据点的x坐标
double y[N] = {2.3, 3.5, 4.2, 5.0, 6.1, 6.8, 7.9, 8.7, 9.6, 10.5}; // 数据点的y坐标
// 计算a和b的值
void least_square(double *a, double *b)
{
double sum_x = 0, sum_y = 0, sum_xy = 0, sum_x2 = 0;
for(int i = 0; i < N; i++)
{
sum_x += x[i];
sum_y += y[i];
sum_xy += x[i] * y[i];
sum_x2 += x[i] * x[i];
}
double den = N * sum_x2 - sum_x * sum_x;
*a = (N * sum_xy - sum_x * sum_y) / den;
*b = (sum_x2 * sum_y - sum_xy * sum_x) / den;
}
int main()
{
double a, b;
least_square(&a, &b);
printf("The equation of the line is y = %.2f x + %.2f\n", a, b);
return 0;
}
```
该程序首先定义了一个包含10个数据点的数组,然后通过least_square函数计算出最佳拟合曲线的系数a和b。最后输出拟合曲线的方程式。
需要注意的是,该程序只能用于拟合一条直线,如果需要拟合更高阶的曲线,需要使用多项式拟合方法。
阅读全文