📄 黄金分割法求优化问题.txt
字号:
function [alfa,fval]=GoldenSM(a,b,s,x0)
alfa1=a+0.382*(b-a);
x1=x0+alfa1*s;
y1=myfun(x1);
alfa2=a+0.618*(b-a);
x2=x0+alfa2*s;
y2=myfun(x2);
while (b-a)>0.000001
if y1<y2
b=alfa2;
alfa2=alfa1;
y2=y1;
alfa1=a+0.382*(b-a);
x1=x0+alfa1*s;
y1=myfun(x1);
else
a=alfa1;
alfa1=alfa2;
y1=y2;
alfa2=a+0.618*(b-a);
x2=x0+alfa2*s;
y2=myfun(x2);
end
end
alfa=0.5*(a+b);
x=x0+alfa*s;
fval=myfun(x);
% 以下两行输出辅助信息,你可以在你很熟练而不需要它的时候删掉它们
str=sprintf('the minmum result is:\n alfa*=%f\nf(x*)=%f',alfa,fval);
disp(str);
function y=distance(x1,x2)
[m,n]=size(x1);
sum=0;
for i=1:m
sum=sum+(x1(i)-x2(i))^2;
end
y=sqrt(sum);
%输入你要处理的目标函数,每次新的优化计算的时候要修改
%注意a是自变量,xe代表初始点,e代表搜索方向
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -