% Example: % % x0 =[1;1]; tol=1e-5; maxiter =10; % [x,F,iter] = newton_sm(@newton_ff, @newton_df, x0, tol, maxiter); % function [x,R,iter] = newton_sm(newton_ff, newton_df, x0, ... tol, nmax, varargin) iter = 0; err = tol + 1; x = x0; while err > tol & iter <= nmax FF = feval(newton_ff, x, varargin {:}); DF = feval(newton_df, x, varargin {:}); delta = - DF\FF; x = x + delta; err = norm(delta); iter = iter + 1; end R = norm(feval(newton_ff, x, varargin {:})); if iter >= nmax fprintf('Too many iterations. Residual: %e.\n', R); else fprintf('Success with %i step(s). Residual: %e.\n', iter, R); end return