📄 gm11.m
字号:
% GM(1,1)模型
x0=load('data.txt');% 载入原始数据
n=length(x0);
% 一次累加1-GAO
x1(1)=x0(1);
for ii=1:n-1
x1(ii+1)=x1(ii)+x0(ii+1);
end
% 求Y 阵
y=ones(n-1,1);
for ii=2:n
y(ii-1)=x0(ii);
end
% 求B阵
b=ones(n-1,2);
for ii=1:n-1
b(ii,1)=-0.5*(x1(ii)+x1(ii+1));
end
% 求参数a,u
w=inv(b'*b)*b'*y;
a=w(1,1)
u=w(2,1)
% 计算模型x11
m=u/a;
g=x0(1)-m;
x11=ones(n,1);
x11(1)=x0(1);
for ii=1:n-1
x11(ii+1)=exp(-a*ii)*g+m;
end
%还原计算
x00=ones(n,1);
x00(1)=x0(1);
for ii=1:n-1
x00(ii+1)=x11(ii+1)-x11(ii);
end
%模型检验
e=abs(x00-x0) %绝对误差
e1=(e./x0)*100 %相对误差
%关联度检验
mine=min(e);
maxe=max(e);
for jj=1:n
gg(jj)=(mine+0.5*maxe)/(e(jj)+0.5*maxe);
end
r=mean(g)
%后验差检验
s1=std(x0);%原始序列标准差
s2=std(e);%绝对误差序列标准差
c=s2/s1
me=ones(n,1)*mean(e);
ex=abs(e-me);
h=0.674*s1;
k=0;
for kk=1:n
if ex(kk)<h
k=k+1;
end
end
p=k/n
%模型预测
ycn=6;%预测时段长度
yx=zeros(ycn,1);
for dd=1:ycn
yx(dd)=exp((-a*(dd+n-1)))*(1-exp(a))*g;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -