Fixed point iteration
Join the DZone community and get the full member experience.Join For Free
and the fixed point iteration
converges to the a fixed point if f is continuous.
The following function implements the fixed point iteration algorithm:
from pylab import plot,show from numpy import array,linspace,sqrt,sin from numpy.linalg import norm def fixedp(f,x0,tol=10e-5,maxiter=100): """ Fixed point algorithm """ e = 1 itr = 0 xp =  while(e > tol and itr < maxiter): x = f(x0) # fixed point equation e = norm(x0-x) # error at the current step x0 = x xp.append(x0) # save the solution of the current step itr = itr + 1 return x,xpLet's find the fixed point of the square root funtion starting from x = 0.5 and plot the result
f = lambda x : sqrt(x) x_start = .5 xf,xp = fixedp(f,x_start) x = linspace(0,2,100) y = f(x) plot(x,y,xp,f(xp),'bo', x_start,f(x_start),'ro',xf,f(xf),'go',x,x,'k') show()
The result of the program would appear as follows:
The red dot is the starting point, the blue ones are the sequence x_1,x_2,x_3,... and the green is the fixed point found.
In a similar way, we can compute the fixed point of function of multiple variables:
# 2 variables function def g(x): x = 1/4*(x*x + x*x) x = sin(x+1) return array(x) x,xf = fixedp(g,[0, 1]) print ' x =',x print 'f(x) =',g(xf[len(xf)-1])In this case g is a function of two variables and x is a vector, so the fixed point is a vector and the output is as follows:
x = [ 0. 0.84147098] f(x) = [ 0. 0.84147098]
Opinions expressed by DZone contributors are their own.