用MATLAB实现灰色预测GM11模型

目录

1. 用Matlab实现GM(1,1)模型算法

 (1) 一次AGO(1-AGO)生成序列,以弱化原始序列的随机性和波动性

 (2) 构造矩阵B和数据向量Yn

 (3) 计算系数a和u

 (4) 累加模型预测结果

 (5) 还原后的预测结果

 2. 检验和判断GM(1,1)模型的精度


1. 用Matlab实现GM(1,1)模型算法

给定原始序列:

 (1) 一次AGO(1-AGO)生成序列,以弱化原始序列的随机性和波动性

用MATLAB实现灰色预测GM11模型_第1张图片

% 作1-AGO生成序列x(1)
for i = 1:n
	x1(i) = sum(x0(1:i));
end

 采用一阶单变量微分方程进行拟合,得到白化方程的GM(1,1)模型:

用MATLAB实现灰色预测GM11模型_第2张图片

 微分方程动态模型为:

用MATLAB实现灰色预测GM11模型_第3张图片

 用MATLAB实现灰色预测GM11模型_第4张图片

% 紧邻均生成
for k = 2:n  % 紧邻均生成z
	z(k) = 0.5*x1(k)+0.5*x1(k-1);
end

 (2) 构造矩阵B和数据向量Yn

用MATLAB实现灰色预测GM11模型_第5张图片

 (3) 计算系数a和u

用MATLAB实现灰色预测GM11模型_第6张图片

% 产生数据矩阵B,计算系数a和u
for i = 1:n-1
	b(i,1) = -z(i+1);
	y(i) = x0(i+1);
end
b(:,2)=1;
y = y’; % 转置为列向量
au = b/y; % 作矩阵除法,计算a和u

 (4) 累加模型预测结果

% 计算GM(1,1)模型x1(k+1)值
yc1(1) = x0(1);
for k = 1:n;
	c = x0(1) – au(2)/au(1);
	yc1(k+1) = c*exp(-au(1)*k)+au(2)/au(1);
end

 (5) 还原后的预测结果

% 计算x0(k+1)值,显示预测结果
yc0(1) = x0(1);
for k = 1:n
	yc0(k+1) = yc1(k+1)-yc1(k);
end
disp(uint16(yc0(2:1:n+1));

 2. 检验和判断GM(1,1)模型的精度

为确保所建灰色模型有较高的精度能应用于预测实际,按灰色理论一般采用三种方法检验判断GM(1,1)模型的精度,分别是残差大小检验;关联度检验和后验差检验。通常关联度要大于0.6,残差、方差越小,模型精度越好。

以计算关联度为例进行介绍

% 计算关联度
max1 = max(abs(e0));
r = 1;
for k = 2:n
	r = r+0.5*max1/(abs(e0(k))+0.5*max1);
end
r/n; % r表示关联度

 灰色系统模型的介绍与证明在前几篇文章中进行了详细介绍,关于更多数学模型的更新与介绍可以关注数模乐园的公主号。

你可能感兴趣的:(数学建模,matlab,开发语言,算法)