利用Matlab进行灰色预测,基于matlab灰色预测GM(1,1)实现-经管之家官网!

function [y,p,e]=gm_1_1(X,k)

%Build the calculating dieplate for the typical gray model.

%Example [y,p]=gm_1_1([200 250 300 350],2)

%Designed by NIXIUHUI,Dalian Fisher University.

%20 April,2004. Last modified by NXH at 25 September,2004

if nargout>3,error('Too many output argument.');end

if nargin==1,k=1;x_orig=X;

elseif nargin==0|nargin>2

error('Wrong number of input arguments.');

end

x_orig=X;

predict=k;

%AGO process

x=cumsum(x_orig);

%compute the coefficient(a and u)------------------------

n=length(x_orig);

%first generate the matrix B

for i=1:(n-1);

B(i)=-(x(i)+x(i+1))/2;

end

B=[B' ones(n-1,1)];

%then generate the matrix Y

for i=1:(n-1);

y(i)=x_orig(i+1);

end

Y=y';

%get the coefficient. a=au(1) u=au(2)

au=(inv(B'*B))*(B'*Y);

%--------------------------------------------------------

%change the grey model to symbolic expression

coef1=au(2)/au(1);

coef2=x_orig(1)-coef1;

coef3=0-au(1);

costr1=num2str(coef1);

costr2=num2str(abs(coef2));

costr3=num2str(coef3);

eq=strcat(costr1,'+',costr2,'e^',costr3,'*(t-1))');

%comparison of calculated and observed value

for t=1:n+predict

mcv(t)=coef1+coef2*exp(coef3*(t-1));

end

x_mcv0=diff(mcv);

x_mcve=[x_orig(1) x_mcv0];

x_mcv=diff(mcv(1:end-predict));

x_orig_n=x_orig(2:end);

x_c_error=x_orig_n-x_mcv;

x_error=mean(abs(x_c_error./x_orig_n));

if x_error>0.2

disp('model disqualification!');

elseif x_error>0.1

disp('model check out');

else

disp('model is perfect!');

end

%predicting model and plot gragh

plot(1:n,x_orig,'diamond',1:n+predict,x_mcve);

p=x_mcve(end-predict+1:end);

xlabel('CURVE OF GREY MODEL ANALYSIS');

title('GM(1,1)');

grid on

y=eq;

e=x_error;

p=x_mcve(end-predict+1:end);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值