function [x_opt,f_opt,k,t,q] = conjugate_gradient(fob,g_fob,x0,tol_grad);
tic
n= size(x0);
c0 = feval(g_fob,x0);
k = 0;
t=0;
q=0;
if norm(c0) < tol_grad
x_opt = x0;
f_opt = feval(fob,x_opt);
else
d= -c0;
alfa0 = equal_interval_line_search(x0,d,fob,0.5,1e-6);
x1= x0+ alfa0*d;
c1 = feval(g_fob,x1);
while norm(c1) > tol_grad
if k < n(2)
beta = (norm(c1)/norm(c0))^2;
d= -c1+beta*d;
alfa1 = equal_interval_line_search(x1,d,fob,0.5,1e-6);
x2= x1+alfa1*d;
c0=c1;
c1= feval(g_fob,x2);
x1=x2;
else
x0=x1;
c0=c1;
d=-c1;
alfa0 = equal_interval_line_search(x0,d,fob,0.5,1e-6);
x1= x0+ alfa0*d;
c1 = feval(g_fob,x1);
while norm(c1) > tol_grad
beta = (norm(c1)/norm(c0))^2;
d= -c1+beta*d;
alfa1 = equal_interval_line_search(x1,d,fob,0.5,1e-6);
x2= x1+alfa1*d;
c0=c1;
c1= feval(g_fob,x2);
x1=x2;
q=q+1;
end
end
k=k+1;
end
t=q+k;
x_opt = x1;
f_opt = feval(fob,x_opt);
end
toc