matlab中黄金分割法,优化算法之黄金分割算法 - Matlab
function [best_x, best_y] = golddiv(y, x, a, b, epsilon)
% 本函数实现黄金分割算法
% y是目标函数, x是自变量, a,b为区间范围, epsilon为精度
% best_x为黄金分割算法找到的最优点
% best_y为最优点处的函数值
if nargin == 4 %如果输入参数没有精度要求
epsilon=0.001; %设置默认的epsilon
end
x1 = a + 0.382 * (b - a); %根据黄金分割比例确定搜索点
f1 = subs(y, x, x1); %函数y在x1处的值
x2 = a + 0.618 * (b - a); %根据黄金分割比例确定搜索点
f2 = subs(y, x, x2); %函数y在x2处的值
while(abs(b - a) > epsilon)
if f1 < f2="">
b = x2; %b为新的右边界
x2 = x1; %更新x2值
f2 = f1;
x1 = a + 0.382 * (b - a); %更新x1值
f1 = subs(y, x, x1);
else
a = x1;
x1 = x2;
f1 = f2;
x2 = a + 0.618 * (b - a);
f2 = subs(y, x, x2);
end
end
best_x = (a + b) / 2; %最优的x值取a和b的平均值
best_y = subs(y, x, best_x); %最优的函数值
end
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)