主题: GM(1,1)
查看单个帖子
旧 2008-11-07, 10:53   #1
lvlianggan
初级会员
 
注册日期: 2008-11-07
年龄: 41
帖子: 1
声望力: 0
lvlianggan 正向着好的方向发展
默认 GM(1,1)

我写了一个GM(1,1)的求解函数,但是GM(1,1)只是计算行向量或是列向量,我现在想用这个函数计算一个矩阵中没一行的值,然后把计算出来的结果放到一个列向量里面,计算GM(1,1)函数测试通过,但是在记录到列向量的时候出错,请大家帮帮忙,谢谢!
代码:

gm.m

function gm(x0)
n=length(x0);
%由数列x0生成数列x1;
s=0;
for i=1:n
s=s+x0(i);
x1(i)=s;
end
%由数列x1生成矩阵B和Y;
for i=1n-1);
Q(i)=-(x1(i)+x1(i+1))/2;
end
M=ones(n-1,1);
B=[Q' M];
for i=1n-1);
C(i)=x0(i+1);
end
Y=C';
beta=inv(B'*B)*B'*Y;
%计算出a和u;
a=beta(1);
u=beta(2);
(x0(1)-u/a)*(1-exp(a))*exp(-a*3)


test.m

C=[0.8 0.9 0.6; 1.0 0.9 0.9;1 2 3];
f=zeros(3,1);

for a = 1: 3;
% eval(['X',num2str(a),'=','C(a,']);
% eval(['x',num2str(a),'=','gm(C(a,)'])

f(:,1)= gm(C(a,);

end
lvlianggan 当前离线   回复时引用此帖