灰色预测模型的matlab程序

合集下载

灰色系统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)模型的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灰色预测模型GM(1,1)代码

Matlab灰色预测模型GM(1,1)代码
end
s=0;xx0(1)=X0(1);
for jj=2:1:m2;
xx0(jj)=xx1(jj)-xx1(jj-1);
end
disp('GM(1,1)对数列进行预测结果');xx0
disp('数列1原始观测数据');X0
disp('a');AU(1)
disp('u');AU(2)
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,:));
% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是 GM(1,1)。
% 原始数据的处理方法是一次累加法。
y=input('请输入数据 ');
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
disp(['再下个拟合值为',num2str(ys(n+2))]);
x(0)={x(0)(1),x(0)(2),……,x(0)(N)}=
{ 724.57, 746.62, 778.27, 800.8, 827.75,871.1, 912.37, 954.28, 995.01, 1037.2}
function c7fun73

Matlab教程课件-灰色预测模型

Matlab教程课件-灰色预测模型

2
i3 =1
k = 4, x (1) (4) = ∑ x (0) (i ) = x (1) (3) + x (0) (4) = 9.9 + 3.6 = 13.5
i =1 5
k = 5, x (5) =
(1)
(0) (1) (0) = + x i x x ( ) (4) (5) = 13.5 + 3.8 = 17.3 ∑ i =1
对于原始数据列依次做前后相邻的两个数据相减的运 算过程称为累减生成过程IAGO。如果原始数据列为
x (1) = ( x (1) (1), x (1) ( 2), , x (1) ( n))
令 x ( 0 ) ( k ) = x (1) ( k ) − x (1) ( k − 1), k = 2,3, , n,
为均值生成数,也称等权邻值生成数
9
累加生成计算示例
例:x (0)=(x (0) (k) ︱k=1,2,3,4,5) =x(0)(1),x(0)(2),x(0)(3),x(0)(4),x(0)(5) =(3.2,3.3,3.4,3.6,3.8) 求 x(1)(k) 解: (1) (0) k = 1, x = (1) x= (1) 3.2
8
3. 加权邻值生成
设原始数列为x ( 0 ) = ( x ( 0 ) (1), x ( 0 ) (2), , x ( 0 ) (n))
称为数列的邻值。 x (k − 1), x (k )
(0) (0)
x
(0)
x (0) (k − 1)为后邻值,为前邻值 x (0) (k )
对于常数,令 α ∈ [0,1]
10
累加生成的特点 一般经济数列都是非负数列。累加生成能使任意非负 数列、摆动的与非摆动的,转化为非减的、递增的

【数学建模】灰色预测模型(预测)

【数学建模】灰色预测模型(预测)

【数学建模】灰色预测模型(预测)文章目录•一、算法介绍•o 1.灰色预测模型o 2.灰色系统理论o 3. 针对类型o 4. 灰色系统o 5. 灰色生成o 6. 累加生成o7. GM(1,1)模型o▪推导▪精度检验▪精度检验等级参照表•二、适用问题•三、算法总结•o 1. 步骤•四、应用场景举例•o 1. 累加生成o 2. 建立GM(1,1)模型o 3. 检验预测值•五、MATLAB代码•六、实际案例•七、论文案例片段(待完善)灰色预测模型主要针对数学建模问题中的一些小的子问题进行求解,如果想直接使用请跳转至——四、五另外之前看过一篇比较完整的【数学建模常用算法】之灰色预测模型GM,作者:張張張張视频回顾一、算法介绍1.灰色预测模型灰色预测模型(Gray Forecast Model)是通过少量的、不完全的的信息,建立数学模型并做出预测的一种预测方法.当我们应用运筹学的思想方法解决实际问题,制定发展战略和政策、进行重大问题的决策时,都必须对未来进行科学的预测.预测是根据客观事物的过去和现在的发展规律,借助于科学的方法对其未来的发展趋势和状况进行描述和分析,并形成科学的假设和判断。

2.灰色系统理论灰色系统理论是研究解决灰色系统分析、建模、预测、决策和控制的理论.灰色预测是对灰色系统所做的预测。

目前常用的一些预测方法(如回归分析等),需要较大的样本,若样本较小,常造成较大误差,使预测目标失效。

灰色预测模型所需建模信息少,运算方便,建模精度高,在各种预测领域都有着广泛的应用,是处理小样本预测问题的有效工具。

3. 针对类型灰色系统理论是由华中理工大学邓聚龙教授于1982年提出并加以发展的。

二十几年来,引起了不少国内外学者的关注,得到了长足的发展。

目前,在我国已经成为社会、经济、科学技术在等诸多领域进行预测、决策、评估、规划控制、系统分析与建模的重要方法之一。

特别是它对时间序列短、统计数据少、信息不完全系统的分析与建模,具有独特的功效,因此得到了广泛的应用.4. 灰色系统灰色系统是黑箱概念的一种推广。

灰色预测的matlab实现,代码大全

灰色预测的matlab实现,代码大全

程序代码:%普通的灰色预测GM1.mclearX=input('请输入原始数据:','s');%原始数据(可以多行,每一行为一类原始数据,即可多类原始数据)X=str2num(X);[m1 m2]=size(X);%m1和m2分别表示X的行数和列数k0=input('请输入所要预测的阶数:');%GM(1,1)模型for i=1:m1n=i;x0=X(i,:);%将原始数据X中的第i行数据赋给x0,即取出一类原始数据disp('1.原始数据:');Y='';for z=1:m2Y=strcat(Y,'(',num2str(x0(z)),')');enddisp(Y);% 1. 利用一次累加(1-AGO)生成新数列E=triu(ones(m2));%E表示元素为1右上三角阵x1=x0*E;%对原始数据进行一次累加(1-AGO)生成新数列x1disp('2.一次累加(1-AGO)生成的数据:');Y='';for z=1:m2Y=strcat(Y,'(',num2str(x1(z)),')');enddisp(Y);% 2. 计算出发展系数a,灰作用量ub1=x1;b1(1)=[];b2=x1;b2(m2)=[];b=-0.5*(b1+b2);%生成B的第一行B=[b;ones(1,m2-1)];%生成BB=B'; %对B进行转置y0=x0;y0(1)=[];%生成Yy0=y0'; %对Y进行转置A=((inv(B'*B))*B')*y0; %根据Y=BA(A为待辨识参数向量),可知A=[inv(B'B)]B'Y a=A(1);u=A(2);%A=[a u]'% 3. 确立模型且求出模拟值u_a=u/a;for k=0:m2+k0-1x2(k+1)=(x0(1)-u_a)*exp(-k*a)+u_a;end %求出新数列的模拟值x2x3=x2;x3(m2+k0)=[];x4=[0 x3];x5=x2-x4;%利用累减生成法求出原始数据的模拟值x5disp('3.一次累加(1-AGO)生成的数据的模拟值:')Y='';for z=1:m2+k0Y=strcat(Y,'(',num2str(x2(z)),')');enddisp(Y);disp('4.原始数据的模拟值:')Y='';for z=1:m2+k0Y=strcat(Y,'(',num2str(x5(z)),')');enddisp(Y);% 4. 模型检验(算出的值到等级参照表中检查其精度等级)%计算后验差比C和残差序列Qx6=x5(1:m2);Q=x0-x6;%Q为残差序列s1=std(Q);%s1为残差序列Q的标准差s2=std(x0);%s2为初始序列x0的标准差C=s1/s2;%后验差比C(越小越好)w1=1:m2;w1=[ones(m2,1) w1'];w2=Q';[bb,bint,r1,rint,stats]=regress(w2,w1);rcoplot(r1,rint)C1=strcat('5.后验差比(均方差比值): C=',num2str(C));disp(C1);if C<=0.35disp(' 由于C<=0.35,则此模型精度等级为1级(好)。

灰色系统预测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 )=∑=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程序精确版

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

%x=[1019,1088,1324,1408,1601];gm1(x);测试数据%二次拟合预测GM(1,1) 模型function gmcal=gm1(x)if nargin==0x=[1019,1088,1324,1408,1601]end format long g sizex=length(x); %求数组长度k=0;for y1=x k=k+1; if k>1x1(k)=x1(k-1)+x(k);% 累加生成z1(k-1)=-0.5*(x1(k)+x1(k-1));%z1 维数减1,用于计算B yn1(k-1)=x(k);elsex1(k)=x(k);end end %x1,z1,k,yn1 sizez1=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,rightb ra,'+ ',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)%输出时间响应方程for 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);endend endx31fcast %一次拟合预测值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);endendend%二次拟合预测值%***精度检验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);%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 =运行结果x =ans =x1(t+1)=8908.4929exp(0.11871t)+(-7889.4929) ans = x1(t+1)=8945.2933exp(0.11871t)+(-7935.7685) x31fcast =Columns 1 through 3Columns 4 through 61429.691537401951609.90061644041 1812.824603777821019 1088 1324 1408 16011019 1088 13241408 160110191122.89347857097 1264.43142178303 Columns 4 through 61423.80987235488 1603.27758207442 1805.36675232556x41fcast =Columns 1 through 310191118.05685435129 1269.65470492098Cval =0.139501578334155 pval =1。

使用Matlab技术进行灰色系统建模的基本方法

使用Matlab技术进行灰色系统建模的基本方法

使用Matlab技术进行灰色系统建模的基本方法灰色系统理论是一种具有实用价值和应用广泛的预测和决策分析方法。

在实际应用中,利用Matlab技术来进行灰色系统建模更加高效和方便。

本文将介绍使用Matlab技术进行灰色系统建模的基本方法和步骤,帮助读者深入了解和掌握这一技术。

一、Matlab在灰色系统建模中的应用Matlab是一种功能强大的科学计算软件,具有数据处理、绘图和模拟仿真等丰富的功能,因此在灰色系统建模中得到了广泛应用。

Matlab提供了各种灰色系统建模工具和函数,可以快速、准确地进行系统建模和分析。

因此,掌握Matlab的使用,对于进行灰色系统建模具有重要意义。

二、数据预处理在进行灰色系统建模之前,需要对原始数据进行预处理,以提高后续建模的准确性和可靠性。

数据预处理包括数据清洗、数据平滑和数据归一化等步骤。

Matlab 提供了丰富的数据处理函数和工具,可以快速、灵活地完成这些操作。

1. 数据清洗数据清洗是指删除或修正含有噪声、异常值或缺失值的数据。

Matlab中可以使用滤波函数、插值函数和替换函数等方法对数据进行清洗。

例如,可以使用median函数对数据进行中值滤波,去除噪声干扰。

另外,使用interp1函数进行数据插值,可以填补缺失值,使数据更加完整。

2. 数据平滑数据平滑是指通过降低数据的波动性,使其更具有连续性和稳定性。

Matlab中常用的数据平滑方法包括移动平均法、指数平滑法和小波平滑法等。

移动平均法通过计算滑动窗口内数据的平均值,来平滑原始数据。

指数平滑法则采用指数加权平均的方式,对数据进行平滑处理。

小波平滑法则利用小波分析的方法,对数据进行平滑处理。

3. 数据归一化数据归一化是指将不同量纲或取值范围的数据,转换为统一的尺度。

常用的归一化方法包括最小-最大归一化和Z-score归一化等。

最小-最大归一化将数据线性映射到[0,1]的范围内,使数据具有统一的尺度和可比性。

Z-score归一化则通过计算数据与均值的偏差,除以标准差,将数据标准化为均值为0,标准差为1的分布。

灰色GM(1,N)预测模型编程实现及应用检验

灰色GM(1,N)预测模型编程实现及应用检验

实用第一f智慧密集■BBaSEIEieSI3l3BBI3SeSBI3BBEIISBBBI3BI9@SI3eSI3aiSieEISeBI3ei3iaEIBBeBI3BaEIEII3SS@ieEl®灰色GM(1,N)预测模型编程实现及应用检验王成(江苏省阜宁县东沟病虫测报站,江苏盐城224400)摘要:灰色GM(1,N)预测模型在社会、经济、农业、生态等诸多领域应用十分广泛。

为推广使用该预测模型,依据邓聚龙教授的灰色理论,使用VC++编程实现GM(1,N)预测模型,实现了多个预测因子和多个关联因子同时进行分析,提高了使用效率,择优选择算法提高了分析精度。

使用参考文献中的数据和模拟数据,对系统预测模型正确性和预测精度进行了检验。

关键词:灰色系统;GM(1,N)模型;VC编程;多关联因子1概述在对社会、经济、农业、工业控制等灰色数据领域进行研究的主要任务是分析、建模、预测、决策和控制。

根据邓聚龙教授在20世纪80年代提出的灰色理论,其典型的灰色预测模型(GREY MODEL)是GM (1,1)模型和GM(1,N)模型。

而在实际研究中,往往对一个因子(研究对象)的研究会要考虑其他多个关联因子。

女口:农业领域中病虫害发生会与病虫害基数、雨量、日照、气温、耕作制度等密切相关。

因此灰色GM (1,N)模型的应用显得更加广泛。

假设研究对象是在一定范围分布的灰色量,同时其数据序列或经累加(AGO)生成后的数据序列是呈线性 分布的,或者在线性范围内是收敛的,对于单个变量,用GM(1,1)模型构建一阶微分方程,多个变量时使用GM(1,N)模型构建多阶一次微分方程。

通过现有数据序列,经过矩阵构造、矩阵计算等方法,求解各变量因子的参数,并将数据序列和参数带回到微分方程,得出模型计算值后,再通过累减(IAGO)生成还原数值,经与原始数据进行比较,得出模型预测值的精度。

这就是GM(1,N)模型。

2GM(1,N)模型假设「一为系统预测的个数据序列(子因子),上标用(0)表示原始值,用(1)表示1次累加值。

Matlab和LabVIEW在灰色预测中的应用

Matlab和LabVIEW在灰色预测中的应用

间 序列 , 用 灰 色模 型 中常 用 于 预 测 的 G 1 ) 型对 烈 度 值 预 值 , 用 G I 1模 型 预 测其 运 行 状 态 及发 展 趋 势 。 采 M(, 模 1 现 M( , ) 测P1 先 对 烈 度值 序 列 -。首 . 3
理 I
: , , , J 行 一 次 累加 生成 处 J2… Ⅳ进
行 程序 的虚 拟仪 器 软 件开 发平 台集 成 化 环 境 .其 最 大 的特 色 是 码 。 采 用 编 译 型 图 形 化 编 程语 言— G语 言( rp rg m n , 自 G a hp or mig)在 a (1 以直 接 调入 MA L B的应 用 文 件 , 方 法 是在 节点 上 2可 TA 其 在 I r 在 mp ” 动 测试 、 据 采 集 和控 制 、 程 监 控 和 工 业 自动 化 领 域有 广 泛 的 单 击 鼠标 右键 . 弹 出式 菜 单 中 选 择 " ot , 对 话 框 中选 择 数 过
维普资讯
1 2




2 0 年 第 7期 08
Ma a lb和 L b IW 灰 色预 测 中的应 用 t aV E 在
成 琴 .王启 志
(华侨 大 学 机 电及 自动 化 学 院 福 建 泉 州 3 2 2 6 0 1)
【 摘
要 】 本 文建 立 灰 色模 型 对 能 够 表 征 大 型 旋 转 机 组 的 运 行 状 况 的 振 动 烈 度 值 进 行 预 测 , : 并研 制 了 能够 适 应 不 同用
户和 不 同 环 境 的虚 拟 仪 器平 台下 的 预 测 系统 。该 系统 结 合 了 MA L B编 程 实现 , 工 业 现 场得 到 实际应 用。结果 表 明 : 用 TA 在 采 该 技 术 可 以 减 少 维修 次数 和 雏 护 费 用 。

灰色预测及MATLAB实现

灰色预测及MATLAB实现

3.1灰色预测基础知识
什么是灰色预测?
灰色预测是就灰色系统所做的预测。所谓灰色系统是介于白 色系统和黑箱系统之间的过渡系统,其具体的含义是:如果某一 系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部 分信息已知,部分信息未知,那么这一系统就是灰色系统。一般 地说,社会系统、经济系统、生态系统都是灰色系统。例如物价 系统,导致物价上涨的因素很多,但已知的却不多,因此对物价 这一灰色系统的预测可以用灰色预测方法。 灰色系统理论认为对既含有已知信息又含有未知或非确定信 息的系统进行预测,就是对在一定方位内变化的、与时间有关的 灰色过程的预测。尽管过程中所显示的现象是随机的、杂乱无章 的,但毕竟是有序的、有界的,因此这一数据集合具备潜在的规 律,灰色预测就是利用这种规律建立灰色模型对灰色系统进行预 测。
ˆ (4)用最小二乘法求解灰参数 a ( a, ) ( B B )
T T
1
B Yn 。
T
ˆ (5)将灰参数 a 代入
ˆ x dy
(1)
dx
(1)
ax
(1)
,求解得
(1)
dt
(t 1) ( x
(0)

a
)e
at


a
dx ˆ ˆ (1) 由于 a 是通过最小二乘法求出的近似值,因此 x (t 1) 事近似表达
(1)
ˆ 序列,得到近似数据序列 x ˆ x
(0)
(0)
ˆ (t 1) x
(1)
ˆ (t 1) x
(t )
(7)建立灰色预测模型进行检验,步骤如下:
① 计算 x
(0)
与x
(0)
(t ) 之间的残差和相对误差 (t ) x

灰色预测

灰色预测

回归分析是应用最广泛的一种办法。

但回归分析要求大样本,只有通过大量的数据才能得到量化的规律,这对很多无法得到或一时缺乏数据的实际问题的解决带来困难。

回归分析还要求样本有较好的分布规律,而很多实际情形并非如此。

例如,我国建国以来经济方面有几次大起大落,难以满足样本有较规律的分布要求。

因此,有了大量的数据也不一定能得到统计规律,甚至即使得到了统计规律,也并非任何情况都可以分析。

另外,回归分析不能分析因素间动态的关联程度,即使是静态,其精度也不高,且常常出现反常现象灰色系统理论提出了一种新的分析方法—关联度分析方法,即根据因素之间发展态势的相似或相异程度来衡量因素间关联的程度,它揭示了事物动态关联的特征与程度。

由于以发展态势为立足点,因此对样本量的多少没有过分的要求,也不需要典型的分布规律,计算量少到甚至可用手算,且不致出现关联度的量化结果与定性分析不一致的情况。

这种方法已应用到农业经济、水利、宏观经济等各方面,都取得了较好的效果。

灰色系统理论建模的主要任务是根据具体灰色系统的行为特征数据,充分开发并利用不多的数据中的显信息和隐信息,寻找因素间或因素本身的数学关系。

通常的办法是采用离散模型,建立一个按时间作逐段分析的模型。

但是,离散模型只能对客观系统的发展做短期分析,适应不了从现在起做较长远的分析、规划、决策的要求。

尽管连续系统的离散近似模型对许多工程应用来讲是有用的,但在某些研究领域中,人们却常常希望使用微分方程模型。

事实上,微分方程的系统描述了我们所希望辨识的系统内部的物理或化学过程的本质。

灰色系统理论首先基于对客观系统的新的认识。

尽管某些系统的信息不够充分,但作为系统必然是有特定功能和有序的,只是其内在规律并未充分外露。

有些随机量、无规则的干扰成分以及杂乱无章的数据列,从灰色系统的观点看,并不认为是不可捉摸的。

相反地,灰色系统理论将随机量看作是在一定范围内变化的灰色量,按适当的办法将原始数据进行处理,将灰色数变换为生成数,从生成数进而得到规律性较强的生成函数。

灰色预测matlab代码

灰色预测matlab代码

%灰色预测function gm(x0,m) %定义函数gm(x0,m) ,x0为原始数据,m为预测个数n=length(x0);x1=zeros(1,n);x1(1)=x0(1);for i=2:n %计算累加序列x1x1(i)=x1(i-1)+x0(i);endi=2:n; %对原始数列平行移位并赋给yy(i-1)=x0(i);y=y'; %将y变成列向量for i=1:n-1; %计算数据矩阵B 的第一列数据c(i)=-0.5*(x1(i)+x1(i+1));endB=[c' ones(n-1,1)];%构造矩阵Bau=inv(B'*B)*B'*y;%计算参数a,u 矩阵for i=1:n+1+m; %计算预测累加数列的值ago(i)=(x0(1)-au(2)/au(1))*exp(-au(1)*(i-1))+au(2)/au(1);endyc(1)=ago(1);for i=1:n-1; %还原数列的值yc(i+1)=ago(i+1)-ago(i);endfor i=2:n;error(i)=yc(i)-x0(i); %计算残差值endyc(1)=ago(1);for i=1:n-1+m; %修正的还原数列的值yc(i+1)=ago(i+1)-ago(i);endc=std(error)/std(x0); %计算后验差比p=0;for i=2:nif(abs(error(i)-mean(error))<0.6745*std(x0))p=p+1;endendp=p/(n-1);w1=min(abs(error));w2=max(abs(error));for i=1:n; %计算关联度w(i)=(w1+0.5*w2)./(abs(error(i))+0.5*w2);endw=sum(w)/(n-1);%axis([1979+m,1988+m,30,160]); %x,y,(z)坐标范围plot([1979:n+1978],x0,'+',[1979:n+1978+m],yc,'*'); %grid on;xlabel('时序');ylabel('沉降量(mm)');title('地面沉降灰色模型预测拟和曲线');legend('实测值','预测值',4);fprintf('a,u值:')fprintf('%g ',au) %输出参数a,u 的值fprintf('\n累加数列:\n')fprintf('%g ',ago) %输出累加数列ago 的值fprintf('\n原始序列:\n')fprintf('%g ',x0) %输出原始序列值fprintf('\n预测:\n')fprintf('%g ',yc) %输出预测的值fprintf('\n残差:\n')fprintf('%g ',error) %输出残差的值fprintf('\n后验差比:\n')fprintf('%g',c) %输出后验差比的值fprintf('\n小误差概率:\n')fprintf('%g',p) %输出小误差概率的值fprintf('\n关联度:\n')fprintf('%g\n',w) %输出关联度w。

grey-dematel模型计算的matlab代码

grey-dematel模型计算的matlab代码

在Matlab中,我们可以使用以下的代码实现Grey-DEMATEL模型。

这段代码的主要目的是求解输入矩阵中的直接影响矩阵。

注意:这只是一个基础的示例,具体的代码可能需要根据实际的需求和问题进行修改。

```Matlab
function impactMatrix = grey_dematel(inputMatrix)
% 初始化参数
n = size(inputMatrix, 1);
impactMatrix = zeros(n);
% 计算直接影响矩阵
for i = 1:n
for j = 1:n
if inputMatrix(i, j) > 0
% 计算直接影响矩阵
impactMatrix(i, j) = inputMatrix(i, j) / sum(inputMatrix(i, :));
end
end
end
end
```
这个函数接受一个输入矩阵,然后计算并返回直接影响矩阵。

这个矩阵表示了每个因素对其他因素的影响程度。

注意:这个函数假设输入矩阵中的所有值都是非负的,因为在实际的Grey-DEMATEL模型中,我们只考虑非负的影响。

如果输入矩阵中有负值,那么这个函数可能无法正确地计算直接影响矩阵。

Matlab灰色预测工具箱

Matlab灰色预测工具箱

Matlab灰色预测工具箱——走过数模2009-07-02 23:05灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分1),新陈代谢GM(1,1),Verhust自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。

Gm(1,1)function [px0,ab,rel]=gm11(x0,number)%[px0,ab,rel]=gm11(x0,number)%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)%默认的number参数为原数组大小if nargin==1number=max(size(x0));endn=max(size(x0));x1=zeros(size(x0));for k=1:nfor i=1:kx1(k)=x1(k)+x0(i);endendz=zeros(size(x0));for k=2:nz(k)=0.5*(x1(k)+x1(k-1));endy=x0';y(1)=[];b(:,1)=-z';b(:,2)=1;b(1,:)=[];ab=inv(b'*b)*b'*y;a=ab(1);b=ab(2);px0(1)=x0(1);%求还原值系列for k=1:number-1px0(k+1)=(1-exp(a)) * ( x0(1)-b/a ) * exp(-a*k);endtemp=px0(1:n);x0;temp=(temp-x0)./x0; %相对误差temp(1)=[]; %删除第一个为零的误差temp=abs(temp);rel=sum(temp)/(n-1)*100;残差Gm(1,1)function [px0,ab,rel]=ccgm11(x0,number)%[px0,ab,rel]=gm11(x0,number)%px0为残差预测数列,ab为求得的系数,rel为平均相对误差(为百分比) %默认的number参数为原数组大小if nargin==1number=max(size(x0));endn=max(size(x0)); %数组大小..[px0,ab,rel]=gm11(x0,number);wucha=x0-px0(1:n);i=n;%求后面的同号的数目.while(wucha(i)*wucha(i-1)>0 & i>=2)i=i-1;endstart=i;length=n-i+1;new=wucha(start:n);if length>=4pwucha=gm11(new);px0(start:n)=px0(start:n)+pwuchaclear wucha;wucha=px0-x0;wucha=wucha./x0; %相对误差wucha=abs(wucha);rel=sum(wucha)/(n-1)*100;endverhustfunction [px0,ab,rel]=verhust(x1,number)%[px0,ab,rel]=verhust(x0,number)%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比) %默认的number参数为原数组大小if nargin==1number=max(size(x1));endn=max(size(x1));x0(1)=x1(1);for k=2:nx0(k)=x1(k)-x1(k-1);z(k)=0.5*(x1(k)+x1(k-1));endx0;z;B=[-(z(2:n))' (z(2:n).^2)'];B;Y=(x0(2:n))';Y;ab=inv(B'*B)*B'*Y;a=ab(1);b=ab(2);for k=1:numberpx0(k)=(a*x1(1))/(b*x1(1)+(a-b*x1(1)).*exp(a*(k-1)));endtemp=px0(1:n);x1;temp=(temp-x1)./x1; %相对误差temp(1)=[]; %删除第一个为零的误差temp=abs(temp);rel=sum(temp)/(n-1)*100;新陈代谢Gm(1,1)function [px0,ab,rel]=xcdxgm11(x0,number,step)%[px0,ab,rel]=xcdxgm11(x0,number,step)%x0为原系列,number为要预测的数目,step为基本步长%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比) %默认的number参数为原数组大小%模型假设预测的数据和原始数据都要大于等于5if nargin==1number=max(size(x0));step=max(size(x0));endif nargin==2step=max(size(x0));endn=max(size(x0));if n<step | n<5error('此模型要求至少有五个原始数据,并且原始数据个数要大于新陈代谢的步长.'); end[px0,ab,rel]=gm11(x0,n);last=n;x0;px0;while last<numberbegin=last-step+1;temp=px0(begin:last);temp=gm11(temp,step+1);last=last+1;px0(last)=temp(step+1);end。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档