资源简介
初学者适用的黄金分割法MATLAB程序,此程序为自定义函数程序,需要下载者自己写主函数,特别需要注意的是本程序中含有显示迭代过程的画图程序建议先注释掉。
代码片段和文件信息
function [best_xbest_y] = golddiv(yxabepsilon)
% 本函数实现黄金分割算法
% y是目标函数 x是自变量 ab为区间范围 epsilon为精度
% best_x为黄金分割算法找到的最优点
% best_y为最优点处的函数值
if nargin == 4 %如果输入参数没有精度要求(输入只有4个参数)
epsilon = 0.001; %设置默认的epsilon
end
x1 = b-0.618*(b-a); %计算插入点1
y1 = subs(y x x1); %函数y中的x替换为x1
x2 = a+0.618*(b-a); %计算插入点1
y2 = subs(y x x2); %函数y中的x替换为x2
n = 1;
Str=[num2str(n)];
plot(x1y1‘bo‘);
plot(x2y2‘bo‘);
text(x1y1+0.5Str‘fontsize‘12‘color‘‘red‘);
text(x2y2+0.5Str‘fontsize‘12‘color‘‘red‘);
while(abs((b-a)/b)>=epsilon&&abs((y2-y1)/y2)>=epsilon)
if y1 n = n + 1;
b = x2; %b为新的右边界
x2 = x1; %更新x2值
y2 = y1;
x1 = b-0.618*(b-a);%更新x1值
- 上一篇:直流微网模型
- 下一篇:K means clustering algorithm
评论
共有 条评论