想要优化一个函数,程序如下: - _* s! L+ f. ^1 q4 p# y% F%给定初值$ Z, `5 C8 z. y
cm=3; / x! t2 e# g* ^# X2 u3 |% u. Dcp=5;' X4 a9 }* a/ C# ^$ C5 _' [
l=20; # I) n3 N, t! U. N# i) x- e- Hh=0.05;) R d4 ]( z- z8 Z2 D% R. ^" t
p0=1/h; : `4 T& W1 k: `- Dq0=2*l/h;5 [2 G4 u8 K$ Z! f/ H: [
nn=0;2 I; P2 S- D+ v7 ?" X
cc=cm*l*l* j: P2 T& B1 Z% V' L+ o
%主程序 / y7 `. w% N" n. ~8 Vfor p=1:h:p0* n$ S5 }' e# M
for q=1:h:q05 J* o. C! N( F5 p1 u a3 `4 N
a=p*h;2 {' u, E, e0 a: e
b=q*h; : r6 s3 _1 R- {$ R for n=1:12*l/b) %行向量 ~& {) j( D: Y K7 P9 b* I
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;) T$ L! B1 `: m/ U! a, a- {0 ]. b
if c(2)>=c(1) 8 W) f) Q& y! |: s, W nn=1;/ [ c! m0 ~9 B/ H& Y, T
elseif c(2*l/b)-c(2*l/b-1)<=02 O2 w$ p5 W. I
nn=2*l/b;( {- V' O5 T3 f& d8 |3 n. o
else5 n) x$ J/ u l6 [
for k=1:12*l/b) + N$ F& _7 v- H# ^6 h' H+ |0 J if (c(k)-c(k-1)<=0 && c(k+1)-c(k)>=0) 4 y5 {# a1 g6 X nn=k;- ~+ |: a: K( {/ X3 z4 M
end + r2 [1 x# B; r( K1 A ? end7 J6 H& U$ U6 q, |* ~! n7 O1 V! u
end/ j8 A: r+ [# W8 U# V; p3 n9 ^
end / U+ I* h2 \1 P+ ] if(c(nn)<cc)0 } W% T6 i6 p) n* `
n=nn; ( C4 j$ q# ]# b) ~0 n aa=a; 5 P) w- j) w; g* y8 S bb=b;+ T$ v2 H3 l! ?3 |" Q# R0 J
cc=c(nn) r, ]! ~! V9 m' G$ J# H end 1 j7 Q5 T, u1 |" d5 L- L0 j6 n: p" L end5 G/ A0 m$ D. i" W# m& \- {
end * q8 i9 M9 k/ ~9 d. e6 jfprinft('%d',n) 6 m! J7 h6 `2 J( q% G: ` \/ afprintf('%d',cc)( q; s6 d- V) ~
fprintf('%d',aa) B; d0 T( A+ L6 {2 p& P5 U4 w
fprintf('%d',bb) 3 v! t: P& o, M$ |& x# L0 Y ! v3 d) U" t7 B: p$ S$ {, q) b% O* ?; D8 O( t) r5 C9 l; q
运行不出来,错误提示: , p4 R/ e. h" Y9 G. V" O" [0 n: Pcc =7 J% n) O. W7 R5 P# U$ _- G
: P# h: a0 {% K# o' N& ? 12000 J( h, t. X( o) s4 L. K
6 }+ N4 I N0 e) z+ j* k
??? Attempted to access c(2); index out of bounds because numel(c)=1.+ e" G) ?) I Y
$ V1 ?; S' _1 L' _. z' X4 k
. e, \- R; w& I8 U8 v' ^" c
这是什么问题呀......