灰色理论预测模型及GM(1,1)matlab程序
- 格式:docx
- 大小:18.86 KB
- 文档页数:2
GM (1,1)模型中的MATLAB 程序一、GM (1,1)模型的建立:(1)、一次累加生成序列的MA TLAB 命令:>> X0=[142 340 200 500 900 800 490 980 463 1100];>> X1(1)=X0(1)X1 =142>> for k=2:10X1(k)=X1(k-1)+X0(k)endX1 =142 482 682 1182 20822882 3372 4352 4815 5915(2)、由一次累加生成序列紧邻均值生成的)1(Z 的MA TLAB 命令:>> X0=[142 340 200 500 900 800 490 980 463 1100];>> X1(1)=X0(1);>> for k=2:10X1(k)=X1(k-1)+X0(k)Z(k)=(1/2)*(X1(k)+X1(k-1))EndX1 =142 482 682 1182 20822882 3372 4352 4815 5915Z =1.0e+003 *0 0.3120 0.5820 0.9320 1.6320 2.4820 3.12703.86204.58355.3650(3)、GM (1,1)的灰微分方程模型为:b k aZ k X =+)()()1()0(。
设∧α为待估计参数向量,⎥⎦⎤⎢⎣⎡=∧b a α。
利用最小二乘法得到Y B B B ')'(1-∧=α,MA TLAB 程序如下:>> B=[-Z(2:10)',ones(9,1)];>> Y=(X0(2:10))';>> alfa=inv(B'*B)*B'*Yalfa =-0.1062371.6018(4)、GM (1,1)的灰微分方程模型 b k aZ k X =+)()()1()0(的时间相应序列为:ab e a b X k X ak +⋅-=+-∧))1(()1()0()1( 由.6018.371,1062.0=-=b a 令.)1(,)0(u X v a b u -== 计算得到1.3499-=u , 1.3641=v 。
GM(1,1)灰色预测模型IntroductionInitial给定原始序列:x(0) =(x(0)(1), x(0)(2), x(0)(3)…, x(0)(n))Step 1一次AGO(1-AGO)生成序列,以弱化原始序列的随机性和波动性:x(1) =(x(1)(1), x(1)(2), x(1)(3)…, x(1)(n)) Matlab Programclearsyms a b;c=[a b]';fid=fopen('.\Grey Model\test.txt');x0=fscanf(fid,'%f');x0=x0';fclose(fid);x1=cumsum(x0); %原始数据累加n=length(x0);for i=1:(n-1)z(i)=(x1(i)+x1(i+1))/2; %生成累加矩阵end%计算待定参数的值Y=x0;Y(1)=[];Y=Y';B=[-z;ones(1,n-1)];B=B';c=inv(B'*B)*B'*Y;c=c';a=c(1);b=c(2);%预测后续数据%预测之后10个时间单位的数据xx1=[];xx1(1)=x0(1);for i=2:(n+10)xx1(i)=(x0(1)-b/a)/exp(a*(i-1))+b/a; endxx0=[];xx0(1)=x0(1);Step 2(1) dx (1)dt+ax (1)(t )=u ,式中a, u 为待定系数。
灰微分方程模型为:x (0)(k )+az (1)(k )=u ,z 为背景值z (1)(k )=1/2(x (1)(k )+x (1)(k −1))(2) 构造矩阵B 和数据向量Y nY n =Ba ̂Y n =[ x (0)(2)x (0)(3)⋮x (0)(n )] , B =[ −1/2(x (1)(1)+x (1)(2)),−1/2(x (1)(2)+x (1)(3)),⋮−1/2(x (1)(n −1)+x (1)(n )), 1 1 ⋮ 1]a ̂=(au)=(B T B)−1B T Y nStep 3模型响应函数x ̂(1)(k +1)=(x (0)(1)−u a )e −ak +u ax ̂(0)(k +1)=x ̂(1)(k +1)−x ̂(1)(k )Step 4检验和判断GM(1,1)模型的精度 (1) 残差检验for i=2:(n+10)xx0(i)=xx1(i)-xx1(i-1); end%关联度检验 for i=1:ne(i)=abs(x0(i)-xx0(i)); endmmax=max(e); for i=1:nee(i)=0.5*mmax/(e(i)+0.5*mmax); endr=sum(ee)/n; %后验差检验x0bar=sum(x0)/n; s1=0; for i=1:ns1=s1+(x0(i)-x0bar)^2; ends1=sqrt(s1/n); s2=0;ebar=sum(e)/n; for i=1:ns2=s2+(e(i)-ebar)^2; ends2=sqrt(s2/n); C=s2/s1; p=0;for i=1:nif abs(e(i)-ebar)<0.6745*s1绝对误差:ε(k)=|x(0)(k)−x̂(0)(k)|相对误差:Φ(k)=ε(k)x(0)(k)(2) 关联度检验分辨率β一般取0.5,此时若关联度大于0.6则认为模型可接受(3) 后验差检验和小误差概率原始序列标准差:S1=√∑[x(0)(i)−x̅(0)]2n绝对误差序列标准差:S2=√∑[ε(i)−ε̅]2n计算方差比:C=S2S1小误差概率:P=P{|ε(i)−ε̅|<0.6745S1}p=p+1;endendp=p/n;Cpif p>0.95&C<0.35disp('预测精度好');else if p>0.8&C<0.5disp('预测合格');else if p>0.7&C<0.65disp('预测勉强合格'); elsedisp('预测不合格'); endendend%原始数据与预测数据进行比较t1=1:n;t2=1:(n+10);xx0plot(t1,x0,'o',t2,xx0)。
改进的灰色预测GM(1,1)模型的MATLAB实现杨旭【摘要】灰色系统理论中的灰色预测理论已得到了广泛的应用,文章简单介绍了改进的灰色预测GM (1,1)模型,使用MATLAB语言给出了建立模型的算法程序,为高效地利用MATLAB强大的科学计算功能解决一些GM(1,1)模型预测等数据处理问题提供了方便。
【期刊名称】《江苏科技信息》【年(卷),期】2014(000)007【总页数】2页(P69-70)【关键词】灰色预测;GM(1,1)模型;改进模型;MATLAB算法程序【作者】杨旭【作者单位】郑州大学水利与环境学院,河南郑州 450001【正文语种】中文0 引言灰色系统理论[1]是由我国学者邓聚龙教授于1982 年在国际上首先提出来的,用于研究少数据、贫信息的不确定性问题的理论方法。
该理论的主要内容之一就是以GM(1,1)模型为核心的预测模型体系。
该模型在工业、农业、商业等经济领域以及环境、社会等领域中都有广泛应用。
然而在使用GM(1,1)模型进行预测的过程中,也会出现预测模型精度较低的情况。
许多学者提出了改进预测模型精度的方法[2-3]。
其中,杨华龙[4]等学者在分析了以往学者的改进方法后认为虽然以往学者提出的模型改进方法对模型精度的提高有所帮助,但模型预测公式本身存在的缺陷并未得到有效的改进。
因此在分析了GM(1,1)模型预测公式的形成过程后,提出并使用自动寻优定权对背景值进行了选择,使用最小二乘法原理对GM(1,1)模型的初始值进行了改进。
且通过实例结果表明,提出的改进方法是有效和完善的,对GM(1,1)模型的预测精度也有较大的提高。
MATLAB 是美国MathWorks 公司出品的科学计算软件,具有强大的科学计算功能和出色的图形处理功能,被广泛地应用于教学和科研之中,是人们进行科学计算等工作的强大有力的工具。
鉴于此,本文使用MATLAB 语言编写算法,实现改进的灰色预测GM(1,1)模型的程序化,有利于相关学者在实际工作中方便使用改进的GM(1,1)模型,进行便捷而又科学地开展预测等研究工作。
灰⾊模型预测GM(1,1)MATLAB程序代码版权所有引⽤请注明出处function gmcal=gm1(x)%% ⼆次拟合预测GM(1,1)模型%x = [5999,5903,5848,5700,7884];sizexd2 = size(x,2);%求数组长度k=0;for y1=xk=k+1;if k>1x1(k)=x1(k-1)+x(k);%累加⽣成z1(k-1)=-0.5*(x1(k)+x1(k-1));%z1维数减1,⽤于计算Byn1(k-1)=x(k);elsex1(k)=x(k);endend%x1,z1,k,yn1sizez1=size(z1,2);%size(yn1);z2 = z1';z3 = ones(1,sizez1)';YN = yn1'; %转置B=[z2 z3];au0=inv(B'*B)*B'*YN;au = au0';afor = au(1);ufor = au(2);ua = au(2)./au(1);constant1 = x(1)-ua;afor1 = -afor;x1t1 = 'x1(t+1)';estr = 'exp';tstr = 't';leftbra = '(';rightbra = ')';strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应⽅程k2 = 0;for y2 = x1k2 = k2 + 1;if k2 > kelseze1(k2) = exp(-(k2-1)*afor);endendsizeze1 = size(ze1,2);z4 = ones(1,sizeze1)';G=[ze1' z4];X1 = x1';au20=inv(G'*G)*G'*X1;au2 = au20';Aval = au2(1);Bval = au2(2);strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(Bval),rightbra) %输出时间响应⽅程nfinal = sizexd2-1 + 1; %决定预测的步骤数5 这个步骤可以通过函数传⼊%nfinal = sizexd2 - 1 + 1;%预测的步骤数 1for k3=1:nfinalx3fcast(k3) = constant1*exp(afor1*k3)+ua;end%⼀次拟合累加值for k31=nfinal:-1:0if k31>1x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);elseif k31>0x31fcast(k31+1) = x3fcast(k31)-x(1);elsex31fcast(k31+1) = x(1);endendendx31fcast%⼀次拟合预测值for k4=1:nfinalx4fcast(k4) = Aval*exp(afor1*k4)+Bval;end%x4fcastfor k41=nfinal:-1:0if k41>1x41fcast(k41+1) = x4fcast(k41)-x4fcast(k41-1);elseif k41>0x41fcast(k41+1) = x4fcast(k41)-x(1);elsex41fcast(k41+1) = x(1);endendendx41fcast,x%⼆次拟合预测值%***精度检验p C************//////////////////////////////////k5 = 0;for y5 = xk5 = k5 + 1;if k5 > sizexd2elseerr1(k5) = x(k5) - x41fcast(k5);endend%err1%绝对误差xavg = mean(x);%xavg%x平均值err1avg = mean(err1);%err1avg%err1平均值k5 = 0;s1total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexd2elses1total = s1total + (x(k5) - xavg)^2;endends1suqare = s1total ./ sizexd2;s1sqrt = sqrt(s1suqare);%s1suqare,s1sqrt%s1suqare 残差数列x的⽅差 s1sqrt 为x⽅差的平⽅根S1k5 = 0;s2total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexd2elses2total = s2total + (err1(k5) - err1avg)^2;endends2suqare = s2total ./ sizexd2;%s2suqare 残差数列err1的⽅差S2Cval = sqrt(s2suqare ./ s1suqare);Cval%nnn = 0.6745 * s1sqrt%Cval C检验值k5 = 0;pnum = 0 ;for y5 = xk5 = k5 + 1;if abs( err1(k5) - err1avg ) < 0.6745 * s1sqrtpnum = pnum + 1;%ppp = abs( err1(k5) - err1avg )elseendendpval = pnum ./ sizexd2;pval%p检验值%arr1 = x41fcast(1:6)%预测结果为区间范围预测步长和数据长度可调整程序参数进⾏改进。
人工智能及识别技术ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES1灰色预测模型GM (1,1)灰色系统理论是研究解决灰色系统分析、建模、预测、决策和控制的理论,由我国邓聚龙教授在1982年首次提出的。
灰色系统理论具有所需样本数据少,不需要计算统计特征量等优点。
灰色预测解决了连续微分方程的建模问题。
它通过原始数据的整理来寻找数的规律。
在建模时,首先对原始数据进行累加或累减生成,形成新的序列,对新序列建立微分方程模型和解析分析,达到预测原始序列的目的。
其中GM (1,1)模型是基于灰色系统理论的常用预测模型。
因为它具有要求原始数据少、不考虑分布规律、不考虑变化趋势、运算方便、短期精度高、易于检查的优点,得到了广泛的应用。
它的基本原理是:认为原始数列是逐步增长或减少的,通过对原始数列应用累加生成这样的数据处理方法可以得到一条具有指数增长规律的上升形状数列。
由于一阶微分方程的解即是指数增长形式,因此通过建立一阶微分方程模型和累减生成还原就可以得到预测数列。
2GM (1,1)模型的建立(1)对随机序列(i=0,1,2…n )作一次累加(1…AGO)生成序列(i=0,1,2…n ),其中。
(2)按照X i (1)的指数增长规律,可知X i (1)满足下列一阶线性微分方程。
(X(1)是时间t 的函数,这是灰色方程,部分数据未知)(3)参数估计:记待定,经离散化处理,得:Y n=BA.使用最小二乘法求出A 的近似解:,将近似值代入原微分方程:(*)(原微分方程的白化方程)其中(4)Xi (1)的预测值:求解微分方程(*)得到原微分方程的近似解,其中X 1(1)=X 1(0);写成离散形式,得到X i (1)的预测值:(5)X i(0)的预测值:3应用实例用Matlab 实现GM (1,1)灰色模型的供电量预测梁智勇(广东电网公司肇庆供电局,肇庆526040)摘要:介绍灰色预测模型GM (1,1)在电力系统中的预测应用,同时在Matlab 平台上实现了灰色模型GM (1,1)函数的编制。
GM(1,1)灰色预测法理论及matlab语言程序
王文冬;杨颖显
【期刊名称】《黑龙江科技信息》
【年(卷),期】2013(0)29
【摘要】本文通过对GM(1,1)灰色水质预测法研究进展的相关介绍,分析了
GM(1,1)灰色水质预测法模型理论研究,并实现了GM (1,1)灰色模型的matlab程序化。
【总页数】1页(P170-170)
【作者】王文冬;杨颖显
【作者单位】沈阳建筑大学市政与环境工程学院,辽宁沈阳 110168;沈阳建筑大学市政与环境工程学院,辽宁沈阳 110168
【正文语种】中文
【相关文献】
1.基于MATLAB的灰色预测GM(1,1)模型在经济分析中的应用 [J], 宋秀英
2.灰色预测系统GM(1,1)模型及其Matlab实现 [J], 殷鹏远
3.用MATLAB实现灰色预测GM(1,1)模型 [J], 唐丽芳;贾冬青;孟庆鹏
4.改进的灰色预测GM(1,1)模型的MATLAB实现 [J], 杨旭
5.福建省2030年碳达峰前二氧化碳排放趋势研究——基于GM(1,1)、GM(2,1)与GM(1,1)邓聚龙灰色预测模型 [J], 柳尧云;林润玮;阎虎勤
因版权原因,仅展示原文概要,查看原文内容请购买。
数学建模-灰⾊预测模型GM(1,1)_MATLAB %GM(1,1).m%建⽴符号变量a(发展系数)和b(灰作⽤量)syms a b;c = [a b]';%原始数列 AA = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填⼊已有的数据列!n = length(A);%对原始数列 A 做累加得到数列 BB = cumsum(A);%对数列 B 做紧邻均值⽣成for i = 2:nC(i) = (B(i) + B(i - 1))/2;endC(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) %这⾥10代表向后预测的数⽬,如果只预测⼀个的话为1F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;end%对数列 F 累减还原,得到预测出的数据G = []; G(1) = A(1);for i = 2:(n+10) %10同上G(i) = F(i) - F(i-1); %得到预测出来的数据enddisp('预测数据为:');G%模型检验H = G(1:10); %这⾥的10是已有数据的个数%计算残差序列epsilon = A - H;%法⼀:相对残差Q检验%计算相对误差序列delta = abs(epsilon./A);%计算相对误差Qdisp('相对残差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;%⽤⾃⼰的,如1 2 3 4 5...t2 = 1995:2014;%⽤⾃⼰的,如1 2 3 4 5... plot(t1, A,'ro'); hold on;plot(t2, G, 'g-');xlabel('年份'); ylabel('污⽔量/亿吨');legend('实际污⽔排放量','预测污⽔排放量'); title('长江污⽔排放量增长曲线'); %都⽤⾃⼰的grid on;。
【数学建模】day14-建⽴GM(1,1)预测评估模型应⽤学习建⽴GM(1,1)灰⾊预测评估模型,解决实际问题:SARS疫情对某些经济指标的影响问题⼀、问题的提出 2003 年的 SARS 疫情对中国部分⾏业的经济发展产⽣了⼀定影响,特别是对部分疫情较严重的省市的相关⾏业所造成的影响是显著的,经济影响主要分为直接经济影响和间接影响。
直接经济影响涉及商品零售业、旅游业、综合服务等⾏业。
很多⽅⾯难以进⾏定量的评估,现仅就 SARS 疫情较重的某市商品零售业、旅游业和综合服务业的影响进⾏定量的评估分析。
究竟 SARS 疫情对商品零售业、旅游业和综合服务业的影响有多⼤,已知某市从 1997 年 1 ⽉到 2003 年 12 ⽉的商品零售额、接待旅游⼈数和综合服务收⼊的统计数据如下⾯三表所⽰。
试根据这些历史数据建⽴预测评估模型,评估 2003 年 SARS 疫情给该市的商品零售业、旅游业和综合服务业所造成的影响。
⼆、模型的分析与假设模型分析: 根据所掌握的历史统计数据可以看出,在正常情况下,全年的平均值较好地反映了相关指标的变化规律。
这样,对于每⼀个经济指标,考虑从两部分着⼿建⽴预测评估模型:1. 利⽤灰⾊理论建⽴GM(1,1)模型,根据1997-2002年的平均值序列,预测2003年的平均值。
2. 通过历史数据计算每⼀个⽉的指标值与全年总值之间的关系,并将此关系拓展到2003年,进⽽预测出2003年每⼀个⽉的指标值。
进⽽与真实数据值作⽐较,从⽽得出结论。
模型假设:1. 假设所有的统计数据真实可靠。
2. 假设该市SARS疫情流⾏期间和结束之后,数据的变化只与SARS疫情的影响有关,不考虑其他随机因素的影响。
三、建⽴灰⾊预测模型GM(1,1) 由已知数据,对于1997-2002年的某项指标记为A= (a ij)6*12,计算每年的平均值作为初始数列。
记为: 并要求级⽐。
对x(0)做⼀次累加得1-AGO序列: 式中: 取x(1)的加权均值序列: 式中,α是确定参数。
Matlab灰色预测模型GM(1,1)代码function c7fun73X0=[2.874 3.278 3.307 3.39 3.679];AU=c7fun73(X0);a=AU(1);u=AU(2);m2=length(X0);for k=1:1:m2-1xx1(k+1)=(X0(1)-u/a)*exp(-a*k)+u/a;ends=0;xx0(1)=X0(1);for jj=2:1:m2;xx0(jj)=xx1(jj)-xx1(jj-1);enddisp('GM(1,1)对数列进行预测结果');xx0disp('数列1原始观测数据');X0disp('a');AU(1)disp('u');AU(2)function au=c7fun73(X0)m=length(X0);s1=0;for jj=1:1:m;X1(jj)=s1+X0(jj); s1=X1(jj); endfor ii=1:1:m-1; B(ii)=-(X1(ii)+X1(ii+1))/2; endB=[B(:),ones(m-1,1)];y=X0([2:m])';au=inv((B'*B))*B'*y;% 用MATLAB的灰色预测GM(1,1)模型%%程序中的变量定义;alpha是包含值的矩阵;ago是预测后累加值矩阵;var是预测值矩阵;error是残差矩阵;c是后验差比值function my_gm_test()clcdata=exprnd(5,1,10)%原始10个数据[ago alpha var error c]=gm1(data)plot(data)hold onplot(var','-r*')function [ago alpha var error c]=gm1(x); %定义函数gm1(x)%清屏,以使结果独立显示format long; %设置计算精度if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x';endn=length(x); %取输入数据的样本量z=0;for i=1:n %计算累加值,并将值赋予矩阵bez=z+x(i,:);be(i,:)=z;endfor i=2:n %对原始数列平行移位y(i-1,:)=x(i,:);endfor i=1:n-1 %计算数据矩阵B的第一列数据c(i,:)=-0.5*(be(i,:)+be(i+1,:));endfor j=1:n-1 %计算数据矩阵B的第二列数据e(j,:)=1;endfor i=1:n-1 %构造数据矩阵BB(i,1)=c(i,:);B(i,2)=e(i,:);endalpha=inv(B'*B)*B'*y; %计算参数矩阵for i=1:n+1 %计算数据估计值的累加数列,如改为n+1为n+m 可预测后m-1个值ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);endvar(1,:)=ago(1,:)for i=1:n %如改n为n+m-1,可预测后m-1个值var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值endfor i=1:nerror(i,:)=var(i,:)-x(i,:); %计算残差endc=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值cago %显示输出预测值的累加数列alpha %显示输出参数数列var %显示输出预测值error %显示输出误差c %显示后验差的比值cfunction []=greymodel(y)% 本程序主要用来计算根据灰色理论建立的模型的预测值。
function GM1_1(X0)%format long ;X0=input('请输入实测数据');%实测值[m,n]=size(X0);X1=cumsum(X0); %累加X2=[];for i=1:n-1X2(i,:)=X1(i)+X1(i+1);endB=-0.5.*X2 ;t=ones(n-1,1);B=[B,t] ; % 求B矩阵YN=X0(2:end) ;Pt=YN./X1(1:(length(X0)-1)) %对原始数据序列X0进行准光滑性检验, %序列X0的光滑比P(t)=X0(t)/X1(t-1)A=inv(B.'*B)*B.'*YN.' ;a=A(1)u=A(2)c=u/a ;b=X0(1)-c ;X=[num2str(b),'exp','(',num2str(-a),'k',')',num2str(c)];strcat('X(k+1)=',X)%syms k;for t=1:length(X0)k(1,t)=t-1;endkY_k_1=b*exp(-a*k)+c;for j=1:length(k)-1Y(1,j)=Y_k_1(j+1)-Y_k_1(j);endXY=[Y_k_1(1),Y] %预测值CA=abs(XY-X0) ; %残差数列Theta=CA %残差检验绝对误差序列XD_Theta= CA ./ X0 %残差检验相对误差序列AV=mean(CA); % 残差数列平均值R_k=(min(Theta)+0.5*max(Theta))./(Theta+0.5*max(Theta)) ;% P=0.5R=sum(R_k)/length(R_k) %关联度Temp0=(CA-AV).^2 ;Temp1=sum(Temp0)/length(CA);S2=sqrt(Temp1) ; %绝对误差序列的标准差%----------AV_0=mean(X0); % 原始序列平均值Temp_0=(X0-AV_0).^2 ;Temp_1=sum(Temp_0)/length(CA);S1=sqrt(Temp_1) ; %原始序列的标准差TempC=S2/S1*100; %方差比C=strcat(num2str(TempC),'%') %后验差检验 %方差比%----------SS=0.675*S1 ;Delta=abs(CA-AV) ;TempN=find(Delta<=SS);N1=length(TempN);N2=length(CA);TempP=N1/N2*100;P=strcat(num2str(TempP),'%') %后验差检验 %计算小误差概率m=input('请输入预测期数:');for g=1:(length(X0)+m)v(1,g)=g-1;endvm=b*exp(-a*v)+c;for j=1:length(v)-1l(1,j)=m(j+1)-m(j);endxyz=[m(1),l]%预测值disp(['小误差概率为:',num2str(P)]);disp(['后验方差比为:',num2str(C)]);disp(['预测值为:',num2str(xyz)]);。
灰色预测模型GM(1,1)的matlab 运行代码例 由1990—2001年中国蔬菜产量,建立模型预测2002年中国蔬菜产量,并对预测结果作检验。
分析建模:给定原始时间1990—2001年资料序列X )0((k),对X )0((k)生成1-AGO(累加)序列X )1((k)及Y n 。
见下表X )1((k)=)(1i )0(i X k∑=; Y n =T X X X )]12(,),3(),2([)0()0()0( 对上述X )0((k)的GM(1,1),得到[][][][][][][][][][][]⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡+-+-+-+-+-+-+-+-+-+-+-==⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-----------=15236.2-1331173.5-1244348.01204848.5-1168369.5-1135943.5-1107892.5-186730.0-168581.5-148915.5-129308.0-112115.0111105.011095.01985.01875.01765.01655.01545.01435.01325.01215.01)12(1)11(1)10(1)9(1)8(1)7(1)6(1)5(1)4(1)3(1)2()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()1()()()()()()()()()()()()()()()()()()()()()()(X X X X X X X X X X X X X X X X X X X X X X z z z z z z z z z z z B 将 B 和Y n 代入辨识算式,有:10.1062105()13999.9T Tn a B B B Y b α--⎡⎤⎡⎤==•=⎢⎥⎢⎥⎣⎦⎣⎦得灰色GM(1,1)模型为(1)灰微分方程X )0((k)-0.1062105 Z )1((k)=13999.9(2)白化方程9.139991062105.0)1()1(=-X dtdX (3)白化方程的时间响应式5.1318135.151332)1()1(ˆ1062105.0)0()1(-=+⎥⎦⎤⎢⎣⎡-=+--t at e a b e a b X t X (4)还原为原始数据预测方程:)(ˆ)1(ˆ)1(ˆ)1()1()0(t X t X t X-+=+,即 t e t X1062105.0)0(15248.968)1(ˆ=+ (5)残差检验: 残差error1=e1=)()ˆ)0()0(i X i X -(,这里残差有12个。
单位:亿请根据1978-2012年的全国人口数据,用GM(1,1)来预测未来人口数量,能预测50年内的数据吗?100年呢?为什么?摘要:关键字:人口预测、GM(1,1)一、问题的重述二、问题的分析三、模型假设1、假设本问题所使用的数据均真实有效,具有统计分析价值2、不考虑战争、灾害、疾病对人口数目的影响;3、...4、...四、符号说明与名词解释4.1符号说明见模型假设。
4.2名词解释...五、模型的建立与求解5.1模型建立在灰色系统理论中,称抽象的逆过程为灰色模型,也称GM。
它是根据关联度、生成数灰导数,灰微分等观点和一系列数学方法建立起来的连续型的微分方程。
通常GM表示为GM(n,h)。
当n=h=1时即构成了单变量一阶灰色预测模型。
设原始时间序列为:(0)(0)(0)(0)(0)[(1),(2),(3),,()]X x x x x n=L设(1)X为(0)X的一次累加序列:即:(1)(0)(1)(1)(1)(1)(0)()(-1)(),2,, x xx k x k x k k n ⎧=⎪⎨⎪=+=⎩L得(1)(1)(1)(1)(1)[(1),(2),(3),,()] X x x x x n=L利用(1)X 计算GM(1,1)模型参数a 、u ,令ˆ[,]T aa u =, 则有1ˆ()T T N aB B B Y -= 其中(1)(1)(1)(1)(1)(1)1((1)(2))121((2)(3))121((1)())12x x x x B x n x n ⎡⎤-+⎢⎥⎢⎥⎢⎥-+⎢⎥=⎢⎥⎢⎥⎢⎥--+⎢⎥⎣⎦L L (0)(0)(0)[(2),(3),,()]T N Y x x x n =L由此获得:(1)(1)ˆ(1)((1))ak u uxk x e a a -+=-+ 于是:(0)(1)(1)ˆˆˆ(1)(1)()1xk x k x k +=+-()或(0)(0)ˆ(1)-((1))ak uxk a x e a-+=-(2)注:(1)式是根据(0)X 和(1)X 的关系的到的(2)式是利用数学求导还原得到的至于用哪个,最好看相对误差5.2模型求解:求解得:六、模型检验6.1残差检验残差大小检验,即对模型值和实际值的残差进行逐点检验。
灰色系统预测GM(1,1)模型及其Matlab实现三天三夜72小时:读懂题目-》查找文献资料-》选择题目-》重查找文献资料-》精读其中几篇-》查找资料的资料。
在数学建模中常常会遇到数据的预测问题,有些赛题中,预测占主导地位,例如:2003年A题 SARS的传播问题;2005年A题长江水质的评价和预测问题;2006年B题艾滋病疗法的评价及疗效的预测问题;2007年A题中国人口增长预测问题。
有些问题则是需要在求解的过程中进行预测,如2009年D题“会议筹备”对与会人数的确定等。
参考资料:《灰色系统理论及其应用第五版》作者:刘思峰,党耀国等著出版时间:2010.05 校超星数字图书馆可阅读。
灰色模型(Gray Model)有严格的理论基础,最大优点是实用。
用灰色模型预测的结果比较稳定,不仅适用于大数据量的预测,在数据量较少时(>3)预测结果依然较准确。
预备知识(1)灰色系统白色系统是指系统内部特征是完全已知的,即人们不仅知道该系统的输入——输出关系,而且知道实现输入——输出关系的结构与过程;黑色系统是指系统内部信息完全未知的,即人们只知道该系统输入——输出关系,但不知道实现输入——输出关系的结构与过程;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。
例如,一个加有电压的电阻,也是一个系统,根据欧姆定律,I=U/R,当电阻的大小知道后,便可由多大电压算出能得到多大电流。
电压与电流之间有明确的关系或函数,这便是白色系统。
因此,这样的系统要求有明确的作用原理,一个有明确作用原理的系统必定是具有确定结构的,必定是有物理原型的。
然而许多社会经济系统都没有物理原型,虽然知道影响系统的某些因素,但很难明确全部因素,更不可能确定因素之间的映射关系。
这种没有确定的映射关系(函数关系)的系统是灰色系统。
(2)灰色预测灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。
灰色理论预测模型及GM(1,1)matlab程序灰色预测方法简介
灰色预测是一种对含有不确定因素的系统进行预测的方法。
灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。
其用等时距观测到的反应预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
通过对原始数据的整理寻找数的规律,分为三类:
a、累加生成:通过数列间各时刻数据的依个累加得到新的数据与数列。
累加前数列为原始数列,累加后为生成数列。
b、累减生成:前后两个数据之差,累加生成的逆运算。
累减生成可将累加生成还原成非生成数列。
c、映射生成:累加、累减以外的生成方式。
建模步骤
a、建模机理
b、把原始数据加工成生成数;
c、对残差(模型计算值与实际值之差)修订后,建立差分微分方程模型;
d、基于关联度收敛的分析;
e、gm模型所得数据须经过逆生成还原后才能用。
f、采用“五步建模(系统定性分析、因素分析、初步量化、动态量化、优化)”法,建立一种差分微分方程模型gm(1,1)预测模型。
GM(1,1)程序:
% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是GM(1,1)。
% 原始数据的处理方法是一次累加法。
clear;clc;
% load ('data.txt');
% y=data';
y=[3 4 5 4 7 7];
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:n-1
YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=input('请输入需要预测个数:');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分绝对误差为:',num2str(det),'%']); disp(['预测值为:',num2str(ys(n+1:n+t_test))]);。