结果:
第 2013 年估值: 230109
第 2014 年估值: 242828
第 2015 年估值: 256250
第 2016 年估值: 270414
第 2017 年估值: 285361
代码:
% Purpose:
% 解答网友 岑风吟 提出的问题:“求大神用matlab软件做GM(1.1)灰色预测”
% Record of revision:
% Date: 7月14日 Programmer: Neymar87 Description of change: 第一版
% Define variables:
% x0 --original data
% x1 --running sum of x0,that is x1(k)=x0(1) + x0(2) + ... + x0(k)
% z1 --generated mean sequence of x1, that is z1(k)=.5(x(k)+x(k-1))
% Y, B --dummy variables to calculate coefficients a,b for
% M(1,1) Grey Model
% a,b --coefficients proposed by M(1,1) Grey Model, and we have:
% x0(k)+a*z1(k)=b
% 清理运算环境,输入原始数据 x0
clear;
x0=[134025,137668,137204,144973,145043,154557,162325,174164,176489,187401,216457,225913];
% 计算 dummy variable -- x1
x1=zeros(1,12);
for i=1:12
for j=1:i
x1(i)=x1(i)+x0(j);
end
end
% 计算 dummy variable -- z1
z1(1)=0;
for i=2:12
z1(i)=.5*x1(i)+.5*x1(i-1);
end
% 计算 dummy variables -- Y, B
Y=x0(2:end)';
B=[-z1(2:end)' ones(11,1)];
result=inv(B'*B)*B'*Y;
result=result';
% 由 Y, B,计算coefficients a, b
a=result(1);
b=result(2);
% 根据M(1,1)微分公式,计算估计值
% 岑风吟:
% 考虑到原题目给出的都是整数,所以对结果进行四舍五入操作。如果你要保留小数,把
% disp(...) 的 round 去掉即可。
for i=1:5
prediction=(x0(1)-b/a)*exp(-a*(12+i-1))*(1-exp(a));
disp(['第 ' num2str(2012+i) ' 年估值: ' num2str(round(prediction))])
end
希望能帮助你。也希望你能采纳!