线性拟合C语言算法最小二乘法拟合一条直线(C语言代码)
#include
#define N 10 //N为要拟合的数据的个数
float X[10] = {1.9,0.8,1.1,0.1,-0.1,4.4,4.6,1.6,5.5,3.4};
float Y[10] = {0.7,-1.0,-0.2,-1.2,-0.1,3.4,0.0,0.8,3.7,2.0};
float K=0; //拟合直线的斜率
float R=0; ...
最小二乘法拟合一条直线(C语言代码)
#include
#define N 10 //N为要拟合的数据的个数
float X[10] = {1.9,0.8,1.1,0.1,-0.1,4.4,4.6,1.6,5.5,3.4};
float Y[10] = {0.7,-1.0,-0.2,-1.2,-0.1,3.4,0.0,0.8,3.7,2.0};
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;
for(i=0;i
本文档为【线性拟合C语言算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。