灰色预测模型【GM(1|灰色预测模型【GM(1,1)模型】 【matlab代码】
- 灰色系统介绍
灰色预测是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
- 灰色预测的概念
- 白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的。
- 黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。
- 灰色系统介于白色和黑色之间,灰色系统内的一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。
- 灰色预测法是一种预测灰色系统的预测方法。
- 灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。
1.累加生成算子(AGO)
2.逆累加生成算子(IAGO)
【灰色预测模型【GM(1|灰色预测模型【GM(1,1)模型】 【matlab代码】】3.均值生成算子(MEAN)
4.级比生成算子
累加生成算子(AGO)
设原始数列为
x ( 0 ) = ( x 0 ( 1 ) , x 0 ( 2 ) , … x 0 ( n ) ) x^{(0)}=\left(x^{0}(1), x^{0}(2), \ldots x^{0}(n)\right) x(0)=(x0(1),x0(2),…x0(n))
令
x ( 1 ) ( k ) = ∑ i = 1 k x ( 0 ) ( i ) , k = 1 , 2 , … , n x ( 1 ) = ( x 1 ( 1 ) , x 1 ( 2 ) , … x 1 ( n ) ) \begin{aligned} x^{(1)}(k) &=\sum_{i=1}^{k} x^{(0)}(i) \quad, k=1,2, \ldots, n \\ x^{(1)} &=\left(x^{1}(1), x^{1}(2), \ldots x^{1}(n)\right) \end{aligned} x(1)(k)x(1)?=i=1∑k?x(0)(i),k=1,2,…,n=(x1(1),x1(2),…x1(n))?
称所得到的新数列为数列x(0)的1次累加生成数列。类似的有
x ( r ) ( k ) = ∑ i = 1 k x ( r ? 1 ) ( i ) , k = 1 , 2 , … , n , r ≥ 1 x^{(r)}(k)=\sum_{i=1}^{k} x^{(r-1)}(i) \quad, k=1,2, \ldots, n, r \geq 1 x(r)(k)=i=1∑k?x(r?1)(i),k=1,2,…,n,r≥1
称为 x^(0)的r次累加生成数列。
累加生成的特点:
??一般经济数列都是非负数列。累加生成能使任意非负数列、摆动的与非摆动的,转化为非减的、递增的。
累减生成(IAGO)
如果原始数列为
x ( 1 ) = ( x 1 ( 1 ) , x 1 ( 2 ) , … x 1 ( n ) ) x^{(1)}=\left(x^{1}(1), x^{1}(2), \ldots x^{1}(n)\right) x(1)=(x1(1),x1(2),…x1(n))
令
x ( 0 ) ( k ) = x ( 1 ) ( k ) ? x ( 1 ) ( k ? 1 ) , k = 2 , 3 , … , n x^{(0)}(k)=x^{(1)}(k)-x^{(1)}(k-1) \quad, k=2,3, \ldots, n x(0)(k)=x(1)(k)?x(1)(k?1),k=2,3,…,n
称所得到的数列 x^(0)为 x^(1)的1次累减生成数列。 可以看出,通过累加数列的到的新数列,可以通过累减生成还原出原始数列。
GM(1,1)模型 灰色系统理论是基于关联空间、光滑离散函数等概念定义灰导数与灰微分方程,进而用离散数据列建立微分方程形式的动态模型,即灰色模型是利用离散随机数经过生成变为随机性被显著削弱而且较有规律的生成数,建立起的微分方程形式的模型,这样便于对其变化过程进行研究和描述。
文章图片
matlab代码
(AGO)
%灰色预测步骤
%输入前期小样本数据
% 做AGO累加处理
%输入预测个数
%运行
clc,clear,close all
y=input('请输入数据');
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:(n-1)
YN(j)=y(j+1);
end;
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=input('请输入需要预测的个数');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2;
ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分比误差为:',num2str(det),'%']);
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
文章图片
推荐阅读
- 灰度关联分析|灰色关联分析原理和MATLAB代码
- 数学建模|灰色关联度矩阵模型及其MATLAB实现
- 数学建模与MATLAB|灰色预测模型及MATLAB实例
- 数学建模与MATLAB|matlab灰色预测关联度
- p2p|大一小白的数模比赛(灰色关联度和灰色预测)附Matlab代码
- PHP MVC架构
- Phalcon模型事务
- Phalcon模型
- Phalcon模型行为
- Phalcon模型事件