灰色预测matlab程序
2014.4.11~4.20 预测价格为 5.9535>>; %灰色预测模型程序clearsyms a b;c=[a b]';A=[5.76 5.92 5.91 5.92 5.93 5.93 5.93 5.94 5.94 5.95 5.95 5.94 ];% 原始序列B=cumsum(A);%累加n=length(A);for i=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);%预测 往后预测1个数据(即4.11-4.20价格)F=[];F(1)=A(1);for i=2:(n+1)F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;endG=[];G(1)=A(1);for i=2:(n+1)G(i)=F(i)-F(i-1);endt1=2002:2013;t2=2002:2014;Gplot(t1,A,'o',t2,G)G =5.7600 5.9155 5.9189 5.9224 5.9258 5.9293 5.9327 5.9362 5.9396 5.9431 5.9465 5.9500 5.9535
大神,刚才向你提问的你已帮我解决,已采纳,我还有一个关于灰色预...
function ggx0=[38.95,39.59,39.89,40.64,41.31,42.04,42.91,43.64,49.51,50.38];GM(x0)endfunction GM(x0) %灰色系统GM(1,1)预测T=input('请输入T:');x1=zeros(1,length(x0));B=zeros(length(x0)-1,2);yn=zeros(length(x0)-1,1);hatx0=zeros(1,length(x0)+T);hatx00=zeros(1,length(x0));hatx1=zeros(1,length(x0)+T);epsilon=zeros(length(x0),1);omega=zeros(length(x0),1);for i=1:length(x0)for j=1:ix1(i)=x1(i)+x0(j);%累加生成endendx1for i=1:length(x0)-1B(i,1)=(-1/2)*(x1(i)+x1(i+1));B(i,2)=1;yn(i)=x0(i+1);endhatA=(inv(B'*B))*B'*yn %求a,ufor k=1:length(x0)+Thatx1(k)=(x0(1)-hatA(2)/hatA(1))*exp(-hatA(1)*(k-1))+hatA(2)/hatA(1);endhatx0(1)=hatx1(1);for k=2:length(x0)+Thatx0(k)=hatx1(k)-hatx1(k-1);%累减还原endhatx0 %历史数据的模拟值for i=1:length(x0)%开始检验epsilon(i)=x0(i)-hatx0(i);omega(i)=(epsilon(i)/x0(i))*100;endc=std(epsilon)/std(x0);p=0;for i=1:length(x0)if abs(epsilon(i)-mean(epsilon))<0.6745*std(x0)p=p+1;endendp=p/length(x0)if p>0.95&c<0.35disp('预测精度好,预测值为:')disp(hatx0(length(x0)+T))elseif p>0.85&c<0.5disp('预测精度合格,预测值为:')disp(hatx0(length(x0)+T))elseif p>0.70&c<0.65disp('预测精度勉强合格,预测值为:')disp(hatx0(length(x0)+T))elseif p<=0.7&c>0.65disp('预测精度不合格')endfor i=1:length(x0)hatx00(i)=hatx0(i);endz=1:length(x0);plot(z,x0,'-',z,hatx00,':')text(2,x0(2),'历史数据:实线')text(length(x0)/2,hatx00(length(x0))/2,'模拟数据:虚线')end
谁有灰色马尔可夫和灰色模糊马尔可夫模型预测软件?
clcclear all% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是 GM(1,1)。
% 原始数据的处理方法是一次累加法。
y=[1662.87 2163.4 1965.35 2472.48 2900.66 3034.93 2755.5 3207 3462];%已知数据n=length(y);yy=ones(n,1);yy(1)=y(1);for i=2:nyy(i)=yy(i-1)+y(i);endB=ones(n-1,2);for i=1:(n-1)B(i,1)=-(yy(i)+yy(i+1))/2;B(i,2)=1;endBT=B';for j=1:n-1YN(j)=y(j+1);endYN=YN';A=inv(BT*B)*BT*YN;a=A(1);u=A(2);t=u/a;t_test=4; %需要预测个数i=1:t_test+n;yys(i+1)=(y(1)-t).*exp(-a.*i)+t;yys(1)=y(1);for j=n+t_test:-1:2ys(j)=yys(j)-yys(j-1);endx=1:n;xs=2:n+t_test;yn=ys(2:n+t_test);plot(x,y,'^r',xs,yn,'*-b');det=0;for i=2:ndet=det+abs(yn(i)-y(i));enddet=det/(n-1);disp(['百分绝对误差为:',num2str(det),'%']);disp(['预测值为: ',num2str(ys(n+1:n+t_test))]);输出结果:百分绝对误差为:228.3113%预测值为: 3710.152 3978.2142 4265.6442 4573.8413
您好,请问您知道灰色预测中原始数据级比不在范围之内,然后想编...
展开全部 function GM1_1(X0)%format long ;[m,n]=size(X0); X1=cumsum(X0); %累加 X2=[];for i=1:n-1 X2(i,:)=X1(i)+X1(i+1);endB=-0.5.*X2 ;t=ones(n-1,1);B=[B,t] ; % 求B矩阵YN=X0(2:end) ;P_t=YN./X1(1:(length(X0)-1)) %对原始数据序列X0进行准光滑性检验, %序列x0的光滑比P(t)=X0(t)/X1(t-1)A=inv(B.'*B)*B.'*YN.' ;a=A(1) u=A(2) c=u/a ;b=X0(1)-c ; X=[num2str(b),'exp','(',num2str(-a),'k',')',num2str(c)]; strcat('X(k+1)=',X) %syms k; for t=1:length(X0) k(1,t)=t-1; end kY_k_1=b*exp(-a*k)+c;for j=1:length(k)-1 Y(1,j)=Y_k_1(j+1)-Y_k_1(j);endXY=[Y_k_1(1),Y] %预测值CA=abs(XY-X0) ; %残差数列Theta=CA %残差检验 绝对误差序列XD_Theta= CA ./ X0 %残差检验 相对误差序列AV=mean(CA); % 残差数列平均值R_k=(min(Theta)+0.5*max(Theta))./(Theta+0.5*max(Theta)) ;% P=0.5R=sum(R_k)/length(R_k) %关联度Temp0=(CA-AV).^2 ;Temp1=sum(Temp0)/length(CA);S2=sqrt(Temp1) ; %绝对误差序列的标准差%----------AV_0=mean(X0); % 原始序列平均值Temp_0=(X0-AV_0).^2 ;Temp_1=sum(Temp_0)/length(CA);S1=sqrt(Temp_1) ; %原始序列的标准差TempC=S2/S1*100; %方差比C=strcat(num2str(TempC),'%') %后验差检验 %方差比 %----------SS=0.675*S1 ;Delta=abs(CA-AV) ;TempN=find(Delta<=SS);N1=length(TempN);N2=length(CA);TempP=N1/N2*100;P=strcat(num2str(TempP),'%') %后验差检验 %计算小误差概率 调用例子:X0=[2.874,3.278,3.337,3.39,3.679];GM1_1(X0)