编写的一个多变量灰色MGM(1,m)模型代码如下,求教如何改为自适应MGM(1,m)模型。自适应 M GM ( 1, n) 模型的建模过程可描述为: 在原始时间序列X(0)=( x(0)(1) , x(0)(2) ,…, x(0)( n))中,将最老的信息去掉,置入最新的信息x(0)( n+ 1) ,从而得到新的时间序列X(0)=( x(0)(2) , x(0)(3) ,…, x(0)( n+ 1))。以此类推,逐步建立灰色自适应M GM ( 1, n)模型。

QQ截图20141126185534.jpg (98.44 KB, 下载次数: 3)
2017-11-26 18:55 上传
>> clear
>> clc
k=3; %输入待预测的时刻
X0=[32.43 36.97 54.98; 32.26 36.77 54.80; 32.18 36.71 54.70; 32.06 36.57 54.59; 32.06 36.52 54.51; 31.99 36.43 54.44; 31.93 36.35 54.37; 31.82 36.24 54.28; 31.86 36.28 54.28; 31.89 36.27 54.25]; %初始数据序列
[n,m]=size(X0);
for j=1:m c=0;
for i=1:n
c=X0(i,j)+c;
X1(i,j)=c;
end
end
for j=1:m
for i=1:n-1
L(i,j)=(X1(i,j)+X1(i+1,j))/2;
end
end
L=[L,ones(n-1,1)];
for j=1:m
Y(1:n-1,j)=X0(2:n,j);
a(:,j)=inv(L'*L)*L'*Y(1:n-1,j);
end
a=a';
A=a(1:end,1:end-1);
B=a(1:end,end);
S=X1(1,1:end)
if k==1;
Z=S'
elseif k>1
% 计算预测值
Z=(expm(A*(k-1))-expm(A*(k-2)))*(S'+A\B)
else disp('输入错误!')
end
|