📄 预测代码.txt
字号:
#include <math.h>
#include<stdio.h>
main()
{
int n,i;
double e_avg=0,p;
double a1,b1,q;
double C=0,D=0,E=0,F=0;
double a[30],b[30],c[30],d[30],e[30],f[30];
printf("请输入原始数据的个数:");
scanf("%d",&n);
printf("请输入原始数据:\n");
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
}
for(i=0;i<n;i++)
{
a[i]=100*a[i];
}
b[0]=a[0]; /*计算AGO X(0)*/
for(i=1;i<n;i++)
{
b[i]=b[i-1]+a[i];
}
c[0]=0; /*计算MEAN x(1)*/
for(i=1;i<n;i++)
{
c[i]=(b[i]+b[i-1])/2;
}
for(i=1;i<n;i++) /*计算二级参数包C,D,E,F*/
{
C=C+c[i];
D=D+a[i];
E=E+c[i]*a[i];
F=F+c[i]*c[i];
}
a1=(C*D-(n-1)*E)/((n-1)*F-C*C);/*计算发展系数a与灰做用量b*/
b1=(D*F-C*E)/((n-1)*F-C*C);
q=b1/a1;
for(i=0;i<n+6;i++)
{
d[i]=(a[0]-q)*exp(-a1*i)+q;
}
f[0]=a[0]; /*历年预测值*/
for(i=0;i<n+6;i++)
{
f[i+1]=d[i+1]-d[i];
}
for(i=0;i<n;i++) /*残差计算*/
{
e[i]=(f[i]-a[i])/a[i];
}
for(i=0;i<n;i++) /*平均残差计算*/
{
e_avg=e_avg+fabs(e[i])/n;
}
printf("AGO X的值:\n");
for(i=0;i<n;i++)
{
printf("%lf ",b[i]/100);
}
printf("\n");
printf("MEAN X的值:\n");
for(i=1;i<n;i++)
{
printf("%lf ",c[i]/100);
}
printf("\n");
printf("计算发展系数a与灰做用量b的值:\n");
printf("a=%lf,b=%lf\n",a1,b1/100);
printf("\n");
printf("原始预测值:\n");
for(i=0;i<n+6;i++)
{
printf("%lf ",d[i]/100);
}
printf("\n");
printf("历年预测值:\n");
for(i=0;i<n+6;i++)
{
printf("%lf ",f[i]/100);
}
printf("\n");
printf("残差:\n");
for(i=0;i<n;i++)
{
printf("%lf%% ",e[i]*100);
}
printf("\n");
printf("平均残差:e(avg)=%lf%%\n",e_avg*100);
printf("精度:p=%lf%%\n",(1-e_avg)*100);
printf("\n");
system("pause");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -