敌法饰品:求教c程序解决最小二乘法

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 22:57:46
最好步骤少点,谢谢!

楼上,最小二乘法是将离散数据线性化的一种方法嘛~~~看看统计学或者微积分教程。
用C直接套用y=bx+a中a、b的值就可以了,用两个数组来存储Xi和Yi
//求a、b的分母,x,y为存储数据的数组,len为数据个数
double minroot(double *x,double *y,int len)
{
int i;
double sumx,sumnx;
sumx=0;
sumnx=0;
for (i=0;i<len;i++)
{
sumx+=x[i];
sumnx+=x[i]*x[i];
}
return sumx*sumx-n*sumnx;
}

double mina(double *x,double *y,int len) //求a
{
int i;
double sumxy,sumx,sumy,sumxx;
sumxy=0;
sumx=0;
sumy=0;
sumxx=0;
for (i=0;i<len;i++)
{
sumxy+=x[i]*y[i];
sumx+=x[i];
sumy+=y[i];
sumxx+=x[i]*x[i];
}
return (sumxy*sumx-sumy*sumxx)/minroot(x,y,len);
}

double minb(double *x,double *y,int len) //返回b
{
int i;
double sumx,sumy,sumxy;
sumx=0;
sumy=0;
sumxy=0;
for (i=0;i<len;i++)
{
sumx+=x[i];
sumy+=y[i];
sumxy+=x[i]*y[i];
}
return (sumx*sumy-len*sumxy)/minroot(x,y,len);
}

什么是最小二乘法?