数学建模社区-数学中国

标题: 这个代码哪里错了,求指教,希望可以给出正确的程序。 [打印本页]

作者: 哎帅得掉渣    时间: 2016-7-29 19:36
标题: 这个代码哪里错了,求指教,希望可以给出正确的程序。
x=[5999,5903,5848,5700,7884];
gm1(x)
function gmcal=gm1(x)
sizexd2 = size(x,2);
k=0;  
for y1=x
    k=k+1;
    if k>1  
        x1(k)=x1(k-1)+x(k);
        z1(k-1)=-0.5*(x1(k)+x1(k-1));
        yn1(k-1)=x(k);
    else
        x1(k)=x(k);
    end
end
sizez1=size(z1,2)
z2=z1';
z3=ones(1,sizez1)';
YN = yn1';
au = au0';   
afor = au(1);
ufor = au(2);  
ua = au(2)./au(1);
constant1 = x(1)-ua;
afor1 = -afor;
x1t1 = 'x1(t+1)';
estr = 'exp';
tstr = 't';
leftbra = '(';
rightbra = ')';
strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra)
k2 = 0;
for y2 = x1  
    k2 = k2 + 1;
    if k2 > k   
    else
        ze1(k2) = exp(-(k2-1)*afor);
    end
end
sizeze1 = size(ze1,2);
z4 = ones(1,sizeze1)';
G=[ze1' z4];
X1 = x1';  
au20=inv(G'*G)*G'*X1;
au2 = au20';
Aval = au2(1);
Bval = au2(2);
strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(Bval),rightbra)
nfinal = sizexd2-1 + 1;
for  k3=1:nfinal  
x3fcast(k3) = constant1*exp(afor1*k3)+ua;
end
for  k31=nfinal:-1:0
    if k31>1  
        x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);
    else
        if k31>0
            x31fcast(k31+1) = x3fcast(k31)-x(1);
        else
            x31fcast(k31+1) = x(1);
        end
    end
end  
x31fcast
for  k4=1:nfinal
    x4fcast(k4) = Aval*exp(afor1*k4)+Bval;
end
for  k41=nfinal:-1:0
    if k41>1  
        x41fcast(k41+1) = x4fcast(k41)-x4fcast(k41-1);
    else
        if k41>0
            x41fcast(k41+1) = x4fcast(k41)-x(1);
        else
            x41fcast(k41+1) = x(1);
        end
    end
end
x41fcast,x
k5 = 0;
for y5 = x  
    k5 = k5 + 1;  
    if k5 > sizexd2   
    else
        err1(k5) = x(k5) - x41fcast(k5);
    end
end
xavg = mean(x);
err1avg = mean(err1);
k5 = 0;  
s1total = 0  
for y5 = x  
    k5 = k5 + 1;  
    if k5 > sizexd2   
    else
        s1total = s1total + (x(k5) - xavg)^2;
    end
end
s1suqare = s1total ./ sizexd2;
s1sqrt = sqrt(s1suqare);
k5 = 0;  
s2total = 0  
for y5 = x  
    k5 = k5 + 1;  
    if k5 > sizexd2   
    else
        s2total = s2total + (err1(k5) - err1avg)^2;
    end
end
s2suqare = s2total ./ sizexd2;
Cval = sqrt(s2suqare ./ s1suqare);
Cval
k5 = 0;
pnum = 0  
for y5 = x  
    k5 = k5 + 1;  
    if abs( err1(k5) - err1avg ) < 0.6745 * s1sqrt
        pnum = pnum + 1;  
    else
    end
end
pval = pnum ./ sizexd2;
pval


作者: madio    时间: 2016-7-30 06:26
函数gm1的定义中一开始没有定义au0这个矩阵,就使用了

作者: madio    时间: 2016-7-31 06:44
au = au0';就是这句里面的au0没有定义,你具体是要做什么算法?说得清楚一点,这个代码一点注释都没有,不知道是要做什么的





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5