silence123 发表于 2013-4-6 09:23

怎么进行一位精确搜索

fminbnd 这里不会写了
%用最速下降法求解问题;
eps=0.1; %给出误差线;
p=[];
syms y z lamd
f=exp(y^2+z^2-y*z)*cos(y+z);
grd=jacobian(f,);
x=;%给出起始点;
X=subs(grd,,x); %计算x点出的梯度;
XX=sqrt(X(1)^2+X(2)^2); %x的模;
  if XX<=eps;
      disp('所求点为x=');
  disp(x);
  else
   for k=1:20;
      p=-X./XX;
      H=subs(f,,x+lamd*p);
     %求解最优步长lamd是关键问题;
     lamd=fminbnd(@(lamd),myfun(lamd,x),0,1);
       x=x+lamd*p
      X=subs(grd,,x);
      XX=sqrt(X(1)^2+X(2)^2); %x的模;
      if XX<=eps;
          disp('所求点为x=');
      disp(x);
      end
   end
end
  
页: [1]
查看完整版本: 怎么进行一位精确搜索