goldfind.txt

来自「用于单变量函数寻优的黄金分割法matlab程序,我试过了好用.」· 文本 代码 · 共 58 行

TXT
58
字号
一、	实验题目
分别用0.618法和Fibonacci法求解下列问题:
 
要求最终区间长度L=0.0005,取初始区间为[0,1]。

function [minx,miny,k]=GoldFind(a,b,ep)
%函数名:GoldFind--0.618法,搜索目标函数之极值
%参  数:confun--目标函数名   [a,b]--搜索区间(a<b) ep--精度要求
%返回值:minx--极值点  miny--极值点函数值  k--迭代次数  
if a>=b
    error('ERROR IN INPUTING!--a<b');
    break
end
t1=a+0.382*(b-a);
t2=a+0.618*(b-a);
f1=confun(t1);
f2=confun(t2);
k=1;
while 1
if f1<=f2
      if t2-a<ep
     minx=t1;
      break
      else
      b=t2;
      t2=t1;
      t1=b-0.618*(b-a);
      f2=f1;
      f1=confun(t1);
  end
elseif b-t1<ep
     minx=t2;
      break
   
   else
      a=t1;
      t1=t2;
      t2=a+0.618*(b-a);
      f1=f2;
      f2=confun(t2);
   end
   k=k+1;
  end
  miny=confun(minx);
求解:
a=0;
b=1;
ep=0.0005;
[minx,miny,k]=GoldFind(a,b,ep)
〉〉Gold
minx =
    0.3517
miny =
    0.8272
k =
    16

⌨️ 快捷键说明

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