c语言拟合二次方程的代码
时间: 2024-09-29 07:00:18 浏览: 38
在C语言中,拟合二次方程通常涉及到计算最小化误差的系数,比如线性回归模型中的最小二乘法。这里是一个简单的例子,展示如何通过迭代求解线性系统来找到二次函数y = ax^2 + bx + c的最佳系数a、b和c,给定一组数据点(x, y):
```c
#include <stdio.h>
#include <math.h>
// 求解二次方程的系数
void fit_quadratic(double x[], double y[], int n, double *a, double *b, double *c) {
double det, a0, b0, c0;
*a = (*b) = (*c) = 0;
// 使用高斯消元法求解线性系统
for (int i = 0; i < n; ++i) {
det = x[i] * (n - 2 * i);
if (det == 0) { // 如果行列式为0,说明无法拟合该点
printf("Point %d is linearly dependent.\n", i + 1);
continue;
}
// 更新系数矩阵
if (i == 0) {
a0 = y[i];
b0 = x[i] * y[i];
} else {
det *= (*a);
b -= a0 * x[i]; // 移项消除已知系数
c += a0 * y[i]; // 移项消除已知系数
a0 = b;
b = x[i] * b0 - det;
c = y[i] * b0 - a0 * y[i];
}
}
// 最终结果
*a /= det;
*b /= det;
*c /= det;
}
int main() {
double x[] = {1, 2, 3, 4}; // 一些x值
double y[] = {5, 9, 16, 25}; // 对应的y值
int n = sizeof(x) / sizeof(x[0]);
double a, b, c;
fit_quadratic(x, y, n, &a, &b, &c);
printf("Best fit quadratic equation is: y = %.2fx^2 + %.2fx + %.2f\n", a, b, c);
// 可能的相关问题:
阅读全文