📄 gm3.m
字号:
function f=gm3(x)
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
%求误差
'模拟值'
zz(n-2,:)
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)'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -