灰色预测模型【GM(1,1)模型】 【matlab代码】
- 灰色系统介绍
灰色系统是由华中科技大学的邓聚龙教授于80年代初创立,该系统作为新兴的横断学科,在短短的二十年里已得到了长足的发展。 其已经成为社会,经济,科教,科技等很多领域进行预测,决策,评估,规划,控制,系统分析和建模的重要方法之一。特别是它对于时间序列短,统计数据少,信息不完全系统的建模与分析,具有非常显著的功效。
灰色预测是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
- 灰色预测的概念
(1)灰色系统、白色系统和黑色系统
- 白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的。
- 黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。
- 灰色系统介于白色和黑色之间,灰色系统内的一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。
(2)灰色预测法
- 灰色预测法是一种预测灰色系统的预测方法。
- 灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。
常见的几种灰色生成类型:
1.累加生成算子(AGO)
2.逆累加生成算子(IAGO)
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∑kx(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∑kx(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:nyy(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:ndet=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分比误差为:',num2str(det),'%']);
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
灰色预测模型【GM(1,1)模型】 【matlab代码】相关推荐
- gm11模型 MATLAB源代码,灰色预测模型 GM(1,1)- 级比检测不通过 - 平移变换常数c的确定(内含代码)...
灰色预测模型 GM(1,1) - 级比检测不通过 - 平移变换常数c的确定(内含代码) 谢谢! (哇-------没注意就5600多访问量了,激动!!!!我的初衷只是想把blog作为我的学习笔记,回首 ...
- gm 1 n 模型matlab,灰色预测模型GM1,n模型的matlab源...
2021-02-22 15:01齐春春 客户经理 function GM1_1(X0) %format long ; [m,n]=size(X0); X1=cumsum(X0); %累加 X2=[]; ...
- 【数学建模】灰色预测模型GM(1,1)附例题分析(MATLAB实现)
目录 一.灰色预测概述 1.灰色系统.白色系统和黑色系统 2.灰色系统与其它学科的比较 3.灰色预测分类及特点 二.灰色预测模型GM(1,1) 1.几个理论 1.1 累加生成数(1-AGO) 1.2 ...
- 灰色预测GM(1,1)模型的java实现代码
@TOC 灰色预测模型 本文以灰色预测GM(1,1)模型为主体,利用java代码实现灰色预测. 实现代码 public class GreyModel {//原始数组的个数private int si ...
- python灰色模型代码_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...
来源公式推导连接 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导 一.前言 本文的目的是用Python和类对灰色预测进行封装 二.原理简述 1.灰 ...
- 灰色预测GM(1,n)模型_python
灰色系统理论及其应用系列博文: 一.灰色关联度分析法(GRA)_python 二.灰色预测模型GM(1,1) 三.灰色预测模型GM(1,n) 四.灰色预测算法改进1-背景值Z 五.灰色预测改进2-三角 ...
- 灰色马尔科夫预测 matlab代码(数据量太少,有局限性)
首先声明,本人只是个刚学matlab不到一周的纯小白,写灰色马尔科夫是因为数学建模培训练题的时候要用到,但是在网上找不到现成的能用的代码(啊没错,我就是那种白嫖党),而且找到的基本都是"付费 ...
- python灰色预测_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...
关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导 一.前言 本文的目的是用Python和类对灰色预测进行封装 二.原理简述 1.灰色预测概述 灰色预 ...
- 【数学建模常用算法】之灰色预测模型GM
作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] 文章目录 一.灰色预测模型GM(1,1) 1.数据检验与数据预处理 1.1 构 ...
- SIR传染模型Matlab代码,sir传染病模型 MATLAB代码运行不了,
问题描述: sir传染病模型 MATLAB代码运行不了, function y=ill(t,x) a=1;b=0.3; y=[a*x(1)*x(2)-b*x(1),-a*x(1)*x(2)]'; ts ...
最新文章
- 谷歌开源 TFGAN,让训练和评估 GAN 变得更加简单
- mysql status改变_mysql 配置详解mysql SHOW STATUS 详解
- ajax只能用get吗,基本的Ajax,但无法使用GET或POST方法
- 在ionic/cordova中使用极光推送插件(jpush)
- 在 远程桌面 权限不足无法控制 UAC 提示时,可使用 计划任务 绕开系统的 UAC 提示...
- 几何深度深度学习的学习之路
- 复制mysql数据目录后无法启动的问题
- 分布式事务处理学习报告
- 使用代理为业务操作添加安全检测
- 用matlab求众数,Matlab求方差,均值,均方差,协方差的函数
- Surrogate mother是代孕妈妈,那么,Surrogate parent呢?
- 网易开源分布式存储系统 Curve,性能彪悍
- 你知道各调的特点吗?
- 【文献译文】OFDM Receiver Using Deep Learning: Redundancy Issues
- 总结了Mybatis,原来知识点也没多少嘛
- 设计模式初探-观察者模式(OBSERVER)又称发布-订阅(Publish-Subscribe)依赖(Dependents)
- 查看 android打包证书签名
- verilog乘法器——基于Booth算法和Wallace树
- android 唤醒屏幕
- 数字图像处理课程实习——傅里叶变换与频域滤波
热门文章
- Unity常用设计模式之代理模式
- 【Promise】自定义 - 手写Promise - Promise.all - Promise(executor)
- Web 前端开发技术 —— JavaScript
- 10种预防癌症的“超级”食品
- call方法PHP,php __call方法如何使用
- 华为鸿蒙有可能成功吗 (by quqi99)
- 强制应用横竖屏的简单设置
- 关于“语义通信”的名词解释
- Python numpy.mat函数方法的使用
- C# WINFORM 主窗口把数据传给子窗口,编辑后再返回主窗口