C语言写一个使用最小二乘法拟合正弦曲线的代码
时间: 2024-05-16 12:14:46 浏览: 182
以下是使用最小二乘法拟合正弦曲线的C语言代码:
```c
#include <stdio.h>
#include <math.h>
#define N 10 // 样本点数量
#define PI 3.1415926
int main() {
double x[N] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}; // 样本点横坐标
double y[N] = {0.31, 0.45, 0.58, 0.68, 0.74, 0.77, 0.76, 0.71, 0.62, 0.5}; // 样本点纵坐标
double A = 0, B = 0, C = 0, D = 0; // 最小二乘法系数
double f = 0; // 拟合函数
for (int i = 0; i < N; i++) {
A += sin(2 * PI * x[i]);
B += cos(2 * PI * x[i]);
C += y[i] * sin(2 * PI * x[i]);
D += y[i] * cos(2 * PI * x[i]);
}
A /= N;
B /= N;
C /= N;
D /= N;
f = A * sin(2 * PI * x[0]) + B * cos(2 * PI * x[0]) + C * sin(2 * PI * x[0]) + D * cos(2 * PI * x[0]);
printf("拟合函数为:y = %lf*sin(2πx) + %lf*cos(2πx) + %lf\n", A, B, C, D);
printf("拟合函数在x=0.1处的值为:%lf\n", f);
return 0;
}
```
该代码使用最小二乘法求解正弦曲线的拟合函数,其中样本点横坐标和纵坐标分别保存在数组x和y中。首先计算最小二乘法系数A、B、C和D,然后根据这些系数计算拟合函数f。最后输出拟合函数和在x=0.1处的值。
阅读全文