matlab 一维搜索算法 成功失败法 思路+matlab代码实现+例子

博客介绍了查找区间算法的具体思想,包括选定初始点和步长,根据函数值比较进行前进或后退运算。还给出了查找区间的实现代码,如success_fail.M文件。最后列举两个例子,且用matlab验证正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

算法的具体思想:

实现代码:

两个例子:


算法的具体思想:

(1)选定初始点a 和步长h;

(2)计算并比较f(a)和f(a+h);有前进(1)和后退(2)两种情况

      2.1 前进运算:

             若f(a)>= f(a+h),则步长加倍h = 2*h,计算f(a+3h)。若f(a+h) ≤f(a+3h),令 a1=a, a2=a+3h, 停止运算;否则将步长加倍,并重复上述运算。

     2.2 后退运算:

             若f(a)<f(a+h),则将步长改为h=-0.25*h。计算f(a-h), f(a-h) ≥ f(a), 令 a1=a-h, a2=a+h, 停止运算;否则将步长加倍,并重复上述运算。
 

 

 

查找区间实现代码:

 

函数文件:

%%这是function函数:
function f = myfun(x)
f = x^3 - 2*x + 1 ;

success_fail.M文件:

function [a1,a2]=success_fail(x0,h0) %x0 起始点  h0 初始步长

t = x0 + h0;
h=h0;
f0 = myfun(x0);
f1 = myfun(t);
f2 = 0;
a1 = x0;
m = t;
a2 = t;
while 1 
    if f0 >= f1
        h = 2*h;
        f2 = myfun(t + h);
        t = t + h;
        a1 = m;
         m = a2;
        a2 = t;
            if f1 <= f2     
                break;
            end  
        f0 = f1;
        f1 = f2;
    elseif f0 < f1
        h = -0.25*h0;
        t = x0 + h;
        f1 = myfun(t);
    end
end
if h < 0
   t = a1;
   a1 = a2;
   a2 = t;
end

两个例子:

 

这个两个例子,我用matlab都试过,正确。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值