www.gusucode.com > 学会不同搜索法(最速下降法,共轭梯度法,牛顿法,拟牛顿法)的计算步骤 > code/gold.m
%精确一维搜索法的子函数,0.618法,gold.m %输入的变量x为初始迭代点是四维的向量,d为初始迭代方向是四维的向量 %输出变量是在[0,10]区间上使函数取得极小值点的步长因子 function alfa=gold(x,d) f='((x(1)+alfa*d(1))+10*(x(2)+alfa*d(2)))^2+5*((x(3)+alfa*d(3))-(x(4)+alfa*d(4)))^2+((x(2)+alfa*d(2))-2*(x(3)+alfa*d(3)))^4+10*((x(1)+alfa*d(1))-(x(4)+alfa*d(4)))^4'; a=0; b=10; tao=0.618; lanmda=a+(1-tao)*(b-a); mu=a+tao*(b-a); alfa=lanmda; m=eval(f); alfa=mu; n=eval(f); while 1 if m>n if abs(lanmda-b)<1e-4 alfa=mu; return else a=lanmda; lanmda=mu; m=n; mu=a+tao*(b-a); alfa=mu; n=eval(f); end else if abs(mu-a)<1e-4 alfa=lanmda; return else b=mu; mu=lanmda; n=m; lanmda=a+(1-tao)*(b-a); alfa=lanmda; m=eval(f); end end end