Golden Search method file consolidation

24 ビュー (過去 30 日間)
Aaron
Aaron 2013 年 10 月 2 日
回答済み: Muhammad Saqib 2024 年 2 月 28 日
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?

回答 (1 件)

Muhammad  Saqib
Muhammad Saqib 2024 年 2 月 28 日
i dont know, i am still learning

カテゴリ

Help Center および File ExchangeDirect Search についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by