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

📄 gm(1,1).txt

📁 着是一个用VB来实现的灰色模型GM(1,1)的程序
💻 TXT
字号:
#define N 100
#include "math.h"

void main()
{
    int t0,tn,t,n,i,j;
    float a[N],a1[N],b[N-1],b1[N];
    float q[N],z,z11 = 0.0,z12 = 0.0,z21,z22,c1 = 0.0,c2 = 0.0,a0,p = 0.0,u,y = 0.0,yy = 0.0,s1,s2,c,g0,g1,g;
    printf("input qi shi nian t0=");
    scanf("%d",&t0);
    printf("\ninput zhong zhi nian tn=");
    scanf("%d",&tn);
    n=tn-t0+1;
    printf("\n * * * gm(1,1) * * * \n ");
    printf("qi zhi nian:%d--%d nian\n",t0,tn);
    printf("input data:\n");

    for(i=0;i<n;i++)
    {
        printf("data%d:",i);
        scanf("%f",&a[i]);
    }

    a1[0]=a[0];

    for(i=1;i<n;i++)
        a1[i]=a1[i-1]+a[i];

    for(i=0;i<n-1;i++)
        b[i]= -(a1[i]+a1[i+1])/2;

    for(i=0;i<n-1;i++)
    {
        z11+=b[i]*b[i];
        z12+=b[i];
    }

    z22=n-1;z=z11*z22-z12*z12;
    z11=z11/z;z12=-z12/z;z22=z22/z;

    for(i=0;i<n-1;i++)
    {
        c1+=b[i]*a[i+1];
        c2+=a[i+1];
    }

    a0=c1*z22+c2*z12;u=c1*z12+c2*z11;
    printf("= = = xi shu xiang liang = = =\n");
    printf("^a=%f ^u=%f\n",a0,u);
    printf("^x(t+1)= %fe^%ft",a[1]-u/a0,-a0);

    if (a0>0&&u>0||a0<0&&u<0)
        printf("+%f\n",u/a0);
    else printf("%f\n",u/a0);

    for (i=0;i<n-1;i++)
        a1[i+1]=(a[1]-u/a0)*exp(-a0*i)+u/a0;

    for (i=1;i<n;i++)
        b1[i]=a1[i]-a1[i-1];

    for (i=1;i<n;i++)
        q[i]=a[i]-b1[1];

    printf("e  q%\n");

    for(i=1;i<n;i++)
        printf("e(%d)=%f\t\tg(%d)=%f\n",i,q[i],i,q[i]/a[i]*100);

    for(i=0;i<n;i++)
        yy+=a[i]*a[i];

    s1=sqrt((yy-a1[n-1]*a1[n-1]/(float)n)/ (float)n);
    yy=0;

    for(i=1;i<n;i++)
        y+=q[i];

    yy+=q[i]*q[i];
    s2=sqrt((yy-y*y/(float)(n-1))/(float)(n-1));
    c=s2/s1;

    for(i=1;i<n;i++)
        if(abs(q[i]-y/(n-1))<0.6745*s1)
            p+=1;

    p=p/(n-1);

    printf("= = = hou wu cha jian yan = = =\n");
    printf("fang cha bi c= %f\n",c);

    if(c<0.35)  printf("hao\n");
    else if(c<0.5)  printf("he ge\n");
    else if(c<0.65)  printf("mian qiang\n");
    else  printf("bu he ge\n");

    printf("xiao wu cha gai lu p=%f\n",p);

    if(p>0.95)  printf("hao\n");
    else if(p>0.8)  printf("he ge\n");
    else if(p>0.7)  printf("mian qiang\n");
    else  printf("bu he ge\n");

    printf("input zheng zhi nian t=");
    scanf("%d",&t);
      t=t-tn;
    printf("= = =yu ce= = =\n");
    g0=(a[1]-u/a0)*exp(-a0*n)+u/a0;

    for (i=0;i<t-1;i++)
    {
        g=(a[1]-u/a0)*exp(-a0*(n+i+1))+u/a0;
        g1=g-g0;
        printf("^x0(%d)=%f\n",tn+i+2,g1);
        g0=g;
    }

    printf("= = =end = = =\n");

    getch();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -