📄 goldcut.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 + -