《灰色预测(GM)的MATLAB实现》
- 一、 灰色模型GM(1,1)
- 1. 问题
- 2. 分析
- 3. MATLAB实现源代码
- 4. MATLAB绘制的曲线图
- 二、 灰色Verhulst模型(即Logistic模型)
- 1. 问题
- 2. 分析
- 3. MATLAB实现源代码
- 4. MATLAB绘制的曲线图
一、 灰色模型GM(1,1)
1. 问题
请以下表的数据为依据,预测2005-2014年长江的污水排放量(单位:亿吨)。
1995-2004年的长江污水排放量
年份 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 |
---|---|---|---|---|---|---|---|---|---|---|
污水量/亿吨 | 174 | 179 | 183 | 189 | 207 | 234 | 220.5 | 256 | 270 | 285 |
2. 分析
此问题为一个复杂的非线性系统,样本数据量少,但需要预测的时间较长,且污水排放量的变化规律是一个不确定的系统。如果使用神经网络算法很难取得理想的效果,故考虑采用GM预测来预测未来的污水排放量。
3. MATLAB实现源代码
GM(1,1).m
%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';%原始数列 A
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];
n = length(A);%对原始数列 A 做累加得到数列 B
B = cumsum(A);%对数列 B 做紧邻均值生成
for i = 2:nC(i) = (B(i) + B(i - 1))/2;
end
C(1) = [];%构造数据矩阵
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;
c = c';
a = c(1); b = c(2);%预测后续数据
F = []; F(1) = A(1);
for i = 2:(n+10)F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:(n+10)G(i) = F(i) - F(i-1); %得到预测出来的数据
enddisp('预测数据为:');
G%模型检验H = G(1:10);
%计算残差序列
epsilon = A - H;%法一:相对残差Q检验
%计算相对误差序列
delta = abs(epsilon./A);
%计算相对误差Q
disp('相对残差Q检验:')
Q = mean(delta)%法二:方差比C检验
disp('方差比C检验:')
C = std(epsilon, 1)/std(A, 1)%法三:小误差概率P检验
S1 = std(A, 1);
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
disp('小误差概率P检验:')
P = length(tmp)/n%绘制曲线图
t1 = 1995:2004;
t2 = 1995:2014;plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
xlabel('年份'); ylabel('污水量/亿吨');
legend('实际污水排放量','预测污水排放量');
title('长江污水排放量增长曲线');
grid on;
运行结果:
预测数据为:
G =
1 至 14 列
174.0000 172.8090 183.9355 195.7785 208.3839 221.8010 236.0820 251.2825 267.4616 284.6825 303.0122 322.5221 343.2881 365.3912
15 至 20 列
388.9175 413.9585 440.6118 468.9812 499.1772 531.3174
相对残差Q检验:
Q =
0.0234
方差比C检验:
C =
0.1870
小误差概率P检验:
P =
1
4. MATLAB绘制的曲线图
二、 灰色Verhulst模型(即Logistic模型)
1. 问题
将一定量的大肠杆菌菌种接种在液体培养基中,在一定条件下进行培养,观察其生长繁殖规律。细菌悬液的浓度与混浊度成正比,故可用分光亮度计测定细菌悬液的光密度来推知菌液的浓度。每隔5h记录OD600的值,得到下表。请你预测大肠杆菌的数量。
时间点均匀采样/5h | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
细菌培养液吸光度/OD600 | 0.025 | 0.023 | 0.029 | 0.044 | 0.084 | 0.164 | 0.332 | 0.521 | 0.97 | 1.6 | 2.45 | 3.11 | 3.57 | 3.76 | 3.96 | 4 | 4.46 | 4.4 | 4.49 | 4.76 | 5.01 |
2. 分析
此问题涉及生物的生长和繁殖规律,其曲线一般呈S型或变异S型,故考虑使用GM Verhulst模型来预测。
3. MATLAB实现源代码
(以下程序预测到时间点41)
GM_Verhulst.m
%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';%原始数列 A
A = [0.025, 0.023, 0.029, 0.044, 0.084, 0.164, 0.332, 0.521, 0.97, 1.6, 2.45, 3.11, 3.57, 3.76, 3.96, 4, 4.46, 4.4, 4.49, 4.76, 5.01];
n = length(A);%对原始数列 A 做累减得到数列 B
for i = 2:nH(i) = A(i) - A(i - 1);
end
H(1) = [];%对原始数列 A 做紧邻均值生成
for i = 2:nC(i) = (A(i) + A(i-1))/2;
end
C(1) = [];%构造数据矩阵
D = [-C; C.^2];
Y = H; Y = Y';%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(D*D')*D*Y;
c = c';
a = c(1); b = c(2);%得到预测出的数据
F = []; F(1) = A(1);
for i = 2:(n+n)F(i) = (a*A(1))/(b*A(1)+(a - b*A(1))*exp(a*(i-1)));
enddisp('预测数据为:');
F%绘制曲线图
t1 = 0:n-1;
t2 = 0:2*n-1;
plot(t1, A, 'ro'); hold on;
plot(t2, F);
xlabel('时间点均匀采样/5h'); ylabel('细菌培养液吸光度/OD600');
legend('实际数量','预测数量');
title('大肠杆菌培养S形增长曲线');
grid on;
运行结果:
预测数据为:
F =
1 至 14 列
0.0250 0.0416 0.0691 0.1143 0.1880 0.3059 0.4900 0.7658 1.1551 1.6603 2.2492 2.8555 3.4051 3.8485
15 至 28 列
4.1738 4.3963 4.5412 4.6326 4.6891 4.7236 4.7445 4.7571 4.7647 4.7692 4.7720 4.7736 4.7746 4.7752
29 至 42 列
4.7755 4.7757 4.7759 4.7759 4.7760 4.7760 4.7760 4.7760 4.7760 4.7760 4.7760 4.7760 4.7760 4.7760
4. MATLAB绘制的曲线图
《灰色预测(GM)的MATLAB实现》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- 掌握它才说明你真正懂 Elasticsearch
- 使用recon/domains-hosts/baidu_site模块,枚举baidu网站的子域
- iOS 登录功能的实现
- postgresql后期给开发建表的权限问题
- uci数据集_数据分析找不到数据集?快来看这个盘点
- azkaban的操作指南
- telnet黑屏就是通_黑屏的智能农贸市场竟通过验收?市场监管部门:工作力度不够 | 电视问政...
- Maven学习使用Nexus搭建Maven私服
- c语言- I Love GPLT
- VC2012 小助手的破解
- EtherCAT中AX58100烧写xml文件的说明(2)-TwinCAT软件安装
- 【PYTHON】【requests】【自定义authen,requests.auth AuthBase】
- .计算机在生物信息学中的应用,计算机科学在生物信息学中的应用
- Eclipse下载安装配置使用
- 了解一下 Technorati 的后台数据库架构
- Python函数返回多个值的方法
- python去掉字符串中的特殊字符和数字
- ohci之usb_submit_urb
- Linux克隆虚拟机
- 用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper...
热门文章
- IDEA 的 Othere Settings(Default settings)消失了?
- Net2 A Graph Attention Network Method
- C 语言吧 · 问题资料大全
- 提供一个vs6,vs2005,vs2008,office2007可以下载的地址.
- 提升方法boosting
- 高质量的外链是这样做出来的
- Revit建模助手独门绝技,一阳指给构件“ 元素上色 ”
- 什么是modbus通信协议?
- 教育培训python
- Python爬虫学习笔记 (2) [初级] 初识 requests + bs4 + re