A=[3 2;2 6]; b=[5 6]'; f=@(x,y) (3*x.^2+4*x.*y+6*y.^2)/2-5*x-6*y+12; [X Y]=meshgrid(-3:0.01:3,-3:0.01:3); mesh(X,Y,f(X,Y)); hold on set(gca,'FontSize',30); xlabel('x','FontSize',30); ylabel('y','FontSize',30); title('Minimum of quadratic function by CG') x0=ones(2,1); tol=1e-7; itmax=200; [x,k]=cg(A,b,tol) Exact_sol=A\b plot3(x(1),x(2),f(x(1),x(2)),'r*','MarkerSize',20); hold off view(-30,50); f(x(1),x(2)) function [x,k]= cg(A,b,tol) x = b; r = b - A*x; if norm(r) < tol return end d = r; z = A*d; s = d'*z; t = (r'*d)/s; x = x + t*d; for k = 1:numel(b) r = r - t*z; if( norm(r) < tol ) return; end B = -(r'*z)/s; d = r + B*d; z = A*d; s = d'*z; t = (r'*d)/s; x = x + t*d; end end