用黄金分割算法求单变量函数f(x)在单峰区间[a,b]上的近似极小点
函数实现:
function [i,s,phis,ds,dphi,G] = golds(phi, a,b,epsilon, delta)
% 函数功能:黄金分割法精确线搜索
% 函数思想:通过试探点函数值的比较,使包含极小点的搜索区间不断缩小。
% 输入参数:phi:目标函数;a、b:搜索区间的两个端点;
% epsilon:自变量的容许误差; delta:函数值的容许误差
% 输出结果:i:迭代次数;s:近似极小点;phis:极小值;
% ds:近似极小点的误差限;dphi:极小值的误差限;
% G:ix4矩阵,第i行分别是a、p、q、b的第i次迭代值[ai,pi,qi,bi].
t = (sqrt(5)-1)/2; % 0.618,区间长度的缩短率
h = b - a;
phia = feval(phi,a); phib = feval(phi, b);
p = a + (1 - t) * h; q = a + t * h;
phip = feval(phi, p); phiq = feval(phi, q);
i = 1; G(i, :) = [a, p, q, b];
while(abs(phib - phia) > delta) || (h > epsilon)
if(phip <= phiq)
b = q;phib = phiq; q = p; phiq = phip;
h = b - a; p = a + (1 - t) * h; phip = feval(phi, p);
else
a = p; phia = phip; p = q; phip = phiq;
h = b - a; q = a + t * h; phiq = feval(phi, q);
end
i = i + 1; G(i, :) = [a, p, q, b];
end
if(phip <= phiq)
s = p;
MATLAB实现黄金分割算法求解单变量函数最小值

本文介绍了如何使用MATLAB的黄金分割算法来寻找单变量函数在单峰区间[a, b]的近似最小值。通过自定义函数与MATLAB内置工具箱的比较,展示了算法的准确性和一致性。"
84173488,7109636,SQL Server 解决阻塞与死锁问题,"['数据库管理', 'SQL', '故障排查', '数据库优化', '服务器监控']
最低0.47元/天 解锁文章
7551

被折叠的 条评论
为什么被折叠?



