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

上传人:小** 文档编号:61634552 上传时间:2018-12-07 格式:PDF 页数:6 大小:113.15KB
返回 下载 相关 举报
灰色预测的matlab实现,代码大全_第1页
第1页 / 共6页
灰色预测的matlab实现,代码大全_第2页
第2页 / 共6页
灰色预测的matlab实现,代码大全_第3页
第3页 / 共6页
灰色预测的matlab实现,代码大全_第4页
第4页 / 共6页
灰色预测的matlab实现,代码大全_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《灰色预测的matlab实现,代码大全》由会员分享,可在线阅读,更多相关《灰色预测的matlab实现,代码大全(6页珍藏版)》请在金锄头文库上搜索。

1、1 程序代码:程序代码: %普通的灰色预测GM1.m clear X=input(请输入原始数据:,s);%原始数据(可以多行,每一行为一类原始数据,即可多类原 始数据) X=str2num(X); m1 m2=size(X);%m1 和 m2 分别表示 X 的行数和列数 k0=input(请输入所要预测的阶数:); %GM(1,1)模型 for i=1:m1 n=i; x0=X(i,:);%将原始数据X中的第i行数据赋给x0,即取出一类原始数据 disp(1.原始数据:); Y=; for z=1:m2 Y=strcat(Y,(,num2str(x0(z),); end disp(Y); %

2、 1. 利用一次累加(1-AGO)生成新数列 E=triu(ones(m2);%E 表示元素为 1 右上三角阵 x1=x0*E;%对原始数据进行一次累加(1-AGO)生成新数列 x1 disp(2.一次累加(1-AGO)生成的数据:); Y=; for z=1:m2 Y=strcat(Y,(,num2str(x1(z),); end disp(Y); % 2. 计算出发展系数 a,灰作用量 u b1=x1;b1(1)=; b2=x1;b2(m2)=; b=-0.5*(b1+b2);%生成 B 的第一行 B=b;ones(1,m2-1);%生成 B B=B; %对 B 进行转置 y0=x0;y0

3、(1)=;%生成 Y y0=y0; %对 Y 进行转置 A=(inv(B*B)*B)*y0; %根据 Y=BA(A 为待辨识参数向量),可知 A=inv(BB)BY a=A(1);u=A(2);%A=a u % 3. 确立模型且求出模拟值 u_a=u/a; for k=0:m2+k0-1 2 x2(k+1)=(x0(1)-u_a)*exp(-k*a)+u_a; end %求出新数列的模拟值 x2 x3=x2; x3(m2+k0)=; x4=0 x3; x5=x2-x4;%利用累减生成法求出原始数据的模拟值 x5 disp(3.一次累加(1-AGO)生成的数据的模拟值:) Y=; for z=1

4、:m2+k0 Y=strcat(Y,(,num2str(x2(z),); end disp(Y); disp(4.原始数据的模拟值:) Y=; for z=1:m2+k0 Y=strcat(Y,(,num2str(x5(z),); end disp(Y); % 4. 模型检验(算出的值到等级参照表中检查其精度等级) %计算后验差比 C 和残差序列 Q x6=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=one

5、s(m2,1) w1; w2=Q; bb,bint,r1,rint,stats=regress(w2,w1); rcoplot(r1,rint) C1=strcat(5.后验差比(均方差比值): C=,num2str(C);disp(C1); ifC0.65,则此模型精度等级为 4 级(不合格) 。); end end end 3 %计算相对误差序列 R R=Q./x0; disp(6.相对误差序列:) Y=; for z=1:m2 Y=strcat(Y,(,num2str(R(z),); end disp(Y); disp((1)如果相对误差为 0.01 则模型精度等级为 1 级(好));

6、disp((2)如果相对误差为 0.05 则模型精度等级为 2 级(合格)); disp((3)如果相对误差为 0.10 则模型精度等级为 3 级(勉强)); disp((4)如果相对误差为 0.20 则模型精度等级为 4 级(不合格)); %计算小误差概率 P Qmean=mean(Q);%Qmean 为残差序列 Q 的平均值 D=abs(Q-Qmean);%D 为残差序列 Q 与其平均值 Qmean 的差的绝对值 p0=0.6745*s2; t=0; for j=1:m2 ifD(j)=0.95 disp(由于 P=0.95,则此模型精度等级为 1 级(好) 。); else ifP=0.

7、8 disp(由于 0.80=0.7 disp(由于 0.70=P0.8,则此模型精度等级为 3 级(勉强) 。); else disp(由于 P0.70,则此模型精度等级为 4 级(不合格) 。); end end end % 5.模型适用范围 a1=strcat(8.发展系数: a=,num2str(a);disp(a1); u1=strcat(灰作用量: u=,num2str(u);disp(u1); if-a0.3 disp(由于-a0.3,则此模型适合用于中长期预测。); else if-a0.5 4 disp(由于 0.3-a0.5,则此模型适合用于短期预测,中长期预测慎用。);

8、else if -a0.8 disp(由于 0.5-a0.8,则此模型作短期预测应十分谨慎。); else if -a1 disp(由于 0.8-a1.0,则应采用残差修正 GM(1,1)模型。); end end end end end 普通灰色模型代码: for i=1:inf if i=1 e(i)=input(输入数据:); else if e(i-1)=0 break; else e(i)=input(输入数据:); end end end k=size(e); for i=1:(k(2)-1) x(i)=e(i); end disp(原始序列为:) x n=size(x); m=n

9、(2); for i=1:m x0=x(1:i); E=triu(ones(i); x1=x0*E; end disp(累加后生成的序列为) x1 for j=2:m z(j)=-0.5*(x1(j)+x1(j-1); end 5 for i=1:m-1 c(i)=z(i+1); end d=ones(1,m-1); w=c;d; B=w for i=2:m f(i)=x(i); end for j=1:m-1 y(j)=f(j+1); end Y=y A=(inv(B*B)*B)*Y; a=A(1) u=A(2) u_a=u/a disp(确定的模型为:x1(k+1)=(x(1)-u_a)*

10、exp(-k*a)+u_a) 改进灰色模型代码: for i=1:inf if i=1 e(i)=input(输入数据:); else if e(i-1)=0 break; else e(i)=input(输入数据:); end end end k=size(e); for i=1:(k(2)-1) x(i)=e(i); end disp(原始序列为:) x n=size(x); m=n(2); for i=1:m x0=x(1:i); E=triu(ones(i); x1=x0*E; end 6 disp(累加后生成的序列为) x1 for j=2:m z(j)=-(x1(j)-x1(j-1

11、)/(log(x1(j)-log(x1(j-1); end for i=1:m-1 c(i)=z(i+1); end d=ones(1,m-1); w=c;d; B=w for i=2:m f(i)=x(i); end for j=1:m-1 y(j)=f(j+1); end Y=y A=(inv(B*B)*B)*Y; a=A(1) u=A(2) for i=0:m-1 g(i+1)=exp(-i*a); end d1=ones(1,m); g1=g;d1; G=g1 R=(inv(G*G)*G)*x1 C=R(1) D=R(2) disp(确定的模型为:x1(k+1)=C*exp(-a*k)+D)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号