資源描述:
《灰色預(yù)測MATLAB程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、.灰色預(yù)測..........作用:求累加數(shù)列、求ab的值、求預(yù)測方程、求殘差clc%清屏,以使結(jié)果獨立顯示x=[71.172.472.472.171.472.071.6];formatlong;%設(shè)置計算精度iflength(x(:,1))==1%對輸入矩陣進行判斷,如不是一維列矩陣,進行轉(zhuǎn)置變換x=x';endn=length(x);%取輸入數(shù)據(jù)的樣本量z=0;fori=1:n%計算累加值,并將值賦予矩陣bez=z+x(i,:);be(i,:)=z;endfori=2:n%對原始數(shù)列平行移位y(i-1,:)=x(i,:);en
2、dfori=1:n-1%計算數(shù)據(jù)矩陣B的第一列數(shù)據(jù)c(i,:)=-0.5*(be(i,:)+be(i+1,:));..endforj=1:n-1%計算數(shù)據(jù)矩陣B的第二列數(shù)據(jù)e(j,:)=1;endfori=1:n-1%構(gòu)造數(shù)據(jù)矩陣BB(i,1)=c(i,:);B(i,2)=e(i,:);endalpha=inv(B'*B)*B'*y;%計算參數(shù)矩陣即ab的值fori=1:n+1%計算數(shù)據(jù)估計值的累加數(shù)列,如改為n+1為n+m可預(yù)測后m-1個值ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-
3、alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);%顯示輸出預(yù)測值的累加數(shù)列endvar(1,:)=ago(1,:)%顯示輸出預(yù)測值fori=1:n%如改n為n+m-1,可預(yù)測后m-1個值var(i+1,:)=ago(i+1,:)-ago(i,:);%估計值的累加數(shù)列的還原,并計算出下一預(yù)測值endfori=1:nerror(i,:)=x(i,:)-var(i,:);%計算殘差endc=std(error)/std(x);%調(diào)用統(tǒng)計工具箱的標準差函數(shù)計算后驗差的比值cago%顯示輸出預(yù)測值的累加數(shù)列a
4、lpha%顯示輸出參數(shù)數(shù)列var%顯示輸出預(yù)測值error%顯示輸出誤差c%顯示后驗差的比值作用:數(shù)據(jù)處理判斷是否可以用灰色預(yù)測、求級比、求累加數(shù)列、求ab的值、求預(yù)測方程clc,clearx0=[71.172.472.472.171.472.071.6]';%注意這里為列向量n=length(x0);lamda=x0(1:n-1)./x0(2:n)%計算級比range=minmax(lamda')%計算級比的范圍x1=cumsum(x0)%累加運算B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];
5、Y=x0(2:n);u=BY%擬合參數(shù)u(1)=a,u(2)=bx=dsolve('Dx+a*x=b','x(0)=x0');%求微分方程的符號解..x=subs(x,{'a','b','x0'},{u(1),u(2),x0(1)})%代入估計參數(shù)值和初始值yuce1=subs(x,'t',[0:n-1]);%求已知數(shù)據(jù)的預(yù)測值y=vpa(x,6)%其中的6表示顯示6位數(shù)字yuce=[x0(1),diff(yuce1)]%差分運算,還原數(shù)據(jù).