灰色预测GM(1,1)
% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是GM(1,1)。
% 原始数据的处理方法是一次累加法。y=input('请输入数据');%输入数据请用如例所示形式:[48.7 57.17 68.76 92.15] 
n=length(y); 
yy=ones(n,1); 
yy(1)=y(1); 
for i=2:n  
yy(i)=yy(i-1)+y(i); 
end  
B=ones(n-1,2); 
for i=1:(n-1)  
    
B(i,1)=-(yy(i)+yy(i+1))/2; 
    
B(i,2)=1; 
end 
BT=B'; 
for j=1:n-1 
    
YN(j)=y(j+1); 
end 
YN=YN';  
A=inv(BT*B)*BT*YN; 
a=A(1); 
u=A(2);  
t=u/a;  
t_test=input('请输入需要预测个数:'); 
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:2 
    
ys(j)=yys(j)-yys(j-1); 
end 
x=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:n  
    
det=det+abs(yn(i)-y(i)); 
end  
det=det/(n-1);  
disp(['百分绝对误差为:',num2str(det),'%']); 
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
 
                    
                
                
            
        
浙公网安备 33010602011771号