想要优化一个函数,程序如下:( E# q m* n7 T$ v& Q
%给定初值 4 U2 U, f4 N1 y" ~5 j) ?$ X, {$ dcm=3;9 e' B; }) S0 I
cp=5; ; y4 `! E; R! U3 U% Vl=20;, i. A5 B1 x( X6 r
h=0.05; ! F- J& {1 ~- P+ P8 r$ kp0=1/h; 4 k" ^) X3 S2 o/ l! x9 c/ Pq0=2*l/h; # F, l f9 d+ R* o) U( g8 i$ Bnn=0; N$ W- M3 o+ I) H+ ]: s& `3 \7 W
cc=cm*l*l 6 n6 N) r4 F" M; M2 |8 {%主程序7 I3 \6 p. \$ C# ?" s3 D$ V
for p=1:h:p07 z4 a# d" z* G2 h- b; S, u0 m
for q=1:h:q01 L; _' t) K" t* M; O5 ~2 a
a=p*h; 1 e/ R7 s) P: ~+ T7 z8 z b=q*h; . w$ g0 l) O6 ~% s/ D0 W0 N1 L for n=1:12*l/b) %行向量 # C6 c1 d; J& [. L# n& ]3 n 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; - [8 u, ^! x6 A" g1 H- d if c(2)>=c(1), M' `: o( c% k# P/ o1 F" p; g
nn=1;* d; K* t3 e& i% U: q
elseif c(2*l/b)-c(2*l/b-1)<=01 a1 ~8 f! A) X+ G4 G# j1 v0 g
nn=2*l/b;2 ?3 k* N" g7 T5 e5 K8 y) i: N0 i6 \
else / r1 ^4 j, ^! I- ^ for k=1:12*l/b)9 L& r5 I: H% ?+ }9 F0 S
if (c(k)-c(k-1)<=0 && c(k+1)-c(k)>=0) $ {" C E1 l7 K. C! t3 T2 \5 V: J nn=k; ' K% S+ g. |; d8 c6 [ end, j: C- ~6 J% ~9 ]6 B
end- {+ L: O, e& }' H2 w6 e1 f
end - G' Y- I, s# o. d0 ]8 V9 a; @/ o7 L end ; a& F, C$ o0 \( g if(c(nn)<cc)2 v ~/ g6 Q A$ W! m! f0 F& a! ^
n=nn; % M, T* Y' b" f/ e' J# ^ aa=a;8 N- s! z/ _& x2 x, u
bb=b; : I3 i, l5 i6 d( w( f, I" X i cc=c(nn) a; K) a B6 T
end( O+ b* c7 e& D
end & c! Z# r$ w% U. K7 H6 lend M/ v9 A# C5 w) G$ x8 Sfprinft('%d',n) 5 l' d% x4 L* E/ Jfprintf('%d',cc). I1 D2 y# Z4 I+ }/ Q
fprintf('%d',aa) ( {2 l$ b+ u: j$ x7 Rfprintf('%d',bb)- W9 H7 d8 y3 Q5 R+ z0 H7 _( z' U# s
7 Q) j: a" t% I. @' U+ G7 u/ S/ M) C0 \ Y
运行不出来,错误提示:# P. n! J; L( z. W1 j
cc = 2 m0 l# {$ V9 S3 Z |' r+ O2 K 0 j# r1 `& r P; m E6 M: Y 1200# Y1 ]5 }- W% H) r X
, @! q9 P( b3 o7 m, W??? Attempted to access c(2); index out of bounds because numel(c)=1. ' e, f% u+ I3 X7 y- F0 F8 w8 n9 q5 k) \: @$ J" X( q% }1 x }