【MATLAB与机械设计】一维优化进退法确定初始区间

在讨论一维搜索时,首先保证搜索区间函数具有单峰性,也就是在区间[a,b]中函数是凸函数,对于求极小值问题,函数值具有高—低—高的特性,在区间[a,b]上有唯一的最小值。

1,方法的建立
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.进退法确定搜索区间的程序框图
在这里插入图片描述
3,根据上述的程序框图,编写的MATLAB程序如下:

function [x,y] = u_d( f,a0,h )
%% 函数基本说明
%{
本函数为进退法用于求解一维优化问题中搜索最优区间,要求函数具有单峰性
初始值为函数f、初始点a0、初始步长h
返回值为最优值所在区间的左右端点
u_d意为进退

函数调用:
clear; clc;
f = @(x) (x^2+4*x+4);
[lb, ub] = u_d(f, 10000, 0.01)
%}

%% 函数主题部分
a1=a0;
a2=a0+h;
f1=f(a1);
f2=f(a2);
if f2<f1
    h=2*h;
    a2=a2+h;
    f1=f2;
    f2=f(a2);
    while 1
        if f1>f2
            a1=a2-h;
            h=2*h;
            a2=a2+h;
            f1=f2;
            f2=f(a2);
        else
            break
        end
    end

else
    h=-h;
    a1=a1+h;
    f2=f1;
    f1=f(a1);
    while 1
        if f2>f1
            a2=a1-h;
            h=2*h;
            a1=a1+h;
            f2=f1;
            f1=f(a1);
        else
            break
        end
    end
x=a1;
y=a2;
end
  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱读书的小丁同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值