APPLIED MATHEMATICS AND COMPUTATION, vol.248, pp.494-502, 2014 (SCI-Expanded)
To solve a nonlinear equation f (x) = 0 numerically means a repetitive operation x = g(x) hoping each time that f (g(x)) = 0. Let z be a root (zero) of f and a fixed point of g so that f (z) = 0 and z = g(z). Consider two points in the xf-plane: K (x, f) and G (g, 0). The slope of line KG is m = f/(x - g). So, iterators in the form g(x) = x + h; h = f (x)/m(x) attempt solution by linearization of f whereby G approximates Z(z, 0) and KG is a substitute for f. A common example is Newton's method where m is f' and KG is a tangent. After a theoretical background, this article provides a short and ready-to-use Matlab function lin2f0 which receives x, f, a number of its derivatives, a small h and a tiny tol as arguments, enters Kocak's double linearization loop to repeat m = -f/h, g = x + h - f(x + h)/m(x + h), and h = g - x while vertical bar f(x + h) > tol, and returns converged g. If f(g) is unsatisfactory, lin2f0 may be re-entered after updating x, f and derivatives. One call with sufficient number of (small) derivatives guarantees that this g is the first z in the direction of h. Tests including a case of a multiple root show that this robust solver works superbly where others fail. Note that lin2f0 linearizes f twice for each h; once at x and once at x + h. (C) 2014 Elsevier Inc. All rights reserved.