首页 > 代码库 > MATLAB解灰色模型

MATLAB解灰色模型

目前,灰色模型已经成为社会、经济、科教、技术等很多领域进行预测、决策、评估、规划、控制、系统分析和建模的重要方法之一。特别是它对时间序列短、统计数据少、信息不完全系统的建模与分析,具有独特的功效。

其实灰色模型很简单,具体的步骤我就不再一一赘述,我就灰色模型用MATLAB的解法与大家分享一下。我以一组简单的数据为例,如下:

例:

近几年,某种商品的价格如下表:

年份

2006

2007

2008

2009

2010

2011

2012

价格

71.1

72.4

72.4

72.1

71.4

72.0

71.6

请预测接下来几年价格情况?

下面我用MATLAB求出灰色模型的方程,然后检验:

format long

x=[71.1 72.4 72.4 72.1 71.4 72.0 71.6];

for k=2:7

    q=x(k-1)/x(k)

end

q1=(2.718281828459)^(-2/8)

q2=(2.718281828459)^(2/8)             %进行检验是否能用灰色模型%

for i=1:7

if q1<q(i)<q2

    disp(‘keyijianmo‘);                  %可以应用模型%

    x12=sum(x(1,1:2))

    x13=sum(x(1,1:3))

    x14=sum(x(1,1:4))

    x15=sum(x(1,1:5))

    x16=sum(x(1,1:6))

    x17=sum(x(1,1:7))

    z12=0.5*(x(1)+x12)

    z13=0.5*(x12+x13)

    z14=0.5*(x13+x14)

    z15=0.5*(x14+x15)

    z16=0.5*(x15+x16)

    z17=0.5*(x16+x17)

    y=[x(2) x(3) x(4) x(5) x(6) x(7)]‘;

    b=[-z12 1;-z13 1;-z14 1;-z15 1;-z16 1;-z17 1];

    p=inv(b‘*b)*b‘*y;

    a=p(1)

    b=p(2)

    c=b/a

    d=x(1)-c

end

end

运行后结果如下:

Keyijianmo

a =  0.00234378647852

b =  72.65726960367881

c =    3.099995254237023e+004

d =   -3.092885254237023e+004

建立灰色模型函数:

function f=huise(x)

f=-30928.85254237023*(2.718281828459)^(-0.00234378647852*x)+30999.95254237023;

建立该函数放在huise.m文件中,将工作区间指向该文件,然后输入如下程序:

format long

x=[71.1 72.4 72.4 72.1 71.4 72.0 71.6];

x1=x(1)

x2=huise(1)-x1

x3=huise(2)-huise(1)

x4=huise(3)-huise(2)

x5=huise(4)-huise(3)

x6=huise(5)-huise(4)

x7=huise(6)-huise(5)

xx=[x1 x2 x3 x4 x5 x6 x7]

s=(x-xx)./x

o=abs(s)

p=sum(o(1,:))

q=1-p

运行结果如下:

x1 =  71.09999999999999

x2 =  72.40574144031999

x3 =  72.23623656178097

x4 =  72.06712850127951

x5 =  71.89841632983371

x6 =  71.73009912066482

x7 =  71.56217594914415

xx =

  Columns 1 through 5

  71.09999999999999  72.40574144031999  72.23623656178097  72.06712850127951  71.89841632983371

  Columns 6 through 7

  71.73009912066482  71.56217594914415

s = 

Columns 1 through 5

  0  -0.00007930166188   0.00226192594225   0.00045591537754  -0.00698062086602

  Columns 6 through 7

   0.00374862332410   0.00052826886670

o =

  Columns 1 through 5

0   0.00007930166188   0.00226192594225   0.00045591537754   0.00698062086602

  Columns 6 through 7

   0.00374862332410   0.00052826886670

p =   0.01405465603849

q =   0.98594534396151

挑选你想要的数据即可。