function [section] = JinTuiFa(fx, x0, h0, t) %%%输入目标函数x,初始点x0,初始步长h0和加停系数t: %%%采用进退法确定搜索区间ra,bl; 输出搜索区间 f = inline(fx); h = h0; a = x0; k = 0; % k是计数器,同时也做指示器:如果第1次目标函数就没有下降,将 % 作为反白搜索的指示标记: judge = 1; % 循环判断器 while judge == 1 %%ture继续循环 x1 = x0 + h; k = k + 1; if f(x1) < f(x0) % 判断搜索方白,保证是下降方向; h = t * h; % 加大步长,一般情况下选择加倍系数为2) % 最值区间的一端; a = x0; % 更新初始点 x0 = x1; else if k == 1 % 判断初始方向是否错误 h = -h; % 方白错误,选择反方白 else % 将跳出循环 judge = 0; % error,不满足循环条件, end end end m = min(a, x1); n = max(a, x1); section = sprintf('%.4f, %.4f', m, n); % 格式化输出区间 end
标签:2024.05,end,h0,29,judge,x0,x1,初始 From: https://www.cnblogs.com/dmx-03/p/18243894