灰色预测模型
灰色预测模型
GM(1,1)
x0=[92.81097.66098.80099.28199.53799.53799.817100.000];n=length(x0);lamda=x0(1:n-1)./x0(2:n);range=minmax(lamda);ifrange(1,1)exp(2/(n+2));
error('级比未落入灰色模型的范围内');elsedisp('');
disp('可用G(1,1)建模');endx1=cumsum(x0);fori=2:nz(i)=0.5*(x1(i)+x1(i-1));endB=[-z(2:n)',ones(n-1,1)];Y=x0(2:n)';u=B\Y;x=dsolve('Dx+a*x=b','x(0)=x0');x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});forecast1=subs(x,'t',0:n-1);digits(6);y=vpa(x);exchange=diff(forecast1);forecast=[x0(1),exchange];epsilon=x0-forecast;delta=abs(epsilon./x0);Q=mean(delta);C=std(epsilon,1)/std(x0,1);S1=std(x0,1);S11=S1*0.6745;temp_P=find(abs(epsilon-mean(epsilon))
title('保有量比例与实践序列的关系');
legend('原始数列','模型数列');
可以运行的
知道1999年-2008年的数据,拟合出1999年-2018年的数据。clearsymsab;c=[ab]';A=[0.240.530.720.841.261.757.8537.90];B=cumsum(A);%原始数据累加n=length(A);fori=1:(n-1)
C(i)=(B(i)+B(i+1))/2;%生成累加矩阵end
%计算待定参数的值D=A;D(1)=[];D=D';E=[-C;ones(1,n-1)];c=inv(E*E')*E*D;c=c';a=c(1);b=c(2);
%预测后续数据F=[];F(1)=A(1);fori=2:(n+10)F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;endG=[];G(1)=A(1);fori=2:(n+10)
G(i)=F(i)-F(i-1);%得到预测出来的数据endt1=1999:2008;t2=1999:2018;G
plot(t1,A,'o',t2,G)%原始数据与预测数据的比较
xlabel('年份')
ylabel('利润')