一、基本思想
- 一维搜索:目标函数为一元单值函数 的优化问题的迭代求解方法
- 试探法:取试探点和函数值做比较,使得包含极小点的搜索区间不断缩短,适合单峰函数。
- 黄金分割法的要点:
- 和 在 中的位置对称:
- 每次迭代区间长度缩短比例相同:
二、黄金分割法的MATLAB实现
- 主函数:
function [result] = gold_division(A,B,E)
a = A;
b = B;
lambda = a+0.382*(b-a);
mu=a+0.618*(b-a);
k=1;
display=[k,a,b,lambda,mu,diox(lambda),diox(mu)];
disp(display);
while ((b-a)>= E)
FL = diox(lambda);
FM = diox(mu);
if FL>FM
a=lambda;
if(b-a<E)
disp(a);
disp(b);
break;
end
lambda=mu;
mu=a+0.618*(b-a);
k = k+1;
display=[k,a,b,lambda,mu,diox(lambda),diox(mu)];
disp(display);
else
b=mu;
if(b-a<E)
disp(a);
disp(b);
break;
end
mu=lambda;
lambda=a+0.382*(b-a);
k = k+1;
display=[k,a,b,lambda,mu,diox(lambda),diox(mu)];
disp(display);
end
end
result = (a+b)/2;
end
- 目标函数:
function [FX] = diox(X) FX=X^2+4*cos(X); end