x0=[38.95,39.59,39.89,40.64,41.31,42.04,42.91,43.64,49.51,50.38]
GM(x0)
end
function GM(x0) %灰色系统GM(1,1)预测
T=input('请输入T:')
x1=zeros(1,length(x0))
B=zeros(length(x0)-1,2)
yn=zeros(length(x0)-1,1)
hatx0=zeros(1,length(x0)+T)
hatx00=zeros(1,length(x0))
hatx1=zeros(1,length(x0)+T)
epsilon=zeros(length(x0),1)
omega=zeros(length(x0),1)
for i=1:length(x0)
for j=1:i
x1(i)=x1(i)+x0(j)%累加生成
end
end
x1
for i=1:length(x0)-1
B(i,1)=(-1/2)*(x1(i)+x1(i+1))
B(i,2)=1
yn(i)=x0(i+1)
end
hatA=(inv(B'*B))*B'*yn %求a,u
for k=1:length(x0)+T
hatx1(k)=(x0(1)-hatA(2)/hatA(1))*exp(-hatA(1)*(k-1))+hatA(2)/hatA(1)
end
hatx0(1)=hatx1(1)
for k=2:length(x0)+T
hatx0(k)=hatx1(k)-hatx1(k-1)%累减还原
end
hatx0%历史数据的陆段模拟值
for i=1:length(x0)%开始检验
epsilon(i)=x0(i)-hatx0(i)
omega(i)=(epsilon(i)/x0(i))*100
end
c=std(epsilon)/std(x0)
p=0
for i=1:length(x0)
if abs(epsilon(i)-mean(epsilon))<0.6745*std(x0)
p=p+1
end
end
p=p/亏信length(x0)
if p>0.95&c<0.35
disp('预测精度好,预测值为:')
disp(hatx0(length(x0)+T))
elseif p>0.85&c<0.5
disp('预测精度合格,预测值为:')
disp(hatx0(length(x0)+T))
elseif p>0.70&c<0.65
disp('预测精度勉强合格,预测值为:')
disp(hatx0(length(x0)+T))
elseif p<=0.7&c>0.65
disp('预测精度不合格')
end
for i=1:length(x0)
hatx00(i)=hatx0(i)
end
z=1:length(x0)
plot(z,x0,'-'早空誉,z,hatx00,':')
text(2,x0(2),'历史数据:实线')
text(length(x0)/2,hatx00(length(x0))/2,'模拟数据:虚线')
end
进行灰色预测,首先要鉴别系毕拦统因素之间发展趋势的相异程度,即进行关联分析,再对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的运握微分方程模型来预测事物未来发展手悄胡趋势的状况。在建立灰色预测模型之前,需先对原始时间序列进行数据处理是为了弱化原始时间序列的随机性。灰色系统常用的数据处理方式有累加和累减两种。
function x=gmadd(x0,k)n=length(x0)%求出原始数据的长度
x=ones(k,n)
x(1,:)=x0
for j=1:k
x1(1)=x0(1)%计算出依次累加的矩阵,命名为厅困x1
for ii=1:n-1
x1(ii+1)=x1(ii)+x0(ii+1)
end
%求出数据向量Y矩伍凳阵
y=ones(n-1,1)
for ii=2:n
y(ii-1)=x0(ii)
end
%构腔伏旅造出数据矩阵b
b=ones(n-1,2)
for ii=1:n-1
b(ii,1)=(-0.5)*(x1(ii)+x1(ii+1))
end
%确定参数a和u
w=inv(b'*b)*b'*y
a=w(1,1)
u=w(2,1)
%计算模型x11
m=u/a
g=x0(1)-m
x11=ones(n,1)
x11(1)=x0(1)
for ii=1:n
x11(ii+1)=exp(-a*ii)*g+m
end
%进行下一次循环
for ii=1:n
x0(ii)=x11(ii+1)-x11(ii)
end
x(j,:)=x0
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)