灰色预测模型matlab实现(灰色预测模型的MATLAB源码)
灰色预测模型matlab实现(灰色预测模型的MATLAB源码)clc clear;代码:将参数代入预测模型进行数据预测。[89677 99215 109655 120333 135823 159878 182321 209407 246619 300670],现在要预测该公司未来几年的利润情况。
灰色预测适用于小样本的预测,常用来解决一些不确定性的问题。理论知识书上都有介绍,下面仅列出程序设计,同时方便自己比赛。
对原始数据进行累加;
构造累加矩阵B与常数向量;
求解灰参数;
将参数代入预测模型进行数据预测。
[89677 99215 109655 120333 135823 159878 182321 209407 246619 300670],
现在要预测该公司未来几年的利润情况。
在程序中我们仅仅预测该公司10年以后的情况,数据可修改,把(n 10)里的10改成你需要的数字即可。代码:
-
clc clear;
-
syms a b;
-
c=[a b]';
-
A=[89677 99215 109655 120333 135823 159878 182321 209407 246619 300670];
-
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) %只推测后10个数据,可以从此修改
-
F(i)=(A(1)-b/a)/exp(a*(i-1)) b/a;
-
end
-
G=[];G(1)=A(1);
-
for i=2:(n 10) %只推测后10个数据,可以从此修改
-
G(i)=F(i)-F(i-1); %得到预测出来的数据
-
end
-
t1=1999:2008;
-
t2=1999:2018; %多10组数据
-
G
-
h=plot(t1 A 'o' t2 G '-'); %原始数据与预测数据的比较
-
set(h 'LineWidth' 1.5);