想要优化一个函数,程序如下: 1 y2 k1 N- N9 W, M3 U%给定初值$ s' {" {* h% |; p4 F* Z
cm=3;9 L1 i5 P* E, Q6 H0 x
cp=5;4 W- O1 |* }0 \: P# Q y1 ~+ U+ U
l=20; 5 A( I: A' o9 K" g- G" S: B2 Ph=0.05;/ J9 P6 t' Q0 V
p0=1/h;6 z+ e2 g k; I! u, z' Y
q0=2*l/h; - M; A% }) h7 L; ] ?) }0 N5 w- tnn=0;6 d) r P, S- y- c' H2 v! O3 P
cc=cm*l*l1 ^; }6 v# }. `
%主程序 ) w7 o4 O6 `+ N. a7 r+ F6 ufor p=1:h:p0; s, W* t/ K: R2 G9 x: R
for q=1:h:q0 X5 a, F% K1 ] c9 x3 m$ Q a=p*h;( e6 n/ g( i2 W v0 O; s' W* Q
b=q*h; ) f" u/ H. L/ f# x for n=1:12*l/b) %行向量 % j) i Q3 r: B% D 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;; _0 \4 Y' Q' ~. k
if c(2)>=c(1)( X2 N" Q1 `. F1 k6 m! k
nn=1;7 C# _+ z: n) t$ T; O2 n
elseif c(2*l/b)-c(2*l/b-1)<=01 u4 c/ w, w: O7 ~7 I I' g
nn=2*l/b; 1 M3 s' L/ z Q( j/ R else ]! n6 X" K! ?$ C8 G for k=1:12*l/b)+ ~1 B! o" y, y& V# U; g1 r
if (c(k)-c(k-1)<=0 && c(k+1)-c(k)>=0) + u, w/ ?) i. S' q8 L# r! i nn=k;( m" Z9 a* g' G
end; p& |$ z Z8 K4 o' h* [) H
end% O/ `7 C* T, z; @( `# p& m
end & _1 N: u/ B5 v; T# T+ A$ J end" M% Y- d1 ?! H6 \0 x, G
if(c(nn)<cc); H% r: U' L; U8 Z8 w( B. f; h3 z
n=nn;1 E2 C# n( W+ Y! b
aa=a;6 S6 D w( c) x1 S4 c6 S
bb=b; . e2 {& {3 G. r- P! Z cc=c(nn) + r, o3 B+ b& d- X8 j end: I% h8 ^* w) _( \+ h0 N
end ) d. y8 C8 B3 h7 V" ^2 fend8 H# E( q% {/ q, \3 J& I7 L
fprinft('%d',n) [1 Q4 {( v) X3 z4 [- ]fprintf('%d',cc) ( N" C1 @5 n4 f: T7 m x2 n+ @fprintf('%d',aa)5 o7 l* X( t! u ^" m
fprintf('%d',bb)0 V+ H! u/ j4 N5 ?2 u. p
; c' i9 L1 I' ?8 l$ e - r" A5 Q" K* f9 ~运行不出来,错误提示: 1 X' c# w: _/ i- n: Pcc =- w3 S6 a: U l7 c
H3 E: L% T* ]$ C. O7 z 1200 # s D4 n$ R+ j: ], q z/ K% v2 W0 L0 v1 j2 w A5 F
??? Attempted to access c(2); index out of bounds because numel(c)=1.7 k; o) z- m( z7 ?* q$ n9 j; h8 @# x* u
# a. s" B9 ~2 S# G/ H& I8 _1 G+ w' F* z, a4 t; x
这是什么问题呀......