二次指数平滑法程序
线性指数平滑法
Matlab
程序,代码如下:
注:
Data-
原始数据
s-
一次和二次平滑结果
at-
预测式中的
a
参数
bt-
预测式中的
b
参数
y1-
预测结果
本例是取
alpha
为
0.8
时的情况
arr=[0;6;8.3;9.8;13;15;13.5;26.1;80.3;86;102.6];
[m,n]=size(arr);
alf=0.2;
forj=1:2
s(1,j)=arr(1,1)
end
fori=2:m
forj=1:2
ifj==1
s(i,j)=alf*arr(i,1)+(1-alf)*s(i-1,j);
else
s(i,j)=alf*s(i,j-1)+(1-alf)*s(i-1,j);
end
end
end
temp=alf/(1-alf);
fori=1:m
at(i,1)=2*s(i,1)-s(i,2);
bt(i,1)=temp*(s(i,1)-s(i,2));
yy(i+1)=at(i,1)+bt(i,1);
end
fori=2:11
y1(i-1)=yy(i);
end
fori=2:11
b(i-1)=arr(i);
end
fori=1:3
y2(i)=at(m,1)+bt(m,1)*(i+1);
end
year=[1999:];
year=year';
y1=y1';
y2=y2';