想要优化一个函数,程序如下: . E6 M. ~% |9 e2 ~%给定初值 8 p8 }- _! P0 {6 t5 {$ [) ]cm=3;, u9 `) w9 z7 i! {' T
cp=5;1 y- z2 U6 b5 j8 O N
l=20;0 n5 M$ a, d5 k
h=0.05;! g. {8 O9 O$ p* X8 q( d* x
p0=1/h; : B* X1 T: }& l& Fq0=2*l/h;0 B0 A" M z* ?) O( I1 c8 j7 Y: u
nn=0; 9 K* r0 r) P! p5 Occ=cm*l*l* x& e. T" T! X% t% g4 R, b
%主程序 . O9 P, |9 T: g1 bfor p=1:h:p0" N0 H1 g% X6 J- ?) o4 I; l/ ?4 N
for q=1:h:q0 2 f/ U7 c( S( {8 K) M0 v a=p*h; 3 E0 u5 y& p% c9 n- ~ b=q*h;+ N; Q) {0 R! V: R& l$ S8 M/ |
for n=1:12*l/b) %行向量 1 C% v0 t. D& u8 A1 ^ 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;7 I' ~4 \9 o. K3 j( n( V# B
if c(2)>=c(1) ( v5 m( X7 x$ p+ r* v nn=1;7 V1 L1 C3 x7 Q* u: s) `! U
elseif c(2*l/b)-c(2*l/b-1)<=00 l; t1 b) G D) t2 ^2 T! C
nn=2*l/b; 6 h# w) G; v* y; p6 e- O else ) ]2 t7 n& d% o) l" c for k=1:12*l/b), q* {! S; C8 T1 K* N$ N N
if (c(k)-c(k-1)<=0 && c(k+1)-c(k)>=0)1 L- {* ]& k+ {6 L2 y. L! u) H
nn=k;' R" U: A) Z% i& t
end ) C9 N4 w- r# P v4 ?0 [ end7 k9 z" T7 B' N, P* c6 Z" I
end L* V5 t: B4 v2 h5 T. S! E* @
end F. @# `0 B7 u
if(c(nn)<cc)6 M: D: W2 m! E) [6 g2 @4 s! N4 O
n=nn; " C! R+ ^$ N6 P( a( c; r aa=a;. x/ y1 B) B9 H' `6 Y
bb=b; % l7 a' P% R' q cc=c(nn) ; G5 O G/ U* x6 F end ( j3 K2 p# d+ _ end : [8 U* L# e, T# Z' rend* F# {0 G, ~# u8 n) j
fprinft('%d',n)- @: @* H& k3 Z: ~% C
fprintf('%d',cc) 0 U2 U6 ]( ^+ b3 V5 `( `fprintf('%d',aa) + L4 ~. x1 |3 x$ h; S" ifprintf('%d',bb)) F0 @" s+ X; I0 X5 O* r; m
- A7 U& S$ I. g, ?
" C: ?# D6 o, \" }
运行不出来,错误提示:: [+ v: t8 s: l {" t, ~
cc =" E+ w" q0 X7 u" }' i/ V) q
3 i3 m# e }( G 1200 ) K! G/ t* D& Y/ I Y7 X z$ |: H! E: L+ ?! b??? Attempted to access c(2); index out of bounds because numel(c)=1. ; R& g" p( \0 `' ~0 \- L2 j, K1 c2 {5 P Z1 y- c
9 `0 X E- I+ _: k) P6 f i+ f
这是什么问题呀......