GM11灰色模型
作者:桂。
時間:2017-08-12 ?08:34:06
鏈接:http://www.cnblogs.com/xingshansi/p/7348714.html?
前言
灰色模型(Gray model)常用來對數據進行預測,這里簡要記錄其思路。
一、名稱由來
灰色模型(Gray Model),鄧聚龍教授1982年提出。 常見系統分類:- 白色系統是指一個系統的內部特征是完全 已知的,即系統的信息是完全充分的。
- 黑色系統是指一個系統的內部信息對外界來說是一無所知的,只能通過它與外界的聯系來加以觀測研究。
- 灰色系統內的一部分信息是已知的,另一部分信息是未知的,系統內各因素間有不確定的關系。
二、算法原理
A-模型建立 有觀測序列: 計算一階累加序列: 其中 假設生成序列的一階模型(核心思想): 對其積分(連續轉化為離散): 而 從而上式轉化為: 其中: 借助矩陣表示: 這便是一個最小二乘求解問題。 ? B-參數求解 定義: 計算均值生成序列: 得出參數估計 C-序列預測 這里取將其帶入上面一階方程解(參數已求出)
取t為離散值(t = k+1)
而
這樣便完成了預測。
三、代碼實現主函數
clc;clear all;close all set(0,'defaultfigurecolor','w'); %{ 參考:《離散模型與灰色預測模型建模機理》,謝乃明,劉思峰 本程序主要用來計算根據灰色理論建立的模型的預測值。 應用的數學模型是 GM(1,1)。 原始數據的處理方法是一次累加法。 %} f = @(t,b)(0.3*t.^2+b+0.3*randn(1,length(t)));%定義待預測函數 t = 0:.2:5; b = 3; x0 = f(t,b); x_pre = GM11(x0); plot(t,x0,'k',t,x_pre,'r--'); xlabel('時間(年)'); ylabel('幅度'); title('GM11預測模型'); legend('原始數據','預測數據');GM11的function:
function x_pre = GM11(x0) x0 = x0(:); n = length(x0); x1 = cumsum(x0); for i = 1:n-1G(i,1) = -(x1(i)+x1(i+1))/2;G(i,2) = 1; end Y = x0(2:end); belta = pinv(G'*G)*G'*Y; a = belta(1); u = belta(2); %predict x_pre1 = zeros(n,1); x_pre = x_pre1; for k = 0:n-1x_pre1(k+1) = (x0(1)-u/a)*exp(-a*k)+u/a; end x_pre(1) = x0(1); for k = 1:n-1x_pre(k+1) = x_pre1(k+1)-x_pre1(k); end結果圖:
總結
- 上一篇: struts2操作json成字符串格式错
- 下一篇: 安装vs 2015 x新建项目 显示(未