文档库 最新最全的文档下载
当前位置:文档库 › 灰色预测[GM(1_1)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的

灰色预测[GM(1_1)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的

灰色预测[GM(1_1)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的
灰色预测[GM(1_1)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的

灰色预测[GM(1,1) ]MATLAB程序

% 本程序主要用来计算根据灰色理论建立的模型的预测值。

% 应用的数学模型是GM(1,1)。

% 原始数据的处理方法是一次累加法。

X0=input('请输入数据');%输入数据请用如例所示形式:[48.7 57.17 68.76 92.15]

n=length(X0);

X1=ones(n,1);

X1(1)=X0(1);

for i=2:n

X1(i)=X1(i-1)+X0(i);

end

B=ones(n-1,2);

for i=1:(n-1)

B(i,1)=-(X1(i)+X1(i+1))/2;

B(i,2)=1;

end

BT=B';

for j=1:n-1

Yn(j)=X0(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;

X1s(i+1)=(X0(1)-t).*exp(-a.*i)+t;

X1s(1)=X0(1);

for j=n+t_test:-1:2

X0s(j)=X1s(j)-X1s(j-1);

end

x=1:n;

xs=2:n+t_test;

X0ss=X0s(2:n+t_test);

plot(x,X0,'^r',xs,X0ss,'*-b');

det=0;

for i=2:n

det=det+abs(X0s(i)-X0(i));

end

det=det/(n-1);

disp(['百分绝对误差为:',num2str(det),'%']);

disp(['预测值为:',num2str(X0s(n+1:n+t_test))]);

改进程序1

(优化C值,c为微分方程的解的常数)见论文“刘发全,职承杰.灰色预测GM(1,1)模型的一点改

进”

% 本程序主要用来计算根据灰色理论建立的模型的预测值。

% 应用的数学模型是 GM(1,1)。

% 原始数据的处理方法是一次累加法。

clear

jm=xlsread('测试温度');

X0=jm;%input('请输入数据 ');%输入数据请用如例所示形式:[48.7 57.17 68.76 92.15] n=length(X0);

X1=ones(n,1);

X1(1)=X0(1);

for i=2:n

X1(i)=X1(i-1)+X0(i);

end

B=ones(n-1,2);

for i=1:(n-1)

B(i,1)=-(X1(i)+X1(i+1))/2;

B(i,2)=1;

end

BT=B';

for j=1:n-1

Yn(j)=X0(j+1);

end

Yn=Yn';

A=inv(BT*B)*BT*Yn;

a=A(1);

u=A(2);

for i=1:n-1

h1=0;

h1=h1+exp(-a.*i)/X0(i+1);

h2=0;

h2=h2+(exp(-a.*i)/X0(i+1))^2;

end

t=u/a;

h3=(X0(1)-t)*(1-exp(a)^(-1))/(X0(1)^2);

h4=((1-exp(a))^(-1))/(X0(1))^2;

%c=(h1+h3)/(h2+h4);

c=h1/h2;

t_test=10;%input('请输入需要预测个数:');

i=1:t_test+n;

X0s(i)=c*exp(-a*i);

x=1:n;

xs=2:n+t_test;

X0ss=X0s(2:n+t_test);

plot(x,X0,'^r',xs,X0ss,'*-b');

det=0;

for i=2:n

det=det+abs(X0s(i)-X0(i));

end

det=det/(n-1);

disp(['百分绝对误差为:',num2str(det),'%']);

disp(['预测值为: ',num2str(X0s(n+1:n+t_test))]);

改进程序2

中的μ进行调节,不在是取均值(μ=2)。直到误差达到最小

clear

jm=xlsread('测试温度');

X0=jm;%input('请输入数据');%输入数据请用如例所示形式:[48.7 57.17 68.76 92.15] for p=0:0.01:1;

n=length(X0);

X1=ones(n,1);

X1(1)=X0(1);

for i=2:n

X1(i)=X1(i-1)+X0(i);

end

B=ones(n-1,2);

for i=1:(n-1)

B(i,1)=-(p*X1(i)+(1-p)*X1(i+1));

B(i,2)=1;

end

BT=B';

for j=1:n-1

Yn(j)=X0(j+1);

end

Yn=Yn';

A=(inv(BT*B)*BT)*Yn;

a=A(1);

u=A(2);

t=u/a;

for i=1:n-1

h1=0;

h1=h1+X0(i+1)*exp(-a*i);

h2=0;

h2=h2+exp(-2*a*i);

end

h3=(X0(1)-t)*(1-exp(a)^(-1));

h4=(1-exp(a))^(-2);

%c=((X0(1)-t)*(1-exp(a))+h1*((1-exp(a))^2))/(1+h2*((1-exp(a))^2)); c=(h1+h3)/(h2+h4);

t_test=10;%input('请输入需要预测个数:');

i=1:t_test+n;

X0s(i)=c*exp(-a*i);

x=1:n;

xs=2:n+t_test;

X0ss=X0s(2:n+t_test);

figure

plot(x,X0,'^r',xs,X0ss,'*-b');

det=0;

for i=2:n

det=det+abs(X0s(i)-X0(i));

end

det=det/(n-1);

disp(['百分绝对误差为:',num2str(det),'%']);

disp(['预测值为:',num2str(X0s(n+1:n+t_test))]);

end

多变量GM(1,m)

clear all

clc

%输入待预测时刻k 及原始序列X0

X0=[48.1 166.2; 509.3 175.9; 532.9 200.1;544.5 258.1;554.2 293.5;576.7 334.8;617.3 376.4;618.2 405.9;623.5 421.3;614.7 390.1;621.0 389.7];

%对原始序列X0 累加生成序列X1

[n,m]=size(X0);

t_test=input('请输入需要预测个数:');

k=n+t_test;

for j=1:m c=0;

for i=1:n

c=X0(i,j)+c;

X1(i,j)=c;

end

end

%计算数据矩阵L

for j=1:m

for i=1:n-1

l(i,j)=(X1(i,j)+X1(i+1,j))/2;

end

end

L=[l ones(n-1,1)];

%计算Y 及参数估计值

for j=1:m

Y(1:n-1,j)=X0(2:n,j);

a(:,j)=inv(L'*L)*L'*Y(1:n-1,j) ;

end

a=a';

A=a(1:end,1:end- 1);

B=a(1:end,end);

%计算模型的拟合值或预测值

S=X1(1,1:end);

X0s(1:m,1)=S';

for k=2:n+t_test

X0s(1:m,k)=expm(A*(k-1))*S'+inv(A)*(expm(A*(k-1))-eye(size(expm(A*(k-1)))))*B-(expm (A*(k-2))*S'+inv(A)*(expm(A*(k-2))-eye(size(expm(A*(k-2)))))*B);

end

X0ss=X0s(1:m,n+1:n+t_test)

简单易懂的灰色关联度计算

灰色关联有什么用 灰色关联度,指的是两个系统或两个因素之间关联性大小的量度。目的,是在于寻求系统中各因素之间的主要关系,找出影响目标值的重要因素,从而掌握事物的主要特征,促进和引导系统迅速有效地发展。——这是比较“官方”的解释。我再来一个“野路子”的解释:用两种试验方法,得出两组数据A和B;用理论方法,得到理论解答C。那么,现在来比较试验方法A好还是B好?自然是看其结果,哪一个与C最吻合,哪个就最好呗,灰关联就是用来解决“谁和谁的关联程度更高”这样的问题的。 灰色关联的重要步骤 步骤不多,核心的,首先是数据的归一化处理,这是因为有时一个试验结果矩阵中的每个元素会有不同的量纲;接下来是计算灰色关联矩阵,这个过程涉及到的公式很吓人,我第一眼看的时候竟然没搞明白是什么意思,囧;最后是计算关联度,这也就是得到了最终结果。 下面来看看那个复杂的公式:(Pi为关联度矩阵中的元素) 计算方法 关于关联矩阵中各个元素的计算,我起初被严重误导,认为用Excel是无法完成的,结果还绕了一段弯路,很是丢人~当然,有高手通过Matlab计算的经验,而且还给出了实例,有兴趣的可以参考“仿真百科”里的内容。但我最终还是根据1992年出版的一本老书《灰色理论与方法——提要·题解·程序·应用》中的一个简单实例,用最简单的方法搞定了计算问题。鉴于我不知道如何把Excel 公式按照步骤,类似APDL那样摆出来,那就把那个例子与大家分享,说说计算原理步骤吧。 首先看下面四数列 A=[2,3,4,3.7] B=[60,73,84,58] C=[1204,801,1228,1270]

D=[303,298,247,251] 以A为目标,检验B、C、D与A的关联度。 步骤1.归一化,将数列中的每个元素,除以相同的一个数值,比如A的归一化过程为[2/2, 3/2 ,4/2, 3.7/2]或者更常用的均值化处理,都可以搞定。只需要这几个数列用同一种方法归一即可了。 步骤2.求差序列.经过归一化的A、B、C、D,用A分别减去B/C/D;即 E=A-B; F=A-C; G=A-D 步骤3.求两级最大和最小差值。这是一个容易让人糊涂的地方,但实际操作很简单: 设E中最大值为Emax,最小值为Emin,其余类推;这样一共就有六个数,分别是Emax;Emin;Fmax;Fmin;Gmax和Gmin。从这六个数中,再选出一个最大值和一个最小值,假设为M和N——而这就是上述公式当中双重最值的部分啦。 步骤4.带入公式,得到三组关联系数(单行)矩阵。 步骤5.计算关联度,实际上就是步骤4中,每组矩阵各个元素求和除以元素个数(求均值)。 步骤6.通过比较关联度数值,最大的那个,其对应的数列与目标数列的关联度最高。 Over.

Matlab学习系列.灰色关联分析

28. 灰色关联分析 一、灰色系统理论简介 若系统的内部信息是完全已知的,称为白色系统;若系统的内部信息是一无所知(一团漆黑),只能从它同外部的联系来观测研究,这种系统便是黑色系统;灰色系统介于二者之间,灰色系统的一部分信息是已知的,一部分是未知的。 灰色系统理论以“部分信息已知、部分信息未知”的“小样本”、“贫信息”不确定型系统为研究对象,其特点是: (1)认为不确定量是灰数,用灰色数学来处理不确定量,使之量化,灰色系统理论只需要很少量的数据序列; (2)观测到的数据序列看作随时间变化的灰色量或灰色过程,通过鉴别系统因素之间发展趋势的相似或相异程度,即进行关联度分析; (3)通过累加生成和累减生成逐步使灰色量白化,从而建立相应于微分方程解的模型,从而预测事物未来的发展趋势和未来状态。 二、灰色关联度分析 1. 要定量地研究两个事物间的关联程度,可以用相关系数和相似系数等,但这需要足够多的样本数或者要求数据服从一定概率分布。 在客观世界中,有许多因素之间的关系是灰色的,分不清哪些因素之间关系密切,哪些不密切,这样就难以找到主要矛盾和主要特性。

灰因素关联分析,目的是定量地表征诸因素之间的关联程度,从而揭示灰色系统的主要特性。关联分析是灰色系统分析和预测的基础。 关联分析源于几何直观,实质上是一种曲线间几何形状的分析比较,即几何形状越接近,则发展变化趋势越接近,关联程度越大。如下图所示: x t 曲线A 与B 比较平行,则认为A 与B 的关联程度大;曲线C 与A 随时间变化的方向很不一致,则认为A 与C 的关联程度较小;曲线A 与D 相差最大,则认为两者的关联程度最小。 2. 关联度分析是分析系统中各因素关联程度的方法 步骤: (1) 计算关联系数 设参考序列为 0000{(1),(2),...,()}X x x x n = 比较序列为 {(1),(2),...,()}, 1,,i i i i X x x x n i m == 比较序列X i 对参考序列X 0在k 时刻的关联系数定义为:

灰色系统预测模型实验

实验四 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

灰色关联度分析MATLAB程序

x(1,:)=[83 0.191 12.9 7.2 89.4 0.432 6.33]; x(2,:)=[75 0.189 11.6 9.1 82.3 0.453 5.87]; x(3,:)=[64 0.165 11.9 10.3 69.3 0.512 6.31]; %列出各数值,可修改 x(4,:)=[63 0.165 12.8 9.7 68.2 0.455 6.6]; x(5,:)=[56 0.211 13.2 12.6 77.5 0.317 7.12]; m=5;n=7; x0=[83 0.211 13.2 7.2 89.4 0.317 5.87]; %参考序列 for i=1:n avg(i)=0; %均值初始化 end for i=1:m for j=1:n avg(j)=avg(j)+x(i,j); end end %求均值序列 for i=1:n avg(i)=avg(i)/m; end for j=1:m for i=1:n x(j,i)=x(j,i)/avg(i); %均值化 end end for i=1:n x0(i)=x0(i)/avg(i); %参考序列均值化end for j=1:m for i=1:n delta(j,i)=abs(x(j,i)-x0(i)); %求序列差 end end max=delta(1,1); for j=1:m for i=1:n if delta(j,i)>max max=delta(j,i);

end end end %求两极差 min=0; for j=1:m xgd(j)=0; for i=1:n glxs(j,i)=0.5*max/(0.5*max+delta(j,i)); %计算关联系数及相关度 xgd(j)=xgd(j)+glxs(j,i); end xgd(j)=xgd(j)/n; end xgd %因此,A—E区与参考序列(最佳指标)的相关度分别为0.8489 0.6983 0.5588 0.5858 0.7105

灰色预测模型介绍

数学模型与数学实验数 课程报告 题目:灰色预测模型介绍专业: 班级: 姓名: 学号: 二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

五种灰色关联度分析matlab代码

灰色邓氏关联度分析 % P12 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_deng(x) s = size(x); len = s(2); num = s(1); ro = 0.5; for i = 1: num x(i,:) = x(i,:)./x(i,1); end dx(num,len) = 0; for i = 2 : num for k = 1 : len dx(i,k) = abs(x(1,k) - x(i,k)); end end max_dx = max(max(dx)); min_dx = min(min(dx)); r(1,1:len-1) = 1; for i = 2 : num for k = 1 : len r(i,k) = (min_dx + ro*max_dx)/(dx(i,k) + ro*max_dx); end end r1 = sum(r(2:num,:),2)/(len); 改进灰色绝对关联度分析 % P11 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_gjjd(x) s = size(x); len = s(2); num = s(1); for i = 1: num x(i,:) = x(i,:)./x(i,1); end dx(num,len-1) = 0; for i = 1 : num for j = 1 : len - 1 dx(i,j) = x(i,j+1) - x(i,j); end end c = 1; beta(1,1:len-1) = 0; w(1,1:len-1) = 0; for i = 2 : num temp = sum(abs(x(i,:) - x(1,:)),2); for k = 1 : len - 1 beta(i,k) = atan((dx(i,k) - dx(1,k))/(1 + dx(i,k)*dx(1,k))); if beta(i,k) < 0 beta(i,k) = pi + beta(i,k);

灰色系统预测模型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源程序(完整版) 最 近几天一直在写算法,其实网上可以下到这些算法的源程序的,但是为了搞懂, 搞清楚,还是自己一个一个的看了,写了,作为自身的积累,而且自己的的矩 阵计算类库也迅速得到补充,以后关于算法方面,基本的矩阵运算不用再重复写了,挺好的,是种积累,下面把灰关联的matlab程序与大家分享。 灰色关联度分析法是将研究对象及影响因素的因子值视为一条线上的点,与待识别对象及影响因素的因子值所绘制的曲线进行比较,比较它们之间的贴近度,并分别量化,计算出研究对 象与待识别对象各影响因素之间的贴近程度的关联度,通过比较各关联度的大小来判断待识别对象对研究对象的影响程度。 简言之,灰色关联度分析的意义是指在系统发展过程中,如果两个因素变化的态势是一致的,即同步变化程度较高,则可以认为两者关联较大;反之,则两者关联度较小。因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态(Dynamic)的历程分析。灰色关联度可分成“局部性灰色关联度”与“整体性灰色关联度”两类。主要的差别在于局部性灰色关联度有一参考序列,而整体性灰色关联度是任一序列均可为参考序列。关联度分析是基于灰色系统的灰色过程, 进行因素间时间序列的比较来确定哪些是影响大的主导因素, 是一种动态过程的研究。 关联度计算的预处理,一般初值化或者均值化,根据我的实际需要,本程序中使用的是比较序列与参考序列组成的矩阵除以参考序列的列均值等到的,当然也可以是其他方法。 %注意:由于需要,均值化方法采用各组值除以样本的各列平均值 clear;clc; yangben=[ 47.924375 25.168125 827.4105438 330.08875 1045.164375 261.374375 16.3372 6.62 940.2824 709.2752 962.1284 84.874 55.69666667 30.80333333 885.21 275.8066667 1052.42 435.81 ]; %样本数据 fangzhen=[ 36.27 14.59 836.15 420.41 1011.83 189.54 64.73 35.63 755.45 331.32 978.5 257.87 42.44 23.07 846 348.05 1025.4 296.69 59.34 39.7 794.31 334.63 1016.4 317.27

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