灰色模型 java代码_灰色模型的简单Java实现

本文详细介绍了灰色模型的理论基础,包括数据处理、建模过程和精度检验,并提供了一个简单的Java实现示例。通过计算和比较预测值与原始数据,展示了如何运用GM(1,1)模型进行时间序列预测,强调了模型适用性的考虑。" 110390376,10390094,HCIA网络学习笔记,"['网络', '路由', '交换机', 'VLAN', 'STP', 'OSPF', 'BGP', 'VRRP']
摘要由CSDN通过智能技术生成

前几天在以前的遗留代码中发现一个问题,就是我生成的一个数据的走势曲线的预测值(用于灰色时间序列预测)总是和老代码里的不一致,具体来说就是:遗留代码里面的预测值的斜率总是为零,相比之下我生成的就比较合理了,和原有数据的走势相比基本一致。后来发现这个不知道谁写的代码里面又全是坑,连灰色模型都是错的,输入的数据也是错的。。。

所以,趁着这个周末有空,抽出一点陪女朋友的时间(不会花太长时间的,还是女朋友重要!),来写一些关于灰色模型的Java的简单实现。

一、对灰色模型的建模分析

首先,关于灰色模型(后面简称为GM),简单讲就是介于黑色模型和白色模型之间,利用已知的数据来推测未知数据的一种模型(更具体的描述可以看灰色模型的简单介绍)。

好的,从上面我们可以知道,运用GM,有这么几个步骤:处理数据,使其可以运用于GM中

设原始数据列为$$X^{(0)}=x^{(0)}(1)+x^{(0)}(2)+x^{(0)}(3)+…+x^{(0)}(n)$$那么其级数比则是:$$λ(k)=frac{x^{(0)}(k-1)}{x^{(0)}(k)},k=2,3,4…n$$

当所有级数比都在区间:$$(e^{frac{-2}{n+1}},e^{frac{2}{n+1}})(注:这个区间和正态分布的概率密度有关)$$

此时的数据列就可以建立GM,否则,对原始数据列进行变换(比如平移),使其满足上面的条件。

建立GM模型

假设数据列:$$X^{(0)}=x^{(0)}(1)+x^{(0)}(2)+.。。+x^{(0)}(n)$$满足条件,我们再通过累加生成数据列(也可以使用其他方式,比如累减、均值等):$$X^{(1}=x^{(1)}(1)+x^{(1)}(2)+.。。+x^{(1)}(n)$$

其中:$$x^{(1)}(k)=sum_{i=0}^{k}x(i)$$

定义(x^{(1)})的灰导数为:

$$dx^{(1)}(k)=x^{(0)}(k)=x^{(1)}(k)+x^{(1)}(k-1)$$

令:$$z^{(1)}(k)=frac{1}{2}(x^{(1)}(k)+x^{(1)}(k-1)),(k=2,3,…,n)$$

定义GM(1,1)的灰微分方程模型为:

$$x^{(0)}(k)+az^{(1)}(k)=b$$

(其中x^{(0)}(k)称为灰导数,a称为发展系数,z^{(1)}(k)称为白化背景值,b称为灰作用量)。

(将x^{(0)}(k)+az^{(1)}(k)=b) 展开成如下形式:

$$left[matrix{x^{(0)}(2)\x^{(0)}(3)\x^{(0)}(4)\ …\x^

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值