⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goldsection.m

📁 黄金分割法求解下单峰函数的极小值 是一个比较好的代码
💻 M
字号:
function answ = goldsection(a,b,eps)
% 黄金分割法实现一维搜索
% a   ---- 搜索区间左端点
% b   ---- 搜索区间右端点
% eps ---- 搜索精度

% CopyRight@XiaBo
% Date:

% 寻找初始分割点
x1=a+.382*(b-a);
x2=a+.618*(b-a);

% 搜索主体
while(abs(b-a)>eps) 
    % 计算分割点处的函数值
    f1=fun(x1);
    f2=fun(x2);
    
    % 比较判断两个分割点处的函数值,进而缩短区间长度
    if(f1>f2)
       a=x1;
       x1=x2;
       x2=a+.618*(b-a);
    elseif(f1==f2) 
       a=x1;
       b=x2;
       x1=a+.382*(b-a);
       x2=a+.618*(b-a);
    else
       b=x2;
       x2=x1;
       x1=a+.382*(b-a);
    end
end
% 返回搜索值
answ=(a+b)/2;

%% 定义搜索函数fun
function f = fun(x)   % 这里是一个简单的函数定义,倘若在一个大型的优化计算中,这个函数一般是和第k步的迭代点和下降方向有关的
% 是一个关于步长的函数
% x --- 步长值
f = x^2-x+2;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -