*x*is a fixed point for a given function

*f*if

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[0] = 1/4*(x[0]*x[0] + x[1]*x[1]) x[1] = sin(x[0]+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]

*Source: http://glowingpython.blogspot.com/2012/01/fixed-point-iteration.html*