from math import *
from Numeric import *
from scipy import gplt

s = zeros(100, 'double')
y = zeros(100, 'double')
w = zeros(100, 'double')
z = zeros(100, 'double')
errorey = zeros(100, 'double')
errorew = zeros(100, 'double')
errorez = zeros(100, 'double')

s[2] = 1.+1./4.
for n in range(2, 99):
    s[n+1] = s[n] + 1./((n+1)**2)
    y[n+1] = sqrt(6.*s[n+1])
    errorey[n+1] = abs(y[n+1]-pi)/pi
gplt.plot(range(2, 100), errorey[2:])
gplt.logy('on')
gplt.hold('on')


w[2] = 2.
for n in range(2, 99):
    w[n+1] = 2**(n-1./2)*sqrt(1.-sqrt(1.-4.**(1-n)*w[n]**2))
    errorew[n+1]= abs(w[n+1]-pi)/pi
gplt.plot(range(3, 100), errorew[3:])
gplt.logy('on')


z[2] = 2.
for n in range(2, 99):
    z[n+1] = (sqrt(2)*z[n])/(sqrt(1.+sqrt(1.-4.**(1-n)*z[n]**2)))
    errorez[n+1]=abs(z[n+1]-pi)/pi
gplt.plot(range(3, 100), errorez[3:])
gplt.logy('on')


gplt.hold('off')


