灰色模型学习记录

灰色模型(GM(1,1))学习记录


学习思路:

1.灰色模型的原理
2.灰色模型的求解思路
3.灰色模型的实例分析

一、 灰色模型的建模步骤及原理

1.灰色模型的基本概念
(1)基本定义
灰色系统是介于黑色模型及白色模型之间的,既包含未知信息又包含已知信息同时系统内各因素具有不确定性关系。
(2)一般表达式
GM(a,b):用a阶微分方程去对b个变量进行求解。
(3)基本求解原理
通过对原始数据数列进行处理,生成相关性较强的数据数列,同时建立相关的微分方程,进而预测其未来的发展趋势。
2.灰色模型的建模步骤
(1)把原始数据加工成相关数列
(2)利用生成的相关数列进行求解,得到相应的微分方程参数
(3)利用得到的参数进行求解预测值
(4)对预测值进行相关检验


二、灰色模型的求解思路

1.首先确定一组原始数列数据:
– n为未知数个数在这里插入图片描述

对原始数列进行累加的方式生成具有相关规律的新的数据数列:
在这里插入图片描述
整个序列对应的通式为:
在这里插入图片描述
即每一个对应的数值为原始数据序列对应位置的值以及之前的数值的累加和。
2.同时生成一个新数列的邻均值等权数列
在这里插入图片描述
其中每一个数值就是从第二个数值开始的对应数值于前一个数值的和的一般,对应的通式为:
在这里插入图片描述
3.建立关于t的白化形式一阶一元微分方程GM(1,1)
在这里插入图片描述a,u是我们所要求解的系数,分别为发展系数和灰色作用量,a的有效区间是(-2,2)
4.利用矩阵去求解参数
根据 Y=B*a即下式:
在这里插入图片描述
在这里插入图片描述
求解得到相对应的参数:
在这里插入图片描述
5.得到的参数反代入建立的一阶微分方程中进行求解
解得式子如下列所示:
在这里插入图片描述
利用累减法得到结果:
在这里插入图片描述
6.建立的灰色模型进行精度检验。


三、灰色模型的实际代码


clear
syms a u;
c=[a,u]';%构成矩阵
A=[15 16.1 17.3 18.4 18.7 19.6 19.9 21.3 22.5];%输入数据,可以修改
Ago=cumsum(A);%原始数据一次累加,得到1-AGO序列xi(1)。
n=length(A);%原始数据个数
for k=1:(n-1)
    Z(k)=(Ago(k)+Ago(k+1))/2; %Z(i)为xi(1)的紧邻均值生成序列
end
Yn =A;%Yn为常数项向量
Yn(1)=[]; %从第二个数开始,即x(2),x(3)...
Yn=Yn';
E=[-Z;ones(1,n-1)]';%累加生成数据做均值
c=(E'*E)\(E'*Yn);%利用公式求出a,u
c= c';
a=c(1);%得到a的值
u=c(2);%得到u的值
F=[];
F(1)=A(1);
for k=2:(n)
    F(k)=(A(1)-u/a)/exp(a*(k-1))+u/a;%求出GM(1,1)模型公式
end
G=[];
G(1)=A(1);
for k=2:(n)
    G(k)=F(k)-F(k-1);%两者做差还原原序列,得到预测数据
end
t1=1:n;
t2=1:n;
plot(t1,A,'bo--');
hold on;
plot(t2,G,'r*-'); 
title('预测结果');
legend('真实值','预测值');
%后验差检验
e=A-G;
q=e/A;%相对误差
s1=var(A);
s2=var(e);
c=s2/s1;%方差比
len=length(e);
p=0;  %小误差概率
for i=1:len
    if(abs(e(i))<0.6745*s1)
        p=p+1;
    end
end
p=p/len;

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值