文档库 最新最全的文档下载
当前位置:文档库 › 灰色系统预测GM(1,1)模型及其Matlab实现

灰色系统预测GM(1,1)模型及其Matlab实现

灰色系统预测GM(1,1)模型及其Matlab实现
灰色系统预测GM(1,1)模型及其Matlab实现

灰色系统预测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 )=

=k

i 1

X (0)

(i)

=X (1)

(k -1)+ X (0)

(k ) (1) 对X (1)

可建立下述白化形式的微分方程:

dt

dX )1(十)

1(aX =u (2)

即GM(1,1)模型。

上述白化微分方程的解为(离散响应): ∧

X

(1)

(k +1)=(X (0)

(1)-

a u )ak e -+a

u

(3) 或

X

(1)

(k )=(X (0)

(1)-

a u ))1(--k a e +a

u (4)

式中:k 为时间序列,可取年、季或月。 1.2 辩识算法

记参数序列为∧a , ∧a =[a,u]T

,∧

a 可用下式求解:

a =(B T B)-1B T Y n (5)

式中:B —数据阵;Y n —数据列

B =?????????

???????????+++- 1 (n))X 1)-(n (X 21 ... 1 (3))X (2)X (211 (2))

X (1)X (21(1)1(1)

(1)(1)

(1))(-- (6) Y n =(X (0)(2), X (0)(3),…, X (0)(n))T (7)

1.3 预测值的还原

由于GM 模型得到的是一次累加量,k ∈{n+1,n+2,…}时刻的预测值,必须将GM 模型所得数据∧

X

(1)

(k +1)(或∧

X

(1)

(k ))经过逆生成,即累减生成(I —AGO)还原为∧

X

(0)

(k +1)(或

X (0)(k ))才能用。

X (1)

(k )=∑=k

i 1

X (0)(i)

-=1

1

k i ∧

X (0)

(i)+∧

X (0)(k)

∧X (0)

(k)=∧X (1)

(k )-∑-=11

k i ∧

X (0)(i)

因为∧

X

(1)

(k -1)=

-=1

1

k i ∧

X (0)

(i),所以∧

X (0)

(k)=∧

X (1)

(k )-∧

X (1)(k -1)。

2 应用举例

取某高校1998年~2003年的某专业招生数据建模,见表1。

以表1中的数据构造原始数据列X (0)

,即

X (0)

={X (0)

(1),X (0)

(2),X (0)

(3),X (0)

(4),X (0)

(5),X (0)

(6)} ={132,92,118,130,187,207}

对X (0)

进行一次累加(1—AGO),生成数列:

X (1)

(k)=

=k

i 1

X (0)

(i)即

X (1)={X (1)

(1),X (1)

(2),X (1)

(3),X (1)

(4),X (1)

(5),X (1)

(6)}

={132,224,342,472,659,866} 和数据阵B 、数据列Y n

B =

???????

?????????----- 1 5.762 1 5.5651 4071 2831 178

,Y n =(92,118,130,187,207)T 由式(5)得

a =[a,u]T

=??

????-7878184.56205

.0 由式(4)得灰色预测模型GM(1,1)为 ∧

X

(1)

(k )=(X (0)

(1)-

a u ))1(--k a e +a

u

=(132+277.0137483))

1(205.0-k e -277.0137483

=409.0137483)

1(205.0-k e -277.0137483

预测值及预测精度见表2。

表2 某高校专业招生预测值及预测精度表

由表2知预测精度较高。2006年某专业招生人数预测值为259人。由于人数为整数,所以结果取整数部分。

GM(1,1)是一种长期预测模型,在没有大的市场波动及政策性变化的前提下,该预测值应是可信的。如前所述,影响招生人数的因素很多且难以预测。因此,在采用灰色系统理论进行定量预测时,如果存在对预测对象影响较大的因素,就要在定性分析的基础上,寻找原始数据信息的突变点的量化值,然后再对预测值进行必要的修正,使预测值更接近实际情况,提高预测值的可信度,为科学决策提供可靠的数据。另外,若作长期预测,要考虑对上限值的约束条件。

应用灰色预测模型GM(1,1),对某专业招生人数进行了预测,具有较高的预测精度。应用灰色模型进行预测较之其它常规的时间序列预测法有以下显著的特点。 (1)灰色模型是一种长期预测模型,将预测系统中的随机元素作为灰色数据进行处理,而找出数据的内在规律。进行预测所需原始数据量小,预测精度较高,无须像其它预测法要么需要数据量大且规律性强,要么需要凭经验给出系数。

(2)理论性强,计算方便,籍助计算机及其程序设计语言,使得数据处理简便、快速、准确性好。

(3)用有限的表征系统行为特征的外部元素,分析系统的内在规律。灰色系统理论采用对系统的行为特征数据进行生成的方法,对杂乱无章的系统的行为特征数据进行处理,从杂乱无章的现像中发现系统的内在规律,这是该方法的独特之处。 (4) 适用性强。用灰色模型既可对周期性变化的系统行为进行预测,亦可对非周期性变化的系统行为进行预测;既可进行宏观长期的预测,亦可用于微观短期的预测。 2灰色系统模型的检验 定义1.

设原始序列

{}

)(,),2(),1()0()0()0()0(n x x x X =

相应的模型模拟序列为 {})(?,),2(?),1(??)0()0()0()0(n x x x X

= 残差序列

{})(),2(),1()0(n εεεε =

{}

)(?)(,),2(?)2(),1(?)1()0()0()0()0()0()0(n x n x x x x x ---= 相对误差序列

??????=?)()(,,)

2()2(,)1()1()0()0()0(n x n x x εεε

{}n

k 1?=

1.对于k <n,称)

()

()

0(k x

k k ε=

?为k 点模拟相对误差,称)

()

()

0(n x

n n ε=

?为滤波相对误差,

称∑=?=?n

k k n 1

1为平均模拟相对误差;

2.称?-1为平均相对精度,n ?-1为滤波精度;

3.给定α,当α

定义2

设)

0(X 为原始序列,)0(?X

为相应的模拟误差序列,ε为)

0(X 与)

0(?X

的绝对关联度,

若对于给定的00,0εεε>>,则称模型为关联合格模型。

定义3

设)

0(X

为原始序列,)

0(?X

为相应的模拟误差序列,)

0(ε

为残差序列。

∑==n k k x n x 1

)

0()(1为)0(X 的均值,

21)0(2

1))((1x k x n s n k -=∑=为)0(x 的方差,

∑==n

k k n 1)(1εε为残差均值,

∑=-=n k k n s 122

2))((1εε为残差方差,

1. 称1

2s s

c =为均方差比值;对于给定的00>c ,当0c c <时,称模型为均方差比合格模

型。 2. 称()16745.0)(s k P

p <-=ε

ε为小误差概率,对于给定的00>p ,当0p p >时,称

模型为小误差概率合格模型。

应用举例2、设原始序列

{}

)5(),4(),3(),2(),1()0()0()0()0()0()0(x x x x x X =

()679.3,390.3,337.3,278.3,874.2=

建立GM(1,1)模型,并进行检验。 解:1)对)0(X

作1-AGO ,得

[D 为)

0(X

的一次累加生成算子,记为1-AGO]

{

}

)5(),4(),3(),2(),1()1()1()1()1()1()1(x x x x x X =

()558.16,579.12,489.9,152.6,874.2=

2)对)

1(X

作紧邻均值生成,令

)1(5.0)(5.0)()1()1()1(-+=k x k x k Z

{}

)5(),4(),3(),2(),1()1()1()1()1()1()1(z z z z z Z =

()718.14,84.11,820.7,513.4,874.2=

于是,

??????????----=

??????

??????----=1718.14184

.111820.71513.41)

5(1)

4(1)3(1)2()1()

1()1()1(z z z z B ,??????????=?????

???????=679.3390.3337.3278.3)5()4()3()2()0()0()0()

0(x x x x Y

????

?

?????----???????----=T 1718

.14184

.111820.71513

.41111718.14184.11820.7513.4B B ??

????--=4235.38235.38221.423

??

????==??????--=--T

832371.11665542.0165542.0017318.04235.38235.38221.423)(1

1

B B ??

???

???????????

????=??????-?=221.423235.38235.384969.2301221.423235.38235.384235.384221.42312

??

???????????????----???????==T -T 679.3390.3337.3278.31111718.14184.11820.7513.4832371.11665542.0165542.0017318.0)(?1Y B B B a

??

??

?

????????????---=679.3390.3337.3278.3604076.10019051.0537833.0085280.1089344.0028143.0030115.0087386.0 ??

????-=065318.3037156.0 3)确定模型

065318.3037156.0)1()

1(=-x dt

dx 及时间响应式

a b

e a b x k x

ak +-=+-))1(()1(?)0()1( 4986.823728

.85037156.0-=k e 4)求)

1(X 的模拟值

{}

)5(?),4(?),3(?),2(?),1(??)1()1()1()1()1()1(x x x x x X

= =(2.8740,6.1058,9.4599,12.9410,16.5538) 5)还原出)

0(X

的模拟值,由

)(?)1(?)1(?)1()1()0(k x k x k x

-+=+ 得 {}

)5(?),4(?),3(?),2(?),1(??)0()0()0()0()0()0(x x x x x X

= =(2.8740,3.2318,3.3541,3.4811,3.6128)

残差平方和

[]???

?

???

????==T )5()4()3()2()5()4()3()2(εεεεεεεεεεs []????

?

?????--

?--=0662.00911.00171.00462.00662.00911.00171.00462.0 =0.0151085

平均相对误差

%)80.1%69.2%51.0%41.1(4

1

4151+++=?=?∑=k k

=1.0625%

计算X 与X

?的灰色关联度 ))1()5((21)1()((4

2

x x x k x S k -+-=

∑= =)874.2679.3(2

1

)874.2390.3()874.2337.3()874.2278.3(-+

-+-+- 0.40250.5160.4630.404+++=

=1.7855

)1(?)5(?(21

)1(?)(?(?4

2

x x x k x S

k -+-=∑= )874.26128.3(2

1

)874.24811.3()874.23541.3()874.22318.3(-+-+-+-=

3694.06071.04801.03578.0+++=

=1.8144

[][]∑

=---+---=-4

2

))1(?)5(?())1()5((2

1

))1(?)(?())1()((?k x x x x x k x x k x S S

)

4025.03694.0(2

1

)516.06071.0()463.04801.0()404.03578.0(-+-+-+-=01655.0091.00171.00462.0-++-=

=0.04535

64525

.45999

.404535.08144.17855.118144.17855.11??1?1=+++++=

-+++++=

S S S

S S S ε

=0.9902>0.90

精度为一级,可以用

4986.823728.85)1(?037156.0)1(-=+k e k x )(?)1(?)1(?)1()1()0(k x k x k x

-+=+预测。

function [y,p,e]=gm_1_1(X,k)

%gray model: GM(1,1)

%Example [y,p]=gm_1_1([200 250 300 350],2)

if nargout>3,error('Too many output argument.');end

if nargin==1,k=1;x_orig=X;

elseif nargin==0|nargin>2

error('Wrong number of input arguments.');

end

x_orig=X;

predict=k;

%AGO process

x=cumsum(x_orig);

%compute the coefficient(a and u)------------------------ n=length(x_orig);

%first generate the matrix B

for i=1:(n-1);

B(i)=-(x(i)+x(i+1))/2;

end

B=[B' ones(n-1,1)];

%then generate the matrix Y

for i=1:(n-1);

y(i)=x_orig(i+1);

end

Y=y';

%get the coefficient. a=au(1) u=au(2)

au=(inv(B'*B))*(B'*Y);

%-------------------------------------------------------- %change the grey model to symbolic expression

coef1=au(2)/au(1);

coef2=x_orig(1)-coef1;

coef3=0-au(1);

costr1=num2str(coef1);

costr2=num2str(abs(coef2));

costr3=num2str(coef3);

eq=strcat(costr1,'+',costr2,'e^(',costr3,'*(t-1))');

%comparison of calculated and observed value

for t=1:n+predict

mcv(t)=coef1+coef2*exp(coef3*(t-1));

end

x_mcv0=diff(mcv);

x_mcve=[x_orig(1) x_mcv0];

x_mcv=diff(mcv(1:end-predict));

x_orig_n=x_orig(2:end);

x_c_error=x_orig_n-x_mcv;

x_error=mean(abs(x_c_error./x_orig_n));

if x_error>0.2

disp('model disqualification!');

elseif x_error>0.1

disp('model check out');

else

disp('model is perfect!');

end

%predicting model and plot gragh

plot(1:n,x_orig,'diamond',1:n+predict,x_mcve); p=x_mcve(end-predict+1:end);

xlabel('CURVE OF GREY MODEL ANALYSIS');

title('GM(1,1)');

grid on

y=eq;

e=x_error;

p=x_mcve(end-predict+1:end);

灰色系统预测模型实验

实验四 1. 实验项目名称 灰色系统预测模型 2.实验目的 要求掌握灰色系统检验方法,尤其是GM(1.1)模型 2. 实验环境 使用灰色系统理论建模软件 4.实验内容与实验步骤 1.灰色预测时关于残差、关联度、方差比和小误差概率的检验准则 M(1,1)模型的检验分为三个方面:残差检验;关联度检验;后验差检验。 (1)残差检验:对模型值和实际值的残差进行逐点检验。首先按模型计算(1)?(1)x i +,将(1)?(1)x i +累减生成(0)?()x i ,最后计算原始序列(0)()x i 与(0)?()x i 的绝对残差序列及相对残差序列,并计算平均相对残差。给定α,当φα<,且n φα<成立时,称模型为残差合格模型。 (2)关联度检验:即通过考察模型值曲线和建模序列曲线的相似程度进行检验。按前面所述 的关联度计算方法,计算出 (0) ?()x i 与原始序列(0)()x i 的关联系数,然后算出关联度,根据经验,关联度大于0.6便是满意的。 (3)后验差检验:即对残差分布的统计特性进行检验。若对于给定的00C >,当 0C C <时, 称模型为均方差比合格模型;如对给定的 00P >,当0P P >时,称模型为小残差概率合格 模型。若相对残差、关联度、后验差检验在允许的范围内,则可以用所建的模型进行预测,否则应进行残差修正。 2.实验的基本程序、基本步骤和运行结果 现在已知我国从2002年-2013年的每年的专利申请量的数据,试建立灰色预测模型并且预测2014年我国的专利申请量的情况。 2.1在excel 表格中输入以下数据

2.2计算并累加 设时间序列为 X(0)=(x(0)(1), x(0)(2), x(0)(3),x(0)(4)………………………………. x(0)(12))=(205396,251238,278943,345074…………… 1505574) 计算并累加 X(0)的1-AGO序列为(累加) (1)(1)(1)(1)(1)x(1)(12))得到下图 2.3对X(1)做紧邻均值生成 令Z(1)(k)=(0.5x(1)(K)+0.5X(1)(K-1)),k=1,2,3,4…….13;

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

GM(1,1)灰色预测模型 Introduction Initial 给定原始序列: 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 Program clear syms 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; end xx0=[];xx0(1)=x0(1);

Step 2 (1) dx (1) dt +ax1t=u,式中a, u为待定系数。 灰微分方程模型为: x0k+az1k=u,z为背景值 z1k=1/2(x1k+x1k?1) (2) 构造矩阵B和数据向量Y n Y n=Ba Y n=x02 x03 ? x0n , B= ?1/2(x11+x12), ?1/2(x12+x13), ? ?1/2(x1n?1+x1n), 1 1 ? 1 a=a u=(B T B)?1B T Y n Step 3 模型响应函数 x1k+1= x01?u e?ak+ u x0k+1=x1k+1?x1k Step 4 检验和判断GM(1,1)模型的精度(1) 残差检验for i=2:(n+10) xx0(i)=xx1(i)-xx1(i-1); end %关联度检验 for i=1:n e(i)=abs(x0(i)-xx0(i)); end mmax=max(e); for i=1:n ee(i)=0.5*mmax/(e(i)+0.5*mmax); end r=sum(ee)/n; %后验差检验 x0bar=sum(x0)/n; s1=0; for i=1:n s1=s1+(x0(i)-x0bar)^2; end s1=sqrt(s1/n); s2=0; ebar=sum(e)/n; for i=1:n s2=s2+(e(i)-ebar)^2; end s2=sqrt(s2/n); C=s2/s1; p=0; for i=1:n if abs(e(i)-ebar)<0.6745*s1

灰色预测模型的Matlab程序及检验程序(精)

灰色预测模型的Matlab 程序及检验程序 %灰色预测模型程序 clear syms a b; c=[a b]'; A=[46.2 32.6 26.7 23.0 20.0 18.9 17.5 16.3];% 原始序列 B=cumsum(A);%累加n=length(A); for i=1:(n-1) C(i)=(B(i)+B(i+1))/2; end %计算待定参数 D=A; D(1)=[]; D=D'; E=[-C; ones(1,n-1)]; c=inv(E*E')*E*D; c=c'; a=c(1); b=c(2); %预测往后预测5个数据 F=[];F(1)=A(1); for i=2:(n+5) F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a; end G=[];G(1)=A(1); for i=2:(n+5) G(i)=F(i)-F(i-1); end t1=2002:2009; t2=2002:2014; G plot(t1,A,'o',t2,G) %灰色预测模型检验程序 function [ q,c,p ] = checkgm( x0,x1 ) %GM 检验函数 %x0 原始序列

%x1 预测序列 %·返回值 % q –- 相对误差 % c -- ·方差比 % p -- 小误差概率 e0=x0-x1; q=e0/x0; s1=var(x0); %qpa=mean(e0); s2=var(e0); c=s2/s1; len=length(e0); p=0; for i=1:len if(abs(e0(i)) < 0.6745*s1) p=p+1; end end p=p/len; end

灰色预测MATLAB程序

作用:求累加数列、求a b的值、求预测方程、求残差 clc %清屏,以使结果独立显示 x=[ ]; format long; %设置计算精度 if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换 x=x'; end n=length(x); %取输入数据的样本量 z=0; for i=1:n %计算累加值,并将值赋予矩阵be z=z+x(i,:); be(i,:)=z; end for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end

for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=*(be(i,:)+be(i+1,:)); end for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end alpha=inv(B'*B)*B'*y; %计算参数矩阵即a b的值 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,: );%显示输出预测值的累加数列 end var(1,:)=ago(1,:) %显示输出预测值 for i=1:n %如改n为n+m-1,可预测后m-1个值 var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值end for i=1:n error(i,:)=x(i,:)-var(i,:); %计算残差 end c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列 alpha %显示输出参数数列 var %显示输出预测值 error %显示输出误差 c %显示后验差的比值 作用:数据处理判断是否可以用灰色预测、求级比、求累加数列、求a b的值、求预测方程 clc,clear x0=[ ]'; %注意这里为列向量 n=length(x0); lamda=x0(1:n-1)./x0(2:n) %计算级比 range=minmax(lamda') %计算级比的范围 x1=cumsum(x0) %累加运算 B=[*(x1(1:n-1)+x1(2:n)),ones(n-1,1)]; Y=x0(2:n); u=B\Y %拟合参数u(1)=a,u(2)=b x=dsolve('Dx+a*x=b','x(0)=x0'); %求微分方程的符号解

灰色系统新陈代谢模型源码(matlab)

function g(x); %定义函数gm(x) for j=1:10 clc; %清屏,以使计算结果独立显示 format long; %设置计算精度 if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x'; end; n=length(x); %取输入数据的样本量 z=0; for i=1:n %计算累加值,并将值赋与矩阵be z=z+x(i,:); be(i,:)=z; end for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=-0.5*(be(i,:)+be(i+1,:)); end for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end alpha=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,:); end var(1,:)=ago(1,:) for i=1:n %如改n为n+m-1,可预测后m-1个值 var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值end for i=1:n error(i,:)=var(i,:)-x(i,:); %计算残差 end c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列 alpha %显示输出参数α、μ数列 var %显示输出预测值 error %显示输出误差 c %显示后验差的比值c var=fix(var);

灰色预测matlab程序

Matlab的灰色预测程序: y=input('请输入数据'); 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))]); 请输入数据[29.8 30.11 41.05 70.12 77.79 77.79 104.82 65.22 82.7 100.79] 输入需要预测的个数4

百分绝对误差为:14.5128% 预测值为:110.5718 120.8171 132.0116 144.2434

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

灰色预测模型matlab程序 %下面程序是灰色模型GM(1,1)程序二次拟合和等维新陈代谢改进预测程序,mat lab6.5 ,使用本程序请注明,程序存储为gm1.m %x = [5999,5903,5848,5700,7884];gm1(x); 测试数据 %二次拟合预测GM(1,1)模型 function gmcal=gm1(x) 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); end end %x1,z1,k,yn1 sizez1=size(z1,2); %size(yn1); z2 = z1'; z3 = ones(1,sizez1)'; YN = yn1'; %转置 %YN B=[z2 z3]; au0=inv(B'*B)*B'*YN; au = au0'; %B,au0,au

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,rightbra strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,r ightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应方程 %****************************************************** %二次拟合 k2 = 0; for y2 = x1 k2 = k2 + 1; if k2 > k else ze1(k2) = exp(-(k2-1)*afor); end end %ze1 sizeze1 = size(ze1,2); z4 = ones(1,sizeze1)'; G=[ze1' z4]; X1 = x1'; au20=inv(G'*G)*G'*X1; au2 = au20'; %z4,X1,G,au20

灰色预测模型介绍

数学模型与数学实验数 课程报告 题目:灰色预测模型介绍专业: 班级: 姓名: 学号: 二0一一年六月

1. 模型功能介绍 预测模型为一元线性回归模型,计算公式为Y=a+b。一元非线性回归模型:Y=a+blx+b2x2+…+bmxm。式中:y为预测值;x为自变量的取值;a,b1,b2……bm为回归系数。当自变量x与因变量y之间的关系是直线上升或下降时,可采用一元线性预测模型进行预测。当自变量x和因变量y之间呈曲线上升或下降时,可采用一元非线性预测模型中的y=a+b1x+b2x2+…+bmxm这个预测模型。当自变量x和因变量y之间关系呈上升一下降一再上升一再下降这种重复关系时,可采用一元线性预测模型中的Y=a+bx这个模型来预测。其中我要在这里介绍灰色预测模型。 灰色预测是就灰色系统所做的预测,灰色系统(Grey System)理论[]1是我国著名学者邓聚 龙教授20世纪80年代初创立的一种兼备软硬科学特性的新理论[95]96]。所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统,其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息未知,那么这一系统就是灰色系统。一般地说,社会系统、经济系统、生态系统都是灰色系统。例如物价系统,导致物价上涨的因素很多,但已知的却不多,因此对物价这一灰色系统的预测可以用灰色预测方法。 灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测,就是对在一定方位内变化的、与时间有关的灰色过程的预测。尽管过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此这一数据集合具备潜在的规律,灰色预测就是利用这种规律建立灰色模型对灰色系统进行预测。 灰色系统的基本原理 公理1:差异信息原理。“差异”是信息,凡信息必有差异。 公理2:解的非唯一性原理。信息不完全,不明确地解是非唯一的。 公理3:最少信息原理。灰色系统理论的特点是充分开发利用已有的“最少信息”。 公理4:认知根据原理。信息是认知的根据。 公理5:新信息优先原理。新信息对认知的作用大于老信息。 公理6:灰性不灭原理。“信息不完全”是绝对的。 灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反应预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。 灰色预测模型实际上是一个微分方程, 称为GM模型。GM(1,N)[]1表示1阶的,N个 变量的微分方程型模型;则是1阶的,1个变量的微分方程型模型。在实际进行预测时, 一般选用GM(1,1) 模型, 因为这种模型求解较易, 计算量小, 计算时间短, 精度较高。 现在下面简单介绍有关于灰色预测的相关知识点: 为了弱化原始时间序列的随机性 在建立灰色预测模型之前,需先对原始时间序列进行数据处理,经过数据处理后的时间序列即称为生成列。灰色系统常用的数据处理方式有累加和累减两种。 关联度]1[

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

%x=[1019,1088,1324,1408,1601];gm1(x); 测试数据%二次拟合预测GM(1,1)模型 function gmcal=gm1(x) if nargin==0 x=[1019,1088,1324,1408,1601] end format long g sizex=length(x); %求数组长度 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); end end %x1,z1,k,yn1 sizez1=length(z1); %size(yn1); z2 = z1'; z3 = ones(1,sizez1)'; YN = yn1'; %转置 %YN B=[z2 z3]; au0=inv(B'*B)*B'*YN; au = au0'; %B,au0,au afor = 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,rightbra strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+ ',leftbra,num2str(ua),rightbra) %输出时间响应方程 %****************************************************** %二次拟合 k2 = 0; for y2 = x1 k2 = k2 + 1; if k2 > k else ze1(k2) = exp(-(k2-1)*afor); end end %ze1 sizeze1=length(ze1); z4 = ones(1,sizeze1)'; G=[ze1' z4]; X1 = x1'; au20=inv(G'*G)*G'*X1; au2 = au20'; %z4,X1,G,au20 Aval = 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; %预测的步骤数 1 for k3=1:nfinal x3fcast(k3) = constant1*exp(afor1*k3)+ua; end %x3fcast %一次拟合累加值 for k31=nfinal:-1:0 if k31>1 x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1); else if k31>0

灰色系统预测模型GM(1,1)的基本思想与实现过程(xs)

灰色系统预测模型GM(1,1)的基本思想与实现过程 邓聚龙,jq ,佚名 摘要:从灰色系统的预备知识、灰色系统预测模型GM(1,1)的计算、灰色系统预测模型的检验、GM(1,1)预测应用举例以及GM(1,1)模型的特点等五个方面阐述了灰色系统预测模型GM(1,1)的基本思想与实现过程,这对于地理科学本科生学会运用该方法解决实际的地理预测问题,改进思维方式,提高实践能力具有一定的意义。 关键词:预测;灰色系统;模型检验;模型特点 1 预备知识 1.1 灰色系统 白色系统是指系统内部特征是完全已知的;黑色系统是指系统内部信息完全未知的;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。 1.2 灰色预测 灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行 预测。尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。 目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。 2 灰色系统预测模型GM(1,1) 2.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 )= ∑ =k i 1 X (0)(i) =X (1)(k -1)+ X (0)(k ) (1) 对X (1)可建立下述白化形式的微分方程:

灰色预测模型案例

1.1.5 两岸间液体化工品贸易前景预测 从上述分析可见,两岸间液体化工品贸易总体上呈现上升的增长趋势。然而,两岸间的这类贸易受两岸关系、特别是台湾岛内随机性政治因素影响很大。因此,要对这一贸易市场今后发展的态势做出准确的定量判断是相当困难的;但从另一方面来说,按目前两岸和平交往的常态考察,贸易作为两岸经济与贸易交往的一个有机组成部分,其一般演化态势有某些规律可寻的。故而,我们可以利用其内在的关联性,通过选取一定的数学模型和计算方法,对之作一些必要的预测。 鉴此,本研究报告拟采用一定的预测技术,借助一定的计算软件,对今后10余年间大陆从台湾进口液化品贸易量作一个初步的预测。 (1) 模型的选择 经认真考虑,我们选取了灰色系统作为预测的技术手段,因为两岸化工品贸易具有的受到外界的因素影响大和受调查条件限制数据采集很难完全的两大特点,正好符合灰色系统研究对象的主要特征,即“部分信息已知,部分信息未知”的不确定性。灰色系统理论认为,对既含有已知信息又含有未知信息或不确定信息的系统进行预测,就是在一定方位内变化的、与时间有关的灰色过程进行的预测。尽管这一过程中所显示的现象是随机的,但毕竟是有序的,因此这一数据集合具有潜在的规律。灰色预测就是利用这种规律建立灰色模型对灰色系统进行预测。 本报告以灰色预测模型,对两岸间化工品贸易进行的预测如下: 灰色预测模型预测的一般过程为: ① 一阶累加生成(1-AGO ) 设有变量为) 0(X 的原始非负数据序列 )0(X =[)1()0(x ,)2()0(x ,…)() 0(n x ] (1.1) 则) 0(X 的一阶累加生成序列 )1(X =[)1()1(x ,)2()1(x …)() 1(n x ] (1.2) 式中 ) ()(1)0() 1(i x k x k i ∑== k=1,2…n ② 对) 0(X 进行准光滑检验和对进行准指数规律检验

灰色预测MATLAB程序

灰色预测 专设工⑼他QA—叫吋)为原始数列.其1次累 ?加生成数列为恥=妙①曲⑵,…卅何),其中 X° 仇)二工* ° (0.址=1=2= -:n 5-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「— a y=代⑶ B =I b*- : 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"?

灰色预测模型的MATLAB 程序及检验程序

灰色预测模型的Matlab程序及检验程序%灰色预测模型程序 clear syms a b; c=[a b]'; A=[46.232.626.723.020.018.917.516.3];%原始序列B=cumsum(A);%累加 n=length(A); for i=1:(n-1) C(i)=(B(i)+B(i+1))/2; end %计算待定参数 D=A; D(1)=[]; D=D'; E=[-C;ones(1,n-1)]; c=inv(E*E')*E*D; c=c'; a=c(1); b=c(2); %预测往后预测5个数据 F=[];F(1)=A(1); for i=2:(n+5) F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a; end G=[];G(1)=A(1); for i=2:(n+5) G(i)=F(i)-F(i-1); end t1=2002:2009; t2=2002:2014; G plot(t1,A,'o',t2,G) %灰色预测模型检验程序 function[q,c,p]=checkgm(x0,x1) %GM检验函数 %x0原始序列 %x1预测序列 %·返回值

%q–-相对误差 %c--·方差比 %p--小误差概率 e0=x0-x1; q=e0/x0; s1=var(x0); %qpa=mean(e0); s2=var(e0); c=s2/s1; len=length(e0); p=0; for i=1:len if(abs(e0(i))<0.6745*s1) p=p+1; end end p=p/len; end 等级相对误差q方差比C小误差概论P I级<0.01<0.35>0.95 II级<0.05<0.50<0.80 III级<0.10<0.65<0.70 IV级>0.20>0.80<0.60

灰色预测MATLAB程序

灰色预测M A T L A B程 序 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

灰色预测 作用:求累加数列、求a b的值、求预测方程、求残差 clc %清屏,以使结果独立显示 x=[ ]; format long; %设置计算精度 if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换 x=x'; end n=length(x); %取输入数据的样本量 z=0; for i=1:n %计算累加值,并将值赋予矩阵be z=z+x(i,:); be(i,:)=z; end for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=*(be(i,:)+be(i+1,:)); end for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end alpha=inv(B'*B)*B'*y; %计算参数矩阵即a b的值 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,:);%显示输出预测值的累加数列 end var(1,:)=ago(1,:) %显示输出预测值 for i=1:n %如改n为n+m-1,可预测后m-1个值 var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值end for i=1:n error(i,:)=x(i,:)-var(i,:); %计算残差 end c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列

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

灰色预测模型matlab程序 灰色模型预测是在数据不呈现一定规律下可以采取的一种建模和预测方法,其预测数据与原始数据存在一定的规律相似性 %下面程序是灰色模型GM(1,1)程序二次拟合和等维新陈代谢改进预测程序,mat lab6.5 ,使用本程序请注明,程序存储为gm1.m %x = [5999,5903,5848,5700,7884];gm1(x); 测试数据 %二次拟合预测GM(1,1)模型 function gmcal=gm1(x) 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); end end %x1,z1,k,yn1 sizez1=size(z1,2); %size(yn1); z2 = z1'; z3 = ones(1,sizez1)'; YN = yn1'; %转置 %YN B=[z2 z3]; au0=inv(B'*B)*B'*YN;

%B,au0,au afor = 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,rightbra strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,r ightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应方程 %****************************************************** %二次拟合 k2 = 0; for y2 = x1 k2 = k2 + 1; if k2 > k else ze1(k2) = exp(-(k2-1)*afor); end end %ze1 sizeze1 = size(ze1,2); z4 = ones(1,sizeze1)'; G=[ze1' z4]; X1 = x1'; au20=inv(G'*G)*G'*X1;

灰色预测模型及应用论文

管理预测与决策的课程设计报告 灰色系统理论的研究 专业:计算机信息管理 姓名:XXX 班级:xxx 学号:XX 指导老师:XXX 日期2012年11月01 日

摘要:科学地预测尚未发生的事物是预测的根本目的和任务。无论个体还是组织,在制定和规划面向未来的策略过程中,预测都是必不可少的重要环节,它是科学决策的重要前提。在众多的预测方法中,灰色预测模型自开创以来一直深受许多学者的重视,它建模不需要太多的样本,不要求样本有较好的分布规律,计算量少而且有较强的适应性,灰色模型广泛运用于各种领域并取得了辉煌的成就。本文详细推导GM(1,1)模型, 另外对灰关联度进行了进一步的改进,让改进的计算式具有唯一性和规范性[]4。通过给 出的实例高校传染病发病率情况,建立了GM(1,1)预测模型,并预测了1993年的传染病发病率。另外对传染病发病率较高的痢疾、肝炎、疟疾三种疾病做了关联度分析,发现痢疾与整个传染病关系最密切,而肝炎、疟疾与整个传染病的密切程度依次差些。 关键词:灰色预测模型;灰关联度;灰色系统理论

目录 1、引言 (1) 1.1、研究背景 (1) 1.1.1、国内研究现状 (1) 1.1.2、国外研究现状 (1) 1.2、研究意义 (1) 2、灰色系统及灰色预测的概念 (2) 2.1、灰色系统理论发展概况 (2) 2.1.1、灰色系统理论的提出 (2) 2.1.2、灰色系统理论的研究对象 (2) 2.1.3、灰色系统理论的应用范围 (2) 2.1.4、三种不确定性系统研究方法的比较分析 (3) 2.2、灰色系统的特点 (3) 2.3、常见灰色系统模型 (4) 2.4、灰色预测 (4) 3、简单的灰色预测——GM(1,1)预测 (5) 3.1、GM(1,1)预测模型的基本原理 (5) 4、小结 (8) 参考文献: (8)

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

灰色系统预测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 )= ∑ =k i 1 X (0)(i) =X (1)(k -1)+ X (0)(k ) (1) 对X (1)可建立下述白化形式的微分方程: dt dX )1(十) 1(aX =u (2) 即GM(1,1)模型。 上述白化微分方程的解为(离散响应): ∧ X (1)(k +1)=(X (0)(1)- a u )ak e -+a u (3) 或 ∧ X (1)(k )=(X (0)(1)- a u ))1(--k a e +a u (4)

灰色理论预测模型及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: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))]);

相关文档
相关文档 最新文档