% MATLAB code to use CGM to solve 2x2 system % [a b][x1] = [b1] % [c d][x2] = [b2] x=[1, 1]; xd=linspace(0,100,20); yd=linspace(-100,0,20); [X,Y]=meshgrid(xd,yd); a=5; b=4.99; c=b; d=5; b1=1; b2=-1; Z = 0.5*(a*X.^2 + 2*b*X.*Y + d*Y.*Y) - b1*X - b2*Y; tol=0.001; xpoints=x(1); ypoints=x(2); r=[b1-a*x(1)-b*x(2),b2-c*x(1)-d*x(2)]; dd=r; diff=[1,1]; counter=1; while norm(diff)>tol counter=counter+1; if counter<3 beta=0; else beta=dot(r,r)/dot(r0,r0); end; dd=r+beta*dd; q=[a*dd(1)+b*dd(2),c*dd(1)+d*dd(2)]; alpha=dot(r,r)/dot(dd,q); diff=alpha*dd; x=x+diff; r0=r; r=r-alpha*q; fprintf('\n %i Computed Solution = %e %e \n\n',counter,x); xpoints=[xpoints, x(1)]; ypoints=[ypoints, x(2)]; % pcolor(X,Y,Z) shading interp hold on contour(X,Y,Z,20,'b') plot(xpoints,ypoints,'ko-') hold off pause end;