function [intervalle,iter]=section_doree(fonction,intervalle,epsilon,iter) // init=iter; binf=min(intervalle); bsup=max(intervalle); tau=(1+sqrt(5))/2; tau=1/tau; if norm(binf-bsup)==%inf then error('une des bornes de l''intervalle est infinie'), end; b1 = bsup-tau*(bsup-binf); b2 = binf+tau*(bsup-binf); f_binf = fonction(binf); f_bsup = fonction(bsup); f_b1 = fonction(b1); f_b2 = fonction(b2); u=file('open','results_doree','unknown'); // Methode de la section doree while ((abs(binf-bsup)>= epsilon) & (iter >= 1)) tab=[f_b1,f_b2]; [a,b]=gsort(tab,'c','i'); if b(1)==1 then bsup=b2; b2=b1; f_b2=f_b1; b1=binf+bsup-b2; f_b1=fonction(b1); else binf=b1; b1=b2; f_b1=f_b2; b2=binf+bsup-b1; f_b2=fonction(b2); end fprintf(u,'iter = %2.0f binf = %10.8f bsup = %10.8f precision %10.8f',... init-iter+1,binf,bsup,abs(bsup-binf)); iter=iter-1; end file('close',u) intervalle=[binf,bsup]; endfunction