菠萝饭 发表于 2013-6-23 14:00

matlab问题 求大家指点

想要优化一个函数,程序如下:
%给定初值
cm=3;
cp=5;
l=20;
h=0.05;
p0=1/h;
q0=2*l/h;
nn=0;
cc=cm*l*l
%主程序
for p=1:h:p0
    for q=1:h:q0
        a=p*h;
        b=q*h;
        for n=1:1:(2*l/b) %行向量
            c(n)=cm*b*b/4*((1-a^n)/(1-a)+2*n/(1-a)-2*(1-a^n)/(1-2*a+a*a))+cm*(a^n*(l-n*b/2)*(l-n*b/2)+(1-a^n)*b*(l-n*b/2)/(1-a))+n*cp;
            if c(2)>=c(1)
                nn=1;
            elseif c(2*l/b)-c(2*l/b-1)<=0
                nn=2*l/b;
            else
                for k=1:1:(2*l/b)
                    if (c(k)-c(k-1)<=0 && c(k+1)-c(k)>=0)
                        nn=k;
                    end
                end
            end
        end
        if(c(nn)<cc)
            n=nn;
            aa=a;
            bb=b;
           cc=c(nn)
        end
    end
end
fprinft('%d',n)
fprintf('%d',cc)
fprintf('%d',aa)
fprintf('%d',bb)


运行不出来,错误提示:
cc =

        1200

??? Attempted to access c(2); index out of bounds because numel(c)=1.


这是什么问题呀......
页: [1]
查看完整版本: matlab问题 求大家指点