⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goldcut.m

📁 黄金分割法 可以解决 单峰函数 的极值问题 比较的准确和快速
💻 M
字号:
function [x,fval]=GoldCut(f,xx)
%*********************************************************************
% 黄金分割法求单谷函数的极小值
% 调用:[x,fval]=GoldCut(f,[a b])
% 参数说明:
% 	  x:的到极值的点
% 	  fval:极小值
% 	  f:要求极小值的函数
% 	  xx:取值区间
% 范例:《运筹学》教材编写组清华大学出版社(第三版) 149页 例5
% >> f='t^2-t+2 ';
% >> [x,fval]=GoldCut(f,[-1 3])
% x =
%     0.5000
% fval =
%     1.7500   徐射雕
%**********************************************************************
a=xx(1);b=xx(2);t1=0.382*(b-a)+a;t2=0.618*(b-a)+a;e0=1e-9;
%e0为精度   a b为区间  
f1=subs(f,t1);f2=subs(f,t2);%求t1和t2点的函数值
while(b-a>e0)
    if f1<f2%若f1<f2极小值必在a t2之间
        b=t2;t2=t1;f2=f1;t1=0.382*(b-a)+a;f1=subs(f,t1);
    else%f1>=f2极小值必在t1 b之间
        a=t1;t1=t2;f1=f2;t2=0.618*(b-a)+a;f2=subs(f,t2);
    end
end
x=(a+b)/2;
fval=min(f1,f2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -