最小二乘法预测c语言,用最小二乘法推导本吧会员增长方程,以预测人数增长情况...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

2楼,在只有一组实验数据,并无其他任何可以辅助进行方程猜测的情况下,线性方程无疑是首选,哪怕进行排除,也要先排除线性关系。,,,这里,我并没有根据数据进行坐标描点,否则,应该能有个大致的猜测方向。

下面按照线性方程的假设,给出验证用的c程序:

#define M 200

# include 

int main()

{

int yue[M]={0};

int ri[M]={0};

int ren[M]={0};

int tian[M]={0};

int i,j,k;

float x,y,A=0.0,B=0.0,C=0.0,D=0.0,delta;

int n;

printf("本程序仅限于07年内使用\n writed by KM for c-bar\n\n");

/*以下输入数据*/

for(i=0;i

printf("请输入月份(0:over):");

scanf("%d",&yue[i]);

if(yue[i]==0) break;

printf("请输入日期:");

scanf("%d",&ri[i]);

printf("请输入人数:");

scanf("%d",&ren[i]);

/*以下根据日期,计算距起始日的天数*/

switch(yue[i])

{

case 1:

tian[i]=ri[i]-27;

break;

case 2:

tian[i]=4+ri[i];

break;

case 3:

tian[i]=4+28+ri[i];

break;

case 4:

tian[i]=4+28+31+ri[i];

break;

case 5:

tian[i]=4+28+31+30+ri[i];

break;

case 6:

tian[i]=4+28+31+30+31+ri[i];

break;

case 7:

tian[i]=4+28+31+30+31+30+ri[i];

default: break;

}

}

/*以下计算ABCDn*/

for(i=0;i

if(yue[i]!=0)

{

A+=tian[i]*tian[i];

B+=tan[i];

C+=tian[i]*ren[i];

D+=ren[i];

n=i;

}

else break;

}

delta=A*n-B*B;

if(fabs(delta)<1e-10)

printf("Error! Divide by zero");

else

{printf("a=%f\n",(C*n-B*D)/delta);

printf("b=%f\n",(A*D-C*D)/delta);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值