?? gm(1,1)-matlab.txt
字號:
數學建模--灰色理論Matlab程序 - [數學建模]
Tag:灰色理論 數學建模 matlab 代碼
版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://mydongdong.blogbus.com/logs/19013622.html
所謂灰色系統是指,相對于一定的認識層次,系統內部的信息部分已知,部分未知,即信息不完全的系統。灰色系統理論認為,由于各種環境因素對系統的影響,使得表現系統行為特征的離散數據呈現出離亂,但是這一無規的離散數列是潛在的有規序列的一種表現,系統總是有其整體功能,也就必然蘊含著某種內在規律。因而任何隨機過程都可看作是在一定時空區域變化的灰色過程,隨機量可看作是灰色量,通過生成變換可將無規序列變成有規序列。作為灰色系統理論核心和基礎的灰色模型(Grey Model) ,簡稱GM模型,概括而言具有以下3 個特點:
1.建模所需信息較小,通常只要有4 個以上數據即可建模
2.不必知道原始數據分布的先驗特征,對無規或不服從任何分布的任意光滑離散的原始序列,通過有限次的生成即可轉化成為有規序列
3.建模的精度較高,可保持原系統的特征,能較好地反映系統的實際狀況 灰色理論是數學建模過程中常用到的理論,在解決某些已知信息不完全的問題具有獨特的優勢.
在灰色理論模型GM(1,N)中,通常系統特征量都只有一個,即N=1的情況最
常見也最常用,所以這里只給出GM(1,1) 模型,模型如下:
設原始數據序列為:
對作一次累加生成
其中 由式(1.1)和式(1.2)可得
由此得相應的微分方程模型為
此即為GM(1,1)模型,式中a,b為待定參數,a稱為發展系數,b稱為灰色作用量。
設為待定參數向量,利用最小二乘法求解可得
其中
估計出參數a,b之后,則方程(1.4)的解為
由(1.5)可對 作出預測,并由累減生成得到原始數據序列的模擬系列值為
下面給出其MATLAB代碼,以供有需要的朋友參考:
gg=[[x1,x2,x3,x4,x5],zeros(1,m)];%矩陣gg,其中[x1,x2,x3,x4,x5]是已知數據,前面說到灰色理論只要四個數據以上就可以建模,所以這里用五個比較合理,zeros(1,m)中的m是你所想得到的預測數據的個數,由前面用于預測的已知數據是五個,所以m的值最好也在五個左右.在下面的語句中,實際操作的時候不要忘了把m替換成實際的數值.
result=zeros(1,m);
for j=1:m
g0=gg(:,j:j+4);
n=5;
x0=g0;
x1=zeros(n-1,1);
x1(1)=x0(1);
for i=2:n,
x1(i)=x1(i-1)+x0(i);
end
for k=1:n-1
z1(k)=(x1(k)+x1(k+1))/2;
end
z=zeros(1,n-1);
for i=1:n-1
z(i)=-z1(i);
end
B=[z;ones(1,n-1)];
B=B';
y=zeros(n-1,1);
for i=2:n
y(i-1)=x0(i);
end
u=inv(B'*B)*B'*y;
a=u(1);
b=u(2);
for k=0:5,
x2(k+1)=(x0(1)-b/a)*exp(-a*k)+b/a;
end
x3(1)=x0(1);
for k=1:5,
x3(k+1)=x2(k+1)-x2(k);
end
g=x3;
result(j)=g(n+1);
gg(j+5)=g(n+1);
end
result;
r=result' %r即為預測得到的數據
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -