1234567891011121314151617181920212223 |
- # 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")
|