2024.05.29

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
posted @   new菜鸟  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示