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

上传人:laozhun 文档编号:2388573 上传时间:2023-02-17 格式:DOC 页数:7 大小:72.50KB
返回 下载 相关 举报
灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc_第1页
第1页 / 共7页
灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc_第2页
第2页 / 共7页
灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc_第3页
第3页 / 共7页
灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc_第4页
第4页 / 共7页
灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc》由会员分享,可在线阅读,更多相关《灰色预测[GM(11)]MATLAB程序+改进+GM(1,m)多变量的+自己整理并运行过的.doc(7页珍藏版)》请在三一办公上搜索。

1、灰色预测GM(1,1) MATLAB程序% 本程序主要用来计算根据灰色理论建立的模型的预测值。% 应用的数学模型是 GM(1,1)。% 原始数据的处理方法是一次累加法。X0=input(请输入数据 );%输入数据请用如例所示形式:48.7 57.17 68.76 92.15n=length(X0);X1=ones(n,1);X1(1)=X0(1);for i=2:nX1(i)=X1(i-1)+X0(i);endB=ones(n-1,2);for i=1:(n-1) B(i,1)=-(X1(i)+X1(i+1)/2; B(i,2)=1;endBT=B;for j=1:n-1 Yn(j)=X0(j

2、+1);endYn=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);endx=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);enddet=det/(

3、n-1);disp(百分绝对误差为:,num2str(det),%);disp(预测值为: ,num2str(X0s(n+1:n+t_test);改进程序1(优化C值,c为微分方程的解的常数)见论文“刘发全,职承杰.灰色预测GM(1,1)模型的一点改进”% 本程序主要用来计算根据灰色理论建立的模型的预测值。% 应用的数学模型是 GM(1,1)。% 原始数据的处理方法是一次累加法。clearjm=xlsread(测试温度); X0=jm;%input(请输入数据 );%输入数据请用如例所示形式:48.7 57.17 68.76 92.15n=length(X0);X1=ones(n,1);X1(

4、1)=X0(1);for i=2:nX1(i)=X1(i-1)+X0(i);endB=ones(n-1,2);for i=1:(n-1) B(i,1)=-(X1(i)+X1(i+1)/2; B(i,2)=1;endBT=B;for j=1:n-1 Yn(j)=X0(j+1);endYn=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;endt=u/a;h3=(X0(1)-t)*(1-exp(a)(-1)/(X0(1)2);h4

5、=(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);enddet=det/(n-1);disp(百分绝对误差为:,num2str(det),%);disp(预测值为: ,num2str(X0s(n+1:n+t_tes

6、t);改进程序2对中的进行调节,不在是取均值(=2)。直到误差达到最小clearjm=xlsread(测试温度);X0=jm;%input(请输入数据 );%输入数据请用如例所示形式:48.7 57.17 68.76 92.15for p=0:0.01:1; n=length(X0);X1=ones(n,1);X1(1)=X0(1);for i=2:nX1(i)=X1(i-1)+X0(i);endB=ones(n-1,2);for i=1:(n-1) B(i,1)=-(p*X1(i)+(1-p)*X1(i+1); B(i,2)=1;endBT=B;for j=1:n-1 Yn(j)=X0(j+

7、1);endYn=Yn;A=(inv(BT*B)*BT)*Yn;a=A(1);u=A(2);t=u/a;for i=1:n-1h1=0;h1=h1+X0(i+1)*exp(-a*i);h2=0;h2=h2+exp(-2*a*i);endh3=(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

8、:n;xs=2:n+t_test;X0ss=X0s(2:n+t_test);figureplot(x,X0,r,xs,X0ss,*-b);det=0;for i=2:n det=det+abs(X0s(i)-X0(i);enddet=det/(n-1);disp(百分绝对误差为:,num2str(det),%);disp(预测值为: ,num2str(X0s(n+1:n+t_test);end多变量GM(1,m)clear allclc%输入待预测时刻 k 及原始序列 X0X0=48.1 166.2; 509.3 175.9; 532.9 200.1;544.5 258.1;554.2 293

9、.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 累加生成序列 X1n,m=size(X0);t_test=input(请输入需要预测个数:);k=n+t_test;for j=1:m c=0;for i=1:nc=X0(i,j)+c;X1(i,j)=c;endend%计算数据矩阵 Lfor j=1:mfor i=1:n-1l(i,j)=(X1(i,j)+X1(i+1,j)/2;endendL=l ones(n-1,1);%计算 Y 及参数估计值for j=1:mY(1:n-

10、1,j)=X0(2:n,j);a(:,j)=inv(L*L)*L*Y(1:n-1,j) ;enda=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_testX0s(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);endX0ss=X0s(1:m,n+1:n+t_test)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号