Golden Search method file consolidation

21 views (last 30 days)
Aaron
Aaron on 2 Oct 2013
Answered: Muhammad Saqib on 28 Feb 2024
I had created two files (function and main) for a golden search problem. I would like to make just one file, type it in the command window without typing in any arguments(they would already be in the file) and have it run. Is this possible?
My code for the function file is:
function y=goldsec(x)
y = (4*x) - (1.8*x^2) + (1.2*x^3) - (0.3*x^4);
Main file:
function [x,fx,ea,iter]=goldmin(f,xl,xu,es,maxit,varargin)
% goldmin: minimization golden section search
% [x,fx,ea,iter]=goldmin(f,xl,xu,es,maxit,p1,p2,...):
% uses golden section search to find the minimum of f
% input:
% f = name of function
% xl, xu = lower and upper guesses
% es = desired relative error (default = 0.0001%)
% maxit = maximum allowable iterations (default = 50)
% p1,p2,... = additional parameters used by f
% output:
% x = location of minimum
% fx = minimum function value
% ea = approximate relative error (%)
% iter = number of iterations
if nargin<3,error('at least 3 input arguments required'),end
if nargin<4|isempty(es), es=0.0001;end
if nargin<5|isempty(maxit), maxit=50;end
phi=(1+sqrt(5))/2;
iter=0;
while(1)
d = (phi-1)*(xu - xl);
x1 = xl + d;
x2 = xu - d;
if f(x1,varargin{:}) < f(x2,varargin{:})
xopt = x1;
xl = x2;
else
xopt = x2;
xu = x1;
end
iter=iter+1;
if xopt~=0, ea = (2 - phi) * abs((xu - xl) / xopt) * 100;end
if ea <= es | iter >= maxit,break,end
end
x=xopt;fx=f(xopt,varargin{:});
And, is this code even right?

Answers (1)

Muhammad  Saqib
Muhammad Saqib on 28 Feb 2024
i dont know, i am still learning

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!