global numf numg x = struct('p',[-1.2; 1]); sdparams = struct('maxit',10000,'toler',1.0e-4); numf=0; numg=0; [inform,xnew] = SteepDescent(@obja,x,sdparams); if inform.status == 0 fprintf('CONVERGENCE FAILURE: %d steps were taken without\n', inform.iter); fprintf('gradient size decreasing below %10.6g.\n', sdparams.toler); else fprintf('Success: %d steps taken\n', inform.iter); end fprintf(' Ending point: '); fprintf('%10.6g ',xnew.p); fprintf('\n Ending function value: %10.6g\n', xnew.f); fprintf(' No. function evaluations: %d, No. gradient evaluations %d\n',... numf, numg); fprintf(' Norm of ending gradient: %10.6g\n\n\n', norm(xnew.g)); numf=0; numg=0; [inform,xnew] = SteepDescent(@objb,x,sdparams); if inform.status == 0 fprintf('CONVERGENCE FAILURE: %d steps were taken without\n', inform.iter); fprintf('gradient size decreasing below %10.6g.\n', sdparams.toler); else fprintf('Success: %d steps taken\n', inform.iter); end fprintf(' Ending point: '); fprintf('%10.6g ',xnew.p); fprintf('\n Ending function value: %10.6g\n', xnew.f); fprintf(' No. function evaluations: %d, No. gradient evaluations %d\n',... numf, numg); fprintf(' Norm of ending gradient: %10.6g\n\n\n', norm(xnew.g)); numf=0; numg=0; [inform,xnew] = SteepDescent(@objc,x,sdparams); if inform.status == 0 fprintf('CONVERGENCE FAILURE: %d steps were taken without\n', inform.iter); fprintf('gradient size decreasing below %10.6g.\n', sdparams.toler); else fprintf('Success: %d steps taken\n', inform.iter); end fprintf(' Ending point: '); fprintf('%10.6g ',xnew.p); fprintf('\n Ending function value: %10.6g\n', xnew.f); fprintf(' No. function evaluations: %d, No. gradient evaluations %d\n',... numf, numg); fprintf(' Norm of ending gradient: %10.6g\n\n\n', norm(xnew.g));