作者:桂。

时间:2017-08-12  08:34:06

链接:http://www.cnblogs.com/xingshansi/p/7348714.html


前言

  灰色模型(Gray model)常用来对数据进行预测,这里简要记录其思路。

一、名称由来

灰色模型(Gray Model),邓聚龙教授1982年提出。
  常见系统分类:
  • 白色系统是指一个系统的内部特征是完全 已知的,即系统的信息是完全充分的。
  • 黑色系统是指一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。
  • 灰色系统内的一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。
通常成灰色预测模型为GM(n,h)模型,常用来预测的是GM(1,1):

二、算法原理

  A-模型建立
有观测序列:
计算一阶累加序列:
其中
假设生成序列的一阶模型(核心思想):
对其积分(连续转化为离散):
从而上式转化为:
其中:
借助矩阵表示:
这便是一个最小二乘求解问题。
   B-参数求解
定义:
计算均值生成序列:
得出参数估计
  C-序列预测
这里取

将其带入上面一阶方程解(参数已求出)

取t为离散值(t = k+1)

这样便完成了预测。

三、代码实现

主函数

clc;clear all;close all
set(0,'defaultfigurecolor','w');
%{
参考:《离散模型与灰色预测模型建模机理》,谢乃明,刘思峰
本程序主要用来计算根据灰色理论建立的模型的预测值。
应用的数学模型是 GM(1,1)。
原始数据的处理方法是一次累加法。
%}
f = @(t,b)(0.3*t.^2+b+0.3*randn(1,length(t)));%定义待预测函数
t = 0:.2:5;
b = 3;
x0 = f(t,b);
x_pre = GM11(x0);
plot(t,x0,'k',t,x_pre,'r--');
xlabel('时间(年)');
ylabel('幅度');
title('GM11预测模型');
legend('原始数据','预测数据');

GM11的function:

function x_pre = GM11(x0)
x0 = x0(:);
n = length(x0);
x1 = cumsum(x0);
for i = 1:n-1
G(i,1) = -(x1(i)+x1(i+1))/2;
G(i,2) = 1;
end
Y = x0(2:end);
belta = pinv(G'*G)*G'*Y;
a = belta(1);
u = belta(2);
%predict
x_pre1 = zeros(n,1);
x_pre = x_pre1;
for k = 0:n-1
x_pre1(k+1) = (x0(1)-u/a)*exp(-a*k)+u/a;
end
x_pre(1) = x0(1);
for k = 1:n-1
x_pre(k+1) = x_pre1(k+1)-x_pre1(k);
end

结果图:

GM11灰色模型的更多相关文章

  1. python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导

    来源公式推导连接 https://blog.csdn.net/qq_36387683/article/details/88554434 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模 ...

  2. R实现灰色预测

    1.简介 预测就是借助于对过去的探讨去推测.了解未来.灰色预测通过原始数据的处理和灰色模型的建立,发现.掌握系统发展规律,对系统的未来状态做出科学的定量预测.对于一个具体的问题,究竟选择什么样的预测模 ...

  3. 【数学建模】灰色系统理论II-Verhulst建模-GM(1,N)-GM(2,1)建模

    灰色系统理论中,GM(1,1)建模很常用,但他是有一定适应范围的. GM(1,1)适合于指数规律较强的序列,只能描述单调变化过程.对于具有一定随机波动性的序列,我们考虑使用Verhulst预测模型,或 ...

  4. NLP&数据挖掘基础知识

    Basis(基础): SSE(Sum of Squared Error, 平方误差和) SAE(Sum of Absolute Error, 绝对误差和) SRE(Sum of Relative Er ...

  5. 3Dmax+blend+WPF综合运用

    原文:3Dmax+blend+WPF综合运用 赛后总结 本人小菜,WPF刚入门,只是写一下最近的项目心得.欢迎各位前辈们前来拍砖指正,感激不敬!先申明,小弟我入门仓促,很多东西也是一知半解,所以很多问 ...

  6. 常见的机器学习&数据挖掘知识点

    原文:http://blog.csdn.net/heyongluoyao8/article/details/47840255 常见的机器学习&数据挖掘知识点 转载请说明出处 Basis(基础) ...

  7. 2019第九届MathorCup数学建模

    题目下载:https://www.lanzous.com/i3taz2j 总共四个问题 问题1 首先附件一中的数据,拿到后肯定感觉棘手.我们的处理方法: 在下面缺失数据的地方我们都认为是问题3中的预测 ...

  8. WPF--3Dmax+blend+WPF综合运用

    引自:http://blog.sina.com.cn/s/blog_95dbdf9e0100we3z.html 本人小菜,WPF刚入门,只是写一下最近的项目心得.欢迎各位前辈们前来拍砖指正,感激不敬! ...

  9. Unreal Engine 4 系列教程 Part 6:动画教程

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

随机推荐

  1. 默认网关和默认路由 —— Cisco CCNA – Default Gateway & Default Routes

    原文:https://www.certificationkits.com/cisco-certification/ccna-articles/cisco-ccna-intro-to-routing-b ...

  2. OAuth 2.0 Authorization Framework RFC

    Internet Engineering Task Force (IETF) D. Hardt, Ed.Request for Comments: 6749 MicrosoftObsoletes: 5 ...

  3. (算法)Partition方法求数组第k大的数

    如题,下面直接贴出代码: #include <iostream> using namespace std; int Partition(int* A,int left,int right) ...

  4. Python访问PostGIS(建表、空间索引、分区表)

    #encoding: utf-8 __author__ = 'Administrator' import psycopg2 import ppygis import datetime import s ...

  5. C语言打印字母金字塔(第一行是A 第二行是ABA ……)

    #include <stdio.h> #include <stdlib.h> int main() { int line;//代表行数 int i; char letter,c ...

  6. 如何使用Flash抓抓狂抓取网页Flash

    运行该软件,如果把鼠标移动到flash的部位浏览器左边顶部没有出现保存按钮,则定位到这个Flash,右击选择播放,暂停,反复一次即可看到. 把flash暂停再播放即可. 如果是QQ空间的漂亮的背景,不 ...

  7. sqlplus的使用

    1.连接数据库 sqlplus / as sysdba 2.连接到远程数据库 sqlplus 用户名/密码@服务命名 3.遇到&会当成变量,一般是不需要的,可以关掉 SQL> set d ...

  8. ZH奶酪:VirtualBox虚拟机与主机ping不通

    6.进入虚拟机的Ubuntu(以下简称VBUbuntu),在VBUbuntu中用ifconfig查看ip地址,在Windows7中用ipconfig查看ip地址. 在VBUbuntu中ping Win ...

  9. serialport控件的详细用法

    http://www.cnblogs.com/jerry-bian/archive/2012/01/10/2317861.html 最近在做通讯协议,关于SerialPort类 DataReceive ...

  10. java面试第五天

    修饰符abstract:抽象的,定义框架不去实现,可以修饰类和方法 abstract修饰类: 会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型 抽象类 ...