最优化方法与实践-抛物线法(matlab)

作用:确定单变量函数近似极小点

算法:

代码:

%Author:风君子
%Date:2022.9.25
%Course:Optimization
%Parabolic method
function[s_ba,s1,phis_ba,phis1,k] = Parabolic(phi,x0,h0,epsilon)
%输出:s_ba、s1近似极小点的值;k,迭代次数
[s0,s2,s1] = Forward_backward(phi,x0,h0);
phis0 = feval(phi,s0);
phis1 = feval(phi,s1);
phis2 = feval(phi,s2);
k=0;
while(abs(s1 - s0) >= epsilon)&(abs(s2 - s1) >= epsilon)
    part1 = (s1^2-s2^2)*phis0+(s2^2-s0^2)*phis1+(s0^2-s1^2)*phis2;
    part2 = (s1-s2)*phis0+(s2-s0)*phis1+(s0-s1)*phis2;
    s_ba = 0.5 * part1 / part2;
    phis_ba = feval(phi,s_ba);
    if (phis1 <= phis_ba)
        if (s1 < s_ba)
            s2 = s_ba;
            phis2 = phis_ba;
        else
            s0 = s_ba;
            phis0 = phis_ba;
        end
    else
        if (s1 > s_ba)
            s2 = s1;
            s1 = s_ba;
            phis2 = phis1;
            phis1 = phis_ba;
        else
            s0 = s1;
            s1 = s_ba;
            phis0 = phis1;
            phis1 = phis_ba;
        end
    end
    k=k+1;
end

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值