数学建模社区-数学中国
标题:
怎么进行一位精确搜索
[打印本页]
作者:
silence123
时间:
2013-4-6 09:23
标题:
怎么进行一位精确搜索
fminbnd 这里不会写了
; p* Z% j/ ~& r/ h+ e) Z; N* j
%用最速下降法求解问题;
* p8 O* {: Z8 |- v. W: R
eps=0.1; %给出误差线;
4 r+ W! E$ ?# m3 M& }" U% e5 R6 i
p=[];
2 N7 K) A" h5 ] P1 D; e$ L
syms y z lamd
; S: Y& m. @% P L. Y2 u
f=exp(y^2+z^2-y*z)*cos(y+z);
; S& k1 {9 G# r) q W, N: m/ d
grd=jacobian(f,[y,z]);
. Q! W7 |: x" p. j, g; \+ z/ ^
x=[1 1];%给出起始点;
. I2 a) ]& d# r; X) R* j
X=subs(grd,[y,z],x); %计算x点出的梯度;
# Y! G( b6 K9 _$ f C4 U
XX=sqrt(X(1)^2+X(2)^2); %x的模;
: J. R- p) t! c& k2 p7 w
if XX<=eps;
& E5 j* _' {9 @% i! d
disp('所求点为x=');
7 U) n$ X" d Y* g9 y0 Y9 i/ |
disp(x);
7 _1 H8 R: d) F x f0 `
else
4 N% |! f8 Y; \# ^
for k=1:20;
) o# u, D# c% p( l( O
p=-X./XX;
8 ]9 @4 l& ] C$ V I5 y" C- z+ z
H=subs(f,[y,z],x+lamd*p);
' _" D( W7 y m9 k, U
%求解最优步长lamd是关键问题;
3 g) u6 F' _/ J5 x2 s/ G
lamd=fminbnd(@(lamd),myfun(lamd,x),0,1);
3 ?' f0 a# t8 G5 \" e" H' J
x=x+lamd*p
5 T+ @; i3 c0 N2 }, P
X=subs(grd,[y,z],x);
: k+ K4 I) `0 g3 k: k' d& I1 C
XX=sqrt(X(1)^2+X(2)^2); %x的模;
* \" r+ A" F4 r; ^ \% L, p! [+ K1 M
if XX<=eps;
; d4 C3 t" D) q0 J4 z. X
disp('所求点为x=');
( o0 _0 b. Z- d5 Z- Y4 b
disp(x);
* i1 G( h! k9 l* D& x, e! z
end
! y0 }2 J2 ^: X$ A
end
$ [. j9 O8 ~1 l" X8 v
end
# U5 I( [: F, ^+ v6 u1 o' h
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5