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]