f618.m

来自「可以用黄金分割和斐波那契算法实现优化」· M 代码 · 共 35 行

M
35
字号
function [x,minf]=f618(precision,t0,h)
%用黄金分割法进行优化
%初始区间为a,b,相对精度precision 即为原始区间的几分之几,t0为初始值,h为步长

%初始化变量,其中初始步长系数为2,初始区间由进退法求的,每次区间缩短后的两端用  An,Bn表示,n为迭代次数
c=2; 
[a,b]=areafind(t0,h,c);
An=a;
Bn=b;
n=1;

tic     %主体程序运行时间
while 0.618^(n-1)>=precision | n>100000    %当精度满足或则迭代次数大于100000时停止算法
    A=0.382.*(Bn-An)+An;
    B=0.618.*(Bn-An)+An;
        
         if g(A)<g(B)
             Bn=B;
         else
             An=A;
         end
         
    n=n+1;
end
toc

x=(An+Bn)/2;
minf=g(x);

  %画出函数图像进行对比
  fplot('x^4-2*x+4',[0,2,2.5,4]);
  hold on
  scatter(x,g(x),8,'r');

⌨️ 快捷键说明

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