• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-01-06
  • 语言: Matlab
  • 标签:

资源简介

初学者适用的黄金分割法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值
   

评论

共有 条评论

相关资源