數學建模筆記1——灰色預測matlab例子
案列一 長江水質的預測
matlab程式碼:
clc,clear;
syms a b;
c=[a b]';
A=[174 179 183 189 207 234 220.5 256 270 285];
B=cumsum(A); % 原始資料累加
n=length(A);
for i=1:(n-1)
C(i)=(B(i)+B(i+1))/2; % 生成累加矩陣
end
% 計算待定引數的值
D=A;D(1)=[];
D=D';
E=[-C;ones(1,n-1)];
c=inv(E*E')*E*D;
c=c';
a=c(1);b=c(2);
% 預測後續資料
F=[];F(1)=A(1);
for i=2:(n+10)
F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a ;
end
G=[];G(1)=A(1);
for i=2:(n+10)
G(i)=F(i)-F(i-1); %得到預測出來的資料
end
t1=1995:2004;
t2=1995:2014;
G,a,b % 輸出預測值,發展係數和灰色作用量
plot(t1,A,'o',t2,G) %原始資料與預測資料的比較
xlabel('年份')
ylabel('排水量')
執行結果:
G =
Columns 1 through 6
174.0000 172.8090 183.9355 195.7785 208.3839 221.8010
Columns 7 through 12
236.0820 251.2825 267.4616 284.6825 303.0122 322.5221
Columns 13 through 18
343.2881 365.3912 388.9175 413.9585 440.6118 468.9812
Columns 19 through 20
499.1772 531.3174
a =
-0.0624
b =
156.6162
這個程式碼是個模板 可以套用 只需改下其中的資料即可
以上內容來自MATLAB在數學建模中的應用_卓金武(上)