0.618.m
来自「最优化方法的一些基本算法的实现:1」· M 代码 · 共 19 行
M
19 行
a=-1;b=1;epsilon=0.16;
s=a+0.382*(b-a);
t=a+0.618*(b-a);
for times=0:1000
if b-a<epsilon
answer=(b+a)/2;
break;
else
if f(s)>f(t)
a=s;s=t;
t=a+0.618*(b-a);
else
b=t;t=s;
s=a+0.382*(b-a);
end
end
end
fprintf('经过%d次迭代,满足精度要求,问题的最优解为%f',times,answer);
clear a b epsilon s t times answer
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?