最小二乘法 多项式拟合 C语言实现
标签:计算方法实验
拟合结果:
/*
本实验根据数组x[], y[]列出的一组数据,用最小二乘法求它的拟合曲线。
近似解析表达式为y = a0 + a1 * x + a2 * x^2 + a3 * x^3;
*/
#include <stdio.h>
#include <math.h>
#define maxn 12
#define rank_ 3
int main(){
double x[maxn] = {
0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55};
double y[maxn] = {
0, 1.27, 2.16, 2.86, 3.44, 3.87, 4.15, 4.37, 4.51, 4.58, 4.02, 4.64};
double atemp[2 * (rank_ + 1)] = {
0}, b[rank_ + 1] = {
0}, a[rank_ + 1][rank_ + 1];
int i, j, k;
for(i = 0; i < maxn; i++){ //
atemp[1] += x[i];
atemp[2] += pow(x[i], 2);
atemp[3] += pow(x[i], 3);
atemp[4] += pow(x[i], 4);
atemp[5] += pow(x[i], 5);
atemp[6] += pow(x[i],