global numf numg numH mNparams = struct('maxit',10000,'toler',1.0e-5, 'eta', 1.0e-4, ... 'DeltaMax', 100, 'Delta0',1.0) ; x = struct('p',[-1.2; 1]); numf=0; numg=0; numH=0; fprintf(' \n** Rosenbrock with first starting point\n'); [inform,xnew] = modNewtonDogleg(@objc,x,mNparams); if inform.status == 0 fprintf('CONVERGENCE FAILURE: %d steps were taken without\n', inform.iter); fprintf('gradient size decreasing below %8.4g.\n', mNparams.toler); else fprintf('Success: %d steps taken\n', inform.iter); end fprintf(' Ending point: '); fprintf('%8.4g ',xnew.p); fprintf('\n Ending value: '); fprintf('%8.4g ',xnew.f); fprintf('; No. function evaluations: %d',numf); % fprintf('\n Ending gradient: '); fprintf('%8.4g ',xnew.g); fprintf('; No. gradient evaluations %d',numg); fprintf('\n Norm of ending gradient: %8.4g', norm(xnew.g)); fprintf('\n No. Hessian evaluations %d',numH); fprintf('\n Final Hessian condition number %8.2e\n\n', cond(xnew.h)); x = struct('p',[-10.; 1.]); numf=0; numg=0; numH=0; fprintf(' \n** Rosenbrock with second starting point\n'); [inform,xnew] = modNewtonDogleg(@objc,x,mNparams); if inform.status == 0 fprintf('CONVERGENCE FAILURE: %d steps were taken without\n', inform.iter); fprintf('gradient size decreasing below %8.4g.\n', mNparams.toler); else fprintf('Success: %d steps taken\n', inform.iter); end fprintf(' Ending point: '); fprintf('%8.4g ',xnew.p); fprintf('\n Ending value: '); fprintf('%8.4g ',xnew.f); fprintf('; No. function evaluations: %d',numf); % fprintf('\n Ending gradient: '); fprintf('%8.4g ',xnew.g); fprintf('; No. gradient evaluations %d',numg); fprintf('\n Norm of ending gradient: %8.4g', norm(xnew.g)); fprintf('\n No. Hessian evaluations %d',numH); fprintf('\n Final Hessian condition number %8.2e\n\n', cond(xnew.h)); x = struct('p',[0;1]); numf=0; numg=0; numH=0; fprintf(' \n** Powell badly scaled\n'); [inform,xnew] = modNewtonDogleg(@objd,x,mNparams); if inform.status == 0 fprintf('CONVERGENCE FAILURE: %d steps were taken without\n', inform.iter); fprintf('gradient size decreasing below %8.4g.\n', mNparams.toler); else fprintf('Success: %d steps taken\n', inform.iter); end fprintf(' Ending point: '); fprintf('%8.4g ',xnew.p); fprintf('\n Ending value: '); fprintf('%8.4g ',xnew.f); fprintf('; No. function evaluations: %d',numf); % fprintf('\n Ending gradient: '); fprintf('%8.4g ',xnew.g); fprintf('; No. gradient evaluations %d',numg); fprintf('\n Norm of ending gradient: %8.4g', norm(xnew.g)); fprintf('\n No. Hessian evaluations %d',numH); fprintf('\n Final Hessian condition number %8.2e\n\n', cond(xnew.h));