數學建模:灰色預測模型GM(1,1)matlab實現

灰色預測的主要特點是模型使用的不是原始數據序列,而是生成的數據序列。其核
心體系是灰色模型(GreyModel,GM),即對原始數據作累加生成(或其他方法生成)得到
近似的指數規律再進行建模的方法。優點是不需要很多的數據,一般只需要4個數據,就
能解決歷史數據少、序列的完整性及可靠性低的問題;能利用微分方程來充分挖掘系統的
本質,精度高;能將無規律的原始數據進行生成得到規律性較強的生成序列,運算簡便,易
於檢驗,不考慮分佈規律,不考慮變化趨勢。缺點是隻適用於中短期的預測,只適合指數
增長的預測。

GM(1,1)預測模型

GM(1,1)模型預測步驟

1)數據的檢驗與處理

x(0)=(x(0)(1),x(0)(2),...,x(0)(n))首先,爲了保證建模方法的可行性,需要對已知數據列作必要的檢驗處理。設參考數據爲\\x^{(0)}=(x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n)),計算序列的級比
λ(k)=x(0)(k1)x(0)(k),k=2,3,...n\lambda(k)=\frac{x^{(0)}(k-1) }{x{(0)}(k)},k=2,3,...n。
λ(k)Θ=(e2n+1,e2n+2),GM(1,1)x(0)使c如果所有的級比\lambda(k)都落在可容覆蓋\Theta=(e^{\frac{-2}{n+1}},e^{\frac{2}{n+2}})內,可以作爲模型GM(1,1)的數據進行\\灰色預測。否則,需要對序列x^{(0)}做必要的變換處理,使其落入可容覆蓋內。即取適當的常數\\c,作平移變換
y(0)(k)=y(0)(k)+c,k=1,2,...,n,使y(0)=(y(0)(1),y(0)(2),...,y(0)(n))y^{(0)}(k)=y^{(0)}(k)+c,k=1,2,...,n,\\使序列y^{(0)}=(y^{(0)}(1),y^{(0)}(2),...,y^{(0)}(n))的級比
λy(k)=y(0)(k1)y(0)(k)Θ,k=2,3,...n\lambda_y(k)=\frac{y^{(0)}(k-1) }{y{(0)}(k)}\in\Theta,k=2,3,...n
2)建立模型
預測值
在這裏插入圖片描述
3)檢驗預測值
          (1)ϵ(k),ϵ(k)=x(0)(k)x^(0)(k)x(0)(k),k=1,2,...,n\;\;\;\;\;(1)殘差檢驗。令殘差爲\epsilon(k),計算\\\epsilon(k)=\frac{x^{(0)}(k)-\hat{x}^{(0)}(k) }{x^{(0)}(k)},k=1,2,...,n
x^(0)(1)=x(0)(1),ϵ(k)<0.2,;ϵ(k)<0.1這裏\hat{x}^{(0)}(1)=x^{(0)}(1),如果\epsilon(k)<0.2,則認爲達到一般要求;如果\epsilon(k)<0.1,\\則認爲達到較高的要求。
:x(0)(k1)x(0)(k)λ(k)aρ(k)=110.5a1+0.5aλ(k)ρ(k)<0.2ρ(k)<0.1級比偏差值檢驗。首先由參考數據:x^{(0)}(k-1),x^{(0)}(k)計算出級比\lambda(k),再用發展係數a\\求出 相應的級比偏差\\\rho(k)=1-\frac{1-0.5a}{1+0.5a}\lambda(k)\\如果\rho(k)<0.2,則可認爲達到一般要求;如果\rho(k)<0.1,則認爲達到較高要求
4)預測預報
由CM(1,1)模型得到指定時區內的預測值,根據實際問題的需要,給出相應的預測
預報。

城市交通噪聲數據
在這裏插入圖片描述
附上matlab代碼

clc, clear
x0=[71.1 72.4 72.4 72.1 71.4 72.0 71.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)];
Y = x0(2:n);
u=B\Y%擬合參數u(1) =a,u(2) =b
syms x(t)
x= dsolve(diff(x) +u(1) *x==u(2),x(0)==x0(1)); %求微分方程的符號解
xt=vpa(x,6)%以小數格式顯示微分方程的解
yucel =subs(x,t,[0:n-1]); %求已知數據的預測值
yucel = double(yucel);%符號數轉換成數值類型,否則無法做差分運算.
yuce=[ x0(1),diff(yucel)]%差分運算,還原數據
epsilon=x0'-yuce%計算殘差
delta = abs( epsilon./x0')%計算相對誤差
rho=1-(1 -0.5*u(1))/(1 +0.5*u(1)) * lamda'%計算級比偏差值,u(1) =a
n=7;
t1=1:n;
t2=1:n;
plot(t1,x0,'bo--');
hold on;
plot(t2,yuce,'r*-'); 

lamda =
    0.9820
    1.0000
    1.0042
    1.0098
    0.9917
    1.0056
range =
    0.9820    1.0098
x1 =
   71.1000
  143.5000
  215.9000
  288.0000
  359.4000
  431.4000
  503.0000
u =
    0.0023
   72.6573
xt =
31000.0 - 30928.9*exp(-0.00234379*t)
yuce =
   71.1000   72.4057   72.2362   72.0671   71.8984   71.7301   71.5622
epsilon =
         0   -0.0057    0.1638    0.0329   -0.4984    0.2699    0.0378
delta =
         0    0.0001    0.0023    0.0005    0.0070    0.0037    0.0005
rho =
    0.0203    0.0023   -0.0018   -0.0074    0.0107   -0.0032
>> 

在這裏插入圖片描述
轉載請標明出處,謝謝!。

如果感覺本文對您有幫助,請留下您的贊,您的支持是我堅持寫作最大的動力,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章