📄 fibonacci.m
字号:
% Program: fibonacci.m% Title: Fibonacci Search% Description: Implements the Fibonacci search.% [xL1,xU1]: initial interval of uncertainty % Output:% xs: minimum point % fs: minimum value of objective function% k: number of iterations at convergence%========================================================================clear;clcxL1=-2;xU1=2;delta=0.0001;feval=@(x) x^2+x+2;disp(' ')disp('Program fibonacci.m')% Generate a Fibonacci sequencef(1) = 1;f(2) = 1;while (xU1-xL1)/f(end)>=delta f =[f,(sum(f(end-1)+f(end)))];endn=numel(f);F = f(1:n);% Generate xa1, xb1, f(xa1), and f(xb1)k = 1;I1 = xU1-xL1;I2 = (F(n-1)/F(n))*I1;xak = xU1 - I2xbk = xL1 + I2fak = feval(xak);fbk = feval(xbk);Ik1 = I2;xLk = xL1;xUk = xU1;% Perform Fibonacci searchwhile k < n-2 & xak <= xbk, Ik2 = (F(n-k-1)/F(n-k))*Ik1; if fak >= fbk, xLk1 = xak; xUk1 = xUk; xak1 = xbk; xbk1 = xLk1 + Ik2; fak1 = fbk; fbk1 = feval(xbk1); xw = 0.5*(xak1 + xUk1); else xLk1 = xLk; xUk1 = xbk; xak1 = xUk1 - Ik2; xbk1 = xak; fbk1 = fak; fak1 = feval(xak1); xw = 0.5*(xLk1 + xbk1); end xLk = xLk1; xUk = xUk1; xak = xak1 xbk = xbk1 fak = fak1; fbk = fbk1; Ik1 = Ik2; k = k + 1;endxs = 0.5*(xLk + xUk);fs = feval(xs);% Display resultsformat longdisp('Minimum point:')xsdisp('Minimum value of objective function:')fsformat shortdisp('Number of iterations performed:')k
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -