非原创,转载出处 https://blog.csdn.net/WuchangI/article/details/79214882
  • 一、 灰色模型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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

运行结果:

预测数据为:

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

运行结果:

预测数据为:

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绘制的曲线图


码一篇灰色模型的博客相关推荐

  1. django orm级联_第 03 篇:创建 Django 博客的数据库模型

    HelloGitHub-Team 成员--追梦人物 设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库.我们把 ...

  2. 如何写一篇好的技术博客

    在工作过程中,发现对很多东西都一知半解,不是很透澈,到头来很容易模糊,如果有一篇好的技术博客予以总结,一来即使忘记了,回国头来再看,仍然能 够从自己的思路中恢复:二来总结一下,还会发现一些潜在问题:三 ...

  3. 仿站长之家查询源码php,仿站长之家博客 织梦IT资讯博客源码 v1.0

    有福了,给大伙分享个好源码: 仿站长之家博客 织梦IT资讯博客源码,效果相当的炫酷,相当简洁大气高端,模板简单,全部已数据调用,只需后台修改栏目名称即可 模板介绍 仿站长之家博客 织梦IT资讯博客源码 ...

  4. 码龄四年-第一次写博客

    码龄四年第一次写博客 就写三句话这是第二句 祝大家牛转钱坤!!!

  5. redis源码笔记 - initServer - 刘浩de技术博客 - 博客园

    redis源码笔记 - initServer - 刘浩de技术博客 - 博客园 redis源码笔记 - initServer - 刘浩de技术博客 - 博客园 redis源码笔记 - initServ ...

  6. html博客源码_5分钟搭建私人Java博客系统——Tale

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  7. 源码:我的关于NLP的博客(持续更新中...)

    决定上传我平时写的部分源码,不过暂时只打算上传有关NLP的部分,之后随着博客的不断更新,我也会不断更新这篇博客,你可以将这片博客放在你的收藏夹里,这样方便你的浏览 1.关于NLPIR的部分 20160 ...

  8. 34篇Java基础总结博客陪博主入门Java

    博客内容: 1.JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点 2.Java原码.反码.补码 3.Java位运算实例详解--(&).(|).(~).(^).( ...

  9. java个人博客系统源码_Java基于SSM的个人博客系统(源码 包含前后台)

    @ 系统简介 技术点:Java.JSP.SSM框架,实现了个人博客系统 用户角色分为:普通用户.管理员.系统管理员 功能:发博客.博客分类.博客删除.评论.博客管理.日志等 看完本博客,你可以得到: ...

最新文章

  1. python编程主要干嘛的-让孩子学了Python编程有什么用
  2. (二)Maven的安装与环境配置
  3. 三星mzvlb1t0hblr是什么固态_三星T7 Touch 1TB移动固态硬盘评测:新奇又安全的加密方式普及?...
  4. OpenGL从入门到精通--纹理
  5. Could not resolve host: 'localhost 报错解决办法
  6. 元宵节快乐 | 2月15日 星期二 | 携程在国内率先开启混合办公模式;米哈游推出元宇宙品牌;AMD宣布完成对赛灵思的收购...
  7. Purification(CF-330C)
  8. 批处理(bat)实现SQLServer数据库备份与还原
  9. matlab中bitget函数用法_MATLAB基础函数命令
  10. LINUX编译OpenJDK8:cc1plus: all warnings being treated as errors
  11. pix4d空三导入cc_CC(Context Capture)软件安装及空三过程中的十大常见报错与解决方法...
  12. Coin3D相关模块学习
  13. 短信群发助手调试笔记
  14. 11.2.0.3 RAC数据库m000进程报错ORA-04031错误的解决
  15. uac管理员程序_在Windows 10中创建没有UAC提示的管理员模式快捷方式
  16. 现代密码学期末复习26问
  17. HDMI原理详解以及时序流程(视频是三对差分信号,音频Audio是PCM级(无压缩)传输,包含在数据包内,依靠协议规定采样)HDMI可以传输RGB与YUV两种格式
  18. sublime补全java代码快捷键_(转)Sublime Text2 快捷键汇总
  19. 华为手机app显示服务器错误怎么办啊,app服务器错误
  20. javaScript、PHP连接外卖小票打印机方案

热门文章

  1. Wpf BUG:组件“XXX”不具有由 URI“XXX“识别的资源
  2. 航拍拉近拉远镜头_什么是远摄镜头?
  3. Python pta 7-3 s=1+2+3+...+n直到s>=m
  4. 北京市高教学会 计算机精彩片段,史树敏_北京理工大学计算机学院
  5. 亿级流量、高并发与高性能场景下的电商详情页架构_6(Redis Replication)
  6. JZOJ4870. 涂色游戏
  7. 运维监控系统PIGOSS BSM 对“实时数据复制”系统的监控管理
  8. WinMount V2.2.2, 日期2008.02.29
  9. 计算机售电卡端口错误怎么弄,目前Z流行的插卡预付费电表怎么使用售电软件?...
  10. 暑假DIY智能车第三天