📄 gm4.m
字号:
function f=gm4(x,K)
n=length(x);
z(n-3,n)=0;
zz(n-2,n)=0;%
AB=zeros(2,n-3);
for j=1:n-3
z(j,j:n)=x(j:n);
x1=zeros(1,n-j+1);
x0=zeros(1,n-j+1);
Y=zeros(1,n-j);
B=zeros(n-j,2);%
x1(1)=z(j,j);
for i=j+1:n
x1(i-j+1)=x1(i-j)+z(j,i);
Y(i-j)=x(i);
end
for i=j:n-1
B(i-j+1,1)=-0.5*(x1(i-j+1)+x1(i-j+2));
B(i-j+1,2)=1;
end
ab=inv(B'*B)*B'*Y';
a=ab(1);
b=ab(2);%
AB(1,j)=a;
AB(2,j)=b;
for i=j-1:n-1
x1(i-j+2)=(z(j,j)-b/a)*exp(-a*(i-j+1))+b/a;%
end
x0(1)=x(j);
for i=j+1:n%
x0(i-j+1)=x1(i-j+1)-x1(i-j);
end
zz(j,j:end)=x0;
end
for j=1:n
if j<=n-3
zz(n-2,j)=sum(zz(:,j))/j;
else
zz(n-2,j)=sum(zz(:,j))/(n-3);
end
end
for j=1:n
e(j)=zz(n-2,j)-x(j);
k(j)=abs(x(j)-zz(n-2,j))/x(j);
end
'绝对误差平方和';
s=e*e';%绝对误差平方和
'平均相对误差';
ss=sum(k(2:n))/(n-1);%平均相对误差
%模拟方程
'x1(k)=(x(1)-b/a)*exp(-a*(k-1))+b/a';
'x0(k)=x1(k)-x1(k-1)';
zzz(n-3,3)=0;%第K年预测值
%预测
if K>n
for j=1:n-3
zzz(j,1)=(zz(j,j)-AB(2,j)/AB(1,j))*exp(-AB(1,j)*(K-j))+AB(2,j)/AB(1,j);%此处的K+1还是K一直不太清楚
zzz(j,2)=(zz(j,j)-AB(2,j)/AB(1,j))*exp(-AB(1,j)*(K-j-1))+AB(2,j)/AB(1,j);
zzz(j,3)= zzz(j,1)-zzz(j,2);
zzz;
end
'第K年的预测值为'
mean(zzz(:,3))
else
'第K年的预测值为'
zz(n-2,K)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -