作用:是一种确定单变量函数的的搜索区间的数值方法
算法:
![](https://i-blog.csdnimg.cn/blog_migrate/6c0b7871b21e7fda469f91f238e347ad.png)
代码:
%Author:风君子
%Date:2022.9.25
%Course:Optimization
%Forward-backward method
function[a,b,c] = Forward_backward(phi,alpha0,h0)
%输出:[a,b]为输出搜索区间;c为中间点
%输入:phi,函数;alpha0,起始点;h0起始位移
alpha = alpha0;
alphak = alpha0;
hk = h0;
alphak1 = alphak + hk;
phik = feval(phi,alphak);
phik1 = feval(phi,alphak1);
k=0;
while((phik1<phik)|(k==0))
if(phik1<phik)
hk = 2*hk;
alpha = alphak;
alphak = alphak1;
phik = phik1;
k = k + 1;
alphak1 = alphak + hk;
phik1 = feval(phi, alphak1);
else if(k==0)
hk = - hk;
alpha = alphak1;
alphak = alphak;
phik = phik;
k=1;
alphak1 = alphak + hk;
phik1 = feval(phi, alphak1);
end
end
end
a = min(alpha,alphak1);
b = max(alpha,alphak1);
c = alphak;