灰色模型预测GM(1,1)MATLAB程序代码

合集下载

GM(1,1)模型中的MATLAB程序

GM(1,1)模型中的MATLAB程序

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 。

灰色系统G(1,1)预测步骤【模板带代码】

灰色系统G(1,1)预测步骤【模板带代码】

=3499.075e -0.1062t

3641.075
编写程序
u=alpha(2)/alpha(1) v=X0(1)-u v=3499.075 u=—3641.075
(5)进行参差检验
1)根据预测公式,计算
v=3499.075 u=—3641.075

1
k
1


X
0
1
for n=0:10
X2(n+1)=v*exp(-alpha(1)*n)+u
end
X2
2.0690
2)累减生成序列
Xˆ X3 =1.0e+003 * (0) 0.1420 0.4079 0.4536
0.5044
0.7713 0.8577 0.9537 1.0605
源程序:X3(1)=X2(1)
for m=1:10
kesi =
4.4388 339.0664 176.2445 203.6132
0 0.1998 1.2682 0.2130 0.8524 0.1330
0.0089
0.3767
0.2203
0.4155
{0%,19.98%,126.82%,0.89%,37.67% ,22.03% ,41.55% ,21.30%,85.24%,13.30%}
e=
179.4592 111.5134 74.1747 175.0204 159.6072 29.2461 215.2168 33.1910
3.2147 24.1540
源程序:S0=0.6745*X0std e=abs(daita0-daita0mean) 对所有的 e 都小于 S0 ,故小参差概率 P(k S0) 1 0.95

灰色预测GM(1,1)算法

灰色预测GM(1,1)算法
function f=preink(A)
% 创建时间:2014/07/26
% 创建来源:银海之上
% 此命令是为了求解灰色预测中GM(1,1)模型方程系数a,u
% 此命令尝试输出模型方程
% A为原始数据,以矩阵形式表示
% 此命令使用GM(1,1)模型
[m1,n1]=size(A);
if k==0
y2=0
end
fprintf('第k+1个值是:');
f=y1-y2;
hold on
plot(X,'-*');
pp=1:0.1:n;
yy=(A(1)-q)*exp(-a*(pp-1))+q;
plot(pp,yy,'r-'); % 作出原始数据与预测数据的对比图
% 误差分析,对于GM(1,1)这步其实也没有多大作用,需要就写上吧
fw=A(1);
for j=2:n
fw0=(A(1)-q)*exp(-a*j)-(A(1)-q)*exp(-a*(j-1));
fw=[fw,fw0];
end
wucha=sum(1-fw./A)/n;
fprintf('平均误差是:%f',wucha);
end
B=[];
for i=1:n-1
B1=(-1/2)*(X(i)+X(i+1));
B=[B;B1];
end
B=[B,ones(n-1,1)];
C=B';
a1;
q=u/a;
fprintf('\n灰色预测数学方程为:\n\nY(k+1)=(%f-%f)e^(-%fk)+%f\n\n',A(1),q,a,q);

高级计算器灰色预测GM(1.1)模型-的计算程序

高级计算器灰色预测GM(1.1)模型-的计算程序

高级计算器灰色预测GM(1.1 )模型的计算程序毕 永(陕西省子长县疾病预防控制中心 子长 717399)CASIO ƒχ—3800P 计算器,置有4组最大容量135步程序存储器,体积小,价格低,功能多,是基层工作者一种理想的计算工具。

灰色预测GM(1.1 )模型公式冗长,计算过程繁琐复杂,编程运算化繁为简,变难为易,大大提高了工作效率。

在Ⅰ区程序输入x ( t ) 生成u ∧值和a∧值,在Ⅱ区程序输入t 即可得 y ∧( t ) 值。

现介绍操作方法如下:1 公式1.1 ()()1t i y t x t -=∑ 1.2 ()()()11122z t y t y t =+- 1.3 ()()()dy t ay t u d t == 1.4 ()()()1[1]1uu y t x e a t a a +=---+1.5 ()()()()()221/N N N t z t t a N x t z t z t x t D ∧===⎧⎫⎡⎤⎡⎤⎡⎤=--+⎨⎬⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎩⎭∑∑∑1.6 ()()()()()22222/N N Z N t t t t u z t x t z t Z t x t D ∧====⎧⎫⎡⎤⎡⎤⎡⎤⎡⎤=-+⎨⎬⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦⎩⎭∑∑∑∑1.7 ()()()22221N N t t D N z t z t ==⎡⎤⎡⎤=--⎢⎥⎢⎥⎣⎦⎣⎦∑∑ 2 写入程序2.1 准备MODE EXP (LRN 状态)SHIFT PCL (程序存储器清零)MODE ·(RUN状态)SHIFT KAC (K寄存器清零)令:2 Kin 4 Kin 3 Kin2 SHIFT Min(输入数值给需要使用的寄存器) MODE EXP (LRN状态)2.2 程序Ⅰ(进入程序Ⅰ区)Kin + 3 Kin 6 ÷ 2 + Kout 3 –Kout 6 = Kin + 5 Kin×6 χ2Kin + 2 Kout 6 Kin + 1 1 Kin + 4 Kout 4 SHIFT HLT (显示3)MR Kin-3 Kout 3 SHIFT X←→K 2 Kin×2 SHIFT X←→K 4 Kin×4 SHIFT X←→K 1 Kin×1 SHIFTX←→K 5 Kin×5 Kin×3 χ2Kin-4 Kout 5 Kin-2 Kout 1 Kin-1 Kin-3 Kout 4 Kin÷2 Kin÷3 Kout 3 Kin÷2 Kout 2 SHIFT M-(显示-0.333333333)Ⅱ(进入程序Ⅱ区)- 1 =×Kout 3 =+/- SHIFT e x ×MR + Kout 2 =SHIFT HLT -SHIFT X←→K 1 =(62步显示0.864639944)2.3 退出与运算MODE ·3 运算实例表1:1973~1980年启东县人口恶性肿瘤死亡率(/10万)[1]t 年份死亡率x ( t ) y∧( t ) x∧( t )1 1973 108.462 1974 125.87 240.143 1975 144.08 372.674 1976 127.45 506.045 1977 132.84 640.276 1978 135.55 775.367 1979 139.87 911.328 1980 134.03 1048.149 1981 136.97 1185.84 137.7110 1982 138.14 1324.43 138.5911 1983 142.42 1463.92 139.4812 1984 152.36 1604.29 140.37 3.1 使用Ⅰ区程序生成数据操作:显示:说明:MODE ·RUN状态SHIFT KAC K寄存器清零令:108.46 Kin 3 SHIFT Min 输入变量125.87Ⅰ 1144.08Ⅰ 2::::::134.03 Ⅰ 7RUN - 20427.27008 u∧ / a∧Kout 3 - 0.0063918026 a∧Kout 4 3551879.152 D3.2 使用Ⅱ区程序求出y∧( t ) 值操作:显示:说明:MODE 7 2 设定小数令:2 Ⅱ240.14 y∧(2)3Ⅱ372.67 y∧(3)4Ⅱ506.04 y∧(4)5Ⅱ640.27 y∧(5)6Ⅱ775.36 y∧(6)7Ⅱ911.32 y∧(7)8 Ⅱ1048.15 y∧(8)3.3 模型外推预测时求出y∧( t ) 、x∧( t ) 值操作:显示:说明:令:8 Ⅱ1048.15 y∧(8)RUN 1048.15 存入K1寄存器9 Ⅱ1185.85 y∧(9)RUN 137.71 x∧(9)10 Ⅱ1324.44 y∧(10)RUN 138.59 x∧(10)11 Ⅱ1463.92 y∧(11)RUN 139.48 x∧(11)12 Ⅱ1604.29 y∧(12)RUN 140.37 x∧(12)参考文献[1] 汪爱勤,鱼敏,灰色预测方法在疾病预测中的应用[J],中华流行病学杂志,1988,9(1):49 ̴52[2] 李光,疾病的灰色预测模型(GM)及其电子计算器程序[J],湖北预防医学杂志,1991,2(4):53 ̴55[3] 韩波,林华荣,孙瑞林,用计算器灰色预测环境污染[J],环境监测管理与技术,1994,6(1):44 ̴46。

MATLAB_+_灰色预测程序,数学建模

MATLAB_+_灰色预测程序,数学建模

MATLAB实现灰色预测程序灰色预测很好的东西呐,······~~··`~··~~~~~~~~~~~~~~~~~~~~~````````````` fon [feval,au,ec,C,P]=GM1_1(x, r)if nrgin<2myar=0;end[mx,nx]=size(x);if mx==1x=x';endn=length(x);for i=2:nz(i-1)=0.5*x1(i)+0.5*x1(i-1);endY=x(2:end);B(:,1)=-z;2)/au(1));yc(1)=x(1);for k=1:n+myear-1y1(k+1)=pm*exp(-au*k)+a(2)/au(1);yc(k+1)=y1(k+1)-y1(k);endfeval=yc';ex=ec./x;r=0;rou=0.5;for k=1:nr=r+rou* s(ec(k))+rou*max(a (ec))); endr=r/n;%%====%原始序列的标准差s1=std(x);%计算残差的标准差s2=std(ec);%计算CC=s2/s1;%计算后验概率deta=ec-mean(ec);index=fineta)<0.6745*s1);P=length(index)/n;%%if C<0.35&P>0.95disp('预测精度为一级')elsP>0.8disp('预测精度为二级')elseif >0.7disp('预测精度为三级')elsedisp('预测精度过低,需要对模型进行修正') endif r>0.6disp('关联度符合检验要求')end%%%%=========t1=1:length(x);t2=1:lengt);plot(t1,x,'b--+',t2,feval,'r-o')legend('原始数据','预测数据')另一个程序function [y,p,e]=huise_1_1(X,k)%灰色模型的malab程序%Example [y,p]=gm_1_1([200 250 300 350],2) %接口描述:X的预测的初始数列,|X|>4,K是指向后进行预测的个数%命令格式:程序保存的文件名,eg:huise.m 则命令是:huise([579.8 547.5 527.0 492.3437.0],5)if nargout>3;r('Too maoutput argument.');enif nargin==1,k=1;x_orig=X;elseif ==0|nargin>2errr('Wrong nu arguments.');endx_rig=X;predict=k; %AGO 处理,即是对初始数列进行一阶累加x=cumsum(x_orig); %计算系数(a 和u)------------------------n=leh(x_orig); %生成矩阵Bfor i=1:(n-1);B(i)=-(x(i)+x(i+1))/2;enB=[B' ones(n-1,1)]; %生成矩阵Yfor i=1:(n-1);y(i)=x_ori(i+1);edY=y'; %计算系数a=au(1) u=au(2) au=(inv(B'*B))*(B'*Y); %--------------------------------------------------------%把huise模型公式转换成符号coef1=au(2)/au(1);coef2=x_or (1)-coef1;co3=0-au(1);costr1=nm2str(coef1);costr2=numstr(abs(coef2));costr3=ntr(coef3);eq=strcat(ctr1,'+',costr2,'e^',costr3,'*(t-1))'); %计算每一个值for t=1:(n+predict)mcv(t)=co1+coef2*exp(coef3*(t-1));endx_mcv0=diff(mcv);x_mcve=[x_orig(1) x_mcv0] %输出图形中的各点x_c_error=x_orig_n-x_mcv;x_errr=mn(abs(x_c_error./x_orig_n));if x_error>0.2 %相对误差的均值disp('del disqualification!');elseif x_error>0.1dip('model check out');disp('model is perfect!');endplot(1:n,x_orig,'o',1:n+predict,x_mcve);p=x_mcve(end-predict+1:end); %画出预测模型和初始数列的点xlabel('年份(从第一个数据年份起)');ylabel('产水量(万吨)');tie('灰度模型GM(1,1)');grid ony=eq;e=x_error;p=x_mcve(end-predict+1:end);。

灰色模型预测GM(1,1)MATLAB程序代码

灰色模型预测GM(1,1)MATLAB程序代码

灰⾊模型预测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)%预测结果为区间范围预测步长和数据长度可调整程序参数进⾏改进。

GM(1,1)模型的Matlab实现(范例2)

GM(1,1)模型的Matlab实现(范例2)

GM (1,1)模型的MATLAB 实现摘要 本文介绍了灰色预测()1,1GM 模型的基本原理,并在其基础上利用MATLAB 软件进行实现,给出相应的MATLAB 算法。

并通过实例检验MATLAB 算法的正确性与通用性。

关键词模型; 灰色系统; MATLAB ;1 引言1.1灰色预测理论基本介绍灰色系统是指系统论中一部分信息是已知的,但另一部分信息是未知的,系统内各因素间有不确定的关系。

而灰色预测模型是灰色系统理论的重要内容之一,其中灰色模型是邓聚龙教授在1982年提出的一种新的模型计算方法,被广泛应用于农业、工业、医学、军事、经济、交通、生态等许多科学领域,解决了许多领域中的复杂实践问题[13]-。

且对于杂乱无章表征数据,灰色预测能发现其内在必然的联系与规律,即通过鉴别系统各因素之间发展趋势的相异程度,进行关联分析,并对原始数据进行一定的处理,来寻找系统变动的规律,生成有较强规律性的数据序列,建立相应的微分方程模型,从而预见系统的未来的发展趋势及状况。

灰色预测法是用等时距观测到的反映预测对象特征的一系列数量值,构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。

灰色预测有其四种常见的类型,分别为:灰色时间序列预测、畸变预测、系统预测、拓扑预测。

灰色模型(Grey Models )简称GM 模型,是灰色系统理论(Grey System Theory )的一个基本模型。

GM 模型的一般模型为,当中时,GM 模型不能做预测,只能用于分析因子之间的相互作用。

做预测用的一般为模型,其中,用的最多的则是用灰色微分拟合法建立的模型。

由于它预测要求所需样本量少(至少四组),不需要计算统计特征量、不用考虑样本变化的趋势、运算简便、在短期内精度高、预测效果好、容易检查等优点。

本文通过运用MATLAB 软件对模型进行程序实现。

增强模型通用性与实用性,方便今后对其使用。

假设我们有一段原始时间序列:为了弱化原始时间序列的随机性,在建立灰色预测模型之前,我们需要先对原始时间序列进行数据处理,经过数据处理后的时间序列称为生成列。

灰色预测模型matlab程序精确版

灰色预测模型matlab程序精确版

%x=[1019,1088,1324,1408,1601];gm1(x); 测试数据%二次拟合预测GM(1,1)模型function gmcal=gm1(x)if nargin==0x=[1019,1088,1324,1408,1601]endformat long gsizex=length(x);%求数组长度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=length(z1);%size(yn1);z2 = z1';z3 = ones(1,sizez1)';YN = yn1'; %转置%YNB=[z2 z3];au0=inv(B'*B)*B'*YN;au = au0';%B,au0,auafor = au(1);ufor = au(2);ua = au(2)./au(1);%afor,ufor,ua%输出预测的 a u 和 u/a的值constant1 = x(1)-ua;afor1 = -afor;x1t1 = 'x1(t+1)';estr = 'exp';tstr = 't';leftbra = '(';rightbra = ')';%constant1,afor1,x1t1,estr,tstr,leftbra,rightbrastrcat(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);endend%ze1sizeze1=length(ze1);z4 = ones(1,sizeze1)';G=[ze1' z4];X1 = x1';au20=inv(G'*G)*G'*X1;au2 = au20';%z4,X1,G,au20Aval = au2(1);Bval = au2(2);%Aval,Bval%输出预测的 A,B的值strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',lef tbra,num2str(Bval),rightbra)%输出时间响应方程nfinal = sizex-1 + 1;(其中+1可改为+5等其他数字,即可预测更多的数字)%决定预测的步骤数5 这个步骤可以通过函数传入%nfinal = sizexd2 - 1 + 1;%预测的步骤数 1for k3=1:nfinalx3fcast(k3) = constant1*exp(afor1*k3)+ua;end%x3fcast%一次拟合累加值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 > sizexelseerr1(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 > sizexelses1total = s1total + (x(k5) - xavg)^2;endends1suqare = s1total ./ sizex;s1sqrt = sqrt(s1suqare);%s1suqare,s1sqrt%s1suqare 残差数列x的方差 s1sqrt 为x方差的平方根S1 k5 = 0;s2total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexelses2total = s2total + (err1(k5) - err1avg)^2; endends2suqare = s2total ./ sizex;%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 ./ sizex;pval%p检验值%arr1 = x41fcast(1:6)%预测结果为区间范围预测步长和数据长度可调整程序参数进行改进运行结果x =1019 1088 1324 1408 1601ans =x1(t+1)=8908.4929exp(0.11871t)+(-7889.4929)ans =x1(t+1)=8945.2933exp(0.11871t)+(-7935.7685)x31fcast =Columns 1 through 31019 1122.89347857097 1264.43142178303 Columns 4 through 61423.80987235488 1603.27758207442 1805.36675232556 x41fcast =Columns 1 through 31019 1118.05685435129 1269.65470492098 Columns 4 through 61429.69153740195 1609.90061644041 1812.82460377782 x =1019 1088 1324 1408 1601Cval =0.139501578334155 pval =1。

灰色预测MATLAB程序

灰色预测MATLAB程序

灰色预测专设工⑼他QA—叫吋)为原始数列.其1次累❖加生成数列为恥=妙①曲⑵,…卅何),其中X° 仇)二工* ° (0.址=1=2= -:n5-1卷定义卫的决导数为d(k) = *町(上)=x 叫咼-x cl)(Jt-l).令为数列工①的邻值生成数列.即却(去)=^(*) + (1- a)x0)(t-lX于是定义GM (L 1)的灰微分方程模型为d(k)-血⑴住)=K即或严>(£) + “尹⑻=人⑴在式(1)中』。

>(灼称为灰导数,我称为发展系数, 弧称为白化背景值,b称为灰作用量乜将时刻表殳二2「3「/代入(1)式有V!1「—ay=代⑶ B =Ib*- :X闵0)-Z,:](K)1于是G\I <1»1)複至可表示为Y = Bu.現在问题归结为求sb 在值。

用一元线性回归・即最小二秦法求它们的活计值 为注二实陌上回归分析中求估计值是用软件计尊的・有标准程序求解,iOmaClab 等。

GM <1» 1>的白化晏対于G\I <1> 1)的灰微分方程(1) >如果将灰导数打(Q 的时刻 视为连绫变里"则x°)视为时问(函数卅⑺,于是*〉(Q 対血于导数里级 心2 >白化背臬值申的对应于导数卅⑴。

于是G\I (1,1)的坝徽 分方樂対应于的白微分方程为内・则数堀列X©可以塗互G\I <19 1) 且可以进行页色预测。

否朋,対数摄做适当的克换处理■如平移叢换:取C 使得鞍据列严伙)=工⑴伙)+ G 上=1,2,…,的级比都華住可吝禎盖内。

心⑴⑴ + o?i> (r)二◎ dr<2)GM mi )质色预测的步骤1 •教摇的枪绘与处連为了ftilGAl (1,1)建複方法的可行性,亲要为已知期S 做必要的检蛉处理。

设原始教据列为了 逛=(乂°(1)*6(2)严炉00; >计算数列的级比如果所有的级比都落在可容覆盖区间 • fc =A-2,3"・如果対所有的|p 伙)|<0・1 -则认为达到较高的要求,否则 若旳所有的|。

灰色预测MATLAB程序

灰色预测MATLAB程序

灰色预测心设尹曲⑴#为原始数列,其1次累<加生成数列为炉=(孝①宀2\S,其中©=2^°:⑺卫=12…止i-1尋定文沙的灰导数为d(Jt)=玄㈣(Jt)=尤⑴的-工⑴(*-1).令尹为数列壬⑴的邻值生成数列,即尹)(町=加小(町十(1—a)x山(k-1).于是定文GM(1T1)的灰微分方程模型为d(k)+az①(上)=&_即或.严⑹+盘⑴懐)=乩⑴在式(1)中口①的称为灰导数’熬称为发展系数'弧称为白化背景值,b称为灰作用量。

将时刻表庄=23…用代入(O式有j<0)(2)-az⑴(2)=工®⑶—俺叫巧=»于是GMIL)樫型可表示为r=现在问题归结为求巧h在值。

用一元绒性回归,即最小二垂進求它们的估计值住=[]卜护跖护F奕厢上回归分析中求诂计值是用软件计算的,有标淮程博求解,如山訥甜等。

GM(1.1)的白化型对于的(1-1)的获微分方程⑴,如果将解导教矿悶的时報=%…屮观対连续叢里"则工⑴衩为时间i函敕卅®,于是-<'W耐应于导敕重级必%),白化背杲值刃(時对应于导數申⑴。

于是GM(1,1)的换微分方嗨对应于的白微分方程为写®4曲%「)=也⑵GAI(1>1)换色预刪的步叢1-數堀的椅噓弓处理为了保证©M(B1)屋複方达的可行性・需要対已却皴堀锁必要的检峻处Ho 设療皓数攥列为了-计算埶列的级比如果所有的级比都落在可容覆盖区间盂-內・则數摒列X糾可咲建立G*ICL-1)複型且可以避行页色预测。

否则,丙軌据懺适当的叢换处理,如平移銮换:取C使得敕培列严⑹二工蚀盘)+匚用二12…”的级比都落在可啓禎盖内。

(1)残差檢验:计算相对薙差Z 建立GM (L T 1)複型不妬设少弋以m 叫唠霸足上面的要求,以它芮議堀列建立GM(1>1)型蛊(仍(i)+血C1\A)=b ・用回归分祈求得目上的估计值"于是相应的白化模型为 气^十小卄工解为工叱)=0)①—勺中1-色-⑶ 应Q于是停到预测值壬⑴(上+1)=0叫1)一勺>加+仝血二12…卫一1=aa伙而相应地得到预«=x co \t +1)=x 0)(t+l)-x a)(i)3i =1,2,-?n-l ?如果对所有的^<0.1・则认为达到鞭嵩的要求:否则,若耐所有的|^)1<0^,则认対达到一般要求©(2)级比偏差値桧验:计算能)=1-呂学©如果对所有的|,则认为达列较高的要求孑吾则若对斫有的,则认为达到一般要求O灰色预测计算实例^…;=:=-■■■■昏例北方某城市1986—1992年道路交通噪声平均声级数据见表6序号年吶寺表拆市近年来交通噪声数据[眶(应)]二諾;二319S872.4第—爭:级比检验建立丢通噪屛均声级数锯时间序列如下:4198972.1j 1990?1.4 619?17201199771.6艸=(•严①卫购(2)厂卅⑺) =(711,72.4.71.4,72.1.71.4,7UQ.71.6)些(1)求级比k(k)忠防护住T)2=(几⑵山⑶.…也⑺)g=(0.982JJ.0042J.0098-0.9917J.0056)(2)级比判断由于所有的X.(10e[0.982J.009S],k=2,3.6故可以用双0)作满意的GM(1,1)建模’第二步:GM(1,1)建模(1)对原始数据X®作一次累加,即卞⑴=(71.L143.5215.9.288359.4.431.4,503)(2)构造数据矩阵B及数据向量Y-2)—H 弋3/>1⑶讦算1T心求解得F'⑴=(工倒〔1〉_-)e 弋Q f+-1*^+1)=0<l,U)--)£-t +-=-3092^--^+31000⑶求生咸数列值歸型齊看:n令“is 那血由上面的碉醯数可甲得,其中取菱由龙⑴(i}=恥壮曲5加得丁I —"炉閃=进悶-进德-尊(71儿72.4.72.2:72.1:71.9:71.7,71.6)^}=(s"a >亍⑴⑵,…,网⑺A<第三步;模型检验•>模型的各种检验指标值的计算结果见表工 •t*表7GM(1检验表<序号年俯原始值模型值残差相对误差级比偏差•>1 19S6 71.1 71.1<219S7 72.4 72.4 -0.0057 0.01%0.0023 <3 19S S 72.4 72.2 0.163S 0.23%0.0203 •>4 19S9 72.1 72.1 0.0329 0.05%-O.(K H8 •>5199071.4 71.9 -0-49S4 0.7%-0.0074 <61991 72.0 71.7 0.21599 037%0.0107<71992 71.6 71.6 0.037S0.05%-0.0032于是得到目=山的餡,立欖型7-B)'1B TY=(dt0.0023 72.6573dt+0.002ix (1>=72.657^心经验证・该模型的精度较高.可进行预测和预报计算的Matlab 程序如下:仃坝测和预报n=length(x); z=0;%取输入数据的样本量for i=1:nz=z+x(i,:)be(i,:)=z; %计算累加值,并将值赋予矩阵beend for i=2:n %对y(i-1,:)=x(i,:)%对原始数列平行移位 endfor i=1:n-1%计算数据矩阵B 的第一列数据c(i,:)=-0.5*(be(i,:)+be(i+1,:)); clCjdearxO=[71H 72.472A 72J71477m c n.lengthtxO);*'b%注意这里为列帖lamda =xD(l :n-1),A0(2:n)%计算级比range =minmaxflamda f )%计算级比的范阖 X1=cumsum(xO);%累加运算B=['0,5*(xl(l ;n ^l)+xl(2:n))t ones(n -1,1)]TY 二甸(2:町;口=B\Y%拟合参数u(l>=a .u(2)=bx=dsolve (+a 'x =b\f x(0)-xO^J ;%求徴分方程的特号解x =subs(xJ*a\,b r /xO ,Mu(l)P u(2)t xO(l)|)i%代入荷计痹擞值和初蜡值yucel =subs %求巳知数擁的扳测位y-vpa(x,6)奄其中的石表示显不白位数字yuce=[x0(l)T diff(yucel)]%羔分运算,还原数据 epsiIon=-yuce%计算战羞作用:求累加数列、求ab 的值、求预测方程、求残差clc %清屏,以使结果独立显示x=[71.172.472.472.171.472.071.6]; format long ;%设置计算精度if length(x(:,1))==1%对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x endM.I-JTVorhlllst 模型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;%计算参数矩阵即ab的值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,:)=x(i,:)-var(i,:);%计算残差endc=std(error)/std(x);%调用统计工具箱的标准差函数计算后验差的比值cago alpha var%显示输出预测值的累加数列%显示输出参数数列%显示输出预测值error %显示输出误差c %显示后验差的比值作用:数据处理判断是否可以用灰色预测、求级比、求累加数列、求ab的值、求预测方程clc,clearx0=[71.172.472.472.171.472.071.6]';%注意这里为列向量n=length(x0);lamda=x0(1:n-1)./x0(2:n)%计算级比range=minmax(lamda')%计算级比的范围x1=cumsum(x0)%累加运算B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];Y=x0(2:n);u=B\Y%拟合参数u(1)=a,u(2)=bx=dsolve('Dx+a*x=b','x(0)=x0');%求微分方程的符号解x=subs(x,{'a','b','x0'},{u(1),u(2),x0(1)})%代入估计参数值和初始值yuce1=subs(x,'t',[0:n-1]);%求已知数据的预测值y=vpa(x,6)%其中的6表示显示6位数字yuce=[x0(1),diff(yuce1)]%差分运算,还原数据。

灰色理论预测模型及GM(1,1)matlab程序

灰色理论预测模型及GM(1,1)matlab程序

灰色理论预测模型及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:nyy(i)=yy(i-1)+y(i);endB=ones(n-1,2);for i=1:(n-1)B(i,1)=-(yy(i)+yy(i+1))/2;B(i,2)=1;endBT=B';for j=1:n-1YN(j)=y(j+1);endYN=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:2ys(j)=yys(j)-yys(j-1);endx=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:ndet=det+abs(yn(i)-y(i));enddet=det/(n-1);disp(['百分绝对误差为:',num2str(det),'%']); disp(['预测值为:',num2str(ys(n+1:n+t_test))]);。

GMn灰色模型代码

GMn灰色模型代码

GM(,n)(灰色模型代码)%灰色预测模型GM(1,n)模型的matlab源代码,包括预测模型的建立,以及模型的精度检验指标c,p的计算%假设预测3步,N=3%如在命令窗口键入:%gm=ycgm1n([1.6,1.7,2,1.8,1.9],[2,2.4,3,3.2,3.1],[3,3.1,3.2,3.5,2.8],3)function GM=ycgm1n(data1,data2,data3,N) %data1:纵摇,data2:升沉,data3:波浪T=length(data1);PYX1=data1;PYX2=data2;PYX3=data3;%进行数据预处理,这里用初值化X0_1=PYX1./PYX1(1);X0_2=PYX2./PYX2(1);X0_3=PYX3./PYX3(1);%用AGO生成一阶累加生成模块X1_1(1)=X0_1(1);X1_2(1)=X0_2(1);X1_3(1)=X0_3(1);for i=2:TX1_1(i)=X1_1(i-1)+X0_1(i);X1_2(i)=X1_2(i-1)+X0_2(i);X1_3(i)=X1_3(i-1)+X0_3(i);end%构造累加矩阵Bfor i=1:T-1M1(i)=(0.5*(X1_1(i)+X1_1(i+1)));M2(i)=(0.5*(X1_2(i)+X1_2(i+1)));M3(i)=(0.5*(X1_3(i)+X1_3(i+1)));endB1=zeros(T-1,3);for i=1:(T-1)B1(i,1)=-M1(i); %-(X1_1(i)+X1_1(i+1)))/2;B1(i,2)=X1_2(i+1);B1(i,3)=X1_3(i+1);endB2=zeros(T-1,2);for i=1:(T-1)B2(i,1)=-M2(i); %-(X1_2(i)+X1_2(i+1)))/2;B2(i,2)=X1_3(i+1);endB3=zeros(T-1,2);for i=1:(T-1)B3(i,1)=-M3(i); %-(X1_3(i)+X1_3(i+1)))/2;B3(i,2)=1;endsave B1 B1;save B2 B2;save B3 B3;%构造常数项向量Yfor i=2:TY1(i-1)=X0_1(i);Y2(i-1)=X0_2(i);Y3(i-1)=X0_3(i);endHCS1=inv(B1&#39;*B1)*B1&#39;*Y1&#39;; %用最小二乘法求灰参数HCS1H1=HCS1&#39;; %H1=[a,b2,b3]HCS2=inv(B2&#39;*B2)*B2&#39;*Y2&#39;; %用最小二乘法求灰参数HCS2H2=HCS2&#39;; %H2=[a,b3]HCS3=inv(B3&#39;*B3)*B3&#39;*Y3&#39;; %用最小二乘法求灰参数HCS3H3=HCS3&#39;; %H3=[b,a]%计算出X3的累加序列for i=1:T+NYCX13(i)=(X0_3(1)-H3(2)/H3(1))*exp(-1*H3(1)*(i-1))+H3(2)/H3(1);endfor i=2:T+N% K(i)=XR1(i)-XR1(i-1);YCX0_3(i)=YCX13(i)-YCX13(i-1);endYCX0_3(1)=X0_3(1);%对参数作alpha,beta变换H2=H2./(1+0.5*H2(1));%还原计算出X2的预测值YCX0_2(1)=X0_2(1);for i=2:TYCX0_2(i)=H2(2).*X1_3(i)-H2(1).*X1_2(i-1);endYCX12(T)=X1_2(T);for i=T+1:T+NYCX0_2(i)=H2(2).*YCX13(i)-H2(1).*YCX12(i-1);YCX12(i)=YCX0_2(i)+YCX12(i-1);end%对参数作alpha,beta变换H1=H1./(1+0.5*H1(1));%还原计算出X1的预测值YCX0_1(1)=X0_1(1);for i=2:TYCX0_1(i)=H1(2).*X1_2(i)+H1(3).*X1_3(i)-H1(1).*X1_1(i-1);endYCX11(T)=X1_1(T);for i=T+1:T+NYCX0_1(i)=H1(2).*YCX12(i)+H1(3).*YCX13(i)-H1(1).*YCX11(i-1);YCX11(i)=YCX0_1(i)+YCX11(i-1);end%数据还原GM=YCX0_1; %.*PYX1(1);save GM GM;e0(1,T-1)=zeros;for i=1:T-1 %求X1到X5的残差值e0e0(i)=(X0_1(i+1)-YCX0_1(i+1))/X0_1(i+1); %1-YCX0_1(i+1)/X0_1(i+1); endsave e0 e0;e0_average=sum(abs(e0))/length(e0)p=1-e0_average;X_average=mean(X0_1) %求原始数据x0均值s1=std(PYX1) %求原始数据的标准差s2=std(e0)c=s2/s1 %计算方差比c,c&lt;0.35为好end。

灰色系统预测GM(1-1)模型及其Matlab实现教学教材

灰色系统预测GM(1-1)模型及其Matlab实现教学教材

灰色系统预测G M(1-1)模型及其M a t l a b实现灰色系统预测GM(1,1)模型及其Matlab实现预备知识(1)灰色系统白色系统是指系统内部特征是完全已知的;黑色系统是指系统内部信息完全未知的;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。

(2)灰色预测灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。

尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。

灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。

目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。

它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。

经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。

因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。

1 灰色系统的模型GM(1,1)1.1 GM(1,1)的一般形式设有变量X(0)={X(0)(i),i=1,2,...,n}为某一预测对象的非负单调原始数据列,为建立灰色预测模型:首先对X(0)进行一次累加(1—AGO, Acumulated Generating Operator)生成一次累加序列:X(1)={X(1)(k),k=1,2,…,n}其中X (1)(k )=∑=ki 1X (0)(i)=X (1)(k -1)+ X (0)(k ) (1) 对X (1)可建立下述白化形式的微分方程:dtdX )1(十)1(aX =u (2)即GM(1,1)模型。

上述白化微分方程的解为(离散响应): ∧X (1)(k +1)=(X (0)(1)-a u )ak e -+au(3) 或∧X (1)(k )=(X (0)(1)-a u ))1(--k a e +au (4) 式中:k 为时间序列,可取年、季或月。

Matlab灰色预测模型GM(1,1)代码

Matlab灰色预测模型GM(1,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)% 本程序主要用来计算根据灰色理论建立的模型的预测值。

灰色预测系统基于GM(1-1)的matlab程序

灰色预测系统基于GM(1-1)的matlab程序

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运行代码

灰色预测模型GM(1,1)的matlab运行代码

灰色预测模型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个。

GM(1,1)模型及其Matlab实现

GM(1,1)模型及其Matlab实现

灰色系统预测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)灰色预测灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end
%x4fcast
for k41=nfinal:-1:0
if k41>1
x41fcast(k41+1) = x4fcast(k41)-x4fcast(k41-1);
else
if k41>0
x41fcast(k41+1) = x4fcast(k41)-x(1);
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) %输出时间响应方程
%xavg
%x平均值
err1avg = mean(err1);
%err1avg
%err1平均值
k5 = 0;
s1total = 0 ;
for y5 = x
k5 = k5 + 1;
if k5 > sizexd2
else
s1total = s1total + (x(k5) - xavg)^2;
k5 = 0;
for y5 = x
k5 = k5 + 1;
if k5 > sizexd2
else
err1(k5) = x(k5) - x41fcast(k5);
end
end
%err1
%绝对误差
xavg = mean(x);
Cval = sqrt(s2suqare ./ s1suqare);
Cval
%nnn = 0.6745 * s1sqrt
%Cval C检验值
k5 = 0;
pnum = 0 ;
for y5 = x
k5 = k5 + 1;
if abs( err1(k5) - err1avg ) < 0.6745 * s1sqrt
k2 = 0;
for y2 = x1
k2 = k2 + 1;
if k2 > k
else
ze1(k2) = exp(-(k2-1)*afor);
end
end
sizeze1 = size(ze1,2);
z4 = ones(1,sizeze1)';
ufor = au(2);
ua = au(2)./au(1);
constant1 = x(1)-ua;
afor1 =;x1(t+1)';
estr = 'exp';
tstr = 't';
leftbra = '(';
rightbra = ')';
strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应方程
%预测结果为区间范围 预测步长和数据长度可调整程序参数进行改进
end
%一次拟合累加值
for k31=nfinal:-1:0
if k31>1
x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);
else
if k31>0
x31fcast(k31+1) = x3fcast(k31)-x(1);
end
end
s1suqare = s1total ./ sizexd2;
s1sqrt = sqrt(s1suqare);
%s1suqare,s1sqrt
%s1suqare 残差数列x的方差 s1sqrt 为x方差的平方根S1
k5 = 0;
s2total = 0 ;
for y5 = x
nfinal = sizexd2-1 + 1; %决定预测的步骤数5 这个步骤可以通过函数传入
%nfinal = sizexd2 - 1 + 1;%预测的步骤数 1
for k3=1:nfinal
x3fcast(k3) = constant1*exp(afor1*k3)+ua;
end
end
%x1,z1,k,yn1
sizez1=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);
pnum = pnum + 1;
%ppp = abs( err1(k5) - err1avg )
else
end
end
pval = pnum ./ sizexd2;
pval
%p检验值
%arr1 = x41fcast(1:6)
else
x41fcast(k41+1) = x(1);
end
end
end
x41fcast,x
%二次拟合预测值
%***精度检验p C************//////////////////////////////////
else
x31fcast(k31+1) = x(1);
end
end
end
x31fcast
%一次拟合预测值
for k4=1:nfinal
x4fcast(k4) = Aval*exp(afor1*k4)+Bval;
k5 = k5 + 1;
if k5 > sizexd2
else
s2total = s2total + (err1(k5) - err1avg)^2;
end
end
s2suqare = s2total ./ sizexd2;
%s2suqare 残差数列err1的方差S2
版权所有 引用请注明出处
function gmcal=gm1(x)
%% 二次拟合预测GM(1,1)模型
%x = [5999,5903,5848,5700,7884];
sizexd2 = size(x,2);
%求数组长度
k=0;
for y1=x
k=k+1;
if k>1
x1(k)=x1(k-1)+x(k);
%累加生成
z1(k-1)=-0.5*(x1(k)+x1(k-1));
%z1维数减1,用于计算B
yn1(k-1)=x(k);
else
x1(k)=x(k);
相关文档
最新文档