MATLAB实现灰色预测程序 很全,很强大,数学建模当中用到的
发布时间:2024-11-10
发布时间:2024-11-10
MATLAB实现灰色预测程序
灰色预测
很好的东西呐,······~~··`~··~~~~~~~~~~~~~~~~~~~~~`````````````
fon [feval,au,ec,C,P]=GM1_1(x, r)
if nrgin<2
myar=0;
end
[mx,nx]=size(x);
if mx==1
x=x';
end
n=length(x);
for i=2:n
z(i-1)=0.5*x1(i)+0.5*x1(i-1);
end
Y=x(2:end);
B(:,1)=-z;
2)/au(1));
yc(1)=x(1);
for k=1:n+myear-1
y1(k+1)=pm*exp(-au*k)+a(2)/au(1);
yc(k+1)=y1(k+1)-y1(k);
end
feval=yc';
ex=ec./x;
r=0;
rou=0.5;
for k=1:n
r=r+rou* s(ec(k))+rou*max(a (ec)));
end
r=r/n;
%原始序列的标准差
s1=std(x);
%计算残差的标准差
s2=std(ec);
%计算C
C=s2/s1;
%计算后验概率
deta=ec-mean(ec);
index=fineta)<0.6745*s1);
P=length(index)/n;
%%
if C<0.35&P>0.95
disp('预测精度为一级')
elsP>0.8
disp('预测精度为二级')
elseif >0.7
disp('预测精度为三级')
else
disp('预测精度过低,需要对模型进行修正')
end
if r>0.6
disp('关联度符合检验要求')
end
t1=1:length(x);
t2=1:lengt);
plot(t1,x,'b--+',t2,feval,'r-o')
legend('原始数据','预测数据')
另一个程序
function [y,p,e]=huise_1_1(X,k) %灰色模型的malab程序
%Example [y,p]=gm_1_1([200 250 300 350],2)
%接口描述: X的预测的初始数列,|X|>4,K是指向后进行预测的个数
%命令格式: 程序保存的文件名,eg:huise.m 则命令是:
huise([579.8 547.5 527.0 492.3
437.0],5)
if nargout>3;
r('Too maoutput argument.');
en
if nargin==1,k=1;x_orig=X;
elseif ==0|nargin>2
errr('Wrong nu arguments.');
end
x_rig=X;
predict=k; %AGO 处理,即是对初始数列进行一阶累加
x=cumsum(x_orig); %计算系数(a 和 u)------------------------
n=leh(x_orig); %生成矩阵 B
for i=1:(n-1);
B(i)=-(x(i)+x(i+1))/2;
en
B=[B' ones(n-1,1)]; %生成矩阵 Y
for i=1:(n-1);
y(i)=x_ori(i+1);
ed
Y=y'; %计算系数 a=au(1) u=au(2)
au=(inv(B'*B))*(B'*Y); %------------------------------------------------------
--
%把huise模型公式转换成符号
coef1=au(2)/au(1);
coef2=x_or (1)-coef1;
co3=0-au(1);
costr1=nm2str(coef1);
costr2=numstr(abs(coef2));
costr3=ntr(coef3);
eq=strcat(ctr1,'+',costr2,'e^',costr3,'*(t-1))');
for t=1:(n+predict)
mcv(t)=co1+coef2*exp(coef3*(t-1));
end
x_mcv0=diff(mcv);
x_mcve=[x_orig(1) x_mcv0]
x_c_error=x_orig_n-x_mcv;
x_errr=mn(abs(x_c_error./x_orig_n));
if x_error>0.2
disp('del disqualification!');
elseif x_error>0.1
dip('model check out');
disp('model is perfect!');
end
plot(1:n,x_orig,'o',1:n+predict,x_mcve);
p=x_mcve(end-predict+1:end);
始数列的点
xlabel('年份(从第一个数据年份起)');
ylabel('产水量(万吨)');
tie('灰度模型 GM(1,1)');
grid on
y=eq;
e=x_error;
p=x_mcve(end-predict+1:end);
所有文档>>学术论文>>会议论文>>
灰色GM(1,N)模型在经济中的预测与应用
http:///p-137710835384.html %计算每一个值 %输出图形中的各点 %相对误差的均值 %画出预测模型和初