function [f,alfa]=goldm(x,d,delta,epslon) % busca unidimensional razão aurea % Prof. Reyolando Brasil 20/04/2023 gr=(sqrt(5)+1)/2; deltai=delta;% delta inicial % % delta inicial % aL=0; xn=x+aL*d; fL=obj(xn); f=fL; while(1) aa=deltai; xn=x+aa*d; fa=obj(xn); if fa > fL deltai=deltai*0.1; else break end end % % intervalo de incerteza inicial % j=0; while(1) j=j+1; aU=aa+deltai*(gr^j); xn=x+aU*d; fU=obj(xn); if fa > fU aL=aa; aa=aU; fL=fa; fa=fU; else break end end % % refinamento do intervalo de incerteza % ab=aL+(aU-aL)/gr; xn=x+ab*d; fb=obj(xn); while (1) if (aU-aL) <= epslon break else if fafb aL=aa; fL=fa; aa=ab; fa=fb; ab=aL+(aU-aL)/gr; xn=x+ab*d; fb=obj(xn); end if fa==fb aL=aa; fL=fa; aU=ab; fU=fb; aa=aL+(1-1/gr)*(aU-aL); xn=x+aa*d; fa=obj(xn); ab=aL+(aU-aL)/gr; xn=x+ab*d; fb=obj(xn); end end end % alfa=(aU+aL)/2;