最小二乘法直线拟合程序c语言,最小二乘法拟合一条直线(C语言代码)

最小二乘法拟合一条直线(C语言代码) #include

#define N 9 //N为要拟合的数据的个数

float X[9] = {1,1.477,1.778,2,2.176,2.301,2.398,2.477,2.638};

float Y[9] = {7.55,8.02,8.41,8.64,8.75,8.79,8.81,8.83,8.87};

float K=0; //拟合直线的斜率

float R=0; //拟合直线的截距

float x_sum_average=0; //数组 X[N] 个元素求和 并求平均值

float y_sum_average=0; //数组 Y[N] 个元素求和 并求平均值

float x_square_sum=0; //数组 X[N] 个个元素的平均值

float x_multiply_y=0; //数组 X[N]和Y[N]对应元素的乘机

float Squre_sum(float c[N]) ;

float Sum_Average(float d[N]);

float X_Y_By(float m[N],float n[N]);

float Squre_sum(float c[N]);

void Line_Fit(void);

void Line_Fit(void)

{

x_sum_average= Sum_Average(X);

y_sum_average= Sum_Average(Y);

x_square_sum = Squre_sum(X);

x_multiply_y = X_Y_By(X,Y);

K = ( x_multiply_y - N * x_sum_average * y_sum_average)/( x_square_sum - N * x_sum_average*x_sum_average );

R = y_sum_average - K * x_sum_average;

printf("K = %f\n",K);

printf("R = %f\n",R);

}

float Sum_Average(float d[N])

{

unsigned int i=0;

float z=0;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值