作用:确定单变量函数近似极小点
算法:
代码:
%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