function Xn = pokoorspust_crtanje2D(max_iter)
%Zadatak 7.42 
% Graficki prikazati metodu pokoordinatnog spusta za odredjivanje minimuma
% fje F(x,y)=x^2+y^2+xy polazeci od x0=1, y0=2 sa tacnoscu 1e-4,
%max_iter-maksimalan broj iteracija
%Xn-minimum funkcionala

%poziv:  Xn = pokoorspust_crtanje2D(100)
%       Xn = pokoorspust_crtanje2D(10)    


%Funkcional
F=@(x,y) x^2+y^2+x*y;
%Gradijent
dFx=@(x,y) 2*x+y;
dFy=@(x,y) 2*y+x;

%Hesijan
H=[2 1;1 2]

% Pocetna iteracija
x=1;
y=2;
Xs=[x;y];
tol=1e-4;


hold on
    ind=1; %ind=1 krecemo se po x osi, ind=0 krecemo se po y osi
    for k=1:max_iter  
        
        ind=mod(k-1,2)+1; %jer imamo 2 promenljive
        % d(k)=e(k)=[0 .. 0 1 0 .. 0] 
        d=zeros(1,2)';
        d(ind)=1;
        
        L=-[dFx(x,y) dFy(x,y)]*d/(d'*H*d);
        Xn=Xs+L*d; %nova iteracija
        
        plot([Xs(1),Xn(1)],[Xs(2),Xn(2)]); %crtamo pomeraj, dovoljno je zadati krajnje tacke
        
        if(norm(Xn-Xs)<tol)
            disp('Broj potrebnih iteracija: ');
            disp(k);
            return
        end
        
        Xs=Xn;
        x=Xn(1);
        y=Xn(2);
        
         
    end
    
hold off


   
% ukoliko za max iteracija nije postignuta odgovarajuca tacnost:
error('Za zadati broj iteracija nije postignuta odgovarajuca tacnost.');