0.618.m

来自「最优化方法的一些基本算法的实现:1」· M 代码 · 共 19 行

M
19
字号
a=-1;b=1;epsilon=0.16;
s=a+0.382*(b-a);
t=a+0.618*(b-a);
for times=0:1000
    if b-a<epsilon
        answer=(b+a)/2;
        break;
    else
        if f(s)>f(t)
            a=s;s=t;
            t=a+0.618*(b-a);
        else
            b=t;t=s;
            s=a+0.382*(b-a);
        end
    end
end
fprintf('经过%d次迭代,满足精度要求,问题的最优解为%f',times,answer);
clear a b epsilon s t times answer

⌨️ 快捷键说明

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