在最小二乘的基础上,对误差进行拟合,将误差拟合的系数回代,逼近真实值,这个方法是错的,只是按客户要求做一下。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define M 1000
#define N 6
double A[N]= {
1.0,2.0,3.0,4.0,5.0,6.0},A_fit[N],A_e_fit[N];
double X[M],Y[M],YY[M],Y_e[M];//原始数据
const char PATH[64]="C:/Users/ren/Desktop/j2453/error/";
/**
* 说明:5阶拟合函数
* x:x坐标值
* y:y坐标值
* num:数据个数
* a,b,c,d,e,f:返回拟合系数
*/
void Fit5(double *x, double *y, int num,
double *a, double *b, double *c, double *d, double *e, double *f)
{
double sum_x = 0;
double sum_x2 = 0;
double sum_x3 = 0;
double sum_x4 = 0;
double sum_x5 = 0;
double sum_x6 = 0;
double sum_x7 = 0;
double sum_x8 = 0;
double sum_x9 = 0;
double sum_x10 = 0;
double sum_y = 0;
double sum_xy = 0;
double sum_x2y = 0;
double sum_x3y = 0;
double sum_x4y = 0;
double sum_x5y = 0;
for (int i = 0; i < num; ++i)
{
sum_x += x[i];
sum_x2 += x[i] * x[i];
sum_x3 += x[i] * x[i] * x[i];
sum_x4 += x[i] * x[i] * x[i] * x[i];
sum_x5 += x[i] * x[i] * x[i] * x[i] * x[i];
sum_x6 += x[i] * x[i] * x[i] * x[i] * x[i] * x[i];
sum_x7 += x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i];
sum_x8 += x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i];
sum_x9 += x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i];
sum_x10 += x[i] * x[i] * x[i] * x[i] * x[i] * x[i] * x[i

该程序实现了一个5阶多项式拟合算法,通过最小二乘法对数据进行拟合,并计算误差。在误差计算后,程序尝试对误差进行拟合,更新原始拟合系数。此过程可用于数据分析和模型优化。
最低0.47元/天 解锁文章
761

被折叠的 条评论
为什么被折叠?



