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