一维搜索——进退法matlab实现(含代码)

一维线性搜索——进退法matlab实现(含代码)

在采用线性搜索算法可分为两个阶段:第一个阶段确定包含最优解的初始搜索区间;第二个阶段采用某种算法对初始搜索区间进行缩小,直到达到精度为止。而进退法就给出了一种确定初始搜索区间的算法。下面是对进退法的具体描述和matlab实现。

1、算法思想

在这里插入图片描述

2、matlab实现

function [section]=JT(fx,x0,h0,t)
%%%输入目标函数fx,初始点x0,初始步长h0和加倍系数t;
%%%采用进退法确定搜索区间[a,b];
%%%输出搜索区间。
f=inline(fx);
k=0;    %%计数器,同时也做指示器:如果第1次目标函数就没有下降,将作为反向搜索的指示标记;
h=h0;
a=x0;
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);  %%格式化输出区间

3、实例检验

在这里插入图片描述

  • 12
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

篱落~~成殇~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值