您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > Matlab灰色预测工具箱
Matlab灰色预测工具箱——走过数模2009-07-0223:05灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分别是GM(1,1),残差GM(1,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参数为原数组大小ifnargin==1number=max(size(x0));endn=max(size(x0));x1=zeros(size(x0));fork=1:nfori=1:kx1(k)=x1(k)+x0(i);endendz=zeros(size(x0));fork=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);%求还原值系列fork=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参数为原数组大小ifnargin==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);iflength=4pwucha=gm11(new);px0(start:n)=px0(start:n)+pwuchaclearwucha;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参数为原数组大小ifnargin==1number=max(size(x1));endn=max(size(x1));x0(1)=x1(1);fork=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);fork=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参数为原数组大小%模型假设预测的数据和原始数据都要大于等于5ifnargin==1number=max(size(x0));step=max(size(x0));endifnargin==2step=max(size(x0));endn=max(size(x0));ifnstep|n5error('此模型要求至少有五个原始数据,并且原始数据个数要大于新陈代谢的步长.');end[px0,ab,rel]=gm11(x0,n);last=n;x0;px0;whilelastnumberbegin=last-step+1;temp=px0(begin:last);temp=gm11(temp,step+1);last=last+1;px0(last)=temp(step+1);end
本文标题:Matlab灰色预测工具箱
链接地址:https://www.777doc.com/doc-4510092 .html