Matlab应用笔记--灰色预测
注:本篇随笔依据《Matlab在数学建模上的应用》中第3章介绍来写,主要简单介绍灰色模型及其Matlab实现
(博客以及Matlab小白,若有不当欢迎指出)
灰色模型(gray model)简介
灰色模型的作用:解决数据预测问题。
灰色模型的优点:实用稳定,不仅适用于大数据量的预测,在数据量比较少时(3个以上即可)预测结果依旧准确。
Matlab中灰色模型的使用
详细流程(熟悉的话可跳过看总结)
(1)先对数据进行预处理。
预处理是指将杂乱无章的数据列通过一定的方法处理,变成有规律的时间序列数据。
常用的数据处理方式有累加和累减两种,通常用累加。
设原始数据列:
累加:
(2)建立的一阶线性微分方程。
在诸多灰色模型中,单序列一阶线性微分方程模型GM(1,1)最为常用。
其中a,u为待定系数,分别称为发展系数和灰色作用量,构造矩阵
(3)建立累加矩阵B和常数项向量Y。
(4)最小二乘法求解灰参数。
(5)将灰参数代入模型求解。
得到:
(6)还原为序列。
(7)检验模型。
也可以直接作图看效果。
(8)利用模型进行预测。
大致流程(总结)
①对原始数据进行累加。(弱化随机性和波动性)
②构建累加矩阵B与常数向量。
③求解灰参数。
④将参数带入预测模型进行数据预测。
模版代码
clear A=[1810,1938,1838,1463]; %数据(必须大于3个) B=cumsum(A); %对向量中的元素累加(第几个等于原来的前几个之和) n=length(A); %数据量(向量长度) for i=1:(n-1) %求相邻数据的均值向量 C(i)=(B(i)+B(i+1))/2; end E=[-C;ones(1,n-1)]; %求累加矩阵B D=A;D(1)=[]; D=D'; %求常数项列向量Y c=(E*E')\(E*D); %求系数矩阵(列向量)a c=c'; %转置(变为行向量) a=c(1);b=c(2); F=[];F(1)=A(1); for i=2:(n+3) %还要预测接下来的3个数据 F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a; %直接带入灰参数得到模型,求数据 end G=[];G(1)=A(1); for i=2:(n+3) G(i)=F(i)-F(i-1); %还原序列(去累加) end t1=1:4; t2=1:7; G %显示根据灰色模型得到的数据 plot(t1,A,'o',t2,G) %作图,将原始数据与灰色模型得到的数据相比较
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了