GM(1,1)程序设计
来源:互联网 发布:淘宝创想电玩黑店 编辑:程序博客网 时间:2024/03/29 01:10
GM(1,1)是灰色模型中较为常见的模型,下面是程序,x0是数据,可更改。
之前编辑忘了说了,一般就是给定一组数据,自己根据这些数据拟合一个灰色模型,底下的代码可以得到该模型对应的公式。
代码:
% GM(1,1)% 程序有详尽注释clc;clear all;x0=[92.810 97.660 98.800 99.281 99.537 99.537 99.817 100.000];n=length(x0);% 做级比判断,看看是否适合用GM(1,1)建模lamda=x0(1:n-1)./x0(2:n);range=minmax(lamda);% 判定是否适合用一阶灰色模型建模if range(1,1)<exp(-(2/(n+2)))| range(1,2)>exp(2/(n+2)) error('级比没有落入灰色模型的范围内,不适合用GM(1,1)建模');else % 空行输出 disp(' '); disp('可用GM(1,1)建模');end%做AGO累加处理x1=cumsum(x0);for i=2:n %计算紧邻均值,也就是白化背景值 z(i)=0.5*(x1(i)+x1(i-1));endB=[-z(2:n)',ones(n-1,1)];Y=x0(2:n)';% 矩阵做除法,计算发展系数和灰色作用量% 注意:这里是右除不是左除u=B\Y;% 在MATLAB中,用大写字母D表示导数,dsolve函数用来求解符号常微分方程x=dsolve('Dx+a*x=b','x(0)=x0');% subs函数的作用是替换元素,这里是把常量a,b,x0换成具体u(1),u(2),x(1)数值x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});disp('函数:');vpa(x,6)forecast1=subs(x,'t',[0:n-1]);% digits和vpa函数用来控制计算的有效数字的位数digits(6)% y值是AGO形式的(还是累加的)y=vpa(x);% 把AGO输出值进行累减% diff用于对符号表达时进行求导% 但是如果输入的是向量,则表示计算原向量相邻元素的差exchange=diff(forecast1);% 输出灰色模型预测的值disp('输出预测模型预测的值:');forecast=[x0(1),exchange]% 计算残差 epsilon=x0-forecast;% 计算相对误差delta=abs(epsilon./x0);% 检验模型的误差% 检验方法一:相对误差Q检验法disp('相对误差Q检验值:');Q=mean(delta)% 检验方法二:方差比C检验法% 计算标准差函数为std(x,a)% 如果后面一个参数a取0表示的是除以n-1,如果是1就是最后除以ndisp('方差比C检验值:');C=std(epsilon,1)/std(x0,1)% 检验方法三:小误差概率P检验法S1=std(x0,1);S1_new=S1*0.6745;temp_P=find(abs(epsilon-mean(epsilon))<S1_new);disp('小误差概率P检验值:');P=length(temp_P)/n%绘制原始数列和灰色模型预测得出的数列差异折线图plot(1:n,x0,'ro','markersize',11);hold onplot(1:n,forecast,'k-','LineWidth',2.5);grid on;axis tight;xlabel('x');ylabel('y');title('保有量比例与时间序列的时间关系');legend('原始数列','模型数列');
运行结果,程序输出的图形如下所示:
0 0
- GM(1,1)程序设计
- GM(1,1)模型
- 用C#实现GM(1,1)模型
- 灰色预测模型GM(1,1)
- gm(1,1)模型算法实现
- 灰色系统预测GM(1,1)模型
- GM(1,1)算法代码(python)
- 灰色系统预测模型GM(1,1),GM(1,n)及Matlab实现
- 灰色预测GM(1,1)模型实现IML & R
- 灰色系统模型GM(1,1)的R语言实现
- matlab 灰色系统预测 GM(1,1) 数学建模
- 【数学建模】灰色预测GM(1,1)代码
- Java实现GM(1,1)灰色系统模型算法
- matlab 灰色GM(1,1)预测模型 预测房价
- 灰色预测模型--GM(1,1)预测模型
- 灰色预测模型GM(1,1) 与例题分析
- 《Matlab在数学建模中的应用》笔记3-灰色预测(GM(1,1))
- xcode6 GM里面模拟器设置成IP5 IOS7.1的上下黑边
- 揭开EJB-企业级的javabean的神秘面纱,ejb到底是什么
- 数据结构 2____概论
- Java第一周:1.1
- phpExcel中文帮助手册
- uva 11988 - Broken Keyboard (a.k.a. Beiju Text)----链表快速插入
- GM(1,1)程序设计
- Java中的左移右移<<、>>、>>>
- android入门(六) UI线程阻塞及其优化
- Linux下编程获取本地IP地址的常见方法
- 夜跑记录
- hdu5428
- ZOJ 3693 Happy Great BG 要加eps
- Effective C++——条款23(第4章)
- 1034. Head of a Gang (30)