⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 golden_sect.m

📁 ONE-DIMENSIONAL_OPTIMIZATION,主要用于最优化方法的设计以及最优化问题的求解
💻 M
字号:
%  Program: golden_sect.m%  Title: Golden-Section Search%  Description: Implements the golden-section search.%  Theory: See Practical Optimization Sec. 4.4%  Input:%       fname: objective function%   [xL1,xU1]: initial interval of uncertainty %         rou: final range of uncertainty%  Output:%    xs: minimum point%    fs: minimum value of objective function%     k: number of iterations at convergence%  Example: %  Find the minimum of %     fs=sin(xs)%  over the range 0.5*pi<= xs <= 2*pi.%  Solution: %  Execute the command%    [xs,fs,k] = golden_sect('sin',0.5*pi,2*pi,1e-6);%  Notes:%  1. The program can be applied to any customized function by%     defining the function of interest in an m-file (see file %     inex_lsearch.m for typical examples). %=============================================================function [xs,fs,k] = golden_sect(fname,xL1,xU1,rou)disp(' ')disp('Program golden.sect.m')% Generate xa1, xb1, f(xa1), and f(xb1)K = 0.5*(1+sqrt(5));k = 1;I1 = xU1 - xL1;I2 = I1/K;xak = xU1 - I2;xbk = xL1 + I2;fak = feval(fname,xak);fbk = feval(fname,xbk);Ik1 = I2;xLk = xL1;xUk = xU1;% Perform Golden-Section searchwhile Ik1 >= rou & xak <= xbk,   Ik2 = Ik1/K;   if fak >= fbk,      xLk1 = xak;      xUk1 = xUk;      xak1 = xbk;      xbk1 = xLk1 + Ik2;      fak1 = fbk;      fbk1 = feval(fname,xbk1);      xw = 0.5*(xak1 + xUk1);   else      xLk1 = xLk;      xUk1 = xbk;      xak1 = xUk1 - Ik2;      xbk1 = xak;      fbk1 = fak;      fak1 = feval(fname,xak1);      xw = 0.5*(xLk1 + xbk1);   end   xLk = xLk1;   xUk = xUk1;   xak = xak1;   xbk = xbk1;   fak = fak1;   fbk = fbk1;   Ik1 = Ik2;   k = k + 1;end% Display resultsformat longdisp('Minimum point:')xs = xwdisp('Minimum value of objective function:')fs = feval(fname,xw)format shortdisp('Number of iterations performed:')k

⌨️ 快捷键说明

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