⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 预测代码.txt

📁 这是灰色预测代码,一般灰色预测的参数需要应用到矩阵的运算,本代码通过对其变形,使其运算简单化.
💻 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 + -