# good style function fixedpointmap(f; iv, tolerance=1E-7, maxiter=1000) # setup the algorithm x_old = iv normdiff = Inf iter = 1 while normdiff > tolerance && iter <= maxiter x_new = f(x_old) # use the passed in map normdiff = norm(x_new - x_old) x_old = x_new iter = iter + 1 end return (value = x_old, normdiff=normdiff, iter=iter) # A named tuple end # define a map and parameters p = 1.0 β = 0.9 f(v) = p + β * v # note that p and β are used in the function! sol = fixedpointmap(f, iv=0.8, tolerance=1.0E-8) # don't need to pass println("Fixed point = $(sol.value), and |f(x) - x| = $(sol.normdiff) in $(sol.iter)"* " iterations")