• 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

    挑选你想要的数据即可。

  • 相关阅读:
    vue系列教程:插值
    docker load 镜像时出现:open /var/lib/docker/tmp/docker-import-500852078/repositories: no such file or dir
    Day 18: 记filebeat内存泄漏问题分析及调优
    Filebeat 启动关闭流程
    docker加速
    Docker镜像保存save、加载load(外网转移至内网)
    filebeat.yml(中文配置详解)
    kafka介绍
    基于统一开发平台的微服务架构转型升级之路 | 某国有大型银行案例
    转 -Filebeat + Redis 管理 LOG日志实践
  • 原文地址:https://www.cnblogs.com/loving-wenqure/p/3863837.html
Copyright © 2020-2023  润新知