function [x_opt,nr_it]=opt_rlx(fct_scop,x0,pas_init,r,tol)
%optimizare parametrica prin METODA RELAX?RII
%fct_scop - sirul de caractere ce desemneaza functia de optimizat %x0 - punctul de start (vector de dimensiunea variabilei functiei de optim izat, n) %pas_init - pasul initial de cautare %r - ratia subunitara de modificare a pasului dupa fiecare ciclu de relax are a tuturor % celor n coordonate %tol - valoarea de prag a pasului, cnd cautarea se opreste %initializari i=1;x(i,:)=x0;p=pas_init; n=length(x0); while (p>tol), p0=p*r;p=p0; k=1;d=zeros(1,n); stop_global=0;inapoi=0; while (~stop_global), d(k)=1;j=0; stop=0; while (~stop) if inapoi, p=p/2; inapoi=0; end; x(i+1,:)=x(i,:)+p*d; j=j+1; if feval(fct_scop,x(i+1,:))>feval(fct_scop,x(i,:)), if j==1, p=-2*p; i=i+1; x(i+1,:)=x(i,:)+p*d; inapoi=1; else stop=1; x(i+1,:)=[]; i=i-1; d(k)=0; k=k+1; p=p0; end; end; i=i+1; end; if k<=n, stop_global=0; else stop_global=1; end; end; end; [nr_it n]=size(x); x_opt=x(nr_it,:);