灰色预测MATLAB程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作用:求累加数列、求a b的值、求预测方程、求残差

clc %清屏,以使结果独立显示

x=[ ];

format long; %设置计算精度

if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换 x=x';

end

n=length(x); %取输入数据的样本量

z=0;

for i=1:n %计算累加值,并将值赋予矩阵be

z=z+x(i,:);

be(i,:)=z;

end

for i=2:n %对原始数列平行移位

y(i-1,:)=x(i,:);

end

for i=1:n-1 %计算数据矩阵B的第一列数据

c(i,:)=*(be(i,:)+be(i+1,:));

end

for j=1:n-1 %计算数据矩阵B的第二列数据

e(j,:)=1;

end

for i=1:n-1 %构造数据矩阵B

B(i,1)=c(i,:);

B(i,2)=e(i,:);

end

alpha=inv(B'*B)*B'*y; %计算参数矩阵即a b的值

for i=1:n+1 %计算数据估计值的累加数列,如改为n+1为n+m可预测后m-1个值

ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,: );%显示输出预测值的累加数列

end

var(1,:)=ago(1,:) %显示输出预测值

for i=1:n %如改n为n+m-1,可预测后m-1个值

var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值end

for i=1:n

error(i,:)=x(i,:)-var(i,:); %计算残差

end

c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列

alpha %显示输出参数数列

var %显示输出预测值

error %显示输出误差

c %显示后验差的比值

作用:数据处理判断是否可以用灰色预测、求级比、求累加数列、求a b的值、求预测方程

clc,clear

x0=[ ]'; %注意这里为列向量

n=length(x0);

lamda=x0(1:n-1)./x0(2:n) %计算级比

range=minmax(lamda') %计算级比的范围

x1=cumsum(x0) %累加运算

B=[*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];

Y=x0(2:n);

u=B\Y %拟合参数u(1)=a,u(2)=b

x=dsolve('Dx+a*x=b','x(0)=x0'); %求微分方程的符号解

x=subs(x,{'a','b','x0'},{u(1),u(2),x0(1)}) %代入估计参数值和初始值yuce1=subs(x,'t',[0:n-1]); %求已知数据的预测值

y=vpa(x,6) %其中的6表示显示6位数字

yuce=[x0(1),diff(yuce1)] %差分运算,还原数据

相关文档
最新文档