灰色预测模型 matlab 程序灰色模型预测是在数据不呈现一定规律下可以实行的一种建模和预测方法,其预测数据与原始数据存在一定的规律相似性%下面程序是灰色模型 GM(1,1)程序二次拟合和等维新陈代谢改进预测程序,matlab6.5 ,使用本程序请注明,程序存储为 gm1。m%x = [5999,5903,5848,5700,7884];gm1(x); 测试数据 %二次拟合预测 GM(1,1)模型function gmcal=gm1(x)sizexd2 = size(x,2);%求数组长度k=0;for y1=x k=k+1; if k〉1 x1(k)=x1(k-1)+x(k); %累加生成 z1(k-1)=-0.5*(x1(k)+x1(k—1)); %z1 维数减 1,用于计算 B yn1(k-1)=x(k); else x1(k)=x(k); endend%x1,z1,k,yn1sizez1=size(z1,2);%size(yn1);z2 = z1';z3 = ones(1,sizez1)';YN = yn1’; %转置%YNB=[z2 z3];au0=inv(B’*B)*B’*YN;au = au0’;%B,au0,auafor = au(1);ufor = au(2);ua = au(2)./au(1);%afor,ufor,ua %输出预测的 a u 和 u/a 的值constant1 = x(1)—ua;afor1 = -afor;x1t1 = ’x1(t+1)’;estr = 'exp’;tstr = 't’;leftbra = ’(’;rightbra = ')';%constant1,afor1,x1t1,estr,tstr,leftbra,rightbrastrcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra)%输出时间响应方程%******************************************************%二次拟合k2 = 0;for y2 = x1 k2 = k2 + 1; if k2 > k else ze1(k2) = exp(-(k2-1)*afor); endend%ze1sizeze1 = size(ze1,2);z4 = ones(1,sizeze1)’;G=[ze1’ z4];X1 = x1’;au20=inv(G’*G)*G’*X1;au2 = au20';%z4,X1,G,au20Aval = au2(1);Bval = au2(2);%Aval,Bval%输出预测的 A,B 的值strcat(x1t1,'=’,num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,’+’,leftbra,num2str(Bval),rightbra)%输出时间响应方程nfinal = sizexd2—1 + 1;%决定预测的步骤数 5 这个步骤可以通过函数传入%nfinal = sizexd2 — 1 + 1;%预测的步骤数 1for k3=1:nfinal x3fcast(k3) = constant1*exp(afor1*k3)+ua;end%x3fcast%一次拟合累加值for k31=nfinal:—1:0 if k31>1 x31fcast(k31+1) = x3fcast(k31...